Hi!
I'm a beginner, so I don't really know what goes wrong in this scirpt, if someone can help me out here I would be very happy.
So, as I said I'm a beginner and I tried to get an account system, I think I connected to the MySQL successfully.
But here is the Problem!
[Open the Spoiler to see the picture.]
I used Debugscript to know what is the problem .
This was the original row.
execute("UPDATE accounts SET x=?,y=?,z=?,interior=?,dimension=,health=?,armor=?,money=?,rotation=?,team=?,skin=?,weapons=? WHERE id=?",x,y,z,int,dim,health,armor,money,rotation,team,skin,weaponsStr,id)
I tought the question mark was the problem, so I changed the money to '0' and I changed the life and the armor to '100' as well, by the way I'll insert here the edited row as well, so you can see what i did.
execute("UPDATE accounts SET x=?,y=?,z=?,interior=?,dimension=?,health=100,armor=100,money=0,rotation=?,team=?,skin=?,weapons=? WHERE id=?",x,y,z,int,dim,health,armor,money,rotation,team,skin,weaponsStr,id)
And here is the whole script, so you see more details.
addEvent("onPlayerAttemptLogin",true)
addEventHandler("onPlayerAttemptLogin",root,
function(username,password)
if (singleQuery("SELECT * FROM accounts WHERE username=? LIMIT 1",string.lower(username))) then
local accData = singleQuery("SELECT * FROM accounts WHERE username=? AND password=? LIMIT 1",string.lower(username),sha256(password))
if (accData) then
outputChatBox("Welcome back "..getPlayerName(source),source,0,255,0)
setElementData(source,"accountID",accData.id)
setElementData(source,"accountUsername",accData.username)
fadeCamera(source,false,1.0,0,0,0)
setTimer(fadeCamera,2000,1,source,true,1.0,0,0,0)
setCameraTarget(source,source)
showChat(source,true)
showPlayerHudComponent(source,"radar",true)
showPlayerHudComponent(source,"area_name",true)
spawnPlayer(source,accData.x,accData.y,accData.z+1,accData.rotation,accData.skin,accData.interior,accData.dimension,accData.team)
local weapons = fromJSON(accData.weapons)
if (weapons) then
for k,v in pairs(weapons) do
giveWeapon(source,tonumber(k),tonumber(v))
end
end
if (accData.health == 0) then
killPed(source)
else
setElementHealth(source,tonumber(accData.health))
end
setPedArmor(source,tonumber(accData.armor))
setPlayerMoney(source,tonumber(accData.money))
setElementData(source,"isGuestAccount",false)
triggerClientEvent(source,"closeLoginWindow",source)
triggerEvent("onAccountPlayerLogin",source,accData.id,accData.username)
log(source) --store the login data.
else
outputChatBox("Your username and/or password is incorrect!",source,255,0,0)
end
else
outputChatBox("This username doesn't exist!",source,255,0,0)
end
end)
addEvent("onPlayerAttemptRegister",true)
addEventHandler("onPlayerAttemptRegister",root,
function(username,password1,password2,email)
if (singleQuery("SELECT username FROM accounts WHERE username=? LIMIT 1",string.lower(username))) then
outputChatBox("This username is taken! please choose another!",source,255,0,0)
else
local x,y,z = 1450.32421875, -2287.287109375, 13.546875
if (execute("INSERT INTO accounts (username,password,email,serial,x,y,z,interior,dimension,skin,health) VALUES (?,?,?,?,?,?,?,?,?,?,?)",string.lower(username),sha256(password1),email,getPlayerSerial(source),x,y,z+1,0,0,0,100)) then
outputChatBox("Your account was registered successfully!",source,0,255,0)
triggerClientEvent(source,"switchToLogin",source)
end
end
end)
function log(player)
if (player) then
local serial = getPlayerSerial(player)
local ip = getPlayerIP(player)
local name = getPlayerName(player)
local username = getElementData(player,"accountUsername")
local timestamp = getRealTime().timestamp
execute("INSERT INTO logs (username,playerName,serial,ip,timestamp) VALUES (?,?,?,?,?)",username,name,serial,ip,timestamp)
end
end
function prepair()
setElementData(source,"isGuestAccount",true)
outputChatBox("Welcome to the server.",source,0,255,0)
end
addEventHandler("onPlayerJoin",root,prepair)
function saveData()
if not (getElementData(source,"isGuestAccount") == true) then
x,y,z = getElementPosition(source)
int,dim = getElementInterior(source),getElementDimension(source)
health,armor = getElementHealth(source),getPedArmor(source)
money = getPlayerMoney(source)
rotation = getElementRotation(source)
team = getTeamName(getPlayerTeam(soure))
skin = getElementModel(source)
weapons = {}
for i=0,12 do
local wep = getPedWeapon(source,i)
if (wep > 0) then
local ammo = getPedTotalAmmo(source,i)
if (ammo > 0) then
table.insert(weapons,{wep,ammo})
end
end
end
weaponsStr = toJSON(weapons)
id = getElementData(source,"accountID")
execute("UPDATE accounts SET x=?,y=?,z=?,interior=?,dimension=?,health=100,armor=100,money=0,rotation=?,team=?,skin=?,weapons=? WHERE id=?",x,y,z,int,dim,health,armor,money,rotation,team,skin,weaponsStr,id)
else
return false
end
end
addEventHandler("onPlayerQuit",root,saveData)
addEventHandler("onPlayerWasted",root,saveData)
Thank you If you read this, I hope I didn't make this too long.