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

PLAYER GET SKULL IF ATTACK WAR ENEMY

Mauzim

Member
Joined
Jan 3, 2011
Messages
568
Reaction score
9
IN OTX 2.9 8.70 I HAVE PROBLEM WHEN PLAYER IS IN WAR MAKE RED FIST AND ATTACK WAR ENEMY HE GET SKULL

MAYBE IS PROBLEM HERE
Code:
void Player::onTarget(Creature* target)
{
    Creature::onTarget(target);
    if(hasFlag(PlayerFlag_NotGainInFight))
        return;

    if(target == this)
    {
        addInFightTicks(false);
        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 && g_game.getWorldType() != WORLDTYPE_HARDCORE)
            {
                pzLocked = true;
                sendIcons();
            }

            if(!Combat::isInPvpZone(this, targetPlayer) && !isAlly(targetPlayer))
            {
                addAttacked(targetPlayer);
                if(targetPlayer->getSkull() == SKULL_NONE && getSkull() == SKULL_NONE)
                {
                    setSkull(SKULL_WHITE);
                    g_game.updateCreatureSkull(this);
                }

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

    addInFightTicks(false);
}
bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
{
    if(!Creature::onKilledCreature(target, entry))
        return false;

    if(hasFlag(PlayerFlag_NotGenerateLoot))
        target->setDropLoot(LOOT_DROP_NONE);

    Condition* condition = NULL;
    if(target->getMonster() && !target->isPlayerSummon() && !hasFlag(PlayerFlag_HasInfiniteStamina)
        && (condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_HUNTING,
        g_config.getNumber(ConfigManager::HUNTING_DURATION))))
        addCondition(condition);

    if(hasFlag(PlayerFlag_NotGainInFight) || getZone() != target->getZone())
        return true;

    Player* targetPlayer = target->getPlayer();
    if(!targetPlayer || Combat::isInPvpZone(this, targetPlayer)
        || isPartner(targetPlayer) || isAlly(targetPlayer))
        return true;

    War_t enemy;
    if(targetPlayer->getEnemy(this, enemy))
    {
        if(entry.isLast())
            IOGuild::getInstance()->updateWar(enemy);

        entry.setWar(enemy);
    }

    if(!entry.isJustify() || !hasCondition(CONDITION_INFIGHT))
        return true;

    std::vector<uint32_t>::iterator it = std::find(revengeList.begin(), revengeList.end(), targetPlayer->getGUID());
    if(!targetPlayer->hasAttacked(this) && target->getSkull() == SKULL_NONE && it == revengeList.end()
        && targetPlayer != this && (addUnjustifiedKill(targetPlayer, !enemy.war) || entry.isLast()))
        entry.setUnjustified();

    if(it != revengeList.end())
        revengeList.erase(it);

    if(entry.isLast())
        addInFightTicks(false, g_config.getNumber(ConfigManager::WHITE_SKULL_TIME));
    return true;
}
 
Last edited by a moderator:
Yes, have this bug in many servers, u need to relogin after accept the War System.
 
maybe this
PHP:
Skulls_t Player::getSkullType(const Creature* creature) const
{
    const Player* player = creature->getPlayer();
    if(player && player->getSkull() == SKULL_NONE)
    {
        if(g_game.getWorldType() != WORLDTYPE_OPEN)
            return SKULL_NONE;

        if(player->canRevenge(guid) && player->hasAttacked(this) && !player->isEnemy(this, false))
            return SKULL_YELLOW;

        if((isPartner(player) || isAlly(player)) &&
            g_game.getWorldType() != WORLDTYPE_OPTIONAL)
            return SKULL_GREEN;

        if(canRevenge(player->getGUID()))
            return SKULL_ORANGE;
    }

    return Creature::getSkullType(creature);
}
 
that nothing change ;d
i wanna know what this guy say
Tema cerrado, ya que la solución esta en cuanto kaiser la de en su prox release de OTX.
 
i guess got it but how add fightticks red blades if target is enemy??
Code:
void Player::onTarget(Creature* target)
{
    Creature::onTarget(target);
    if(hasFlag(PlayerFlag_NotGainInFight))
        return;

    if(target == this)
    {
        addInFightTicks(false);
        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) && !targetPlayer->isEnemy(this, false))
        {
            if(!pzLocked && g_game.getWorldType() != WORLDTYPE_HARDCORE)
            {
                pzLocked = true;
                sendIcons();
            }

            if(!Combat::isInPvpZone(this, targetPlayer) && !isAlly(targetPlayer))
            {
                addAttacked(targetPlayer);
                if(targetPlayer->getSkull() == SKULL_NONE && getSkull() == SKULL_NONE)
                {
                    setSkull(SKULL_WHITE);
                    g_game.updateCreatureSkull(this);
                }

                if(getSkull() == SKULL_NONE)
                    targetPlayer->sendCreatureSkull(this);
            }
        }
    }
    addInFightTicks(false);
}
 
Back
Top