GN

[Resolvido] Alavanca que diminui vida do player

Por GniusP, 20 de out. de 2019 em Resolvidos

11
2.6k
GniusPG
20 de outubro de 2019 às 22:32

Pessoal, preciso de uma script que o player usa alavanca e fica com 200 de vida, e se usar outra alavanca, ele fique com a vida que estava antes

Yan OliveiraY
20 de outubro de 2019 às 23:15
41 minutos atrás, GniusP disse:
Versão do Servidor: TFS - 0.3.5
Tipo de Script: actions
Código:
  Ocultar conteúdo


 

Pessoal, preciso de uma script que o player usa alavanca e fica com 200 de vida, e se usar outra alavanca, ele fique com a vida que estava antes

Se ele usar a alavanca que restaura a vida primeiro é para acontecer algo? E essa ação será sempre, ou somente 1 vez?

GniusPG
20 de outubro de 2019 às 23:17
Agora, Yan18 disse:

Se ele usar a alavanca que restaura a vida primeiro é para acontecer algo? E essa ação será sempre, ou somente 1 vez?

Não, e poderá usar sempre...

Por exemplo:

Usei a alavanca que deixa minha vida em 200

Ai eu usei a alavanca que deixa a vida que estava antes de usar a alavanca que deixa a vida 200

E se eu não usar a alavanca que deixa 200, e usar essa que deixa a vida normal, não acontecerá nada

Yan OliveiraY
20 de outubro de 2019 às 23:22
3 minutos atrás, GniusP disse:

Não, e poderá usar sempre...

Por exemplo:

Usei a alavanca que deixa minha vida em 200

Ai eu usei a alavanca que deixa a vida que estava antes de usar a alavanca que deixa a vida 200

E se eu não usar a alavanca que deixa 200, e usar essa que deixa a vida normal, não acontecerá nada

Seu servidor é tibia ou poketibia? E qual a versão do TFS?

GniusPG
20 de outubro de 2019 às 23:23
Agora, Yan18 disse:

Seu servidor é tibia ou poketibia? E qual a versão do TFS?

Poketibia, versão 0.3.6

Yan OliveiraY
22 de outubro de 2019 às 00:32
Melhor resposta

Vai em data/actions/scripts e crie um arquivo chamado alavanca_hp.lua (ou algum nome que preferir) e adicione o seguinte código dentro:

function onUse(cid, item, frompos, item2, topos)

local hp_antigo = getCreatureHealth(cid) + 200 -- Pega a vida atual do player antes de clicar na alavanca

local hp_alavanca = math.floor(200 - getCreatureHealth(cid)) -- HP que o jogador terá ao clicar na alavanca

if item.itemid == 1945 or item.itemid == 1946 then -- Aqui o ID da alavanca que clica para ficar com 200 de vida

if getCreatureHealth(cid) > 200 or getCreatureMaxHealth(cid) > 200 then -- Verifica se tem mais de 200 de vida ou se a vida máxima é maior que 200

if getPlayerStorageValue(cid, 45000) == -1 then -- Verifica se o player não tem a storage ao clicar na alavanca
 doCreatureAddHealth(cid, hp_alavanca) -- Deixa o HP do player com 200 de vida
 doSendMagicEffect(getThingPos(cid), 27) -- Efeito ao clicar na alavanca
 setPlayerStorageValue(cid, 45000, 1) -- Adiciona a Storage
return true
else
doPlayerSendTextMessage(cid, 27, "Você não pode usar a alavanca com" ..hp_alavanca.. " ou menos de vida!")
return true
end

else
doPlayerSendTextMessage(cid, 27, "Você não pode clicar na alavanca porque tem 200 ou menos de vida.")
return true
end

return true
end

if item.itemid == 12176 then -- Aqui é o ID da 2º alavanca, que reseta o HP do player como estava antes

if getPlayerStorageValue(cid, 45000) == 1 then -- Verifica se tem storage
 doCreatureAddHealth(cid, hp_antigo) -- adiciona o novo HP ao player
 doSendMagicEffect(getThingPos(cid), 29) -- efeito
 doPlayerSendTextMessage(cid, 27, "Seu HP foi restaurado para "..hp_antigo.. " de vida.")
 setPlayerStorageValue(cid, 45000, -1) -- Remove a storage para voltar a clicar novamente
return true
end
end
end

Agora vai em data/actions/actions.xml e adicione a tag:

<action itemid="1945;12176" script="alavanca_hp.lua" /> <!-- Lembrando que tem que colocar os id das 2 alavancas, só substituir ali pelos seus id -->

