USER
-- inventory.lua
-- Предметы инвентаря по классам и действия, которые можно с ними выполнить
inventoryItems = {
["Weapons"] = {
["Primary Weapon"] = {
{"М4А1 CCO",3},
{"CZ550",3},
{"Винчестер 1866",3},
{"SPAZ-12 Combat Shotgun",3},
{"Sawn-Off Shotgun",3},
{"AK-74",3},
{"Lee Enfield",3},
--{"Heat-Seeking RPG",5},
--{"M136 Rocket Launcher",5},
},
["Secondary Weapon"] = {
{"M1911",2},
{"M9 SD",2},
{"PDW",2},
--{"TEC-9",2},
{"MP5A5",3},
{"Револьвер",2},
{"Охотничий нож",1},
{"Топор",2},
{"Бейсбольная бита",2},
{"Лопата",2},
{"Клюшка для гольфа",2},
},
["Specially Weapon"] = {
{"Парашют",1},
{"Tear Gas",1},
{"Оск. граната M67",1},
{"Бинокль",1}
},
},
["Ammo"] = {
{"M1911 Mag",0.085},
{"M9 SD Mag",0.085},
{".45ACP",0.085},
{"PDW Mag",0.025},
{"MP5A5 Mag",0.025},
{"AK",0.035},
{"STANAG",0.035},
{"1866 Slug",0.067},
{"2Rnd. Slug",0.067},
{"SPAZ-12 Pellet",0.067},
{"CZ550 Mag",0.1},
{"Lee Enfield Mag",0.1},
--{"M136 Rocket",2},
},
["Food"] = {
{"Фляга",1},
{"Банка макарон",1},
{"Банка бобов",1},
{"Гамбургер",1},
{"Пицца",1},
{"Банка соды",1},
{"Молоко",1},
{"Сырое мясо",1},
},
["Items"] = {
{"Дрова",2},
{"Бинт",1,"Перевязаться"},
{"Фаер",1,"Зажечь"},
{"Пустая канистра",2},
{"Наполненная канистра",2},
{"Аптечка",2,"Исп."},
{"Грелка",1,"Исп."},
{"Болеутоляющие",1,"Исп."},
{"Морфий",1,"Исп."},
{"Пакет крови",1,"Исп."},
{"Колючая проволока",1,"Поставить проволоку"},
{"Жареное мясо",1},
{"Колесо",2},
{"Двигатель",5},
{"Бензобак",3},
{"Палатка",3,"Разложить"},
{"Армейский камуфляж",1,"Переодется"},
{"Женский скин",1,"Переодется"},
{"Одежда выжившего",1,"Переодется"},
{"Камуфляж снайпера",1,"Переодется"},
{"Пустая фляга",1,"Наполнить"},
{"Пустая банка соды",1},
{"Объедки",1},
{"Assault Pack (ACU)",1},
{"Alice Pack",1},
{"Czech Backpack",1},
{"Coyote Backpack",1},
},
["Toolbelt"] = {
{"Очки ночного видения",1},
{"Инфокрасные очки",1},
{"Карта",1},
{"Спички",1,"Поджечь"},
{"Часы",1},
{"GPS",1},
{"Инструменты",1},
{"Рация",1},
},
}
-- Код инвентаря
local headline = {}
local gridlistItems = {}
local buttonItems = {}
inventoryWindows = guiCreateWindow(0.15, 0.28, 0.72, 0.63, "", true)
-- inventoryWindows = guiCreateStaticImage(0.25,0.25,0.5,0.5,"images/scrollmenu_1.png",true)
headline["loot"] = guiCreateLabel(0.06, 0.05, 0.34, 0.09,"Обыскать",true,inventoryWindows)
guiLabelSetHorizontalAlign (headline["loot"],"center")
guiSetFont (headline["loot"], "default-bold-small" )
headline["inventory"] = guiCreateLabel(0.60, 0.05, 0.34, 0.09,"Инвентарь",true,inventoryWindows)
guiLabelSetHorizontalAlign (headline["inventory"],"center")
guiSetFont (headline["inventory"], "default-bold-small" )
gridlistItems["loot"] = guiCreateGridList (0.03, 0.10, 0.39, 0.83,true,inventoryWindows)
gridlistItems["loot_colum"] = guiGridListAddColumn( gridlistItems["loot"], "Inventory", 0.7 )
gridlistItems["loot_colum_amount"] = guiGridListAddColumn( gridlistItems["loot"], "", 0.2 )
gridlistItems["inventory"] = guiCreateGridList (0.57, 0.11, 0.39, 0.83,true,inventoryWindows)
gridlistItems["inventory_colum"] = guiGridListAddColumn( gridlistItems["inventory"], "Inventory", 0.7 )
gridlistItems["inventory_colum_amount"] = guiGridListAddColumn( gridlistItems["inventory"], "", 0.2 )
buttonItems["loot"] = guiCreateButton(0.42, 0.17, 0.04, 0.69, "->", true,inventoryWindows)
buttonItems["inventory"] = guiCreateButton(0.53, 0.17, 0.04, 0.69, "<-", true,inventoryWindows)
headline["slots"] = guiCreateLabel(0.62, 0.94, 0.29, 0.04,"Слоты:",true,inventoryWindows)
guiLabelSetHorizontalAlign (headline["slots"],"center")
guiLabelSetVerticalAlign (headline["slots"],"center")
guiSetFont (headline["slots"], "default-bold-small" )
headline["slots_loot"] = guiCreateLabel(0.07, 0.94, 0.29, 0.04,"Слоты:",true,inventoryWindows)
guiLabelSetHorizontalAlign (headline["slots_loot"],"center")
guiLabelSetVerticalAlign (headline["slots_loot"],"center")
guiSetFont (headline["slots_loot"], "default-bold-small" )
guiSetVisible(inventoryWindows,false)
function showInventory (key,keyState)
if getElementData(getLocalPlayer(),"logedin") then
if ( keyState == "down" ) then
guiSetVisible(inventoryWindows,not guiGetVisible(inventoryWindows))
showCursor(not isCursorShowing())
refreshInventory()
if guiGetVisible(inventoryWindows) == true then
onClientOpenInventoryStopMenu ()
else
hideRightClickInventoryMenu ()
end
if isPlayerInLoot() then
local col = getElementData(getLocalPlayer(),"currentCol")
local gearName = getElementData(getLocalPlayer(),"lootname")
refreshLoot(col,gearName)
end
end
end
end
bindKey ( "j", "down", showInventory )
function showInventoryManual ()
guiSetVisible(inventoryWindows,not guiGetVisible(inventoryWindows))
showCursor(not isCursorShowing())
refreshInventory()
if guiGetVisible(inventoryWindows) == true then
onClientOpenInventoryStopMenu ()
end
end
function hideInventoryManual ()
guiSetVisible(inventoryWindows,false)
showCursor(false)
hideRightClickInventoryMenu ()
end
addEvent("hideInventoryManual",true)
addEventHandler("hideInventoryManual",getLocalPlayer(),hideInventoryManual)
function refreshInventoryManual ()
refreshInventory()
end
addEvent("refreshInventoryManual",true)
addEventHandler("refreshInventoryManual",getLocalPlayer(),refreshInventoryManual)
function refreshLootManual (loot)
refreshLoot(loot)
end
addEvent("refreshLootManual",true)
addEventHandler("refreshLootManual",getLocalPlayer(),refreshLootManual)
function refreshInventory()
if ( gridlistItems["inventory_colum"] ) then --If the column has been created, fill it with players
row1,column1 = guiGridListGetSelectedItem ( gridlistItems["inventory"] )
guiGridListClear(gridlistItems["inventory"])
local row = guiGridListAddRow ( gridlistItems["inventory"] )
--guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],"ITEMS", false, false )
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],"Основное оружие", true, false )
for id, item in ipairs(inventoryItems["Weapons"]["Primary Weapon"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum_amount"],getElementData(getLocalPlayer(),item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],"Дополнительное оружие", true, false )
for id, item in ipairs(inventoryItems["Weapons"]["Secondary Weapon"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum_amount"],getElementData(getLocalPlayer(),item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],"Специальное оружие", true, false )
for id, item in ipairs(inventoryItems["Weapons"]["Specially Weapon"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum_amount"],getElementData(getLocalPlayer(),item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],"Боеприпасы", true, false )
for id, item in ipairs(inventoryItems["Ammo"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum_amount"],getElementData(getLocalPlayer(),item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],"Еда и вода", true, false )
for id, item in ipairs(inventoryItems["Food"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum_amount"],getElementData(getLocalPlayer(),item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],"Прочее", true, false )
for id, item in ipairs(inventoryItems["Items"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum_amount"],getElementData(getLocalPlayer(),item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],"Инструменты", true, false )
for id, item in ipairs(inventoryItems["Toolbelt"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["inventory"] )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["inventory"], row, gridlistItems["inventory_colum_amount"],getElementData(getLocalPlayer(),item[1]), false, false )
end
end
if row1 and column1 then
guiGridListSetSelectedItem ( gridlistItems["inventory"], row1,column1)
end
guiSetText(headline["slots"],"Слоты: "..getPlayerCurrentSlots().."/"..getPlayerMaxAviableSlots())
end
end
function refreshLoot(loot,gearName)
if loot == false then
guiGridListClear(gridlistItems["loot"])
guiSetText(headline["loot"],"Пусто")
return
end
if ( gridlistItems["loot_colum"] ) then
row2,column2 = guiGridListGetSelectedItem ( gridlistItems["inventory"] )
guiGridListClear(gridlistItems["loot"])
if gearName then
guiSetText(headline["loot"],gearName)
end
local row = guiGridListAddRow ( gridlistItems["loot"] )
--guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],"Weapons", true, false )
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],"Основное оружие", true, false )
for id, item in ipairs(inventoryItems["Weapons"]["Primary Weapon"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum_amount"],getElementData(loot,item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],"Дополнительное оружие", true, false )
for id, item in ipairs(inventoryItems["Weapons"]["Secondary Weapon"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum_amount"],getElementData(loot,item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],"Специальное оружие", true, false )
for id, item in ipairs(inventoryItems["Weapons"]["Specially Weapon"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum_amount"],getElementData(loot,item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],"Боеприпасы", true, false )
for id, item in ipairs(inventoryItems["Ammo"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum_amount"],getElementData(loot,item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],"Еда и вода", true, false )
for id, item in ipairs(inventoryItems["Food"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum_amount"],getElementData(loot,item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],"Прочее", true, false )
for id, item in ipairs(inventoryItems["Items"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum_amount"],getElementData(loot,item[1]), false, false )
end
end
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],"Инструменты", true, false )
for id, item in ipairs(inventoryItems["Toolbelt"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
local row = guiGridListAddRow ( gridlistItems["loot"] )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum"],item[1], false, false )
guiGridListSetItemText ( gridlistItems["loot"], row, gridlistItems["loot_colum_amount"],getElementData(loot,item[1]), false, false )
end
end
if row2 and column2 then
--guiGridListSetSelectedItem ( gridlistItems["loot"], row2,column2)
end
guiSetText(headline["slots_loot"],"Слоты: "..getLootCurrentSlots(loot).."/"..(getLootMaxAviableSlots(loot)or 0))
end
end
function getPlayerMaxAviableSlots()
return getElementData(getLocalPlayer(),"MAX_Slots")
end
function getLootMaxAviableSlots(loot)
return getElementData(loot,"MAX_Slots")
end
function getPlayerCurrentSlots()
local current_SLOTS = 0
for id, item in ipairs(inventoryItems["Weapons"]["Primary Weapon"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(getLocalPlayer(),item[1])
end
end
for id, item in ipairs(inventoryItems["Weapons"]["Secondary Weapon"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(getLocalPlayer(),item[1])
end
end
for id, item in ipairs(inventoryItems["Weapons"]["Specially Weapon"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(getLocalPlayer(),item[1])
end
end
for id, item in ipairs(inventoryItems["Ammo"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(getLocalPlayer(),item[1])
end
end
for id, item in ipairs(inventoryItems["Food"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(getLocalPlayer(),item[1])
end
end
for id, item in ipairs(inventoryItems["Items"]) do
if getElementData(getLocalPlayer(),item[1]) and getElementData(getLocalPlayer(),item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(getLocalPlayer(),item[1])
end
end
return math.floor(current_SLOTS)
end
function getLootCurrentSlots(loot)
local current_SLOTS = 0
for id, item in ipairs(inventoryItems["Weapons"]["Primary Weapon"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(loot,item[1])
end
end
for id, item in ipairs(inventoryItems["Weapons"]["Secondary Weapon"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(loot,item[1])
end
end
for id, item in ipairs(inventoryItems["Weapons"]["Specially Weapon"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(loot,item[1])
end
end
for id, item in ipairs(inventoryItems["Ammo"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(loot,item[1])
end
end
for id, item in ipairs(inventoryItems["Food"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(loot,item[1])
end
end
for id, item in ipairs(inventoryItems["Items"]) do
if getElementData(loot,item[1]) and getElementData(loot,item[1]) >= 1 then
current_SLOTS = current_SLOTS + item[2]*getElementData(loot,item[1])
end
end
return math.floor(current_SLOTS)
end
function getItemSlots(itema)
local current_SLOTS = 0
for id, item in ipairs(inventoryItems["Weapons"]["Primary Weapon"]) do
if itema == item[1] then
return item[2]
end
end
for id, item in ipairs(inventoryItems["Weapons"]["Secondary Weapon"]) do
if itema == item[1] then
return item[2]
end
end
for id, item in ipairs(inventoryItems["Weapons"]["Specially Weapon"]) do
if itema == item[1] then
return item[2]
end
end
for id, item in ipairs(inventoryItems["Ammo"]) do
if itema == item[1] then
return item[2]
end
end
for id, item in ipairs(inventoryItems["Food"]) do
if itema == item[1] then
return item[2]
end
end
for id, item in ipairs(inventoryItems["Items"]) do
if itema == item[1] then
return item[2]
end
end
return false
end
function isToolbeltItem(itema)
local current_SLOTS = 0
for id, item in ipairs(inventoryItems["Toolbelt"]) do
if itema == item[1] then
return true
end
end
return false
end
vehicleAddonsInfo = {
-- {Model ID, Колеса, Двигатель, Бензобак}
{422,4,1,1},
{470,4,1,1},
{468,2,1,1},
{433,6,1,1},
{437,6,1,1},
{509,0,0,0},
{487,0,1,1},
{497,0,1,1},
{453,0,1,1},
}
function getVehicleAddonInfos (id)
for i,veh in ipairs(vehicleAddonsInfo) do
if veh[1] == id then
return veh[2],veh[3], veh[4]
end
end
end
--OTHER ITEM STUFF
vehicleFuelTable = {
-- {Model ID, Max Бензин}
{411,80},
{500,80},
{471,30},
{422,80},
{470,100},
{468,30},
{433,140},
{437,140},
{509,0},
{487,60},
{497,60},
{453,60},
}
function getVehicleMaxFuel(loot)
local modelID = getElementModel(getElementData(loot,"parent"))
for i,vehicle in ipairs(vehicleFuelTable) do
if modelID == vehicle[1] then
return vehicle[2]
end
end
return false
end
function onPlayerMoveItemOutOfInventory ()
if playerMovedInInventory then startRollMessage2("Inventory", "Не торопись!", 255, 22, 0 ) return end -- [ID:0000005 - Several grammar + spelling mistakes and typos] //L
local itemName = guiGridListGetItemText ( gridlistItems["inventory"], guiGridListGetSelectedItem ( gridlistItems["inventory"] ), 1 )
if getElementData(getLocalPlayer(),itemName) and getElementData(getLocalPlayer(),itemName) >= 1 then
if isPlayerInLoot() then
local isVehicle = getElementData(isPlayerInLoot(),"vehicle")
local isTent = getElementData(isPlayerInLoot(),"tent")
if isVehicle and not isTent then
local veh = getElementData(isPlayerInLoot(),"parent")
local tires,engine,parts = getVehicleAddonInfos (getElementModel(veh))
if itemName == "Колесо" and (getElementData(isPlayerInLoot(),"Колесо_inVehicle") or 0) < tires or itemName == "Двигатель" and (getElementData(isPlayerInLoot(),"Двигатель_inVehicle") or 0) < engine or itemName == "Бензобак" and (getElementData(isPlayerInLoot(),"Parts_inVehicle") or 0) < parts then
if itemName == "Бензобак" then itemName = "Parts" end
triggerEvent("onPlayerMoveItemOutOFInventory",getLocalPlayer(),itemName.."_inVehicle",isPlayerInLoot())
playerMovedInInventory = true
setTimer(function()
playerMovedInInventory = false
end,700,1)
elseif isToolbeltItem(itemName) then
triggerEvent("onPlayerMoveItemOutOFInventory",getLocalPlayer(),itemName,isPlayerInLoot())
playerMovedInInventory = true
setTimer(function()
playerMovedInInventory = false
end,700,1)
elseif getLootCurrentSlots(getElementData(getLocalPlayer(),"currentCol")) + getItemSlots(itemName) <= getLootMaxAviableSlots(isPlayerInLoot()) then
triggerEvent("onPlayerMoveItemOutOFInventory",getLocalPlayer(),itemName,isPlayerInLoot())
playerMovedInInventory = true
setTimer(function()
playerMovedInInventory = false
end,700,1)
else
startRollMessage2("Inventory", "Инвентарь полон!", 255, 22, 0 )
return
end
elseif isToolbeltItem(itemName) then
triggerEvent("onPlayerMoveItemOutOFInventory",getLocalPlayer(),itemName,isPlayerInLoot())
playerMovedInInventory = true
setTimer(function()
playerMovedInInventory = false
end,700,1)
elseif getLootCurrentSlots(getElementData(getLocalPlayer(),"currentCol")) + getItemSlots(itemName) <= getLootMaxAviableSlots(isPlayerInLoot()) then
triggerEvent("onPlayerMoveItemOutOFInventory",getLocalPlayer(),itemName,isPlayerInLoot())
playerMovedInInventory = true
setTimer(function()
playerMovedInInventory = false
end,700,1)
else
startRollMessage2("Inventory", "Инвентарь полон!", 255, 22, 0 )
return
end
else
triggerEvent("onPlayerMoveItemOutOFInventory",getLocalPlayer(),itemName,isPlayerInLoot())
playerMovedInInventory = true
setTimer(function()
playerMovedInInventory = false
end,700,1)
end
end
local gearName = guiGetText(headline["loot"])
local col = getElementData(getLocalPlayer(),"currentCol")
setTimer(refreshInventory,200,2)
if isPlayerInLoot() then
setTimer(refreshLoot,200,2,col,gearName)
end
end
addEventHandler ( "onClientGUIClick", buttonItems["inventory"], onPlayerMoveItemOutOfInventory )
function onPlayerMoveItemOutOFInventory (itemName,loot)
local itemPlus = 1
if itemName == "M1911 Mag" then
itemPlus = 7
elseif itemName == "M9 SD Mag" then
itemPlus = 15
elseif itemName == ".45ACP" then
itemPlus = 7
elseif itemName == "PDW Mag" then
itemPlus = 30
elseif itemName == "MP5A5 Mag" then
itemPlus = 20
elseif itemName == "AK" then
itemPlus = 30
elseif itemName == "STANAG" then
itemPlus = 20
elseif itemName == "1866 Slug" then
itemPlus = 7
elseif itemName == "2Rnd. Slug" then
itemPlus = 2
elseif itemName == "SPAZ-12 Pellet" then
itemPlus = 7
elseif itemName == "CZ550 Mag" then
itemPlus = 5
elseif itemName == "Lee Enfield Mag" then
itemPlus = 10
elseif itemName == "M136 Rocket" then
itemPlus = 0
elseif itemName == "М4А1 CCO" or itemName == "AK-74" or itemName == "CZ550" or itemName == "Винчестер 1866" or itemName == "SPAZ-12 Combat Shotgun" or itemName == "Sawn-Off Shotgun" or itemName == "Heat-Seeking RPG" or itemName == "M136 Rocket Launcher" or itemName == "Lee Enfield" then
triggerServerEvent("removeBackWeaponOnDrop",getLocalPlayer())
end
if loot then
if not getElementData(loot,"itemloot") and getElementType(getElementData(loot,"parent")) == "vehicle" then
if itemName == "Наполненная канистра" then
if getElementData(loot,"fuel")+20 < getVehicleMaxFuel(loot) then
addingfuel = 20
elseif getElementData(loot,"fuel")+20 > getVehicleMaxFuel(loot)+15 then
triggerEvent ("displayClientInfo", getLocalPlayer(),"Vehicle","Бензобак полон!",255,22,0)
return
else
addingfuel = getVehicleMaxFuel(loot)-getElementData(loot,"fuel")
end
setElementData(loot,"fuel",getElementData(loot,"fuel")+addingfuel)
setElementData(getLocalPlayer(),itemName,getElementData(getLocalPlayer(),itemName)-itemPlus)
setElementData(getLocalPlayer(),"Пустая канистра",(getElementData(getLocalPlayer(),"Пустая канистра") or 0)+itemPlus)
triggerEvent ("displayClientInfo", getLocalPlayer(),"Vehicle","Вы заправили транспорт на 20 литров!",22,255,0)
return
end
end
end
itemName2 = itemName
if itemName == "Колесо_inVehicle" then itemName2 = "Колесо" end
if itemName == "Двигатель_inVehicle" then itemName2 = "Двигатель" end
if itemName == "Parts_inVehicle" then itemName2 = "Бензобак" end
if (getElementData(getLocalPlayer(),itemName2) or 0)/itemPlus < 1 then
triggerEvent ("displayClientInfo", getLocalPlayer(),"Inventory","Вы не можете использовать это!",255,22,0)
return
end
if loot then
setElementData(loot,itemName,(getElementData(loot,itemName) or 0)+1)
local players = getElementsWithinColShape (loot,"player")
if #players > 1 then
triggerServerEvent("onPlayerChangeLoot",getRootElement(),loot)
end
if not getElementData(loot,"itemloot") and getElementType(getElementData(loot,"parent")) == "vehicle" then
end
else
triggerServerEvent("playerDropAItem",getLocalPlayer(),itemName)
end
if itemName == "Колесо_inVehicle" then itemName = "Колесо" end
if itemName == "Двигатель_inVehicle" then itemName = "Двигатель" end
if itemName == "Parts_inVehicle" then itemName = "Бензобак" end
setElementData(getLocalPlayer(),itemName,getElementData(getLocalPlayer(),itemName)-itemPlus)
if loot and getElementData(loot,"itemloot") then
triggerServerEvent("refreshItemLoot",getRootElement(),loot,getElementData(loot,"parent"))
end
end
addEvent( "onPlayerMoveItemOutOFInventory", true )
addEventHandler( "onPlayerMoveItemOutOFInventory", getRootElement(), onPlayerMoveItemOutOFInventory )
function onPlayerMoveItemInInventory ()
local itemName = guiGridListGetItemText ( gridlistItems["loot"], guiGridListGetSelectedItem ( gridlistItems["loot"] ), 1 )
if isPlayerInLoot() then
if getElementData(isPlayerInLoot(),itemName) and getElementData(isPlayerInLoot(),itemName) >= 1 then
if not isToolbeltItem(itemName) then
if getPlayerCurrentSlots() + getItemSlots(itemName) <= getPlayerMaxAviableSlots() then
if not playerMovedInInventory then
triggerEvent("onPlayerMoveItemInInventory",getLocalPlayer(),itemName,isPlayerInLoot())
playerMovedInInventory = true
setTimer(function()
playerMovedInInventory = false
end,700,1)
else
startRollMessage2("Inventory", "Не торопись!", 255, 22, 0 )
return
end
else
startRollMessage2("Inventory", "Инвентарь полон!", 255, 22, 0 )
return
end
else
playerMovedInInventory = true
setTimer(function()
playerMovedInInventory = false
end,700,1)
triggerEvent("onPlayerMoveItemInInventory",getLocalPlayer(),itemName,isPlayerInLoot())
end
end
if isPlayerInLoot() then
local gearName = guiGetText(headline["loot"])
local col = getElementData(getLocalPlayer(),"currentCol")
setTimer(refreshInventory,200,2)
setTimer(refreshLoot,200,2,col,gearName)
end
end
end
addEventHandler ( "onClientGUIClick", buttonItems["loot"], onPlayerMoveItemInInventory )
function onPlayerMoveItemInInventory (itemName,loot)
local itemPlus = 1
if itemName == "M1911 Mag" then
itemPlus = 7
elseif itemName == "M9 SD Mag" then
itemPlus = 15
elseif itemName == ".45ACP" then
itemPlus = 7
elseif itemName == "PDW Mag" then
itemPlus = 30
elseif itemName == "MP5A5 Mag" then
itemPlus = 20
elseif itemName == "AK" then
itemPlus = 30
elseif itemName == "STANAG" then
itemPlus = 20
elseif itemName == "1866 Slug" then
itemPlus = 7
elseif itemName == "2Rnd. Slug" then
itemPlus = 2
elseif itemName == "SPAZ-12 Pellet" then
itemPlus = 7
elseif itemName == "CZ550 Mag" then
itemPlus = 5
elseif itemName == "Lee Enfield Mag" then
itemPlus = 10
elseif itemName == "M136 Rocket" then
itemPlus = 0
elseif itemName == "Assault Pack (ACU)" then
if getElementData(getLocalPlayer(),"MAX_Slots") == 12 then triggerEvent (getLocalPlayer(), "displayClientInfo", getLocalPlayer(),"Inventory","You are using this backpack already!",255,22,0) return end
if getElementData(getLocalPlayer(),"MAX_Slots") > 12 then triggerEvent (getLocalPlayer(), "displayClientInfo", getLocalPlayer(),"Inventory","The currently equipped backpack has more space!",255,22,0) return end
setElementData(getLocalPlayer(),"MAX_Slots",12)
setElementData(loot,itemName,getElementData(loot,itemName)-1)
itemPlus = 0
elseif itemName == "Alice Pack" then
if getElementData(getLocalPlayer(),"MAX_Slots") == 16 then triggerEvent (getLocalPlayer(), "displayClientInfo", getLocalPlayer(),"Inventory","You are using this backpack already!",255,22,0) return end
if getElementData(getLocalPlayer(),"MAX_Slots") > 16 then triggerEvent (getLocalPlayer(), "displayClientInfo", getLocalPlayer(),"Inventory","The currently equipped backpack has more space!",255,22,0) return end
setElementData(getLocalPlayer(),"MAX_Slots",16)
setElementData(loot,itemName,getElementData(loot,itemName)-1)
itemPlus = 0
elseif itemName == "Czech Backpack" then
if getElementData(getLocalPlayer(),"MAX_Slots") == 26 then triggerEvent (getLocalPlayer(), "displayClientInfo", getLocalPlayer(),"Inventory","You are using this backpack already!",255,22,0) return end
if getElementData(getLocalPlayer(),"MAX_Slots") > 26 then triggerEvent (getLocalPlayer(), "displayClientInfo", getLocalPlayer(),"Inventory","The currently equipped backpack has more space!",255,22,0) return end
setElementData(getLocalPlayer(),"MAX_Slots",26)
setElementData(loot,itemName,getElementData(loot,itemName)-1)
itemPlus = 0
elseif itemName == "Coyote Backpack" then
if getElementData(getLocalPlayer(),"MAX_Slots") == 36 then triggerEvent (getLocalPlayer(), "displayClientInfo", getLocalPlayer(),"Inventory","You already have the best backpack!",255,22,0) return end
if getElementData(getLocalPlayer(),"MAX_Slots") > 36 then triggerEvent (getLocalPlayer(), "displayClientInfo", getLocalPlayer(),"Inventory","The currently equipped backpack has more space!",255,22,0) return end
setElementData(getLocalPlayer(),"MAX_Slots",36)
setElementData(loot,itemName,getElementData(loot,itemName)-1)
itemPlus = 0
end
if loot then
--if itemPlus > (getElementData(loot,itemName) or 0) then
--itemPlus = getElementData(loot,itemName)
--end
setElementData(getLocalPlayer(),itemName,(getElementData(getLocalPlayer(),itemName) or 0)+itemPlus)
if itemPlus == 0 then
setElementData(loot,itemName,getElementData(loot,itemName)-0)
else
setElementData(loot,itemName,getElementData(loot,itemName)-1)
end
local players = getElementsWithinColShape (loot,"player")
if #players > 1 then
triggerServerEvent("onPlayerChangeLoot",getRootElement(),loot)
end
end
if getElementData(loot,"itemloot") then
triggerServerEvent("refreshItemLoot",getRootElement(),loot,getElementData(loot,"parent"))
end
end
addEvent( "onPlayerMoveItemInInventory", true )
addEventHandler( "onPlayerMoveItemInInventory", getRootElement(), onPlayerMoveItemInInventory )
function onClientOpenInventoryStopMenu ()
triggerEvent("disableMenu",getLocalPlayer())
end
function isPlayerInLoot()
if getElementData(getLocalPlayer(),"loot") then
return getElementData(getLocalPlayer(),"currentCol")
end
return false
end
------------------------------------------------------------------------------
--right-click menu
function onPlayerPressRightKeyInInventory ()
local itemName = guiGridListGetItemText ( gridlistItems["inventory"], guiGridListGetSelectedItem ( gridlistItems["inventory"] ), 1 )
local itemName,itemInfo = getInventoryInfosForRightClickMenu(itemName)
if isCursorShowing() and guiGetVisible(inventoryWindows) and itemInfo then
if itemName == "Спички" then
if getElementData(getLocalPlayer(),"Дрова") == 0 then
return
end
end
if itemName == "Бинт" then
if getElementData(getLocalPlayer(),"bleeding") == 0 then
return
end
end
if itemName == "Аптечка" then
if getElementData(getLocalPlayer(),"blood") > 10500 then
return
end
end
if itemName == "Грелка" then
if getElementData(getLocalPlayer(),"temperature") > 35 then
return
end
end
if itemName == "Болеутоляющие" then
if not getElementData(getLocalPlayer(),"pain") then
return
end
end
if itemName == "Морфий" then
if not getElementData(getLocalPlayer(),"brokenbone") then
return
end
end
if itemName == "Пакет крови" then
--if getElementData(getLocalPlayer(),"blood") < 1150 then
return
--end
end
showRightClickInventoryMenu (itemName,itemInfo)
end
end
bindKey("mouse2","down",onPlayerPressRightKeyInInventory)
function getInventoryInfosForRightClickMenu(itemName)
for i,itemInfo in ipairs(inventoryItems["Weapons"]["Primary Weapon"]) do
if itemName == itemInfo[1] then
return itemName,"Взять осн. оружие"
end
end
for i,itemInfo in ipairs(inventoryItems["Weapons"]["Secondary Weapon"]) do
if itemName == itemInfo[1] then
return itemName,"Взять доп. оружие"
end
end
for i,itemInfo in ipairs(inventoryItems["Weapons"]["Specially Weapon"]) do
if itemName == itemInfo[1] then
return itemName,"Взять спец. оружие"
end
end
for i,itemInfo in ipairs(inventoryItems["Ammo"]) do
if itemName == itemInfo[1] then
return itemName,false
end
end
for i,itemInfo in ipairs(inventoryItems["Food"]) do
if itemName == itemInfo[1] then
if itemInfo[1] == "Фляга" or itemInfo[1] == "Молоко" or itemInfo[1] == "Банка соды" then
info = "Выпить"
else
info = "Съесть"
end
return itemName,info
end
end
for i,itemInfo in ipairs(inventoryItems["Items"]) do
if itemName == itemInfo[1] then
return itemName,itemInfo[3] or false
end
end
for i,itemInfo in ipairs(inventoryItems["Toolbelt"]) do
if itemName == itemInfo[1] then
return itemName,itemInfo[3] or false
end
end
end
rightclickWindow = guiCreateStaticImage(0,0,0.05,0.0215,"images/scrollmenu_1.png",true)
headline["rightclickmenu"] = guiCreateLabel(0,0,1,1,"",true,rightclickWindow)
guiLabelSetHorizontalAlign (headline["rightclickmenu"],"center")
guiLabelSetVerticalAlign (headline["rightclickmenu"],"center")
guiSetFont (headline["rightclickmenu"], "default-bold-small" )
guiSetVisible(rightclickWindow,false)
function showRightClickInventoryMenu (itemName,itemInfo)
if itemInfo then
local screenx, screeny, worldx, worldy, worldz = getCursorPosition()
guiSetVisible(rightclickWindow,true)
guiSetText(headline["rightclickmenu"],itemInfo)
local whith = guiLabelGetTextExtent (headline["rightclickmenu"])
guiSetPosition(rightclickWindow,screenx,screeny,true)
local x,y = guiGetSize(rightclickWindow,false)
guiSetSize(rightclickWindow,whith,y,false)
guiBringToFront(rightclickWindow)
setElementData(rightclickWindow,"iteminfo",{itemName,itemInfo})
end
end
function hideRightClickInventoryMenu ()
guiSetVisible(rightclickWindow,false)
end
function onPlayerClickOnRightClickMenu (button,state)
if button == "left" then
local itemName,itemInfo = getElementData(rightclickWindow,"iteminfo")[1],getElementData(rightclickWindow,"iteminfo")[2]
hideRightClickInventoryMenu ()
playerUseItem(itemName,itemInfo)
end
end
addEventHandler("onClientGUIClick",headline["rightclickmenu"],onPlayerClickOnRightClickMenu,false)
local playerFire = {}
local fireCounter = 0
function playerUseItem(itemName,itemInfo)
if itemInfo == "Выпить" then
triggerServerEvent("onPlayerRequestChangingStats",getLocalPlayer(),itemName,itemInfo,"thirst")
elseif itemInfo == "Съесть" then
triggerServerEvent("onPlayerRequestChangingStats",getLocalPlayer(),itemName,itemInfo,"food")
elseif itemInfo == "Переодется" then
triggerServerEvent("onPlayerChangeSkin",getLocalPlayer(),itemName)
elseif itemName == "Пустая фляга" then
triggerServerEvent("onPlayerRefillWaterBottle",getLocalPlayer(),itemName)
elseif itemName == "Палатка" then
triggerServerEvent("onPlayerPitchATent",getLocalPlayer(),itemName)
elseif itemInfo == "Поставить проволоку" then
triggerServerEvent("onPlayerBuildAWireFence",getLocalPlayer(),itemName)
elseif itemName == "Фаер" then
triggerServerEvent("onPlayerPlaceRoadflare",getLocalPlayer(),itemName)
elseif itemInfo == "Поджечь" then
triggerServerEvent("onPlayerMakeAFire",getLocalPlayer(),itemName)
elseif itemInfo == "Исп." then
triggerServerEvent("onPlayerUseMedicObject",getLocalPlayer(),itemName)
elseif itemName == "Бинт" then
triggerServerEvent("onPlayerUseMedicObject",getLocalPlayer(),itemName)
elseif itemInfo == "Исп. Googles" then
triggerServerEvent("onPlayerChangeView",getLocalPlayer(),itemName)
elseif itemInfo == "Взять осн. оружие" then
triggerServerEvent("onPlayerRearmWeapon",getLocalPlayer(),itemName,1)
elseif itemInfo == "Взять доп. оружие" then
triggerServerEvent("onPlayerRearmWeapon",getLocalPlayer(),itemName,2)
elseif itemInfo == "Взять спец. оружие" then
triggerServerEvent("onPlayerRearmWeapon",getLocalPlayer(),itemName,3)
end
end
weaponAmmoTable = {
["M1911 Mag"] = {
{"M1911",22},
},
["M9 SD Mag"] = {
{"M9 SD",23},
},
[".45ACP"] = {
{"Револьвер",24},
},
["PDW Mag"] = {
{"PDW",28},
},
["MP5A5 Mag"] = {
{"MP5A5",29},
},
["AK"] = {
{"AK-74",30},
},
["STANAG"] = {
{"М4А1 CCO",31},
},
["1866 Slug"] = {
{"Винчестер 1866",25},
},
["2Rnd. Slug"] = {
{"Sawn-Off Shotgun",26},
},
["SPAZ-12 Pellet"] = {
{"SPAZ-12 Combat Shotgun",27},
},
["CZ550 Mag"] = {
{"CZ550",34},
},
["Lee Enfield Mag"] = {
{"Lee Enfield",33},
},
["M136 Rocket"] = {
{"Heat-Seeking RPG",36},
{"M136 Rocket Launcher",35},
},
["others"] = {
{"Парашют",46},
{"Satchel",39},
{"Tear Gas",17},
{"Оск. граната M67",16},
{"Охотничий нож",4},
{"Топор",8},
{"Бинокль",43},
{"Бейсбольная бита",5},
{"Лопата",6},
{"Клюшка для гольфа",2},
},
}
function getWeaponAmmoType2 (weaponName)
for i,weaponData in ipairs(weaponAmmoTable["others"]) do
if weaponName == weaponData[2] then
return weaponData[1],weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["M1911 Mag"]) do
if weaponName == weaponData[2] then
return "M1911 Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["M9 SD Mag"]) do
if weaponName == weaponData[2] then
return "M9 SD Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable[".45ACP"]) do
if weaponName == weaponData[2] then
return ".45ACP",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["PDW Mag"]) do
if weaponName == weaponData[2] then
return "PDW Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["MP5A5 Mag"]) do
if weaponName == weaponData[2] then
return "MP5A5 Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["AK"]) do
if weaponName == weaponData[2] then
return "AK",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["STANAG"]) do
if weaponName == weaponData[2] then
return "STANAG",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["1866 Slug"]) do
if weaponName == weaponData[2] then
return "1866 Slug",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["SPAZ-12 Pellet"]) do
if weaponName == weaponData[2] then
return "SPAZ-12 Pellet",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["2Rnd. Slug"]) do
if weaponName == weaponData[2] then
return "2Rnd. Slug",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["CZ550 Mag"]) do
if weaponName == weaponData[2] then
return "CZ550 Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["Lee Enfield Mag"]) do
if weaponName == weaponData[2] then
return "Lee Enfield Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["M136 Rocket"]) do
if weaponName == weaponData[2] then
return "M136 Rocket",weaponData[2]
end
end
end
function weaponSwitch (weapon)
if source == getLocalPlayer() then
local ammoName,_ = getWeaponAmmoType2 (weapon)
if getElementData(getLocalPlayer(),ammoName) > 0 then
setElementData(getLocalPlayer(),ammoName,getElementData(getLocalPlayer(),ammoName)-1)
end
end
end
addEventHandler ( "onClientPlayerWeaponFire", getLocalPlayer(), weaponSwitch )
bindKey("mouse_wheel_up", "down", function(key, state)
setRadioChannel ( 0 )
end)
bindKey("mouse_wheel_down", "down", function(key, state)
setRadioChannel ( 0 )
end)
bindKey("r", "down", function(key, state)
setRadioChannel ( 0 )
end)
addEventHandler ( "onClientPlayerVehicleEnter", localPlayer,
function ( )
setRadioChannel ( 0 )
setPlayerHudComponentVisible ("radio",false)
end)
-- pickups.lua
getResourceRootElement(getThisResource())
function checkResourceRequirements ( res )
local reason = false
if getResourceName(getThisResource()) ~= "DayZ" then
reason = "Игровой ник of resource does not match (DayZ)!"
end
if reason ~= false then
outputServerLog ( "Resource " .. getResourceName(res) .. " wasn't started: ("..reason..")." )
outputChatBox ( "Resource " .. getResourceName(res) .. " wasn't started: ("..reason..").", getRootElement(), 255, 255, 255 )
outputConsole ( "Resource " .. getResourceName(res) .. " wasn't started: ("..reason..")." )
outputDebugString ( "Resource " .. getResourceName(res) .. " wasn't started: ("..reason..")." )
cancelEvent()
end
end
addEventHandler ( "onResourceStart", getResourceRootElement(getThisResource()), checkResourceRequirements )
local itemTable = {
----------------------
["farm"] = {
{"Дрова",1463,0.4,0,13},
{"Бинт",1578,0.5,0,4},
{"Фляга",2683,1,0,6},
{"Банка макарон",2770,1,0,6},
{"Банка бобов",2601,1,0,6},
{"Гамбургер",2768,1,0,6},
{"Пустая банка соды",2673,0.5,0,12},
{"Объедки",2675,0.5,0,12},
{"Банка соды",2647,1,0,9},
{"Пустая канистра",1650,1,0,10},
{"Охотничий нож",335,1,90,4},
{"Спички",328,0.4,90,8},
{"Револьвер",348,1,90,0.2},
{"Морфий",1579,1,0,4},
{"Палатка",1279,1,0,0.5},
{"M1911",346,1,90,4},
{"Болеутоляющие",2709,3,0,3.5},
{"Lee Enfield",357,1,90,0.3},
{"Винчестер 1866",349,1,90,0.3},
{"Колесо",1073,1,0,2},
{"Бензобак",1008,1,0.8,2},
{"Женский скин",1241,2,0,2.5},
{"Карта",1277,0.8,90,6},
{"GPS",2976,0.15,0,2},
},
----------------------
["residential"] = {
{"Спички",328,0.4,90,5},
{"Дрова",1463,0.4,0,5},
{"M1911",346,1,90,1.5},
{"M9 SD",347,1,90,1.9},
{"Винчестер 1866",349,1,90,0.1},
{"PDW",352,1,90,1},
{"Охотничий нож",335,1,90,3},
{"Топор",339,1,90,1},
{"Пицца",1582,1,0,7},
{"Банка соды",2647,1,0,7},
{"Пустая канистра",1650,1,0,9},
{"Фаер",324,1,90,9},
{"Молоко",2856,1,0,7},
{"Assault Pack (ACU)",3026,1,0,6},
{"Болеутоляющие",2709,3,0,7},
{"Пустая банка соды",2673,0.5,0,12},
{"Объедки",2675,0.5,0,12},
{"Оск. граната M67",342,1,0,0.01},
{"Револьвер",348,1,90,0.4},
{"Sawn-Off Shotgun",350,1,90,0.3},
{"SPAZ-12 Combat Shotgun",351,1,90,0.4},
{"MP5A5",353,1,90,0.4},
{"Часы",2710,1,0,3},
{"Грелка",1576,5,0,6},
{"Колючая проволока",933,0.25,0,1},
{"Lee Enfield",357,1,90,0.3},
{"Alice Pack",1248,1,0,1.5},
{"Колесо",1073,1,0,1},
{"Бензобак",1008,0.8,0,1},
{"Морфий",1579,1,0,2},
{"Женский скин",1241,2,0,9},
{"Карта",1277,0.8,90,10},
{"GPS",2976,0.15,0,3},
{"Банка макарон",2770,1,0,7},
{"Банка бобов",2601,1,0,7},
--{"TEC-9",372,1,90,0},
{"Гамбургер",2768,1,0,7},
{"Клюшка для гольфа",333,1,90,3},
{"Бейсбольная бита",336,1,90,3},
{"Лопата",337,1,90,3},
},
----------------------
["military"] = {
{"Спички",328,0.4,90,2},
{"M1911",346,1,90,5},
{"M9 SD",347,1,90,4},
{"Винчестер 1866",349,1,90,3},
{"PDW",352,1,90,4},
{"Охотничий нож",335,1,90,2.4},
{"Топор",339,1,90,2.1},
{"Пицца",1582,1,0,2},
{"Банка соды",2647,1,0,2},
{"Пустая канистра",1650,1,0,4},
{"Фаер",324,1,90,4},
{"Молоко",2856,1,0,1},
{"Болеутоляющие",2709,3,0,4},
{"Пустая банка соды",2673,0.5,0,12},
{"Объедки",2675,0.5,0,12},
{"Оск. граната M67",342,1,0,0.5},
{"Sawn-Off Shotgun",350,1,90,2.3},
{"SPAZ-12 Combat Shotgun",351,1,90,2.3},
{"MP5A5",353,1,90,2.8},
{"Часы",2710,1,0,4},
{"Грелка",1576,5,0,3},
{"Колючая проволока",933,0.25,0,1},
{"Lee Enfield",357,1,90,3.5},
{"Alice Pack",1248,1,0,4},
{"Очки ночного видения",368,1,90,4},
{"Бинокль",369,1,0,4},
{"Колесо",1073,1,0,2},
{"Бензобак",1008,0.8,0,2},
{"Морфий",1579,1,0,4},
{"Армейский камуфляж",1247,2,0,4.5},
{"Женский скин",1241,2,0,3},
--{"TEC-9",372,1,90,3},
{"AK-74",355,1,90,3.8},
{"GPS",2976,0.15,0,3},
{"Карта",1277,0.8,90,7},
{"Инструменты",2969,0.5,0,1},
{"Двигатель",929,0.3,0,2},
{"Палатка",1279,1,0,4.5},
{"Камуфляж снайпера",1213,2,0,0.3},
{"М4А1 CCO",356,1,90,2.4},
{"CZ550",358,1,90,0.4},
{"Инфокрасные очки",369,1,90,3},
{"Assault Pack (ACU)",3026,1,0,5},
{"Czech Backpack",1239,1,0,2},
{"Рация",330,1,0,6},
{"Coyote Backpack",1252,1,0,0.9},
{"Лопата",337,1,90,1},
},
----------------------
["industrial"] = {
{"Колючая проволока",933,0.25,0,7},
{"Инструменты",2969,0.5,0,3},
{"Колесо",1073,1,0,4},
{"Двигатель",929,0.3,0,3.5},
{"Бензобак",1008,1,0.8,4},
{"Винчестер 1866",349,1,90,3},
{"Фляга",2683,1,0,4},
{"Банка макарон",2770,1,0,4},
{"Банка бобов",2601,1,0,4},
{"Гамбургер",2768,1,0,4},
{"Пустая банка соды",2673,0.5,0,12},
{"Объедки",2675,0.5,0,10},
{"Банка соды",2647,1,0,4},
{"Пустая канистра",1650,1,0,6},
{"Наполненная канистра",1650,1,0,1.5},
{"Карта",1277,0.8,90,3},
{"Часы",2710,1,0,2},
{"Спички",328,0.4,90,5},
{"Дрова",1463,0.4,0,2},
{"M1911",346,1,90,1.5},
{"PDW",352,1,90,2},
{"Охотничий нож",335,1,90,2},
{"Топор",339,1,90,1.5},
{"Пицца",1582,1,0,4},
{"Фаер",324,1,90,5},
{"Молоко",2856,1,0,4},
{"Assault Pack (ACU)",3026,1,0,6},
{"Coyote Backpack",1252,1,0,0.5},
{"Рация",330,1,0,6},
{"Клюшка для гольфа",333,1,90,1.5},
{"Бейсбольная бита",336,1,90,1.5},
{"Лопата",337,1,90,1.5},
{"Очки ночного видения",368,1,90,1.5},
},
----------------------
["supermarket"] = {
{"Жареное мясо",2804,0.5,90,8},
{"Спички",328,0.4,90,5},
{"Дрова",1463,0.4,0,5},
{"M1911",346,1,90,3.5},
{"PDW",352,1,90,2},
{"Охотничий нож",335,1,90,3},
{"Топор",339,1,90,2.1},
{"Пицца",1582,1,0,7},
{"Банка соды",2647,1,0,7},
{"Пустая канистра",1650,1,0,5},
{"Фаер",324,1,90,6},
{"Молоко",2856,1,0,7},
{"Assault Pack (ACU)",3026,1,0,6},
{"Банка макарон",2770,1,0,7},
{"Банка бобов",2601,1,0,7},
{"Гамбургер",2768,1,0,7},
{"Болеутоляющие",2709,3,0,7},
{"Пустая банка соды",2673,0.5,0,12},
{"Объедки",2675,0.5,0,12},
{"MP5A5",353,1,90,0.5},
{"Часы",2710,1,0,3},
{"Грелка",1576,5,0,6},
{"Колючая проволока",933,0.25,0,1},
{"Lee Enfield",357,1,90,0.2},
{"Alice Pack",1248,1,0,0.5},
{"Колесо",1073,1,0,1},
{"Бензобак",1008,1,0.8,2},
{"Морфий",1579,1,0,2},
{"Женский скин",1241,2,0,3.5},
{"Карта",1277,0.8,90,4},
{"GPS",2976,0.15,0,1},
{"Рация",330,1,0,6},
{"Клюшка для гольфа",333,1,90,1.9},
{"Бейсбольная бита",336,1,90,1.4},
{"Лопата",337,1,90,0.3},
},
["other"] = {
{"Жареное мясо",2804,0.5,90},
{"Сырое мясо",2806,0.5,90},
{"Наполненная канистра",1650,1,0},
{"Пустая фляга",2683,1,0},
{"Одежда выжившего",1577,2,0},
{"Очки ночного видения",368,1,90},
{"Инфокрасные очки",369,1,90},
{"1866 Slug",2358,2,0},
{"2Rnd. Slug",2358,2,0},
{"SPAZ-12 Pellet",2358,2,0},
{"MP5A5 Mag",2358,2,0},
{"AK",1271,2,0},
{"STANAG",1271,2,0},
{"M1911 Mag",3013,2,0},
{"M9 SD Mag",3013,2,0},
{".45ACP",3013,2,0},
--{"M136 Rocket",3082,0.7,90},
{"CZ550 Mag",2358,2,0},
{"Lee Enfield Mag",2358,2,0},
{"PDW Mag",2041,2,0},
{"MP5A5 Mag",2041,2,0},
{"Спички",328,0.4,90,5},
{"Дрова",1463,0.4,0,5},
{"M1911",346,1,90,3.5},
{"PDW",352,1,90,2},
{"Охотничий нож",335,1,90,2.5},
{"Топор",339,1,90,1.8},
{"Пицца",1582,1,0,7},
{"Банка соды",2647,1,0,7},
{"Пустая канистра",1650,1,0,5},
{"Фаер",324,1,90,6},
{"Молоко",2856,1,0,5},
{"Assault Pack (ACU)",3026,1,0,6},
{"Болеутоляющие",2709,3,0,7},
{"Пустая банка соды",2673,0.5,0,12},
{"Объедки",2675,0.5,0,12},
{"MP5A5",353,1,90,1.5},
{"Часы",2710,1,0,3},
{"Грелка",1576,5,0,6},
{"Колючая проволока",933,0.25,0,1},
{"Lee Enfield",357,1,90,1.5},
{"Alice Pack",1248,1,0,1.5},
{"Coyote Backpack",1252,1,0,0.7},
{"Колесо",1073,1,0,1},
{"Бензобак",1008,1,0.8,4},
{"Морфий",1579,1,0,2},
{"Женский скин",1241,2,0,3.5},
{"Карта",1277,0.8,90,4},
{"Инструменты",2969,0.5,0,3},
{"Двигатель",929,0.3,0,3.5},
{"Винчестер 1866",349,1,90,2},
{"Фляга",2683,1,0,4},
{"M9 SD",347,1,90,5},
{"Оск. граната M67",342,1,0,0.5},
{"Sawn-Off Shotgun",350,1,90,2},
{"SPAZ-12 Combat Shotgun",351,1,90,1.9},
{"Бинокль",369,1,0,4},
{"Армейский камуфляж",1247,2,0,4.5},
--{"TEC-9",372,1,90,4},
{"AK-74",355,1,90,0.9},
{"M136 Rocket Launcher",359,1,90,0},
{"Камуфляж снайпера",1213,2,0,0.01},
{"М4А1 CCO",356,1,90,0.9},
{"CZ550",358,1,90,0.3},
{"Heat-Seeking RPG",360,1,90,0},
{"Бинт",1578,0.5,0,4},
{"Банка макарон",2770,1,0,5},
{"Банка бобов",2601,1,0,6},
{"Гамбургер",2768,1,0,2},
{"Палатка",1279,1,0,0.5},
{"M1911",346,1,90,3},
{"Револьвер",348,1,90,3},
{"GPS",2976,0.15,0,1},
{"Аптечка",2891,2.2,0},
{"Пакет крови",1580,1,0},
{"Рация",2966,0.5,0,5},
{"Клюшка для гольфа",333,1,90,1.9},
{"Бейсбольная бита",336,1,90,1.4},
{"Лопата",337,1,90,1.5},
},
}
weaponAmmoTable = {
["M1911 Mag"] = {
{"M1911",22},
},
["M9 SD Mag"] = {
{"M9 SD",23},
},
[".45ACP"] = {
{"Револьвер",24},
},
["PDW Mag"] = {
{"PDW",28},
},
["MP5A5 Mag"] = {
{"MP5A5",29},
},
["AK"] = {
{"AK-74",30},
},
["STANAG"] = {
{"М4А1 CCO",31},
},
["1866 Slug"] = {
{"Винчестер 1866",25},
},
["2Rnd. Slug"] = {
{"Sawn-Off Shotgun",26},
},
["SPAZ-12 Pellet"] = {
{"SPAZ-12 Combat Shotgun",27},
},
["CZ550 Mag"] = {
{"CZ550",34},
},
["Lee Enfield Mag"] = {
{"Lee Enfield",33},
},
["M136 Rocket"] = {
{"Heat-Seeking RPG",36},
{"M136 Rocket Launcher",35},
},
["others"] = {
{"Парашют",46},
{"Satchel",39},
{"Tear Gas",17},
{"Оск. граната M67",16},
{"Охотничий нож",4},
{"Топор",8},
{"Бинокль",43},
{"Бейсбольная бита",5},
{"Клюшка для гольфа",2},
{"Лопата",6},
{"Рация",1},
},
}
function getWeaponAmmoType (weaponName,notOthers)
if not notOthers then
for i,weaponData in ipairs(weaponAmmoTable["others"]) do
if weaponName == weaponData[1] then
return weaponData[1],weaponData[2]
end
end
end
for i,weaponData in ipairs(weaponAmmoTable["M1911 Mag"]) do
if weaponName == weaponData[1] then
return "M1911 Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["M9 SD Mag"]) do
if weaponName == weaponData[1] then
return "M9 SD Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable[".45ACP"]) do
if weaponName == weaponData[1] then
return ".45ACP",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["PDW Mag"]) do
if weaponName == weaponData[1] then
return "PDW Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["MP5A5 Mag"]) do
if weaponName == weaponData[1] then
return "MP5A5 Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["AK"]) do
if weaponName == weaponData[1] then
return "AK",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["STANAG"]) do
if weaponName == weaponData[1] then
return "STANAG",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["1866 Slug"]) do
if weaponName == weaponData[1] then
return "1866 Slug",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["2Rnd. Slug"]) do
if weaponName == weaponData[1] then
return "2Rnd. Slug",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["SPAZ-12 Pellet"]) do
if weaponName == weaponData[1] then
return "SPAZ-12 Pellet",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["CZ550 Mag"]) do
if weaponName == weaponData[1] then
return "CZ550 Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["Lee Enfield Mag"]) do
if weaponName == weaponData[1] then
return "Lee Enfield Mag",weaponData[2]
end
end
for i,weaponData in ipairs(weaponAmmoTable["M136 Rocket"]) do
if weaponName == weaponData[1] then
return "M136 Rocket",weaponData[2]
end
end
return false
end
function createItemPickup(item,x,y,z,tableStringName)
if item and x and y and z then
local object = createObject(itemTable[tostring(tableStringName)][item][2],x,y,z-0.875,itemTable[tostring(tableStringName)][item][4],0,math.random(0,360))
setObjectScale(object,itemTable[tostring(tableStringName)][item][3])
setElementCollisionsEnabled(object, false)
setElementFrozen (object,true)
local col = createColSphere(x,y,z,0.75)
setElementData(col,"item",itemTable[tostring(tableStringName)][item][1])
setElementData(col,"parent",object)
setTimer(function()
if isElement(col) then
destroyElement(col)
destroyElement(object)
end
end,900000,1)
return object
end
end
function table.size(tab)
local length = 0
for _ in pairs(tab) do length = length + 1 end
return length
end
function math.percentChance (percent,repeatTime)
local hits = 0
for i = 1, repeatTime do
local number = math.random(0,200)/2
if number <= percent then
hits = hits+1
end
end
return hits
end
function createItemLoot (lootPlace,x,y,z,id)
col = createColSphere(x,y,z,1.25)
setElementData(col,"itemloot",true)
setElementData(col,"parent",lootPlace)
setElementData(col,"MAX_Slots",12)
--Items
for i, item in ipairs(itemTable[lootPlace]) do
local value = math.percentChance (item[5],math.random(1,2))
setElementData(col,item[1],value)
--weapon Ammo
local ammoData,weapID = getWeaponAmmoType (item[1],true)
if ammoData and value > 0 then
setElementData(col,ammoData,math.random(1,2))
end
end
--itemLoot
refreshItemLoot (col,lootPlace)
return col
end
function refreshItemLoot (col,place)
local objects = getElementData(col,"objectsINloot")
if objects then
if objects[1] ~= nil then
destroyElement(objects[1])
end
if objects[2] ~= nil then
destroyElement(objects[2])
end
if objects[3] ~= nil then
destroyElement(objects[3])
end
end
--setting objects
local counter = 0
local obejctItem = {}
--Tables
for i, item in ipairs(itemTable["other"]) do
if getElementData(col,item[1]) and getElementData(col,item[1]) > 0 then
if counter == 3 then
break
end
counter = counter + 1
local x,y,z = getElementPosition(col)
obejctItem[counter] = createObject(item[2],x+math.random(-1,1),y+math.random(-1,1),z-0.875,item[4])
setObjectScale(obejctItem[counter],item[3])
setElementCollisionsEnabled(obejctItem[counter], false)
setElementFrozen (obejctItem[counter],true)
end
end
-------Debug
if obejctItem[1] == nil then
local x,y,z = getElementPosition(col)
obejctItem[1] = createObject(1463,x+math.random(-1,1),y+math.random(-1,1),z-0.875,0)
setObjectScale(obejctItem[1],0)
setElementCollisionsEnabled(obejctItem[1], false)
setElementFrozen (obejctItem[1],true)
end
if obejctItem[2] == nil then
local x,y,z = getElementPosition(col)
obejctItem[2] = createObject(1463,x+math.random(-1,1),y+math.random(-1,1),z-0.875,0)
setObjectScale(obejctItem[2],0)
setElementCollisionsEnabled(obejctItem[2], false)
setElementFrozen (obejctItem[2],true)
end
if obejctItem[3] == nil then
local x,y,z = getElementPosition(col)
obejctItem[3] = createObject(1463,x+math.random(-1,1),y+math.random(-1,1),z-0.875,0)
setObjectScale(obejctItem[3],0)
setElementCollisionsEnabled(obejctItem[3], false)
setElementFrozen (obejctItem[3],true)
end
setElementData(col,"objectsINloot",{obejctItem[1], obejctItem[2], obejctItem[3]})
end
addEvent( "refreshItemLoot", true )
addEventHandler( "refreshItemLoot", getRootElement(), refreshItemLoot )
function createPickupsOnServerStart()
iPickup = 0
for i,pos in ipairs(pickupPositions["residential"]) do
iPickup = iPickup + 1
createItemLoot("residential",pos[1],pos[2],pos[3],iPickup)
end
setTimer(createPickupsOnServerStart2,5000,1)
end
function createPickupsOnServerStart2()
for i,pos in ipairs(pickupPositions["industrial"]) do
iPickup = iPickup + 1
createItemLoot("industrial",pos[1],pos[2],pos[3],iPickup)
end
setTimer(createPickupsOnServerStart3,5000,1)
end
function createPickupsOnServerStart3()
for i,pos in ipairs(pickupPositions["farm"]) do
iPickup = iPickup + 1
createItemLoot("farm",pos[1],pos[2],pos[3],iPickup)
end
setTimer(createPickupsOnServerStart4,5000,1)
end
function createPickupsOnServerStart4()
for i,pos in ipairs(pickupPositions["supermarket"]) do
iPickup = iPickup + 1
createItemLoot("supermarket",pos[1],pos[2],pos[3],iPickup)
end
setTimer(createPickupsOnServerStart5,5000,1)
end
function createPickupsOnServerStart5()
for i,pos in ipairs(pickupPositions["military"]) do
iPickup = iPickup + 1
createItemLoot("military",pos[1],pos[2],pos[3],iPickup)
end
end
createPickupsOnServerStart()
------------------------------------------------------------------------------
--OTHER ITEM STUFF
vehicleFuelTable = {
-- {MODEL ID, MAX. FUEL},
{422,80},
{470,100},
{468,30},
{433,140},
{437,140},
{509,0},
{487,60},
{497,60},
{453,60},
}
function getVehicleMaxFuel(loot)
local modelID = getElementModel(getElementData(loot,"parent"))
for i,vehicle in ipairs(vehicleFuelTable) do
if modelID == vehicle[1] then
return vehicle[2]
end
end
return false
end
function onPlayerTakeItemFromGround (itemName,col)
itemPlus = 1
if itemName == "M1911 Mag" then
itemPlus = 7
elseif itemName == "M9 SD Mag" then
itemPlus = 15
elseif itemName == ".45ACP" then
itemPlus = 7
elseif itemName == "PDW Mag" then
itemPlus = 30
elseif itemName == "MP5A5 Mag" then
itemPlus = 20
elseif itemName == "AK" then
itemPlus = 30
elseif itemName == "STANAG" then
itemPlus = 20
elseif itemName == "1866 Slug" then
itemPlus = 7
elseif itemName == "2Rnd. Slug" then
itemPlus = 2
elseif itemName == "SPAZ-12 Pellet" then
itemPlus = 7
elseif itemName == "CZ550 Mag" then
itemPlus = 5
elseif itemName == "Lee Enfield Mag" then
itemPlus = 10
elseif itemName == "M136 Rocket" then
itemPlus = 0
elseif itemName == "М4А1 CCO" or itemName == "AK-74" or itemName == "CZ550" or itemName == "Винчестер 1866" or itemName == "SPAZ-12 Combat Shotgun" or itemName == "Sawn-Off Shotgun" or itemName == "Heat-Seeking RPG" or itemName == "M136 Rocket Launcher" or itemName == "Lee Enfield" then
removeBackWeaponOnDrop()
end
local x,y,z = getElementPosition(source)
local id,ItemType = getItemTablePosition (itemName)
setElementData(source,itemName,(getElementData(source,itemName) or 0)+itemPlus)
destroyElement(getElementData(col,"parent"))
destroyElement(col)
end
addEvent( "onPlayerTakeItemFromGround", true )
addEventHandler( "onPlayerTakeItemFromGround", getRootElement(), onPlayerTakeItemFromGround )
function onPlayerChangeLoot(loot)
local players = getElementsWithinColShape (loot,"player")
for theKey,player in ipairs(players) do
triggerClientEvent(player,"refreshLootManual",player,loot)
end
end
addEvent( "onPlayerChangeLoot", true )
addEventHandler( "onPlayerChangeLoot", getRootElement(), onPlayerChangeLoot )
function playerDropAItem(itemName)
local x,y,z = getElementPosition(source)
local item,itemString = getItemTablePosition(itemName)
local itemPickup = createItemPickup(item,x+math.random(-1.25,1.25),y+math.random(-1.25,1.25),z,itemString)
end
addEvent( "playerDropAItem", true )
addEventHandler( "playerDropAItem", getRootElement(), playerDropAItem )
function getItemTablePosition (itema)
for id, item in ipairs(itemTable[tostring("other")]) do
if itema == item[1] then
return id,"other"
end
end
return item,itemString
end
function refreshItemLoots ()
outputChatBox("#ffaa00Внимание! #ffffff - Респавн лута! Просим не выходить с сервера во время NETWORK!",getRootElement(),255,255,255,true)
for i, loots in ipairs(getElementsByType("colshape")) do
local itemloot = getElementData(loots,"itemloot")
if itemloot then
local objects = getElementData(loots,"objectsINloot")
if objects then
if objects[1] ~= nil then
destroyElement(objects[1])
end
if objects[2] ~= nil then
destroyElement(objects[2])
end
if objects[3] ~= nil then
destroyElement(objects[3])
end
end
destroyElement(loots)
end
end
createPickupsOnServerStart()
setTimer(refreshItemLootPoints,gameplayVariables["itemrespawntimer"] ,1)
end
--Refresh items
function refreshItemLootPoints ()
local time = getRealTime()
local hour = time.hour
outputChatBox("#ff2200Внимание! #ffffff - Через 1 мин будет респавн лута!",getRootElement(),255,255,255,true)
setTimer(refreshItemLoots,60000,1)
end
setTimer(refreshItemLootPoints,gameplayVariables["itemrespawntimer"] ,1)
Напиши на основе двух этих скриптов инвентаря и предметов, логику крафта, чтоб меню крафта открывалось в GUI окне по команде /craft. Для примера можно сделать крафт предмета "Аптечка" из одного "Бинт" и одного "Болеутоляющего". Напиши полностью логику и выдай в виде кода!