4S
tfs 0.3.6

[Pedido] monstro que se multiplica com x de vida

Por 4sharedddd, 03 de dez. de 2015 em Scripts

0.3.6
monster
pedido
help
resolvido
script
8
1.5k
4sharedddd4
03 de dezembro de 2015 às 14:15

Bom, eu precisava de algum sistema que o monstro se multiplicasse quando tivesse x de vida, por exemplo o demon ta com 500 de vida, criasse outro demon com 500 de vida.

Desde já obrigado.

zipter98Z
03 de dezembro de 2015 às 15:03
Melhor resposta

data/creaturescripts/scripts

Código:

local health_to_multiple = 500                --Vida que, quando o monstro chegar, será replicado.
 
function onStatsChange(cid, attacker, type, combat, value)
    if isMonster(cid) and getCreatureHealth(cid) <= health_to_multiple and getPlayerStorageValue(cid, 4911) < 1 and type == STATSCHANGE_HEALTHLOSS then
        local new_monster = doCreateMonster(getCreatureName(cid), getThingPos(cid))

        doCreatureAddHealth(new_monster, -(getCreatureMaxHealth(new_monster) - health_to_multiple))
        setPlayerStorageValue(cid, 4911, 1)
        setPlayerStorageValue(new_monster, 4911, 1)
    end
    return true
end
Tag:
<event type="statschange" name="multiple_monster" event="script" value="nome_do_arquivo.lua"/>
No arquivo .xml do(s) monstro(s):
<script>
    <event name="multiple_monster"/>
</script>

 

Editado Dezembro 3 por zipter98

4sharedddd4
03 de dezembro de 2015 às 15:08

tem como fazer isso em apenas um monstro especifico?


Obrigado, testarei mais tarde e mando feedback

zipter98Z
03 de dezembro de 2015 às 15:18

Basta colocar aquele último trecho de código que enviei no arquivo .xml do monstro (antes de </monster>).

4sharedddd4
03 de dezembro de 2015 às 17:17

Basta colocar aquele último trecho de código que enviei no arquivo .xml do monstro (antes de </monster>).

Funcionou certinho, muito obrigado cara... o unico problema que estou tendo é com o monstro quando ele tiver trapado.

 

por exemplo, se ele estiver trapado por magic wall o server começa a dar erro e cai. como arrumar? acho que o script fica tentando achar um lugar pro monstro nascer e da erro

Night WolfN
03 de dezembro de 2015 às 20:52

eu tive esse problema quando criei a volatile spiderling. O tibia tem uma função chamada getClosestFreeTile que retorna a posição livre mais próxima pra sumonar o bixo.
Infelizmente para monstros trapados, ainda irá retornar esse erro então a forma de resolver isso é fazer um for por todas as posições em volta do player no range que vc quiser (gosto de usar range 2)

monstro é o 'o' e 'x' são as posições que irei contemplar.

 xxx
xxxxx
xxOxx
xxxxx
 xxx

e aí vc checa se tem uma posição livre, se tiver você cria o monstro lá.. se não tiver nenhuma vc não faz nada. Com essa simples checagem vc já arruma os erros da distro pois impede o script de tentar criar monstros em posições q não são elegíveis de se criar um monstro

 

4sharedddd4
04 de dezembro de 2015 às 08:54

eu tive esse problema quando criei a volatile spiderling. O tibia tem uma função chamada getClosestFreeTile que retorna a posição livre mais próxima pra sumonar o bixo.

Infelizmente para monstros trapados, ainda irá retornar esse erro então a forma de resolver isso é fazer um for por todas as posições em volta do player no range que vc quiser (gosto de usar range 2)

monstro é o 'o' e 'x' são as posições que irei contemplar.

 xxx
xxxxx
xxOxx
xxxxx
 xxx

e aí vc checa se tem uma posição livre, se tiver você cria o monstro lá.. se não tiver nenhuma vc não faz nada. Com essa simples checagem vc já arruma os erros da distro pois impede o script de tentar criar monstros em posições q não são elegíveis de se criar um monstro

 

 

 

Agrdeço tanto a sua vontade de ajudar quanto a dos outros, bom só o script ali simples já quebrou um galho pra mim, já como não manjo muito de script (as vezes consigo fazer algo juntando varios scripts laugh.png ) eu vou fazer o monstro rodeado de portal, é só um boss mesmo talvez isso resolva kk

AdministradorA
04 de dezembro de 2015 às 12:13

Tópico movido para dúvidas / pedidos resolvidos.