Jump to content

Help me please


welsonex

Recommended Posts

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

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