Jump to content

الرجاء حل هذه المشكلة


Recommended Posts

كل ما اضغط create account يقلي في مشكلة في سطر 150 وانا مش قادر افهم ايه هي المشكلة دي
المشكلة في سطر 150

https://imgur.com/a/Wyp4Mzv

-- Positions for the matrix view for the login screen
local matrixViewPositions = {
	{2060.693359375, 1323.3287353516, 65.554336547852, 2154.0563964844, 1301.9788818359, 36.787712097168},
	{-488.73297119141, 2129.7478027344, 131.07089233398, -577.43792724609, 2095.4423828125, 100.17473602295},
	{355.38235473633, -1999.6640625, 34.214122772217, 401.36798095703, -2077.3337402344, -8.8294067382813},
	{2373.4975585938, 69.472595214844, 68.322166442871, 2420.0559082031, -10.329551696777, 30.060695648193},
	{2055.7841796875, 1197.9633789063, 25.738883972168, 2141.7668457031, 1147.1596679688, 20.643169403076},
	{2321.8068847656, -1100.53125, 76.947044372559, 2365.5268554688, -1017.3639526367, 42.716026306152},
	{-807.52880859375, 2699.8017578125, 75.263061523438, -853.92779541016, 2777.5541992188, 32.816757202148},
	{196.63110351563, 2660.5759277344, 53.300601959229, 262.5549621582, 2594.3989257813, 17.598323822021},
	{-458.94390869141, -164.11698913574, 123.5959777832, -548.6953125, -195.21823120117, 92.332641601563},
	{-1070.3149414063, -1610.5084228516, 94.326530456543, -1135.0595703125, -1682.0073242188, 67.944076538086},
	{-632.33306884766, -1473.3518066406, 44.557136535645, -545.33532714844, -1492.6140136719, -0.833984375},
	{270.52749633789, -1205.0640869141, 110.60611724854, 321.99029541016, -1128.5759277344, 71.861503601074},
	{1156.4423828125, -1441.9432373047, 38.343357086182, 1086.1207275391, -1504.4560546875, 4.4757308959961},
	{-1267.3508300781, 1106.96484375, 102.32939910889, -1311.2535400391, 1019.9342041016, 80.008575439453},
	{-2662.2238769531, 2242.8115234375, 89.52938079834, -2584.8740234375, 2297.583984375, 57.639293670654},
}

local antisaveTimers = {}
local loggingIn = {}

-- Create teams and set time
addEventHandler ( "onResourceStart", resourceRoot,
	function ()
		setGameType( "CSG V"..getCSGServerVersion() )
		setOcclusionsEnabled( false )
		
		createTeam("Staff",255,255,255)
		local query = exports.DENmysql:query("SELECT * FROM teams ORDER BY list ASC")
		for k,v in ipairs(query) do
			createTeam(v["name"],v["cR"],v["cG"],v["cB"])
		end

		local realtime = getRealTime()
		setTime( realtime.hour, realtime.minute )
		setMinuteDuration( 60000 )
		setServerPassword("") --set the password to nothing if any password is set.
	end
)

addEventHandler("onResourceStop",resourceRoot,
function()
	setServerPassword(math.random(1239871)) --set a password so that no one can connect back on while the kicking process continues.
	for k,v in ipairs(getElementsByType("player")) do
		kickPlayer(v,"Core","Core Stopping / Restarting...")
	end
end)

-- Check if there is not already a player ingame with the same serial
addEventHandler( "onPlayerConnect", root,
function ( playerNick, playerIP, playerUsername, playerSerial, playerVersionNumber )
	for k, thePlayer in pairs ( getElementsByType ( "player" ) ) do
		if ( getPlayerSerial( thePlayer ) == playerSerial ) then
			cancelEvent( true, "There is already a player online with this serial!" );
			return
		end
	end
end
)

