Jump to content

[HELP] Account system.


JustPlayer123

Recommended Posts

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.]

Spoiler

4yZ5FyL.png

 

  • 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. :)

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...