[Aportes indexados] Random Drop Items

Estado
Cerrado para nuevas respuestas.

Amraphen

Aprendiz Lvl 6
[SERVIDOR] Random Drop Items

He visto a algunas personas que pedían por este código, así que me tomé el tiempo de codearlo y ahora se los presento a uds.

Servidor 0.11.5 FUNCIONA
Dentro del módulo Declaraciones (Declares.bas), buscamos lo siguiente:

[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"> </li><li style="" class="li1"><span style="color: #b1b100;">Public</span> <span style="color: #b1b100;">Type</span> UserObj</li><li style="" class="li2"> </li></ol></div>[/vb]

Y reemplazamos todo ese Type (O sea, desde el 'Public Type UserObj' hasta el 'End Type') por lo siguiente:

[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"> </li><li style="" class="li1"><span style="color: #b1b100;">Public</span> <span style="color: #b1b100;">Type</span> UserOBJ</li><li style="" class="li2">    ObjIndex <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Integer</span></li><li style="" class="li1">    Amount <span style="color: #b1b100;">As</span> <span style="color: #b1b100;">Integer</span></li><li style="" class="li1">    Equipped <span style="color: #b1b100;">As</span> Byte</li><li style="" class="li2">    ProbTirar <span style="color: #b1b100;">As</span> Byte</li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Type</span></li><li style="" class="li1"> </li></ol></div>[/vb]

Luego, dentro del módulo InvNpc (Modulo_InventANDobj.bas), buscamos lo siguiente:

[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"> </li><li style="" class="li1"><span style="color: #b1b100;">Public</span> <span style="color: #b1b100;">Sub</span> NPC_TIRAR_ITEMS<span style="color: #66cc66;">(</span>ByRef npc <span style="color: #b1b100;">As</span> npc<span style="color: #66cc66;">)</span></li><li style="" class="li2"> </li></ol></div>[/vb]

Y reemplazaos todo ese Sub (O sea, desde el 'Public Sub..." hasta el 'End Sub') por lo siguiente:

[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"> </li><li style="" class="li1"><span style="color: #b1b100;">Public</span> <span style="color: #b1b100;">Sub</span> NPC_TIRAR_ITEMS<span style="color: #66cc66;">(</span>ByRef npc <span style="color: #b1b100;">As</span> npc<span style="color: #66cc66;">)</span></li><li style="" class="li2"><span style="color: #808080;">'TIRA TODOS LOS ITEMS DEL NPC</span></li><li style="" class="li1"><span style="color: #b1b100;">On</span> <span style="color: #b1b100;">Error</span> <span style="color: #b1b100;">Resume</span> <span style="color: #b1b100;">Next</span></li><li style="" class="li1"> </li><li style="" class="li2"><span style="color: #b1b100;">If</span> npc.<span style="color: #66cc66;">Invent</span>.<span style="color: #66cc66;">NroItems</span> > <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">Then</span></li><li style="" class="li1">    <span style="color: #b1b100;">Dim</span> i <span style="color: #b1b100;">As</span> Byte</li><li style="" class="li1">    <span style="color: #b1b100;">Dim</span> MiObj <span style="color: #b1b100;">As</span> Obj</li><li style="" class="li2">    </li><li style="" class="li1">    <span style="color: #b1b100;">For</span> i = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">To</span> MAX_INVENTORY_SLOTS</li><li style="" class="li1">        <span style="color: #b1b100;">If</span> npc.<span style="color: #66cc66;">Invent</span>.<span style="color: #66cc66;">Object</span><span style="color: #66cc66;">(</span>i<span style="color: #66cc66;">)</span>.<span style="color: #66cc66;">ObjIndex</span> > <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">Then</span></li><li style="" class="li2">            <span style="color: #b1b100;">If</span> RandomNumber<span style="color: #66cc66;">(</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">)</span> <= npc.<span style="color: #66cc66;">Invent</span>.<span style="color: #66cc66;">Object</span><span style="color: #66cc66;">(</span>i<span style="color: #66cc66;">)</span>.<span style="color: #66cc66;">ProbTirar</span> <span style="color: #b1b100;">Then</span></li><li style="" class="li1">                MiObj.<span style="color: #66cc66;">Amount</span> = npc.<span style="color: #66cc66;">Invent</span>.<span style="color: #66cc66;">Object</span><span style="color: #66cc66;">(</span>i<span style="color: #66cc66;">)</span>.<span style="color: #66cc66;">Amount</span></li><li style="" class="li1">                MiObj.<span style="color: #66cc66;">ObjIndex</span> = npc.<span style="color: #66cc66;">Invent</span>.<span style="color: #66cc66;">Object</span><span style="color: #66cc66;">(</span>i<span style="color: #66cc66;">)</span>.<span style="color: #66cc66;">ObjIndex</span></li><li style="" class="li2">                <span style="color: #b1b100;">Call</span> TirarItemAlPiso<span style="color: #66cc66;">(</span>npc.<span style="color: #66cc66;">Pos</span>, MiObj<span style="color: #66cc66;">)</span></li><li style="" class="li1">            <span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span></li><li style="" class="li1">        <span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span></li><li style="" class="li2">    <span style="color: #b1b100;">Next</span> i</li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span></li><li style="" class="li1"><span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Sub</span></li><li style="" class="li2"> </li></ol></div>[/vb]

Luego, dentro del módulo NPCs (MODULO_NPCs.bas), buscamos lo siguiente:

[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"> </li><li style="" class="li1">    ln = Leer.<span style="color: #66cc66;">GetValue</span><span style="color: #66cc66;">(</span><span style="color: #ffffff;">"NPC"</span> & NpcNumber, <span style="color: #ffffff;">"Obj"</span> & LoopC<span style="color: #66cc66;">)</span></li><li style="" class="li2"> </li></ol></div>[/vb]

Y abajo de esa línea, colocamos lo siguiente:

[vb]<div class="vb" id="{CB}" style="font-family: monospace;"><ol><li style="" class="li1"> </li><li style="" class="li1">    Npclist<span style="color: #66cc66;">(</span>NpcIndex<span style="color: #66cc66;">)</span>.<span style="color: #66cc66;">Invent</span>.<span style="color: #66cc66;">Object</span><span style="color: #66cc66;">(</span>LoopC<span style="color: #66cc66;">)</span>.<span style="color: #66cc66;">ProbTirar</span> = <span style="color: #b1b100;">val</span><span style="color: #66cc66;">(</span>ReadField<span style="color: #66cc66;">(</span><span style="color: #cc66cc;">3</span>, ln, <span style="color: #cc66cc;">45</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span></li><li style="" class="li2"> </li></ol></div>[/vb]

Y ya tenemos el sistema implementado. Ahora, se deben modificar los dats, de la siguiente manera:

NPCs-HOSTILES.dat dijo:
[NPC501]
Name=Lobo
Head=0
Body=10
Heading=3
Movement=3
Alineacion=2
Attackable=1
Comercia=0
Hostile=1
GiveEXP=100
MinGLD=500
MaxGLD=700
ProbGLD=75
MinHP=75
MaxHP=75
MaxHIT=18
MinHIT=1
DEF=8
PoderAtaque=80
PoderEvasion=25
Snd1=35
Snd2=9
NROITEMS=1
Obj1=414-1

Para implementar la probabilidad, simplemente, a la línea que está en negrita le agregamos un guión y la probabilidad de drop. También, si se quiere que el item siempre se dropee, agregamos un guión y 100; y si queremos que no se dropee, borramos el objeto o simplemente colocamos al final, un guión y 0. Así, la piel de lobo del NPC tendría un 75% de probabilidad, y se implementa como se lo muestra a continuación:

NPCs-HOSTILES.dat dijo:
[NPC501]
Name=Lobo
Head=0
Body=10
Heading=3
Movement=3
Alineacion=2
Attackable=1
Comercia=0
Hostile=1
GiveEXP=100
MinGLD=500
MaxGLD=700
ProbGLD=75
MinHP=75
MaxHP=75
MaxHIT=18
MinHIT=1
DEF=8
PoderAtaque=80
PoderEvasion=25
Snd1=35
Snd2=9
NROITEMS=1
Obj1=414-1-75

Espero que les haya gustado!

Saludos.
 

MrMan

Sr. Product Manager @ Rockwell Automation
Miembro del equipo
Colaborador
Codigo ya posteado.


Atte. Tales
 

MrMan

Sr. Product Manager @ Rockwell Automation
Miembro del equipo
Colaborador
buscalo, esta posteado por mrman, es parecido a este y esta en el aoready
 

Tavo

[color=#BF0000]Lucha por tus ideales![/color]
Tiene razon Amraphen, ademas es un drop de items aleatorio, el de AoR es de oro.
 
Estado
Cerrado para nuevas respuestas.
Arriba