local spawnPositions = {
{-278.6669921875,-2882.1572265625,32.104232788086},
{-958.5595703125,-2887.9912109375,64.82421875},
{-1816.9375,-2748.18359375,1.7327127456665},
{-2816.166015625,-2439.0546875,2.4004096984863},
{-2941.5673828125,-1206.2373046875,2.7848854064941},
{-2911.51171875,-895.22265625,2.4013109207153},
{-2185.6669921875,2957.380859375,11.474840164185},
{272.2265625,2928.505859375,1.3713493347168},
{2803.943359375,595.9365234375,7.7612648010254},
{2883.7509765625,-178.4658203125,3.2714653015137},
{-233.46484375,-1735.8173828125,1.5520644187927},
{-1056.8720703125,2939.068359375,42.311294555664},
}
local playerDataTable = {
{"alivetime"},
{"skin"},
{"MAX_Slots"},
{"bandit"},
{"blood"},
{"food"},
{"thirst"},
{"temperature"},
{"currentweapon_1"},
{"currentweapon_2"},
{"currentweapon_3"},
{"bleeding"},
{"brokenbone"},
{"pain"},
{"cold"},
{"infection"},
{"humanity"},
{"zombieskilled"},
{"headshots"},
{"murders"},
{"banditskilled"},
{"Wood Pile"},
{"Bandage"},
{"Water Bottle"},
{"Pasta Can"},
{"Beans Can"},
{"Burger"},
{"Box of Matches"},
{"M1911 Mag"},
{"M9 SD Mag"},
{"Desert Eagle Mag"},
{"M1911"},
{"M9 SD"},
{"Winchester 1866"},
{"PDW"},
{"Hunting Knife"},
{"Hatchet"},
{"Pizza"},
{"Morphine"},
{"Soda Bottle"},
{"Empty Gas Canister"},
{"Full Gas Canister"},
{"Roadflare"},
{"Milk"},
{"PDW Mag"},
{"MP5A5 Mag"},
{"AK Mag"},
{"M4 Mag"},
{"Tear Gas"},
{"Grenade"},
{"Desert Eagle"},
{"Sawn-Off Shotgun"},
{"SPAZ-12 Combat Shotgun"},
{"MP5A5"},
{"Watch"},
{"Medic Kit"},
{"Heat Pack"},
{"Lee Enfield"},
{"PDW"},
--{"TEC-9"},
{"AK-47"},
--{"M136 Rocket Launcher"},
{"Blood Bag"},
{"GPS"},
{"Map"},
{"Toolbox"},
{"Wire Fence"},
{"Tire"},
{"Engine"},
{"Tank Parts"},
{"M136 Rocket"},
{"CZ 550 Mag"},
{"Lee Enfield Mag"},
{"M4"},
{"CZ 550"},
--{"Heat-Seeking RPG"},
{"Satchel"},
{"Infrared Goggles"},
{"Night Vision Goggles"},
{"Tent"},
{"Raw Meat"},
{"Cooked Meat"},
{"Camouflage Clothing"},
{"Ghillie Suit"},
{"Civilian Clothing"},
{"Survivor Clothing"},
{"Painkiller"},
{"Binoculars"},
{"Empty Water Bottle"},
{"Empty Soda Cans"},
{"Scruffy Burgers"},
{"1866 Slug"},
{"2Rnd. Slug"},
{"SPAZ-12 Pellet"},
{"Radio Device"},
{"Baseball Bat"},
{"Shovel"},
{"Golf Club"},
{"Radio Device"},
{"Parachute"},
}
function playerLogin(username, pass, player)
local playerID = getAccountData(getPlayerAccount(player),"playerID")
account = getPlayerAccount(player)
local x,y,z = getAccountData(account,"last_x"),getAccountData(account,"last_y"),getAccountData(account,"last_z")
local skin = getAccountData(account,"skin")
createZombieTable (player)
if getAccountData(account,"isDead") then
spawnDayZPlayer(player)
return
end
spawnPlayer (player, x,y,z+0.5, math.random(0,360), skin, 0, 0)
setElementFrozen(player, true)
fadeCamera (player, true)
setCameraTarget (player, player)
setTimer( function(player)
if isElement(player) then
setElementFrozen(player, false)
end
end,500,1,player)
playerCol = createColSphere(x,y,z,1.5)
setElementData(player,"playerCol",playerCol)
attachElements ( playerCol, player, 0, 0, 0 )
setElementData(playerCol,"parent",player)
setElementData(playerCol,"player",true)
for i,data in ipairs(playerDataTable) do
local elementData = getAccountData(account,data[1])
if not elementData then
if data[1] == "brokenbone" or data[1] == "pain" or data[1] == "cold" or data[1] == "infection" or data[1] == "currentweapon_1" or data[1] == "currentweapon_2" or data[1] == "currentweapon_3" or data[1] == "bandit" then
elementData = elementData
else
elementData = 0
end
end
setElementData(player,data[1],elementData)
end
setElementData(player,"logedin",true)
--Weapons
--Old Weapons
local weapon = getElementData(player,"currentweapon_1")
if weapon then
local ammoData,weapID = getWeaponAmmoType (weapon)
giveWeapon(player,weapID,getElementData(player,ammoData), true )
end
local weapon = getElementData(player,"currentweapon_2")
if weapon then
local ammoData,weapID = getWeaponAmmoType (weapon)
giveWeapon(player,weapID,getElementData(player,ammoData), false )
end
local weapon = getElementData(player,"currentweapon_3")
if weapon then
local ammoData,weapID = getWeaponAmmoType (weapon)
giveWeapon(player,weapID,getElementData(player,ammoData), false )
end
setElementModel(player, getElementData(player,"skin"))
setElementData(player,"admin",getAccountData(account,"admin") or false)
setElementData(player,"supporter",getAccountData(account,"supporter") or false)
triggerClientEvent(player, "onClientPlayerDayZLogin", player)
end
addEvent("onPlayerDayZLogin", true)
addEventHandler("onPlayerDayZLogin", getRootElement(), playerLogin)
function playerRegister(username, pass, player)
local number = math.random(table.size(spawnPositions))
local x,y,z = spawnPositions[number][1],spawnPositions[number][2],spawnPositions[number][3]
spawnPlayer (player, x,y,z, math.random(0,360), 73, 0, 0)
fadeCamera (player, true)
setCameraTarget (player, player)
playerCol = createColSphere(x,y,z,1.5)
attachElements ( playerCol, player, 0, 0, 0 )
setElementData(playerCol,"parent",player)
setElementData(playerCol,"player",true)
----------------------------------
--Player Items on Start
for i,data in ipairs(playerDataTable) do
if data[1] =="Bandage" then
setElementData(player,data[1],2)
elseif data[1] =="Painkiller" then
setElementData(player,data[1],1)
elseif data[1] =="Map" then
setElementData(player,data[1],1)
elseif data[1] =="MAX_Slots" then
setElementData(player,data[1],8)
elseif data[1] =="skin" then
setElementData(player,data[1],73)
elseif data[1] =="blood" then
setElementData(player,data[1],12000)
elseif data[1] =="temperature" then
setElementData(player,data[1],37)
elseif data[1] =="brokenbone" then
setElementData(player,data[1],false)
elseif data[1] =="pain" then
setElementData(player,data[1],false)
elseif data[1] =="cold" then
setElementData(player,data[1],false)
elseif data[1] =="infection" then
setElementData(player,data[1],false)
elseif data[1] =="food" then
setElementData(player,data[1],100)
elseif data[1] =="thirst" then
setElementData(player,data[1],100)
elseif data[1] =="currentweapon_1" then
setElementData(player,data[1],false)
elseif data[1] =="currentweapon_2" then
setElementData(player,data[1],false)
elseif data[1] =="currentweapon_3" then
setElementData(player,data[1],false)
elseif data[1] =="bandit" then
setElementData(player,data[1],false)
elseif data[1] =="humanity" then
setElementData(player,data[1],2500)
else
setElementData(player,data[1],0)
end
end
account = getAccount(username)
local value = getAccounts()
local value = #value
setElementData(player,"playerID",value+1)
setAccountData(account,"playerID",value+1)
setElementData(player,"logedin",true)
createZombieTable (player)
end
addEvent("onPlayerDayZRegister", true)
addEventHandler("onPlayerDayZRegister", getRootElement(), playerRegister)
function saveAccounts () -- Save in the database
local account = getPlayerAccount(source)
if account then
for i,data in ipairs(playerDataTable) do
setAccountData(account,data[1],getElementData(source,data[1]))
end
local x,y,z = getElementPosition(source)
setAccountData(account,"last_x",x)
setAccountData(account,"last_y",y)
setAccountData(account,"last_z",z)
destroyElement(getElementData(source,"playerCol"))
end
setElementData(source,"logedin",false)
end
addEventHandler ( "onPlayerQuit", getRootElement(), saveAccounts )
function saveAccounts2 () -- Save in the database
for i, player in ipairs(getElementsByType("player")) do
local account = getPlayerAccount(player)
if account then
for i,data in ipairs(playerDataTable) do
setAccountData(account,data[1],getElementData(player,data[1]))
end
local x,y,z = getElementPosition(player)
setAccountData(account,"last_x",x)
setAccountData(account,"last_y",y)
setAccountData(account,"last_z",z)
end
--setElementData(player,"logedin",false)
end
end
addEventHandler ( "onResourceStop", getRootElement(), saveAccounts2 )
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
local vehicleDataTable = {
{"MAX_Slots"},
{"Tire_inVehicle"},
{"Engine_inVehicle"},
{"Parts_inVehicle"},
{"fuel"},
{"Wood Pile"},
{"Bandage"},
{"Water Bottle"},
{"Pasta Can"},
{"Beans Can"},
{"Burger"},
{"Box of Matches"},
{"M1911 Mag"},
{"M1911"},
{"M9 SD"},
{"Desert Eagle Mag"},
{"Winchester 1866"},
{"PDW"},
{"Hunting Knife"},
{"Morphine"},
{"Hatchet"},
{"Pizza"},
{"Soda Bottle"},
{"Empty Gas Canister"},
{"Full Gas Canister"},
{"Roadflare"},
{"Milk"},
{"PDW Mag"},
{"MP5A5 Mag"},
{"AK Mag"},
{"M4 Mag"},
{"Tear Gas"},
{"Grenade"},
{"Desert Eagle"},
{"Sawn-Off Shotgun"},
{"SPAZ-12 Combat Shotgun"},
{"MP5A5"},
{"Watch"},
{"Medic Kit"},
{"Heat Pack"},
{"Lee Enfield"},
--{"TEC-9"},
{"AK-47"},
--{"M136 Rocket Launcher"},
{"Blood Bag"},
{"GPS"},
{"Map"},
{"Toolbox"},
{"Wire Fence"},
{"Tire"},
{"Engine"},
{"Tank Parts"},
{"M136 Rocket"},
{"CZ 550 Mag"},
{"Lee Enfield Mag"},
{"M4"},
{"CZ 550"},
--{"Heat-Seeking RPG"},
{"Satchel"},
{"Infrared Goggles"},
{"Night Vision Goggles"},
{"Tent"},
{"Raw Meat"},
{"Cooked Meat"},
{"Camouflage Clothing"},
{"Ghillie Suit"},
{"Civilian Clothing"},
{"Survivor Clothing"},
{"Painkiller"},
{"Binoculars"},
{"Empty Water Bottle"},
{"Empty Soda Cans"},
{"Scruffy Burgers"},
{"1866 Slug"},
{"2Rnd. Slug"},
{"SPAZ-12 Pellet"},
{"Assault Pack (ACU)"},
{"Alice Pack"},
{"Czech Backpack"},
{"Coyote Backpack"},
{"Radio Device"},
{"Baseball Bat"},
{"Shovel"},
{"Golf Club"},
{"Parachute"},
}
--local vehicleManager = getAccount("vehicleManager","ds4f9$")
--if not vehicleManager then
--addAccount("vehicleManager","ds4f9$")
--end
function saveallvehicles(ps,command)
counter = 0
counterTent = 0
--delete Accounts
local vehicleManager = getAccount("vehicleManager","ds4f9$")
--for i = 1, (getAccountData(vehicleManager,"vehicleamount") or 0) do
--local account = getAccount("vehicle_number_"..i,"ds4f9$")
--if not account then break end
--removeAccount (account)
--end
--new Accounts + set
for i, col in ipairs (getElementsByType("colshape")) do
local veh = getElementData(col,"vehicle")
local helicrash = getElementData(col,"helicrash")
local hospitalbox = getElementData(col,"hospitalbox")
local tent = getElementData(col,"tent")
if veh and not helicrash or veh and not hospitalbox then
if tent then
counterTent = counterTent +1
account = getAccount("tent_number_"..counterTent,"ds4f9$") or false
if not account then
account = addAccount("tent_number_"..counterTent,"ds4f9$")
end
local tent = getElementData(col,"parent")
local x,y,z = getElementPosition(tent)
local rx,ry,rz = getElementRotation(tent)
setAccountData(account,"last_x",x)
setAccountData(account,"last_y",y)
setAccountData(account,"last_z",z)
setAccountData(account,"last_rx",rx)
setAccountData(account,"last_ry",ry)
setAccountData(account,"last_rz",rz)
for i, data in ipairs(vehicleDataTable) do
setAccountData(account,data[1],getElementData(col,data[1]))
end
else
counter = counter +1
account = getAccount("vehicle_number_"..counter,"ds4f9$") or false
if not account then
account = addAccount("vehicle_number_"..counter,"ds4f9$")
end
setAccountData(account,"spawn_x",getElementData(col,"spawn")[2])
setAccountData(account,"spawn_y",getElementData(col,"spawn")[3])
setAccountData(account,"spawn_z",getElementData(col,"spawn")[4])
for i, data in ipairs(vehicleDataTable) do
setAccountData(account,data[1],getElementData(col,data[1]))
end
local vehicle = getElementData(col,"parent")
local model = getElementModel(vehicle)
local x,y,z = getElementPosition(vehicle)
local rx,ry,rz = getElementRotation(vehicle)
local health = getElementHealth(vehicle)
setAccountData(account,"last_x",x)
setAccountData(account,"last_y",y)
setAccountData(account,"last_z",z)
setAccountData(account,"last_rx",rx)
setAccountData(account,"last_ry",ry)
setAccountData(account,"last_rz",rz)
setAccountData(account,"health",health)
setAccountData(account,"model",model)
setAccountData(account,"isExploded",getElementData(vehicle,"isExploded") or false)
end
end
setAccountData(account,"vehicleamount",counter)
setAccountData(accountr,"tentamount",counterTent)
end
end
addEventHandler("onResourceStop", getResourceRootElement(getThisResource()), saveallvehicles)
function doBackup ()
outputChatBox ("Server Backup...",getRootElement(),27, 89, 224,true)
saveallvehicles()
outputChatBox ("Done!",getRootElement(),27, 89, 224,true)
end
function checkDoBackup ()
if gameplayVariables["backupenabled"] then
setTimer(doBackup,gameplayVariables["backupinterval"],0)
end
end
checkDoBackup()
function createVehicleOnServerStart()
local vehicleManager = getAccount("vehicleManager","ds4f9$")
for i = 1, (getAccountData(vehicleManager,"vehicleamount") or 0) do
wastedVehicle = false
vehicle = getAccount("vehicle_number_"..i,"ds4f9$")
if not vehicle then break end
if getAccountData(vehicle,"isExploded") == true then
setAccountData(vehicle,"health",1000)
wastedVehicle = true
end
local veh = createVehicle(getAccountData(vehicle,"model"),getAccountData(vehicle,"last_x"),getAccountData(vehicle,"last_y"),getAccountData(vehicle,"last_z"),getAccountData(vehicle,"last_rx"),getAccountData(vehicle,"last_ry"),getAccountData(vehicle,"last_rz"))
vehCol = createColSphere(getAccountData(vehicle,"last_x"),getAccountData(vehicle,"last_y"),getAccountData(vehicle,"last_z"),4)
attachElements ( vehCol, veh, 0, 0, 0 )
setElementData(vehCol,"parent",veh)
setElementData(veh,"parent",vehCol)
setElementData(vehCol,"vehicle",true)
setElementData(vehCol,"MAX_Slots",getAccountData(vehicle,"MAX_Slots"))
setElementHealth(veh,getAccountData(vehicle,"health"))
--vehicle_indentifikation
xxx,yyy,zzz = getAccountData(vehicle,"spawn_x"),getAccountData(vehicle,"spawn_y"),getAccountData(vehicle,"spawn_z")
setElementData(vehCol,"spawn",{getAccountData(vehicle,"model"),xxx,yyy,zzz})
if wastedVehicle then
if getAccountData(vehicle,"model") == 497 then
item_id = math.random(table.size(hunterSpawns))
xxx,yyy,zzz = hunterSpawns[item_id][1],hunterSpawns[item_id][2],hunterSpawns[item_id][3]
end
if getAccountData(vehicle,"model") == 487 then
local item_id = math.random(table.size(maverikSpawns))
x,y,z = maverikSpawns[item_id][1],maverikSpawns[item_id][2],maverikSpawns[item_id][3]
end
setElementPosition(veh,xxx,yyy,zzz+1)
setElementRotation(veh,0,0,0)
--Engine + Tires + Tank Parts
local tires,engine,parts = getVehicleAddonInfos (getElementModel(veh))
setElementData(vehCol,"Tire_inVehicle",math.random(0,tires))
setElementData(vehCol,"Engine_inVehicle",math.random(0,engine))
setElementData(vehCol,"Parts_inVehicle",math.random(0,parts))
end
--others
setElementData(vehCol,"fuel",getAccountData(vehicle,"fuel"))
if not wastedVehicle then
for i, data in ipairs(vehicleDataTable) do
setElementData(vehCol,data[1],getAccountData(vehicle,data[1]))
end
else
if getElementModel(veh) == 433 or getElementModel(veh) == 470 then
for i,items in ipairs(lootItems["helicrashsides"]) do
local randomNumber = math.random(1,10)
if randomNumber == 5 then
setElementData(vehCol,items[1],math.random(1,2))
end
end
end
setElementData(vehCol,"fuel",10)
end
end
for i = 1, (getAccountData(vehicleManager,"tentamount") or 0) do
tentData = getAccount("tent_number_"..i,"ds4f9$")
if not tentData then break end
tent = createObject(3243,getAccountData(tentData,"last_x"),getAccountData(tentData,"last_y"),getAccountData(tentData,"last_z"),0,0,(getAccountData(tentData,"last_rz") or 0))
setObjectScale(tent,1.3)
tentCol = createColSphere(getAccountData(tentData,"last_x"),getAccountData(tentData,"last_y"),getAccountData(tentData,"last_z"),4)
attachElements ( tentCol, tent, 0, 0, 0 )
setElementData(tentCol,"parent",tent)
setElementData(tent,"parent",tentCol)
setElementData(tentCol,"tent",true)
setElementData(tentCol,"vehicle",true)
setElementData(tentCol,"MAX_Slots",100)
for i, data in ipairs(vehicleDataTable) do
setElementData(tentCol,data[1],getAccountData(tentData,data[1]))
end
end
end
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), createVehicleOnServerStart)