Skip to content

Commit

Permalink
refactor - es_extended - PlayerOverride Functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
Mycroft-Studios committed May 22, 2022
1 parent 8595825 commit ef6b66a
Show file tree
Hide file tree
Showing 7 changed files with 857 additions and 673 deletions.
2 changes: 2 additions & 0 deletions [esx]/es_extended/client/main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ AddEventHandler('esx:playerLoaded', function(xPlayer, isNew, skin)
grade_label = gradeLabel
})
end

FreezeEntityPosition(PlayerPedId(), false)
StartServerSyncLoops()
end)

Expand Down
216 changes: 216 additions & 0 deletions [esx]/es_extended/server/classes/overrides/oxinventory.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
local Inventory

if Config.OxInventory then
AddEventHandler('ox_inventory:loadInventory', function(module)
Inventory = module
end)
end

Core.PlayerFunctionOverrides.OxInventory = {
getInventory = function(self)
return function()
local res = {}

for k, v in pairs(self.inventory) do
if v.count and v.count > 0 then
local metadata = v.metadata

if v.metadata and next(v.metadata) == nil then
metadata = nil
end

res[#res+1] = {
name = v.name,
count = v.count,
slot = k,
metadata = metadata
}
end
end

return res
end
end,

getLoadout = function(self)
return function()
return {}
end
end,

setAccountMoney = function(self)
return function(accountName,money)
if money >= 0 then
local account = self.getAccount(accountName)

if account then
local newMoney = ESX.Math.Round(money)
account.money = newMoney

self.triggerEvent('esx:setAccountMoney', account)

if Inventory.accounts[accountName] then
Inventory.SetItem(self.source, accountName, money)
end
end
end
end
end,

addAccountMoney = function(self)
return function(accountName,money)
if money > 0 then
local account = self.getAccount(accountName)

if account then
local newMoney = account.money + ESX.Math.Round(money)
account.money = newMoney

self.triggerEvent('esx:setAccountMoney', account)

if Inventory.accounts[accountName] then
Inventory.AddItem(self.source, accountName, money)
end
end
end
end
end,

removeAccountMoney = function(self)
return function(accountName,money)
if money > 0 then
local account = self.getAccount(accountName)

if account then
local newMoney = account.money - ESX.Math.Round(money)
account.money = newMoney

self.triggerEvent('esx:setAccountMoney', account)

if Inventory.accounts[accountName] then
Inventory.RemoveItem(self.source, accountName, money)
end
end
end
end
end,

getInventoryItem = function(self)
return function(name,metadata)
return Inventory.GetItem(self.source, name, metadata)
end
end,

addInventoryItem = function(self)
return function(name,count,metadata,slot)
return Inventory.AddItem(self.source, name, count or 1, metadata, slot)
end
end,

removeInventoryItem = function(self)
return function(name,count,metadata,slot)
return Inventory.RemoveItem(self.source, name, count or 1, metadata, slot)
end
end,

setInventoryItem = function(self)
return function(name,count,metadata)
return Inventory.SetItem(self.source, name, count, metadata)
end
end,

canCarryItem = function(self)
return function(name,count,metadata)
return Inventory.CanCarryItem(self.source, name, count, metadata)
end
end,

canSwapItem = function(self)
return function(firstItem, firstItemCount, testItem, testItemCount)
return Inventory.CanSwapItem(self.source, firstItem, firstItemCount, testItem, testItemCount)
end
end,

setMaxWeight = function(self)
return function(newWeight)
self.maxWeight = newWeight
self.triggerEvent('esx:setMaxWeight', self.maxWeight)
return Inventory.Set(self.source, 'maxWeight', newWeight)
end
end,

addWeapon = function(self)
return function() end
end,

addWeaponComponent = function(self)
return function() end
end,

addWeaponAmmo = function(self)
return function() end
end,

updateWeaponAmmo = function(self)
return function() end
end,

setWeaponTint = function(self)
return function() end
end,

getWeaponTint = function(self)
return function() end
end,

removeWeapon = function(self)
return function() end
end,

removeWeaponComponent = function(self)
return function() end
end,

removeWeaponAmmo = function(self)
return function() end
end,

hasWeaponComponent = function(self)
return function()
return false
end
end,

hasWeapon = function(self)
return function()
return false
end
end,

hasItem = function(self)
return function(name,metadata)
return Inventory.GetItem(self.source, name, metadata)
end
end,

getWeapon = function(self)
return function() end
end,

syncInventory = function(self)
return function(weight, maxWeight, items, money)
self.weight, self.maxWeight = weight, maxWeight
self.inventory = items

if money then
for k, v in pairs(money) do
local account = self.getAccount(k)
if ESX.Math.Round(account.money) ~= v then
account.money = v
self.triggerEvent('esx:setAccountMoney', account)
end
end
end
end
end
}
Loading

1 comment on commit ef6b66a

@mcNuggets1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is the most hideous pr i have ever seen

Please sign in to comment.