Voy a ir poniendo scripts por aquí que vaya haciendo por diversión por si alguien le sirve o tal.
- Function que para generar un efecto visual, solamente algo estetico.
Código:
[ITEMDEF i_tontuna]
ID=i_fire_column
NAME=|
ON=@STEP
RETURN 1
[FUNCTION f_floritura]
SERV.NEWITEM i_tontuna
NEW.ATTR=ATTR_STATIC
NEW.TIMERF 2,REMOVE
NEW.P=<TOPOBJ.P>
NEW.MOVE S 2
SERV.NEWITEM i_tontuna
NEW.ATTR=ATTR_STATIC
NEW.TIMERF 2,REMOVE
NEW.P=<TOPOBJ.P>
NEW.MOVE N 2
SERV.NEWITEM i_tontuna
NEW.ATTR=ATTR_STATIC
NEW.TIMERF 2,REMOVE
NEW.P=<TOPOBJ.P>
NEW.MOVE W 2
SERV.NEWITEM i_tontuna
NEW.ATTR=ATTR_STATIC
NEW.TIMERF 2,REMOVE
NEW.P=<TOPOBJ.P>
NEW.MOVE E 2
SERV.NEWITEM i_tontuna
NEW.ATTR=ATTR_STATIC
NEW.TIMERF 2,REMOVE
NEW.P=<TOPOBJ.P>
- Este script va en conjunto con el siguiente, es un evento global para npcs, que a partir del otro script podemos modificar (añadir/quitar,etc) npcs con items especiales que irán directamente a la mochila se podría hacer tambien que en ves de a la mochila vayan al cuerpo del npc cambiando algunas lineas, pero bueno me inspire en el sistema de artefactos de OSI. Ademas contempla todos los atacantes al npc en cuestión y el daño que le hacen al npc haciendo que cada uno tenga una probabilidad X de llevarse el item ( si es generado ) en función del daño realizado. Falta añadirle el check para si los atacantes son pets, estos items vayan a la mochila del propietario de la pet (cosa que no tengo pensado ponerle xD)
Código:
[EVENTS e_npc]
ON=@DEATH
// apartir de aqui, esta parte pertenece al sistema de loot, de que al matar al mob te de un objeto en la mochila
IF (<r100><<def0.prob_<baseid>>) // Numero aleatorio de 0 a 100, si el numero aleatorio es menor a la probabilidad elejida, continua.
IF !(<ISEMPTY <def.bonus_item_<baseid>>>) // Si existe un item bonus
SERV.NEWITEM <def.bonus_item_<baseid>> // lo crea
ENDIF
FOR 0 <EVAL <ATTACKER>-1> // sacamos el valor del damage total realizado
LOCAL.DAMT += <ATTACKER.<DLOCAL._FOR>.DAMAGE>
ENDFOR
FOR 0 <EVAL <ATTACKER>-1> // creamos una local por cada atacante con su respectivo porcentaje de daño
LOCAL.PORCENTAJE.ATTACKER.<DLOCAL._FOR> += (<ATTACKER.<DLOCAL._FOR>.DAMAGE>*100)/<LOCAL.DAMT>
ENDFOR
FOR 0 <EVAL <ATTACKER>-1> // aqui se calcula el chance que tiene cada attacker de llevarse el item en caso de que lo vaya a dropear
LOCAL.SUMA +=<LOCAL.DMG.PART.<DLOCAL._FOR>>
LOCAL.CHANCE.<DLOCAL._FOR>=<EVAL <DLOCAL.SUMA>+1>
ENDFOR
LOCAL.RANDOM=<R1,100> // generamos el numero aleatorio para el reparto
FOR 0 <EVAL <ATTACKER>-1>
REF1=<ATTACKER.<DLOCAL._FOR>.UID>
IF (<LOCAL.RANDOM><<LOCAL.CHANCE.<LOCAL._FOR>>) // Si el chance del attacker correspondiente es mayor que el num aleatorio generador, se lleva el drop
NEW.CONT = <REF1.FINDLAYER.21.UID>
LOCAL.RANDOM=65500 // hace la funcion de break en el if, para que solo toque un objeto
REF1.F_FLORITURA // function para darle un toque visual a quien le caiga el objeto
ENDIF
ENDFOR
ENDIF
- Aqui simplente ponemos "bonus_item_C_NUESTRAID=i_OBJETO" y el npc con esa id contemplara de generar el objeto que le digamos, igual en el de abajo, si pones "prob_C_NUESTRAID=15" nuestro npc con la ID C_NUESTRAID tendria una probabilidad cercana al 15% de que saliese ese objeto.
Código:
[DEFNAME IDYLOOT] // aqui se define con bonus_item_<baseid> del mob que queremos que entre en el check
//bonus_item_c_id_npc=i_robe
[DEFNAME PROBABILIDAD] // aqui se define la probabilidad de que de objeto, prob_<baseid> = XX donde x es la probabilidad que queramos
//prob_c_id_npc=10