Ir para conteúdo
  • 0

[Resolvido] Monstro transformar com X de vida


brennin11

Pergunta

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 por MindriaKaya
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

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 por Roksas
Link para o comentário
Compartilhar em outros sites

  • 0

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

 

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...