• 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 1.X+ tfs 1.3 premium wielded any weapon

Unline World

Member
Joined
Jul 18, 2019
Messages
27
Solutions
1
Reaction score
10
I'm trying to add a special ability to premium accounts that can use an item without having the minimum level to use, but need help everything i have tried seems to change nothing


here is the part of the code where the is check level
C++:
    uint32_t EquipItem(MoveEvent* moveEvent, Player* player, Item* item, slots_t slot, bool isCheck)
    {
        if (player->isItemAbilityEnabled(slot)) {
            return 1;
        }

        if (!player->hasFlag(PlayerFlag_IgnoreWeaponCheck) && moveEvent->getWieldInfo() != 0) {
            if (player->getLevel() < moveEvent->getReqLevel() || player->getMagicLevel() < moveEvent->getReqMagLv()) {
                return 0;
            }

            if (moveEvent->getReqLevel() > !player->isPremium()) {
                return 0;
            }

            const VocEquipMap& vocEquipMap = moveEvent->getVocEquipMap();
            if (!vocEquipMap.empty() && vocEquipMap.find(player->getVocationId()) == vocEquipMap.end()) {
                return 0;
            }
        }
 
Solution
If you want to skip checking mlvl also try changing this
C++:
if (player->getLevel() < moveEvent->getReqLevel() || player->getMagicLevel() < moveEvent->getReqMagLv()) {
    return 0;
}
to this
C++:
if ((player->getLevel() < moveEvent->getReqLevel() || player->getMagicLevel() < moveEvent->getReqMagLv()) && !player->isPremium()) {
    return 0;
}
However, if you still want to check if player have enough mlvl replace with this
C++:
if (player->getLevel() < moveEvent->getReqLevel() && !player->isPremium()) {
    return 0;
}

if (player->getMagicLevel() < moveEvent->getReqMagLv()) {
    return 0;
}

EDIT:

You have very weird conditional inside your code:
C++:
if (moveEvent->getReqLevel() > !player->isPremium()) {
                return 0...
If you want to skip checking mlvl also try changing this
C++:
if (player->getLevel() < moveEvent->getReqLevel() || player->getMagicLevel() < moveEvent->getReqMagLv()) {
    return 0;
}
to this
C++:
if ((player->getLevel() < moveEvent->getReqLevel() || player->getMagicLevel() < moveEvent->getReqMagLv()) && !player->isPremium()) {
    return 0;
}
However, if you still want to check if player have enough mlvl replace with this
C++:
if (player->getLevel() < moveEvent->getReqLevel() && !player->isPremium()) {
    return 0;
}

if (player->getMagicLevel() < moveEvent->getReqMagLv()) {
    return 0;
}

EDIT:

You have very weird conditional inside your code:
C++:
if (moveEvent->getReqLevel() > !player->isPremium()) {
                return 0;
            }
Change it back to
C++:
if (moveEvent->isPremium() && !player->isPremium()) {
            return 0;
        }
I assume that was one of your unsuccessful attempts, it can't work because you are checking here if Integer (numerical) is larger than Boolean (true/false)
 
Last edited:
Solution

Similar threads

V
  • Question Question
Replies
3
Views
186
Back
Top