Skip to content

Commit f871543

Browse files
committed
Final fix for class selection
1 parent 31f4b99 commit f871543

File tree

2 files changed

+34
-22
lines changed

2 files changed

+34
-22
lines changed

amx/server/events.lua

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -294,36 +294,45 @@ addEventHandler('onPlayerSpawn', root,
294294
function()
295295
local playerID = getElemID(source)
296296
local playerdata = g_Players[playerID]
297+
297298
local spawninfo = playerdata.spawninfo or (g_PlayerClasses and g_PlayerClasses[playerdata.selectedclass])
298299
if not spawninfo or playerdata.doingclasssel then
299300
return
300301
end
301302

302-
setElementFrozen(source, false)
303-
toggleAllControls(source, true)
304-
setElementAlpha(source, 255)
305-
setElementCollisionsEnabled(source, true)
306-
307303
setPlayerState(source, PLAYER_STATE_SPAWNED)
308-
procCallOnAll('OnPlayerSpawn', playerID)
304+
handlePlayerSpawn(source)
305+
end
306+
)
309307

310-
-- wanna see CJ in a white singlet?
311-
addPedClothes(source, 'vest', 'vest', 0)
308+
function handlePlayerSpawn(player)
309+
local playerID = getElemID(player)
310+
local playerdata = g_Players[playerID]
312311

313-
if not g_UseCJWalk then
314-
local skin = getElementModel(source)
315-
setPedWalkingStyle(source, WalkingStyle[skin] or 0)
316-
end
312+
setElementFrozen(player, false)
313+
toggleAllControls(player, true)
314+
setElementAlpha(player, 255)
315+
setElementCollisionsEnabled(player, true)
317316

318-
if g_Players[playerID].updatetimer then
319-
killTimer(g_Players[playerID].updatetimer)
320-
end
321-
g_Players[playerID].updatetimer = setTimer(procCallOnAll, 100, 0, 'OnPlayerUpdate', playerID)
317+
procCallOnAll('OnPlayerSpawn', playerID)
318+
setPlayerState(player, PLAYER_STATE_ONFOOT)
322319

323-
playerdata.vehicle = nil
324-
playerdata.specialaction = SPECIAL_ACTION_NONE
320+
-- wanna see CJ in a white singlet?
321+
addPedClothes(player, 'vest', 'vest', 0)
322+
323+
if not g_UseCJWalk then
324+
local skin = getElementModel(player)
325+
setPedWalkingStyle(player, WalkingStyle[skin] or 0)
325326
end
326-
)
327+
328+
if g_Players[playerID].updatetimer then
329+
killTimer(g_Players[playerID].updatetimer)
330+
end
331+
g_Players[playerID].updatetimer = setTimer(procCallOnAll, 100, 0, 'OnPlayerUpdate', playerID)
332+
333+
playerdata.vehicle = nil
334+
playerdata.specialaction = SPECIAL_ACTION_NONE
335+
end
327336

328337
addEventHandler('onPlayerChat', root,
329338
function(msg, type)
@@ -474,8 +483,11 @@ addEventHandler('onResourceStart', resourceRoot,
474483
function checkAndUpdatePlayerStates()
475484
for i, data in pairs(g_Players) do
476485
local state = getPlayerState(data.elem)
477-
if (state == PLAYER_STATE_DRIVER or state == PLAYER_STATE_PASSENGER) or
478-
(state == PLAYER_STATE_SPAWNED or state == PLAYER_STATE_NONE) then
486+
if state == PLAYER_STATE_SPAWNED or state == PLAYER_STATE_NONE then
487+
if not data.doingclasssel and not data.viewingintro then
488+
handlePlayerSpawn(data.elem)
489+
end
490+
elseif state == PLAYER_STATE_DRIVER or state == PLAYER_STATE_PASSENGER then
479491
if not isPedInVehicle(data.elem) then
480492
setCameraTarget(data.elem, data.elem)
481493
setPlayerState(data.elem, PLAYER_STATE_ONFOOT)

amx/server/natives/a_players.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1150,8 +1150,8 @@ function TogglePlayerSpectating(amx, player, enable)
11501150
spawnPlayerBySelectedClass(player)
11511151
setPlayerHudComponentVisible(player, 'radar', true)
11521152
end
1153-
setPlayerState(player, PLAYER_STATE_NONE)
11541153
setCameraTarget(player, player)
1154+
setPlayerState(player, PLAYER_STATE_SPAWNED)
11551155
clientCall(player, 'setCameraTarget', player) -- Clear the one on the client as well, otherwise we can't go back to normal camera after spectating vehicles
11561156
-- In SA-MP calling TogglePlayerSpectating also unsets camera interpolation
11571157
clientCall(player, 'removeCamHandlers')

0 commit comments

Comments
 (0)