Jump to content

[HELP] Database connect


xXGhostXx

Recommended Posts

Hi .

I have problem for connect script database !

I fixed slot machine script and there is a problem for db connect !

local Functie = {};		
local Setare = {};	

Pacanea = {};
Pacanea.__index = Pacanea;

addEvent("onPacaneaStartPlayer", true)
addEvent("onClientPacaneasGet", true)

slot_machines = {}


function Pacanea:New(...)
	local obj = setmetatable({}, {__index = self});
	if obj.Constructor then
		obj:Constructor(...);
	end
	return obj;
end

function Pacanea:Reset()
	if(self.canSpin == false) then
		self.canSpin = true
		
		return true;
	end
end



function Pacanea:CalculateSpin()
	local rnd = tonumber(math.random(1, 9))
	local grad = 0
	if(rnd == 1) then
		if(math.random(0, 5) == 5) then
			grad = 1100					-- 69
		else
			grad = 1300					-- Primul Haur
		end
	elseif(rnd == 2) then
		if(math.random(0, 5) == 5) then
			grad = 1100					-- 69
		else
			grad = 2300					-- Pahar de vin
		end
	elseif(rnd == 3) then
		grad = 1600						
	elseif(rnd == 4) then
		grad = 2140						-- Cireasa
	elseif(rnd == 5) then
		grad = 1800						-- Haur 2
	elseif(rnd == 6) then
		grad = 1900						--Pahar de vin
	elseif(rnd == 7) then
		grad = 1800						
	elseif(rnd == 8) then
		grad = 2140						--  -- Cireasa
	elseif(rnd == 9) then
		grad = 2140						-- Cireasa
	end
	
	return grad, self.settings.iconNames[grad];
end


function Pacanea:MoveLever(thePlayer)
	local x, y, z = getElementPosition(self.objects.hebel)
	local _, _, _, rx, ry, rz = getElementAttachedOffsets(self.objects.hebel)
	local _, _, rz = getElementRotation(self.objects.Pacanea)
	detachElements(self.objects.hebel)
	
	setElementPosition(self.objects.hebel, x, y, z)
	setElementRotation(self.objects.hebel, rx, ry, rz)
	
	
	moveObject(self.objects.hebel, 450, x, y, z, 50, 0, 0, "InQuad")
	
	setTimer(function()
		moveObject(self.objects.hebel, 450, x, y, z, -50, 0, 0, "InQuad")
	end, 450, 1)
	
	local int, dim = getElementInterior(self.objects.Pacanea), getElementDimension(self.objects.Pacanea)
	setTimer(triggerClientEvent, 150, 1, getRootElement(), "onPacaneaSoundPlay", getRootElement(), x, y, z, "start_machine", int, dim)
	
	
	setTimer(function() self:Spin(thePlayer) end, 500, 1, thePlayer)
	
	return true;
end



function Pacanea:Spin(thePlayer)
	local ergebnis = {}
	for i = 1, 3, 1 do
		local grad, icon = self:CalculateSpin()
		
		local x, y, z = getElementPosition(self.objects.rolls[i])
		local _, _, _, rx, ry, rz = getElementAttachedOffsets(self.objects.rolls[i])
		
		rx, _, _ = getElementRotation(self.objects.rolls[i])
		
		local _, _, rz = getElementRotation(self.objects.Pacanea)
		if(isElementAttached(self.objects.rolls[i])) then
			detachElements(self.objects.rolls[i])
			
			setElementPosition(self.objects.rolls[i], x, y, z)
			setElementRotation(self.objects.rolls[i], rx, ry, rz)
				
		end
		
		local s = moveObject(self.objects.rolls[i], 2500+(i*600), x, y, z, grad, 0, 0, "InQuad")
			
		ergebnis[i] = icon
	end
	setTimer(self.resultFunc, 4100, 1, ergebnis, thePlayer)
	return true;
end



function Pacanea:CheckRolls()
	for i = 1, 3, 1 do
		local x, y, z = getElementPosition(self.objects.rolls[i])
		if not(isElementAttached(self.objects.rolls[i])) then
			local rx, ry, _ = getElementRotation(self.objects.rolls[i])
			
			moveObject(self.objects.rolls[i], 100, x, y, z, -rx, 0, 0, "InQuad")
		end
	end
