Postado Outubro 26, 2022 2 anos .Qual servidor ou website você utiliza como base? OTX 2 Você tem o código disponível? Se tiver publique-o aqui: bool ProtocolGame::logout(bool displayEffect, bool forceLogout) { //dispatcher thread if(!player) return false; if(player->hasCondition(CONDITION_EXHAUST, 1)) { player->sendTextMessage(MSG_STATUS_SMALL, "You have to wait a while."); return false; } if(!player->isRemoved()) { if(!forceLogout) { if(!IOLoginData::getInstance()->hasCustomFlag(player->getAccount(), PlayerCustomFlag_CanLogoutAnytime)) { if(player->getTile()->hasFlag(TILESTATE_NOLOGOUT)) { if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 500, 0, false, 1)) player->addCondition(condition); player->sendCancelMessage(RET_YOUCANNOTLOGOUTHERE); return false; } if(player->getZone() != ZONE_PROTECTION && player->hasCondition(CONDITION_INFIGHT)) { if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 500, 0, false, 1)) player->addCondition(condition); player->sendCancelMessage(RET_YOUMAYNOTLOGOUTDURINGAFIGHT); return false; } if(!g_creatureEvents->playerLogout(player, false)) //let the script handle the error message return false; } else g_creatureEvents->playerLogout(player, true); } else if(!g_creatureEvents->playerLogout(player, true)) return false; if(displayEffect && !player->isGhost()) g_game.addMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); } player->client->clear(true); disconnect(); if(player->isRemoved()) return true; return g_game.removeCreature(player); } Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. Em luta: Vou pra um PZ (battle removido) Mas logo após sair do PZ o battle volta Gostaria que, quando não estivesse com PZ locked (apenas com battle), quando um player entrasse numa área PZ o battle fosse removido.
Postado Outubro 27, 2022 2 anos Em creaturescripts.xml: Spoiler <event type="think" name="TiraBattle" event="script" value="tirabattle.lua"/> em login.xml Spoiler registerCreatureEvent(cid, "TiraBattle") tirabattle.lua: Spoiler function onThink(cid) if isPlayer(cid) and getCreatureCondition(cid, CONDITION_INFIGHT) and getTileInfo(getThingPos(cid)).protection then doRemoveCondition(cid, CONDITION_INFIGHT) end return true end
Postado Outubro 27, 2022 2 anos Autor 2 minutos atrás, poko360 disse: Em creaturescripts.xml: Ocultar conteúdo <event type="think" name="TiraBattle" event="script" value="tirabattle.lua"/> em login.xml Ocultar conteúdo registerCreatureEvent(cid, "TiraBattle") tirabattle.lua: Ocultar conteúdo function onThink(cid) if isPlayer(cid) and getCreatureCondition(cid, CONDITION_INFIGHT) and getTileInfo(getThingPos(cid)).protection then doRemoveCondition(cid, CONDITION_INFIGHT) end return true end Tentei, mesmo com isso o battle volta após sair do PZ, sem nada que justifique voltar o battle.
Postado Outubro 27, 2022 2 anos 4 horas atrás, Bruno Rezende disse: Tentei, mesmo com isso o battle volta após sair do PZ, sem nada que justifique voltar o battle. há algum monstro/treiner etc.. dentro do PZ ou perto do player? o battle pode contar até com monstros a 15 SQM do player.
Postado Outubro 27, 2022 2 anos Autor 36 minutos atrás, FeeTads disse: há algum monstro/treiner etc.. dentro do PZ ou perto do player? o battle pode contar até com monstros a 15 SQM do player. Não tem, mas consegui resolver: https://github.com/otland/tfs-old-svn/blob/r3884/player.cpp#L1381 nessa função void Player::onChangeZone(ZoneType_t zone) eu adicionei if(zone == ZONE_PROTECTION) { if(Condition* condition = getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT)) { removeCondition(condition); } } acima de sendIcons();
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.