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

LUA/SQL Level Reset

hodleo

Formerly cbrm -Crypto enthusiast, Retired scripter
Staff member
Global Moderator
Joined
Jan 6, 2009
Messages
6,598
Solutions
3
Reaction score
955
Location
Caribbean Sea
TFS 0.2.5

This script isn't working :(
Lua:
function onLogin(cid)

if getPlayerLevel(cid) < 10 then 

	dofile("./config.lua")
	env = assert(luasql.mysql()) 
	con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))                
	id = getPlayerGUID(cid)           
	assert(con:execute("UPDATE `players` (`player_id` ,`level` ,`experience`) VALUES ('" .. id .. "', '10', '9300');"))
	con:close()
	env:close()
	
end
	return TRUE
end

Debug print:
PHP:
[21/09/2009 12:15:21] Lua Script Error: [CreatureScript Interface] 
[21/09/2009 12:15:21] data/creaturescripts/scripts/level10.lua:onLogin

[21/09/2009 12:15:21] data/creaturescripts/scripts/level10.lua:9: LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`player_id` ,`level` ,`experience`) VALUES ('695', '10', '9300')' at line 1
[21/09/2009 12:15:21] stack traceback:
[21/09/2009 12:15:21] 	[C]: in function 'assert'
[21/09/2009 12:15:21] 	data/creaturescripts/scripts/level10.lua:9: in function <data/creaturescripts/scripts/level10.lua:1>

what is wrong in it?
 
Last edited:
can I make a onKill function? is the sql query executed and saved?
so when players comes back reset-ed
 
hm ok gesior then I need to set it : (my sorc sample)
lvl 10
exp 9300
all skills 10
hp 180
mp 35
cap 250
my script set:
lvl 10
exp 9300
hp/mp/cap same as start char hp/mp/cap (when player die server remove XX hp, when gain level server add XX hp [it use vocations config]).
When you add exp, player gain level, when gain level server add hp,mp,cap for player vocation. You don't have to calculate anything.
Version with skill reset (not tested):
PHP:
function onLogout(cid)
    if getPlayerLevel(cid) < 10 then
        doPlayerAddExp(cid, 9300 - getPlayerExperience(cid))
        for s = 0, 6 do
            doPlayerAddSkillTry(cid, s, -(getPlayerRequiredSkillTries(cid, s, getPlayerSkillLevel(cid, s))+getPlayerSkillTries(cid, s)-getPlayerRequiredSkillTries(cid, s, 10)))
        end
    end
    return TRUE
end
EDIT:
@up
SQL query isn't good idea, because player can relog/logout/login really fast (before script execute or after). SQL queries you can use to load/save data not used by server (like my sms shop or popular war system that use new tables/columns to save informations).
Function onLogin execute after login (load data from database), onLogout execute before logout [if you change level/skill here {lua code} it will be saved in database] (save data in database).
 
Last edited:
sorry, g but 0.2 ain't got getplayerexp nor I don't see a C++ post to add it to my sources
 
Back
Top