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

C++ help to fix this my code for tfs 1.x please

darknelson

Member
Joined
Jun 19, 2011
Messages
190
Solutions
1
Reaction score
15
hi bro, please help me to fix this code for tfs 1.x please, i want to players with 30 level of diference cant attack

Lua:
if (target->getPlayer()) {
     if((player->getLevel()) > ((target->getLevel()) + (30)) || (Player->getLevel()) < ((target->getLevel()) - (30))){
        RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
    }
    }
 
Last edited:
Solution
Lua:
ReturnValue Combat::canTargetCreature(Player* player, Creature* target)
{
    if (player == target) {
        return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
    }


    if (!player->hasFlag(PlayerFlag_IgnoreProtectionZone)) {
        //pz-zone
        if (player->getZone() == ZONE_PROTECTION) {
            return RETURNVALUE_YOUMAYNOTATTACKAPERSONWHILEINPROTECTIONZONE;
        }


        if (target->getZone() == ZONE_PROTECTION) {
            return RETURNVALUE_YOUMAYNOTATTACKAPERSONINPROTECTIONZONE;
        }


        //nopvp-zone
        if (isPlayerCombat(target)) {
            if (player->getZone() == ZONE_NOPVP) {
                return RETURNVALUE_ACTIONNOTPERMITTEDINANOPVPZONE;
            }


            if...
C++:
if (target->getPlayer()) {
    if(player->getLevel() == (target->getLevel() + 30) || player->getLevel() == (target->getLevel() - 30)) {
        RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
    }
}
 
C++:
if (target->getPlayer()) {
    if(player->getLevel() > (target->getLevel() + 30) || player->getLevel() < (target->getLevel() - 30)) {
        RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
    }
}
 
Lua:
ReturnValue Combat::canTargetCreature(Player* player, Creature* target)
{
    if (player == target) {
        return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
    }


    if (!player->hasFlag(PlayerFlag_IgnoreProtectionZone)) {
        //pz-zone
        if (player->getZone() == ZONE_PROTECTION) {
            return RETURNVALUE_YOUMAYNOTATTACKAPERSONWHILEINPROTECTIONZONE;
        }


        if (target->getZone() == ZONE_PROTECTION) {
            return RETURNVALUE_YOUMAYNOTATTACKAPERSONINPROTECTIONZONE;
        }


        //nopvp-zone
        if (isPlayerCombat(target)) {
            if (player->getZone() == ZONE_NOPVP) {
                return RETURNVALUE_ACTIONNOTPERMITTEDINANOPVPZONE;
            }


            if (target->getZone() == ZONE_NOPVP) {
                return RETURNVALUE_YOUMAYNOTATTACKAPERSONINPROTECTIONZONE;
            }
        }
    }


    if (player->hasFlag(PlayerFlag_CannotUseCombat) || !target->isAttackable()) {
        if (target->getPlayer()) {
            return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
        } else {
            return RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE;
        }
    }


    if (target->getPlayer()) {
        if (isProtected(player, target->getPlayer())) {
            return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
        }


    }
    if (target->getPlayer()) {
    if(player->getLevel() > (target->getLevel() + 30) || player->getLevel() < (target->getLevel() - 30)) {
        RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
    }
}
    return Combat::canDoCombat(player, target);
}


i was thinking maybe the code must be added in this function,

Code:
ReturnValue Combat::canDoCombat(Creature* attacker, Creature* target)
{
    if (attacker) {
        if (const Player* targetPlayer = target->getPlayer()) {
            if (targetPlayer->hasFlag(PlayerFlag_CannotBeAttacked)) {
                return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
            }

            if (const Player* attackerPlayer = attacker->getPlayer()) {
                if (attackerPlayer->hasFlag(PlayerFlag_CannotAttackPlayer)) {
                    return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
                }

                if (isProtected(attackerPlayer, targetPlayer)) {
                    return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
                }

                //nopvp-zone
                const Tile* targetPlayerTile = targetPlayer->getTile();
                if (targetPlayerTile->hasFlag(TILESTATE_NOPVPZONE)) {
                    return RETURNVALUE_ACTIONNOTPERMITTEDINANOPVPZONE;
                } else if (attackerPlayer->getTile()->hasFlag(TILESTATE_NOPVPZONE) && !targetPlayerTile->hasFlag(TILESTATE_NOPVPZONE | TILESTATE_PROTECTIONZONE)) {
                    return RETURNVALUE_ACTIONNOTPERMITTEDINANOPVPZONE;
                }
            }

            if (attacker->isSummon()) {
                if (const Player* masterAttackerPlayer = attacker->getMaster()->getPlayer()) {
                    if (masterAttackerPlayer->hasFlag(PlayerFlag_CannotAttackPlayer)) {
                        return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
                    }

                    if (targetPlayer->getTile()->hasFlag(TILESTATE_NOPVPZONE)) {
                        return RETURNVALUE_ACTIONNOTPERMITTEDINANOPVPZONE;
                    }

                    if (isProtected(masterAttackerPlayer, targetPlayer)) {
                        return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
                    }
                }
            }
        } else if (target->getMonster()) {
            if (const Player* attackerPlayer = attacker->getPlayer()) {
                if (attackerPlayer->hasFlag(PlayerFlag_CannotAttackMonster)) {
                    return RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE;
                }

                if (target->isSummon() && target->getMaster()->getPlayer() && target->getZone() == ZONE_NOPVP) {
                    return RETURNVALUE_ACTIONNOTPERMITTEDINANOPVPZONE;
                }
            }
        }
        

        if (g_game.getWorldType() == WORLD_TYPE_NO_PVP) {
            if (attacker->getPlayer() || (attacker->isSummon() && attacker->getMaster()->getPlayer())) {
                if (target->getPlayer()) {
                    if (!isInPvpZone(attacker, target)) {
                        return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
                    }
                }

                if (target->isSummon() && target->getMaster()->getPlayer()) {
                    if (!isInPvpZone(attacker, target)) {
                        return RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE;
                    }
                }
            }
        }
    }
    return RETURNVALUE_NOERROR;
}


using tfs nostalrius 77 1.2
Post automatically merged:

C++:
if (target->getPlayer()) {
    if(player->getLevel() > (target->getLevel() + 30) || player->getLevel() < (target->getLevel() - 30)) {
        RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
    }
}
done check please bro
Post automatically merged:

FIXED!

Lua:
ReturnValue Combat::canDoCombat(Creature* attacker, Creature* target)
{
    if (attacker) {
        if (const Player* targetPlayer = target->getPlayer()) {
            if (targetPlayer->hasFlag(PlayerFlag_CannotBeAttacked)) {
                return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
            }

            if (const Player* attackerPlayer = attacker->getPlayer()) {
                if (attackerPlayer->hasFlag(PlayerFlag_CannotAttackPlayer)) {
                    return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
                }

                if (isProtected(attackerPlayer, targetPlayer)) {
                    return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
                }
                if((attackerPlayer->getLevel()) > ((targetPlayer->getLevel()) + (40)) || (attackerPlayer->getLevel()) < ((targetPlayer->getLevel()) - (40))) {
                return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
               }
 
Last edited:
Solution
Back
Top