-stolka- Posted March 22, 2014 Share Posted March 22, 2014 i can't buy new cars! the debug reports error line 21 server, attempt to arithmetic fieald on "id" a string value... why? server function make_db () executeSQLQuery ("CREATE TABLE IF NOT EXISTS dealercars (id NUMERIC, owner TEXT, model NUMERIC, name TEXT, health NUMBERIC, paintjob NUMERIC, color NUMERIC, upgrades NUMERIC)") end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), make_db) local dealerMarker1 = createMarker(2131.75, -1148.138671875, 23.406946182251, "cylinder", 2, 0, 255, 0, 255) createBlipAttachedTo(dealerMarker1, 55, 2, 0, 0, 0, 0, 0, 300) function open_dealer_server (hitElement) if source == dealerMarker1 then triggerClientEvent(hitElement, "open_dealer_wdw", root) triggerClientEvent(hitElement, "list_dealer_cars", root) end end addEventHandler("onMarkerHit", getRootElement(), open_dealer_server) function buy_car_from_dealer (owner,model,name,money) if getPlayerMoney(owner) >= tonumber(money) then local ID = executeSQLQuery("SELECT * FROM dealercars") for i,v in ipairs(ID) do carid = v.id+1 end local account = getAccountName(getPlayerAccount(owner)) local modela = getVehicleModelFromName(model) local carbought = executeSQLQuery("INSERT INTO dealercars(id,owner,model,name,health,paintjob,color,upgrades) VALUES(?,?,?,?,?,?,?,?)", carid, tostring(account), tonumber(modela), tostring(model), 1000, 0, 0, 0) takePlayerMoney(owner, money) setElementData(owner, "gotCar", "no") outputChatBox("Congratulations you've bought a "..model.." for "..money, owner, 0, 255, 0) else outputChatBox("You don't have enough money", owner, 255, 0, 0) end end addEvent("buy_dealer_car", true) addEventHandler("buy_dealer_car", getRootElement(), buy_car_from_dealer) ---------------------------------------------- --------------- Spawner Panel ---------------- ---------------------------------------------- function keybindpla () for i,v in ipairs(getElementsByType("player")) do bindKey(v, "f2", "down", open_spawner_pla) setElementData(v, "gotCar", "no") end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), keybindpla) addEventHandler("onPlayerLogin", getRootElement(), keybindpla) function open_spawner_pla (source) triggerClientEvent(source, "open_spawner_wdw", root) end function list_owned_cars_server (player) local playerAcc = getAccountName(getPlayerAccount(player)) local carlmao = executeSQLQuery("SELECT * FROM dealercars WHERE owner=?", playerAcc) for i,k in ipairs(carlmao) do triggerClientEvent(player, "list_owned_cars", root, k.name, k.health) end end addEvent("list_owned_cars_S", true) addEventHandler("list_owned_cars_S", getRootElement(), list_owned_cars_server) function spawn_car_pleaseD (ownerName,carName) if getElementData(ownerName, "gotCar") == "no" then local gayowner = getAccountName(getPlayerAccount(ownerName)) local carModel = getVehicleModelFromName(carName) local x,y,z = getElementPosition(ownerName) OwnerVehicle = createVehicle(carModel, x, y, z) setTimer(warpPedIntoVehicle, 50, 1, ownerName, OwnerVehicle) setElementData(OwnerVehicle, "owner", tostring(gayowner)) setElementData(ownerName, "gotCar", "yes") local carlma = executeSQLQuery("SELECT * FROM dealercars WHERE owner=?", gayowner) else outputChatBox("You don't own a car", ownerName, 255, 0, 0) end end addEvent("spawn_dealer_car", true) addEventHandler("spawn_dealer_car", getRootElement(), spawn_car_pleaseD) function destroy_car_pleaseD (ownerName) pedCar = getPedOccupiedVehicle(ownerName) gayownerAcc = getAccountName(getPlayerAccount(ownerName)) if isPedInVehicle(ownerName) == true then if getElementData(ownerName, "gotCar") == "yes" and getElementData(pedCar, "owner") == gayownerAcc then CurrentCar = getPedOccupiedVehicle(ownerName) destroyElement(CurrentCar) setElementData(ownerName, "gotCar", "no") else outputChatBox("You can't park a car you don't own", ownerName, 255, 0, 0) end else outputChatBox("You aren't in a vehicle", ownerName, 255, 0, 0) end end addEvent("destroy_dealer_car", true) addEventHandler("destroy_dealer_car", getRootElement(), destroy_car_pleaseD) client dealerwdw = guiCreateWindow(0.19, 0.19, 0.57, 0.70, "", true) guiWindowSetSizable(dealerwdw, false) dealerwdwgrid = guiCreateGridList(0.02, 0.05, 0.97, 0.83, true, dealerwdw) guiGridListAddColumn(dealerwdwgrid, "Car", 0.5) guiGridListAddColumn(dealerwdwgrid, "Price", 0.5) dealerwdwclosebtn = guiCreateButton(0.01, 0.88, 0.34, 0.09, "Close", true, dealerwdw) guiSetProperty(dealerwdwclosebtn, "NormalTextColour", "FFAAAAAA") dealerwdwbuybtn = guiCreateButton(0.65, 0.88, 0.34, 0.09, "Buy", true, dealerwdw) guiSetProperty(dealerwdwbuybtn, "NormalTextColour", "FFAAAAAA") guiSetVisible(dealerwdw, false) function open_dealer_panel () if guiGetVisible(dealerwdw) == false then guiSetVisible(dealerwdw, true) showCursor(true) end end addEvent("open_dealer_wdw", true) addEventHandler("open_dealer_wdw", getRootElement(), open_dealer_panel) DealerVehicles = { {"Admiral", 50000}, {"Comet", 1000000}, {"Infernus", 3000000}, {"Bullet", 1500000}, {"Sultan", 1000000}, {"Huntley", 750000}, {"Sabre", 1000000}, } function list_cars () guiGridListClear(dealerwdwgrid) for i,v in ipairs(DealerVehicles) do local row = guiGridListAddRow(dealerwdwgrid) guiGridListSetItemText(dealerwdwgrid, row, 1, v[1], false, false) guiGridListSetItemText(dealerwdwgrid, row, 2, v[2], false, false) end end addEvent("list_dealer_cars", true) addEventHandler("list_dealer_cars", getRootElement(), list_cars) function dealer_panel_clicked () if source == dealerwdwclosebtn and guiGetVisible(dealerwdw) == true then guiSetVisible(dealerwdw, false) showCursor(false) guiGridListClear(dealerwdwgrid) end end addEventHandler("onClientGUIClick", dealerwdw, dealer_panel_clicked) function dealer_panel_buy (player) if source == dealerwdwbuybtn then local row = guiGridListGetSelectedItem(dealerwdwgrid) triggerServerEvent("buy_dealer_car", getLocalPlayer(), getLocalPlayer(), guiGridListGetItemText(dealerwdwgrid, row, 1), guiGridListGetItemText(dealerwdwgrid, row, 1), guiGridListGetItemText(dealerwdwgrid, row, 2)) end end addEventHandler("onClientGUIClick", dealerwdw, dealer_panel_buy) ---------------------------------------------- --------------- Spawner Panel ---------------- ---------------------------------------------- spawncarwdw = guiCreateWindow(0.19, 0.19, 0.57, 0.70, "", true) guiWindowSetSizable(spawncarwdw, false) spawncarwdwgrid = guiCreateGridList(0.02, 0.05, 0.97, 0.83, true, spawncarwdw) guiGridListAddColumn(spawncarwdwgrid, "Car", 0.5) guiGridListAddColumn(spawncarwdwgrid, "Health", 0.5) spawncarwdwclosebtn = guiCreateButton(0.01, 0.89, 0.19, 0.09, "Close", true, spawncarwdw) spawncarwdrefwdw = guiCreateButton(0.23, 0.89, 0.24, 0.09, "Refresh List", true, spawncarwdw) spawncarwdwspwnwdw = guiCreateButton(0.52, 0.89, 0.24, 0.09, "Spawn Car", true, spawncarwdw) spawncarwdwparkbtn = guiCreateButton(0.78, 0.89, 0.21, 0.09, "Park Car", true, spawncarwdw) guiSetVisible(spawncarwdw, false) function open_spawner_panel () if guiGetVisible(spawncarwdw) == false then guiSetVisible(spawncarwdw, true) showCursor(true) guiGridListClear(spawncarwdwgrid) triggerServerEvent("list_owned_cars_S", getLocalPlayer(), getLocalPlayer()) elseif guiGetVisible(spawncarwdw) == true then guiSetVisible(spawncarwdw, false) showCursor(false) end end addEvent("open_spawner_wdw", true) addEventHandler("open_spawner_wdw", getRootElement(), open_spawner_panel) function vehicle_spawner_panel () if source == spawncarwdwclosebtn and guiGetVisible(spawncarwdw) == true then guiSetVisible(spawncarwdw, false) showCursor(false) guiGridListClear(spawncarwdwgrid) end if source == spawncarwdrefwdw then guiGridListClear(spawncarwdwgrid) triggerServerEvent("list_owned_cars_S", getLocalPlayer(), getLocalPlayer()) end if source == spawncarwdwspwnwdw then local row = guiGridListGetSelectedItem(spawncarwdwgrid) triggerServerEvent("spawn_dealer_car", getLocalPlayer(), getLocalPlayer(), guiGridListGetItemText(spawncarwdwgrid, row, 1)) end if source == spawncarwdwparkbtn then triggerServerEvent("destroy_dealer_car", getLocalPlayer(), getLocalPlayer()) end end addEventHandler("onClientGUIClick", spawncarwdw, vehicle_spawner_panel) function list_cars_you_own (vehiclemodel,vehicleHealth) local row = guiGridListAddRow(spawncarwdwgrid) guiGridListSetItemText(spawncarwdwgrid, row, 1, tostring(vehiclemodel), false, false) guiGridListSetItemText(spawncarwdwgrid, row, 2, tonumber(vehicleHealth), false, false) end addEvent("list_owned_cars", true) addEventHandler("list_owned_cars", getRootElement(), list_cars_you_own) Link to comment
JR10 Posted March 22, 2014 Share Posted March 22, 2014 Use tonumber to turn v.id to a number. function make_db () executeSQLQuery ("CREATE TABLE IF NOT EXISTS dealercars (id NUMERIC, owner TEXT, model NUMERIC, name TEXT, health NUMBERIC, paintjob NUMERIC, color NUMERIC, upgrades NUMERIC)") end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), make_db) local dealerMarker1 = createMarker(2131.75, -1148.138671875, 23.406946182251, "cylinder", 2, 0, 255, 0, 255) createBlipAttachedTo(dealerMarker1, 55, 2, 0, 0, 0, 0, 0, 300) function open_dealer_server (hitElement) if source == dealerMarker1 then triggerClientEvent(hitElement, "open_dealer_wdw", root) triggerClientEvent(hitElement, "list_dealer_cars", root) end end addEventHandler("onMarkerHit", getRootElement(), open_dealer_server) function buy_car_from_dealer (owner,model,name,money) if getPlayerMoney(owner) >= tonumber(money) then local ID = executeSQLQuery("SELECT * FROM dealercars") for i,v in ipairs(ID) do carid = tonumber(v.id)+1 end local account = getAccountName(getPlayerAccount(owner)) local modela = getVehicleModelFromName(model) local carbought = executeSQLQuery("INSERT INTO dealercars(id,owner,model,name,health,paintjob,color,upgrades) VALUES(?,?,?,?,?,?,?,?)", carid, tostring(account), tonumber(modela), tostring(model), 1000, 0, 0, 0) takePlayerMoney(owner, money) setElementData(owner, "gotCar", "no") outputChatBox("Congratulations you've bought a "..model.." for "..money, owner, 0, 255, 0) else outputChatBox("You don't have enough money", owner, 255, 0, 0) end end addEvent("buy_dealer_car", true) addEventHandler("buy_dealer_car", getRootElement(), buy_car_from_dealer) ---------------------------------------------- --------------- Spawner Panel ---------------- ---------------------------------------------- function keybindpla () for i,v in ipairs(getElementsByType("player")) do bindKey(v, "f2", "down", open_spawner_pla) setElementData(v, "gotCar", "no") end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), keybindpla) addEventHandler("onPlayerLogin", getRootElement(), keybindpla) function open_spawner_pla (source) triggerClientEvent(source, "open_spawner_wdw", root) end function list_owned_cars_server (player) local playerAcc = getAccountName(getPlayerAccount(player)) local carlmao = executeSQLQuery("SELECT * FROM dealercars WHERE owner=?", playerAcc) for i,k in ipairs(carlmao) do triggerClientEvent(player, "list_owned_cars", root, k.name, k.health) end end addEvent("list_owned_cars_S", true) addEventHandler("list_owned_cars_S", getRootElement(), list_owned_cars_server) function spawn_car_pleaseD (ownerName,carName) if getElementData(ownerName, "gotCar") == "no" then local gayowner = getAccountName(getPlayerAccount(ownerName)) local carModel = getVehicleModelFromName(carName) local x,y,z = getElementPosition(ownerName) OwnerVehicle = createVehicle(carModel, x, y, z) setTimer(warpPedIntoVehicle, 50, 1, ownerName, OwnerVehicle) setElementData(OwnerVehicle, "owner", tostring(gayowner)) setElementData(ownerName, "gotCar", "yes") local carlma = executeSQLQuery("SELECT * FROM dealercars WHERE owner=?", gayowner) else outputChatBox("You don't own a car", ownerName, 255, 0, 0) end end addEvent("spawn_dealer_car", true) addEventHandler("spawn_dealer_car", getRootElement(), spawn_car_pleaseD) function destroy_car_pleaseD (ownerName) pedCar = getPedOccupiedVehicle(ownerName) gayownerAcc = getAccountName(getPlayerAccount(ownerName)) if isPedInVehicle(ownerName) == true then if getElementData(ownerName, "gotCar") == "yes" and getElementData(pedCar, "owner") == gayownerAcc then CurrentCar = getPedOccupiedVehicle(ownerName) destroyElement(CurrentCar) setElementData(ownerName, "gotCar", "no") else outputChatBox("You can't park a car you don't own", ownerName, 255, 0, 0) end else outputChatBox("You aren't in a vehicle", ownerName, 255, 0, 0) end end addEvent("destroy_dealer_car", true) addEventHandler("destroy_dealer_car", getRootElement(), destroy_car_pleaseD) Link to comment
-stolka- Posted March 22, 2014 Author Share Posted March 22, 2014 Use tonumber to turn v.id to a number. function make_db () executeSQLQuery ("CREATE TABLE IF NOT EXISTS dealercars (id NUMERIC, owner TEXT, model NUMERIC, name TEXT, health NUMBERIC, paintjob NUMERIC, color NUMERIC, upgrades NUMERIC)") end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), make_db) local dealerMarker1 = createMarker(2131.75, -1148.138671875, 23.406946182251, "cylinder", 2, 0, 255, 0, 255) createBlipAttachedTo(dealerMarker1, 55, 2, 0, 0, 0, 0, 0, 300) function open_dealer_server (hitElement) if source == dealerMarker1 then triggerClientEvent(hitElement, "open_dealer_wdw", root) triggerClientEvent(hitElement, "list_dealer_cars", root) end end addEventHandler("onMarkerHit", getRootElement(), open_dealer_server) function buy_car_from_dealer (owner,model,name,money) if getPlayerMoney(owner) >= tonumber(money) then local ID = executeSQLQuery("SELECT * FROM dealercars") for i,v in ipairs(ID) do carid = tonumber(v.id)+1 end local account = getAccountName(getPlayerAccount(owner)) local modela = getVehicleModelFromName(model) local carbought = executeSQLQuery("INSERT INTO dealercars(id,owner,model,name,health,paintjob,color,upgrades) VALUES(?,?,?,?,?,?,?,?)", carid, tostring(account), tonumber(modela), tostring(model), 1000, 0, 0, 0) takePlayerMoney(owner, money) setElementData(owner, "gotCar", "no") outputChatBox("Congratulations you've bought a "..model.." for "..money, owner, 0, 255, 0) else outputChatBox("You don't have enough money", owner, 255, 0, 0) end end addEvent("buy_dealer_car", true) addEventHandler("buy_dealer_car", getRootElement(), buy_car_from_dealer) ---------------------------------------------- --------------- Spawner Panel ---------------- ---------------------------------------------- function keybindpla () for i,v in ipairs(getElementsByType("player")) do bindKey(v, "f2", "down", open_spawner_pla) setElementData(v, "gotCar", "no") end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), keybindpla) addEventHandler("onPlayerLogin", getRootElement(), keybindpla) function open_spawner_pla (source) triggerClientEvent(source, "open_spawner_wdw", root) end function list_owned_cars_server (player) local playerAcc = getAccountName(getPlayerAccount(player)) local carlmao = executeSQLQuery("SELECT * FROM dealercars WHERE owner=?", playerAcc) for i,k in ipairs(carlmao) do triggerClientEvent(player, "list_owned_cars", root, k.name, k.health) end end addEvent("list_owned_cars_S", true) addEventHandler("list_owned_cars_S", getRootElement(), list_owned_cars_server) function spawn_car_pleaseD (ownerName,carName) if getElementData(ownerName, "gotCar") == "no" then local gayowner = getAccountName(getPlayerAccount(ownerName)) local carModel = getVehicleModelFromName(carName) local x,y,z = getElementPosition(ownerName) OwnerVehicle = createVehicle(carModel, x, y, z) setTimer(warpPedIntoVehicle, 50, 1, ownerName, OwnerVehicle) setElementData(OwnerVehicle, "owner", tostring(gayowner)) setElementData(ownerName, "gotCar", "yes") local carlma = executeSQLQuery("SELECT * FROM dealercars WHERE owner=?", gayowner) else outputChatBox("You don't own a car", ownerName, 255, 0, 0) end end addEvent("spawn_dealer_car", true) addEventHandler("spawn_dealer_car", getRootElement(), spawn_car_pleaseD) function destroy_car_pleaseD (ownerName) pedCar = getPedOccupiedVehicle(ownerName) gayownerAcc = getAccountName(getPlayerAccount(ownerName)) if isPedInVehicle(ownerName) == true then if getElementData(ownerName, "gotCar") == "yes" and getElementData(pedCar, "owner") == gayownerAcc then CurrentCar = getPedOccupiedVehicle(ownerName) destroyElement(CurrentCar) setElementData(ownerName, "gotCar", "no") else outputChatBox("You can't park a car you don't own", ownerName, 255, 0, 0) end else outputChatBox("You aren't in a vehicle", ownerName, 255, 0, 0) end end addEvent("destroy_dealer_car", true) addEventHandler("destroy_dealer_car", getRootElement(), destroy_car_pleaseD) error line 18 compare number nil with a number Link to comment
JR10 Posted March 22, 2014 Share Posted March 22, 2014 'money' at line 18 is nil, either it's a string which tonumber returned nil or it's nil before tonumber. Check where money is sent and confirm that it's correct. Link to comment
-stolka- Posted March 22, 2014 Author Share Posted March 22, 2014 'money' at line 18 is nil, either it's a string which tonumber returned nil or it's nil before tonumber. Check where money is sent and confirm that it's correct. it's trigged at line 55 client... and it looks coorrect Link to comment
Stranger Posted March 22, 2014 Share Posted March 22, 2014 function make_db () executeSQLQuery ("CREATE TABLE IF NOT EXISTS dealercars (id NUMERIC, owner TEXT, model NUMERIC, name TEXT, health NUMBERIC, paintjob NUMERIC, color NUMERIC, upgrades NUMERIC)") end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), make_db) local dealerMarker1 = createMarker(2131.75, -1148.138671875, 23.406946182251, "cylinder", 2, 0, 255, 0, 255) createBlipAttachedTo(dealerMarker1, 55, 2, 0, 0, 0, 0, 0, 300) function open_dealer_server (hitElement) if source == dealerMarker1 then triggerClientEvent(hitElement, "open_dealer_wdw", root) triggerClientEvent(hitElement, "list_dealer_cars", root) end end addEventHandler("onMarkerHit", getRootElement(), open_dealer_server) function buy_car_from_dealer (owner,model,name,money) if getPlayerMoney(owner) >= tonumber(money) then local ID = executeSQLQuery("SELECT * FROM dealercars") for i,v in ipairs(ID) do carid = v.id end local account = getAccountName(getPlayerAccount(owner)) local modela = getVehicleModelFromName(model) local carbought = executeSQLQuery("INSERT INTO dealercars(id,owner,model,name,health,paintjob,color,upgrades) VALUES(?,?,?,?,?,?,?,?)", carid, tostring(account), tonumber(modela), tostring(model), 1000, 0, 0, 0) takePlayerMoney(owner, money) setElementData(owner, "gotCar", "no") outputChatBox("Congratulations you've bought a "..model.." for "..money, owner, 0, 255, 0) else outputChatBox("You don't have enough money", owner, 255, 0, 0) end end addEvent("buy_dealer_car", true) addEventHandler("buy_dealer_car", getRootElement(), buy_car_from_dealer) ---------------------------------------------- --------------- Spawner Panel ---------------- ---------------------------------------------- function keybindpla () for i,v in ipairs(getElementsByType("player")) do bindKey(v, "f2", "down", open_spawner_pla) setElementData(v, "gotCar", "no") end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), keybindpla) addEventHandler("onPlayerLogin", getRootElement(), keybindpla) function open_spawner_pla (source) triggerClientEvent(source, "open_spawner_wdw", root) end function list_owned_cars_server (player) local playerAcc = getAccountName(getPlayerAccount(player)) local carlmao = executeSQLQuery("SELECT * FROM dealercars WHERE owner=?", playerAcc) for i,k in ipairs(carlmao) do triggerClientEvent(player, "list_owned_cars", root, k.name, k.health) end end addEvent("list_owned_cars_S", true) addEventHandler("list_owned_cars_S", getRootElement(), list_owned_cars_server) function spawn_car_pleaseD (ownerName,carName) if getElementData(ownerName, "gotCar") == "no" then local gayowner = getAccountName(getPlayerAccount(ownerName)) local carModel = getVehicleModelFromName(carName) local x,y,z = getElementPosition(ownerName) OwnerVehicle = createVehicle(carModel, x, y, z) setTimer(warpPedIntoVehicle, 50, 1, ownerName, OwnerVehicle) setElementData(OwnerVehicle, "owner", tostring(gayowner)) setElementData(ownerName, "gotCar", "yes") local carlma = executeSQLQuery("SELECT * FROM dealercars WHERE owner=?", gayowner) else outputChatBox("You don't own a car", ownerName, 255, 0, 0) end end addEvent("spawn_dealer_car", true) addEventHandler("spawn_dealer_car", getRootElement(), spawn_car_pleaseD) function destroy_car_pleaseD (ownerName) pedCar = getPedOccupiedVehicle(ownerName) gayownerAcc = getAccountName(getPlayerAccount(ownerName)) if isPedInVehicle(ownerName) == true then if getElementData(ownerName, "gotCar") == "yes" and getElementData(pedCar, "owner") == gayownerAcc then CurrentCar = getPedOccupiedVehicle(ownerName) destroyElement(CurrentCar) setElementData(ownerName, "gotCar", "no") else outputChatBox("You can't park a car you don't own", ownerName, 255, 0, 0) end else outputChatBox("You aren't in a vehicle", ownerName, 255, 0, 0) end end addEvent("destroy_dealer_car", true) addEventHandler("destroy_dealer_car", getRootElement(), destroy_car_pleaseD) Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now