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

[Request] Reward on advance

Kavvson

Gdy boli cie glowa wez
Joined
Jun 25, 2008
Messages
1,177
Reaction score
72
Location
Poland
[Request] Reward on advance

I need a to give a player reward after getting lvl's..

50 lvl - some cc
100 lvl - some cc
etc..
 
Create reward45.lua file in creaturescripts/scripts

creaturescripts/scripts/reward45.lua
Code:
  function onAdvance(cid, skill, oldlevel, newlevel)
       
        if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 45) then
                doPlayerAddItem(cid, 2160, 5)
                setPlayerStorageValue(cid, 99963, 1)
                doPlayerSendTextMessage(cid, 22, "You have received 5 crystal coin because you reached level 45")
                end
        return TRUE
end

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

in login.lua under registerCreatureEvent(cid, "PlayerKill") add

Code:
                  registerCreatureEvent(cid, "reward")

Now create reward100.lua

creaturescripts/scripts/reward100.lua
Code:
  function onAdvance(cid, skill, oldlevel, newlevel)
       
        if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 100) then
                doPlayerAddItem(cid, 2160, 20)
                setPlayerStorageValue(cid, 99963, 1)
                doPlayerSendTextMessage(cid, 22, "You have received 20 crystal coin because you reached level 100")
                end
        return TRUE
end

creaturescript/creaturescript.xml
Code:
	<event type="advance" name="reward" event="script" value="reward100.lua"/>

in login.lua under registerCreatureEvent(cid, "PlayerKill") add

Code:
                  registerCreatureEvent(cid, "reward")


First one will give you 5cc on 45lvl, second will give you 20cc on 100lvl.
 
Hey, it doesn't work:
Code:
Error: [CreatureEvent::configureEvent] no valid type for creature event.advance
Warning: [BaseEvents::loadFromXml] Can not configure event

I use TFS 0.2.7 Mystic Spirit. :confused:
 
Ok, I have 0.3.5 now, and it reports:
Code:
[21/03/2010 19:48:58] [Error - CreatureScript Interface] 
[21/03/2010 19:48:58] data/creaturescripts/scripts/login.lua
[21/03/2010 19:48:58] Description: 
[21/03/2010 19:48:59] (luaRegisterCreatureEvent) Creature not found

EDIT
Oh, I added line in login.lua on top, when i added it under
Code:
function 

onLogin(cid)
It works :D

Edit
Oh, I found a mistake - you wrote the same storages in these sripts :D
 
Last edited:
I have a problem:
When I add more rewards(more then one) works only the firstone. Can anybody help me ?:huh:

You need to make diferent files, like reward1.lua, reward2.lua....and on creaturescript.xml you need to register them all
Code:
<event type="advance" name="reward" event="script" value="reward1.lua"/>

and
Code:
<event type="advance" name="reward" event="script" value="reward1.lua"/>

and
Code:
..
You got it?
 
Then you for sure did something wrong.
Try again, do this:
creaturescript.xml
Code:
	<event type="advance" name="reward" event="script" value="reward1.lua"/>
	<event type="advance" name="reward" event="script" value="reward2.lua"/>

/script/reward1.lua
Code:
  function onAdvance(cid, skill, oldlevel, newlevel)
       
        if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 45) then
                doPlayerAddItem(cid, 2160, 5)
                setPlayerStorageValue(cid, 99963, 1)
                doPlayerSendTextMessage(cid, 22, "You have received 5 crystal coin because you reached level 45")
                end
        return TRUE
end

/script/reward2.lua
Code:
  function onAdvance(cid, skill, oldlevel, newlevel)
       
        if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 100) then
                doPlayerAddItem(cid, 2160, 20)
                setPlayerStorageValue(cid, 99963, 1)
                doPlayerSendTextMessage(cid, 22, "You have received 20 crystal coin because you reached level 100")
                end
        return TRUE
end
 
Ok, I know what's the way. The problem is in login.lua
Code:
registerCreatureEvent(cid, "reward")
When you add this to login.lua, only one script can run on it. To have more scripts add:
Code:
registerCreatureEvent(cid, "reward2")
if more
Code:
registerCreatureEvent(cid, "reward3")
etc.
In creaturescript.xml
Code:
<event type="advance" name="reward1" event="script" value="reward45.lua"/>
<event type="advance" name="reward2" event="script" value="reward70.lua"/>
<event type="advance" name="reward3" event="script" value="reward35.lua"/>

And now all 3 scripts are working :D

EDIT
And Storage values should be different :p

Correct ur first post :)
 
I tried to use other rewards events, but they didnt work too because there was
registerCreatureEvent(cid, "Advance")
so registerCreatureEvent(cid, "Advance2")
didnt work :/

Ok, thanks and sorry for so many posts :(
 
Back
Top