i tested it in the end, and it did break the part where it is supposed to load the data on join/login, so it did not work at all..
here is the functions to load and save on join/quit:
function saveAccounts ()
local serial = getPlayerSerial ( source )
local x,y,z = getElementPosition( source )
local i = getElementInterior( source )
local d = getElementDimension( source )
local skin = getElementModel ( source )
local money = getPlayerMoney ( source )
local health = getElementHealth ( source )
local armor = getPedArmor ( source )
local wanted = getPlayerWantedLevel ( source )
local weaponid = getPedWeapon ( source )
local weaponclip = getPedAmmoInClip ( source )
local weaponammo = getPedTotalAmmo ( source )
local q = mysql_query(database,"SELECT * FROM `accounts` WHERE `serial` = '".. serial .."'")
if(mysql_num_rows(q) == 0) then
mysql_query( database, "INSERT INTO accounts ( `serial` , x, y, z, intterior, demension, skin, money, health, armor, wanted, weaponid, weaponclip, weaponammo ) VALUES ( '" .. serial .. "', " .. x .. ", " .. y .. ", " .. z .. "," .. i .. ", " .. d .. "," .. skin .. "," .. money .. ", ".. health ..", ".. armor ..", " .. wanted .. ", weaponid = "..weaponid ..", weaponclip = ".. weaponclip ..", weaponammo = ".. weaponammo .." )" )
else
res = mysql_query ( database, "UPDATE `accounts` SET x = ".. x ..", y = ".. y ..", z = ".. z ..", intterior = ".. i ..", demension = ".. d ..", skin = ".. skin ..", money = ".. money ..", health = ".. health ..", armor = ".. armor ..", wanted = ".. wanted ..", weaponid = ".. weaponid ..", weaponclip = ".. weaponclip ..", weaponammo = ".. weaponammo .." WHERE `serial` = '"..serial.."'")
end
end
function loadAccounts ()
local serial = getPlayerSerial ( source )
local result = mysql_query ( database ,"SELECT * FROM `accounts` WHERE `serial` = '"..serial.."'")
if result then
while true do
local row = mysql_fetch_assoc(result)
if not row then break end
setElementPosition ( source, row.x, row.y, row.z)
setElementInterior ( source, row.intterior )
setElementDimension ( source, row.demension )
setElementModel ( source, row.skin )
setPlayerMoney ( source, row.money )
setElementHealth ( source, row.health)
setPedArmor ( source, row.armor )
setPlayerWantedLevel ( source, row.wanted )
setTimer (giveWeapon, 2000, 1, source, row.weaponid, row.weaponammo, true)
break
end
end
end
addEventHandler ( "onPlayerJoin", getRootElement(), loadAccounts )
addEventHandler ( "onPlayerQuit", getRootElement(), saveAccounts )
that will work fine IF i remove the death save and such. here are those functions:
function loadSkinWep ()
local serial = getPlayerSerial ( source )
local result = mysql_query ( database ,"SELECT * FROM `tempdata` WHERE `serial` = '"..serial.."'")
if result then
while true do
local row = mysql_fetch_assoc(result)
if not row then break end
timer1 = setTimer (setElementModel, 2000, 1, source, row.skin)
timer2 = setTimer (giveWeapon, 2000, 1, source, row.weaponid, row.weaponammo, true)
mysql_query( database, "DELETE FROM `tempdata` WHERE `serial` = '"..serial.."'" )
break
end
end
end
function saveSkinWep ()
local serial = getPlayerSerial ( source )
local skin = getElementModel ( source )
local weaponid = getPedWeapon ( source )
local weaponclip = getPedAmmoInClip ( source )
local weaponammo = getPedTotalAmmo ( source )
mysql_query ( database, "UPDATE `accounts` SET skin = ".. skin ..", weaponid = ".. weaponid ..", weaponclip = ".. weaponclip ..", weaponammo = ".. weaponammo .." WHERE `serial` = '"..serial.."'")
end
function saveDeath ()
local serial = getPlayerSerial ( source )
local skin = getElementModel ( source )
local weaponid = getPedWeapon ( source )
local weaponammo = getPedTotalAmmo ( source )
local q = mysql_query(database,"SELECT * FROM `tempdata` WHERE `serial` = '".. serial .."'")
if(mysql_num_rows(q) == 0) then
mysql_query( database, "INSERT INTO tempdata ( `serial` , skin, weaponid, weaponammo ) VALUES ( '" .. serial .. "', " .. skin .. ", "..weaponid ..", ".. weaponammo .." )" )
end
end
addEventHandler ( "onPlayerSpawn", getRootElement(), loadSkinWep )
addEventHandler ( "onPlayerWasted", getRootElement(), saveDeath )
addEventHandler ( "onElementModelChange", getRootElement(), saveSkinWep )
with this attached, everything else works but not loading on join. i am probably missing something very simple but im not seeing it
EDIT: this error started happening when loading on death:
[2013-02-18 19:41:27] WARNING: datasaver1/datasaver.lua:24: Bad 'player' pointer @ 'getPlayerSerial'(1)
[2013-02-18 19:41:27] WARNING: datasaver1/datasaver.lua:26: Bad 'ped' pointer @ 'getPedWeapon'(1)
[2013-02-18 19:41:27] WARNING: datasaver1/datasaver.lua:27: Bad 'ped' pointer @ 'getPedAmmoInClip'(1)
[2013-02-18 19:41:27] WARNING: datasaver1/datasaver.lua:28: Bad 'ped' pointer @ 'getPedTotalAmmo'(1)
[2013-02-18 19:41:27] ERROR: datasaver1/datasaver.lua:30: attempt to concatenate local 'serial' (a boolean value)
this error actually makes no sense to me probably due to not being able to script correctly