Jump to content

How to change Spawn Selection Style Plz


SOAP10

Recommended Posts

Posted

Both scripts are different, you'll have to learn Lua to understand the script and then edit it.

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted (edited)

Guys i dont Understand The Older Spawn Selection i readed All The lua andi dont Understand It 100% Guys Plz

This is The File Name : s_main.lua

g_root = getRootElement( ); 
classGroups = { }; 
  
  
addEvent( "spawn_clientRequestSpawn", true ); 
addEventHandler( "spawn_clientRequestSpawn", g_root, 
    function( categoryIndex, classIndex, skinIndex, password ) 
        if skinIndex then 
            local class = classGroups[ categoryIndex ].classes[ classIndex ]; 
            if class.password then 
                if not password or password == "soap" 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 not classGroups[ cetegoryIndex ].owner then -- if there is NO owner of the clan/gang spawn player 
                spawn = true; 
            else -- if there IS owner of the clan/gang then check if he's member of the clan/gang 
                 
            end]] 
             
            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 
); 
  
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 
) 

thi is file name!: s_spawnclasses.lua

Group = { }; 
Group.__index = { };[*] 
  
function Group: New( groupElement ) 
    local group = { 
        name = "", 
        classes = { }, 
    }; 
    if getElementType( groupElement ) == "category" then 
        setmetatable( group, self ); 
        self.__index = self; 
         
        group.name = getElementData( groupElement, "id" ); 
         
        local children = getElementChildren( groupElement ); 
        for _, child in ipairs( children ) do 
            table.insert( group.classes, Class:New( child ) ); 
        end 
        return group; 
    end 
    return false; 
end 
  
--[[================================================================================]]-- 
--[[================================================================================]]-- 
  
  
Class = { }; 
Class.__index = Class; 
  
function Class: New( classElement ) 
    local class = {  
        name = "", 
        info = "", 
        color = { red = 255, green = 255, blue = 255 }, 
        skinMngr = SkinManager:New( ), 
        weaponMngr = WeaponManager:New( ), 
        cameraMngr = CameraManager:New( ), 
    } 
    if getElementType( classElement ) == "class" then 
        setmetatable( class, self ); 
        self.__index = self; 
        class.weaponMngr.__index = class.weaponMngr; 
         
        class.name = getElementData( classElement, "name" ); 
         
        local classData = getElementChildren( classElement ); 
        for _, data in ipairs( classData ) do 
         
            if getElementType( data ) == "info" then 
                class.info = getElementData( data, "text" ); 
                 
            elseif getElementType( data ) == "color" then 
                class.color.red =   tonumber( 0 and getElementData( data, "red" ) or 255 ); 
                class.color.green = tonumber( 0 and getElementData( data, "green" ) or 255 ); 
                class.color.blue =  tonumber( 0 and getElementData( data, "blue" ) or 255 ); 
                 
            elseif getElementType( data ) == "skin" then 
                class.skinMngr:AddSkin( data ); 
                 
            elseif getElementType( data ) == "weapon" then 
                class.weaponMngr:AddWeapon( data ); 
                 
            elseif getElementType( data ) == "camera" then 
                local camChildren = getElementChildren( data ); 
                for _, camInfo in ipairs( camChildren ) do 
                    if getElementType( camInfo ) == "position" then 
                        class.cameraMngr:Position( camInfo ); 
                    elseif getElementType( camInfo ) == "lookAt" then 
                        class.cameraMngr:LookAt( camInfo ); 
                    end 
                end 
                 
            end 
        end 
        return class; 
    end 
    return false; 
end 
  
--[[================================================================================]]-- 
--[[================================================================================]]-- 
  
  
CameraManager = { }; 
CameraManager.__index = CameraManager; 
  
function CameraManager: New( ) 
    local cameramngr = { 
        pos = { }, 
        lookAt = { }, 
    }; 
    setmetatable( cameramngr, self ); 
    self.__index = self; 
    return cameramngr; 
end 
  
function CameraManager: Position( cameraPosElement ) 
    if cameraPosElement then 
        self.pos.x = tonumber( getElementData( cameraPosElement, "x" ) ); 
        self.pos.y = tonumber( getElementData( cameraPosElement, "y" ) ); 
        self.pos.z = tonumber( getElementData( cameraPosElement, "z" ) ); 
    else 
        return self.pos.x, self.pos.y, self.pos.z; 
    end 
