Postado Maio 29, 2015 10 anos Olá pessoal! Quero pedir um script que funcionará assim: O player usará o item 2380 num corpse(recém morto) e ao usar o corpse se transforma num esqueleto, tendo a chance de acontecer como no exemplo: local crocodilo = { [{1, 500}] = {msg = "Limpou o corpo e conseguiu carne.", item = 2671, amountmax = 3}, [{501, 520}] = {msg = "A faca desafiou e não é possível usá-la novamente.", destroy = true}, [{521, 1550}] = {msg = "Limpou o corpo mas não conseguiu coletar nada."}, [{1551, 1850}] = {msg = "Se cortou ao limpar o animal!", damage = {1, 100}}, [{1851, 2100}] = {msg = "Conseguiu bastante carne limpando o animal!", item = 2671, amountmax = 8}, [{2101, 2250}] = {msg = "Enquanto limpava o corpo, algumas lombrigas apareceram!.", summon = "lombrigas"}, [{2251, 2350}] = {msg = "Conseguiu pele de crocodilo!", item = 5876, amountmax = 1}, } local Lion= { [{2351, 2400}] = {msg = "Limpou o corpo e conseguiu carne.", item = 2671, amountmax = 3}, [{2401, 2500}] = {msg = "A faca desafiou e não é possível usá-la novamente.", destroy = true}, [{2501, 2600}] = {msg = "Limpou o corpo mas não conseguiu coletar nada."}, [{2601, 2700}] = {msg = "Se cortou ao limpar o animal!", damage = {1, 100}}, [{2701, 2800}] = {msg = "Conseguiu bastante carne limpando o animal!", item = 2671, amountmax = 8}, [{2801, 2900}] = {msg = "Enquanto limpava o corpo, algumas lombrigas apareceram!.", summon = "lombrigas"}, [{2901, 3000}] = {msg = "Conseguiu pele de leão!", item = 5876, amountmax = 1}, } quero que tenha um condition para cada animal, e que venha nesse mesmo script a configuração para cada corpse se transformar: --Crocodile if item2.itemid == 4277 then doTransformItem(item2.uid,4279) --Lion if item2.itemid == 2890 then doTransformItem(item2.uid,2891) espero que consigam entender e acredito que não seja algo muito difícil para quem manja.. obg desde já pessoal!
Postado Maio 29, 2015 10 anos Tente o seguinte script: local crocodilo = { [1] = {chance = {1,500}, item = {2671,3}, msg = "Limpou o corpo e conseguiu carne."}, [2] = {chance = {501,520}, msg = "A faca desafiou e não é possível usá-la novamente."}, [3] = {chance = {521,1550}, msg = "Limpou o corpo mas não conseguiu coletar nada."}, [4] = {chance = {1551,1850}, damage = {1,100}, msg = "Se cortou ao limpar o animal!"}, [5] = {chance = {1851,2100}, item = {2671,8}, msg = "Conseguiu bastante carne limpando o animal!"}, [6] = {chance = {2101,2250}, summon = "Larva", msg = "Enquanto limpava o corpo, algumas lombrigas apareceram!."}, [7] = {chance = {2251,2350}, item = {5876,1}, msg = "Conseguiu pele de crocodilo!"} } local lion = { [1] = {chance = {1,500}, item = {2671,3},msg = "Limpou o corpo e conseguiu carne."}, [2] = {chance = {501,520}, msg = "A faca desafiou e não é possível usá-la novamente."}, [3] = {chance = {521,1550}, msg = "Limpou o corpo mas não conseguiu coletar nada."}, [4] = {chance = {1551,1850}, damage = {1,100}, msg = "Se cortou ao limpar o animal!"}, [5] = {chance = {1851,2100}, item = {2671,8}, msg = "Conseguiu bastante carne limpando o animal!"}, [6] = {chance = {2101,2250}, summon = "Larva", msg = "Enquanto limpava o corpo, algumas lombrigas apareceram!."}, [7] = {chance = {2251,2350}, item = {5876,1}, msg = "Conseguiu pele de leão!"} } function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == 4277 then doTransformItem(itemEx.uid,4279) p = math.random(1,2350) for i = 1,#crocodilo do if (p >= crocodilo.chance[1]) and (p <= crocodilo.chance[2]) then doCreatureSay(cid,"" ..crocodilo.msg.. "", TALKTYPE_ORANGE_1) end end if (p >= crocodilo[1].chance[1]) and (p <= crocodilo[1].chance[2]) then doPlayerAddItem(cid, crocodilo[1].item[1], math.random(1,crocodilo[1].item[2])) end if (p >= crocodilo[2].chance[1]) and (p <= crocodilo[2].chance[2]) then doRemoveItem(item.uid,1) end if (p >= crocodilo[3].chance[1]) and (p <= crocodilo[3].chance[2]) then doSendMagicEffect(toPosition, CONST_ME_POFF) end if (p >= crocodilo[4].chance[1]) and (p <= crocodilo[4].chance[2]) then hp = math.random(crocodilo[4].damage[1],crocodilo[4].damage[2]) doCreatureAddHealth(cid, -hp) end if (p >= crocodilo[5].chance[1]) and (p <= crocodilo[5].chance[2]) then doPlayerAddItem(cid, crocodilo[5].item[1], math.random(1,crocodilo[5].item[2])) end if (p >= crocodilo[6].chance[1]) and (p <= crocodilo[6].chance[2]) then doSummonCreature(crocodilo[6].summon,toPosition) end if (p >= crocodilo[7].chance[1]) and (p <= crocodilo[7].chance[2]) then doPlayerAddItem(cid, crocodilo[7].item[1], math.random(1,crocodilo[7].item[2])) end end if itemEx.itemid == 2890 then doTransformItem(itemEx.uid,2891) p = math.random(1,2350) for i = 1,#lion do if (p >= lion.chance[1]) and (p <= lion.chance[2]) then doCreatureSay(cid,"" ..lion.msg.. "", TALKTYPE_ORANGE_1) end end if (p >= lion[1].chance[1]) and (p <= lion[1].chance[2]) then doPlayerAddItem(cid, lion[1].item[1], math.random(1,lion[1].item[2])) end if (p >= lion[2].chance[1]) and (p <= lion[2].chance[2]) then doRemoveItem(item.uid,1) end if (p >= lion[3].chance[1]) and (p <= lion[3].chance[2]) then doSendMagicEffect(toPosition, CONST_ME_POFF) end if (p >= lion[4].chance[1]) and (p <= lion[4].chance[2]) then hp = math.random(lion[4].damage[1],lion[4].damage[2]) doCreatureAddHealth(cid, -hp) end if (p >= lion[5].chance[1]) and (p <= lion[5].chance[2]) then doPlayerAddItem(cid, lion[5].item[1], math.random(1,lion[5].item[2])) end if (p >= lion[6].chance[1]) and (p <= lion[6].chance[2]) then doSummonCreature(lion[6].summon,toPosition) end if (p >= lion[7].chance[1]) and (p <= lion[7].chance[2]) then doPlayerAddItem(cid,lion[7].item[1],math.random(1,lion[7].item[2])) end end return true end em actions.xml ponha a tag: <action itemid="2380" event="script" value="nomedoarquivo.lua"/> Explicando: onde está o chance = {x,y} -- Ai você põe a chance min e max. Seria o [{2351, 2400}] que você pôs no seu exemplo(OBS: Se você quiser por um valor maior que 2350, não esqueça de mudar o p = math.random(1,x), onde x seria o maior número constado na tabela). onde está o item = {x,y} -- x é o id do item, y é o countmax, do seu exemplo. Note que no script que fiz, o sistema randomiza essa quantidade: doPlayerAddItem(cid, crocodilo[1].item[1], math.random(1,crocodilo[1].item[2])) nesse math.random, o sistema vai randomizar um numero entre 1 e o y que você quiser no "item". onde está summon = "Larva" -- troque pelo monstro que você quiser, mas lembre-se: Você precisa por o nome exato do monstro, com as letras maiúsculas, se necessário. Onde você encontra os "for", o sistema checará o math.random "p", que randomizará um número entre 1 e 2350 (que depois servirá para checar qual evento acontecerá) e então comparará o número randomizado com os valores de chance que você colocou. Quando ele encontrar o valor adequado ao evento (demarcado em [1], [2], etc de cada "tabela") ele fará o player dizer a msg correspondente ao evento. Se você quiser mudar isso, basta trocar o "doCreatureSay(etc etc etc)" por doPlayerSendCancel(cid,""..crocodile/lion.msg.."") *em vermelho: nome do monstro/tabela na qual estará rodando o script .-. * Depois dos "for" você verá vários If's. Estes servem para checar cada evento possível da tabela. Quando ele encontrar o evento escolhido pelo math.random, ele fará as ações do evento, constadas na tabela. Caso você deseje mudar os eventos na tabela, então altere os eventos no devido If. Os valores de Item, Damage, Chance, Summon e Msg podem ser alterados livremente, o script funciona de modo que independentemente do valor constado na tabela, ele executa as ações. Agora, se você quiser que além de um item, ele te dê também uma storagevalue, por exemplo, então você terá que mexer na tabela e depois acrescentar a ação no devido If. Caso queria adicionar mais monstros, basta dar um ctrl c + ctrl v na tabela, alterar o nome da mesma, os ids, se quiser, claro e depois criar os ifs para aquela tabela, antes do return true. OBS: Caso o itemEx.uid dê problemas, troque-os por item2.uid que estará tudo certo. Enfim, eu poderia ter feito o script para aceitar qualquer tipo de tabela nova colocada, mas ai daria mais trabalho e eu estou sem tempo hahaha espero que funcione. Qualquer problema, poste aqui e eu tentarei resolver. Boa sorte, xD Editado Maio 29, 2015 10 anos por SoulSarti (veja o histórico de edições)
Postado Maio 29, 2015 10 anos Autor Tente o seguinte script: em actions.xml ponha a tag: <action itemid="2380" event="script" value="nomedoarquivo.lua"/> Explicando: onde está o chance = {x,y} -- Ai você põe a chance min e max. Seria o [{2351, 2400}] que você pôs no seu exemplo(OBS: Se você quiser por um valor maior que 2350, não esqueça de mudar o p = math.random(1,x), onde x seria o maior número constado na tabela). onde está o item = {x,y} -- x é o id do item, y é o countmax, do seu exemplo. Note que no script que fiz, o sistema randomiza essa quantidade: doPlayerAddItem(cid, crocodilo[1].item[1], math.random(1,crocodilo[1].item[2])) nesse math.random, o sistema vai randomizar um numero entre 1 e o y que você quiser no "item". onde está summon = "Larva" -- troque pelo monstro que você quiser, mas lembre-se: Você precisa por o nome exato do monstro, com as letras maiúsculas, se necessário. Onde você encontra os "for", o sistema checará o math.random "p", que randomizará um número entre 1 e 2350 (que depois servirá para checar qual evento acontecerá) e então comparará o número randomizado com os valores de chance que você colocou. Quando ele encontrar o valor adequado ao evento (demarcado em [1], [2], etc de cada "tabela") ele fará o player dizer a msg correspondente ao evento. Se você quiser mudar isso, basta trocar o "doCreatureSay(etc etc etc)" por doPlayerSendCancel(cid,""..crocodile/lion.msg.."") *em vermelho: nome do monstro/tabela na qual estará rodando o script .-. * Depois dos "for" você verá vários If's. Estes servem para checar cada evento possível da tabela. Quando ele encontrar o evento escolhido pelo math.random, ele fará as ações do evento, constadas na tabela. Caso você deseje mudar os eventos na tabela, então altere os eventos no devido If. Os valores de Item, Damage, Chance, Summon e Msg podem ser alterados livremente, o script funciona de modo que independentemente do valor constado na tabela, ele executa as ações. Agora, se você quiser que além de um item, ele te dê também uma storagevalue, por exemplo, então você terá que mexer na tabela e depois acrescentar a ação no devido If. Caso queria adicionar mais monstros, basta dar um ctrl c + ctrl v na tabela, alterar o nome da mesma, os ids, se quiser, claro e depois criar os ifs para aquela tabela, antes do return true. OBS: Caso o itemEx.uid dê problemas, troque-os por item2.uid que estará tudo certo. Enfim, eu poderia ter feito o script para aceitar qualquer tipo de tabela nova colocada, mas ai daria mais trabalho e eu estou sem tempo hahaha espero que funcione. Qualquer problema, poste aqui e eu tentarei resolver. Boa sorte, xD Maanin, ótimo script e ele é funcional, sem erros na distro e eu consegui configurar outros monstros com base nos dois que vc colocou! REP+ por isso Mas o script não estava tirando HP do player quando ele se cortava, configurei assim e funcionou: if (p >= rat[4].chance[1]) and (p <= rat[4].chance[2]) then doCreatureAddHealth(cid, -dmg) doSendAnimatedText(getCreaturePosition(cid), "Se cortou!", TEXTCOLOR_RED) doSendMagicEffect(getCreaturePosition(cid), 0) end Porém ainda há um problema que não consegui tirar... Depois de cortar o animal com o ItemID 2380(faca), o corpse só se transforma em esqueleto quando reloga/ sai de perto dele, ele não transforma na hora ;x sabe resolver isso? darei outro rep+
Postado Maio 30, 2015 10 anos Tenta substituir o doTransformItem(itemEx.uid,id) por: doTransformItem(itemEx.uid, getItemInfo(itemEx.itemid).decayTo) doDecayItem(itemEx.uid) Pode ser que funcione. Se ele não se transforma na hora, então o sistema não tá rodando corretamente aquela função. Usando esse novo comando, ele vai chegar o decay do item, vai transformá-lo e depois vai fazer ele decair, para continuar o processo de "decomposição". Pode ser que isso funcione. Se não funcionar, tente usar apenas o doDecayItem(itemEx.uid). Se mesmo assim não funcionar, me avisa que eu te mandarei o script de decomposição "manual" haha xD
Postado Maio 31, 2015 10 anos Autor @EDIT! Funcionou só no leão, no crocodilo não ;x tava pensando, se puder gostaria que o player ficasse paralisado por 2 segundos ao realizar o script e tivesse o intervalo de 2 secs pra usar, se puder faz ai pfvr manin.. mas só arrumar o transform já tá ótimo Editado Maio 31, 2015 10 anos por biel.stocco (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.