Re wrote police armory. Components supported too!

This commit is contained in:
ElPumpo
2019-01-01 15:50:19 +01:00
parent 1dece11ccd
commit 77ff73d699
11 changed files with 392 additions and 354 deletions
+224 -234
View File
@@ -10,24 +10,21 @@ local Keys = {
["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118
}
local PlayerData = {}
local PlayerData = {}
local HasAlreadyEnteredMarker = false
local LastStation = nil
local LastPart = nil
local LastPartNum = nil
local LastEntity = nil
local CurrentAction = nil
local CurrentActionMsg = ''
local CurrentActionData = {}
local IsHandcuffed = false
local HandcuffTimer = {}
local DragStatus = {}
DragStatus.IsDragged = false
local hasAlreadyJoined = false
local blipsCops = {}
local isDead = false
local CurrentTask = {}
local playerInService = false
local LastStation, LastPart, LastPartNum, LastEntity
local CurrentAction = nil
local CurrentActionMsg = ''
local CurrentActionData = {}
local IsHandcuffed = false
local HandcuffTimer = {}
local DragStatus = {}
DragStatus.IsDragged = false
local hasAlreadyJoined = false
local blipsCops = {}
local isDead = false
local CurrentTask = {}
local playerInService = false
ESX = nil
@@ -255,8 +252,6 @@ function OpenCloakroomMenu()
end
end, function(data, menu)
menu.close()
@@ -267,82 +262,45 @@ function OpenCloakroomMenu()
end
function OpenArmoryMenu(station)
local elements = {
{label = _U('buy_weapons'), value = 'buy_weapons'}
}
if Config.EnableArmoryManagement then
local elements = {
{label = _U('get_weapon'), value = 'get_weapon'},
{label = _U('put_weapon'), value = 'put_weapon'},
{label = _U('remove_object'), value = 'get_stock'},
{label = _U('deposit_object'), value = 'put_stock'}
}
if PlayerData.job.grade_name == 'boss' then
table.insert(elements, {label = _U('buy_weapons'), value = 'buy_weapons'})
end
ESX.UI.Menu.CloseAll()
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'armory',
{
title = _U('armory'),
align = 'top-left',
elements = elements
}, function(data, menu)
if data.current.value == 'get_weapon' then
OpenGetWeaponMenu()
elseif data.current.value == 'put_weapon' then
OpenPutWeaponMenu()
elseif data.current.value == 'buy_weapons' then
OpenBuyWeaponsMenu(station)
elseif data.current.value == 'put_stock' then
OpenPutStocksMenu()
elseif data.current.value == 'get_stock' then
OpenGetStocksMenu()
end
end, function(data, menu)
menu.close()
CurrentAction = 'menu_armory'
CurrentActionMsg = _U('open_armory')
CurrentActionData = {station = station}
end)
else
local elements = {}
for i=1, #Config.PoliceStations[station].AuthorizedWeapons, 1 do
local weapon = Config.PoliceStations[station].AuthorizedWeapons[i]
table.insert(elements, {
label = ESX.GetWeaponLabel(weapon.name),
value = weapon.name
})
end
ESX.UI.Menu.CloseAll()
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'armory',
{
title = _U('armory'),
align = 'top-left',
elements = elements
}, function(data, menu)
local weapon = data.current.value
TriggerServerEvent('esx_policejob:giveWeapon', weapon, 1000)
end, function(data, menu)
menu.close()
CurrentAction = 'menu_armory'
CurrentActionMsg = _U('open_armory')
CurrentActionData = {station = station}
end)
table.insert(elements, {label = _U('get_weapon'), value = 'get_weapon'})
table.insert(elements, {label = _U('put_weapon'), value = 'put_weapon'})
table.insert(elements, {label = _U('remove_object'), value = 'get_stock'})
table.insert(elements, {label = _U('deposit_object'), value = 'put_stock'})
end
ESX.UI.Menu.CloseAll()
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'armory',
{
title = _U('armory'),
align = 'top-left',
elements = elements
}, function(data, menu)
if data.current.value == 'get_weapon' then
OpenGetWeaponMenu()
elseif data.current.value == 'put_weapon' then
OpenPutWeaponMenu()
elseif data.current.value == 'buy_weapons' then
OpenBuyWeaponsMenu()
elseif data.current.value == 'put_stock' then
OpenPutStocksMenu()
elseif data.current.value == 'get_stock' then
OpenGetStocksMenu()
end
end, function(data, menu)
menu.close()
CurrentAction = 'menu_armory'
CurrentActionMsg = _U('open_armory')
CurrentActionData = {station = station}
end)
end
function OpenVehicleSpawnerMenu(station, partNum)
@@ -1073,55 +1031,132 @@ function OpenPutWeaponMenu()
end)
end
function OpenBuyWeaponsMenu(station)
function OpenBuyWeaponsMenu()
ESX.TriggerServerCallback('esx_policejob:getArmoryWeapons', function(weapons)
local elements = {}
local playerPed = PlayerPedId()
local elements = {}
for k,v in ipairs(Config.AuthorizedWeapons[PlayerData.job.grade_name]) do
local weaponNum, weapon = ESX.GetWeapon(v.weapon)
local components, label = {}
for i=1, #Config.PoliceStations[station].AuthorizedWeapons, 1 do
local weapon = Config.PoliceStations[station].AuthorizedWeapons[i]
local count = 0
local hasWeapon = HasPedGotWeapon(playerPed, GetHashKey(v.weapon), false)
for i=1, #weapons, 1 do
if weapons[i].name == weapon.name then
count = weapons[i].count
break
if v.components then
for i=1, #v.components do
if v.components[i] then
local component = weapon.components[i]
local hasComponent = HasPedGotWeaponComponent(playerPed, GetHashKey(v.weapon), component.hash)
if hasComponent then
label = ('%s: <span style="color:green;">%s</span>'):format(component.label, _U('armory_owned'))
else
if v.components[i] > 0 then
label = ('%s: <span style="color:green;">%s</span>'):format(component.label, _U('armory_item', ESX.Math.GroupDigits(v.components[i])))
else
label = ('%s: <span style="color:green;">%s</span>'):format(component.label, _U('armory_free'))
end
end
table.insert(components, {
label = label,
componentLabel = component.label,
hash = component.hash,
name = component.name,
price = v.components[i],
hasComponent = hasComponent,
componentNum = i
})
end
end
table.insert(elements, {
label = 'x' .. count .. ' ' .. ESX.GetWeaponLabel(weapon.name) .. ' $' .. ESX.Math.GroupDigits(weapon.price),
value = weapon.name,
price = weapon.price
})
end
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'armory_buy_weapons',
{
title = _U('buy_weapon_menu'),
align = 'top-left',
elements = elements,
}, function(data, menu)
if hasWeapon and v.components then
label = ('%s: <span style="color:green;">></span>'):format(weapon.label)
elseif hasWeapon and not v.components then
label = ('%s: <span style="color:green;">%s</span>'):format(weapon.label, _U('armory_owned'))
else
if v.price > 0 then
label = ('%s: <span style="color:green;">%s</span>'):format(weapon.label, _U('armory_item', ESX.Math.GroupDigits(v.price)))
else
label = ('%s: <span style="color:green;">%s</span>'):format(weapon.label, _U('armory_free'))
end
end
ESX.TriggerServerCallback('esx_policejob:buy', function(hasEnoughMoney)
if hasEnoughMoney then
ESX.TriggerServerCallback('esx_policejob:addArmoryWeapon', function()
OpenBuyWeaponsMenu(station)
end, data.current.value, false)
table.insert(elements, {
label = label,
weaponLabel = weapon.label,
name = weapon.name,
components = components,
price = v.price,
hasWeapon = hasWeapon
})
end
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'armory_buy_weapons', {
title = _U('armory_weapontitle'),
align = 'top-left',
elements = elements
}, function(data, menu)
if data.current.hasWeapon then
if #data.current.components > 0 then
OpenWeaponComponentShop(data.current.components, data.current.name, menu)
end
else
ESX.TriggerServerCallback('esx_policejob:buyWeapon', function(bought)
if bought then
if data.current.price > 0 then
ESX.ShowNotification(_U('armory_bought', data.current.weaponLabel, ESX.Math.GroupDigits(data.current.price)))
end
menu.close()
OpenBuyWeaponsMenu()
else
ESX.ShowNotification(_U('not_enough_money'))
ESX.ShowNotification(_U('armory_money'))
end
end, data.current.price)
end, function(data, menu)
menu.close()
end)
end, data.current.name, 1)
end
end, function(data, menu)
menu.close()
end)
end
function OpenWeaponComponentShop(components, weaponName, parentShop)
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'armory_buy_weapons_components', {
title = _U('armory_componenttitle'),
align = 'top-left',
elements = components
}, function(data, menu)
if data.current.hasComponent then
ESX.ShowNotification(_U('armory_hascomponent'))
else
ESX.TriggerServerCallback('esx_policejob:buyWeapon', function(bought)
if bought then
if data.current.price > 0 then
ESX.ShowNotification(_U('armory_bought', data.current.componentLabel, ESX.Math.GroupDigits(data.current.price)))
end
menu.close()
parentShop.close()
OpenBuyWeaponsMenu()
else
ESX.ShowNotification(_U('armory_money'))
end
end, weaponName, 2, data.current.componentNum)
end
end, function(data, menu)
menu.close()
end)
end
function OpenGetStocksMenu()
ESX.TriggerServerCallback('esx_policejob:getStockItems', function(items)
@@ -1588,155 +1623,110 @@ end)
Citizen.CreateThread(function()
while true do
Citizen.Wait(1)
Citizen.Wait(0)
if PlayerData.job ~= nil and PlayerData.job.name == 'police' then
local playerPed = PlayerPedId()
local coords = GetEntityCoords(playerPed)
local isInMarker, hasExited = false, false
local currentStation, currentPart, currentPartNum
for k,v in pairs(Config.PoliceStations) do
for i=1, #v.Cloakrooms, 1 do
if GetDistanceBetweenCoords(coords, v.Cloakrooms[i].x, v.Cloakrooms[i].y, v.Cloakrooms[i].z, true) < Config.DrawDistance then
DrawMarker(Config.MarkerType, v.Cloakrooms[i].x, v.Cloakrooms[i].y, v.Cloakrooms[i].z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.MarkerSize.x, Config.MarkerSize.y, Config.MarkerSize.z, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, false, false, false, false)
local distance = GetDistanceBetweenCoords(coords, v.Cloakrooms[i].x, v.Cloakrooms[i].y, v.Cloakrooms[i].z, true)
if distance < Config.DrawDistance then
DrawMarker(20, v.Cloakrooms[i].x, v.Cloakrooms[i].y, v.Cloakrooms[i].z + 1, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 1.0, 1.0, 1.0, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, true, false, false, false)
end
if distance < Config.MarkerSize.x then
isInMarker, currentStation, currentPart, currentPartNum = true, k, 'Cloakroom', i
end
end
for i=1, #v.Armories, 1 do
if GetDistanceBetweenCoords(coords, v.Armories[i].x, v.Armories[i].y, v.Armories[i].z, true) < Config.DrawDistance then
DrawMarker(Config.MarkerType, v.Armories[i].x, v.Armories[i].y, v.Armories[i].z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.MarkerSize.x, Config.MarkerSize.y, Config.MarkerSize.z, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, false, false, false, false)
local distance = GetDistanceBetweenCoords(coords, v.Armories[i].x, v.Armories[i].y, v.Armories[i].z, true)
if distance < Config.DrawDistance then
DrawMarker(21, v.Armories[i].x, v.Armories[i].y, v.Armories[i].z + 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, true, false, false, false)
end
if distance < Config.MarkerSize.x then
isInMarker, currentStation, currentPart, currentPartNum = true, k, 'Armory', i
end
end
for i=1, #v.Vehicles, 1 do
if GetDistanceBetweenCoords(coords, v.Vehicles[i].Spawner.x, v.Vehicles[i].Spawner.y, v.Vehicles[i].Spawner.z, true) < Config.DrawDistance then
DrawMarker(Config.MarkerType, v.Vehicles[i].Spawner.x, v.Vehicles[i].Spawner.y, v.Vehicles[i].Spawner.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.MarkerSize.x, Config.MarkerSize.y, Config.MarkerSize.z, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, false, false, false, false)
local distance = GetDistanceBetweenCoords(coords, v.Vehicles[i].Spawner.x, v.Vehicles[i].Spawner.y, v.Vehicles[i].Spawner.z, true)
if distance < Config.DrawDistance then
DrawMarker(36, v.Vehicles[i].Spawner.x, v.Vehicles[i].Spawner.y, v.Vehicles[i].Spawner.z + 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, true, false, false, false)
end
end
for i=1, #v.VehicleDeleters, 1 do
if GetDistanceBetweenCoords(coords, v.VehicleDeleters[i].x, v.VehicleDeleters[i].y, v.VehicleDeleters[i].z, true) < Config.DrawDistance then
DrawMarker(Config.MarkerType, v.VehicleDeleters[i].x, v.VehicleDeleters[i].y, v.VehicleDeleters[i].z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.MarkerSize.x, Config.MarkerSize.y, Config.MarkerSize.z, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, false, false, false, false)
end
end
if Config.EnablePlayerManagement and PlayerData.job.grade_name == 'boss' then
for i=1, #v.BossActions, 1 do
if not v.BossActions[i].disabled and GetDistanceBetweenCoords(coords, v.BossActions[i].x, v.BossActions[i].y, v.BossActions[i].z, true) < Config.DrawDistance then
DrawMarker(Config.MarkerType, v.BossActions[i].x, v.BossActions[i].y, v.BossActions[i].z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.MarkerSize.x, Config.MarkerSize.y, Config.MarkerSize.z, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, false, false, false, false)
end
end
end
end
else
Citizen.Wait(500)
end
end
end)
-- Enter / Exit marker events
Citizen.CreateThread(function()
while true do
Citizen.Wait(100)
if PlayerData.job ~= nil and PlayerData.job.name == 'police' then
local playerPed = PlayerPedId()
local coords = GetEntityCoords(playerPed)
local isInMarker = false
local currentStation = nil
local currentPart = nil
local currentPartNum = nil
for k,v in pairs(Config.PoliceStations) do
for i=1, #v.Cloakrooms, 1 do
if GetDistanceBetweenCoords(coords, v.Cloakrooms[i].x, v.Cloakrooms[i].y, v.Cloakrooms[i].z, true) < Config.MarkerSize.x then
isInMarker = true
currentStation = k
currentPart = 'Cloakroom'
currentPartNum = i
end
end
for i=1, #v.Armories, 1 do
if GetDistanceBetweenCoords(coords, v.Armories[i].x, v.Armories[i].y, v.Armories[i].z, true) < Config.MarkerSize.x then
isInMarker = true
currentStation = k
currentPart = 'Armory'
currentPartNum = i
end
end
for i=1, #v.Vehicles, 1 do
if GetDistanceBetweenCoords(coords, v.Vehicles[i].Spawner.x, v.Vehicles[i].Spawner.y, v.Vehicles[i].Spawner.z, true) < Config.MarkerSize.x then
isInMarker = true
currentStation = k
currentPart = 'VehicleSpawner'
currentPartNum = i
if distance < Config.MarkerSize.x then
isInMarker, currentStation, currentPart, currentPartNum = true, k, 'VehicleSpawner', i
end
end
for i=1, #v.Helicopters, 1 do
if GetDistanceBetweenCoords(coords, v.Helicopters[i].Spawner.x, v.Helicopters[i].Spawner.y, v.Helicopters[i].Spawner.z, true) < Config.MarkerSize.x then
isInMarker = true
currentStation = k
currentPart = 'HelicopterSpawner'
currentPartNum = i
local distance = GetDistanceBetweenCoords(coords, v.Helicopters[i].Spawner.x, v.Helicopters[i].Spawner.y, v.Helicopters[i].Spawner.z, true)
if distance < Config.MarkerSize.x then
isInMarker, currentStation, currentPart, currentPartNum = true, k, 'HelicopterSpawner', i
end
end
for i=1, #v.VehicleDeleters, 1 do
if GetDistanceBetweenCoords(coords, v.VehicleDeleters[i].x, v.VehicleDeleters[i].y, v.VehicleDeleters[i].z, true) < Config.MarkerSize.x then
isInMarker = true
currentStation = k
currentPart = 'VehicleDeleter'
currentPartNum = i
local distance = GetDistanceBetweenCoords(coords, v.VehicleDeleters[i].x, v.VehicleDeleters[i].y, v.VehicleDeleters[i].z, true)
if distance < Config.DrawDistance then
DrawMarker(Config.MarkerType, v.VehicleDeleters[i].x, v.VehicleDeleters[i].y, v.VehicleDeleters[i].z, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Config.MarkerSize.x, Config.MarkerSize.y, Config.MarkerSize.z, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, false, false, false, false)
end
if distance < Config.MarkerSize.x then
isInMarker, currentStation, currentPart, currentPartNum = true, k, 'VehicleDeleter', i
end
end
if Config.EnablePlayerManagement and PlayerData.job.grade_name == 'boss' then
for i=1, #v.BossActions, 1 do
if GetDistanceBetweenCoords(coords, v.BossActions[i].x, v.BossActions[i].y, v.BossActions[i].z, true) < Config.MarkerSize.x then
isInMarker = true
currentStation = k
currentPart = 'BossActions'
currentPartNum = i
local distance = GetDistanceBetweenCoords(coords, v.BossActions[i].x, v.BossActions[i].y, v.BossActions[i].z, true)
if distance < Config.DrawDistance then
DrawMarker(22, v.BossActions[i].x, v.BossActions[i].y, v.BossActions[i].z + 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, Config.MarkerColor.r, Config.MarkerColor.g, Config.MarkerColor.b, 100, false, true, 2, true, false, false, false)
end
if distance < Config.MarkerSize.x then
isInMarker, currentStation, currentPart, currentPartNum = true, k, 'BossActions', i
end
end
end
end
local hasExited = false
if isInMarker and not HasAlreadyEnteredMarker or (isInMarker and (LastStation ~= currentStation or LastPart ~= currentPart or LastPartNum ~= currentPartNum)) then
if
(LastStation ~= nil and LastPart ~= nil and LastPartNum ~= nil) and
(LastStation ~= currentStation or LastPart ~= currentPart or LastPartNum ~= currentPartNum)
then
if isInMarker and not HasAlreadyEnteredMarker or (isInMarker and (LastStation ~= currentStation or LastPart ~= currentPart or LastPartNum ~= currentPartNum)) then
if
(LastStation ~= nil and LastPart ~= nil and LastPartNum ~= nil) and
(LastStation ~= currentStation or LastPart ~= currentPart or LastPartNum ~= currentPartNum)
then
TriggerEvent('esx_policejob:hasExitedMarker', LastStation, LastPart, LastPartNum)
hasExited = true
end
HasAlreadyEnteredMarker = true
LastStation = currentStation
LastPart = currentPart
LastPartNum = currentPartNum
TriggerEvent('esx_policejob:hasEnteredMarker', currentStation, currentPart, currentPartNum)
end
if not hasExited and not isInMarker and HasAlreadyEnteredMarker then
HasAlreadyEnteredMarker = false
TriggerEvent('esx_policejob:hasExitedMarker', LastStation, LastPart, LastPartNum)
hasExited = true
end
HasAlreadyEnteredMarker = true
LastStation = currentStation
LastPart = currentPart
LastPartNum = currentPartNum
TriggerEvent('esx_policejob:hasEnteredMarker', currentStation, currentPart, currentPartNum)
end
if not hasExited and not isInMarker and HasAlreadyEnteredMarker then
HasAlreadyEnteredMarker = false
TriggerEvent('esx_policejob:hasExitedMarker', LastStation, LastPart, LastPartNum)
end
else
+42 -19
View File
@@ -2,7 +2,7 @@ Config = {}
Config.DrawDistance = 100.0
Config.MarkerType = 1
Config.MarkerSize = { x = 1.5, y = 1.5, z = 1.0 }
Config.MarkerSize = { x = 1.5, y = 1.5, z = 0.5 }
Config.MarkerColor = { r = 50, g = 50, b = 204 }
Config.EnablePlayerManagement = true
@@ -17,8 +17,8 @@ Config.HandcuffTimer = 10 * 60000 -- 10 mins
Config.EnableJobBlip = true -- enable blips for colleagues, requires esx_society
Config.MaxInService = 5
Config.Locale = 'sv'
Config.MaxInService = -1
Config.Locale = 'en'
Config.PoliceStations = {
@@ -32,23 +32,8 @@ Config.PoliceStations = {
Colour = 29
},
-- https://wiki.rage.mp/index.php?title=Weapons
AuthorizedWeapons = {
{ name = 'WEAPON_NIGHTSTICK', price = 200 },
{ name = 'WEAPON_COMBATPISTOL', price = 300 },
{ name = 'WEAPON_ASSAULTSMG', price = 1250 },
{ name = 'WEAPON_ASSAULTRIFLE', price = 1500 },
{ name = 'WEAPON_PUMPSHOTGUN', price = 600 },
{ name = 'WEAPON_STUNGUN', price = 500 },
{ name = 'WEAPON_FLASHLIGHT', price = 80 },
{ name = 'WEAPON_FIREEXTINGUISHER', price = 120 },
{ name = 'WEAPON_FLAREGUN', price = 60 },
{ name = 'WEAPON_STICKYBOMB', price = 250 },
{ name = 'GADGET_PARACHUTE', price = 300 }
},
Cloakrooms = {
{ x = 452.600, y = -993.306, z = 29.750 },
{ x = 452.6, y = -992.8, z = 29.7 },
},
Armories = {
@@ -97,6 +82,44 @@ Config.PoliceStations = {
}
Config.AuthorizedWeapons = {
recruit = {
{ weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
{ weapon = 'WEAPON_NIGHTSTICK', price = 0 },
{ weapon = 'WEAPON_STUNGUN', price = 500 },
{ weapon = 'WEAPON_FLASHLIGHT', price = 80 }
},
officer = {
{ weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
{ weapon = 'WEAPON_APPISTOL', components = { 0, 0, 1000, 4000, nil }, price = 10000 },
{ weapon = 'WEAPON_NIGHTSTICK', price = 0 },
{ weapon = 'WEAPON_STUNGUN', price = 500 },
{ weapon = 'WEAPON_FLASHLIGHT', price = 80 }
},
sergeant = {
},
intendent = {
},
lieutenant = {
},
chef = {
},
boss = {
}
}
-- https://wiki.rage.mp/index.php?title=Vehicles
Config.AuthorizedVehicles = {
Shared = {
+10 -10
View File
@@ -15,6 +15,16 @@ Locales['br'] = {
['buy_weapons'] = 'Comprar armas',
['armory'] = 'Arsenal',
['open_armory'] = 'Pressione ~INPUT_CONTEXT~ para acessar o arsenal',
['armory_owned'] = 'owned',
['armory_free'] = 'free',
['armory_item'] = '$%s',
['armory_weapontitle'] = 'armory - Buy weapon',
['armory_componenttitle'] = 'armory - Weapon attatchments',
['armory_bought'] = 'you bought an ~y~%s~s~ for ~r~$%s~s~',
['armory_money'] = 'you cannot afford that weapon',
['armory_hascomponent'] = 'you have that attatchment equiped!',
['get_weapon_menu'] = 'armory - Withdraw Weapon',
['put_weapon_menu'] = 'armory - Store Weapon',
-- Vehicles
['vehicle_menu'] = 'Veículo',
['vehicle_blocked'] = 'Já existe um carro fora da garagem',
@@ -103,17 +113,7 @@ Locales['br'] = {
['plate'] = 'placa: %s',
['owner_unknown'] = 'proprietário: Desconhecido',
['owner'] = 'proprietário: %s',
-- Weapons Menus
['get_weapon_menu'] = 'Arsenal - Pegar arma',
['put_weapon_menu'] = 'Arsenal - Entregar arma',
['buy_weapon_menu'] = 'Arsenal - Comprar armas',
['not_enough_money'] = 'Você não tem dinheiro suficiente',
-- Boss Menu
['take_company_money'] = 'Retirar o dinheiro da empresa',
['deposit_money'] = 'Depositar dinheiro',
['amount_of_withdrawal'] = 'Quantidade de retirada',
['invalid_amount'] = 'Quantidade inválida',
['amount_of_deposit'] = 'Quantidade de depósito',
['open_bossmenu'] = 'Pressione ~INPUT_CONTEXT~ para abrir o menu',
['quantity_invalid'] = 'invalid quantity',
['have_withdrawn'] = 'you have withdrawn ~y~%sx~s~ ~b~%s~s~',
+10 -10
View File
@@ -15,6 +15,16 @@ Locales['de'] = {
['buy_weapons'] = 'Waffen kaufen',
['armory'] = 'Waffenkammer',
['open_armory'] = 'Drücke ~INPUT_CONTEXT~ um die Waffenkammer zu öffnen',
['armory_owned'] = 'owned',
['armory_free'] = 'free',
['armory_item'] = '$%s',
['armory_weapontitle'] = 'armory - Buy weapon',
['armory_componenttitle'] = 'armory - Weapon attatchments',
['armory_bought'] = 'you bought an ~y~%s~s~ for ~r~$%s~s~',
['armory_money'] = 'you cannot afford that weapon',
['armory_hascomponent'] = 'you have that attatchment equiped!',
['get_weapon_menu'] = 'armory - Withdraw Weapon',
['put_weapon_menu'] = 'armory - Store Weapon',
-- Vehicles
['vehicle_menu'] = 'Fahrzeug',
['vehicle_blocked'] = 'es ist bereits ein Fahrzeug draussen',
@@ -103,17 +113,7 @@ Locales['de'] = {
['plate'] = 'plate: %s',
['owner_unknown'] = 'besitzer: Unbekannt',
['owner'] = 'besitzer: %s',
-- Weapons Menus
['get_weapon_menu'] = 'Waffenkammer - Waffen nehmen',
['put_weapon_menu'] = 'Waffenkammer - Waffen bringen',
['buy_weapon_menu'] = 'Waffenkammer - Waffen kaufen',
['not_enough_money'] = 'Du hast nicht genug Geld',
-- Boss Menu
['take_company_money'] = 'Firmengeld abheben',
['deposit_money'] = 'Geld einzahlen',
['amount_of_withdrawal'] = 'Betrag zum abheben',
['invalid_amount'] = 'ungültiger Betrag',
['amount_of_deposit'] = 'Betrag zum einzahlen',
['open_bossmenu'] = 'Drücke ~INPUT_CONTEXT~ um das Menü zu öffnen',
['quantity_invalid'] = 'invalid quantity',
['have_withdrawn'] = 'you have withdrawn ~y~%sx~s~ ~b~%s~s~',
+13 -13
View File
@@ -10,11 +10,21 @@ Locales['en'] = {
-- Armory
['remove_object'] = 'withdraw object',
['deposit_object'] = 'deposit object',
['get_weapon'] = 'withdraw weapon',
['put_weapon'] = 'deposit weapon',
['get_weapon'] = 'withdraw weapon from armory',
['put_weapon'] = 'store weapon in armory',
['buy_weapons'] = 'buy weapons',
['armory'] = 'armory',
['open_armory'] = 'press ~INPUT_CONTEXT~ to access the armory',
['open_armory'] = 'press ~INPUT_CONTEXT~ to access the ~y~Armory~s~.',
['armory_owned'] = 'owned',
['armory_free'] = 'free',
['armory_item'] = '$%s',
['armory_weapontitle'] = 'armory - Buy weapon',
['armory_componenttitle'] = 'armory - Weapon attatchments',
['armory_bought'] = 'you bought an ~y~%s~s~ for ~r~$%s~s~',
['armory_money'] = 'you cannot afford that weapon',
['armory_hascomponent'] = 'you have that attatchment equiped!',
['get_weapon_menu'] = 'armory - Withdraw Weapon',
['put_weapon_menu'] = 'armory - Store Weapon',
-- Vehicles
['vehicle_menu'] = 'vehicle',
['vehicle_blocked'] = 'all available spawn points are currently blocked!',
@@ -103,17 +113,7 @@ Locales['en'] = {
['plate'] = 'plate: %s',
['owner_unknown'] = 'owner: Unknown',
['owner'] = 'owner: %s',
-- Weapons Menus
['get_weapon_menu'] = 'armory - Withdraw Weapon',
['put_weapon_menu'] = 'armory - Deposit Weapon',
['buy_weapon_menu'] = 'armory - Buy Guns',
['not_enough_money'] = 'you do not have enough money',
-- Boss Menu
['take_company_money'] = 'withdraw Company Money',
['deposit_money'] = 'deposit Money',
['amount_of_withdrawal'] = 'amount of Withdrawal',
['invalid_amount'] = 'amount invalid',
['amount_of_deposit'] = 'amount of deposit',
['open_bossmenu'] = 'press ~INPUT_CONTEXT~ to open the menu',
['quantity_invalid'] = 'invalid quantity',
['have_withdrawn'] = 'you have withdrawn ~y~%sx~s~ ~b~%s~s~',
+10 -10
View File
@@ -15,6 +15,16 @@ Locales['es'] = {
['buy_weapons'] = 'Comprar armas',
['armory'] = 'Arsenal',
['open_armory'] = 'Presionarr ~INPUT_CONTEXT~ para acceder a la armeria',
['armory_owned'] = 'owned',
['armory_free'] = 'free',
['armory_item'] = '$%s',
['armory_weapontitle'] = 'armory - Buy weapon',
['armory_componenttitle'] = 'armory - Weapon attatchments',
['armory_bought'] = 'you bought an ~y~%s~s~ for ~r~$%s~s~',
['armory_money'] = 'you cannot afford that weapon',
['armory_hascomponent'] = 'you have that attatchment equiped!',
['get_weapon_menu'] = 'armory - Withdraw Weapon',
['put_weapon_menu'] = 'armory - Store Weapon',
-- Vehicles
['vehicle_menu'] = 'Vehículo',
['vehicle_blocked'] = 'Ya tienes un vehículo fuera',
@@ -103,17 +113,7 @@ Locales['es'] = {
['plate'] = 'n°: %s',
['owner_unknown'] = 'propietario: Desconocido',
['owner'] = 'propietario: %s',
-- Weapons Menus
['get_weapon_menu'] = 'Arsenal - Coger armas',
['put_weapon_menu'] = 'Arsenal - Depositar armas',
['buy_weapon_menu'] = 'Arsenal - Comprar armas',
['not_enough_money'] = 'No tienes suficiente dinero',
-- Boss Menu
['take_company_money'] = 'retirar dinero de la empresa',
['deposit_money'] = 'depositar dinero en la empresa',
['amount_of_withdrawal'] = 'cantidad a retirar',
['invalid_amount'] = 'cantidad inválida',
['amount_of_deposit'] = 'cantidad a depositar',
['open_bossmenu'] = 'presionar ~INPUT_CONTEXT~ para abrir el menú',
['quantity_invalid'] = 'cantidad invalida',
['have_withdrawn'] = 'you have withdrawn ~y~%sx~s~ ~b~%s~s~',
+10 -10
View File
@@ -15,6 +15,16 @@ Locales['fi'] = {
['buy_weapons'] = 'osta aseita',
['armory'] = 'asevarasto',
['open_armory'] = 'paina ~INPUT_CONTEXT~ avataksesi asevarasto',
['armory_owned'] = 'owned',
['armory_free'] = 'free',
['armory_item'] = '$%s',
['armory_weapontitle'] = 'armory - Buy weapon',
['armory_componenttitle'] = 'armory - Weapon attatchments',
['armory_bought'] = 'you bought an ~y~%s~s~ for ~r~$%s~s~',
['armory_money'] = 'you cannot afford that weapon',
['armory_hascomponent'] = 'you have that attatchment equiped!',
['get_weapon_menu'] = 'armory - Withdraw Weapon',
['put_weapon_menu'] = 'armory - Store Weapon',
-- Vehicles
['vehicle_menu'] = 'ajoneuvo',
['vehicle_blocked'] = 'ajoneuvo on jo ulkona tallista',
@@ -103,17 +113,7 @@ Locales['fi'] = {
['plate'] = 'kilpi: %s',
['owner_unknown'] = 'omistaja: Tuntematon',
['owner'] = 'omistaja: %s',
-- Weapons Menus
['get_weapon_menu'] = 'asevarasto - Ota ase',
['put_weapon_menu'] = 'asevarasto - Laita ase pois',
['buy_weapon_menu'] = 'asevarasto - Osta aseet',
['not_enough_money'] = 'sinulla ei ole tarpeeksi rahaa',
--Boss Menu
['take_company_money'] = 'nosta yrityksen varoja',
['deposit_money'] = 'talleta rahaa',
['amount_of_withdrawal'] = 'noston määrä',
['invalid_amount'] = 'virheellinen summa',
['amount_of_deposit'] = 'talletuksen määrä',
['open_bossmenu'] = 'paina ~INPUT_CONTEXT~ avataksesi valikon',
['quantity_invalid'] = 'invalid quantity',
['have_withdrawn'] = 'sinä otit varastosta ~y~%sx~s~ ~b~%s~s~',
+10 -10
View File
@@ -15,6 +15,16 @@ Locales['fr'] = {
['buy_weapons'] = 'acheter Armes',
['armory'] = 'armurerie',
['open_armory'] = 'appuyez sur ~INPUT_CONTEXT~ pour accéder à l\'armurerie',
['armory_owned'] = 'owned',
['armory_free'] = 'free',
['armory_item'] = '$%s',
['armory_weapontitle'] = 'armory - Buy weapon',
['armory_componenttitle'] = 'armory - Weapon attatchments',
['armory_bought'] = 'you bought an ~y~%s~s~ for ~r~$%s~s~',
['armory_money'] = 'you cannot afford that weapon',
['armory_hascomponent'] = 'you have that attatchment equiped!',
['get_weapon_menu'] = 'armory - Withdraw Weapon',
['put_weapon_menu'] = 'armory - Store Weapon',
-- Vehicles
['vehicle_menu'] = 'véhicule',
['vehicle_blocked'] = 'il y a déja un véhicule de sorti',
@@ -103,17 +113,7 @@ Locales['fr'] = {
['plate'] = 'n°: %s',
['owner_unknown'] = 'propriétaire: Inconnu',
['owner'] = 'propriétaire: %s',
-- Weapons Menus
['get_weapon_menu'] = 'armurerie - Prendre Arme',
['put_weapon_menu'] = 'armurerie - Déposer Arme',
['buy_weapon_menu'] = 'armurerie - Acheter Armes',
['not_enough_money'] = 'vous n\'avez pas assez d\'argent',
-- Boss Menu
['take_company_money'] = 'retirer argent société',
['deposit_money'] = 'déposer argent',
['amount_of_withdrawal'] = 'montant du retrait',
['invalid_amount'] = 'montant invalide',
['amount_of_deposit'] = 'montant du dépôt',
['open_bossmenu'] = 'appuyez sur ~INPUT_CONTEXT~ pour ouvrir le menu',
['quantity_invalid'] = 'quantité invalide',
['have_withdrawn'] = 'you have withdrawn ~y~%sx~s~ ~b~%s~s~',
+10 -10
View File
@@ -15,6 +15,16 @@ Locales['pl'] = {
['buy_weapons'] = 'kup Broń',
['armory'] = 'zbrojownia',
['open_armory'] = 'naciśnij ~INPUT_CONTEXT~ żeby uzyskać dostęp do zbrojowni',
['armory_owned'] = 'owned',
['armory_free'] = 'free',
['armory_item'] = '$%s',
['armory_weapontitle'] = 'armory - Buy weapon',
['armory_componenttitle'] = 'armory - Weapon attatchments',
['armory_bought'] = 'you bought an ~y~%s~s~ for ~r~$%s~s~',
['armory_money'] = 'you cannot afford that weapon',
['armory_hascomponent'] = 'you have that attatchment equiped!',
['get_weapon_menu'] = 'armory - Withdraw Weapon',
['put_weapon_menu'] = 'armory - Store Weapon',
-- Vehicles
['vehicle_menu'] = 'pojazdy',
['vehicle_blocked'] = 'masz już pojazd poza garażem',
@@ -103,17 +113,7 @@ Locales['pl'] = {
['plate'] = 'tablica rejestracyjna: %s',
['owner_unknown'] = 'właściciel: Nieznany',
['owner'] = 'właściciel: %s',
-- Weapons Menus
['get_weapon_menu'] = 'zbrojownia - Weź broń',
['put_weapon_menu'] = 'zbrojownia - Odłóż broń',
['buy_weapon_menu'] = 'zbrojownia - Kup broń',
['not_enough_money'] = 'nie masz wystarczającej ilości pieniędzy',
-- Boss Menu
['take_company_money'] = 'wypłać firmowe pieniądze',
['deposit_money'] = 'zdeponuj pieniądze',
['amount_of_withdrawal'] = 'wartość wypłaty',
['invalid_amount'] = 'nieprawidłowa wartość',
['amount_of_deposit'] = 'wartość depozytu',
['open_bossmenu'] = 'naciśnij ~INPUT_CONTEXT~ aby otworzyć menu',
['quantity_invalid'] = 'nieprawidłowa ilość',
['have_withdrawn'] = 'wyjmujesz z depozytu ~y~%sx~s~ ~b~%s~s~',
+12 -12
View File
@@ -12,9 +12,19 @@ Locales['sv'] = {
['deposit_object'] = 'lägg in objekt',
['get_weapon'] = 'ta ut vapen',
['put_weapon'] = 'lägg in vapen',
['buy_weapons'] = 'köp in vapen',
['buy_weapons'] = 'köp vapen',
['armory'] = 'vapenförråd',
['open_armory'] = 'tryck ~INPUT_CONTEXT~ för att komma åt förrådet',
['open_armory'] = 'tryck ~INPUT_CONTEXT~ för att komma åt ~y~vapenförrådet~s~.',
['armory_owned'] = 'ägd',
['armory_free'] = 'gratis',
['armory_item'] = '%s SEK',
['armory_weapontitle'] = 'vapenförråd - Köp vapen',
['armory_componenttitle'] = 'vapenförråd - Vapen tillbehör',
['armory_bought'] = 'du köpte ~y~%s~s~ för ~r~%s SEK~s~',
['armory_money'] = 'du har inte råd med det vapnet',
['armory_hascomponent'] = 'du har redan det tillbehöret!',
['get_weapon_menu'] = 'vapenförråd - Ta ut vapen',
['put_weapon_menu'] = 'vapenförråd - Spara vapen',
-- Vehicles
['vehicle_menu'] = 'bilar',
['vehicle_blocked'] = 'alla tillgänliga spawn points är blockerade!',
@@ -103,17 +113,7 @@ Locales['sv'] = {
['plate'] = 'reg nummer: %s',
['owner_unknown'] = 'ägare: Okänt',
['owner'] = 'ägare: %s',
-- Weapons Menus
['get_weapon_menu'] = 'vapenförråd - Ta vapen',
['put_weapon_menu'] = 'vapenförråd - Lägg in vapen',
['buy_weapon_menu'] = 'vapenförråd - Köp in vapen',
['not_enough_money'] = 'du har inte tillräckligt mycket pengar',
-- Boss Menu
['take_company_money'] = 'ta ut företagspengar',
['deposit_money'] = 'lägg in pengar till företaget',
['amount_of_withdrawal'] = 'belopp att ta ut',
['invalid_amount'] = 'otillgängligt belopp',
['amount_of_deposit'] = 'belopp att lägga in',
['open_bossmenu'] = 'tryck ~INPUT_CONTEXT~ för att öppna menyn',
['quantity_invalid'] = 'otillgängligt antal',
['have_withdrawn'] = 'du har tagit ut ~y~x%s~s~ ~b~%s~s~',
+41 -16
View File
@@ -9,17 +9,6 @@ end
TriggerEvent('esx_phone:registerNumber', 'police', _U('alert_police'), true, true)
TriggerEvent('esx_society:registerSociety', 'police', 'Police', 'society_police', 'society_police', 'society_police', {type = 'public'})
RegisterServerEvent('esx_policejob:giveWeapon')
AddEventHandler('esx_policejob:giveWeapon', function(weapon, ammo)
local xPlayer = ESX.GetPlayerFromId(source)
if xPlayer.job.name == 'police' then
xPlayer.addWeapon(weapon, ammo)
else
print(('esx_policejob: %s attempted to give weapon!'):format(xPlayer.identifier))
end
end)
RegisterServerEvent('esx_policejob:confiscatePlayerItem')
AddEventHandler('esx_policejob:confiscatePlayerItem', function(target, itemType, itemName, amount)
local _source = source
@@ -385,18 +374,54 @@ ESX.RegisterServerCallback('esx_policejob:removeArmoryWeapon', function(source,
end)
ESX.RegisterServerCallback('esx_policejob:buyWeapon', function(source, cb, weaponName, type, componentNum)
local xPlayer = ESX.GetPlayerFromId(source)
local authorizedWeapons, selectedWeapon = Config.AuthorizedWeapons[xPlayer.job.grade_name]
ESX.RegisterServerCallback('esx_policejob:buy', function(source, cb, amount)
for k,v in ipairs(authorizedWeapons) do
if v.weapon == weaponName then
selectedWeapon = v
break
end
end
if not selectedWeapon then
print(('esx_policejob: %s attempted to buy an invalid weapon.'):format(xPlayer.identifier))
cb(false)
end
-- Weapon
if type == 1 then
if xPlayer.getMoney() >= selectedWeapon.price then
xPlayer.removeMoney(selectedWeapon.price)
xPlayer.addWeapon(weaponName, 100)
TriggerEvent('esx_addonaccount:getSharedAccount', 'society_police', function(account)
if account.money >= amount then
account.removeMoney(amount)
cb(true)
else
cb(false)
end
end)
-- Weapon Component
elseif type == 2 then
local price = selectedWeapon.components[weaponComponent]
local weaponNum, weapon = ESX.GetWeapon(weaponName)
local component = weapon.components[componentNum]
if component then
if xPlayer.getMoney() >= selectedWeapon.price then
xPlayer.removeMoney(selectedWeapon.price)
xPlayer.addWeaponComponent(weaponName, component.name)
cb(true)
else
cb(false)
end
else
print(('esx_policejob: %s attempted to buy an invalid weapon component.'):format(xPlayer.identifier))
cb(false)
end
end
end)
ESX.RegisterServerCallback('esx_policejob:getStockItems', function(source, cb)