mrsanty 258 Report post Posted February 15, 2020 hola a todos, les cuento estoy usando los files akron2 con source y binaro, y e notado que los mob no tiran los item de mejora, para no liarme con el mob_drop_item etc etc.. decidi hacer esta pequeña quest. el problema que tengo es que el drup es fija. es decir si mato a un perro este me drupea siempre estos objetos y. yo quiero que sea alatorio y que no caigan tan seguido. no soy muy bueno creando quest aun. quest drop begin state start begin when kill with not npc.is_pc() begin if number(1,4) == 1 then items={ {30093,1},{30094,1},{30095,1},{30096,1} } for i = 1, table.getn(items) do game.drop_item(items[1],items[2]) end end end end end Quote Share this post Link to post Share on other sites
NazoX 895 Report post Posted March 18, 2020 Quote quest drops_nazox begin state start begin when kill with not npc.is_pc() and pc.get_level() >= 1 begin local drop = {1954,70102,25040,71021,80003,80004,50513,70102,72301,72310,39030,27051,27051,27051,27004,27004,27004,27004,10,10,10,20,30,40,50,60,11210,30157,15,12,21,35,22,42,44,55,61,62,71,80,50} local aleatorio = math.random(1,49) local prob = number(1, 270) if prob <= 5 then game.drop_item_with_ownership(drop[aleatorio],1) end end end end Quote Share this post Link to post Share on other sites
caanmasu 397 Report post Posted March 18, 2020 Para los ítems de mejora es 100% recomendable usar el mob_drop_item.txt, ya si no te funciona es otra cosa pero me parece raro que no funcione, algo estás haciendo mal xD Para usar la probabilidad debes tener en cuenta que if number(1, 10) == 1 then Esto significa que se toma un número (pseudoaleatoriamente) del 1 al 10 N = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} y si cae el 1, entonces entrará a la condición. Es decir que las probabilidades son 1/10 = 0,1 = 10%, de 10 perros que mates te dropeará 1 (puede que sí, puede que no). Si quieres personalizar la probabilidad de drop haz esto: Para poner 1% de drop: if number(1, 100) == 1 then 1/100 = 0,01 = 1% de probabilidades Para poner 0.1% de drop: if number(1, 1000) == 1 then 1/1000 = 0,001 = 0,1% de probabilidades Y así vas viendo el patrón. Nota: solo funciona este patrón con 1. Luego si quieres poner el 2% de drop: if number(1, 100) <= 2 then Dice que si el número cae entre 1 y 2 va a entrar a la condición, o sea que hay 2/100 = 1/50 = 0.02 = 2% de probabilidades Si quieres poner 20% de drop aplica el patrón del 1% así: if number(1, 10) <= 2 then Ya sabiendo esto, si quieres poner 3.5% de drop: if number(1, 1000) <= 35 then 0.25% de drop: if number(1, 10000) <= 25 then Nota: se puede comparar con cualquier conjunto de números ya que number() crea números al azar con distribución uniforme. Así que puedes poner == 1, == 100, == 40 o cualquier número que esté en el rango. Una forma de hacer esto más fácil es tomar de referencia el (1, 100) como el 1% y si quieres aumentar las probabilidades debes quitar ceros. En cambio si quieres disminuir las probabilidades debes aumentar los ceros. (1, 10) == 1 -> 10% (1, 100) == 1 -> 1% (1, 1000) == 1 -> 0.1% (1, 10000) == 1 -> 0.01% (1, 100000) == 1 -> 0.001% Después para variar los porcentajes simplemente comparas con <= poniendo el dígito. Ejemplo para el 25 (1, 100) <= 25 -> 25% (1, 1000) <= 25 -> 0.25% (1, 10000) <= 25 -> 0.025% Si quieres que el perro te bote algo con probabilidad de drop del 0,15% se hace así: quest drop begin state start begin when kill with not npc.is_pc() begin if number(1, 1000) <= 15 then -- 0.15% items={ {30093,1},{30094,1},{30095,1},{30096,1} } for i = 1, table.getn(items) do game.drop_item(items[1],items[2]) end end end end end Quote Share this post Link to post Share on other sites