Ir para conteúdo
  • Cadastre-se

(Resolvido)Char não pega PZ ao atacar PK


Ir para solução Resolvido por Bruno Rezende,

Posts Recomendados

  • Solução

.Qual servidor ou website você utiliza como base? 

OTX 2

 

Você tem o código disponível? Se tiver publique-o aqui: 

void Player::onTarget(Creature* target)
{
	Creature::onTarget(target);

	if(target == this)
	{
		addInFightTicks(false);
		return;
	}

	if(hasFlag(PlayerFlag_NotGainInFight))
		return;

	Player* targetPlayer = target->getPlayer();
	if(targetPlayer && !isPartner(targetPlayer) && !isAlly(targetPlayer))
	{
		if(!pzLocked && g_game.getWorldType() == WORLDTYPE_HARDCORE)
		{
			pzLocked = true;
			sendIcons();
		}

		if(getSkull() == SKULL_NONE && getSkullType(targetPlayer) == SKULL_YELLOW)
		{
			addAttacked(targetPlayer);
			targetPlayer->sendCreatureSkull(this);
		}
		else if(!targetPlayer->hasAttacked(this))
		{
			if(!pzLocked)
			{
				pzLocked = true;
				sendIcons();
			}

			if(!Combat::isInPvpZone(this, targetPlayer) && !isEnemy(this))
			{
				addAttacked(targetPlayer);

				if(targetPlayer->getSkull() == SKULL_NONE && getSkull() == SKULL_NONE && (!guildId || !targetPlayer->getGuildId())) 
				{
					setSkull(SKULL_WHITE);
					g_game.updateCreatureSkull(this);
				}

				if(getSkull() == SKULL_NONE)
					targetPlayer->sendCreatureSkull(this);
			}
		}
	}

	addInFightTicks(false);
} 

 

Bom dia pessoal, hoje percebi que meu servidor está com um comportamento (não sei se esperado) mas indesejado, vamos pensar no seguinte cenário:

Player 1 Ataca Player 2 (e pega White Skull)

Player 2 ataca de volta player 1 e consegue entrar numa Protection Zone (não deveria/gostaria)

Após sair da PZ, o player 2 ataca novamente o player 1 e vira Yellow Skull, e agora sim fica com PZ lock

 

Gostaria que já no primeiro ataque o Player 2 ficasse com PZ lock, poderiam me ajudar?

 

Consegui resolver:

 

// DE
        else if(!targetPlayer->hasAttacked(this))
        {
            if(!pzLocked)
            {
                pzLocked = true;
                sendIcons();
            }
           
// PARA
            else
        {
            if(!pzLocked)
            {
                pzLocked = true;
                sendIcons();
            }

 

Link para o post
Compartilhar em outros sites
  • Sub-Admin

void Player::onTarget(Creature* target)
{
    Creature::onTarget(target);

    if(target == this)
    {
        addInFightTicks(false);
        return;
    }

    if(hasFlag(PlayerFlag_NotGainInFight))
        return;

    Player* targetPlayer = target->getPlayer();
    if(targetPlayer && !isPartner(targetPlayer) && !isAlly(targetPlayer))
    {
        if(!pzLocked && g_game.getWorldType() == WORLDTYPE_HARDCORE)
        {
            pzLocked = true;
            sendIcons();
        }

        if(getSkull() == SKULL_NONE && getSkullType(targetPlayer) == SKULL_YELLOW)
        {
            addAttacked(targetPlayer);
            targetPlayer->sendCreatureSkull(this);
        }
        else if(!targetPlayer->hasAttacked(this))
        {
            if(!pzLocked)
            {
                pzLocked = true;
                sendIcons();
            }

            // Adicione a seguinte condição para receber o PZ lock no primeiro ataque
            if(getSkull() == SKULL_NONE)
            {
                addAttacked(targetPlayer);
                setSkull(SKULL_WHITE);
                g_game.updateCreatureSkull(this);
                targetPlayer->sendCreatureSkull(this);
            }
            else if(!Combat::isInPvpZone(this, targetPlayer) && !isEnemy(this))
            {
                addAttacked(targetPlayer);

                if(getSkull() == SKULL_NONE && (!guildId || !targetPlayer->getGuildId())) 
                {
                    setSkull(SKULL_WHITE);
                    g_game.updateCreatureSkull(this);
                }

                if(getSkull() == SKULL_NONE)
                    targetPlayer->sendCreatureSkull(this);
            }
        }
    }

    addInFightTicks(false);
}
 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo