forked from Simnation/Main
175 lines
5 KiB
Lua
175 lines
5 KiB
Lua
![]() |
local admin = nil
|
|||
|
|
|||
|
---@return boolean
|
|||
|
function isPlayerAdmin()
|
|||
|
if admin == nil then
|
|||
|
admin = lib.callback.await("tgiann-inventory:server:isAdmin", false)
|
|||
|
end
|
|||
|
return admin
|
|||
|
end
|
|||
|
|
|||
|
---@param job string
|
|||
|
---@return boolean
|
|||
|
function isPolice(job)
|
|||
|
for i = 1, #config.weaponPoliceJobs do
|
|||
|
if config.weaponPoliceJobs[i] == job then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
---@param bool boolean
|
|||
|
function hotbarIsOpenEditable(bool)
|
|||
|
TriggerEvent("tgiann-inventory:hotbar", bool)
|
|||
|
end
|
|||
|
|
|||
|
---@return boolean
|
|||
|
function canOpen()
|
|||
|
if not PlayerData then PlayerData = exports["tgiann-core"]:getPlayerData() end
|
|||
|
return not IsNuiFocused() and not IsDisabledControlPressed(0, 19) and client.inventoryActive and not client.isDead and not IsPauseMenuActive() and client.playerLoaded and not PlayerData.metadata.kelepce and not PlayerData.metadata.pkelepce
|
|||
|
end
|
|||
|
|
|||
|
---@param text string
|
|||
|
---@param type? "me" | "do"
|
|||
|
function emote(text, type)
|
|||
|
if not config.autoEmote then return end
|
|||
|
ExecuteCommand((type or "me") .. " " .. text)
|
|||
|
end
|
|||
|
|
|||
|
RegisterNetEvent('tgiann-inventory:emote')
|
|||
|
AddEventHandler('tgiann-inventory:emote', emote)
|
|||
|
|
|||
|
function opened()
|
|||
|
TriggerEvent("tgiann-hud:ui", false)
|
|||
|
TriggerEvent("tgiann-lumihud:ui", false)
|
|||
|
end
|
|||
|
|
|||
|
function closed()
|
|||
|
TriggerEvent("tgiann-hud:ui", true)
|
|||
|
TriggerEvent("tgiann-lumihud:ui", true)
|
|||
|
end
|
|||
|
|
|||
|
---@return boolean
|
|||
|
function disableClotheButton()
|
|||
|
--[[ local onDuty = false
|
|||
|
if PlayerData.job.name == "police" then
|
|||
|
onDuty = PlayerData.job.onduty
|
|||
|
end
|
|||
|
return onDuty or (exports["tgiann-event"]:joinedAnyEvent() and true or false ) or exports["tgiann-clothing"]:isInspect() ]]
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
---@param vehicle number
|
|||
|
---@return {maxweight: number, slots: number}
|
|||
|
function getTrunkData(vehicle)
|
|||
|
local modelData = config.vehicleModelSlotsMaxWeights[GetEntityModel(vehicle)]
|
|||
|
if modelData then
|
|||
|
return {
|
|||
|
maxweight = modelData.maxWeight,
|
|||
|
slots = modelData.slots,
|
|||
|
}
|
|||
|
end
|
|||
|
|
|||
|
local classData = config.vehicleClassSlotsMaxWeights[GetVehicleClass(vehicle)]
|
|||
|
if classData then
|
|||
|
return {
|
|||
|
maxweight = classData.maxWeight,
|
|||
|
slots = classData.slots,
|
|||
|
}
|
|||
|
end
|
|||
|
|
|||
|
return {
|
|||
|
maxweight = 10000,
|
|||
|
slots = 5,
|
|||
|
}
|
|||
|
end
|
|||
|
|
|||
|
---@return boolean
|
|||
|
function removeWeaponCustom()
|
|||
|
--[[ if exports["tgiann-pvpinventory"]:isActive() then
|
|||
|
SetCurrentWeapon()
|
|||
|
return true
|
|||
|
end ]]
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
---@return boolean
|
|||
|
function dropWeaponWhenDieEditable()
|
|||
|
--[[ local zoneIsRed = exports["tgiann-safezone"]:getZoneType() == "red"
|
|||
|
if zoneIsRed and exports["tgiann-police"]:playerIsPolice() then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if zoneIsRed and PlayerData.metadata.vip.level == 2 and math.random(1, 100) >= 50 then -- 2 Level VIP Özelliği %50 silah düşme oranı
|
|||
|
TriggerEvent("inventory:client:removeWeapon")
|
|||
|
return
|
|||
|
end ]]
|
|||
|
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
---@param status { hunger?:number, thirst?:number }
|
|||
|
function setPlayerStatus(status)
|
|||
|
if config.framework == "esx" then
|
|||
|
if status.hunger then
|
|||
|
TriggerEvent("esx_status:getStatus", "hunger", function(value)
|
|||
|
value.set(value.val + status.hunger)
|
|||
|
end)
|
|||
|
end
|
|||
|
if status.thirst then
|
|||
|
TriggerEvent("esx_status:getStatus", "thirst", function(value)
|
|||
|
value.set(value.val + status.thirst)
|
|||
|
end)
|
|||
|
end
|
|||
|
elseif config.framework == "qb" then
|
|||
|
if status.hunger then
|
|||
|
TriggerServerEvent("consumables:server:addHunger", tgiCore.core.Functions.GetPlayerData().metadata.hunger + status.hunger)
|
|||
|
end
|
|||
|
if status.thirst then
|
|||
|
TriggerServerEvent("consumables:server:addThirst", tgiCore.core.Functions.GetPlayerData().metadata.thirst + status.thirst)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
---@param itemConfig table
|
|||
|
---@param itemName string
|
|||
|
function editableAddCarryItem(itemConfig, itemName)
|
|||
|
-- LocalPlayer.state:set('hrCarry', itemName, false)
|
|||
|
end
|
|||
|
|
|||
|
---@param carryItem {object:number, item:string}
|
|||
|
function editableRemoveCarryItem(carryItem)
|
|||
|
-- LocalPlayer.state:set('hrCarry', nil, false)
|
|||
|
end
|
|||
|
|
|||
|
---@return boolean
|
|||
|
function canUseRealisticArmor()
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
---@param targetPlayerPed number PlayerPedId
|
|||
|
---@param targetPlayerServerId number PlayerServerId
|
|||
|
function canRobTarget(targetPlayerPed, targetPlayerServerId)
|
|||
|
local isDead = tgiCore.IsTargetDead(targetPlayerServerId)
|
|||
|
if isDead then return config.searchPlayer.deadPlayer, lang.robDeadError end
|
|||
|
|
|||
|
if not config.searchPlayer.animation.active then return true end
|
|||
|
|
|||
|
for i = 1, #config.searchPlayer.animation.list do
|
|||
|
local data = config.searchPlayer.animation.list[i]
|
|||
|
if IsEntityPlayingAnim(targetPlayerPed, data.name, data.anim, 3) then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return false, lang.robAnimationError
|
|||
|
end
|
|||
|
|
|||
|
---@param enable boolean
|
|||
|
function setFastSlotsEnable(enable)
|
|||
|
client.fastSlotsEnable = enable
|
|||
|
end
|
|||
|
|
|||
|
exports("SetFastSlotsEnable", setFastSlotsEnable)
|