end 
  
function CameraManager: LookAt( cameraLookAtElement ) 
    if cameraLookAtElement then 
        self.lookAt.x = tonumber( getElementData( cameraLookAtElement, "x" ) ); 
        self.lookAt.y = tonumber( getElementData( cameraLookAtElement, "y" ) ); 
        self.lookAt.z = tonumber( getElementData( cameraLookAtElement, "z" ) ); 
    else 
        return self.lookAt.x, self.lookAt.y, self.lookAt.z; 
    end 
end 
  
--[[================================================================================]]-- 
--[[================================================================================]]-- 
  
  
Skin = { }; 
Skin.__index = Skin; 
  
function Skin: New( skinElement ) 
    local skin = { 
        name = "", 
        modelId = 0, 
        weaponMngr = WeaponManager:New( ), 
        spawnLoc = { x, y, z }, 
    } 
    if getElementType( skinElement ) == "skin" then 
        setmetatable( skin, self ); 
        self.__index = self; 
         
        --setmetatable( skin.weaponMngr, WeaponManager ); 
        skin.weaponMngr.__index = skin.weaponMngr; 
         
        skin.name = getElementData( skinElement, "name" ); 
        skin.modelId = getElementData( skinElement, "id" ); 
         
        local children = getElementChildren( skinElement ); 
        for _, child in ipairs( children ) do 
            if getElementType( child ) == "spawnpoint" then 
                skin.spawnLoc.x = tonumber( getElementData( child, "x" ) ); 
                skin.spawnLoc.y = tonumber( getElementData( child, "y" ) ); 
                skin.spawnLoc.z = tonumber( getElementData( child, "z" ) ); 
                skin.spawnLoc.rot = tonumber( getElementData( child, "rot" ) ); 
            elseif getElementType( child ) == "weapon" then 
                skin.weaponMngr:AddWeapon( child ); 
            end 
        end 
        return skin; 
    end 
    return false; 
end 
  
function Skin: GetSpawnPosition( ) 
    return self.spawnLoc.x, self.spawnLoc.y, self.spawnLoc.z; 
end 
  
--[[================================================================================]]-- 
--[[================================================================================]]-- 
  
  
SkinManager = { }; 
SkinManager.__index = SkinManager; 
  
function SkinManager: New( ) 
    local skinmngr = { 
        skins = { }, 
    }; 
    setmetatable( skinmngr, self ); 
    self.__index = self; 
    return skinmngr; 
end 
  
function SkinManager: AddSkin( skinElement ) 
    table.insert( self.skins, Skin:New( skinElement ) ); 
end 
  
function SkinManager: GetSkins( ) 
    return self.skins; 
end 
  
--[[================================================================================]]-- 
--[[================================================================================]]-- 
  
  
Weapon = { }; 
Weapon.__index = Weapon; 
  
function Weapon: New( weaponElement ) 
    local weapon = { 
        id = 0, 
        ammo = 0, 
    }; 
    if getElementType( weaponElement ) == "weapon" then 
        setmetatable( weapon, self ); 
        self.__index = self; 
        weapon.id = tonumber( getElementData( weaponElement, "id" ) ); 
        weapon.ammo = tonumber( getElementData( weaponElement, "ammo" ) ); 
        return weapon; 
    end 
    return false; 
end 
  
--[[================================================================================]]-- 
--[[================================================================================]]-- 
  
  
WeaponManager = { }; 
WeaponManager.__index = WeaponManager; 
  
function WeaponManager: New( ) 
    local weaponmngr = { 
        weapons = { }, 
    }; 
    setmetatable( weaponmngr, self ); 
    self.__index = self; 
    return weaponmngr; 
end 
  
function WeaponManager: AddWeapon( weaponElement ) 
    table.insert( self.weapons, Weapon:New( weaponElement ) ); 
end 
  
function WeaponManager: GetWeapons( ) 
    local weapons = { }; 
    for i, weapon in ipairs( self.weapons ) do 
        weapons[ i ] = { }; 
        weapons[ i ].id = weapon.id; 
        weapons[ i ].ammo = weapon.ammo; 
    end 
    return weapons; 
