Lagalot
Newbie Lvl 6
Objetivo del codigo: Probabilidad de un npc de dropear X objeto.
Aclaraciones: Los objetos con mayor probabilidad van arriba y la suma de todos los porcentajes NO PUEDE SER MAYOR A 100 y solo se puede tirar 1 objeto.
Version: 0.11.5
Procedimientos en el Servidor
Ejemplo: Los objetos que tira un npc quedarian masomenos asi:
En el modulo declaraciones, abajo de:
ponemos:
y arriba del type:
creamos este otro:
Con esto declaramos todo lo que vamos a utilizar.
Luego, en el sub:
Abajo de:
ponen:
Con esto estamos cargando los drops del npcs-hostiles.dat.
Finalmente, reemplazamos TODO el sub:
por este:
Aca tira randoms y arroja el objeto.
Espero que les haya servido, suerte.
Aclaraciones: Los objetos con mayor probabilidad van arriba y la suma de todos los porcentajes NO PUEDE SER MAYOR A 100 y solo se puede tirar 1 objeto.
Version: 0.11.5
Procedimientos en el Servidor
Ejemplo: Los objetos que tira un npc quedarian masomenos asi:
Código:
NumDrops=3 'Numero de objetos
Prob1=5 'Probabilidad
Drop1=512 'ObjIndex
Prob2=10 'Probabilidad
Drop2=491 'ObjIndex
Prob3=1 'Probabilidad
Drop3=784 'ObjIndex
En el modulo declaraciones, abajo de:
Código:
GiveGLD As Long
Código:
Drops As NpcDrop
Código:
Type tHechizo
Código:
Public Type NpcDrop
NumDrop As Integer
DropIndex(1 To 10) As Integer
Porcentaje(1 To 10) As Integer
End Type
Con esto declaramos todo lo que vamos a utilizar.
Luego, en el sub:
Código:
OpenNPC
Código:
Npclist(NpcIndex).GiveEXP = val(Leer.GetValue("NPC" & NpcNumber, "GiveEXP"))
Código:
Dim LagaNDrop
Npclist(NpcIndex).Drops.NumDrop = val(Leer.GetValue("NPC" & NpcNumber, "NumDrops"))
For LagaNDrop = 1 To NumDrop
Npclist(NpcIndex).Drops.DropIndex(LagaNDrop) = val(Leer.GetValue("NPC" & NpcNumber, "Drop" & LagaNDrop & ""))
Npclist(NpcIndex).Drops.Porcentaje(LagaNDrop) = val(Leer.GetValue("NPC" & NpcNumber, "Prob" & LagaNDrop & ""))
Next LagaNDrop
Con esto estamos cargando los drops del npcs-hostiles.dat.
Finalmente, reemplazamos TODO el sub:
Código:
Sub Npc_Tirar_Items
Código:
Public Sub NPC_TIRAR_ITEMS(ByRef npc As npc)
'TIRA TODOS LOS ITEMS DEL NPC
On Error Resume Next
If npc.Drops.NumDrop > 0 Then
Dim LagaRLDrop
Dim LagaI
Dim MyObj As Obj
LagaRLDrop = RandomNumber(1, 100)
For LagaI = 1 To npc.Drops.NumDrop
If LagaRLDrop < npc.Drops.Porcentaje(LagaI) Then
MyObj.ObjIndex = npc.Drops.DropIndex(LagaI)
MyObj.Amount = 1
Call TirarItemAlPiso(npc.Pos, MiObj)
Exit Sub
End If
Next LagaI
End If
End Sub
Aca tira randoms y arroja el objeto.
Espero que les haya servido, suerte.