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

Reward script aint working! Help wanted

FakkaHe

New Member
Joined
Feb 2, 2008
Messages
110
Reaction score
0
Heya mates, somehow my reward script aint working.

I've added the everything in creaturescripts and also in login, i don't get any errors in console... Abit weird isn't?

XML:
<event type="advance" name="reward" event="script" value="reward45.lua"/>

Script

Lua:
local prizes = {
    [60000] = {level = 15, reward = {2160, 1}},
    [60001] = {level = 20, reward = {2160, 2}},
    [60002] = {level = 35, reward = {{2160, 4},
    [60003] = {level = 50, reward = {{7589, 50},
    [60004] = {level = 75, reward = {{2160, 5},
    [60005] = {level = 80, reward = {{7590, 50},
    [60006] = {level = 100, reward = {{2160, 6},
    [60006] = {level = 120, reward = {{2160, 8},
}
 
function onAdvance(cid, skill, oldlevel, newlevel)
    if(skill ~= SKILL__LEVEL)then return TRUE end
    for i,t in ipairs(prizes) do
        if not(getPlayerStorageValue(cid, i)) and t.level <= newlevel then
            if type(t.reward[1] ~= "table") then
                local add = doPlayerAddItem(cid, t.reward[1], t.reward[2])
                if add then
                    doPlayerSendTextMessage(cid, 19, "You have received ".t.reward[2]." ".getItemNameById(t.reward[2])." due to reaching level ".t.level.".")
                    setPlayerStorageValue(cid, i, true)
                end
            else    
                local bp = doCreateItemEx(1988, 1)
                for _,item in ipairs(t.reward) do
                    doAddContainerItem(bp, item[1], item[2])
                end
                local add = doPlayerAddItemEx(cid, bp)
                if add then
                    doPlayerSendTextMessage(cid, 19, "You have received backpack with items due to reaching level ".t.level.".")
                    setPlayerStorageValue(cid, i, true)
                end
            end
        end
    end
    return TRUE
end

Login.lua

Lua:
local config = {
	useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
	
local useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
local loss = getConfigValue('deathLostPercent')

	if(loss ~= nil) then
		doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
	end

	local lastLogin = getPlayerLastLoginSaved(cid)
	if(lastLogin > 0) then
	text = "Welcome!\n Visit our webpage for a complete information about the server.\n//Server Staff"
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
	else
		doPlayerSendOutfitWindow(cid)
	end

	if getPlayerStorageValue(cid, 11551) == 0 then
    setPlayerPromotionLevel(cid, 0)
	end
	
	if(not isPlayerGhost(cid)) then
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
	end
	
	registerCreatureEvent(cid, "advance")
	registerCreatureEvent(cid, "Aol")
	registerCreatureEvent(cid, "Mail")
	registerCreatureEvent(cid, "GuildMotd")
	registerCreatureEvent(cid, "Idle")
	registerCreatureEvent(cid, "SkullCheck")
	registerCreatureEvent(cid, "ReportBug")
	registerCreatureEvent(cid, "levelUp")
	registerCreatureEvent(cid, "onPrepareDeath")
	registerCreatureEvent(cid, "FirstItems")
	registerCreatureEvent(cid, "Arena")
	registerCreatureEvent(cid, "reward")
	registerCreatureEvent(cid, "mensaje")
	registerCreatureEvent(cid, "ArenaKill")
	registerCreatureEvent(cid, "demonOakLogout")
	registerCreatureEvent(cid, "demonOakDeath")
	registerCreatureEvent(cid, "tormentorportal")
	registerCreatureEvent(cid, "questLook")
	registerCreatureEvent(cid, "forever amulet")
    registerCreatureEvent(cid, "charge amulet")
	if(config.useFragHandler) then
		registerCreatureEvent(cid, "SkullCheck")
	end
	
    -- if he did not make full arena 1 he must start from zero
    if getPlayerStorageValue(cid, 42309) < 1 then
        for i = 42300, 42309 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    -- if he did not make full arena 2 he must start from zero
    if getPlayerStorageValue(cid, 42319) < 1 then
        for i = 42310, 42319 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    -- if he did not make full arena 3 he must start from zero
    if getPlayerStorageValue(cid, 42329) < 1 then
        for i = 42320, 42329 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    if getPlayerStorageValue(cid, 42355) == -1 then
    setPlayerStorageValue(cid, 42355, 0) -- did not arena level
    setPlayerStorageValue(cid, 42350, 0) -- time to kick 0
    setPlayerStorageValue(cid, 42352, 0) -- is not in arena
	end
	return true
end

Thanks in advance!
 
Last edited by a moderator:
Might not fix your problem, but while I am still reading the code, the first thing I noticed is this:

Lua:
local prizes = {
    [60000] = {level = 15, reward = {2160, 1}},
    [60001] = {level = 20, reward = {2160, 2}},
    [60002] = {level = 35, reward = {{2160, 4},
    [60003] = {level = 50, reward = {{7589, 50},
    [60004] = {level = 75, reward = {{2160, 5},
    [60005] = {level = 80, reward = {{7590, 50},
    [60006] = {level = 100, reward = {{2160, 6},
    [60006] = {level = 120, reward = {{2160, 8},
}

Look at the squiggly brackets after reward. The first two (60000, 60001) seem correct, but the rest have an extra '{' and missing '}'.
Also, you have a comma after your last thing; it should be removed.

Lua:
local prizes = {
    [60000] = {level = 15, reward = {2160, 1}},
    [60001] = {level = 20, reward = {2160, 2}},
    [60002] = {level = 35, reward = {2160, 4}},
    [60003] = {level = 50, reward = {7589, 50}},
    [60004] = {level = 75, reward = {2160, 5}},
    [60005] = {level = 80, reward = {7590, 50}},
    [60006] = {level = 100, reward = {2160, 6}},
    [60006] = {level = 120, reward = {2160, 8}}
}

- - - Updated - - -

Another error is in these lines:
Lua:
doPlayerSendTextMessage(cid, 19, "You have received ".t.reward[2]." ".getItemNameById(t.reward[2])." due to reaching level ".t.level.".")
Lua:
doPlayerSendTextMessage(cid, 19, "You have received backpack with items due to reaching level ".t.level.".")

There should be two periods to place a variable/function in a string, instead of one.
Like this:

Lua:
doPlayerSendTextMessage(cid, 19, "You have received "..t.reward[2].." "..getItemNameById(t.reward[2]).." due to reaching level "..t.level..".")
Lua:
doPlayerSendTextMessage(cid, 19, "You have received backpack with items due to reaching level "..t.level..".")
 
Last edited:
Might not fix your problem, but while I am still reading the code, the first thing I noticed is this:

Lua:
local prizes = {
    [60000] = {level = 15, reward = {2160, 1}},
    [60001] = {level = 20, reward = {2160, 2}},
    [60002] = {level = 35, reward = {{2160, 4},
    [60003] = {level = 50, reward = {{7589, 50},
    [60004] = {level = 75, reward = {{2160, 5},
    [60005] = {level = 80, reward = {{7590, 50},
    [60006] = {level = 100, reward = {{2160, 6},
    [60006] = {level = 120, reward = {{2160, 8},
}

Look at the squiggly brackets after reward. The first two (60000, 60001) seem correct, but the rest have an extra '{' and missing '}'.
Also, you have a comma after your last thing; it should be removed.

Lua:
local prizes = {
    [60000] = {level = 15, reward = {2160, 1}},
    [60001] = {level = 20, reward = {2160, 2}},
    [60002] = {level = 35, reward = {2160, 4}},
    [60003] = {level = 50, reward = {7589, 50}},
    [60004] = {level = 75, reward = {2160, 5}},
    [60005] = {level = 80, reward = {7590, 50}},
    [60006] = {level = 100, reward = {2160, 6}},
    [60006] = {level = 120, reward = {2160, 8}}
}

Ah! I never noticed that thanks!

Unfortunately that didn't solve my problem as you said! Got any other ideas?
 
Ah! I never noticed that thanks!

Unfortunately that didn't solve my problem as you said! Got any other ideas?

I've updated my post with something new.
But to be honest, I can't find why there wouldn't be any errors in the console.
Even a syntax error like I've mentioned in my post SHOULD be posted as an error in the console.
That leaves me wondering if you correctly named your file reward45.lua.
 
I've updated my post with something new.
But to be honest, I can't find why there wouldn't be any errors in the console.
Even a syntax error like I've mentioned in my post SHOULD be posted as an error in the console.
That leaves me wondering if you correctly named your file reward45.lua.

Hmm.. This one isn't working either

PHP:
function onAdvance(cid, skill, oldlevel, newlevel)
       
        if(getPlayerStorageValue(cid, 91663) ~= 1 and skill == SKILL__LEVEL and newlevel >= 300) then
                doPlayerAddItem(cid, 2157, 30)
                setPlayerStorageValue(cid, 91663, 1)
                doPlayerSendTextMessage(cid, 22, "You have received 30 Golden Nuggets because you reached level 300!!!")
                end
        return TRUE
end
 
Are you sure the file names are correct? Are you using 0.2 or 0.3? Have you tried making an else condition for the last script (above) to test?
 
Hmm.. This one isn't working either

PHP:
function onAdvance(cid, skill, oldlevel, newlevel)
       
        if(getPlayerStorageValue(cid, 91663) ~= 1 and skill == SKILL__LEVEL and newlevel >= 300) then
                doPlayerAddItem(cid, 2157, 30)
                setPlayerStorageValue(cid, 91663, 1)
                doPlayerSendTextMessage(cid, 22, "You have received 30 Golden Nuggets because you reached level 300!!!")
                end
        return TRUE
end

What's the error for this one?
I'm not positive but I believe the oldlevel and newlevel should be oldLevel, newLevel

try this
Lua:
function onAdvance(cid, skill, oldLevel, newLevel)
        if(newLevel >= 300) then
                if(getPlayerStorageValue(cid, 91663) ~= 1) then
                        doPlayerAddItem(cid, 2157, 30)
                        setPlayerStorageValue(cid, 91663, 1)
                        doPlayerSendTextMessage(cid, 22, "You have received 30 Golden Nuggets because you reached level 300!!!")
                end
        end
        return TRUE
end
 
Back
Top