Eu consegui adaptar o Summon/Pet para entrar no PZ, passar por dentro dos jogadores e não ser atacado. Porém, estou precisando agora que ele passe também por dentro dos monstros. A ideia do summon será apenas um suporte (como os do Naruto), ele não atrapalhará em nada, apenas dará alguns bônus como life, mana e outros para o dono.
Para uma possível ajuda nessa adaptação, vou mostrar baixo aonde editei o código para que ele possa passar por dentro do player (arquivo player.cpp) alterei as linhas onde têm bool Player::canWalkthrough(const Creature* creature) const até o fechamento dela e bool Player::canWalkthroughEx(const Creature* creature) const também até o fechamento dela por todo esse código abaixo:
E também adicionei esse código g_game.updateCreatureWalkthrough(creature); acima do g_game.updateCreatureType(creature); que está no arquivo luascript.cpp
Pronto, com isso ele passa a andar por dentro dos jogadores.
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
APROVEITANDO o mesmo post, se alguém souber como faz para Summonar DENTRO DO PZ, por favor.
Eu adaptei para ele entrar no PZ quando o jogador entrar, mas dentro do PZ não da pra sumonar caso o Pet/Summon não esteja sumonado. Vou mostrar aonde editei os códigos aqui abaixo pra facilitar o suporte.
Dentro de ReturnValue Tile::queryAdd(int32_t, const Thing& thing, uint32_t, uint32_t flags, Creature*) const no arquivo tile.cpp procurei a linha if (hasFlag(TILESTATE_PROTECTIONZONE | TILESTATE_FLOORCHANGE | TILESTATE_TELEPORT)) { e adicionei o código seguinte logo a baixo dele.
// INÍCIO SUMMON ENTRAR NO PZif(creature->isSummon()){if(hasFlag(TILESTATE_BLOCKSOLID)){return RETURNVALUE_NOTPOSSIBLE;}return RETURNVALUE_NOERROR;}// FIM SUMMON ENTRAR NO PZ
Pronto, agora ele já entra no PZ com o player.
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
E pra finalizar, o código que usei pra sumonar (scripts do movements): (obs.: como não estou conseguindo fazer com que sumone-o dentro do PZ, eu adaptei um sistema para avisar que dentro do PZ não da pra sumonar, porém não é isso que eu quero, coloquei provisoriamente).
local cfg ={
monster ="Rat"}function onDeEquip(cid, item, slot)if#getCreatureSummons(cid) >= 1 thenlocal pet = getCreatureSummons(cid)for _, k in ipairs(pet)do
doSendMagicEffect(getThingPos(k),13)
doRemoveCreature(k)returntrueendendreturntrueendfunction onEquip(cid, item, slot)if getTilePzInfo(getCreaturePosition(cid))then
doPlayerSendCancel(cid,"This summon is not permitted in a protection zone.")elseif#getCreatureSummons(cid) == 0 thenlocal monster = doSummonCreature(cfg.monster, getThingPos(cid))
doConvinceCreature(cid, monster)
doSendMagicEffect(getThingPos(cid),13)endendreturntrueend
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
Para o Pet/Summon não ser atacado eu simplesmente marquei como "0" dentro do código do próprio monstro <flag attackable="0"/>
Olá pessoal,
Eu consegui adaptar o Summon/Pet para entrar no PZ, passar por dentro dos jogadores e não ser atacado. Porém, estou precisando agora que ele passe também por dentro dos monstros. A ideia do summon será apenas um suporte (como os do Naruto), ele não atrapalhará em nada, apenas dará alguns bônus como life, mana e outros para o dono.
Para uma possível ajuda nessa adaptação, vou mostrar baixo aonde editei o código para que ele possa passar por dentro do player (arquivo player.cpp) alterei as linhas onde têm bool Player::canWalkthrough(const Creature* creature) const até o fechamento dela e bool Player::canWalkthroughEx(const Creature* creature) const também até o fechamento dela por todo esse código abaixo:
E também adicionei esse código g_game.updateCreatureWalkthrough(creature); acima do g_game.updateCreatureType(creature); que está no arquivo luascript.cpp
Pronto, com isso ele passa a andar por dentro dos jogadores.
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
APROVEITANDO o mesmo post, se alguém souber como faz para Summonar DENTRO DO PZ, por favor.
Eu adaptei para ele entrar no PZ quando o jogador entrar, mas dentro do PZ não da pra sumonar caso o Pet/Summon não esteja sumonado. Vou mostrar aonde editei os códigos aqui abaixo pra facilitar o suporte.
Dentro de ReturnValue Tile::queryAdd(int32_t, const Thing& thing, uint32_t, uint32_t flags, Creature*) const no arquivo tile.cpp procurei a linha if (hasFlag(TILESTATE_PROTECTIONZONE | TILESTATE_FLOORCHANGE | TILESTATE_TELEPORT)) { e adicionei o código seguinte logo a baixo dele.
Pronto, agora ele já entra no PZ com o player.
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
E pra finalizar, o código que usei pra sumonar (scripts do movements): (obs.: como não estou conseguindo fazer com que sumone-o dentro do PZ, eu adaptei um sistema para avisar que dentro do PZ não da pra sumonar, porém não é isso que eu quero, coloquei provisoriamente).
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
Para o Pet/Summon não ser atacado eu simplesmente marquei como "0" dentro do código do próprio monstro <flag attackable="0"/>
DESDE JÁ OBRIGADO !
Editado por CoehManehCompartilhar este post
Link para o post
Compartilhar em outros sites