end



function Pacanea:Start(thePlayer)
	if(self.canSpin == true) then
		self.canSpin = false;
		self:CheckRolls()
		setTimer(function()
			self:MoveLever(thePlayer)
		end, 100, 1)
	end
end



function Pacanea:GiveWin(thePlayer, name, x, y, z, id)

	if(name == "explosion") then
		setTimer(function()
			createExplosion(x, y, z, 1)
		end, 1000, 1)

	elseif(name == "normal") then
		local int, dim = getElementInterior(self.objects.Pacanea), getElementDimension(self.objects.Pacanea)
		triggerClientEvent(getRootElement(), "onPacaneaSoundPlay", getRootElement(), x, y, z, "win_stuff", int, dim)
		local rnd = math.random(0, self.prices.maxNormalRandomPrice)
		givePlayerMoney(thePlayer, self.prices.normalPrice+rnd)
		
		triggerClientEvent(thePlayer, "onPacaneaWintext", thePlayer, "#00FF00 You won $"..(1000+rnd).."!")
	elseif(name == "win") then
		local int, dim = getElementInterior(self.objects.Pacanea), getElementDimension(self.objects.Pacanea)
		triggerClientEvent(getRootElement(), "onPacaneaSoundPlay", getRootElement(), x, y, z, "win_stuff", int, dim)
		local rnd = math.random(0, self.prices.maxNormalRandomPrice2);
		givePlayerMoney(thePlayer, self.prices.normalPrice2+rnd)
		triggerClientEvent(thePlayer, "onPacaneaWintext", thePlayer, "#00FF00 You won $"..self.prices.normalPrice2.."!")
		
	elseif(name == "jackpot") then
		local int, dim = getElementInterior(self.objects.Pacanea), getElementDimension(self.objects.Pacanea)
		triggerClientEvent(getRootElement(), "onPacaneaSoundPlay", getRootElement(), x, y, z, "win_jackpot", int, dim)
		givePlayerMoney(thePlayer, self.prices.jackpot)
		triggerClientEvent(thePlayer, "onPacaneaWintext", thePlayer, "#00FF00 You won #FF0000$"..self.prices.jackpot.."!!!")
		triggerClientEvent(getRootElement(), "onPacaneaJackpot", getRootElement(), x, y, z)
	elseif(name == "rare") then
		local int, dim = getElementInterior(self.objects.Pacanea), getElementDimension(self.objects.Pacanea)
		triggerClientEvent(getRootElement(), "onPacaneaSoundPlay", getRootElement(), x, y, z, "win_jackpot", int, dim)
		triggerClientEvent(getRootElement(), "onPacaneaJackpot", getRootElement(), x, y, z)
		outputChatBox(getPlayerName(thePlayer).." WON THE RARE JACKPOT!!!", getRootElement(), 0, 255, 0)
		triggerClientEvent(thePlayer, "onPacaneaWintext", thePlayer, "#00FF00 You won #FF0000$"..self.prices.rareJackpot.."!!!")
		givePlayerMoney(thePlayer, self.prices.rareJackpot)
	elseif(name == "waffen") then


		local rnd = math.random(1, #self.settings.littleWeaponWins)
		local weaponid, ammu = self.settings.littleWeaponWins[rnd][1], self.settings.littleWeaponWins[rnd][2]
	
		giveWeapon(thePlayer, weaponid, ammu, true);
		
		local int, dim = getElementInterior(self.objects.Pacanea), getElementDimension(self.objects.Pacanea)
		triggerClientEvent(thePlayer, "onPacaneaWintext", thePlayer, "#00FF00You won a weapon!")
		triggerClientEvent(getRootElement(), "onPacaneaSoundPlay", getRootElement(), x, y, z, "win_stuff", int, dim)
	elseif(name == "waffenselten") then


		local rnd = math.random(1, #self.settings.bigWeaponWins)
		local weaponid, ammu = sself.settings.bigWeaponWins[rnd][1], self.settings.bigWeaponWins[rnd][2]
	
		giveWeapon(thePlayer, weaponid, ammu, true);
		
		local int, dim = getElementInterior(self.objects.Pacanea), getElementDimension(self.objects.Pacanea)
		triggerClientEvent(thePlayer, "onPacaneaWintext", thePlayer, "#00FF00You won a weapon!")
		triggerClientEvent(getRootElement(), "onPacaneaSoundPlay", getRootElement(), x, y, z, "win_stuff", int, dim)
	end
end



function Pacanea:DoResult(ergebnis, thePlayer)
	local x, y, z = getElementPosition(self.objects.Pacanea)

	local kirschen = 0
	local glocken = 0
	local weintrauben = 0
	local gold1 = 0
	local gold2 = 0
	local rare = 0
	
	for index, data in pairs(ergebnis) do
		if(data == "69") then
			rare = rare+1
		end
		if(data == "Glocke") then
			glocken = glocken+1
		end
		if(data == "Gold 1") then
			gold1 = gold1+1
			
		end
		if(data == "Gold 2") then
			gold2 = gold2+1
		end
		if(data == "Weintraube") then
			weintrauben = weintrauben+1
		end
		if(data == "Kirsche") then
			kirschen = kirschen+1
		end
	end

	local restart = true

	if(glocken == 2) or (weintrauben == 2) or (gold1 == 2) or(kirschen == 2) then
		self:GiveWin(thePlayer, "normal", x, y, z ,id)
	elseif(glocken == 3) then
		self:GiveWin(thePlayer, "win", x, y, z, id)
		self:GiveWin(thePlayer, "waffen", x, y, z, id)

	elseif(kirschen == 3) or (gold2 == 2) then
		self:GiveWin(thePlayer, "waffen", x, y, z, id)

	elseif(gold2 == 2) then
		restart = false
		self:GiveWin(thePlayer, "waffenselten", x, y, z, id)
	elseif(gold2 == 3) then
		self:GiveWin(thePlayer, "jackpot", x, y, z, id)
		self:GiveWin(thePlayer, "waffen", x, y, z, id)

	elseif(weintrauben == 3) then
		self:GiveWin(thePlayer, "explosion", x, y, z, id)
	elseif(rare == 3) then
		self:GiveWin(thePlayer, "rare", x, y, z, id)
	elseif(rare == 2) then
		self:GiveWin(thePlayer, "jackpot", x, y, z, id)
	else
		local int, dim = getElementInterior(self.objects.Pacanea), getElementDimension(self.objects.Pacanea)
		triggerClientEvent(getRootElement(), "onPacaneaSoundPlay", getRootElement(), x, y, z, "win_nothing", int, dim)
	end

	if(restart == true) then
		setTimer(self.resetFunc, 1500, 1, id)
	end
end




function Pacanea:StartPlayer(player)
	if(getPlayerMoney(player) >= self.prices.bet) then
		if(self.canSpin == true) then
			givePlayerMoney(player, -self.prices.bet)
			triggerClientEvent(player, "onPacaneaWintext", player, "#FF0000-$"..self.prices.bet)
			self:Start(player)
		end
	else
		triggerClientEvent(player, "onPacaneaWintext", player, "#FF0000You need $"..self.prices.bet.." to play on this machine")
	end
end


function Pacanea:Constructor(x, y, z, rx, ry, rz, int, dim)
	if not(int) then
		int = 0
	end
	if not(dim) then
		dim = 0
	end
	
	
	self.prices = {}
	
	
	self.prices.bet 					= 500;				
	
	self.prices.normalPrice 			= 1000; 		
	self.prices.maxNormalRandomPrice 	= 500;			
								
	
	self.prices.normalPrice2 			= 2500;			
	self.prices.maxNormalRandomPrice2 	= 500;			
								
								
	self.prices.jackpot 				= 25000;		
	self.prices.rareJackpot 			= 250000;		
	

	
	
		
	self.settings = {}
	
	self.settings.littleWeaponWins = {
		[1] = {5, 1},	
		[2] = {24, 30}, 
		[3] = {26, 30}, 
		[4] = {28, 500}, 
	}
	
	self.settings.bigWeaponWins = {
		[1] = {31, 200}, 
		[2] = {34, 10}, 
		[3] = {18, 10}, 
		[4] = {35, 5}, 
	}
	
	
	self.resultFunc = function(...) self:DoResult(...) end;
	self.resetFunc = function(...) self:Reset() end;
	self.startFunc = function(player) self:StartPlayer(player) end;
	
		
	self.objects = {}
	
	self.objects.rolls = {}
	
	self.canSpin = true

	self.settings.iconNames = {
		[900] = "69",
		[1100] = "69",
		[1300] = "Gold",
		[1400] = "Glock",
		[1500] = "Glock",
		[1600] = "Glock",
		[1700] = "Vin",
		[1800] = "Gold 2",
		[1900] = "Vin",
		[2000] = "Glock",
		[2100] = "Vin",
		[2300] = "Vin",
		[2140] = "Cireasa",
	}
	
	

	
	self.objects.Pacanea = createObject(2325, x, y, z, rx, ry, rz)
	setObjectScale(self.objects.Pacanea, 2)
	
	slot_machines[self.objects.Pacanea] = self.objects.Pacanea;
	
	
	for i = 1, 3, 1 do
		self.objects.rolls[i] = createObject(2347, x, y, z)
		setObjectScale(self.objects.rolls[i], 2)
		attachElements(self.objects.rolls[i], self.objects.Pacanea, -0.45+i/4, 0, 0)
	end
	
	
	
	self.objects.hebel = createObject(1319, x, y, z)
	attachElements(self.objects.hebel, self.objects.Pacanea, 0.9, -0.3, 0, 50, 0, rz*(360)/90)
	setElementFrozen(self.objects.hebel, true)
	setElementData(self.objects.hebel, "Pacanea:LEVER", true)
	
	
	
	self.objects.wood = createObject(3260, x, y, z)
	setObjectScale(self.objects.wood, 0.7)
	attachElements(self.objects.wood, self.objects.Pacanea, 0, 0.5, -0.5)
	
	
	
	
	for index, object in pairs(self.objects) do
		if(type(object) == "table") then
			for index, e1 in pairs(object) do
				setElementInterior(e1, int)
				setElementDimension(e1, dim)
			end
		else
			setElementInterior(object, int)
			setElementDimension(object, dim)
		end
	end
	
	outputDebugString("[CALLING] Pacanea: Constructor");
	
	
	
	addEventHandler("onPacaneaStartPlayer", self.objects.hebel, self.startFunc)
	setElementData(self.objects.hebel, "Pacanea:ID", self) 
end





function createPacanea(thePlayer, ...)
	if(hasObjectPermissionTo ( thePlayer, "function.kickPlayer", false ) ) then
		local x, y, z = getElementPosition(thePlayer)
		local rotation = getPedRotation(thePlayer)
		local dimension = getElementDimension(thePlayer)
		local interior = getElementInterior(thePlayer)
		sl = Pacanea:New(x, y, z+0.58, 0, 0, rotation-180, interior, dimension)
		setElementPosition(thePlayer, x+1, y, z)
		return Pacanea:New(...);
	end
end
addCommandHandler("addpacanea", createPacanea)

addEventHandler("onClientPacaneasGet", getRootElement(), function() triggerClientEvent(source, "onPacaneasGet", source, slot_machines) end)

mysql = exports.mysql

function createPacanea(thePlayer, commandName)
	if(hasObjectPermissionTo ( thePlayer, "function.kickPlayer", false ) ) then
		local dimension = getElementDimension(thePlayer)
		local interior = getElementInterior(thePlayer)
		local x, y, z  = getElementPosition(thePlayer)
		local rotation = getPedRotation(thePlayer)
		z = z - 0.3
			
		local id = mysql:query_insert_free("INSERT INTO Pacaneas SET x='" .. mysql:escape_string(x) .. "', y='" .. mysql:escape_string(y) .. "', z='" .. mysql:escape_string(z) .. "', dimension='" .. mysql:escape_string(dimension) .. "', interior='" .. mysql:escape_string(interior) .. "', rotation='" .. mysql:escape_string(rotation) .. "'")
					
		if (id) then
			local object = Pacanea:New(x, y, z+0.58, 0, 0, rotation-180, interior, dimension)
			exports.pool:allocateElement(object)
			setElementDimension(object, dimension)
			setElementInterior(object, interior)

			local px = x + math.sin(math.rad(-rotation)) * 0.8
			local py = y + math.cos(math.rad(-rotation)) * 0.8
			local pz = z
				
			exports['anticheat-system']:changeProtectedElementDataEx(object, "dbid", id, false)
			
			x = x + ((math.cos(math.rad(rotation)))*5)
			y = y + ((math.sin(math.rad(rotation)))*5)
			setElementPosition(thePlayer, x, y, z)
				
			outputChatBox("Pacanea creata cu ID #" .. id .. "!", thePlayer, 0, 255, 0)
		else
			outputChatBox("S-a petrecut o eroare, incercati din nou!", thePlayer, 255, 0, 0)
		end
	end
end
addCommandHandler("addpacanea", createPacanea, false, false)

function deletePacanea(thePlayer, commandName, id)
	if(hasObjectPermissionTo ( thePlayer, "function.kickPlayer", false ) ) then
		if not (id) then
			outputChatBox("SYNTAX: /" .. commandName .. " [ID]", thePlayer, 255, 194, 14)
		else
			id = tonumber(id)
				
			local counter = 0
			local objects = getElementsByType("object", getResourceRootElement())
			for k, theObject in ipairs(objects) do
			local result = mysql:query("SELECT id FROM Pacaneas")
				local row = mysql:fetch_assoc(result)
				local objectID = tonumber(row["id"])
				if (objectID==id) then
					destroyElement(theObject)
					counter = counter + 1
				end
			end
			
			if (counter>0) then
				local query = mysql:query_free("DELETE FROM Pacaneas WHERE id='" .. mysql:escape_string(id) .. "'")
				
				outputChatBox("Slot Machine #" .. id .. " Deleted!", thePlayer, 0, 255, 0)
			else
				outputChatBox("Slot Machine ID does not exist!", thePlayer, 255, 0, 0)
			end
		end
	end
end
addCommandHandler("delpacanea", deletePacanea, false, false)

function getNearbyPacaneas(thePlayer, commandName)
	if(hasObjectPermissionTo ( thePlayer, "function.kickPlayer", false ) ) then
		local posX, posY, posZ = getElementPosition(thePlayer)
		outputChatBox("Nearby Slot Machines:", thePlayer, 255, 126, 0)
		local count = 0
		
		for k, theObject in ipairs(getElementsByType("object", getResourceRootElement())) do
			local x, y, z = getElementPosition(theObject)
			local distance = getDistanceBetweenPoints3D(posX, posY, posZ, x, y, z)
			if (distance<=10) then
				local result = mysql:query("SELECT id FROM Pacaneas")
				local row = mysql:fetch_assoc(result)
				local dbid = tonumber(row["id"])
				outputChatBox("   Slot Machine with ID " .. dbid .. ".", thePlayer)
				count = count + 1
			end
		end
		
		if (count==0) then
			outputChatBox("   None.", thePlayer, 255, 126, 0)
		end
	end
end
addCommandHandler("nearbypacanele", getNearbyPacaneas, false, false)

function loadAllPacaneas()
	local result = mysql:query("SELECT id, x, y, z, rotation, dimension, interior FROM Pacaneas")
	local counter = 0
	
	if (result) then
		local continue = true
		while continue do
			local row = mysql:fetch_assoc(result)
			if not row then break end
			
			local id = tonumber(row["id"])
			local x = tonumber(row["x"])
			local y = tonumber(row["y"])
			local z = tonumber(row["z"])

			local rotation = tonumber(row["rotation"])
			local dimension = tonumber(row["dimension"])
			local interior = tonumber(row["interior"])
			
			local object = Pacanea:New(x, y, z+0.58, 0, 0, rotation-180, interior, dimension)
			exports.pool:allocateElement(object)
			setElementDimension(object, dimension)
			setElementInterior(object, interior)		
			exports['anticheat-system']:changeProtectedElementDataEx(object, "dbid", id, false)
			
			counter = counter + 1
		end
		mysql:free_result(result)
	end
end
addEventHandler("onResourceStart", getResourceRootElement(), loadAllPacaneas)

Please fix my problem !

Table name pacanele and i import database file !

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