welsonex Posted October 25, 2017 Share Posted October 25, 2017 Error: Quote [2017-10-25 18:13:43] WARNING: [DayZ-MTA]/save/save_server.lua:55: Bad argument @ 'getElementRotation' [Expected element at argument 1] [2017-10-25 18:13:43] ERROR: [DayZ-MTA]/save/save_server.lua:66: attempt to concatenate local 'rot' (a nil value) Script: addEventHandler("onResourceStart",resourceRoot, function() database = dbConnect("sqlite","database.db") local name = getServerName() if string.find (name,"Default MTA Serfer") then if auto_load == true then loadDataBase() end return true end cancelEvent() end) local FanboxDayZ = getResourceFromName "DayZ" function onStart() if getResourceState(FanboxDayZ) == "running"then outputChatBox(" ",player,255,255,255,true) outputChatBox("#FF0000Project Paradise #FFFFFFСервер ON...",player,255,255,255,true) saveDataBased() end end setTimer(onStart,backTime,0) function loadDataBase() local qh = dbQuery(database,"SELECT * FROM vehicles") if qh then local result,num_affected_rows,errmsg = dbPoll(qh,-1) if num_affected_rows > 0 then for result,row in pairs (result) do createNewVehicle(row) end end end local qh = dbQuery(database,"SELECT * FROM tents") if qh then local result,num_affected_rows,errmsg = dbPoll(qh,-1) if num_affected_rows > 0 then for result,row in pairs (result) do createNewTent(row,"tent") end end end end function saveDataBased() outputChatBox(" ",getRootElement(),255,255,255,true) outputChatBox("#FF0000Project Paradise:#FFFFFF Идет сохранение данных сервера...",getRootElement(),255,255,255,true) destroyDataBase("tents") destroyDataBase("vehicles") for i,tent in ipairs(getElementsByType("colshape")) do if getElementData(tent,"tent") then local x,y,z = getElementPosition(tent) local col = getElementData(tent,"parent") local rotx,roty,rot = getElementRotation(getElementData(tent,"parent")) local dataT = {} local noDeleteTent = false for i,v in ipairs(serverData["items"]) do local data = getElementData(tent,v[1]) or 0 if data > 0 then noDeleteTent = true end table.insert(dataT,{v[1],data}) end if noDeleteTent == true then local result = dbQuery( database,"INSERT INTO `tents` VALUES ('"..x.."', '"..y.."', '"..z.."', '"..rot.."','"..toJSON(dataT).."');") dbFree (result) else destroyElement(tent) destroyElement(col) end end end for index,element in ipairs(getElementsByType("vehicle")) do local x,y,z = getElementPosition(element) local col = getElementData(element,"parent") local rotx,roty,rot = getElementRotation(element) local model = getElementModel(element) local health = getElementHealth(element) local dataT = {} for i,v in ipairs(serverData["items"]) do if col ~= false then local data = getElementData(col,v[1]) or 0 table.insert(dataT,{v[1],data}) end end for i,v in ipairs(serverData["vehicle"]) do if col ~= false then local data = getElementData(col,v[1]) or 0 table.insert(dataT,{v[1],data}) end end local result = dbQuery(database,"INSERT INTO `vehicles` VALUES ('"..model.."','"..x.."', '"..y.."', '"..z.."', '"..rot.."','"..health.."', '"..toJSON(dataT).."');") dbFree(result) end outputChatBox("#FF0000Project Paradise:#FFFFFF Сохранение данных успешно завершено..",getRootElement(),255,255,255,true) setTimer ( function() baseCopy() end,10000,1) end function autoStopSave() if auto_save == true then saveDataBased() end end addEventHandler("onResourceStop",getResourceRootElement(getThisResource()),autoStopSave) addCommandHandler("save",function(player) if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)),aclGetGroup(adm_group)) then saveDataBased() end end) addCommandHandler("load",function(player) if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)),aclGetGroup(adm_group)) then if auto_load == true then outputChatBox("Включена автоматическая загрузка данных, загружать в ручную нельзя.",player,255,0,0,true) outputChatBox("Используйте собственную секретную команду для управления автозагрузкой.",player,255,0,0,true) return true end loadDataBase() outputChatBox("#00cc00Данные с базы загружены.",player,255,255,255,true) end end) addCommandHandler("autoloadoff",function(player) if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)),aclGetGroup(adm_group)) then if auto_load == true then auto_load = false outputChatBox("Автозагрузка временно отключена!",player) else auto_load = true outputChatBox("Автозагрузка временно включена!",player) end end end) addCommandHandler("autolsaveoff",function(player) if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)),aclGetGroup(adm_group)) then if auto_save == true then auto_save = false outputChatBox("Автоматическое сохранение временно отключено!",player) else auto_save = true outputChatBox("Автоматическое сохранение временно включено!",player) end end end) function destroyDataBase(base) if base == "vehicles" then local qh = dbQuery(database,"DELETE FROM vehicles") local result = dbPoll(qh,-1) elseif base == "tents" then local qh = dbQuery(database,"DELETE FROM tents") local result = dbPoll(qh,-1) end end function createNewVehicle(row) local model = tonumber(row['model']) local data = fromJSON(row['data']) local x = tonumber(row['x']) local y = tonumber(row['y']) local z = tonumber(row['z']) local r = tonumber(row['r']) local health = tonumber(row['health']) veh = createVehicle(model,x,y,z,0,0,r) vehCol = createColSphere(x,y,z,3) attachElements(vehCol,veh,0,0,0) setElementData(vehCol,"parent",veh) setElementData(veh,"parent",vehCol) setElementData(vehCol,"vehicle",true) setElementData(vehCol,"ID",row) setElementHealth(veh,health) for i,v in pairs(data) do setElementData(vehCol,v[1],v[2]) end end function createNewTent(row,class) local data = fromJSON(row['data']) local x = tonumber(row['x']) local y = tonumber(row['y']) local z = tonumber(row['z']) local r = tonumber(row['r']) if class == "tent" then tent = createObject(2220,x,y,z,0,0,r) tentCol = createColSphere(x,y,z,4) attachElements(tentCol,tent,0,0,0) setElementData(tentCol,"parent",tent) setElementData(tent,"parent",tentCol) setElementData(tentCol,"tent",true) setElementData(tentCol,"vehicle",true) for i,v in pairs(data) do setElementData(tentCol,v[1],v[2]) end if getElementData(tentCol,"MAX_Slots") == false or nil then setElementData(tentCol,"MAX_Slots",200) end if getElementData(tentCol,"MAX_Slots") == 200 then setElementModel(tent,2220) elseif getElementData(tentCol,"MAX_Slots") == 300 then setElementModel(tent,2218) elseif getElementData(tentCol,"MAX_Slots") == 500 then setElementModel(tent,2222) end end end function baseCopy() local randomName = randomString(10) local time = getRealTime() local second = time.second local minute = time.minute local hour = time.hour local monthday = time.monthday local month = time.month local year = time.year local players = getPlayerCount() fileCopy("database.db","database_backup/"..monthday.."."..month + 1 ..".".. year + 1900 .."_"..hour.."."..minute.."."..second.."_"..randomName.."_"..players..".db") end function randomString(sym_num) symbols = {"A","a","B","b","C","c","D","d","I","i","J","j","K","k","L","l","M","m","N","n","O","o","P","p","Q","q","R","r","T","t","U","u","V","v","W","w","X","x","Y","y","Z","z"} local pass = "" for i = 1, sym_num do if math.random (1,2) == 1 then pass = pass..tostring(math.random(0,9)) else pass = pass..symbols[math.random(1,#symbols)] end end return pass end adm_group = "Admin" backTime = 36000000 auto_load = false auto_save = false serverData = { ["vehicle"] = { {"MAX_Slots"}, {"magaz"}, {"Колесо_inVehicle"}, {"Двигатель_inVehicle"}, {"Parts_inVehicle"}, {"receiver"}, {"vehicle:station"}, {"fuel"}, {"spawn"}, }, ["items"] = { {"murders_total"}, {"alivetime"}, {"alivetime_total"}, {"skin"}, {"MAX_Slots"}, {"blood"}, {"food"}, {"thirst"}, {"currentweapon_1"}, {"currentweapon_2"}, {"currentweapon_3"}, {"headshots"}, {"murders"}, {"zombieskilled"}, {"zombieskilled_total"}, {"Фляга"}, {"Банка макарон"}, {"Банка бобов"}, {"Гамбургер"}, {"Makarov.PM Mag"}, {"Балончик с краской(красн.)"}, {"Балончик с краской(синий.)"}, {"Балончик с краской(зеленый.)"}, {"Балончик с краской(желт.)"}, {"Балончик с краской(черный.)"}, {"Балончик с краской(розовый.)"}, {"M9 SD Mag"}, {".45ACP"}, {"Makarov.PM"}, {"Краска (красн.)"}, {"Краска (синий.)"}, {"Краска (зеленый.)"}, {"Краска (желт.)"}, {"Краска (черный.)"}, {"Краска (розовый.)"}, {"M9 SD"}, {"Remington 870"}, {"PDW"}, {"Нож"}, {"Топор"}, {"Пицца"}, {"Банка соды"}, {"Фаер"}, {"Молоко"}, {"PDW Mag"}, {"MP5A5 Mag"}, {"PKP Mag"}, {"STANAG"}, {"Магнитола"}, {"Слезаточивый газ"}, {"Осколочная граната"}, {"Magnum"}, {"Double Shotgun"}, {"Shotgun SPA (Элит)"}, {"MP5A5"}, {"Часы"}, {"Аптечка"}, {"Арбалет"}, {"PDW"}, {"PKP"}, {"Навигатор"}, {"Карта"}, {"Набор инструментов"}, {"Колючая проволока"}, {"DMR Mag"}, {"Сейф"}, {"Стрелы"}, {"M4A1"}, {"DMR"}, {"Инфракрасные очки"}, {"Прибор ночного видения"}, {"Палатка (Армейская)"}, {"Палатка (Туристическая)"}, {"Палатка (Автомобильная)"}, {"Курильщик (скин)"}, {"скин Розиты"}, {"Снайпер (скин)"}, {"Анархист (скин)"}, {"Боб Дортон (скин)"}, {"Призрак (скин)"}, {"Пилот (скин)"}, {"Солдат (скин)"}, {"скин Выжившей №1"}, {"Джон Уик (скин)"}, {"Полицейский (скин)"}, {"Выживший (скин)"}, {"Скин Мерла Диксона"}, {"Скин Дерила Диксона"}, {"Черный бандит (скин)"}, {"Админ Скин"}, {"Гражданский (скин)"}, {"Бинокль"}, {"Пустая фляга"}, {"Пустая банка соды"}, {"Деньги"}, {"Колесо"}, {"Двигатель"}, {"Пустая канистра"}, {"Полная канистра"}, {"Бензобак"}, {"Remington Pellet"}, {"2Rnd. Slug"}, {"Shotgun SPA Pellet"}, {"Рация"}, {"Молот"}, {"Лопата"}, {"Лом"}, {"Парашют"}, {"M240"}, {"MG 36 LT"}, {"M249 SAW"}, {"M24"}, {"AS50"}, {"M107"}, {"KVSK"}, {"M4A1 CCO SD"}, {"M16A2"}, {"AKM"}, {"M16A4 ACOG"}, {"AK-47"}, {"M240 Mag"}, {"MG 36 LT Mag"}, {"M249 Mag"}, {"M24 Mag"}, {"AS50 Mag"}, {"M107 Mag"}, {"KVSK Mag"}, {"AK Mag"}, {"M16A2 Mag"}, {"M16A4 Mag"}, {"AKM Mag"}, {"Рюкзак Assault[20]"}, {"Мешок[30]"}, {"Рюкзак Alice[40]"}, {"Чешский рюкзак[50]"}, {"Военный рюкзак[60]"}, {"Рюкзак Montain[70]"}, {"Рюкзак Vega[80]"}, {"Рюкзак Coyote[100]"}, {"Тактический рюкзак[150]"}, {"clothBody"}, {"clothHead"}, {"Шлем: juggernaut [защ. 97]"}, {"Шлем: Болотный [защ. 97]"}, {"Каска: Камуфляжная [защ. 70]"}, {"Шлем: Камуфляжный с повязкой [защ. 20]"}, {"Шлем: C.E.L.L [защ. 99]"}, {"Капюшон: Ghille (Лес) [защ. 0]"}, {"Гл.убор: Чёрный Берет [защ. 0]"}, {"Гл.убор: Красный Берет [защ. 0]"}, {"Гл.убор: Камуфляжная кепка [защ. 0]"}, {"Плащ: Ghille [защ. 0] (Лес)"}, {"Бронежилет: Противоударный [защ. 30]"}, {"Бронежилет: Баллистический [защ. 60]"}, {"Бронежилет: Тактический [защ. 50]"}, {"Бронежилет: Смерч [защ. 80]"}, }, } 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