hi all
resently i edited the login panel that stores data in mysql and i edited it to receive nick name from player and save it
but after register and login it can't get player saved nickname
here is my server side script
i think line 110 or 54 have issue
local db_host = "" --change this if your using MySQL off the server machine your using for the MTA server.
local db_username = "" --database username
local db_password = "" --datbase password
local db_table = ""
local db_port = ""
local connection = false
function connect()
connection = dbConnect("mysql","dbname="..db_table..";host="..db_host..";port="..db_port..";unix_socket=/var/run/mysqld/mysqld.sock",db_username,db_password)
if (connection) then
outputChatBox("connected")
return true
else
outputChatBox("notconnected")
setTimer(connect,5000,1)
end
end
addEventHandler("onResourceStart",resourceRoot,connect)
function singleQuery(str,...)
if (connection) then
local query = dbQuery(connection,str,...)
local result = dbPoll(query,-1)
if (type(result == "table")) then
return result[1]
else
return result
end
else
return false
end
end
function execute(str,...)
if (connection) then
local query = dbExec(connection,str,...)
return query
else
return false
end
end
----------------------------------------------------------------------------------------------------------------------
addEvent("onPlayerAttemptLogin",true)
addEventHandler("onPlayerAttemptLogin",root,
function(username,nickname,password)
if (singleQuery("SELECT * FROM accounts WHERE username=? LIMIT 1",string.lower(username))) then
local accData = singleQuery("SELECT * FROM accounts WHERE username=? AND nickname=? AND password=? LIMIT 1",string.lower(username),string.lower(nickname),sha256(password))
if (accData) then
outputChatBox("Welcome back "..getPlayerName(source),source,0,255,0)
setElementData(source,"accountID",accData.id)
setElementData(source,"accountUsername",accData.username)
setElementData(source,"accountNickname",accData.nickname)
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,accData.nickname)
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,nickname,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,nickname,password,email,serial,x,y,z,interior,dimension,skin,health) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)",string.lower(username),string.lower(nickname),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 = getElementData(palyer, "accountNickname")
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=?,armor=?,money=?,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)