end 
  
function WeaponManager: WeaponCount( ) 
    return #self.weapons; 
end 

fILE NAME: c_main.lua

  
g_Me = getLocalPlayer( );
g_root = getRootElement( );
g_ResRoot = getResourceRootElement( );
 
screenSize = { guiGetScreenSize( ) };
 
--local stripHeight = .15 * (screenSize[ 2 ]*2);
 
letterBox = {
    stripHeight = screenSize[ 2 ] * .15,
    stripAlpha = .93, -- 0-1
    animLength = 01, -- seconds
    animStartTick = 0,
    animFinishTick = 0,
    keepAnimating = true,
   
    flyIn = function ( )
        letterBox.animStartTick = 0;
        addEventHandler( "onClientRender", g_root, animateLetterBox_flyIn );
        setTempPedRotating( true );
    end,
   
    flyOut = function ( )
        letterBox.animStartTick = 0;
        setTempPedRotating( false );
        removeEventHandler( "onClientRender", g_root, animateLetterBox_flyIn )
        addEventHandler( "onClientRender", g_root, animateLetterBox_flyOut );
    end,
}
 
local pedRot = 0;
 
 
allHUDElements = {
    "ammo",
    "area_name",
    "armour",
    "breath",
    "clock",
    "health",
    "money",
    "radar",
    "vehicle_name",
    "weapon",
}
 
iconWidths = {
[0] = 21,
[1] = 15,
[2] = 97,
[3] = 55,
[4] = 83,
[5] = 72,
[6] = 55,
[7] = 138,
[8] = 104,
[9] = 59,
[10] =40 ,
[11] =31 ,
[12] =41 ,
[14] =10 ,
[15] =71 ,
[16] =13 ,
[17] =10 ,
[18] =4 ,
[19] =17,
[22] =35 ,
[23] =50 ,
[24] =37 ,
[25] =75 ,
[26] =67 ,
[27] =66 ,
[28] =17 ,
[29] =35 ,
[30] =70 ,
[31] =71 ,
[32] =22 ,
[33] =75 ,
[34] =86 ,
[35] =74 ,
[36] =75 ,
[37] =19 ,
[38] =54 ,
[39] =8,
[42] = 14,
}
 
icons = {
[0] =  ":killmessages/icons/fist.png",
[1] =  ":killmessages/icons/brassknuckle.png",
[2] =  ":killmessages/icons/golfclub.png",
[3] =  ":killmessages/icons/nitestick.png",
[4] =  ":killmessages/icons/knifecur.png",
[5] =  ":killmessages/icons/bat.png",
[6] =  ":killmessages/icons/shovel.png",
[7] = ":killmessages/icons/poolcue.png",
[8] = ":killmessages/icons/katana.png",
[9] =  ":killmessages/icons/chnsaw.png",
[10] =  ":killmessages/icons/gun_dildo1.png",
[11] =  ":killmessages/icons/gun_dildo2.png",
[12] =  ":killmessages/icons/gun_vibe1.png",
[14] =  ":killmessages/icons/flowera.png",
[15] =  ":killmessages/icons/gun_cane.png",
[16] =  ":killmessages/icons/grenade.png",
[17] =  ":killmessages/icons/teargas.png",
[18] =  ":killmessages/icons/molotov.png",
[19] =  ":killmessages/icons/explosion.png",
[22] =  ":killmessages/icons/colt45.png",
[23] =  ":killmessages/icons/Silenced.png",
[24] =  ":killmessages/icons/desert_eagle.png",
[25] =  ":killmessages/icons/chromegun.png",
[26] =  ":killmessages/icons/sawnoff.png",
[27] =  ":killmessages/icons/shotgspa.png",
[28] =  ":killmessages/icons/micro_uzi.png",
[29] =  ":killmessages/icons/mp5lng.png",
[30] =  ":killmessages/icons/ak47.png",
[31] =  ":killmessages/icons/m4.png",
[32] =  ":killmessages/icons/tec9.png",
[33] =  ":killmessages/icons/cuntgun.png",
[34] =  ":killmessages/icons/sniper.png",
[35] =  ":killmessages/icons/rocketla.png",
[36] =  ":killmessages/icons/heatseek.png",
[37] =  ":killmessages/icons/flame.png",
[38] =  ":killmessages/icons/minigun.png",
[39] =  ":killmessages/icons/satchel.png",
[42] =  ":killmessages/icons/fireextinguisher.png",
};
 
 
classGroups = { };
 
