BR
dúvida

[Resolvido] Monstro transformar com X de vida

Por brennin11, 03 de set. de 2013 em Scripts

resolvido
otserv
tibia
script
8
1.2k
brennin11B
03 de setembro de 2013 às 11:57

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

RoksasR
03 de setembro de 2013 às 12:40

Claro, mande os dados.

brennin11B
03 de setembro de 2013 às 13:14

Fazer um Azerus.gif(ID 309), se transformar em um Fire_Overlord.gif (ID 243), ao atingir 40% da vida máxima.

RoksasR
03 de setembro de 2013 às 13:32

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

brennin11B
03 de setembro de 2013 às 13:57

Obrigado, vou testar aqui *-*

OmegaO
03 de setembro de 2013 às 14:14

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

 

 

brennin11B
03 de setembro de 2013 às 16:40

O Script funcionou aqui, muito obrigado aos dois, seus lindos.

 

Pode fechar *-*

RoksasR
03 de setembro de 2013 às 17:22

Tópico movido para a seção de dúvidas e pedidos resolvidos.