Ir para conteúdo

Featured Replies

Postado

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!

Resolvido por biel.stocco

Ir para solução
  • Respostas 10
  • Visualizações 546
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 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 m

  • Tenta substituir o doTransformItem(itemEx.uid,id) por:       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 no

  • Caraca, ta realmente tenso esse crocodilo... Vamos tentar outro codigo AUSHAUHSUAHS  doTransformItem(itemEx.uid, itemEx.itemid + 1) Vaaai que, neh?! UAHSUASHUAH só substituir o antigo doTransformIte

Postado

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 por SoulSarti (veja o histórico de edições)

Postado
  • 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

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
  • 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 :D

Editado 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo