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.
- 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:[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>
- 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:[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
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


Citar




