g_root = getRootElement( );
classGroups = { };
addEvent( "spawn_clientRequestSpawn", true );
addEventHandler( "spawn_clientRequestSpawn", g_root,
function( categoryIndex, classIndex, skinIndex, password )
if skinIndex then
local accName = getAccountName ( getPlayerAccount ( client ) )
if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then
local class = classGroups[ categoryIndex ].classes[ classIndex ];
if class.password then
if not password or password == "" then
triggerClientEvent( client, "spawn_requestPassword", root, class.name );
return;
elseif password ~= class.password then
outputChatBox( "The password you typed in is incorrect! Try again or cancel to choose different class.", client, 200, 50, 50 );
triggerClientEvent( client, "spawn_requestPassword", root, class.name );
return;
end
end
local skin = class.skinMngr.skins[ skinIndex ];
local spawn = true;
local spawned;
if spawn then
if not class.team then
class.team = createTeam( class.name, class.color.red, class.color.green, class.color.blue );
end
local plrTeam = getPlayerTeam( client );
if ( ( plrTeam ) and ( plrTeam ~= class.team ) and ( countPlayersInTeam( plrTeam ) == 1 ) ) then
destroyElement( plrTeam );
end
spawned = spawnPlayer(
client,
skin.spawnLoc.x,
skin.spawnLoc.y,
skin.spawnLoc.z,
skin.spawnLoc.rot,
skin.modelId,
0, 0,
class.team
);
end
if spawned then
setElementData( client, "team", class.name )
setElementData( client, "skin", skin.name )
fadeCamera( client, true );
setCameraTarget( client, client );
setTimer( setCameraTarget, 200, 1, client, client );
triggerClientEvent( client, "spawn_SpawnedSuccessfully", client );
--setPlayerMoney( client, 500 );
for _, weapon in ipairs( class.weaponMngr.weapons ) do
giveWeapon( client, weapon.id, weapon.ammo, false );
end
createBlipAttachedTo( client, 0, 2, class.color.red, class.color.green, class.color.blue )
else
triggerClientEvent( client, "spawn_FailedToSpawn", client );
if countPlayersInTeam( class.team ) == 0 then
destroyElement( class.team );
class.team = nil;
end
end
end
end
end
);
addEvent( "spawn_receivePassword", true );
addEventHandler( "spawn_receivePassword", g_root,
function( )
end
);
addEventHandler( "onPlayerSpawn", g_root,
function ( )
end
);
addEventHandler( "onPlayerWasted", g_root,
function( )
fadeCamera( source, false, 4 );
setTimer( requestMenu, 5000, 1, source );
deleteAllPlayerBlips( source )
end
);
function requestMenu( player )
callClientFunc( player, "showSpawnMenu", true, true );
callClientFunc( player, "classSelected" );
end
addCommandHandler( "kill",
function( plr )
killPed( plr );
end
)
function preloadClassesInfo( )
local groups = getElementsByType( "category" );
for _, group in ipairs( groups ) do
table.insert( classGroups, Group:New( group ) );
end
end
addEventHandler( "onResourceStart", getResourceRootElement(), preloadClassesInfo )
function deleteAllPlayerBlips(player)
local elements = getAttachedElements(player)
if (elements) then
for i, element in ipairs(elements) do
if (getElementType(element) == "blip") then
destroyElement(element)
end
end
end
print( "number of players in team: " .. tostring( countPlayersInTeam( getPlayerTeam( player ) ) ) );
end
addEventHandler( "onPlayerQuit", g_root, function() deleteAllPlayerBlips(source) end );
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
function callClientFunc( player, funcName, ... )
if #{ ... } ~= 0 then
triggerClientEvent( player, "_clientCallFunction", root, funcName, ... )
else
triggerClientEvent( player, "_clientCallFunction", root, funcName )
end
end
addEvent( "_serverCallFunction", true )
addEventHandler( "_serverCallFunction", root,
function( funcName, ... )
_G[ funcName ](...)
end
)