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

CreatureEvent [TFS 0.3.6, 0.4?] onAdvance reward

Zothion

Veteran OT User
Joined
Apr 28, 2014
Messages
1,092
Reaction score
394
add this into an onAdvance creature event (should be one in by default) inside the onAdvance(cid, ...) function
Code:
    local st = getPlayerStorageValue(cid, lvlForNext) 

    if st <= newlevel then
        if st == -100 then
            local tmp = prizes[getPlayerStorageValue(cid, rewardLvl)]
            if tmp then
                setPlayerStorageValue(cid, lvlForNext, tmp.level)
            end
        else
            local rewL = getPlayerStorageValue(cid, rewardLvl)
            local prize = prizes[rewL]
            local reward = prize.reward
            local nextLvl = prizes[rewL+1]
            local bp = doCreateItemEx(1988, 1)
            for i=1,#reward do
                doAddContainerItem(bp, reward[i][1], reward[i][2])
            end
            doPlayerAddItemEx(cid, bp)
            doPlayerSendTextMessage(cid, 19, "You have received backpack with items due to reaching level "..prize.level..".")
            setPlayerStorageValue(cid, rewardLvl, rewL+1)
            if nextLvl then
                setPlayerStorageValue(cid, lvlForNext, nextLvl.level)
            else
                setPlayerStorageValue(cid, lvlForNext, -100)
            end
        end

put this into 000-constant.lua (or any other global file in lib directory inside data dir)
Code:
prizes = {
    {level = 20, reward = {{2152, 50}}},
    {level = 35, reward = {{2160, 1}}},
    {level = 50, reward = {{2160, 2}}},
    {level = 80, reward = {{2160, 3}}},
    {level = 120, reward = {{2160, 4}}},
    {level = 160, reward = {{2160, 5}}},
    {level = 200, reward = {{2160, 10}}},
    {level = 250, reward = {{7958, 50}}},
}

rewardLvl = 60001
lvlForNext = 60002

and put this inside your onLogin lua function in login.lua
Code:
if getPlayerStorageValue(cid, 60001) == -1 then
setPlayerStorageValue(cid, 60001, 1)
end
if getPlayerStorageValue(cid, 60002) == -1 then
setPlayerStorageValue(cid, 60002, prizes[1].level)
end

to add new levels/rewards, just alter the prizes table inside 000-constant.lua, nothing more needed
same format, if you want several reward you can do like
Code:
{level = 20, reward = {{2152, 50}, {2152, 50}}},
etc

should work 100% fine on 0.3.6 (tested), didnt test on 0.4 so if anyone tries it out in 0.4 please tell me if it works correctly
 
A little mistake in "if st <= newlevel then", correct one: "if st <= newLevel then" (TFS 0.4).
 
Back
Top