diff --git a/client/main.lua b/client/main.lua
index f04422d7..722d4041 100644
--- a/client/main.lua
+++ b/client/main.lua
@@ -8,15 +8,15 @@ AddEventHandler('esx:playerLoaded', function(xPlayer)
ESX.PlayerData = xPlayer
if Config.EnableHud then
- for i=1, #xPlayer.accounts, 1 do
- local accountTpl = '

{{money}}
'
+ for k,v in ipairs(xPlayer.accounts) do
+ local accountTpl = '
{{money}}
'
- ESX.UI.HUD.RegisterElement('account_' .. xPlayer.accounts[i].name, i-1, 0, accountTpl, {
+ ESX.UI.HUD.RegisterElement('account_' .. v.name, k - 1, 0, accountTpl, {
money = 0
})
- ESX.UI.HUD.UpdateElement('account_' .. xPlayer.accounts[i].name, {
- money = ESX.Math.GroupDigits(xPlayer.accounts[i].money)
+ ESX.UI.HUD.UpdateElement('account_' .. v.name, {
+ money = ESX.Math.GroupDigits(v.money)
})
end
@@ -81,22 +81,21 @@ AddEventHandler('esx:restoreLoadout', function()
RemoveAllPedWeapons(playerPed, true)
- for i=1, #ESX.PlayerData.loadout, 1 do
- local weaponName = ESX.PlayerData.loadout[i].name
+ for k,v in ipairs(ESX.PlayerData.loadout) do
+ local weaponName = v.name
local weaponHash = GetHashKey(weaponName)
GiveWeaponToPed(playerPed, weaponHash, 0, false, false)
local ammoType = GetPedAmmoTypeFromWeapon(playerPed, weaponHash)
- for j=1, #ESX.PlayerData.loadout[i].components, 1 do
- local weaponComponent = ESX.PlayerData.loadout[i].components[j]
- local componentHash = ESX.GetWeaponComponent(weaponName, weaponComponent).hash
+ for k2,v2 in ipairs(v.components) do
+ local componentHash = ESX.GetWeaponComponent(weaponName, v2).hash
GiveWeaponComponentToPed(playerPed, weaponHash, componentHash)
end
if not ammoTypes[ammoType] then
- AddAmmoToPed(playerPed, weaponHash, ESX.PlayerData.loadout[i].ammo)
+ AddAmmoToPed(playerPed, weaponHash, v.ammo)
ammoTypes[ammoType] = true
end
end
@@ -106,9 +105,9 @@ end)
RegisterNetEvent('esx:setAccountMoney')
AddEventHandler('esx:setAccountMoney', function(account)
- for i=1, #ESX.PlayerData.accounts, 1 do
- if ESX.PlayerData.accounts[i].name == account.name then
- ESX.PlayerData.accounts[i] = account
+ for k,v in ipairs(ESX.PlayerData.accounts) do
+ if v.name == account.name then
+ ESX.PlayerData.accounts[k] = account
break
end
end
@@ -127,9 +126,9 @@ end)
RegisterNetEvent('esx:addInventoryItem')
AddEventHandler('esx:addInventoryItem', function(item, count)
- for i=1, #ESX.PlayerData.inventory, 1 do
- if ESX.PlayerData.inventory[i].name == item.name then
- ESX.PlayerData.inventory[i] = item
+ for k,v in ipairs(ESX.PlayerData.inventory) do
+ if v.name == item.name then
+ ESX.PlayerData.inventory[k] = item
break
end
end
@@ -143,9 +142,9 @@ end)
RegisterNetEvent('esx:removeInventoryItem')
AddEventHandler('esx:removeInventoryItem', function(item, count)
- for i=1, #ESX.PlayerData.inventory, 1 do
- if ESX.PlayerData.inventory[i].name == item.name then
- ESX.PlayerData.inventory[i] = item
+ for k,v in ipairs(ESX.PlayerData.inventory) do
+ if v.name == item.name then
+ ESX.PlayerData.inventory[k] = item
break
end
end
@@ -411,18 +410,17 @@ Citizen.CreateThread(function()
isLoadoutLoaded = false
end
- for i=1, #Config.Weapons do
- local weaponName = Config.Weapons[i].name
+ for k,v in ipairs(Config.Weapons) do
+ local weaponName = v.name
local weaponHash = GetHashKey(weaponName)
local weaponComponents = {}
if HasPedGotWeapon(playerPed, weaponHash, false) and weaponName ~= 'WEAPON_UNARMED' then
local ammo = GetAmmoInPedWeapon(playerPed, weaponHash)
- local components = Config.Weapons[i].components
- for j=1, #components do
- if HasPedGotWeaponComponent(playerPed, weaponHash, components[j].hash) then
- table.insert(weaponComponents, components[j].name)
+ for k2,v2 in ipairs(v.components) do
+ if HasPedGotWeaponComponent(playerPed, weaponHash, v2.hash) then
+ table.insert(weaponComponents, v2.name)
end
end
@@ -435,7 +433,7 @@ Citizen.CreateThread(function()
table.insert(loadout, {
name = weaponName,
ammo = ammo,
- label = Config.Weapons[i].label,
+ label = v.label,
components = weaponComponents
})
else
@@ -480,7 +478,7 @@ if Config.DisableWantedLevel then
end)
end
--- pickups
+-- Pickups
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
@@ -518,23 +516,16 @@ end)
Citizen.CreateThread(function()
while true do
Citizen.Wait(1000)
+ local playerPed = PlayerPedId()
if ESX.PlayerLoaded and isPlayerSpawned then
- local playerPed = PlayerPedId()
- local coords = GetEntityCoords(playerPed)
+ local coords = GetEntityCoords(playerPed)
if not IsEntityDead(playerPed) then
ESX.PlayerData.lastPosition = {x = coords.x, y = coords.y, z = coords.z}
end
end
- end
-end)
-Citizen.CreateThread(function()
- while true do
- Citizen.Wait(1000)
-
- local playerPed = PlayerPedId()
if IsEntityDead(playerPed) and isPlayerSpawned then
isPlayerSpawned = false
end
diff --git a/server/classes/player.lua b/server/classes/player.lua
index 5642c527..15bd7057 100644
--- a/server/classes/player.lua
+++ b/server/classes/player.lua
@@ -139,23 +139,19 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
self.getAccounts = function()
local accounts = {}
- for i=1, #Config.Accounts, 1 do
- if Config.Accounts[i] == 'bank' then
-
+ for k,v in ipairs(Config.Accounts) do
+ if v == 'bank' then
table.insert(accounts, {
name = 'bank',
money = self.get('bank'),
- label = Config.AccountLabels['bank']
+ label = Config.AccountLabels.bank
})
-
else
-
- for j=1, #self.accounts, 1 do
- if self.accounts[j].name == Config.Accounts[i] then
- table.insert(accounts, self.accounts[j])
+ for k2,v2 in ipairs(self.accounts) do
+ if v2 == v then
+ table.insert(accounts, v2)
end
end
-
end
end
@@ -167,13 +163,13 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
return {
name = 'bank',
money = self.get('bank'),
- label = Config.AccountLabels['bank']
+ label = Config.AccountLabels.bank
}
end
- for i=1, #self.accounts, 1 do
- if self.accounts[i].name == a then
- return self.accounts[i]
+ for k,v in ipairs(self.accounts) do
+ if v.name == a then
+ return v
end
end
end
@@ -213,24 +209,24 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
end
self.getMissingAccounts = function(cb)
- MySQL.Async.fetchAll('SELECT * FROM `user_accounts` WHERE `identifier` = @identifier', {
+ MySQL.Async.fetchAll('SELECT name FROM user_accounts WHERE identifier = @identifier', {
['@identifier'] = self.getIdentifier()
}, function(result)
local missingAccounts = {}
- for i=1, #Config.Accounts, 1 do
- if Config.Accounts[i] ~= 'bank' then
+ for k,v in ipairs(Config.Accounts) do
+ if v ~= 'bank' then
local found = false
- for j=1, #result, 1 do
- if Config.Accounts[i] == result[j].name then
+ for k2,v2 in ipairs(result) do
+ if v == v2.name then
found = true
break
end
end
if not found then
- table.insert(missingAccounts, Config.Accounts[i])
+ table.insert(missingAccounts, v)
end
end
end
@@ -240,12 +236,12 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
end
self.createAccounts = function(missingAccounts, cb)
- for i=1, #missingAccounts, 1 do
- MySQL.Async.execute('INSERT INTO `user_accounts` (identifier, name) VALUES (@identifier, @name)', {
+ for k,v in ipairs(missingAccounts) do
+ MySQL.Async.execute('INSERT INTO user_accounts (identifier, name) VALUES (@identifier, @name)', {
['@identifier'] = self.getIdentifier(),
- ['@name'] = missingAccounts[i]
+ ['@name'] = v
}, function(rowsChanged)
- if cb ~= nil then
+ if cb then
cb()
end
end)
@@ -308,9 +304,9 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
end
self.getInventoryItem = function(name)
- for i=1, #self.inventory, 1 do
- if self.inventory[i].name == name then
- return self.inventory[i]
+ for k,v in ipairs(self.inventory) do
+ if v.name == name then
+ return v
end
end
end
@@ -366,11 +362,11 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
self.job.skin_male = {}
self.job.skin_female = {}
- if gradeObject.skin_male ~= nil then
+ if gradeObject.skin_male then
self.job.skin_male = json.decode(gradeObject.skin_male)
end
- if gradeObject.skin_female ~= nil then
+ if gradeObject.skin_female then
self.job.skin_female = json.decode(gradeObject.skin_female)
end
@@ -412,15 +408,15 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
self.removeWeapon = function(weaponName, ammo)
local weaponLabel
- for i=1, #self.loadout, 1 do
- if self.loadout[i].name == weaponName then
- weaponLabel = self.loadout[i].label
+ for k,v in ipairs(self.loadout) do
+ if v.name == weaponName then
+ weaponLabel = v.label
- for j=1, #self.loadout[i].components, 1 do
- TriggerClientEvent('esx:removeWeaponComponent', self.source, weaponName, self.loadout[i].components[j])
+ for k2,v2 in ipairs(v.components) do
+ TriggerClientEvent('esx:removeWeaponComponent', self.source, weaponName, v2)
end
- table.remove(self.loadout, i)
+ table.remove(self.loadout, k)
break
end
end
@@ -438,9 +434,9 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
return
end
- for i=1, #self.loadout[loadoutNum].components, 1 do
- if self.loadout[loadoutNum].components.name == weaponComponent then
- table.remove(self.loadout[loadoutNum].components, i)
+ for k,v in ipairs(self.loadout[loadoutNum].components) do
+ if v.name == weaponComponent then
+ table.remove(self.loadout[loadoutNum].components, k)
break
end
end
@@ -455,8 +451,8 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
return false
end
- for i=1, #weapon.components, 1 do
- if weapon.components[i] == weaponComponent then
+ for k,v in ipairs(weapon.components) do
+ if v == weaponComponent then
return true
end
end
@@ -465,8 +461,8 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
end
self.hasWeapon = function(weaponName)
- for i=1, #self.loadout, 1 do
- if self.loadout[i].name == weaponName then
+ for k,v in ipairs(self.loadout) do
+ if v.name == weaponName then
return true
end
end
@@ -475,9 +471,9 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
end
self.getWeapon = function(weaponName)
- for i=1, #self.loadout, 1 do
- if self.loadout[i].name == weaponName then
- return i, self.loadout[i]
+ for k,v in ipairs(self.loadout) do
+ if v.name == weaponName then
+ return k, v
end
end