-- When the player joins spawn him ingame
addEventHandler( "onPlayerJoin", root,
function ()
	if ( spawnPlayer( source, 0, 0, 0 ) ) then
		setCameraTarget ( source )
		fadeCamera( source, true, 1.0, 0, 0, 0 )

		startMatrix(source)

		showPlayerHudComponent ( source, "radar", false )
		showPlayerHudComponent ( source, "area_name", false )
		setElementDimension ( source, 1234 )
		showChat( source, false )
	end
end
)

local refreshTimers = {}

function startMatrix(player)
	if (isElement(player)) then
		if (exports.server:isPlayerLoggedIn(player) == false) then
			fadeCamera(player, false,1.0,0,0,0)
			setTimer(fadeCamera,1000,1,player, true)
			local x, y, z, lx, ly, lz = unpack( matrixViewPositions[ math.random ( #matrixViewPositions ) ] )
			setTimer(setCameraMatrix,1000,1,player, x, y, z, lx, ly, lz )
			
			refreshTimers[player] = setTimer(startMatrix,5000,1, player)
		else
			if (isTimer(refreshTimers[player])) then
				killTimer(refreshTimers[player])
			end
			
			return false --no more updating.
		end
	else
		return false
	end
end

-- Kick the player when he has a too low resolution
--[[addEvent( "doKickPlayer", true )
addEventHandler( "doKickPlayer", root,
	function ()
		kickPlayer( source, "Connection refused due a too low screen resolution" )
	end
)]]--

-- When the player spawns check if we show the login screen or draw a ban window
addEvent( "doSpawnPlayer", true )
addEventHandler( "doSpawnPlayer", root,
	function ()
		local time = getRealTime()
		local banData = exports.DENmysql:query( "SELECT banstamp,bannedby,reason,serial FROM bans WHERE serial=? LIMIT 1", getPlayerSerial( source ) )
		if banData and banData[1] then
			if ( time.timestamp > tonumber( banData[1].banstamp ) ) and not ( tonumber( banData[1].banstamp ) == 0 ) then
				exports.DENmysql:exec( "DELETE FROM bans WHERE serial = ?", getPlayerSerial( source ) )
				triggerClientEvent( source, "setLoginWindowVisable", source )
			else
				setElementData( source, "Occupation", "Banned" )
				triggerClientEvent( source, "drawClientBanScreen", source, banData[1].serial, banData[1].reason, banData[1].banstamp, banData.bannedby )
				toggleAllControls(source,false)
			end
		else
			triggerClientEvent( source, "setLoginWindowVisable", source )
		end
	end
)

-- Timestap convert
function timestampConvert ( timeStamp )
	local time = getRealTime(timeStamp)

	local year = time.year + 1900
	local month = time.month + 1
	local day = time.monthday
	local hour = time.hour
	local minute = time.minute

	return "" .. hour ..":" .. minute .." - " .. month .."/" .. day .."/" .. year ..""
end

-- When the player creates a new account
addEvent( "doAccountRegister", true )
addEventHandler( "doAccountRegister", root,
function ( username, password1, password2, email, genderMale, genderFemale )
	if ( exports.DENmysql:querySingle( "SELECT username FROM accounts WHERE username=? LIMIT 1", string.lower( username ) ) ) then
		triggerClientEvent( source, "setWarningLabelText", source, "This username is already taken!", "registerWindow", 225, 0, 0 )
	elseif ( #exports.DENmysql:query( "SELECT * FROM accounts WHERE serial = ?", getPlayerSerial( source ) ) >= 2 ) then
		triggerClientEvent( source, "setWarningLabelText", source, "You can only register 2 accounts for each serial!", "registerWindow", 225, 0, 0 )
	else
		if ( genderFemale ) then theGender = 93 else theGender = 0 end
		if ( exports.DENmysql:exec( "INSERT INTO accounts SET username=?, password=?, email=?, serial=?, skin=?", string.lower( username ), sha512( password1 ), email, getPlayerSerial( source ), theGender ) ) then
			local userData = exports.DENmysql:querySingle( "SELECT * FROM accounts WHERE username=? AND password=? LIMIT 1", string.lower( username ), sha512( password1 ) )
			exports.DENmysql:exec("INSERT INTO weapons SET userid=?", tonumber( userData.id ) )
			exports.DENmysql:exec("INSERT INTO playerstats SET userid=?", tonumber( userData.id ) )
			triggerClientEvent( source, "setPopupWindowVisable", source )
		end
	end
end
)

-- When the player password changed
function onPasswordRequestCallback ()
	-- callBack functie after password is changed nothing important though
end

-- Password reset function
addEvent( "doPlayerPasswordReset", true )
addEventHandler( "doPlayerPasswordReset", root,
	function ( email, username, newPassword )
		local userData = exports.DENmysql:querySingle( "SELECT email FROM accounts WHERE username = ? LIMIT 1", string.lower(username) )
		if ( userData ) then
			if ( userData.email == "" ) or ( userData.email == " " ) then
				triggerClientEvent( source, "setWarningLabelText", source, "No email found with this account!", "passwordWindow", 225, 0, 0 )
			elseif not ( string.match(tostring(userData.email), "^.+@.+%.%a%a%a*%.*%a*%a*%a*") )then
				triggerClientEvent( source, "setWarningLabelText", source, "You didn't enter a vaild email adress!", "passwordWindow", 225, 0, 0 )
			elseif not ( string.lower(userData.email) == string.lower(email) ) then
				triggerClientEvent( source, "setWarningLabelText", source, "The email with this account doesn't match!", "passwordWindow", 225, 0, 0 )
			else
				if ( exports.DENmysql:exec( "UPDATE accounts SET password=? WHERE username=? AND email=?", sha512(newPassword), string.lower(username), email ) ) then
					callRemote( "http://csgmta.net/mail/password.php", onPasswordRequestCallback, username, email, newPassword )
					exports.DENdxmsg:createNewDxMessage(source, "Your password is changed and sent to your email!", 0, 225, 0)
					triggerClientEvent( source, "setWarningLabelText", source, "A new password has been sent!", "passwordWindow", 225, 0, 0 )
					triggerClientEvent ( source, "setLoginWindowVisable", source )
				end
			end
		else
			triggerClientEvent( source, "setWarningLabelText", source, "No account found with this name!", "passwordWindow", 225, 0, 0 )
		end
	end
)

-- When the player send the login forum
addEvent( "doPlayerLogin", true )
addEventHandler( "doPlayerLogin", root,
	function ( username, password, usernameTick, passwordTick )
		if not (exports.DENmysql:getConnection()) then
			triggerClientEvent(source,"setWarningLabelText",source,"Database is down! Please contact a developer!","loginWindow",255,0,0)
			return false
		end
		
		local accountID = false
		local idQuery = exports.DENmysql:query("SELECT id FROM accounts WHERE username=? LIMIT 1",username:lower())
		if idQuery and #idQuery == 1 then
			accountID = idQuery[1].id
		end
		if not accountID then
			triggerClientEvent( source, "setWarningLabelText", source, "Wrong username and/or password!", "loginWindow", 225, 0, 0 )
			triggerClientEvent(source,"toggleLoginButton",source,true)
			return
		end
		if ( #exports.DENmysql:query( "SELECT id FROM accounts WHERE id=? AND password=? LIMIT 1", accountID, md5( password ) ) == 1 ) then
			-- If the password is a MD5 password from the old system then force the player to change it
			triggerClientEvent( source, "setWarningLabelText", source, "Unable to login, please change password first!", "loginWindow", 225, 0, 0 )
			triggerClientEvent( source, "setNewPasswordWindowVisable", source ) setElementData( source, "temp:UsernameData", string.lower( username ) ) setElementData( source, "temp:PasswordData", md5( password ) )
		elseif ( #exports.DENmysql:query( "SELECT id FROM accounts WHERE id=? AND password=? LIMIT 1", accountID, sha512( password ) ) == 1 ) then
			-- If the password is correct and a SHA512 password then log the player in
			--exports.irc:outputIRC(tostring(loggingIn[username]))
			if (loggingIn[username] == nil) then
				loggingIn[username] = true --set this true to prevent it from logging in again
				--exports.irc:outputIRC(username.." login stored.")
			elseif (loggingIn[username] == true) then
				--exports.irc:outputIRC(username.." was refused login since he spammed the :~ out of login.")
				return false
			else
				--exports.irc:outputIRC("Something :Oed up, blame Priyen!")
				--exports.irc:outputIRC(tostring(loggingIn[username]))
			end
			
			local banData = exports.DENmysql:query( "SELECT banstamp FROM bans WHERE username=? LIMIT 1", username:lower() )
			if ( banData and #banData == 1 ) then
				if ( banData[1].banstamp == 0 ) then
					triggerClientEvent( source, "setWarningLabelText", source, "This account is Permanently Banned from the server!", "loginWindow", 225, 0, 0 )
				elseif ( getRealTime().timestamp < banData[1].banstamp ) then
					triggerClientEvent( source, "setWarningLabelText", source, "This account is banned from the server til: "..timestampConvert( banData[1].banstamp ), "loginWindow", 225, 0, 0 )
				elseif ( banData[1].banstamp > 0 ) and ( getRealTime().timestamp > banData[1].banstamp ) and ( exports.DENmysql:exec( "DELETE FROM bans WHERE account=?", username:lower() ) ) then
					triggerClientEvent( source, "setWarningLabelText", source, "Your account is now unbanned! Try again.", "loginWindow", 0, 225, 0 )
				end
			else
				removeElementData( source, "temp:UsernameData" ) removeElementData( source, "temp:PasswordData" )
				triggerClientEvent ( source, "updateAccountXMLData", source, username, password, usernameTick, passwordTick )

				local accountData = exports.DENmysql:query( "SELECT * FROM accounts WHERE id=? LIMIT 1", accountID )
				local groupData = exports.DENmysql:query( "SELECT groupname,grouprank,groupid FROM groups_members WHERE memberid=? LIMIT 1", accountID )
				
				for k,v in ipairs(getElementsByType("player")) do
					if (getElementData(v,"accountUserID") == accountData[1].id) then
						kickPlayer(v,"Accounts",getPlayerName(source).." has logged into your account.")
					end
				end
				
				exports.DENmysql:exec( "INSERT INTO logins SET serial=?, ip=?, nickname=?, accountname=?", getPlayerSerial( source ), getPlayerIP ( source ), getPlayerName( source ), username )
				exports.DENmysql:exec( "UPDATE accounts SET serial=?,IP=? WHERE id=?", getPlayerSerial( source ), getPlayerIP( source ), accountData[1].id )

				setPlayerTeam ( source, getTeamFromName(accountData[1].team) )

				setElementData( source, "accountUserID", accountID )
				setElementData( source, "tempdata.accountUserID", accountID )
				setElementData( source, "Occupation", accountData[1].occupation )
				setElementData( source, "playerAccount", accountData[1].username )
				setElementData( source, "playerEmail", accountData[1].email )
				setElementData( source, "playerIP", getPlayerIP ( source ) )
				setElementData( source, "joinTick", getTickCount() )
				setElementData(source,"playerScore",accountData[1].score)
				
				setElementData( source, "carLicence", true )
				setElementData( source, "planeLicence", true )
				setElementData( source, "bikeLicence", true )
				setElementData( source, "chopperLicence", true )
				setElementData( source, "boatLicence", true )

				if ( groupData and #groupData == 1 ) then
					setElementData( source, "Group", groupData[1].groupname )
					setElementData( source, "GroupRank", groupData[1].grouprank )
					setElementData( source, "GroupID", tonumber(groupData[1].groupid) )
				end

				if ( tonumber(accountData[1].premium) < 1 ) then
					setElementData( source, "isPlayerPremium", false )
					setElementData( source, "Premium", "No" )
					setElementData(source,"premiumType",accountData[1].premiumType)
				else
					setElementData( source, "isPlayerPremium", true )
					setElementData( source, "Premium", "Yes" )
					setElementData(source,"premiumType",accountData[1].premiumType)
				end

				setElementData( source, "playTime", accountData[1].playtime )

				triggerClientEvent( source, "setAllWindowsHided", source )
				triggerClientEvent( source, "clientPlayerLogin", source, accountData[1].id, username )

				fadeCamera( source, false, 1.0, 0, 0, 0 )
				setTimer( fadeCamera, 2000, 1, source, true, 1.0, 0, 0, 0 )
				setTimer( createPlayerElementIntoGame, 1000, 1, source, accountData[1] )
				antisaveTimers[source] = setTimer(allowSaving,10000,1,source)

				triggerEvent( "onPlayerLogin", source )
				loggingIn[username] = nil
				
			end
		else
			-- If the password is wrong
			triggerClientEvent( source, "setWarningLabelText", source, "Wrong username and/or password!", "loginWindow", 225, 0, 0 )
			triggerClientEvent(source,"toggleLoginButton",source,true)
		end
	end
)

function allowSaving(player)
	if (isElement(player)) then
		antisaveTimers[source] = nil
	end
end

-- Change password
addEvent( "onPlayerUpdatePasswords", true )
addEventHandler( "onPlayerUpdatePasswords", root,
	function ( password )
		if ( getElementData( source, "temp:UsernameData" ) ) then
			if ( exports.DENmysql:exec( "UPDATE accounts SET password=? WHERE username=?", sha512( password ), getElementData( source, "temp:UsernameData" ) ) ) then
				triggerClientEvent ( source, "setLoginWindowVisable", source )
				exports.DENdxmsg:createNewDxMessage( thePlayer, "Your password is changed!", 0, 225, 0 )
			else
				triggerClientEvent ( source, "setLoginWindowVisable", source )
				exports.DENdxmsg:createNewDxMessage( thePlayer, "We couldn't change your password try again!", 225, 0, 0 )
			end
		else
			triggerClientEvent ( source, "setLoginWindowVisable", source )
			exports.DENdxmsg:createNewDxMessage( thePlayer, "We couldn't change your password try again!", 225, 0, 0 )
		end
	end
)

-- Spawn the player into the world
function createPlayerElementIntoGame ( thePlayer, dataTable )
	if ( exports.server:isPlayerLoggedIn( thePlayer ) ) then
		local playerID = exports.server:getPlayerAccountID( thePlayer )

		exports.DENdxmsg:createNewDxMessage( thePlayer, "Welcome back to CSG " .. getPlayerName( thePlayer ) .. "!", 238, 154, 0 )

		setCameraTarget( thePlayer, thePlayer )
		showChat( thePlayer, true )
		showPlayerHudComponent ( thePlayer, "radar", true )
		showPlayerHudComponent ( thePlayer, "area_name", true )

		if ( dataTable.team == "Criminals" ) or ( dataTable.team == "Unemployed" ) or ( dataTable.team == "Unoccupied" ) then
			spawnPlayer( thePlayer, dataTable.x, dataTable.y, dataTable.z +1, dataTable.rotation, dataTable.skin, dataTable.interior, dataTable.dimension, dataTable.team )
		else
			spawnPlayer( thePlayer, dataTable.x, dataTable.y, dataTable.z +1, dataTable.rotation, dataTable.jobskin, dataTable.interior, dataTable.dimension, dataTable.team )
		end

		local CJCLOTTable = fromJSON( tostring( dataTable.cjskin ) )
		if CJCLOTTable then
			for theType, index in pairs( CJCLOTTable ) do
				local texture, model = getClothesByTypeIndex ( theType, index )
				addPedClothes ( thePlayer, texture, model, theType )
			end
		end
		
		local weapons = fromJSON( dataTable.weapons )
		if ( weapons ) then
			for weapon, ammo in pairs( weapons ) do
				if not ( tonumber(weapon) == 36 ) and not ( tonumber(weapon) == 37 ) and not ( tonumber(weapon) == 38 ) and not ( tonumber(weapon) == 18 ) then
					giveWeapon( thePlayer, tonumber(weapon), tonumber(ammo) )
				end
			end
		end

		local playerStatus = exports.DENmysql:querySingle( "SELECT * FROM playerstats WHERE userid=? LIMIT 1", playerID )
		if ( playerStatus ) then
			local wepSkills = fromJSON( playerStatus.weaponskills )
			if ( wepSkills ) then
				for skillint, valueint in pairs( wepSkills ) do
					if ( tonumber(valueint) > 950 ) then
						setPedStat ( thePlayer, tonumber(skillint), 995 )
					else
						setPedStat ( thePlayer, tonumber(skillint), tonumber(valueint) )
					end
				end
			end
		end

		if ( dataTable.health == 0 ) then
			killPed( thePlayer )
		else
			setElementHealth( thePlayer, tonumber( dataTable.health ) )
		end

		exports.DENmysql:exec( "UPDATE groups_members SET lastonline=? WHERE memberid=?", getRealTime().timestamp, playerID )

		setPedArmor( thePlayer, tonumber( dataTable.armor ) )
		setPlayerMoney( thePlayer, tonumber( dataTable.money ) )
		setPedFightingStyle ( thePlayer, tonumber( dataTable.fightstyle ) )

		setElementData ( thePlayer, "isPlayerLoggedin", true )
		setElementData ( thePlayer, "wantedPoints", tonumber( dataTable.wanted ) )
		
		local jailData = exports.DENmysql:querySingle("SELECT * FROM jail WHERE userid=? LIMIT 1",dataTable.id)
		if (jailData) then
			triggerClientEvent( thePlayer, "onSetPlayerJailed", thePlayer, jailData.jailtime )
		end

		triggerEvent ( "onServerPlayerLogin", thePlayer, playerID, dataTable.username )
	    exports.DENvehicles:reloadFreeVehicleMarkers( thePlayer )
	end
end

function getCSGServerVersion()
	query = exports.DENmysql:querySingle("SELECT value FROM settings WHERE settingName=? LIMIT 1","serverVersion")
	if (query) then
		return query["value"]
	else
		return "2.1.4"
	end
end

addEvent("updatePlayerFPS",true)
addEventHandler("updatePlayerFPS",root,
function(fps)
	if (isElement(source)) and fps then
		setElementData(source,"FPS",fps)
	end
end)

--[[function updatePlayerTeamToElementData()
	for k,v in ipairs(getElementsByType("player")) do
		team = getPlayerTeam(v)
		if (team ~= nil) then
			setElementData(v,"playerTeam",team)
			outputDebugString(getTeamFromName(team))
		end
	end
end
setTimer(updatePlayerTeamToElementData,2000,0)]]--

function isAllowedToSave(player)
	if (isTimer(antisaveTimers[player])) then
		return false
	else
		return true
	end
end

 

Edited by MOGA672002
Link to comment

اولا مب هنا تطلب الحلول البرمجية 
ثانياً هذا هو حل مشكلتك
بدل سطر 150 بذا

 

	elseif ( exports.DENmysql:query( "SELECT * FROM accounts WHERE serial = ?", getPlayerSerial( source ) ) and #exports.DENmysql:query( "SELECT * FROM accounts WHERE serial = ?", getPlayerSerial( source ) ) >= 2 ) then

 

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