classesInfo = { };
classesWeapons = { };
classesSkins = { };
 
 
addEventHandler( "onClientResourceStart", getResourceRootElement(),
    function ( )
        fadeCamera( true );
        setTimer( setCameraMatrix, 50, 1,
            1967.71, 1342.9, 26.63,
            2034.47, 1343.02, 20.01 );
           
        --letterBox.flyIn( );
       
        preloadClassesInfo( );
       
        createClassSelectionWnd( );
        createGroupSelectionWnd( );
        createClassDescriptionWnd( );
        createClassWeaponWnd( );
        createPasswordWnd( );
               
        --setTimer( createTempPed, 100, 1 );
       
        showCursor( true );
        showSpawnMenu( false, true );
        --showHUDComponents( allHUDElements );
    end
);
 
function createTempPed( model )
    -- 7474 - object id
    -- 8661
    local x, y, z = getWorldFromScreenPosition( screenSize[ 1 ] - gridList:Size(false) / 2 - 70, ( screenSize[ 2 ]/2) --[[/ 1.6 ) * .8]], 10 );
    local cX, cY, cZ = getCameraMatrix( );
    x, y, z = getWorldFromScreenPosition( screenSize[ 1 ] - gridList:Size(false) / 2 - 70, ( screenSize[ 2 ]/2 )--[[ / 1.6 ) * .8]], 10 )
    g_ground = createObject( 7474, x, y, z - 1.02, 0, 0, 90 );
    tempPed = createPed( 0 and model or 0, x, y, z );
    setPedRotation( tempPed, pedRot );
    setElementFrozen( tempPed, true );
    setPedAnimation( tempPed, "dancing", "dnce_m_b", -1, true, true, false )
    --setPedAnimation( tempPed, "cop_ambient", "Coplook_nod", -1, true, true, false )
   
    --setPedRotation( tempPed, 90 );
    setElementAlpha( g_ground, 0 );
    setTempPedRotating( true );
end
 
function destroyTempPed( )
    if tempPed then
        destroyElement( g_ground );
        destroyElement( tempPed );
        g_ground = nil;
        tempPed = nil;
    end
end
 
function setTempPedRotating( rotate )
    if ( ( rotate ) and ( not pedRotating ) ) then
        addEventHandler( "onClientRender", g_root, rotatePed );
        pedRotating = true;
    elseif ( not rotate ) then
        removeEventHandler( "onClientRender", g_root, rotatePed );
        pedRotating = nil;
    end
end
 
function rotatePed( )
    if tempPed then
        pedRot = pedRot + 1;
        setPedRotation( tempPed, pedRot );
    end
end
 
function preloadClassesInfo( )
    local groups = getElementsByType( "category" );
    for _, group in ipairs( groups ) do
        table.insert( classGroups, Group:New( group ) );
    end
end
 
function preloadClassesInfo( )
    local groups = getElementsByType( "Town" );
    for _, group in ipairs( category ) do
        table.insert( classGroups, Group:New( group ) );
    end
end
 
 
function hideHUDComponents( components )
    for i, comp in pairs( components ) do
        showPlayerHudComponent( comp, false );
    end
    --showChat( false );
end
 
 
function showHUDComponents( components )
    for i, comp in pairs( components ) do
        showPlayerHudComponent( comp, true );
    end
    --showChat( true );
end
 
 
--addEventHandler( "onClientRender", getRootElement(),
    function animateLetterBox_flyIn ( )
       
        if letterBox.animStartTick == 0 then
            letterBox.animStartTick = getTickCount();
            letterBox.animFinishTick = letterBox.animStartTick + letterBox.animLength * 1000;
            letterBox.keepAnimating = true;
        end
       
        local stripH;
        local currentStripHeight = letterBox.stripHeight;
        if letterBox.keepAnimating then
            local currentTick = getTickCount();
           
           
Edited by Guest

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...