Claro, mande os dados.
[Resolvido] Monstro transformar com X de vida
Por brennin11, 03 de set. de 2013 em Scripts
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

info
Grupo: Campones
Registrado: 30/06/08
Posts: 7
Reputação: 0
Char no Tibia: Babi Aler

Fazer um
(ID 309), se transformar em um
(ID 243), ao atingir 40% da vida máxima.
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Vá em data/creaturescripts/scripts, crie um arquivo chamado monstertrans.lua e adicione dentro:
function onStatsChange(cid, attacker, type, combat, value)
local m = "Rat"
if not isMonster(cid) then
return true
end
if type == STATSCHANGE_HEALTHLOSS and getCreatureName(cid) == m then
if getCreatureHealth(cid) <= (40/100 * getCreatureHealth(cid)) then
doSetMonsterOutfit(cid, "Hellfire Fighter", -1)
return true
end
return true
end
return true
end
Na segunda linha do código coloque o nome do monstro!
Em login.lua coloque:
registerCreatureEvent(cid, "monstertrans")
Em creaturescripts.xml adicione:
<event type="statschange" name="monstertrans" event="script" value="monstertrans.lua"/>
Editado Setembro 3 por Roksas
info
Grupo: Campones
Registrado: 30/06/08
Posts: 7
Reputação: 0
Char no Tibia: Babi Aler

Obrigado, vou testar aqui *-*
info
Grupo: Marquês
Registrado: 16/06/07
Posts: 1.2k
Reputação: +377
Gênero: Masculino
Char no Tibia: Nenhum

Roksas, tava testando umas coisas com creaturescripts de monstros ontem e não funcionava no login.lua. Talvez seja do servidor, mas eu tive que colocar a tag do evento no .xml do monstro.
Dessa maneira:
<script> <event name="Nome do Creaturescript"/> </script>
Colocando isso debaixo da TAG </flags> (creio que sirva em qualquer lugar)
Aí na segunda linha do script (embaixo da função e seus parâmetros, você registra o evento)
function onStatsChange(cid, attacker, type, combat, value)
registerCreatureEvent(cid, "monstertrans")
local m = "Rat"
if not isMonster(cid) then
return true
end
if type == STATSCHANGE_HEALTHLOSS and getCreatureName(cid) == m then
if getCreatureHealth(cid) <= (40/100 * getCreatureHealth(cid)) then
doSetMonsterOutfit(cid, "Hellfire Fighter", -1)
return true
end
return true
end
return true
end
Eu também gosto de adicionar um string.lower na comparação pra não errarem por escrever por falta ou abuso de letras maiúsculas, além de ter consertado uma coisa: você colocou 40/100 getCreatureHealth(cid), mas acho que a intenção era getCreatureMaxHealth(cid). Enfim, a minha versão final fica assim:
function onStatsChange(cid, attacker, type, combat, value)
registerCreatureEvent(cid, "monstertrans")
local m = "Rat"
if isPlayer(cid) then
return true
end
if type == STATSCHANGE_HEALTHLOSS and string.lower(getCreatureName(cid)) == string.lower(m) then
if getCreatureHealth(cid) <= (4/10 * getCreatureMaxHealth(cid)) then
doSetMonsterOutfit(cid, "Hellfire Fighter", -1)
end
end
return true
end
info
Grupo: Campones
Registrado: 30/06/08
Posts: 7
Reputação: 0
Char no Tibia: Babi Aler

O Script funcionou aqui, muito obrigado aos dois, seus lindos.
Pode fechar *-*



info
Grupo: Campones
Registrado: 30/06/08
Posts: 7
Reputação: 0
Char no Tibia: Babi Aler
Boa Tarde xTibianos,
Alguém saberia me dizer, se é possível fazer com que um monstro com sprite X, se transforme em uma sprite Y, ao ser atacado e atingir Z de vida?
Se sim, alguém conhece algum script que faça isso?
Grato *-*
Editado Setembro 3 por MindriaKaya