hauhauhauhau syphos e suas idéias mirabolantes....
espero q o ot fique legal com essas suas invenções malucas...
o script não dá erro nenhum no console??? simplesmente não faz o q vc qr q faça??
duas coisas q eu notei... não chegam a ser erros... mas dariam um certo bug no seu ot:
hp = getPlayerHealth(cid)
[...]
doPlayerAddHealth(cid,hp*2)
suponhamos q meu char esteja life full com 1000 de life
hp = 1000
doPlayerAddHealth(cid, 2000)
eu iria levar uma bela buggada de 3000 de life...
em ots melhor desenvolvidos, protegidos, isso não aconteceria... mas um bom script tem que barrar o máximo de falhas possível. Vamos ao reparo
local vidaMaxima = getPlayerMaxHealth(cid) local vidaAgora = getPlayerHealth(cid) local diferenca = vidaMaxima - vidaAgora local recupera = vidaAgora * 2 if recupera > diferenca then recupera = diferenca end
explicando
caso1: 1000 de life, máximo 1000 de life
vidaAgora = 1000
vidaMaxima = 1000
diferenca = 0
recupera = 2000
if 2000 > 0 then
recupera = 0
end
caso2: 600 de life, máximo 1000 de life
vidaAgora = 600
vidaMaxima = 1000
diferenca = 400
recupera = 1200
if 1200 > 400 then
recupera = 400
end
caso3: 300 de life, máximo 1000 de life
vidaAgora = 300
vidaMaxima = 1000
diferenca = 700
recupera = 600
if 600 > 700 (pula, recupera continua sendo 600)
o erro no caso de não ter dinheiro, é um pouco mais grave.. uma vez que você mata o char, antes de deixá-lo com 1 de life...
para isso... o 0+1 deve ser feito antes da function addHealth
local punicao = vidaAgora - 1 doPlayerAddHealth(cid, punicao)
complementando
else só é necessário, quando há uma alternativa de escape.... em português pode ser traduzido como "se não"
explicação
se (1+1 = 2) então
"vc é bom em matemática"
senão
"você foi reprovado!
fim
em negrito estão as traduções das expressões dentro de um if
se não houver um "se não", ele pode ser descartado
se (1+1 = 2) então
enviar para área de bons em matemática
fim
acho que é isso.. espero ter ajudado em alguma coisa... caso não tenha solucionado o problema, fica alguma coisa pra aprendizado ![]()
leve edição... dei uma 'enxugada' no seu código... pode ser até que dê certo.. quem sabe =D
function onUse(cid, item, frompos, item2, topos) --PIGGY BANK DIZIMO BY SYPHOS-- local vidaMaxima = getPlayerMaxHealth(cid) local vidaAgora = getPlayerHealth(cid) local diferenca = vidaMaxima - vidaAgora local recupera = vidaAgora * 2 local punicao = vidaAgora - 1 if recupera > diferenca then recupera = diferenca end if item.uid == 6007 then semdinheiro = doPlayerRemoveMoney(cid,10000) if semdinheiro == 1 then doPlayerSendTextMessage(cid,22,"Obrigado! Deus te abençôe!") doPlayerAddHealth(cid,recupera) else doPlayerSendTextMessage(cid,21,"Sem dinheiro!? Sinta a ira de Deus!") doPlayerAddHealth(cid,-punicao) end end return 0 end








info
Grupo: Campones
Registrado: 21/03/07
Posts: 8
Reputação: 0
Char no Tibia: Lite Sarl
Bem, é o seguinte:
Tenho um OT Server (Tibia 8.4/Servfull 2.3 Global/The Forgotten Server/SQL)
No meu OT tem uma igreja.
Na minha igreja tem um porquinho (daqueles rosa de por moeda) c/ UID
E fiz uma action pra ele assim:
Esse código funciona como eu queria. Mas achei que tava faltando alguma coisa mais legal. Então decidi dar HP pro player q pagar e tirar HP do player que não tiver dinheiro. E então o código ficou assim:
Esse não funciona nem rezando. O que será que falta? Alguém pode me ajudar?
Agradeço muito a atenção :smile_positivo:
Editado Janeiro 16 por Syphos