Ir para conteúdo

Featured Replies

Postado

.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:

 

1666742612039.png

 

Vou pra um PZ (battle removido)
1666742647133.png

 

Mas logo após sair do PZ o battle volta

1666742688807.png

 

Gostaria que, quando não estivesse com PZ locked (apenas com battle), quando um player entrasse numa área PZ o battle fosse removido.

  • Respostas 5
  • Visualizações 671
  • Created
  • Última resposta

Top Posters In This Topic

Postado

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
  • 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
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
  • 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo