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

Lock Level

vegaseek

Member
Joined
Dec 11, 2010
Messages
146
Reaction score
8
Hi! I need the following script into TFS 0.4: If a player logs in Levels lower than 45 will automatically set it exp / hp / mana / cap on the 45th level
 
then..
go to data/creaturescripts/creaturescripts.xml
and add this line
Code:
	<event type="login" name="Lowlevellock" event="script" value="lowlevellock.lua"/>
then go to
data/creaturescripts/scripts/
and make a new .lua called lowlevellock
and paste this inside
Code:
function onLogin(cid)

	if getPlayerLevel(cid) < 45 then
	doPlayerAddExperience(cid, (getExperienceForLevel(45) - getPlayerExperience(cid)))
end
return TRUE
end
 
#i'm back.

I still using tfs-0.3.6 at moment, but i think this will work in 0.2.9 or 0.4 who knows?! :rolleyes:

XML:
<event type="login" name="exp" event="script" value="exp.lua"/>

Lua:
function onLogin(cid)
	if (getPlayerLevel(cid) <= 45) then
	doPlayerAddExperience(cid, (getExperienceForLevel(45) - getPlayerExperience(cid)))
	doSendMagicEffect(getThingPos(cid),29)
	doCreatureSay(cid,"You gained 45 levels for play this server!", TALKTYPE_ORANGE_1)
end
return TRUE
end


YOU WILL NEED TO REGISTER IN THE LOGIN.LUA~

just rep+ ;)
 
If I can remember right then you cannot use different files of the same event type on 0.2+, as it seems like there is no buffer added which iterates through all the different events.
but you could try it this way instead (not sure if it works)

add this into login.lua (on top)
Lua:
dofile(getDataDir() .. "creaturescripts/scripts/exp.lua")
that should fix your problem.



kind regards, Evil Hero.
 
If I can remember right then you cannot use different files of the same event type on 0.2+, as it seems like there is no buffer added which iterates through all the different events.
but you could try it this way instead (not sure if it works)

add this into login.lua (on top)
Lua:
dofile(getDataDir() .. "creaturescripts/scripts/exp.lua")
that should fix your problem.



kind regards, Evil Hero.
No, multiple login events are fine.
[cpp]uint32_t CreatureEvents::playerLogin(Player* player)
{
//fire global event if is registered
for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it)
{
if(it->second->getEventType() == CREATURE_EVENT_LOGIN)
{
if(!it->second->executeOnLogin(player))
return 0;
}
}
return 1;
}[/cpp]
Only kill events had this issue:
[cpp]void Creature::eek:nKilledCreature(Creature* target, bool lastHit/* = true*/)
{
if(getMaster())
getMaster()->onKilledCreature(target);

//scripting event - onKill
CreatureEvent* eventKill = getCreatureEvent(CREATURE_EVENT_KILL);
if(eventKill)
eventKill->executeOnKill(this, target);
}[/cpp]
On topic, 0.2 doesn't have the functions getExperienceForLevel and getPlayerExperience
 
Last edited:
No, multiple login events are fine.
[cpp]uint32_t CreatureEvents::playerLogin(Player* player)
{
//fire global event if is registered
for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it)
{
if(it->second->getEventType() == CREATURE_EVENT_LOGIN)
{
if(!it->second->executeOnLogin(player))
return 0;
}
}
return 1;
}[/cpp]
Only kill events had this issue:
[cpp]void Creature::eek:nKilledCreature(Creature* target, bool lastHit/* = true*/)
{
if(getMaster())
getMaster()->onKilledCreature(target);

//scripting event - onKill
CreatureEvent* eventKill = getCreatureEvent(CREATURE_EVENT_KILL);
if(eventKill)
eventKill->executeOnKill(this, target);
}[/cpp]
On topic, 0.2 doesn't have the functions getExperienceForLevel and getPlayerExperience

ah yea right, good that you reminded me, thought it was for all event types :p
 
Back
Top