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 !