• 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+ REVScrypt lowlevellock

Laloomega

Mega-War ❤
Joined
Feb 28, 2011
Messages
101
Solutions
3
Reaction score
54
Is there a way to level lock characters with a revscript on tfs 1.4? back then on tfs 0.4 we used to use
Lua:
function onLogin(cid)

    if getPlayerLevel(cid) < 130 then
    doPlayerAddExperience(cid, (getExperienceForLevel(130) - getPlayerExperience(cid)))
end
return TRUE
end

but now i'm kinda lost any help otland?
 
Solution
Just add the function

Luascript.cpp

Paste here
C++:
registerMethod("Game", "getExperienceForLevel", LuaScriptInterface::luaGameGetExperienceForLevel);

Paste here
C++:
int LuaScriptInterface::luaGameGetExperienceForLevel(lua_State* L)
{
    // Game.getExperienceForLevel(level)
    const uint32_t level = getNumber<uint32_t>(L, 1);
    if (level == 0) {
        lua_pushnumber(L, 0);
    } else {
        lua_pushnumber(L, Player::getExpForLevel(level));
    }
    return 1;
}

Luascript.h

Paste here
C++:
static int luaGameGetExperienceForLevel(lua_State* L);
Lua:
function onLogin(player)
    local targetLevel = 130
    if player:getLevel() < targetLevel then
        player:addExperience(Game.getExperienceForLevel(targetLevel) - player:getExperience())
    end
    return true
end

If you want to send to player the experience msg use this instead
Lua:
player:addExperience(Game.getExperienceForLevel(targetLevel) - player:getExperience(), true)
 
Lua:
local newLevel = CreatureEvent("Level")
function newLevel.onLogin(player)
    local targetLevel = 130
    if player:getLevel() < targetLevel then
        player:addExperience(Game.getExperienceForLevel(targetLevel) - player:getExperience())
    end
    return true
end
newLevel:register()

Previous script its also for TFS 1.x, its just not revscript
 
Lua:
Lua Script Error: [Scripts Interface]
C:\Users\eduar\OneDrive\Desktop\new server\otserv\data\scripts\creaturescripts\customs\levelock.lua:callback
...otserv\data\scripts\creaturescripts\customs\levelock.lua:5: attempt to call field 'getExperienceForLevel' (a nil value)
stack traceback:
        [C]: in function 'getExperienceForLevel'
        ...otserv\data\scripts\creaturescripts\customs\levelock.lua:5: in function <...otserv\data\scripts\creaturescripts\customs\levelock.lua:2>
 
Just add the function

Luascript.cpp

Paste here
C++:
registerMethod("Game", "getExperienceForLevel", LuaScriptInterface::luaGameGetExperienceForLevel);

Paste here
C++:
int LuaScriptInterface::luaGameGetExperienceForLevel(lua_State* L)
{
    // Game.getExperienceForLevel(level)
    const uint32_t level = getNumber<uint32_t>(L, 1);
    if (level == 0) {
        lua_pushnumber(L, 0);
    } else {
        lua_pushnumber(L, Player::getExpForLevel(level));
    }
    return 1;
}

Luascript.h

Paste here
C++:
static int luaGameGetExperienceForLevel(lua_State* L);
 
Solution
Back
Top