E vai em data/npc/scripts/heal.lua (ou o arquivo.lua que cura os pokémons ao falar com a Nurse) e adicione o seguinte código dentro da função onCreatureDisappear(cid, pos)

if getPlayerStorageValue(cid, 45000) then
 setPlayerStorageValue(cid, 45000, -1)
return true
end

Lembrando que esse código é para o caso do player clicar na alavanca que tira vida, mas não clicar na que recupera, então ao falar com a Nurse, ele perde a storage para conseguir clicar na alavanca novamente.

 

Eu não consegui testar muito, pois estou com pouco tempo, mas testei e está ficando sempre com 200 de vida ao clicar na alavanca, mas não testei direito se ele recupera a quantidade de vida exata que estava antes de clicar na alavanca que tira vida. Teste e me diga se é isso que quer.

GniusPG
22 de outubro de 2019 às 16:46
16 horas atrás, Yan18 disse:

Vai em data/actions/scripts e crie um arquivo chamado alavanca_hp.lua (ou algum nome que preferir) e adicione o seguinte código dentro:

function onUse(cid, item, frompos, item2, topos)

local hp_antigo = getCreatureHealth(cid) + 200 -- Pega a vida atual do player antes de clicar na alavanca

local hp_alavanca = math.floor(200 - getCreatureHealth(cid)) -- HP que o jogador terá ao clicar na alavanca

if item.itemid == 1945 or item.itemid == 1946 then -- Aqui o ID da alavanca que clica para ficar com 200 de vida

if getCreatureHealth(cid) > 200 or getCreatureMaxHealth(cid) > 200 then -- Verifica se tem mais de 200 de vida ou se a vida máxima é maior que 200

if getPlayerStorageValue(cid, 45000) == -1 then -- Verifica se o player não tem a storage ao clicar na alavanca
 doCreatureAddHealth(cid, hp_alavanca) -- Deixa o HP do player com 200 de vida
 doSendMagicEffect(getThingPos(cid), 27) -- Efeito ao clicar na alavanca
 setPlayerStorageValue(cid, 45000, 1) -- Adiciona a Storage
return true
else
doPlayerSendTextMessage(cid, 27, "Você não pode usar a alavanca com" ..hp_alavanca.. " ou menos de vida!")
return true
end

else
doPlayerSendTextMessage(cid, 27, "Você não pode clicar na alavanca porque tem 200 ou menos de vida.")
return true
end

return true
end

if item.itemid == 12176 then -- Aqui é o ID da 2º alavanca, que reseta o HP do player como estava antes

if getPlayerStorageValue(cid, 45000) == 1 then -- Verifica se tem storage
 doCreatureAddHealth(cid, hp_antigo) -- adiciona o novo HP ao player
 doSendMagicEffect(getThingPos(cid), 29) -- efeito
 doPlayerSendTextMessage(cid, 27, "Seu HP foi restaurado para "..hp_antigo.. " de vida.")
 setPlayerStorageValue(cid, 45000, -1) -- Remove a storage para voltar a clicar novamente
return true
end
end
end

Agora vai em data/actions/actions.xml e adicione a tag:

<action itemid="1945;12176" script="alavanca_hp.lua" /> <!-- Lembrando que tem que colocar os id das 2 alavancas, só substituir ali pelos seus id -->

E vai em data/npc/scripts/heal.lua (ou o arquivo.lua que cura os pokémons ao falar com a Nurse) e adicione o seguinte código dentro da função onCreatureDisappear(cid, pos)

if getPlayerStorageValue(cid, 45000) then
 setPlayerStorageValue(cid, 45000, -1)
return true
end

Lembrando que esse código é para o caso do player clicar na alavanca que tira vida, mas não clicar na que recupera, então ao falar com a Nurse, ele perde a storage para conseguir clicar na alavanca novamente.

 

Eu não consegui testar muito, pois estou com pouco tempo, mas testei e está ficando sempre com 200 de vida ao clicar na alavanca, mas não testei direito se ele recupera a quantidade de vida exata que estava antes de clicar na alavanca que tira vida. Teste e me diga se é isso que quer.

Obrigado mano

Yan OliveiraY
22 de outubro de 2019 às 21:51
5 horas atrás, GniusP disse:

Obrigado mano

De nada! Está funcionando certinho? Era isso que queria?

GniusPG
22 de outubro de 2019 às 23:09
1 hora atrás, Yan18 disse:

De nada! Está funcionando certinho? Era isso que queria?

Simm

Yan OliveiraY
22 de outubro de 2019 às 23:31
21 minutos atrás, GniusP disse:

Simm

Show!

Yan LiimaY
23 de outubro de 2019 às 00:11
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.