• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 0.X Yellow skull fight back

potinho

Advanced OT User
Joined
Oct 11, 2009
Messages
1,403
Solutions
17
Reaction score
151
Location
Brazil
Hello guys,

Can u point me what is wrong in my function? When a player get pk in another, if player fight back he is getting yellow skull (player who has been attacked by pk), and must dont. I've already applied this fix:


It was working ok at some point, but bug is back. My actual code:

C++:
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(!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);
}

In config.lua i have
Lua:
allowFightback = false
 
Checking have problem, let me know give print

C++:
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(!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);
}
 
Last edited:
You should change it

C++:
else
        {
            if(!pzLocked)
            {
                pzLocked = true;
                sendIcons();
            }

to

        else if(!targetPlayer->hasAttacked(this))
        {
            if(!pzLocked)
            {
                pzLocked = true;
                sendIcons();
            }
 
Back
Top