JanKy Posted June 13, 2018 Share Posted June 13, 2018 Hi guys, So I have this DayZ server, and i noticed that no vehicle is working. I mean, even though they have the parts needed, their engine wont start. I thought it was because setVehicleEngineState. *Also, i have commented out the backup part of the script, because firstly i thought it was because of that vehicles.lua : Spoiler local hospitalCol = {}; local repairTimer = {}; local backupdone = false; addEvent("respawnVehiclesInWater", true); addEvent("repairVehicle", true); addEvent("respawnDayZVehicle", true); if fileExists("tools/backup.db") then backupdone = true; else backupdone = false; end local db = dbConnect("sqlite", "tools/backup.db"); dbExec(db, "CREATE TABLE IF NOT EXISTS `vehicles` (model, x, y, z, rX, rY, rZ, slots, fuel, engines, moving, parts, items, health, dayz, sx, sy, sz, id)"); dbExec(db, "CREATE TABLE IF NOT EXISTS `tents` (model, x, y, z, rX, rY, rZ, slots, scale, items, id)"); function getVehicleAddonInfos(id) for _,v in ipairs(vehicleAddonsInfo) do if (v[1] == id) then return v[2], v[3], v[4], v[5]; end end end function createHeliCrashSite() if isElement(cargoCol) then destroyElement(getElementData(cargoCol, "parent")); destroyElement(cargoCol); end local nr = math.random(7); local x,y,z = heliCrashSites[nr][1], heliCrashSites[nr][2], heliCrashSites[nr][3]; local cargobob = createVehicle(548, x, y, z); setElementHealth(cargobob, 0); setElementFrozen(cargobob, true); cargoCol = createColSphere(x, y, z, 3); setElementData(cargoCol, "parent", cargobob); setElementData(cargoCol, "helicrash", true); setElementData(cargoCol, "MAX_Slots", 0); for _,v in ipairs(lootItems["helicrashsides"]) do local value = math.percentChance(v[5]*3.5, math.random(2)); setElementData(cargoCol, v[1], value); local ammoData,_ = getWeaponAmmoType(v[1], true); if (ammoData and value > 0) then setElementData(cargoCol, ammoData, math.random(2)); end end setTimer(createHeliCrashSite, 3600000, 1); end function updateHospitals() for i,_ in pairs(hospitalCol) do for _,v in ipairs(lootItems["hospital"]) do setElementData(hospitalCol[i], v[1], math.random(5)); end end setTimer(updateHospitals, 3600000, 1); end function createPatrolPoints() for _,v in ipairs(patrolPoints) do local x,y,z = v[1], v[2], v[3]; local patrolCol = createColSphere(x, y, z, 3); setElementData(patrolCol, "patrolstation", true); end end function createHospitalPacks() for i,v in ipairs(hospitalPacks) do local x,y,z = v[1], v[2], v[3]; local object = createObject(1558, x, y, z, nil, nil, nil); hospitalCol[i] = createColSphere(x, y, z, 2); setElementData(hospitalCol[i], "parent", object); setElementData(hospitalCol[i], "hospitalbox", true); setElementData(hospitalCol[i], "MAX_Slots", 20); end updateHospitals(); end function spawnDayZVehicles() for _,v in ipairs(getElementsByType("vehicle")) do local col = getElementData(v, "parent"); if col then destroyElement(col); end destroyElement(v); end for _,v in ipairs(vehicleSpawns) do local x,y,z = v[2], v[3], v[4]; local veh = createVehicle(v[1], x, y, z); local vehCol = createColSphere(x, y, z, 2.5); attachElements(vehCol, veh); setElementData(vehCol, "parent", veh); setElementData(veh, "parent", vehCol); setElementData(vehCol, "vehicle", true); setElementData(veh, "dayzvehicle", 1); local tires,engine,parts,slots = getVehicleAddonInfos(v[1]); setElementData(vehCol, "MAX_Slots", tonumber(slots)); setElementData(vehCol, "Tire_inVehicle", math.random(0, tires)); setElementData(vehCol, "Engine_inVehicle", math.random(0, engine)); setElementData(vehCol, "Parts_inVehicle", math.random(0, parts)); setElementData(vehCol, "spawn", {v[1], x, y, z}); setElementData(vehCol, "fuel", math.random(5, 20)); for _,v in ipairs(lootItems["helicrashsides"]) do local value = math.percentChance(v[5], math.random(2)); setElementData(vehCol, v[1], value); local ammoData,_ = getWeaponAmmoType(v[1], true); if (ammoData and value > 0) then setElementData(vehCol, ammoData, math.random(2)); end end end --backup(); end addEventHandler("onVehicleExplode", root, function() for _,v in pairs(getVehicleOccupants(source)) do triggerEvent("kilLDayZPlayer", v); end local x1,y1,z1 = getElementPosition(source); local col = getElementData(source, "parent"); local id,x,y,z = unpack(getElementData(col, "spawn")); setElementData(col, "deadVehicle", true); setElementData(source, "isExploded", true); if (getElementData(source, "dayzvehicle") == 1) then setTimer(respawnDayZVehicle, (10*60000), 1, id, x, y, z, col, source); end end); setTimer(function() for _,v in ipairs(getElementsByType("vehicle")) do if (getElementModel(v) ~= 453) then local col = getElementData(v, "parent"); if col then if not getElementData(col, "deadVehicle") then if isElementInWater(v) then local id,x,y,z = unpack(getElementData(col, "spawn")); if (getElementData(v, "dayzvehicle") == 1) then setTimer(respawnDayZVehicle, (5*60000), 1, id, x, y, z, col, v); end end end end end end end, (20*60000), 0); function respawnDayZVehicle(id, x, y, z, col, veh) destroyElement(col); destroyElement(veh); local veh = createVehicle(id, x, y, z + 1); local vehCol = createColSphere(x, y, z, 4); attachElements(vehCol, veh); setElementData(vehCol, "parent", veh); setElementData(veh, "parent", vehCol); setElementData(vehCol, "vehicle", true); setElementData(veh, "dayzvehicle", 1); local tires,engine,parts,slots = getVehicleAddonInfos(id); setElementData(vehCol, "MAX_Slots", slots); setElementData(vehCol, "Tire_inVehicle", math.random(0, tires)); setElementData(vehCol, "Engine_inVehicle", math.random(0, engine)); setElementData(vehCol, "Parts_inVehicle", math.random(0, parts)); setElementData(vehCol, "spawn", {id, x, y, z}); setElementData(vehCol, "fuel", 10); for _,v in ipairs(lootItems["helicrashsides"]) do local value = math.percentChance(v[5], math.random(2)); setElementData(vehCol, v[1], value); local ammoData,_ = getWeaponAmmoType(v[1], true); if (ammoData and value > 0) then setElementData(vehCol, ammoData, math.random(2)); end end end addEventHandler("respawnDayZVehicle", root, respawnDayZVehicle); function spawnVehiclePack(ps,cmd) if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(ps)),aclGetGroup("Admin")) then spawnDayZVehicles() outputChatBox("Vehicles has been spawned!",ps,255,0,0,true) end end addCommandHandler("svp",spawnVehiclePack) function getVehicleMaxFuel(id) for _,v in ipairs(vehicleFuelTable) do if (id == v[1]) then return v[2]; end end return false; end addEventHandler("onPlayerVehicleEnter", root, function(veh, seat) local id = getElementModel(veh); if (id == 548) then cancelEvent(); end if (id == 509) then return; end local col = getElementData(veh, "parent"); local tires,engine,parts,_ = getVehicleAddonInfos(id); setElementData(veh, "maxfuel", getVehicleMaxFuel(id)); setElementData(veh, "needtires", tires); setElementData(veh, "needparts", parts); setElementData(veh, "needengines", engine); setVehicleEngineState(veh, false); if (getElementData(col, "Parts_inVehicle") == parts) then setElementData(veh, "fuelloss", 5); else setElementData(veh, "fuelloss", 20); end if (getElementData(col, "Tire_inVehicle") == tires) then if (getElementData(col, "Engine_inVehicle") == engine) then if (getElementData(col, "fuel") > 0) then setVehicleEngineState(veh, true); if (seat == 0) then bindKey(source, "k", "down", setEngineStateByPlayer); outputChatBox("Press [K] to toggle the engine!", source, 255, 255, 255); end else triggerClientEvent(source, "displayClientInfo", source, "Fuel tank is empty!", 22, 255, 0); setVehicleEngineState(veh, false); end else triggerClientEvent(source, "displayClientInfo", source, "This veh doesn't have Engine!", 22, 255, 0); setVehicleEngineState(veh, false); end else triggerClientEvent(source, "displayClientInfo", source, "Some Tires are missing!", 22, 255, 0); setVehicleEngineState(veh, false); end setVehicleEngineState(veh, true); end); addEventHandler("onPlayerVehicleExit", root, function(veh, seat) if (seat == 0) then setVehicleEngineState(veh, false); unbindKey(source, "k", "down", setEngineStateByPlayer); end end); function getVehicleFuelRemove(id) for _,v in ipairs(vehicleFuelInfo) do if (v[1] == id) then return v[2]; end end end setTimer(function() for _,v in pairs(getElementsByType("vehicle")) do if (getElementModel(v) ~= 509) then if (getVehicleEngineState(v) == true) then local parent = getElementData(v, "parent"); local fuel = getElementData(parent, "fuel"); if (fuel >= 1) then setElementData(parent, "fuel", fuel-(getVehicleFuelRemove(getElementModel(v))*getElementData(v, "fuelloss"))/60); else setVehicleEngineState(v, false); end end end end end, 1000, 0); addEventHandler("repairVehicle", root, function(veh) if repairTimer[veh] then triggerClientEvent(source, "displayClientInfo", source, getVehicleName(veh).." is already in repair!", 255, 22, 0) return; end repairTimer[veh] = setTimer(fixDayZVehicle, (1000-(math.floor(getElementHealth(veh))))*120, 1, veh, source); setElementFrozen(veh, true); setElementFrozen(source, true); setPedWeaponSlot(source, 0); setElementData(veh, "repairer", source); setElementData(source, "repairingvehicle", veh); setElementData(source, "repairvehicle", true); setPedAnimation(source, "SCRATCHING", "sclng_r", nil, true, false); triggerClientEvent(source, "displayClientInfo", source, "Started to repair "..getVehicleName(veh), 22, 255, 0); end); function fixDayZVehicle(veh, player) setElementHealth(veh, 1000); fixVehicle(veh); setPedAnimation(player, false); setElementFrozen(veh, false); setElementFrozen(player, false); setElementData(player, "repairvehicle", false); repairTimer[veh] = nil; setElementData(veh, "repairer", nil); setElementData(player, "repairingvehicle", nil); triggerClientEvent(player, "displayClientInfo", player, "You repaired "..getVehicleName(veh), 22, 255, 0); end addEventHandler("onPlayerQuit", root, function() for _,v in ipairs(getElementsByType("vehicle")) do local rep = getElementData(v, "repairer"); if (rep and rep == source) then outputDebugString("Vehicle repairer disconnected - destroyed tables", 3); killTimer(repairTimer[v]); setElementFrozen(v, false); repairTimer[v] = nil; setElementData(v, "repairer", nil); end end end); function setEngineStateByPlayer(player) local veh = getPedOccupiedVehicle(player); if (getElementData(getElementData(veh,"parent"), "fuel") <= 0) then return; end setVehicleEngineState(veh, not getVehicleEngineState(veh)) if (getVehicleEngineState(veh) == false) then triggerClientEvent(player, "displayClientInfo", player, "Engine started!", 22, 255, 0); else triggerClientEvent(player, "displayClientInfo", player, "Engine stopped!", 255, 22, 0); end end function backup() dbExec(db, "DELETE FROM `vehicles`"); dbExec(db, "DELETE FROM `tents`"); local vc,tc = 0, 0; for _,veh in ipairs(getElementsByType("vehicle")) do if not getElementData(veh, "helicrash") then local col = getElementData(veh, "parent"); if col then local x,y,z = getElementPosition(veh); local rX,rY,rZ = getElementRotation(veh); if isVehicleBlown(veh) then health = 240; else health = getElementHealth(veh); end local _,sx,sy,sz = unpack(getElementData(col, "spawn")); local items = {}; vc = vc+1; for _,item in ipairs(backupItemsTable) do local quantity = getElementData(col, item[1]) or 0; if (quantity > 0) then table.insert(items, {item[1], quantity}); end end dbExec(db, "INSERT INTO `vehicles` (model, x, y, z, rX, rY, rZ, slots, fuel, engines, moving, parts, items, dayz, health, sx, sy, sz, id) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", getElementModel(veh), x, y, z, rX, rY, rZ, getElementData(col, "MAX_Slots") or 20, getElementData(col, "fuel") or 0, getElementData(col, "Engine_inVehicle") or 0, getElementData(col, "Tire_inVehicle") or 0, getElementData(col, "Parts_inVehicle") or 0, toJSON(items), getElementData(veh, "dayzvehicle") or 0, health, sx, sy, sz, vc); end end end for _,col in ipairs(getElementsByType("colshape")) do if getElementData(col, "tent") then local tent = getElementData(col, "parent"); if tent then local x,y,z = getElementPosition(tent); local rX,rY,rZ = getElementRotation(tent); local items = {}; tc = tc+1; for _,item in ipairs(backupItemsTable) do local quantity = getElementData(col, item[1]) or 0; if (quantity > 0) then table.insert(items, {item[1], quantity}); end end dbExec(db, "INSERT INTO `tents` (model, x, y, z, rX, rY, rZ, slots, scale, items, id) VALUES(?,?,?,?,?,?,?,?,?,?,?)", getElementModel(tent), x, y, z, rX, rY, rZ, getElementData(col, "MAX_Slots") or 100, getObjectScale(tent), toJSON(items), tc); end end end outputDebugString("Backup done ("..tc.." Tents) and ("..vc.." Vehicles)", 3); end function createDayzVeh(model, x, y, z, rX, rY, rZ, slots, fuel, engines, moving, parts, items, dayz, health, sx, sy, sz) local veh = createVehicle(model, x, y, z); local vehCol = createColSphere((x+5), y, z, 4); setElementRotation(veh, rX, rY, rZ); setElementData(veh, "parent", vehCol); setElementData(veh, "dayzvehicle", tonumber(dayz)); attachElements(vehCol, veh); setElementData(vehCol, "parent", veh); setElementData(vehCol, "vehicle", true); setElementData(vehCol, "MAX_Slots", tonumber(slots)); setElementData(vehCol, "Tire_inVehicle", tonumber(moving)); setElementData(vehCol, "Engine_inVehicle", tonumber(engines)); setElementData(vehCol, "Parts_inVehicle", tonumber(parts)); setElementData(vehCol, "spawn", {model, sx, sy, sz}); setElementData(vehCol, "fuel", tonumber(fuel)); for _,v in ipairs(fromJSON(items)) do setElementData(vehCol, v[1], v[2]); end if (health > 250) then setElementHealth(veh, tonumber(health)); else blowVehicle(veh, false); setTimer(respawnDayZVehicle, (10*60000), 1, model, x, y, z, vehCol, source); end end function createDayzTent(model, x, y, z, rX, rY, rZ, slots, scale, items) local tent = createObject(model, x, y, z); local tentCol = createColSphere(x, y, z, 4); setElementRotation(tent, rX, rY, rZ); setObjectScale(tent, scale); attachElements(tentCol, tent); setElementData(tentCol, "parent", tent); setElementData(tent, "parent", tentCol); setElementData(tentCol, "tent", true); setElementData(tentCol, "MAX_Slots", slots); for _,v in ipairs(fromJSON(items)) do setElementData(tentCol, v[1], v[2]); end end function loadBackup() for _,v in pairs(getElementsByType("vehicle")) do local col = getElementData(v, "parent"); if col then destroyElement(col); end destroyElement(v); end local p = dbPoll(dbQuery(db, "SELECT * FROM `vehicles`"), -1); if (#p > 0) then for _,d in pairs(p) do createDayzVeh(d["model"], d["x"], d["y"], d["z"], d["rX"], d["rY"], d["rZ"], d["slots"], d["fuel"], d["engines"], d["moving"], d["parts"], d["items"], d["dayz"], d["health"], d["sx"], d["sy"], d["sz"]); end end local p2 = dbPoll(dbQuery(db, "SELECT * FROM `tents`"), -1); if (#p2 > 0) then for _,d in pairs(p2) do createDayzTent(d["model"], d["x"], d["y"], d["z"], d["rX"], d["rY"], d["rZ"], d["slots"], d["scale"], d["items"]); end end end --[[ if not backupdone then spawnDayZVehicles(); backupdone = true; else loadBackup(); end setTimer(backup, (10*60000), 0); ]]-- addCommandHandler("dobackup", function(player) if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then backup(); end end); createPatrolPoints(); createHeliCrashSite(); createHospitalPacks(); Link to comment
JanKy Posted June 17, 2018 Author Share Posted June 17, 2018 Ohhh.. Nevermind, guys. I solved it. 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