diff --git a/client/main.lua b/client/main.lua
index d768fc58..1b2803bb 100644
--- a/client/main.lua
+++ b/client/main.lua
@@ -1,17 +1,44 @@
local isLoadoutLoaded, isPaused, isDead, isFirstSpawn, pickups = false, false, false, true, {}
+Citizen.CreateThread(function()
+ while true do
+ Citizen.Wait(0)
+
+ if NetworkIsPlayerActive(PlayerId()) then
+ TriggerServerEvent('esx:onPlayerJoined')
+ break
+ end
+ end
+end)
+
RegisterNetEvent('esx:playerLoaded')
AddEventHandler('esx:playerLoaded', function(playerData)
ESX.PlayerLoaded = true
ESX.PlayerData = playerData
+ local defaultModel = GetHashKey('mp_m_freemode_01')
+ RequestModel(defaultModel)
+
+ while not HasModelLoaded(defaultModel) do
+ Citizen.Wait(100)
+ end
+
+ SetPlayerModel(PlayerId(), defaultModel)
+ local playerPed = PlayerPedId()
+
+ SetPedDefaultComponentVariation(playerPed)
+ SetModelAsNoLongerNeeded(defaultModel)
+ FreezeEntityPosition(playerPed, false)
+
+ if Config.EnablePvP then
+ SetCanAttackFriendly(playerPed, true, false)
+ NetworkSetFriendlyFireOption(true)
+ end
+
if Config.EnableHud then
for k,v in ipairs(playerData.accounts) do
local accountTpl = '

{{money}}
'
-
- ESX.UI.HUD.RegisterElement('account_' .. v.name, k, 0, accountTpl, {
- money = ESX.Math.GroupDigits(v.money)
- })
+ ESX.UI.HUD.RegisterElement('account_' .. v.name, k, 0, accountTpl, {money = ESX.Math.GroupDigits(v.money)})
end
local jobTpl = '{{job_label}} - {{grade_label}}
'
@@ -25,43 +52,34 @@ AddEventHandler('esx:playerLoaded', function(playerData)
grade_label = playerData.job.grade_label
})
end
+
+ ESX.Game.Teleport(playerPed, {
+ x = playerData.coords.x,
+ y = playerData.coords.y,
+ z = playerData.coords.z + 0.25,
+ heading = playerData.coords.heading
+ }, function()
+ isLoadoutLoaded, isDead = true, false
+ TriggerServerEvent('esx:onPlayerSpawn')
+ TriggerEvent('esx:onPlayerSpawn')
+ TriggerEvent('playerSpawned') -- compatibility with old scripts, will be removed soon
+ TriggerEvent('esx:restoreLoadout')
+
+ Citizen.Wait(3000)
+ ShutdownLoadingScreen()
+ DoScreenFadeIn(10000)
+ end)
end)
RegisterNetEvent('esx:setMaxWeight')
-AddEventHandler('esx:setMaxWeight', function(newMaxWeight)
- ESX.PlayerData.maxWeight = newMaxWeight
-end)
-
-AddEventHandler('playerSpawned', function()
- if isFirstSpawn then
- TriggerServerEvent('esx:playerJoined')
- end
-
- while not ESX.PlayerLoaded do
- Citizen.Wait(10)
- end
-
- TriggerEvent('esx:restoreLoadout')
-
- if isFirstSpawn then
- ESX.Game.Teleport(PlayerPedId(), ESX.PlayerData.coords)
- isFirstSpawn = false
- end
-
- isLoadoutLoaded, isDead = true, false
-
- if Config.EnablePvP then
- SetCanAttackFriendly(PlayerPedId(), true, false)
- NetworkSetFriendlyFireOption(true)
- end
-end)
+AddEventHandler('esx:setMaxWeight', function(newMaxWeight) ESX.PlayerData.maxWeight = newMaxWeight end)
AddEventHandler('esx:onPlayerDeath', function() isDead = true end)
AddEventHandler('skinchanger:loadDefaultModel', function() isLoadoutLoaded = false end)
AddEventHandler('skinchanger:modelLoaded', function()
while not ESX.PlayerLoaded do
- Citizen.Wait(1)
+ Citizen.Wait(100)
end
TriggerEvent('esx:restoreLoadout')
diff --git a/server/main.lua b/server/main.lua
index 4d63e12a..7150adad 100644
--- a/server/main.lua
+++ b/server/main.lua
@@ -1,6 +1,8 @@
-RegisterNetEvent('esx:playerJoined')
-AddEventHandler('esx:playerJoined', function()
- onPlayerJoined(source)
+RegisterNetEvent('esx:onPlayerJoined')
+AddEventHandler('esx:onPlayerJoined', function()
+ if not ESX.Players[source] then
+ onPlayerJoined(source)
+ end
end)
function onPlayerJoined(playerId)