AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [HELP ] GANG not Create (https://forums.alliedmods.net/showthread.php?t=232968)

Snitch 01-07-2014 14:53

[HELP ] GANG not Create
 
fixed

simanovich 01-08-2014 08:00

Re: [HELP ] GANG not Create
 
Post in plugin's thread

Snitch 01-08-2014 17:45

Re: [HELP ] GANG not Create
 
what that?

you can't fix the code for me?

waza123a 01-09-2014 04:40

Re: [HELP ] GANG not Create
 
here you go. Help me too someone: http://forums.alliedmods.net/showthread.php?t=233029

PHP Code:

   /*
    mod by waza123a 09.01.2014
    fixed money get/set
            Jailbreak Gang System
            H3avY Ra1n
    
            Description
            -----------
            This plugin allows prisoners to create gangs and upgrade specific skills that apply to everybody in the gang.
    
    
            Gang Menu
            ---------
            Create a Gang         - Allows a user to create a gang by paying money.
            Invite to Gang         - Only the leader of the gang can invite people to the gang.
            Skills                 - Opens the skills menu, where any member of the gang can pay money to upgrade their skills.
            Top-10                 - Shows a MOTD with the top10 gangs, SORTED BY KILLS. (If you have a good way to sort it, please post it below)
            Leave Gang             - Allows a player to leave the gang. The leader cannot leave the gang until he transfers leadership to somebody else (explained later).
            Gang Leader Menu     - Shows a menu with options to disband the gang, kick a player from the gang, or transfer leadership to somebody else in the gang.
            Online Members         - Shows a list of gang members that are currently in the server.
    
    
            Skills
            ------
            HP - Increased health
            Stealing - Increased money earnings.
            Gravity - Lower Gravity
            Damage - Increased damage
            Stamina - Gives higher speed to players.
            Weapon Drop - Chance of making the guard drop the weapon when you knife them. (%1 chance increase per level)
    
    
            CVARS
            -----
            jb_gang_cost         - The cost to create a gang.
            jb_health_cost         - The cost to upgrade gang health.
            jb_stealing_cost     - The cost to upgrade gang money earning.
            jb_gravity_cost     - The cost to upgrade gang gravity.
            jb_damage_cost         - The cost to upgrade gang damage.
            jb_stamina_cost     - The cost to upgrade gang stamina (speed).
            jb_weapondrop_cost     - The cost to upgrade gang weapon drop percentage.
    
            Additionally there are CVars for the max level for each type of upgrade, so replace _cost above with _max.
            Also there are CVars for the amount per level, so replace _cost above with _per.
            
            jb_points_per_kill    - The amount of points you get for a kill
            jb_headshot_bonus    - The amount of points you get for a headshot
            
            jb_max_members        - The max amount of members a gang can hold
            jb_admin_create        - Whether or not an admin can create gangs without using points
    
            Credits
            -------
            F0RCE     - Original Plugin Idea
            Exolent    - SQLVault Include
            Drekes     - Freezetime Fix (I was too lazy) :)
    
    
            Changelog
            ---------
            September 26, 2011    - v1.0 -     Initial Release
            September 27, 2011    - v1.01 -     Added more cvars, fixed a few bugs.
            September 28, 2011    - v1.1 -     Added gang admins, jb points instead of money, and a few other things I can't remember :)
            January 21, 2011    - v1.1.1 -    Added a cvar for whether an admin can create a gang without using points.
            January 23, 2011    - v1.1.2 -     Fixed freezetime problem
    
    
            http://forums.alliedmods.net/showthread.php?p=1563919
    */

    /* Includes */
        
        #include < amxmodx >
        #include < amxmisc >
        #include < sqlvault_ex >
        #include < cstrike >
        #include < xcolorchat >
        #include < hamsandwich >
        #include < fun >

    /* Defines */
    
        #define ADMIN_CREATE    ADMIN_LEVEL_B

    /* Constants */
    
        
new const g_szVersion[ ] = "1.1.2";

        
enum _:GangInfo
        
{
            
Trie:GangMembers,
            
GangName64 ],
            
GangHP,
            
GangStealing,
            
GangDamage,
            
GangStamina,
            
GangWeaponDrop,
            
GangGetCash,
            
GangKills,
            
NumMembers
        
};
            
        
enum
        
{
            
VALUE_HP,
            
VALUE_STEALING,
            
VALUE_DAMAGE,
            
VALUE_STAMINA,
            
VALUE_WEAPONDROP,
            
VALUE_GETCASH,
            
VALUE_KILLS
        
}

        
enum
        
{
            
STATUS_NONE,
            
STATUS_MEMBER,
            
STATUS_ADMIN,
            
STATUS_LEADER
        
};

        new const 
g_szGangValues[ ][ ] = 
        {
            
"HP",
            
"Stealing",
            
"Damage",
            
"Stamina",
            
"WeaponDrop",
            
"GetCash",
            
"Kills"
        
};

        new const 
g_szPrefix[ ] = "^04[AMXX]^01";

    
/* Tries */
    
        
new Trie:g_tGangNames;
        new 
Trie:g_tGangValues;

    
/* Vault */
    
        
new SQLVault:g_hVault;
    
/* Arrays */
    
        
new Array:g_aGangs;

    
/* Pcvars */
    
        
new g_pCreateCost;

        new 
g_pHealthCost;
        new 
g_pStealingCost;
        new 
g_pDamageCost;
        new 
g_pStaminaCost;
        new 
g_pWeaponDropCost;
        new 
g_pGetCashCost;

        new 
g_pHealthMax;
        new 
g_pStealingMax;
        new 
g_pDamageMax;
        new 
g_pStaminaMax;
        new 
g_pWeaponDropMax;
        new 
g_pGetCashMax;

        new 
g_pHealthPerLevel;
        new 
g_pStealingPerLevel;
        new 
g_pDamagePerLevel;
        new 
g_pStaminaPerLevel;
        new 
g_pWeaponDropPerLevel;
        new 
g_pGetCashPerLevel;

        new 
g_pPointsPerKill;
        new 
g_pHeadshotBonus;

        new 
g_pMaxMembers;
        new 
g_pAdminCreate;
        new 
g_pLeadersKick;

    
/* Integers */
    
        
new g_iGang33 ];
        new 
bActiveGet33 ];
        

    public 
plugin_init()
    {
        
register_plugin"Jailbreak Gang System"g_szVersion"H3avY Ra1n" );
        
        
g_aGangs                 ArrayCreateGangInfo );

        
g_tGangValues             TrieCreate();
        
g_tGangNames             TrieCreate();
        
        
g_hVault                 sqlv_open_local"jb_gangs"false );
        
sqlv_init_exg_hVault );
        
        
g_pCreateCost            register_cvar"jb_gang_cost",         "100000" );
        
g_pHealthCost            register_cvar"jb_health_cost",         "70000" );
        
g_pStealingCost         register_cvar"jb_stealing_cost",     "100000" );
        
g_pDamageCost            register_cvar"jb_damage_cost",         "100000" );
        
g_pStaminaCost            register_cvar"jb_stamina_cost",     "67000" );
        
g_pWeaponDropCost        register_cvar"jb_weapondrop_cost",     "12000" );
        
g_pGetCashCost            register_cvar"jb_getcash_cost",    "120000");

        
g_pHealthMax            register_cvar"jb_health_max",         "10" );
        
g_pStealingMax            register_cvar"jb_stealing_max",     "10" );
        
g_pDamageMax            register_cvar"jb_damage_max",         "10" );
        
g_pStaminaMax            register_cvar"jb_stamina_max",         "10" );
        
g_pWeaponDropMax        register_cvar"jb_weapondrop_max",     "10" );
        
g_pGetCashMax            register_cvar"jb_getcash_max",    "9");

        
g_pHealthPerLevel        register_cvar"jb_health_per",         "7"     );
        
g_pStealingPerLevel        register_cvar"jb_stealing_per",     "50"     );
        
g_pDamagePerLevel        register_cvar"jb_damage_per",         "3"     );
        
g_pStaminaPerLevel        register_cvar"jb_stamina_per",         "3"     );
        
g_pWeaponDropPerLevel     register_cvar"jb_weapondrop_per",     "1"     );
        
g_pGetCashPerLevel            register_cvar"jb_getcash_per",    "50");

        
g_pPointsPerKill        register_cvar"jb_points_per_kill",    "1" );
        
g_pHeadshotBonus        register_cvar"jb_headshot_bonus",    "0" );
        
        
g_pMaxMembers            register_cvar"jb_max_members",        "10" );
        
g_pAdminCreate            register_cvar"jb_admin_create",     "0" );
        
g_pLeadersKick            register_cvar"jb_leaders_kick",     "0" ); // Leaders Can Be Kicked By Admins
        
        
register_cvar"jb_gang_version"g_szVersionFCVAR_SPONLY FCVAR_SERVER );
        
        
register_menu"Gang Menu"1023"GangMenu_Handler" );
        
register_menu"Skills Menu"1023"SkillsMenu_Handler" );
        
        for( new 
0sizeof g_szGangValuesi++ )
        {
            
TrieSetCellg_tGangValuesg_szGangValues], );
        }

        
RegisterHamHam_Spawn"player""Ham_PlayerSpawn_Post");
        
RegisterHamHam_TakeDamage"player""Ham_TakeDamage_Pre");
        
RegisterHamHam_TakeDamage"player""Ham_TakeDamage_Post");
        
RegisterHamHam_Item_PreFrame"player""Ham_PlayerResetSpeedPost"1);
                
        
register_clcmd"say /gang""Cmd_Gang" );
        
register_clcmd"gang_name""Cmd_CreateGang" );
        
register_clcmd"say /getcash""CmdGetCash" );
        
        
register_event"DeathMsg""Event_DeathMsg""a" );
        
        
LoadGangs();
        }


        public 
CmdGetCash(id)
        {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        new 
iTotal get_pcvar_numg_pGetCashPerLevel ) * aDataGangGetCash ]
        if ( 
bActiveGetid ] )
        {
            
ColorChatidNORMAL"^4You need to wait until the^3 Next Round^1 to^4 Get Cash^1!" );
            return 
1;
        }
        
        if( 
g_iGangid ] < -)
        {
            
ColorChatidNORMAL"^4You Need To Be In ^3Gang ^4To Use GetCash!");
            return 
1;
        }
            
        
cs_set_user_moneyidcs_get_user_moneyid ) + ( iTotal 50 ) );
            
        
bActiveGetid ] = true;
        
        
ColorChatidNORMAL"^3You received^4 %i Cash^1,^3 Good Luck^1."iTotal 50 );
        
        return 
1;
    }
    public 
client_disconnectid )
    {
        
g_iGangid ] = -1;
    }

    public 
client_putinserverid )
    {
        
g_iGangid ] = get_user_gangid );
    }

    public 
plugin_end()
    {
        
SaveGangs();
        
sqlv_closeg_hVault );
    }

    public 
Event_DeathMsg()
    {
        new 
iKiller read_data);
        new 
iVictim read_data);
        
        if( !
is_user_aliveiKiller ) || cs_get_user_teamiVictim ) != CS_TEAM_CT || cs_get_user_teamiKiller ) != CS_TEAM_T )
            return 
PLUGIN_CONTINUE;
        
        new 
iTotal get_pcvar_numg_pPointsPerKill ) + ( bool:read_data) ? get_pcvar_numg_pHeadshotBonus ) : );
        
        if( 
g_iGangiKiller ] > -)
        {
            new 
aDataGangInfo ];
            
ArrayGetArrayg_aGangsg_iGangiKiller ], aData );
            
aDataGangKills ]++;
            
ArraySetArrayg_aGangsg_iGangiKiller ], aData );
            
            
iTotal += iTotal * ( aDataGangStealing ] * get_pcvar_numg_pStealingPerLevel ) );
        }
        
        
cs_set_user_moneyiKillercs_get_user_moneyiKiller ) + iTotal );
        
        return 
PLUGIN_CONTINUE;
    }
    public 
Ham_PlayerSpawn_Postid )
    {
        if( !
is_user_aliveid ) || cs_get_user_teamid ) == CS_TEAM_SPECTATOR )
            return 
HAM_IGNORED;
            
        if( 
g_iGangid ] == -)
        {
            return 
HAM_IGNORED;
        }
        
set_task(1.0"GiveHP"id)
        
        
bActiveGetid ] = false;
        return 
HAM_IGNORED;
    }
    public 
GiveHP(id)
    {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        new 
iHealth get_user_healthid ) + aDataGangHP ] * get_pcvar_numg_pHealthPerLevel );
        
set_user_healthidiHealth );
    }
    public 
Ham_TakeDamage_PreiVictimiInflictoriAttackerFloat:flDamageiBits )
    {
        if( !
is_user_aliveiAttacker ) || cs_get_user_teamiAttacker ) == CS_TEAM_SPECTATOR )
            return 
HAM_IGNORED;
            
        if( 
g_iGangiAttacker ] == -)
            return 
HAM_IGNORED;
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangiAttacker ], aData );
        
        
SetHamParamFloat4flDamage + ( get_pcvar_numg_pDamagePerLevel ) * ( aDataGangDamage ] ) ) );
        
        return 
HAM_IGNORED;
    }

    public 
Ham_TakeDamage_PostiVictimiInflictoriAttackerFloat:flDamageiBits )
    {
        if( !
is_user_aliveiAttacker ) || g_iGangiAttacker ] == -|| get_user_weaponiAttacker ) != CSW_KNIFE || cs_get_user_teamiAttacker ) != CS_TEAM_T  )
        {
            return 
HAM_IGNORED;
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangiAttacker ], aData );
        
        new 
iChance aDataGangWeaponDrop ] * get_pcvar_numg_pWeaponDropPerLevel );
        
        if( 
iChance == )
            return 
HAM_IGNORED;
        
        new 
bool:bDrop = ( random_num1100 ) <= iChance );
        
        if( 
bDrop )
            
client_cmdiVictim"drop" );
        
        return 
HAM_IGNORED;
    }

    public 
Ham_PlayerResetSpeedPostid )
    {
        if( 
g_iGangid ] == -|| !is_user_aliveid ) || cs_get_user_teamid ) == CS_TEAM_SPECTATOR )
        {
            return 
HAM_IGNORED;
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        if( 
aDataGangStamina ] > && get_user_maxspeedid ) > 1.0 )
            
set_user_maxspeedid250.0 + ( aDataGangStamina ] * get_pcvar_numg_pStaminaPerLevel ) ) );
            
        return 
HAM_IGNORED;
    }

    public 
Cmd_Gangid )
    {    
        if( !
is_user_connectedid ) )
            return 
PLUGIN_HANDLED;
        
        static 
szMenu512 ], iLenaDataGangInfo ], iKeysiStatus;
        
        
iKeys MENU_KEY_0 MENU_KEY_4;
        
        
iStatus getStatusidg_iGangid ] );
        
        if( 
g_iGangid ] > -)
        {
            
ArrayGetArrayg_aGangsg_iGangid ], aData );
            
iLen     =     formatexszMenucharsmaxszMenu ),  "\yGang Menu^n\wCurrent Gang:\y %s^n"aDataGangName ] );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\yCash: \w%i^n^n"cs_get_user_moneyid ) );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r1. \dCreate a Gang [%i Cash]^n"get_pcvar_numg_pCreateCost ) );
        }
        
        else
        {
            
iLen     =     formatexszMenucharsmaxszMenu ),  "\yGang Menu^n\wCurrent Gang:\r None^n" );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\yCash: \w%i^n^n"cs_get_user_moneyid ) );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r1. \wCreate a Gang [%i Cash]^n"get_pcvar_numg_pCreateCost ) );
            
            
iKeys |= MENU_KEY_1;
        }
        
        
        if( 
iStatus STATUS_MEMBER && g_iGangid ] > -&& get_pcvar_numg_pMaxMembers ) > aDataNumMembers ] )
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r2. \wInvite Player to Gang^n" );
            
iKeys |= MENU_KEY_2;
        }
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r2. \dInvite Player to Gang^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r3. \wSkills^n" );
            
iKeys |= MENU_KEY_3;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r3. \dSkills^n" );
            
        
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r4. \wTop-10^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r5. \wLeave Gang^n" );
            
iKeys |= MENU_KEY_5;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r5. \dLeave Gang^n" );
        
        
        if( 
iStatus STATUS_MEMBER )
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r6. \wGang Admin Menu^n" );
            
iKeys |= MENU_KEY_6;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r6. \dGang Admin Menu^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r7. \wOnline Members^n" );
            
iKeys |= MENU_KEY_7;
        }
            
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r7. \dOnline Members^n" );
        
        
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"^n\r0. \wExit" );
        
        
show_menuidiKeysszMenu, -1"Gang Menu" );
        
        return 
PLUGIN_CONTINUE;
    }

    public 
GangMenu_HandleridiKey )
    {
        switch( ( 
iKey ) % 10 )
        {
            case 
0: return PLUGIN_HANDLED;
            
            case 
1
            {
                if( 
get_pcvar_numg_pAdminCreate ) && get_user_flagsid ) & ADMIN_CREATE )
                {
                    
client_cmdid"messagemode gang_name" );
                }
                
                else if( 
cs_get_user_moneyid ) < get_pcvar_numg_pCreateCost ) )
                {
                    
ColorChatidNORMAL"%s You do not have enough points to create a gang!"g_szPrefix );
                    return 
PLUGIN_HANDLED;
                }
                
                else
                    
client_cmdid"messagemode gang_name" );
            }
            
            case 
2:
            {
                
ShowInviteMenuid );
            }
            
            case 
3:
            {
                
ShowSkillsMenuid );
            }
            
            case 
4:
            {
                
Cmd_Top10id );
            }
            
            case 
5:
            {
                
ShowLeaveConfirmMenuid );
            }
            
            case 
6:
            {
                
ShowLeaderMenuid );
            }
            
            case 
7:
            {
                
ShowMembersMenuid );
            }
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
Cmd_CreateGangid )
    {
        new 
bool:bAdmin false;
        
        if( 
get_pcvar_numg_pAdminCreate ) && get_user_flagsid ) & ADMIN_CREATE )
        {
            
bAdmin true;
        }
        
        else if( 
cs_get_user_moneyid ) < get_pcvar_numg_pCreateCost ) )
        {
            
ColorChatidNORMAL"%s You do not have enough points to create a gang."g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        else if( 
g_iGangid ] > -)
        {
            
ColorChatidNORMAL"%s You cannot create a gang if you are already in one!"g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        else if( 
cs_get_user_teamid ) != CS_TEAM_T )
        {
            
ColorChatidNORMAL"%s Only ^03prisoners ^01can create gangs!"g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        new 
szArgs60 ];
        
read_argsszArgscharsmaxszArgs ) );
        
        
remove_quotesszArgs );
        
        if( 
TrieKeyExistsg_tGangNamesszArgs ) )
        {
            
ColorChatidNORMAL"%s That gang with that name already exists."g_szPrefix );
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
aDataGangInfo ];
        
        
aDataGangName ]         = szArgs;
        
aDataGangHP ]         = 0;
        
aDataGangStealing ]     = 0;
        
aDataGangStamina ]     = 0;
        
aDataGangWeaponDrop ] = 0;
        
aDataGangDamage ]     = 0;
        
aDataNumMembers ]     = 0;
        
aDataGangGetCash ]    = 0;
        
aDataGangMembers ]     = _:TrieCreate();
        
        
ArrayPushArrayg_aGangsaData );
        
        if( !
bAdmin )
            
cs_set_user_moneyidcs_get_user_moneyid ) - get_pcvar_num(g_pCreateCost));
        
        
set_user_gangidArraySizeg_aGangs ) - 1STATUS_LEADER );
        
        
ColorChatidNORMAL"%s You have successfully created gang '^03%s^01'."g_szPrefixszArgs );
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowInviteMenuid )
    {    
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
szInfo], hMenu;
        
hMenu menu_create"Choose a Player to Invite:""InviteMenu_Handler" );
        new 
szName32 ];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            
            if( 
iPlayer == id || g_iGangiPlayer ] == g_iGangid ] || cs_get_user_teamiPlayer ) == CS_TEAM_SPECTATOR )
                continue;
            
            if( 
g_iGangiPlayer ] > -)
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszInfocharsmaxszInfo ) );
            
            
menu_additemhMenuszNameszInfo );
        }
            
        
menu_displayidhMenu);
    }

    public 
InviteMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
szData], iAccesshCallbackszName32 ];
        
menu_item_getinfohMenuiItemiAccessszData5szName31hCallback );
        
        new 
iPlayer str_to_numszData );

        if( !
is_user_connectediPlayer ) )
            return 
PLUGIN_HANDLED;
            
        
ShowInviteConfirmMenuidiPlayer );

        
ColorChatidNORMAL"%s You have successfully invited %s to join your gang."g_szPrefixszName );
        
        
Cmd_Gangid );
        return 
PLUGIN_HANDLED;
    }

    public 
ShowInviteConfirmMenuidiPlayer )
    {
        new 
szName32 ];
        
get_user_nameidszNamecharsmaxszName ) );
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        new 
szMenuTitle128 ];
        
formatexszMenuTitlecharsmaxszMenuTitle ), "%s Invited You to Join    %s"szNameaDataGangName ] );
        new 
hMenu menu_createszMenuTitle"InviteConfirmMenu_Handler" );
        
        new 
szInfo];
        
num_to_strg_iGangid ], szInfo);
        
        
menu_additemhMenu"Accept Invitation"szInfo );
        
menu_additemhMenu"Decline Invitation""-1" );
        
        
menu_displayiPlayerhMenu);    
    }

    public 
InviteConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        new 
iGang str_to_numszData );
        
        if( 
iGang == -)
            return 
PLUGIN_HANDLED;
        
        if( 
getStatusidg_iGangid ] ) == STATUS_LEADER )
        {
            
ColorChatidNORMAL"%s You cannot leave your gang while you are the leader."g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangidiGang );
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        
ColorChatidNORMAL"%s You have successfully joined the gang ^03%s^01."g_szPrefixaDataGangName ] );
        
        return 
PLUGIN_HANDLED;
    }
        

    public 
ShowSkillsMenuid )
    {    
        static 
szMenu512 ], iLeniKeysaDataGangInfo ];
        
        if( !
iKeys )
        {
            
iKeys MENU_KEY_1 MENU_KEY_2 MENU_KEY_3 MENU_KEY_4 MENU_KEY_5 MENU_KEY_6 MENU_KEY_7 |MENU_KEY_0;
        }
        
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        
iLen    =    formatexszMenucharsmaxszMenu ), "\ySkills Menu^n^n" );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r1. \wHealth Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pHealthCost ), aDataGangHP ], get_pcvar_numg_pHealthMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r2. \wStealing Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pStealingCost ), aDataGangStealing ], get_pcvar_numg_pStealingMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r3. \wDamage Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pDamageCost ), aDataGangDamage ], get_pcvar_numg_pDamageMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r4. \wWeapon Drop Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pWeaponDropCost ), aDataGangWeaponDrop ], get_pcvar_numg_pWeaponDropMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r5. \wSpeed Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pStaminaCost ), aDataGangStamina ], get_pcvar_numg_pStaminaMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r6. \wGetCash Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pGetCashCost ), aDataGangGetCash ], get_pcvar_numg_pGetCashMax ) );
        
        
iLen    +=    formatexszMenuiLen ], 511 iLen"^n\r0. \wExit" );
        
        
show_menuidiKeysszMenu, -1"Skills Menu" );
    }

    public 
SkillsMenu_HandleridiKey )
    {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        switch( ( 
iKey ) % 10 )
        {
            case 
0
            {
                
Cmd_Gangid );
                return 
PLUGIN_HANDLED;
            }
            
            case 
1:
            {
                if( 
aDataGangHP ] == get_pcvar_numg_pHealthMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangHP ] > get_pcvar_numg_pHealthMax ) )
                {
                    
aDataGangHP ] = get_pcvar_numg_pHealthMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pHealthCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangHP ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            
            case 
2:
            {
                if( 
aDataGangStealing ] == get_pcvar_numg_pStealingMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangStealing ] > get_pcvar_numg_pStealingMax ) )
                {
                    
aDataGangStealing ] = get_pcvar_numg_pStealingMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pStealingCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangStealing ]++;
                
                
cs_set_user_moneyidiRemaining);
            }
            
            case 
3:
            {
                if( 
aDataGangDamage ] == get_pcvar_numg_pDamageMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangDamage ] > get_pcvar_numg_pDamageMax ) )
                {
                    
aDataGangDamage ] = get_pcvar_numg_pDamageMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pDamageCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangDamage ]++;
                
                
cs_set_user_moneyidiRemaining);
            }
            
            case 
4:
            {
                if( 
aDataGangWeaponDrop ] == get_pcvar_numg_pWeaponDropMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangWeaponDrop ] > get_pcvar_numg_pWeaponDropMax ) )
                {
                    
aDataGangWeaponDrop ] = get_pcvar_numg_pWeaponDropMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pWeaponDropCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangWeaponDrop ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            
            case 
5:
            {
                if( 
aDataGangStamina ] == get_pcvar_numg_pStaminaMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangStamina ] > get_pcvar_numg_pStaminaMax ) )
                {
                    
aDataGangStamina ] = get_pcvar_numg_pStaminaMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pStaminaCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangStamina ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            case 
6:
            {
                if( 
aDataGangGetCash ] == get_pcvar_numg_pGetCashMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangGetCash ] > get_pcvar_numg_pGetCashMax ) )
                {
                    
aDataGangGetCash ] = get_pcvar_numg_pGetCashMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pGetCashCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangGetCash ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
        }
        
        
ArraySetArrayg_aGangsg_iGangid ], aData );
        
        new 
iPlayers32 ], iNumiPlayer;
        new 
szName32 ];
        
get_playersiPlayersiNum );
        
        for( new 
0iNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
iPlayer == id || g_iGangiPlayer ] != g_iGangid ] )
                continue;
                
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has just upgraded one of your gang's skills."g_szPrefixszName );
        }
        
        
ColorChatidNORMAL"%s You have successfully upgraded your gang."g_szPrefix );
        
        
ShowSkillsMenuid );
        
        return 
PLUGIN_HANDLED;
    }
            
        
    public 
Cmd_Top10id )
    {
        new 
iSize ArraySizeg_aGangs );
        
        new 
iOrder100 ][ ];
        
        new 
aDataGangInfo ];
        
        for( new 
0iSizei++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            
iOrder][ ] = i;
            
iOrder][ ] = aDataGangKills ];
        }
        
        
SortCustom2DiOrderiSize"Top10_Sort" );
        
        new 
szMessage2048 ];
        
formatexszMessagecharsmaxszMessage ), "<body bgcolor=#000000><font color=#FFB000><pre>" );
        
formatszMessagecharsmaxszMessage ), "%s%2s %-22.22s %7s %4s %10s %9s %9s %11s %8s^n"szMessage"#""Name""Kills""HP""Stealing"
            
"GetCash""Stamina""WeaponDrop""Damage" );
            
        for( new 
0min10iSize ); i++ )
        {
            
ArrayGetArrayg_aGangsiOrder][ ], aData );
            
            
formatszMessagecharsmaxszMessage ), "%s%-2d %22.22s %7d %4d %10d %9d %9d %11d %8d^n"szMessage1aDataGangName ], 
            
aDataGangKills ], aDataGangHP ], aDataGangStealing ], aDataGangGetCash ], aDataGangStamina], aDataGangWeaponDrop ], aDataGangDamage ] );
        }
        
        
show_motdidszMessage"Gang Top 10" );
    }

    public 
Top10_Sort( const iElement1[ ], const iElement2[ ], const iArray[ ], szData[], iSize 
    {
        if( 
iElement1] > iElement2] )
            return -
1;
        
        else if( 
iElement1] < iElement2] )
            return 
1;
        
        return 
0;
    }

    public 
ShowLeaveConfirmMenuid )
    {
        new 
hMenu menu_create"Are you sure you want to leave?""LeaveConfirmMenu_Handler" );
        
menu_additemhMenu"Yes, Leave Now""0" );
        
menu_additemhMenu"No, Don't Leave""1" );
        
        
menu_displayidhMenu);
    }

    public 
LeaveConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0
            {
                if( 
getStatusidg_iGangid ] ) == STATUS_LEADER )
                {
                    
ColorChatidNORMAL"%s You must transfer leadership before leaving this gang."g_szPrefix );
                    
Cmd_Gangid );
                    
                    return 
PLUGIN_HANDLED;
                }
                
                
ColorChatidNORMAL"%s You have successfully left your gang."g_szPrefix );
                
set_user_gangid, -);
                
Cmd_Gangid );
            }
            
            case 
1Cmd_Gangid );
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowLeaderMenuid )
    {
        new 
hMenu menu_create"Gang Leader Menu""LeaderMenu_Handler" );
        
        new 
iStatus getStatusidg_iGangid ] );
        
        if( 
iStatus == STATUS_LEADER )
        {
            
menu_additemhMenu"Disband Gang""0" );
            
menu_additemhMenu"Transfer Leadership""1" );
            
menu_additemhMenu"Add An Admin""4" );
            
menu_additemhMenu"Remove An Admin""5" );
        }
        
        
menu_additemhMenu"Kick From Gang""2" );
        
menu_additemhMenu"Change Gang Name""3" );
        
        
        
menu_displayidhMenu);
    }

    public 
LeaderMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData];
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0:
            {
                
ShowDisbandConfirmMenuid );
            }
            
            case 
1:
            {
                
ShowTransferMenuid );
            }
            
            case 
2:
            {
                
ShowKickMenuid );
            }
            
            case 
3:
            {
                
client_cmdid"messagemode New_Name" );
            }
            
            case 
4:
            {
                
ShowAddAdminMenuid );
            }
            
            case 
5:
            {
                
ShowRemoveAdminMenuid );
            }
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowDisbandConfirmMenuid )
    {
        new 
hMenu menu_create"Are you sure you want to disband the gang?""DisbandConfirmMenu_Handler" );
        
menu_additemhMenu"Yes, Disband Now""0" );
        
menu_additemhMenu"No, Don't Disband""1" );
        
        
menu_displayidhMenu);
    }

    public 
DisbandConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0
            {
                
                
ColorChatidNORMAL"%s You have successfully disbanded your gang."g_szPrefix );
                
                new 
iPlayers32 ], iNum;
                
                
get_playersiPlayersiNum );
                
                new 
iPlayer;
                
                for( new 
0iNumi++ )
                {
                    
iPlayer iPlayers];
                    
                    if( 
iPlayer == id )
                        continue;
                    
                    if( 
g_iGangid ] != g_iGangiPlayer ] )
                        continue;

                    
ColorChatiPlayerNORMAL"%s Your gang has been disband by its leader."g_szPrefix );
                    
set_user_gangiPlayer, -);
                }
                
                new 
iGang g_iGangid ];
                
                
set_user_gangid, -);
                
                
ArrayDeleteItemg_aGangsiGang );

                
Cmd_Gangid );
            }
            
            case 
1Cmd_Gangid );
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowTransferMenuid )
    {
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum"e""TERRORIST" );
        
        new 
hMenu menu_create"Transfer Leadership to:""TransferMenu_Handler" );
        new 
szName32 ], szData];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || id == iPlayer )
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
TransferMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszData5szNamecharsmaxszName ), hCallback );
        
        new 
iPlayer str_to_numszData );
        
        if( !
is_user_connectediPlayer ) )
        {
            
ColorChatidNORMAL"%s That player is no longer connected."g_szPrefix );
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiPlayerg_iGangid ], STATUS_LEADER );
        
set_user_gangidg_iGangid ], STATUS_ADMIN );
        
        
Cmd_Gangid );
        
        new 
iPlayers32 ], iNumiTemp;
        
get_playersiPlayersiNum );

        for( new 
0iNumi++ )
        {
            
iTemp iPlayers];
            
            if( 
iTemp == iPlayer )
            {
                
ColorChatiTempNORMAL"%s You are the new leader of your gang."g_szPrefix );
                continue;
            }
            
            else if( 
g_iGangiTemp ] != g_iGangid ] )
                continue;
            
            
ColorChatiTempNORMAL"%s ^03%s^01 is the new leader of your gang."g_szPrefixszName );
        }
        
        return 
PLUGIN_HANDLED;
    }


    public 
ShowKickMenuid )
    {
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
hMenu menu_create"Kick Player From Gang:""KickMenu_Handler" );
        new 
szName32 ], szData];
        
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || id == iPlayer )
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
KickMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ], KickerName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszData5szNamecharsmaxszName ), hCallback );
        
        new 
iPlayer str_to_numszData );
        
        
get_user_name(idKickerName31)
        
        if( !
is_user_connectediPlayer ) )
        {
            
ColorChatidNORMAL"%s That player is no longer connected."g_szPrefix );
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        else if(
getStatusiPlayerg_iGangiPlayer ] ) == STATUS_LEADER && !get_pcvar_numg_pLeadersKick )) 
        {
            
ColorChatidNORMAL"%s That player Is The Leader!."g_szPrefix );
            
ColorChatiPlayerNORMAL"%s %s Tried To Kick You From Your Own Gang! Get Revenge"g_szPrefixKickerName);
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiPlayer, -);
        
        
Cmd_Gangid );
        
        new 
iPlayers32 ], iNumiTemp;
        
get_playersiPlayersiNum );
        
        for( new 
0iNumi++ )
        {
            
iTemp iPlayers];
            
            if( 
iTemp == iPlayer || g_iGangiTemp ] != g_iGangid ] )
                continue;
            
            
ColorChatiTempNORMAL"%s ^03%s^01 has been kicked from the gang."g_szPrefixszName );
        }
        
        
ColorChatiPlayerNORMAL"%s You have been kicked from your gang."g_szPrefix );
        
        return 
PLUGIN_HANDLED;
    }

    public 
ChangeName_Handlerid )
    {
        if( 
g_iGangid ] == -|| getStatusidg_iGangid ] ) == STATUS_MEMBER )
        {
            return;
        }
        
        new 
iGang g_iGangid ];
        
        new 
szArgs64 ];
        
read_argsszArgscharsmaxszArgs ) );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
bool:bInGang33 ];
        new 
iStatus33 ];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] )
                continue;
        
            
bInGangiPlayer ] = true;
            
iStatusiPlayer ] = getStatusidiGang );
            
            
set_user_gangiPlayer, -);
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        
aDataGangName ] = szArgs;
        
        
ArraySetArrayg_aGangsiGangaData );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( !
bInGangiPlayer ] )
                continue;
            
            
set_user_gangiPlayeriGangiStatusid ] );
        }
    }
        
    public 
ShowAddAdminMenuid )
    {
        new 
iPlayers32 ], iNum;
        new 
szName32 ], szData];
        new 
hMenu menu_create"Choose a Player to Promote:""AddAdminMenu_Handler" );
        
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] || getStatusiPlayerg_iGangiPlayer ] ) > STATUS_MEMBER )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
AddAdminMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszDatacharsmaxszData ), szNamecharsmaxszName ), hCallback );
        
        new 
iChosen str_to_numszData );
        
        if( !
is_user_connectediChosen ) )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiChoseng_iGangid ], STATUS_LEADER );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || iPlayer == iChosen )
                continue;
            
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has been promoted to an admin of your gang."g_szPrefixszName );
        }
        
        
ColorChatiChosenNORMAL"%s ^01You have been promoted to an admin of your gang."g_szPrefix );
        
        
menu_destroyhMenu );
        return 
PLUGIN_HANDLED;
    }

    public 
ShowRemoveAdminMenuid )
    {
        new 
iPlayers32 ], iNum;
        new 
szName32 ], szData];
        new 
hMenu menu_create"Choose a Player to Demote:""RemoveAdminMenu_Handler" );
        
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] || getStatusiPlayerg_iGangiPlayer ] ) != STATUS_ADMIN )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
RemoveAdminMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszDatacharsmaxszData ), szNamecharsmaxszName ), hCallback );
        
        new 
iChosen str_to_numszData );
        
        if( !
is_user_connectediChosen ) )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiChoseng_iGangid ], STATUS_MEMBER );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || iPlayer == iChosen )
                continue;
            
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has been demoted from being an admin of your gang."g_szPrefixszName );
        }
        
        
ColorChatiChosenNORMAL"%s ^01You have been demoted from being an admin of your gang."g_szPrefix );
        
        
menu_destroyhMenu );
        return 
PLUGIN_HANDLED;
    }
        
    public 
ShowMembersMenuid )
    {
        new 
szName64 ], iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
hMenu menu_create"Online Members:""MemberMenu_Handler" );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            switch( 
getStatusiPlayerg_iGangid ] ) )
            {
                case 
STATUS_MEMBER:
                {
                    
addszNamecharsmaxszName ), " \r[Member]" );
                }
                
                case 
STATUS_ADMIN:
                {
                    
addszNamecharsmaxszName ), " \r[Admin]" );
                }
                
                case 
STATUS_LEADER:
                {
                    
addszNamecharsmaxszName ), " \r[Leader]" );
                }
            }

            
menu_additemhMenuszName );
        }
        
        
menu_displayidhMenu);
    }

    public 
MemberMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        
menu_destroyhMenu );
        
        
ShowMembersMenuid )
        return 
PLUGIN_HANDLED;
    }

    
// Credits to Tirant from zombie mod and xOR from xRedirect
    
public LoadGangs()
    {
        new 
szConfigsDir60 ];
        
get_configsdirszConfigsDircharsmaxszConfigsDir ) );
        
addszConfigsDircharsmaxszConfigsDir ), "/jb_gangs.ini" );
        
        new 
iFile fopenszConfigsDir"rt" );
        
        new 
aDataGangInfo ];
        
        new 
szBuffer512 ], szData], szValue], iiCurGang;
        
        while( !
feofiFile ) )
        {
            
fgetsiFileszBuffercharsmaxszBuffer ) );
            
            
trimszBuffer );
            
remove_quotesszBuffer );
            
            if( !
szBuffer] || szBuffer] == ';' 
            {
                continue;
            }
            
            if( 
szBuffer] == '[' && szBufferstrlenszBuffer ) - ] == ']' )
            {
                
copyaDataGangName ], strlenszBuffer ) - 2szBuffer] );
                
aDataGangHP ] = 0;
                
aDataGangStealing ] = 0;
                
aDataGangStamina ] = 0;
                
aDataGangWeaponDrop ] = 0;
                
aDataGangDamage ] = 0;
                
aDataGangGetCash ] = 0;
                
aDataGangKills ] = 0;
                
aDataNumMembers ] = 0;
                
                
aDataGangMembers ] = _:TrieCreate();
                
                if( 
TrieKeyExistsg_tGangNamesaDataGangName ] ) )
                {
                    new 
szError256 ];
                    
formatexszErrorcharsmaxszError ), "[JB Gangs] Gang already exists: %s"aDataGangName ] );
                    
set_fail_stateszError );
                }
                
                
ArrayPushArrayg_aGangsaData );
                
                
TrieSetCellg_tGangNamesaDataGangName ], iCurGang );

                
log_amx"Gang Created: %s"aDataGangName ] );
                
                
iCurGang++;
                
                continue;
            }
            
            
strtokszBufferszData31szValue511'=' );
            
trimszData );
            
trimszValue );
            
            if( 
TrieGetCellg_tGangValuesszData) )
            {
                
ArrayGetArrayg_aGangsiCurGang 1aData );
                
                switch( 
)
                {                    
                    case 
VALUE_HP:
                        
aDataGangHP ] = str_to_numszValue );
                    
                    case 
VALUE_STEALING:
                        
aDataGangStealing ] = str_to_numszValue );
                    
                    case 
VALUE_STAMINA:
                        
aDataGangStamina ] = str_to_numszValue );
                    
                    case 
VALUE_WEAPONDROP:
                        
aDataGangWeaponDrop ] = str_to_numszValue );
                        
                    case 
VALUE_DAMAGE:
                        
aDataGangDamage ] = str_to_numszValue );
                        
                    case 
VALUE_GETCASH:
                        
aDataGangGetCash ] = str_to_numszValue );
                    
                    case 
VALUE_KILLS:
                        
aDataGangKills ] = str_to_numszValue );
                }
                
                
ArraySetArrayg_aGangsiCurGang 1aData );
            }
        }
        
        new Array:
aSQL;
        
sqlv_read_all_exg_hVaultaSQL );
        
        new 
aVaultDataSQLVaultEntryEx ];
        
        new 
iGang;
        
        for( 
0ArraySizeaSQL ); i++ )
        {
            
ArrayGetArrayaSQLiaVaultData );
            
            if( 
TrieGetCellg_tGangNamesaVaultDataSQLVEx_Key2 ], iGang ) )
            {
                
ArrayGetArrayg_aGangsiGangaData );
                
                
TrieSetCellaDataGangMembers ], aVaultDataSQLVEx_Key1 ], str_to_numaVaultDataSQLVEx_Data ] ) );
                
                
aDataNumMembers ]++;
                
                
ArraySetArrayg_aGangsiGangaData );
            }
        }
        
        
fcloseiFile );
    }

    public 
SaveGangs()
    {
        new 
szConfigsDir64 ];
        
get_configsdirszConfigsDircharsmaxszConfigsDir ) );
        
        
addszConfigsDircharsmaxszConfigsDir ), "/jb_gangs.ini" );
        
        if( 
file_existsszConfigsDir ) )
            
delete_fileszConfigsDir );
            
        new 
iFile fopenszConfigsDir"wt" );
            
        new 
aDataGangInfo ];
        
        new 
szBuffer256 ];

        for( new 
0ArraySizeg_aGangs ); i++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            
formatexszBuffercharsmaxszBuffer ), "[%s]^n"aDataGangName ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "HP=%i^n"aDataGangHP ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Stealing=%i^n"aDataGangStealing ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Stamina=%i^n"aDataGangStamina ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "WeaponDrop=%i^n"aDataGangWeaponDrop ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Damage=%i^n"aDataGangDamage ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "GetCash=%i^n"aDataGangGetCash ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Kills=%i^n^n"aDataGangKills ] );
            
fputsiFileszBuffer );
        }
        
        
fcloseiFile );
    }
        
        

    
set_user_gangidiGangiStatus=STATUS_MEMBER )
    {
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );

        new 
aDataGangInfo ];
        
        if( 
g_iGangid ] > -)
        {
            
ArrayGetArrayg_aGangsg_iGangid ], aData );
            
TrieDeleteKeyaDataGangMembers ], szAuthID );
            
aDataNumMembers ]--;
            
ArraySetArrayg_aGangsg_iGangid ], aData );
            
            
sqlv_remove_exg_hVaultszAuthIDaDataGangName ] );
        }

        if( 
iGang > -)
        {
            
ArrayGetArrayg_aGangsiGangaData );
            
TrieSetCellaDataGangMembers ], szAuthIDiStatus );
            
aDataNumMembers ]++;
            
ArraySetArrayg_aGangsiGangaData );
            
            
sqlv_set_num_exg_hVaultszAuthIDaDataGangName ], iStatus );        
        }

        
g_iGangid ] = iGang;
        
        return 
1;
    }
        
    
get_user_gangid )
    {
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );
        
        new 
aDataGangInfo ];
        
        for( new 
0ArraySizeg_aGangs ); i++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            if( 
TrieKeyExistsaDataGangMembers ], szAuthID ) )
                return 
i;
        }
        
        return -
1;
    }
                
    
getStatusidiGang )
    {
        if( !
is_user_connectedid ) || iGang == -)
            return 
STATUS_NONE;
            
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );
        
        new 
iStatus;
        
TrieGetCellaDataGangMembers ], szAuthIDiStatus );
        
        return 
iStatus;
    } 


Snitch 01-09-2014 07:10

Re: [HELP ] GANG not Create
 
Quote:

Originally Posted by waza123a (Post 2083352)
here you go. Help me too someone: http://forums.alliedmods.net/showthread.php?t=233029

PHP Code:

   /*
    mod by waza123a 09.01.2014
    fixed money get/set
            Jailbreak Gang System
            H3avY Ra1n
    
            Description
            -----------
            This plugin allows prisoners to create gangs and upgrade specific skills that apply to everybody in the gang.
    
    
            Gang Menu
            ---------
            Create a Gang         - Allows a user to create a gang by paying money.
            Invite to Gang         - Only the leader of the gang can invite people to the gang.
            Skills                 - Opens the skills menu, where any member of the gang can pay money to upgrade their skills.
            Top-10                 - Shows a MOTD with the top10 gangs, SORTED BY KILLS. (If you have a good way to sort it, please post it below)
            Leave Gang             - Allows a player to leave the gang. The leader cannot leave the gang until he transfers leadership to somebody else (explained later).
            Gang Leader Menu     - Shows a menu with options to disband the gang, kick a player from the gang, or transfer leadership to somebody else in the gang.
            Online Members         - Shows a list of gang members that are currently in the server.
    
    
            Skills
            ------
            HP - Increased health
            Stealing - Increased money earnings.
            Gravity - Lower Gravity
            Damage - Increased damage
            Stamina - Gives higher speed to players.
            Weapon Drop - Chance of making the guard drop the weapon when you knife them. (%1 chance increase per level)
    
    
            CVARS
            -----
            jb_gang_cost         - The cost to create a gang.
            jb_health_cost         - The cost to upgrade gang health.
            jb_stealing_cost     - The cost to upgrade gang money earning.
            jb_gravity_cost     - The cost to upgrade gang gravity.
            jb_damage_cost         - The cost to upgrade gang damage.
            jb_stamina_cost     - The cost to upgrade gang stamina (speed).
            jb_weapondrop_cost     - The cost to upgrade gang weapon drop percentage.
    
            Additionally there are CVars for the max level for each type of upgrade, so replace _cost above with _max.
            Also there are CVars for the amount per level, so replace _cost above with _per.
            
            jb_points_per_kill    - The amount of points you get for a kill
            jb_headshot_bonus    - The amount of points you get for a headshot
            
            jb_max_members        - The max amount of members a gang can hold
            jb_admin_create        - Whether or not an admin can create gangs without using points
    
            Credits
            -------
            F0RCE     - Original Plugin Idea
            Exolent    - SQLVault Include
            Drekes     - Freezetime Fix (I was too lazy) :)
    
    
            Changelog
            ---------
            September 26, 2011    - v1.0 -     Initial Release
            September 27, 2011    - v1.01 -     Added more cvars, fixed a few bugs.
            September 28, 2011    - v1.1 -     Added gang admins, jb points instead of money, and a few other things I can't remember :)
            January 21, 2011    - v1.1.1 -    Added a cvar for whether an admin can create a gang without using points.
            January 23, 2011    - v1.1.2 -     Fixed freezetime problem
    
    
            http://forums.alliedmods.net/showthread.php?p=1563919
    */

    /* Includes */
        
        #include < amxmodx >
        #include < amxmisc >
        #include < sqlvault_ex >
        #include < cstrike >
        #include < xcolorchat >
        #include < hamsandwich >
        #include < fun >

    /* Defines */
    
        #define ADMIN_CREATE    ADMIN_LEVEL_B

    /* Constants */
    
        
new const g_szVersion[ ] = "1.1.2";

        
enum _:GangInfo
        
{
            
Trie:GangMembers,
            
GangName64 ],
            
GangHP,
            
GangStealing,
            
GangDamage,
            
GangStamina,
            
GangWeaponDrop,
            
GangGetCash,
            
GangKills,
            
NumMembers
        
};
            
        
enum
        
{
            
VALUE_HP,
            
VALUE_STEALING,
            
VALUE_DAMAGE,
            
VALUE_STAMINA,
            
VALUE_WEAPONDROP,
            
VALUE_GETCASH,
            
VALUE_KILLS
        
}

        
enum
        
{
            
STATUS_NONE,
            
STATUS_MEMBER,
            
STATUS_ADMIN,
            
STATUS_LEADER
        
};

        new const 
g_szGangValues[ ][ ] = 
        {
            
"HP",
            
"Stealing",
            
"Damage",
            
"Stamina",
            
"WeaponDrop",
            
"GetCash",
            
"Kills"
        
};

        new const 
g_szPrefix[ ] = "^04[AMXX]^01";

    
/* Tries */
    
        
new Trie:g_tGangNames;
        new 
Trie:g_tGangValues;

    
/* Vault */
    
        
new SQLVault:g_hVault;
    
/* Arrays */
    
        
new Array:g_aGangs;

    
/* Pcvars */
    
        
new g_pCreateCost;

        new 
g_pHealthCost;
        new 
g_pStealingCost;
        new 
g_pDamageCost;
        new 
g_pStaminaCost;
        new 
g_pWeaponDropCost;
        new 
g_pGetCashCost;

        new 
g_pHealthMax;
        new 
g_pStealingMax;
        new 
g_pDamageMax;
        new 
g_pStaminaMax;
        new 
g_pWeaponDropMax;
        new 
g_pGetCashMax;

        new 
g_pHealthPerLevel;
        new 
g_pStealingPerLevel;
        new 
g_pDamagePerLevel;
        new 
g_pStaminaPerLevel;
        new 
g_pWeaponDropPerLevel;
        new 
g_pGetCashPerLevel;

        new 
g_pPointsPerKill;
        new 
g_pHeadshotBonus;

        new 
g_pMaxMembers;
        new 
g_pAdminCreate;
        new 
g_pLeadersKick;

    
/* Integers */
    
        
new g_iGang33 ];
        new 
bActiveGet33 ];
        

    public 
plugin_init()
    {
        
register_plugin"Jailbreak Gang System"g_szVersion"H3avY Ra1n" );
        
        
g_aGangs                 ArrayCreateGangInfo );

        
g_tGangValues             TrieCreate();
        
g_tGangNames             TrieCreate();
        
        
g_hVault                 sqlv_open_local"jb_gangs"false );
        
sqlv_init_exg_hVault );
        
        
g_pCreateCost            register_cvar"jb_gang_cost",         "100000" );
        
g_pHealthCost            register_cvar"jb_health_cost",         "70000" );
        
g_pStealingCost         register_cvar"jb_stealing_cost",     "100000" );
        
g_pDamageCost            register_cvar"jb_damage_cost",         "100000" );
        
g_pStaminaCost            register_cvar"jb_stamina_cost",     "67000" );
        
g_pWeaponDropCost        register_cvar"jb_weapondrop_cost",     "12000" );
        
g_pGetCashCost            register_cvar"jb_getcash_cost",    "120000");

        
g_pHealthMax            register_cvar"jb_health_max",         "10" );
        
g_pStealingMax            register_cvar"jb_stealing_max",     "10" );
        
g_pDamageMax            register_cvar"jb_damage_max",         "10" );
        
g_pStaminaMax            register_cvar"jb_stamina_max",         "10" );
        
g_pWeaponDropMax        register_cvar"jb_weapondrop_max",     "10" );
        
g_pGetCashMax            register_cvar"jb_getcash_max",    "9");

        
g_pHealthPerLevel        register_cvar"jb_health_per",         "7"     );
        
g_pStealingPerLevel        register_cvar"jb_stealing_per",     "50"     );
        
g_pDamagePerLevel        register_cvar"jb_damage_per",         "3"     );
        
g_pStaminaPerLevel        register_cvar"jb_stamina_per",         "3"     );
        
g_pWeaponDropPerLevel     register_cvar"jb_weapondrop_per",     "1"     );
        
g_pGetCashPerLevel            register_cvar"jb_getcash_per",    "50");

        
g_pPointsPerKill        register_cvar"jb_points_per_kill",    "1" );
        
g_pHeadshotBonus        register_cvar"jb_headshot_bonus",    "0" );
        
        
g_pMaxMembers            register_cvar"jb_max_members",        "10" );
        
g_pAdminCreate            register_cvar"jb_admin_create",     "0" );
        
g_pLeadersKick            register_cvar"jb_leaders_kick",     "0" ); // Leaders Can Be Kicked By Admins
        
        
register_cvar"jb_gang_version"g_szVersionFCVAR_SPONLY FCVAR_SERVER );
        
        
register_menu"Gang Menu"1023"GangMenu_Handler" );
        
register_menu"Skills Menu"1023"SkillsMenu_Handler" );
        
        for( new 
0sizeof g_szGangValuesi++ )
        {
            
TrieSetCellg_tGangValuesg_szGangValues], );
        }

        
RegisterHamHam_Spawn"player""Ham_PlayerSpawn_Post");
        
RegisterHamHam_TakeDamage"player""Ham_TakeDamage_Pre");
        
RegisterHamHam_TakeDamage"player""Ham_TakeDamage_Post");
        
RegisterHamHam_Item_PreFrame"player""Ham_PlayerResetSpeedPost"1);
                
        
register_clcmd"say /gang""Cmd_Gang" );
        
register_clcmd"gang_name""Cmd_CreateGang" );
        
register_clcmd"say /getcash""CmdGetCash" );
        
        
register_event"DeathMsg""Event_DeathMsg""a" );
        
        
LoadGangs();
        }


        public 
CmdGetCash(id)
        {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        new 
iTotal get_pcvar_numg_pGetCashPerLevel ) * aDataGangGetCash ]
        if ( 
bActiveGetid ] )
        {
            
ColorChatidNORMAL"^4You need to wait until the^3 Next Round^1 to^4 Get Cash^1!" );
            return 
1;
        }
        
        if( 
g_iGangid ] < -)
        {
            
ColorChatidNORMAL"^4You Need To Be In ^3Gang ^4To Use GetCash!");
            return 
1;
        }
            
        
cs_set_user_moneyidcs_get_user_moneyid ) + ( iTotal 50 ) );
            
        
bActiveGetid ] = true;
        
        
ColorChatidNORMAL"^3You received^4 %i Cash^1,^3 Good Luck^1."iTotal 50 );
        
        return 
1;
    }
    public 
client_disconnectid )
    {
        
g_iGangid ] = -1;
    }

    public 
client_putinserverid )
    {
        
g_iGangid ] = get_user_gangid );
    }

    public 
plugin_end()
    {
        
SaveGangs();
        
sqlv_closeg_hVault );
    }

    public 
Event_DeathMsg()
    {
        new 
iKiller read_data);
        new 
iVictim read_data);
        
        if( !
is_user_aliveiKiller ) || cs_get_user_teamiVictim ) != CS_TEAM_CT || cs_get_user_teamiKiller ) != CS_TEAM_T )
            return 
PLUGIN_CONTINUE;
        
        new 
iTotal get_pcvar_numg_pPointsPerKill ) + ( bool:read_data) ? get_pcvar_numg_pHeadshotBonus ) : );
        
        if( 
g_iGangiKiller ] > -)
        {
            new 
aDataGangInfo ];
            
ArrayGetArrayg_aGangsg_iGangiKiller ], aData );
            
aDataGangKills ]++;
            
ArraySetArrayg_aGangsg_iGangiKiller ], aData );
            
            
iTotal += iTotal * ( aDataGangStealing ] * get_pcvar_numg_pStealingPerLevel ) );
        }
        
        
cs_set_user_moneyiKillercs_get_user_moneyiKiller ) + iTotal );
        
        return 
PLUGIN_CONTINUE;
    }
    public 
Ham_PlayerSpawn_Postid )
    {
        if( !
is_user_aliveid ) || cs_get_user_teamid ) == CS_TEAM_SPECTATOR )
            return 
HAM_IGNORED;
            
        if( 
g_iGangid ] == -)
        {
            return 
HAM_IGNORED;
        }
        
set_task(1.0"GiveHP"id)
        
        
bActiveGetid ] = false;
        return 
HAM_IGNORED;
    }
    public 
GiveHP(id)
    {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        new 
iHealth get_user_healthid ) + aDataGangHP ] * get_pcvar_numg_pHealthPerLevel );
        
set_user_healthidiHealth );
    }
    public 
Ham_TakeDamage_PreiVictimiInflictoriAttackerFloat:flDamageiBits )
    {
        if( !
is_user_aliveiAttacker ) || cs_get_user_teamiAttacker ) == CS_TEAM_SPECTATOR )
            return 
HAM_IGNORED;
            
        if( 
g_iGangiAttacker ] == -)
            return 
HAM_IGNORED;
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangiAttacker ], aData );
        
        
SetHamParamFloat4flDamage + ( get_pcvar_numg_pDamagePerLevel ) * ( aDataGangDamage ] ) ) );
        
        return 
HAM_IGNORED;
    }

    public 
Ham_TakeDamage_PostiVictimiInflictoriAttackerFloat:flDamageiBits )
    {
        if( !
is_user_aliveiAttacker ) || g_iGangiAttacker ] == -|| get_user_weaponiAttacker ) != CSW_KNIFE || cs_get_user_teamiAttacker ) != CS_TEAM_T  )
        {
            return 
HAM_IGNORED;
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangiAttacker ], aData );
        
        new 
iChance aDataGangWeaponDrop ] * get_pcvar_numg_pWeaponDropPerLevel );
        
        if( 
iChance == )
            return 
HAM_IGNORED;
        
        new 
bool:bDrop = ( random_num1100 ) <= iChance );
        
        if( 
bDrop )
            
client_cmdiVictim"drop" );
        
        return 
HAM_IGNORED;
    }

    public 
Ham_PlayerResetSpeedPostid )
    {
        if( 
g_iGangid ] == -|| !is_user_aliveid ) || cs_get_user_teamid ) == CS_TEAM_SPECTATOR )
        {
            return 
HAM_IGNORED;
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        if( 
aDataGangStamina ] > && get_user_maxspeedid ) > 1.0 )
            
set_user_maxspeedid250.0 + ( aDataGangStamina ] * get_pcvar_numg_pStaminaPerLevel ) ) );
            
        return 
HAM_IGNORED;
    }

    public 
Cmd_Gangid )
    {    
        if( !
is_user_connectedid ) )
            return 
PLUGIN_HANDLED;
        
        static 
szMenu512 ], iLenaDataGangInfo ], iKeysiStatus;
        
        
iKeys MENU_KEY_0 MENU_KEY_4;
        
        
iStatus getStatusidg_iGangid ] );
        
        if( 
g_iGangid ] > -)
        {
            
ArrayGetArrayg_aGangsg_iGangid ], aData );
            
iLen     =     formatexszMenucharsmaxszMenu ),  "\yGang Menu^n\wCurrent Gang:\y %s^n"aDataGangName ] );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\yCash: \w%i^n^n"cs_get_user_moneyid ) );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r1. \dCreate a Gang [%i Cash]^n"get_pcvar_numg_pCreateCost ) );
        }
        
        else
        {
            
iLen     =     formatexszMenucharsmaxszMenu ),  "\yGang Menu^n\wCurrent Gang:\r None^n" );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\yCash: \w%i^n^n"cs_get_user_moneyid ) );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r1. \wCreate a Gang [%i Cash]^n"get_pcvar_numg_pCreateCost ) );
            
            
iKeys |= MENU_KEY_1;
        }
        
        
        if( 
iStatus STATUS_MEMBER && g_iGangid ] > -&& get_pcvar_numg_pMaxMembers ) > aDataNumMembers ] )
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r2. \wInvite Player to Gang^n" );
            
iKeys |= MENU_KEY_2;
        }
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r2. \dInvite Player to Gang^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r3. \wSkills^n" );
            
iKeys |= MENU_KEY_3;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r3. \dSkills^n" );
            
        
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r4. \wTop-10^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r5. \wLeave Gang^n" );
            
iKeys |= MENU_KEY_5;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r5. \dLeave Gang^n" );
        
        
        if( 
iStatus STATUS_MEMBER )
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r6. \wGang Admin Menu^n" );
            
iKeys |= MENU_KEY_6;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r6. \dGang Admin Menu^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r7. \wOnline Members^n" );
            
iKeys |= MENU_KEY_7;
        }
            
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r7. \dOnline Members^n" );
        
        
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"^n\r0. \wExit" );
        
        
show_menuidiKeysszMenu, -1"Gang Menu" );
        
        return 
PLUGIN_CONTINUE;
    }

    public 
GangMenu_HandleridiKey )
    {
        switch( ( 
iKey ) % 10 )
        {
            case 
0: return PLUGIN_HANDLED;
            
            case 
1
            {
                if( 
get_pcvar_numg_pAdminCreate ) && get_user_flagsid ) & ADMIN_CREATE )
                {
                    
client_cmdid"messagemode gang_name" );
                }
                
                else if( 
cs_get_user_moneyid ) < get_pcvar_numg_pCreateCost ) )
                {
                    
ColorChatidNORMAL"%s You do not have enough points to create a gang!"g_szPrefix );
                    return 
PLUGIN_HANDLED;
                }
                
                else
                    
client_cmdid"messagemode gang_name" );
            }
            
            case 
2:
            {
                
ShowInviteMenuid );
            }
            
            case 
3:
            {
                
ShowSkillsMenuid );
            }
            
            case 
4:
            {
                
Cmd_Top10id );
            }
            
            case 
5:
            {
                
ShowLeaveConfirmMenuid );
            }
            
            case 
6:
            {
                
ShowLeaderMenuid );
            }
            
            case 
7:
            {
                
ShowMembersMenuid );
            }
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
Cmd_CreateGangid )
    {
        new 
bool:bAdmin false;
        
        if( 
get_pcvar_numg_pAdminCreate ) && get_user_flagsid ) & ADMIN_CREATE )
        {
            
bAdmin true;
        }
        
        else if( 
cs_get_user_moneyid ) < get_pcvar_numg_pCreateCost ) )
        {
            
ColorChatidNORMAL"%s You do not have enough points to create a gang."g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        else if( 
g_iGangid ] > -)
        {
            
ColorChatidNORMAL"%s You cannot create a gang if you are already in one!"g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        else if( 
cs_get_user_teamid ) != CS_TEAM_T )
        {
            
ColorChatidNORMAL"%s Only ^03prisoners ^01can create gangs!"g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        new 
szArgs60 ];
        
read_argsszArgscharsmaxszArgs ) );
        
        
remove_quotesszArgs );
        
        if( 
TrieKeyExistsg_tGangNamesszArgs ) )
        {
            
ColorChatidNORMAL"%s That gang with that name already exists."g_szPrefix );
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
aDataGangInfo ];
        
        
aDataGangName ]         = szArgs;
        
aDataGangHP ]         = 0;
        
aDataGangStealing ]     = 0;
        
aDataGangStamina ]     = 0;
        
aDataGangWeaponDrop ] = 0;
        
aDataGangDamage ]     = 0;
        
aDataNumMembers ]     = 0;
        
aDataGangGetCash ]    = 0;
        
aDataGangMembers ]     = _:TrieCreate();
        
        
ArrayPushArrayg_aGangsaData );
        
        if( !
bAdmin )
            
cs_set_user_moneyidcs_get_user_moneyid ) - get_pcvar_num(g_pCreateCost));
        
        
set_user_gangidArraySizeg_aGangs ) - 1STATUS_LEADER );
        
        
ColorChatidNORMAL"%s You have successfully created gang '^03%s^01'."g_szPrefixszArgs );
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowInviteMenuid )
    {    
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
szInfo], hMenu;
        
hMenu menu_create"Choose a Player to Invite:""InviteMenu_Handler" );
        new 
szName32 ];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            
            if( 
iPlayer == id || g_iGangiPlayer ] == g_iGangid ] || cs_get_user_teamiPlayer ) == CS_TEAM_SPECTATOR )
                continue;
            
            if( 
g_iGangiPlayer ] > -)
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszInfocharsmaxszInfo ) );
            
            
menu_additemhMenuszNameszInfo );
        }
            
        
menu_displayidhMenu);
    }

    public 
InviteMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
szData], iAccesshCallbackszName32 ];
        
menu_item_getinfohMenuiItemiAccessszData5szName31hCallback );
        
        new 
iPlayer str_to_numszData );

        if( !
is_user_connectediPlayer ) )
            return 
PLUGIN_HANDLED;
            
        
ShowInviteConfirmMenuidiPlayer );

        
ColorChatidNORMAL"%s You have successfully invited %s to join your gang."g_szPrefixszName );
        
        
Cmd_Gangid );
        return 
PLUGIN_HANDLED;
    }

    public 
ShowInviteConfirmMenuidiPlayer )
    {
        new 
szName32 ];
        
get_user_nameidszNamecharsmaxszName ) );
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        new 
szMenuTitle128 ];
        
formatexszMenuTitlecharsmaxszMenuTitle ), "%s Invited You to Join    %s"szNameaDataGangName ] );
        new 
hMenu menu_createszMenuTitle"InviteConfirmMenu_Handler" );
        
        new 
szInfo];
        
num_to_strg_iGangid ], szInfo);
        
        
menu_additemhMenu"Accept Invitation"szInfo );
        
menu_additemhMenu"Decline Invitation""-1" );
        
        
menu_displayiPlayerhMenu);    
    }

    public 
InviteConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        new 
iGang str_to_numszData );
        
        if( 
iGang == -)
            return 
PLUGIN_HANDLED;
        
        if( 
getStatusidg_iGangid ] ) == STATUS_LEADER )
        {
            
ColorChatidNORMAL"%s You cannot leave your gang while you are the leader."g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangidiGang );
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        
ColorChatidNORMAL"%s You have successfully joined the gang ^03%s^01."g_szPrefixaDataGangName ] );
        
        return 
PLUGIN_HANDLED;
    }
        

    public 
ShowSkillsMenuid )
    {    
        static 
szMenu512 ], iLeniKeysaDataGangInfo ];
        
        if( !
iKeys )
        {
            
iKeys MENU_KEY_1 MENU_KEY_2 MENU_KEY_3 MENU_KEY_4 MENU_KEY_5 MENU_KEY_6 MENU_KEY_7 |MENU_KEY_0;
        }
        
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        
iLen    =    formatexszMenucharsmaxszMenu ), "\ySkills Menu^n^n" );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r1. \wHealth Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pHealthCost ), aDataGangHP ], get_pcvar_numg_pHealthMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r2. \wStealing Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pStealingCost ), aDataGangStealing ], get_pcvar_numg_pStealingMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r3. \wDamage Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pDamageCost ), aDataGangDamage ], get_pcvar_numg_pDamageMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r4. \wWeapon Drop Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pWeaponDropCost ), aDataGangWeaponDrop ], get_pcvar_numg_pWeaponDropMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r5. \wSpeed Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pStaminaCost ), aDataGangStamina ], get_pcvar_numg_pStaminaMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r6. \wGetCash Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pGetCashCost ), aDataGangGetCash ], get_pcvar_numg_pGetCashMax ) );
        
        
iLen    +=    formatexszMenuiLen ], 511 iLen"^n\r0. \wExit" );
        
        
show_menuidiKeysszMenu, -1"Skills Menu" );
    }

    public 
SkillsMenu_HandleridiKey )
    {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        switch( ( 
iKey ) % 10 )
        {
            case 
0
            {
                
Cmd_Gangid );
                return 
PLUGIN_HANDLED;
            }
            
            case 
1:
            {
                if( 
aDataGangHP ] == get_pcvar_numg_pHealthMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangHP ] > get_pcvar_numg_pHealthMax ) )
                {
                    
aDataGangHP ] = get_pcvar_numg_pHealthMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pHealthCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangHP ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            
            case 
2:
            {
                if( 
aDataGangStealing ] == get_pcvar_numg_pStealingMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangStealing ] > get_pcvar_numg_pStealingMax ) )
                {
                    
aDataGangStealing ] = get_pcvar_numg_pStealingMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pStealingCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangStealing ]++;
                
                
cs_set_user_moneyidiRemaining);
            }
            
            case 
3:
            {
                if( 
aDataGangDamage ] == get_pcvar_numg_pDamageMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangDamage ] > get_pcvar_numg_pDamageMax ) )
                {
                    
aDataGangDamage ] = get_pcvar_numg_pDamageMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pDamageCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangDamage ]++;
                
                
cs_set_user_moneyidiRemaining);
            }
            
            case 
4:
            {
                if( 
aDataGangWeaponDrop ] == get_pcvar_numg_pWeaponDropMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangWeaponDrop ] > get_pcvar_numg_pWeaponDropMax ) )
                {
                    
aDataGangWeaponDrop ] = get_pcvar_numg_pWeaponDropMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pWeaponDropCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangWeaponDrop ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            
            case 
5:
            {
                if( 
aDataGangStamina ] == get_pcvar_numg_pStaminaMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangStamina ] > get_pcvar_numg_pStaminaMax ) )
                {
                    
aDataGangStamina ] = get_pcvar_numg_pStaminaMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pStaminaCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangStamina ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            case 
6:
            {
                if( 
aDataGangGetCash ] == get_pcvar_numg_pGetCashMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangGetCash ] > get_pcvar_numg_pGetCashMax ) )
                {
                    
aDataGangGetCash ] = get_pcvar_numg_pGetCashMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pGetCashCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangGetCash ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
        }
        
        
ArraySetArrayg_aGangsg_iGangid ], aData );
        
        new 
iPlayers32 ], iNumiPlayer;
        new 
szName32 ];
        
get_playersiPlayersiNum );
        
        for( new 
0iNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
iPlayer == id || g_iGangiPlayer ] != g_iGangid ] )
                continue;
                
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has just upgraded one of your gang's skills."g_szPrefixszName );
        }
        
        
ColorChatidNORMAL"%s You have successfully upgraded your gang."g_szPrefix );
        
        
ShowSkillsMenuid );
        
        return 
PLUGIN_HANDLED;
    }
            
        
    public 
Cmd_Top10id )
    {
        new 
iSize ArraySizeg_aGangs );
        
        new 
iOrder100 ][ ];
        
        new 
aDataGangInfo ];
        
        for( new 
0iSizei++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            
iOrder][ ] = i;
            
iOrder][ ] = aDataGangKills ];
        }
        
        
SortCustom2DiOrderiSize"Top10_Sort" );
        
        new 
szMessage2048 ];
        
formatexszMessagecharsmaxszMessage ), "<body bgcolor=#000000><font color=#FFB000><pre>" );
        
formatszMessagecharsmaxszMessage ), "%s%2s %-22.22s %7s %4s %10s %9s %9s %11s %8s^n"szMessage"#""Name""Kills""HP""Stealing"
            
"GetCash""Stamina""WeaponDrop""Damage" );
            
        for( new 
0min10iSize ); i++ )
        {
            
ArrayGetArrayg_aGangsiOrder][ ], aData );
            
            
formatszMessagecharsmaxszMessage ), "%s%-2d %22.22s %7d %4d %10d %9d %9d %11d %8d^n"szMessage1aDataGangName ], 
            
aDataGangKills ], aDataGangHP ], aDataGangStealing ], aDataGangGetCash ], aDataGangStamina], aDataGangWeaponDrop ], aDataGangDamage ] );
        }
        
        
show_motdidszMessage"Gang Top 10" );
    }

    public 
Top10_Sort( const iElement1[ ], const iElement2[ ], const iArray[ ], szData[], iSize 
    {
        if( 
iElement1] > iElement2] )
            return -
1;
        
        else if( 
iElement1] < iElement2] )
            return 
1;
        
        return 
0;
    }

    public 
ShowLeaveConfirmMenuid )
    {
        new 
hMenu menu_create"Are you sure you want to leave?""LeaveConfirmMenu_Handler" );
        
menu_additemhMenu"Yes, Leave Now""0" );
        
menu_additemhMenu"No, Don't Leave""1" );
        
        
menu_displayidhMenu);
    }

    public 
LeaveConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0
            {
                if( 
getStatusidg_iGangid ] ) == STATUS_LEADER )
                {
                    
ColorChatidNORMAL"%s You must transfer leadership before leaving this gang."g_szPrefix );
                    
Cmd_Gangid );
                    
                    return 
PLUGIN_HANDLED;
                }
                
                
ColorChatidNORMAL"%s You have successfully left your gang."g_szPrefix );
                
set_user_gangid, -);
                
Cmd_Gangid );
            }
            
            case 
1Cmd_Gangid );
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowLeaderMenuid )
    {
        new 
hMenu menu_create"Gang Leader Menu""LeaderMenu_Handler" );
        
        new 
iStatus getStatusidg_iGangid ] );
        
        if( 
iStatus == STATUS_LEADER )
        {
            
menu_additemhMenu"Disband Gang""0" );
            
menu_additemhMenu"Transfer Leadership""1" );
            
menu_additemhMenu"Add An Admin""4" );
            
menu_additemhMenu"Remove An Admin""5" );
        }
        
        
menu_additemhMenu"Kick From Gang""2" );
        
menu_additemhMenu"Change Gang Name""3" );
        
        
        
menu_displayidhMenu);
    }

    public 
LeaderMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData];
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0:
            {
                
ShowDisbandConfirmMenuid );
            }
            
            case 
1:
            {
                
ShowTransferMenuid );
            }
            
            case 
2:
            {
                
ShowKickMenuid );
            }
            
            case 
3:
            {
                
client_cmdid"messagemode New_Name" );
            }
            
            case 
4:
            {
                
ShowAddAdminMenuid );
            }
            
            case 
5:
            {
                
ShowRemoveAdminMenuid );
            }
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowDisbandConfirmMenuid )
    {
        new 
hMenu menu_create"Are you sure you want to disband the gang?""DisbandConfirmMenu_Handler" );
        
menu_additemhMenu"Yes, Disband Now""0" );
        
menu_additemhMenu"No, Don't Disband""1" );
        
        
menu_displayidhMenu);
    }

    public 
DisbandConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0
            {
                
                
ColorChatidNORMAL"%s You have successfully disbanded your gang."g_szPrefix );
                
                new 
iPlayers32 ], iNum;
                
                
get_playersiPlayersiNum );
                
                new 
iPlayer;
                
                for( new 
0iNumi++ )
                {
                    
iPlayer iPlayers];
                    
                    if( 
iPlayer == id )
                        continue;
                    
                    if( 
g_iGangid ] != g_iGangiPlayer ] )
                        continue;

                    
ColorChatiPlayerNORMAL"%s Your gang has been disband by its leader."g_szPrefix );
                    
set_user_gangiPlayer, -);
                }
                
                new 
iGang g_iGangid ];
                
                
set_user_gangid, -);
                
                
ArrayDeleteItemg_aGangsiGang );

                
Cmd_Gangid );
            }
            
            case 
1Cmd_Gangid );
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowTransferMenuid )
    {
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum"e""TERRORIST" );
        
        new 
hMenu menu_create"Transfer Leadership to:""TransferMenu_Handler" );
        new 
szName32 ], szData];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || id == iPlayer )
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
TransferMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszData5szNamecharsmaxszName ), hCallback );
        
        new 
iPlayer str_to_numszData );
        
        if( !
is_user_connectediPlayer ) )
        {
            
ColorChatidNORMAL"%s That player is no longer connected."g_szPrefix );
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiPlayerg_iGangid ], STATUS_LEADER );
        
set_user_gangidg_iGangid ], STATUS_ADMIN );
        
        
Cmd_Gangid );
        
        new 
iPlayers32 ], iNumiTemp;
        
get_playersiPlayersiNum );

        for( new 
0iNumi++ )
        {
            
iTemp iPlayers];
            
            if( 
iTemp == iPlayer )
            {
                
ColorChatiTempNORMAL"%s You are the new leader of your gang."g_szPrefix );
                continue;
            }
            
            else if( 
g_iGangiTemp ] != g_iGangid ] )
                continue;
            
            
ColorChatiTempNORMAL"%s ^03%s^01 is the new leader of your gang."g_szPrefixszName );
        }
        
        return 
PLUGIN_HANDLED;
    }


    public 
ShowKickMenuid )
    {
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
hMenu menu_create"Kick Player From Gang:""KickMenu_Handler" );
        new 
szName32 ], szData];
        
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || id == iPlayer )
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
KickMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ], KickerName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszData5szNamecharsmaxszName ), hCallback );
        
        new 
iPlayer str_to_numszData );
        
        
get_user_name(idKickerName31)
        
        if( !
is_user_connectediPlayer ) )
        {
            
ColorChatidNORMAL"%s That player is no longer connected."g_szPrefix );
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        else if(
getStatusiPlayerg_iGangiPlayer ] ) == STATUS_LEADER && !get_pcvar_numg_pLeadersKick )) 
        {
            
ColorChatidNORMAL"%s That player Is The Leader!."g_szPrefix );
            
ColorChatiPlayerNORMAL"%s %s Tried To Kick You From Your Own Gang! Get Revenge"g_szPrefixKickerName);
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiPlayer, -);
        
        
Cmd_Gangid );
        
        new 
iPlayers32 ], iNumiTemp;
        
get_playersiPlayersiNum );
        
        for( new 
0iNumi++ )
        {
            
iTemp iPlayers];
            
            if( 
iTemp == iPlayer || g_iGangiTemp ] != g_iGangid ] )
                continue;
            
            
ColorChatiTempNORMAL"%s ^03%s^01 has been kicked from the gang."g_szPrefixszName );
        }
        
        
ColorChatiPlayerNORMAL"%s You have been kicked from your gang."g_szPrefix );
        
        return 
PLUGIN_HANDLED;
    }

    public 
ChangeName_Handlerid )
    {
        if( 
g_iGangid ] == -|| getStatusidg_iGangid ] ) == STATUS_MEMBER )
        {
            return;
        }
        
        new 
iGang g_iGangid ];
        
        new 
szArgs64 ];
        
read_argsszArgscharsmaxszArgs ) );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
bool:bInGang33 ];
        new 
iStatus33 ];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] )
                continue;
        
            
bInGangiPlayer ] = true;
            
iStatusiPlayer ] = getStatusidiGang );
            
            
set_user_gangiPlayer, -);
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        
aDataGangName ] = szArgs;
        
        
ArraySetArrayg_aGangsiGangaData );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( !
bInGangiPlayer ] )
                continue;
            
            
set_user_gangiPlayeriGangiStatusid ] );
        }
    }
        
    public 
ShowAddAdminMenuid )
    {
        new 
iPlayers32 ], iNum;
        new 
szName32 ], szData];
        new 
hMenu menu_create"Choose a Player to Promote:""AddAdminMenu_Handler" );
        
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] || getStatusiPlayerg_iGangiPlayer ] ) > STATUS_MEMBER )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
AddAdminMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszDatacharsmaxszData ), szNamecharsmaxszName ), hCallback );
        
        new 
iChosen str_to_numszData );
        
        if( !
is_user_connectediChosen ) )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiChoseng_iGangid ], STATUS_LEADER );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || iPlayer == iChosen )
                continue;
            
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has been promoted to an admin of your gang."g_szPrefixszName );
        }
        
        
ColorChatiChosenNORMAL"%s ^01You have been promoted to an admin of your gang."g_szPrefix );
        
        
menu_destroyhMenu );
        return 
PLUGIN_HANDLED;
    }

    public 
ShowRemoveAdminMenuid )
    {
        new 
iPlayers32 ], iNum;
        new 
szName32 ], szData];
        new 
hMenu menu_create"Choose a Player to Demote:""RemoveAdminMenu_Handler" );
        
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] || getStatusiPlayerg_iGangiPlayer ] ) != STATUS_ADMIN )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
RemoveAdminMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszDatacharsmaxszData ), szNamecharsmaxszName ), hCallback );
        
        new 
iChosen str_to_numszData );
        
        if( !
is_user_connectediChosen ) )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiChoseng_iGangid ], STATUS_MEMBER );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || iPlayer == iChosen )
                continue;
            
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has been demoted from being an admin of your gang."g_szPrefixszName );
        }
        
        
ColorChatiChosenNORMAL"%s ^01You have been demoted from being an admin of your gang."g_szPrefix );
        
        
menu_destroyhMenu );
        return 
PLUGIN_HANDLED;
    }
        
    public 
ShowMembersMenuid )
    {
        new 
szName64 ], iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
hMenu menu_create"Online Members:""MemberMenu_Handler" );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            switch( 
getStatusiPlayerg_iGangid ] ) )
            {
                case 
STATUS_MEMBER:
                {
                    
addszNamecharsmaxszName ), " \r[Member]" );
                }
                
                case 
STATUS_ADMIN:
                {
                    
addszNamecharsmaxszName ), " \r[Admin]" );
                }
                
                case 
STATUS_LEADER:
                {
                    
addszNamecharsmaxszName ), " \r[Leader]" );
                }
            }

            
menu_additemhMenuszName );
        }
        
        
menu_displayidhMenu);
    }

    public 
MemberMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        
menu_destroyhMenu );
        
        
ShowMembersMenuid )
        return 
PLUGIN_HANDLED;
    }

    
// Credits to Tirant from zombie mod and xOR from xRedirect
    
public LoadGangs()
    {
        new 
szConfigsDir60 ];
        
get_configsdirszConfigsDircharsmaxszConfigsDir ) );
        
addszConfigsDircharsmaxszConfigsDir ), "/jb_gangs.ini" );
        
        new 
iFile fopenszConfigsDir"rt" );
        
        new 
aDataGangInfo ];
        
        new 
szBuffer512 ], szData], szValue], iiCurGang;
        
        while( !
feofiFile ) )
        {
            
fgetsiFileszBuffercharsmaxszBuffer ) );
            
            
trimszBuffer );
            
remove_quotesszBuffer );
            
            if( !
szBuffer] || szBuffer] == ';' 
            {
                continue;
            }
            
            if( 
szBuffer] == '[' && szBufferstrlenszBuffer ) - ] == ']' )
            {
                
copyaDataGangName ], strlenszBuffer ) - 2szBuffer] );
                
aDataGangHP ] = 0;
                
aDataGangStealing ] = 0;
                
aDataGangStamina ] = 0;
                
aDataGangWeaponDrop ] = 0;
                
aDataGangDamage ] = 0;
                
aDataGangGetCash ] = 0;
                
aDataGangKills ] = 0;
                
aDataNumMembers ] = 0;
                
                
aDataGangMembers ] = _:TrieCreate();
                
                if( 
TrieKeyExistsg_tGangNamesaDataGangName ] ) )
                {
                    new 
szError256 ];
                    
formatexszErrorcharsmaxszError ), "[JB Gangs] Gang already exists: %s"aDataGangName ] );
                    
set_fail_stateszError );
                }
                
                
ArrayPushArrayg_aGangsaData );
                
                
TrieSetCellg_tGangNamesaDataGangName ], iCurGang );

                
log_amx"Gang Created: %s"aDataGangName ] );
                
                
iCurGang++;
                
                continue;
            }
            
            
strtokszBufferszData31szValue511'=' );
            
trimszData );
            
trimszValue );
            
            if( 
TrieGetCellg_tGangValuesszData) )
            {
                
ArrayGetArrayg_aGangsiCurGang 1aData );
                
                switch( 
)
                {                    
                    case 
VALUE_HP:
                        
aDataGangHP ] = str_to_numszValue );
                    
                    case 
VALUE_STEALING:
                        
aDataGangStealing ] = str_to_numszValue );
                    
                    case 
VALUE_STAMINA:
                        
aDataGangStamina ] = str_to_numszValue );
                    
                    case 
VALUE_WEAPONDROP:
                        
aDataGangWeaponDrop ] = str_to_numszValue );
                        
                    case 
VALUE_DAMAGE:
                        
aDataGangDamage ] = str_to_numszValue );
                        
                    case 
VALUE_GETCASH:
                        
aDataGangGetCash ] = str_to_numszValue );
                    
                    case 
VALUE_KILLS:
                        
aDataGangKills ] = str_to_numszValue );
                }
                
                
ArraySetArrayg_aGangsiCurGang 1aData );
            }
        }
        
        new Array:
aSQL;
        
sqlv_read_all_exg_hVaultaSQL );
        
        new 
aVaultDataSQLVaultEntryEx ];
        
        new 
iGang;
        
        for( 
0ArraySizeaSQL ); i++ )
        {
            
ArrayGetArrayaSQLiaVaultData );
            
            if( 
TrieGetCellg_tGangNamesaVaultDataSQLVEx_Key2 ], iGang ) )
            {
                
ArrayGetArrayg_aGangsiGangaData );
                
                
TrieSetCellaDataGangMembers ], aVaultDataSQLVEx_Key1 ], str_to_numaVaultDataSQLVEx_Data ] ) );
                
                
aDataNumMembers ]++;
                
                
ArraySetArrayg_aGangsiGangaData );
            }
        }
        
        
fcloseiFile );
    }

    public 
SaveGangs()
    {
        new 
szConfigsDir64 ];
        
get_configsdirszConfigsDircharsmaxszConfigsDir ) );
        
        
addszConfigsDircharsmaxszConfigsDir ), "/jb_gangs.ini" );
        
        if( 
file_existsszConfigsDir ) )
            
delete_fileszConfigsDir );
            
        new 
iFile fopenszConfigsDir"wt" );
            
        new 
aDataGangInfo ];
        
        new 
szBuffer256 ];

        for( new 
0ArraySizeg_aGangs ); i++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            
formatexszBuffercharsmaxszBuffer ), "[%s]^n"aDataGangName ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "HP=%i^n"aDataGangHP ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Stealing=%i^n"aDataGangStealing ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Stamina=%i^n"aDataGangStamina ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "WeaponDrop=%i^n"aDataGangWeaponDrop ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Damage=%i^n"aDataGangDamage ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "GetCash=%i^n"aDataGangGetCash ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Kills=%i^n^n"aDataGangKills ] );
            
fputsiFileszBuffer );
        }
        
        
fcloseiFile );
    }
        
        

    
set_user_gangidiGangiStatus=STATUS_MEMBER )
    {
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );

        new 
aDataGangInfo ];
        
        if( 
g_iGangid ] > -)
        {
            
ArrayGetArrayg_aGangsg_iGangid ], aData );
            
TrieDeleteKeyaDataGangMembers ], szAuthID );
            
aDataNumMembers ]--;
            
ArraySetArrayg_aGangsg_iGangid ], aData );
            
            
sqlv_remove_exg_hVaultszAuthIDaDataGangName ] );
        }

        if( 
iGang > -)
        {
            
ArrayGetArrayg_aGangsiGangaData );
            
TrieSetCellaDataGangMembers ], szAuthIDiStatus );
            
aDataNumMembers ]++;
            
ArraySetArrayg_aGangsiGangaData );
            
            
sqlv_set_num_exg_hVaultszAuthIDaDataGangName ], iStatus );        
        }

        
g_iGangid ] = iGang;
        
        return 
1;
    }
        
    
get_user_gangid )
    {
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );
        
        new 
aDataGangInfo ];
        
        for( new 
0ArraySizeg_aGangs ); i++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            if( 
TrieKeyExistsaDataGangMembers ], szAuthID ) )
                return 
i;
        }
        
        return -
1;
    }
                
    
getStatusidiGang )
    {
        if( !
is_user_connectedid ) || iGang == -)
            return 
STATUS_NONE;
            
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );
        
        new 
iStatus;
        
TrieGetCellaDataGangMembers ], szAuthIDiStatus );
        
        return 
iStatus;
    } 


thanks it open the menu..,

but /getcash not working..
you can check?

PHP Code:

   /*
    mod by waza123a 09.01.2014
    fixed money get/set
            Jailbreak Gang System
            H3avY Ra1n
    
            Description
            -----------
            This plugin allows prisoners to create gangs and upgrade specific skills that apply to everybody in the gang.
    
    
            Gang Menu
            ---------
            Create a Gang         - Allows a user to create a gang by paying money.
            Invite to Gang         - Only the leader of the gang can invite people to the gang.
            Skills                 - Opens the skills menu, where any member of the gang can pay money to upgrade their skills.
            Top-10                 - Shows a MOTD with the top10 gangs, SORTED BY KILLS. (If you have a good way to sort it, please post it below)
            Leave Gang             - Allows a player to leave the gang. The leader cannot leave the gang until he transfers leadership to somebody else (explained later).
            Gang Leader Menu     - Shows a menu with options to disband the gang, kick a player from the gang, or transfer leadership to somebody else in the gang.
            Online Members         - Shows a list of gang members that are currently in the server.
    
    
            Skills
            ------
            HP - Increased health
            Stealing - Increased money earnings.
            Gravity - Lower Gravity
            Damage - Increased damage
            Stamina - Gives higher speed to players.
            Weapon Drop - Chance of making the guard drop the weapon when you knife them. (%1 chance increase per level)
    
    
            CVARS
            -----
            jb_gang_cost         - The cost to create a gang.
            jb_health_cost         - The cost to upgrade gang health.
            jb_stealing_cost     - The cost to upgrade gang money earning.
            jb_gravity_cost     - The cost to upgrade gang gravity.
            jb_damage_cost         - The cost to upgrade gang damage.
            jb_stamina_cost     - The cost to upgrade gang stamina (speed).
            jb_weapondrop_cost     - The cost to upgrade gang weapon drop percentage.
    
            Additionally there are CVars for the max level for each type of upgrade, so replace _cost above with _max.
            Also there are CVars for the amount per level, so replace _cost above with _per.
            
            jb_points_per_kill    - The amount of points you get for a kill
            jb_headshot_bonus    - The amount of points you get for a headshot
            
            jb_max_members        - The max amount of members a gang can hold
            jb_admin_create        - Whether or not an admin can create gangs without using points
    
            Credits
            -------
            F0RCE     - Original Plugin Idea
            Exolent    - SQLVault Include
            Drekes     - Freezetime Fix (I was too lazy) :)
    
    
            Changelog
            ---------
            September 26, 2011    - v1.0 -     Initial Release
            September 27, 2011    - v1.01 -     Added more cvars, fixed a few bugs.
            September 28, 2011    - v1.1 -     Added gang admins, jb points instead of money, and a few other things I can't remember :)
            January 21, 2011    - v1.1.1 -    Added a cvar for whether an admin can create a gang without using points.
            January 23, 2011    - v1.1.2 -     Fixed freezetime problem
    
    
            http://forums.alliedmods.net/showthread.php?p=1563919
    */

    /* Includes */
        
        #include < amxmodx >
        #include < amxmisc >
        #include < sqlvault_ex >
        #include < cstrike >
        #include < colorchat >
        #include < hamsandwich >
        #include < fun >

    /* Defines */
    
        #define ADMIN_CREATE    ADMIN_LEVEL_B

    /* Constants */
    
        
new const g_szVersion[ ] = "1.1.2";

        
enum _:GangInfo
        
{
            
Trie:GangMembers,
            
GangName64 ],
            
GangHP,
            
GangStealing,
            
GangDamage,
            
GangStamina,
            
GangWeaponDrop,
            
GangGetCash,
            
GangKills,
            
NumMembers
        
};
            
        
enum
        
{
            
VALUE_HP,
            
VALUE_STEALING,
            
VALUE_DAMAGE,
            
VALUE_STAMINA,
            
VALUE_WEAPONDROP,
            
VALUE_GETCASH,
            
VALUE_KILLS
        
}

        
enum
        
{
            
STATUS_NONE,
            
STATUS_MEMBER,
            
STATUS_ADMIN,
            
STATUS_LEADER
        
};

        new const 
g_szGangValues[ ][ ] = 
        {
            
"HP",
            
"Stealing",
            
"Damage",
            
"Stamina",
            
"WeaponDrop",
            
"GetCash",
            
"Kills"
        
};

        new const 
g_szPrefix[ ] = "^04[AMXX]^01";

    
/* Tries */
    
        
new Trie:g_tGangNames;
        new 
Trie:g_tGangValues;

    
/* Vault */
    
        
new SQLVault:g_hVault;
    
/* Arrays */
    
        
new Array:g_aGangs;

    
/* Pcvars */
    
        
new g_pCreateCost;

        new 
g_pHealthCost;
        new 
g_pStealingCost;
        new 
g_pDamageCost;
        new 
g_pStaminaCost;
        new 
g_pWeaponDropCost;
        new 
g_pGetCashCost;

        new 
g_pHealthMax;
        new 
g_pStealingMax;
        new 
g_pDamageMax;
        new 
g_pStaminaMax;
        new 
g_pWeaponDropMax;
        new 
g_pGetCashMax;

        new 
g_pHealthPerLevel;
        new 
g_pStealingPerLevel;
        new 
g_pDamagePerLevel;
        new 
g_pStaminaPerLevel;
        new 
g_pWeaponDropPerLevel;
        new 
g_pGetCashPerLevel;

        new 
g_pPointsPerKill;
        new 
g_pHeadshotBonus;

        new 
g_pMaxMembers;
        new 
g_pAdminCreate;
        new 
g_pLeadersKick;
    
    
/* Natives */
        
        
native get_user_cashindex );
        
native set_user_cashindexamount );        

    
/* Integers */
    
        
new g_iGang33 ];
        new 
bActiveGet33 ];
        

    public 
plugin_init()
    {
        
register_plugin"Jailbreak Gang System"g_szVersion"H3avY Ra1n" );
        
        
g_aGangs                 ArrayCreateGangInfo );

        
g_tGangValues             TrieCreate();
        
g_tGangNames             TrieCreate();
        
        
g_hVault                 sqlv_open_local"jb_gangs"false );
        
sqlv_init_exg_hVault );
        
        
g_pCreateCost            register_cvar"jb_gang_cost",         "100000" );
        
g_pHealthCost            register_cvar"jb_health_cost",         "70000" );
        
g_pStealingCost         register_cvar"jb_stealing_cost",     "100000" );
        
g_pDamageCost            register_cvar"jb_damage_cost",         "100000" );
        
g_pStaminaCost            register_cvar"jb_stamina_cost",     "67000" );
        
g_pWeaponDropCost        register_cvar"jb_weapondrop_cost",     "12000" );
        
g_pGetCashCost            register_cvar"jb_getcash_cost",    "120000");

        
g_pHealthMax            register_cvar"jb_health_max",         "10" );
        
g_pStealingMax            register_cvar"jb_stealing_max",     "10" );
        
g_pDamageMax            register_cvar"jb_damage_max",         "10" );
        
g_pStaminaMax            register_cvar"jb_stamina_max",         "10" );
        
g_pWeaponDropMax        register_cvar"jb_weapondrop_max",     "10" );
        
g_pGetCashMax            register_cvar"jb_getcash_max",    "9");

        
g_pHealthPerLevel        register_cvar"jb_health_per",         "7"     );
        
g_pStealingPerLevel        register_cvar"jb_stealing_per",     "50"     );
        
g_pDamagePerLevel        register_cvar"jb_damage_per",         "3"     );
        
g_pStaminaPerLevel        register_cvar"jb_stamina_per",         "3"     );
        
g_pWeaponDropPerLevel     register_cvar"jb_weapondrop_per",     "1"     );
        
g_pGetCashPerLevel            register_cvar"jb_getcash_per",    "50");

        
g_pPointsPerKill        register_cvar"jb_points_per_kill",    "1" );
        
g_pHeadshotBonus        register_cvar"jb_headshot_bonus",    "0" );
        
        
g_pMaxMembers            register_cvar"jb_max_members",        "10" );
        
g_pAdminCreate            register_cvar"jb_admin_create",     "0" );
        
g_pLeadersKick            register_cvar"jb_leaders_kick",     "0" ); // Leaders Can Be Kicked By Admins
        
        
register_cvar"jb_gang_version"g_szVersionFCVAR_SPONLY FCVAR_SERVER );
        
        
register_menu"Gang Menu"1023"GangMenu_Handler" );
        
register_menu"Skills Menu"1023"SkillsMenu_Handler" );
        
        for( new 
0sizeof g_szGangValuesi++ )
        {
            
TrieSetCellg_tGangValuesg_szGangValues], );
        }

        
RegisterHamHam_Spawn"player""Ham_PlayerSpawn_Post");
        
RegisterHamHam_TakeDamage"player""Ham_TakeDamage_Pre");
        
RegisterHamHam_TakeDamage"player""Ham_TakeDamage_Post");
        
RegisterHamHam_Item_PreFrame"player""Ham_PlayerResetSpeedPost"1);
                
        
register_clcmd"say /gang""Cmd_Gang" );
        
register_clcmd"gang_name""Cmd_CreateGang" );
        
register_clcmd"say /getcash""CmdGetCash" );
        
        
register_event"DeathMsg""Event_DeathMsg""a" );
        
        
LoadGangs();
        }
    
    public 
plugin_natives()
    {
        
register_native"get_user_gangcash""CmdGetCash" );
    }


        public 
CmdGetCash(id)
        {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        new 
iTotal get_pcvar_numg_pGetCashPerLevel ) * aDataGangGetCash ]
        if ( 
bActiveGetid ] )
        {
            
ColorChatidNORMAL"^4You need to wait until the^3 Next Round^1 to^4 Get Cash^1!" );
            return 
1;
        }
        
        if( 
g_iGangid ] < -)
        {
            
ColorChatidNORMAL"^4You Need To Be In ^3Gang ^4To Use GetCash!");
            return 
1;
        }
            
        
cs_set_user_moneyidcs_get_user_moneyid ) + ( iTotal 50 ) );
            
        
bActiveGetid ] = true;
        
        
ColorChatidNORMAL"^3You received^4 %i Cash^1,^3 Good Luck^1."iTotal 50 );
        
        return 
1;
    }
    public 
client_disconnectid )
    {
        
g_iGangid ] = -1;
    }

    public 
client_putinserverid )
    {
        
g_iGangid ] = get_user_gangid );
    }

    public 
plugin_end()
    {
        
SaveGangs();
        
sqlv_closeg_hVault );
    }

    public 
Event_DeathMsg()
    {
        new 
iKiller read_data);
        new 
iVictim read_data);
        
        if( !
is_user_aliveiKiller ) || cs_get_user_teamiVictim ) != CS_TEAM_CT || cs_get_user_teamiKiller ) != CS_TEAM_T )
            return 
PLUGIN_CONTINUE;
        
        new 
iTotal get_pcvar_numg_pPointsPerKill ) + ( bool:read_data) ? get_pcvar_numg_pHeadshotBonus ) : );
        
        if( 
g_iGangiKiller ] > -)
        {
            new 
aDataGangInfo ];
            
ArrayGetArrayg_aGangsg_iGangiKiller ], aData );
            
aDataGangKills ]++;
            
ArraySetArrayg_aGangsg_iGangiKiller ], aData );
            
            
iTotal += iTotal * ( aDataGangStealing ] * get_pcvar_numg_pStealingPerLevel ) );
        }
        
        
cs_set_user_moneyiKillercs_get_user_moneyiKiller ) + iTotal );
        
        return 
PLUGIN_CONTINUE;
    }
    public 
Ham_PlayerSpawn_Postid )
    {
        if( !
is_user_aliveid ) || cs_get_user_teamid ) == CS_TEAM_SPECTATOR )
            return 
HAM_IGNORED;
            
        if( 
g_iGangid ] == -)
        {
            return 
HAM_IGNORED;
        }
        
set_task(1.0"GiveHP"id)
        
        
bActiveGetid ] = false;
        return 
HAM_IGNORED;
    }
    public 
GiveHP(id)
    {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        new 
iHealth get_user_healthid ) + aDataGangHP ] * get_pcvar_numg_pHealthPerLevel );
        
set_user_healthidiHealth );
    }
    public 
Ham_TakeDamage_PreiVictimiInflictoriAttackerFloat:flDamageiBits )
    {
        if( !
is_user_aliveiAttacker ) || cs_get_user_teamiAttacker ) == CS_TEAM_SPECTATOR )
            return 
HAM_IGNORED;
            
        if( 
g_iGangiAttacker ] == -)
            return 
HAM_IGNORED;
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangiAttacker ], aData );
        
        
SetHamParamFloat4flDamage + ( get_pcvar_numg_pDamagePerLevel ) * ( aDataGangDamage ] ) ) );
        
        return 
HAM_IGNORED;
    }

    public 
Ham_TakeDamage_PostiVictimiInflictoriAttackerFloat:flDamageiBits )
    {
        if( !
is_user_aliveiAttacker ) || g_iGangiAttacker ] == -|| get_user_weaponiAttacker ) != CSW_KNIFE || cs_get_user_teamiAttacker ) != CS_TEAM_T  )
        {
            return 
HAM_IGNORED;
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangiAttacker ], aData );
        
        new 
iChance aDataGangWeaponDrop ] * get_pcvar_numg_pWeaponDropPerLevel );
        
        if( 
iChance == )
            return 
HAM_IGNORED;
        
        new 
bool:bDrop = ( random_num1100 ) <= iChance );
        
        if( 
bDrop )
            
client_cmdiVictim"drop" );
        
        return 
HAM_IGNORED;
    }

    public 
Ham_PlayerResetSpeedPostid )
    {
        if( 
g_iGangid ] == -|| !is_user_aliveid ) || cs_get_user_teamid ) == CS_TEAM_SPECTATOR )
        {
            return 
HAM_IGNORED;
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        if( 
aDataGangStamina ] > && get_user_maxspeedid ) > 1.0 )
            
set_user_maxspeedid250.0 + ( aDataGangStamina ] * get_pcvar_numg_pStaminaPerLevel ) ) );
            
        return 
HAM_IGNORED;
    }

    public 
Cmd_Gangid )
    {    
        if( !
is_user_connectedid ) )
            return 
PLUGIN_HANDLED;
        
        static 
szMenu512 ], iLenaDataGangInfo ], iKeysiStatus;
        
        
iKeys MENU_KEY_0 MENU_KEY_4;
        
        
iStatus getStatusidg_iGangid ] );
        
        if( 
g_iGangid ] > -)
        {
            
ArrayGetArrayg_aGangsg_iGangid ], aData );
            
iLen     =     formatexszMenucharsmaxszMenu ),  "\r[AMXX] \yGang Menu^n\wCurrent Gang:\y %s^n"aDataGangName ] );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\yCash: \w%i^n^n"cs_get_user_moneyid ) );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r1. \dCreate a Gang [%i Cash]^n"get_pcvar_numg_pCreateCost ) );
        }
        
        else
        {
            
iLen     =     formatexszMenucharsmaxszMenu ),  "\r[AMXX] \yGang Menu^n\wCurrent Gang:\r None^n" );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\yCash: \w%i^n^n"cs_get_user_moneyid ) );
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r1. \wCreate a Gang [%i Cash]^n"get_pcvar_numg_pCreateCost ) );
            
            
iKeys |= MENU_KEY_1;
        }
        
        
        if( 
iStatus STATUS_MEMBER && g_iGangid ] > -&& get_pcvar_numg_pMaxMembers ) > aDataNumMembers ] )
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r2. \wInvite Player to Gang^n" );
            
iKeys |= MENU_KEY_2;
        }
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r2. \dInvite Player to Gang^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r3. \wSkills^n" );
            
iKeys |= MENU_KEY_3;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r3. \dSkills^n" );
            
        
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r4. \wTop-10^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r5. \wLeave Gang^n" );
            
iKeys |= MENU_KEY_5;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r5. \dLeave Gang^n" );
        
        
        if( 
iStatus STATUS_MEMBER )
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r6. \wGang Admin Menu^n" );
            
iKeys |= MENU_KEY_6;
        }
        
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r6. \dGang Admin Menu^n" );
        
        if( 
g_iGangid ] > -)
        {
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r7. \wOnline Members^n" );
            
iKeys |= MENU_KEY_7;
        }
            
        else
            
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"\r7. \dOnline Members^n" );
        
        
iLen    +=    formatexszMenuiLen ], charsmaxszMenu ) - iLen"^n\r0. \wExit" );
        
        
show_menuidiKeysszMenu, -1"Gang Menu" );
        
        return 
PLUGIN_CONTINUE;
    }

    public 
GangMenu_HandleridiKey )
    {
        switch( ( 
iKey ) % 10 )
        {
            case 
0: return PLUGIN_HANDLED;
            
            case 
1
            {
                if( 
get_pcvar_numg_pAdminCreate ) && get_user_flagsid ) & ADMIN_CREATE )
                {
                    
client_cmdid"messagemode gang_name" );
                }
                
                else if( 
cs_get_user_moneyid ) < get_pcvar_numg_pCreateCost ) )
                {
                    
ColorChatidNORMAL"%s You do not have enough points to create a gang!"g_szPrefix );
                    return 
PLUGIN_HANDLED;
                }
                
                else
                    
client_cmdid"messagemode gang_name" );
            }
            
            case 
2:
            {
                
ShowInviteMenuid );
            }
            
            case 
3:
            {
                
ShowSkillsMenuid );
            }
            
            case 
4:
            {
                
Cmd_Top10id );
            }
            
            case 
5:
            {
                
ShowLeaveConfirmMenuid );
            }
            
            case 
6:
            {
                
ShowLeaderMenuid );
            }
            
            case 
7:
            {
                
ShowMembersMenuid );
            }
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
Cmd_CreateGangid )
    {
        new 
bool:bAdmin false;
        
        if( 
get_pcvar_numg_pAdminCreate ) && get_user_flagsid ) & ADMIN_CREATE )
        {
            
bAdmin true;
        }
        
        else if( 
cs_get_user_moneyid ) < get_pcvar_numg_pCreateCost ) )
        {
            
ColorChatidNORMAL"%s You do not have enough points to create a gang."g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        else if( 
g_iGangid ] > -)
        {
            
ColorChatidNORMAL"%s You cannot create a gang if you are already in one!"g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        else if( 
cs_get_user_teamid ) != CS_TEAM_T )
        {
            
ColorChatidNORMAL"%s Only ^03prisoners ^01can create gangs!"g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        new 
szArgs60 ];
        
read_argsszArgscharsmaxszArgs ) );
        
        
remove_quotesszArgs );
        
        if( 
TrieKeyExistsg_tGangNamesszArgs ) )
        {
            
ColorChatidNORMAL"%s That gang with that name already exists."g_szPrefix );
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
aDataGangInfo ];
        
        
aDataGangName ]         = szArgs;
        
aDataGangHP ]         = 0;
        
aDataGangStealing ]     = 0;
        
aDataGangStamina ]     = 0;
        
aDataGangWeaponDrop ] = 0;
        
aDataGangDamage ]     = 0;
        
aDataNumMembers ]     = 0;
        
aDataGangGetCash ]    = 0;
        
aDataGangMembers ]     = _:TrieCreate();
        
        
ArrayPushArrayg_aGangsaData );
        
        if( !
bAdmin )
            
cs_set_user_moneyidcs_get_user_moneyid ) - get_pcvar_num(g_pCreateCost));
        
        
set_user_gangidArraySizeg_aGangs ) - 1STATUS_LEADER );
        
        
ColorChatidNORMAL"%s You have successfully created gang '^03%s^01'."g_szPrefixszArgs );
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowInviteMenuid )
    {    
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
szInfo], hMenu;
        
hMenu menu_create"Choose a Player to Invite:""InviteMenu_Handler" );
        new 
szName32 ];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            
            if( 
iPlayer == id || g_iGangiPlayer ] == g_iGangid ] || cs_get_user_teamiPlayer ) == CS_TEAM_SPECTATOR )
                continue;
            
            if( 
g_iGangiPlayer ] > -)
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszInfocharsmaxszInfo ) );
            
            
menu_additemhMenuszNameszInfo );
        }
            
        
menu_displayidhMenu);
    }

    public 
InviteMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
szData], iAccesshCallbackszName32 ];
        
menu_item_getinfohMenuiItemiAccessszData5szName31hCallback );
        
        new 
iPlayer str_to_numszData );

        if( !
is_user_connectediPlayer ) )
            return 
PLUGIN_HANDLED;
            
        
ShowInviteConfirmMenuidiPlayer );

        
ColorChatidNORMAL"%s You have successfully invited %s to join your gang."g_szPrefixszName );
        
        
Cmd_Gangid );
        return 
PLUGIN_HANDLED;
    }

    public 
ShowInviteConfirmMenuidiPlayer )
    {
        new 
szName32 ];
        
get_user_nameidszNamecharsmaxszName ) );
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        new 
szMenuTitle128 ];
        
formatexszMenuTitlecharsmaxszMenuTitle ), "%s Invited You to Join    %s"szNameaDataGangName ] );
        new 
hMenu menu_createszMenuTitle"InviteConfirmMenu_Handler" );
        
        new 
szInfo];
        
num_to_strg_iGangid ], szInfo);
        
        
menu_additemhMenu"Accept Invitation"szInfo );
        
menu_additemhMenu"Decline Invitation""-1" );
        
        
menu_displayiPlayerhMenu);    
    }

    public 
InviteConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        new 
iGang str_to_numszData );
        
        if( 
iGang == -)
            return 
PLUGIN_HANDLED;
        
        if( 
getStatusidg_iGangid ] ) == STATUS_LEADER )
        {
            
ColorChatidNORMAL"%s You cannot leave your gang while you are the leader."g_szPrefix );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangidiGang );
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        
ColorChatidNORMAL"%s You have successfully joined the gang ^03%s^01."g_szPrefixaDataGangName ] );
        
        return 
PLUGIN_HANDLED;
    }
        

    public 
ShowSkillsMenuid )
    {    
        static 
szMenu512 ], iLeniKeysaDataGangInfo ];
        
        if( !
iKeys )
        {
            
iKeys MENU_KEY_1 MENU_KEY_2 MENU_KEY_3 MENU_KEY_4 MENU_KEY_5 MENU_KEY_6 MENU_KEY_7 |MENU_KEY_0;
        }
        
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        
iLen    =    formatexszMenucharsmaxszMenu ), "\ySkills Menu^n^n" );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r1. \wHealth Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pHealthCost ), aDataGangHP ], get_pcvar_numg_pHealthMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r2. \wStealing Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pStealingCost ), aDataGangStealing ], get_pcvar_numg_pStealingMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r3. \wDamage Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pDamageCost ), aDataGangDamage ], get_pcvar_numg_pDamageMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r4. \wWeapon Drop Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pWeaponDropCost ), aDataGangWeaponDrop ], get_pcvar_numg_pWeaponDropMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r5. \wSpeed Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pStaminaCost ), aDataGangStamina ], get_pcvar_numg_pStaminaMax ) );
        
iLen    +=    formatexszMenuiLen ], 511 iLen"\r6. \wGetCash Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n"get_pcvar_numg_pGetCashCost ), aDataGangGetCash ], get_pcvar_numg_pGetCashMax ) );
        
        
iLen    +=    formatexszMenuiLen ], 511 iLen"^n\r0. \wExit" );
        
        
show_menuidiKeysszMenu, -1"Skills Menu" );
    }

    public 
SkillsMenu_HandleridiKey )
    {
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsg_iGangid ], aData );
        
        switch( ( 
iKey ) % 10 )
        {
            case 
0
            {
                
Cmd_Gangid );
                return 
PLUGIN_HANDLED;
            }
            
            case 
1:
            {
                if( 
aDataGangHP ] == get_pcvar_numg_pHealthMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangHP ] > get_pcvar_numg_pHealthMax ) )
                {
                    
aDataGangHP ] = get_pcvar_numg_pHealthMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pHealthCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangHP ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            
            case 
2:
            {
                if( 
aDataGangStealing ] == get_pcvar_numg_pStealingMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangStealing ] > get_pcvar_numg_pStealingMax ) )
                {
                    
aDataGangStealing ] = get_pcvar_numg_pStealingMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pStealingCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangStealing ]++;
                
                
cs_set_user_moneyidiRemaining);
            }
            
            case 
3:
            {
                if( 
aDataGangDamage ] == get_pcvar_numg_pDamageMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangDamage ] > get_pcvar_numg_pDamageMax ) )
                {
                    
aDataGangDamage ] = get_pcvar_numg_pDamageMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pDamageCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangDamage ]++;
                
                
cs_set_user_moneyidiRemaining);
            }
            
            case 
4:
            {
                if( 
aDataGangWeaponDrop ] == get_pcvar_numg_pWeaponDropMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangWeaponDrop ] > get_pcvar_numg_pWeaponDropMax ) )
                {
                    
aDataGangWeaponDrop ] = get_pcvar_numg_pWeaponDropMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pWeaponDropCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangWeaponDrop ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            
            case 
5:
            {
                if( 
aDataGangStamina ] == get_pcvar_numg_pStaminaMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangStamina ] > get_pcvar_numg_pStaminaMax ) )
                {
                    
aDataGangStamina ] = get_pcvar_numg_pStaminaMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pStaminaCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangStamina ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
            case 
6:
            {
                if( 
aDataGangGetCash ] == get_pcvar_numg_pGetCashMax ) )
                {
                    
ColorChatidNORMAL"%s Your gang is already at the max level for that skill."g_szPrefix  );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                else if( 
aDataGangGetCash ] > get_pcvar_numg_pGetCashMax ) )
                {
                    
aDataGangGetCash ] = get_pcvar_numg_pGetCashMax );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                new 
iRemaining cs_get_user_moneyid ) - get_pcvar_numg_pGetCashCost );
                
                if( 
iRemaining )
                {
                    
ColorChatidNORMAL"%s You don't have enough points for that."g_szPrefix );
                    
ShowSkillsMenuid );
                    return 
PLUGIN_HANDLED;
                }
                
                
aDataGangGetCash ]++;
                
                
cs_set_user_moneyidiRemaining );
            }
        }
        
        
ArraySetArrayg_aGangsg_iGangid ], aData );
        
        new 
iPlayers32 ], iNumiPlayer;
        new 
szName32 ];
        
get_playersiPlayersiNum );
        
        for( new 
0iNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
iPlayer == id || g_iGangiPlayer ] != g_iGangid ] )
                continue;
                
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has just upgraded one of your gang's skills."g_szPrefixszName );
        }
        
        
ColorChatidNORMAL"%s You have successfully upgraded your gang."g_szPrefix );
        
        
ShowSkillsMenuid );
        
        return 
PLUGIN_HANDLED;
    }
            
        
    public 
Cmd_Top10id )
    {
        new 
iSize ArraySizeg_aGangs );
        
        new 
iOrder100 ][ ];
        
        new 
aDataGangInfo ];
        
        for( new 
0iSizei++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            
iOrder][ ] = i;
            
iOrder][ ] = aDataGangKills ];
        }
        
        
SortCustom2DiOrderiSize"Top10_Sort" );
        
        new 
szMessage2048 ];
        
formatexszMessagecharsmaxszMessage ), "<body bgcolor=#000000><font color=#FFB000><pre>" );
        
formatszMessagecharsmaxszMessage ), "%s%2s %-22.22s %7s %4s %10s %9s %9s %11s %8s^n"szMessage"#""Name""Kills""HP""Stealing"
            
"GetCash""Stamina""WeaponDrop""Damage" );
            
        for( new 
0min10iSize ); i++ )
        {
            
ArrayGetArrayg_aGangsiOrder][ ], aData );
            
            
formatszMessagecharsmaxszMessage ), "%s%-2d %22.22s %7d %4d %10d %9d %9d %11d %8d^n"szMessage1aDataGangName ], 
            
aDataGangKills ], aDataGangHP ], aDataGangStealing ], aDataGangGetCash ], aDataGangStamina], aDataGangWeaponDrop ], aDataGangDamage ] );
        }
        
        
show_motdidszMessage"Gang Top 10" );
    }

    public 
Top10_Sort( const iElement1[ ], const iElement2[ ], const iArray[ ], szData[], iSize 
    {
        if( 
iElement1] > iElement2] )
            return -
1;
        
        else if( 
iElement1] < iElement2] )
            return 
1;
        
        return 
0;
    }

    public 
ShowLeaveConfirmMenuid )
    {
        new 
hMenu menu_create"Are you sure you want to leave?""LeaveConfirmMenu_Handler" );
        
menu_additemhMenu"Yes, Leave Now""0" );
        
menu_additemhMenu"No, Don't Leave""1" );
        
        
menu_displayidhMenu);
    }

    public 
LeaveConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0
            {
                if( 
getStatusidg_iGangid ] ) == STATUS_LEADER )
                {
                    
ColorChatidNORMAL"%s You must transfer leadership before leaving this gang."g_szPrefix );
                    
Cmd_Gangid );
                    
                    return 
PLUGIN_HANDLED;
                }
                
                
ColorChatidNORMAL"%s You have successfully left your gang."g_szPrefix );
                
set_user_gangid, -);
                
Cmd_Gangid );
            }
            
            case 
1Cmd_Gangid );
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowLeaderMenuid )
    {
        new 
hMenu menu_create"Gang Leader Menu""LeaderMenu_Handler" );
        
        new 
iStatus getStatusidg_iGangid ] );
        
        if( 
iStatus == STATUS_LEADER )
        {
            
menu_additemhMenu"Disband Gang""0" );
            
menu_additemhMenu"Transfer Leadership""1" );
            
menu_additemhMenu"Add An Admin""4" );
            
menu_additemhMenu"Remove An Admin""5" );
        }
        
        
menu_additemhMenu"Kick From Gang""2" );
        
menu_additemhMenu"Change Gang Name""3" );
        
        
        
menu_displayidhMenu);
    }

    public 
LeaderMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData];
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0:
            {
                
ShowDisbandConfirmMenuid );
            }
            
            case 
1:
            {
                
ShowTransferMenuid );
            }
            
            case 
2:
            {
                
ShowKickMenuid );
            }
            
            case 
3:
            {
                
client_cmdid"messagemode New_Name" );
            }
            
            case 
4:
            {
                
ShowAddAdminMenuid );
            }
            
            case 
5:
            {
                
ShowRemoveAdminMenuid );
            }
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowDisbandConfirmMenuid )
    {
        new 
hMenu menu_create"Are you sure you want to disband the gang?""DisbandConfirmMenu_Handler" );
        
menu_additemhMenu"Yes, Disband Now""0" );
        
menu_additemhMenu"No, Don't Disband""1" );
        
        
menu_displayidhMenu);
    }

    public 
DisbandConfirmMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
            return 
PLUGIN_HANDLED;
        
        new 
szData], iAccesshCallback;
        
menu_item_getinfohMenuiItemiAccessszData5__hCallback );
        
        switch( 
str_to_numszData ) )
        {
            case 
0
            {
                
                
ColorChatidNORMAL"%s You have successfully disbanded your gang."g_szPrefix );
                
                new 
iPlayers32 ], iNum;
                
                
get_playersiPlayersiNum );
                
                new 
iPlayer;
                
                for( new 
0iNumi++ )
                {
                    
iPlayer iPlayers];
                    
                    if( 
iPlayer == id )
                        continue;
                    
                    if( 
g_iGangid ] != g_iGangiPlayer ] )
                        continue;

                    
ColorChatiPlayerNORMAL"%s Your gang has been disband by its leader."g_szPrefix );
                    
set_user_gangiPlayer, -);
                }
                
                new 
iGang g_iGangid ];
                
                
set_user_gangid, -);
                
                
ArrayDeleteItemg_aGangsiGang );

                
Cmd_Gangid );
            }
            
            case 
1Cmd_Gangid );
        }
        
        return 
PLUGIN_HANDLED;
    }

    public 
ShowTransferMenuid )
    {
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum"e""TERRORIST" );
        
        new 
hMenu menu_create"Transfer Leadership to:""TransferMenu_Handler" );
        new 
szName32 ], szData];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || id == iPlayer )
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
TransferMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszData5szNamecharsmaxszName ), hCallback );
        
        new 
iPlayer str_to_numszData );
        
        if( !
is_user_connectediPlayer ) )
        {
            
ColorChatidNORMAL"%s That player is no longer connected."g_szPrefix );
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiPlayerg_iGangid ], STATUS_LEADER );
        
set_user_gangidg_iGangid ], STATUS_ADMIN );
        
        
Cmd_Gangid );
        
        new 
iPlayers32 ], iNumiTemp;
        
get_playersiPlayersiNum );

        for( new 
0iNumi++ )
        {
            
iTemp iPlayers];
            
            if( 
iTemp == iPlayer )
            {
                
ColorChatiTempNORMAL"%s You are the new leader of your gang."g_szPrefix );
                continue;
            }
            
            else if( 
g_iGangiTemp ] != g_iGangid ] )
                continue;
            
            
ColorChatiTempNORMAL"%s ^03%s^01 is the new leader of your gang."g_szPrefixszName );
        }
        
        return 
PLUGIN_HANDLED;
    }


    public 
ShowKickMenuid )
    {
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
hMenu menu_create"Kick Player From Gang:""KickMenu_Handler" );
        new 
szName32 ], szData];
        
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || id == iPlayer )
                continue;
                
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
KickMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ], KickerName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszData5szNamecharsmaxszName ), hCallback );
        
        new 
iPlayer str_to_numszData );
        
        
get_user_name(idKickerName31)
        
        if( !
is_user_connectediPlayer ) )
        {
            
ColorChatidNORMAL"%s That player is no longer connected."g_szPrefix );
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        else if(
getStatusiPlayerg_iGangiPlayer ] ) == STATUS_LEADER && !get_pcvar_numg_pLeadersKick )) 
        {
            
ColorChatidNORMAL"%s That player Is The Leader!."g_szPrefix );
            
ColorChatiPlayerNORMAL"%s %s Tried To Kick You From Your Own Gang! Get Revenge"g_szPrefixKickerName);
            
ShowTransferMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiPlayer, -);
        
        
Cmd_Gangid );
        
        new 
iPlayers32 ], iNumiTemp;
        
get_playersiPlayersiNum );
        
        for( new 
0iNumi++ )
        {
            
iTemp iPlayers];
            
            if( 
iTemp == iPlayer || g_iGangiTemp ] != g_iGangid ] )
                continue;
            
            
ColorChatiTempNORMAL"%s ^03%s^01 has been kicked from the gang."g_szPrefixszName );
        }
        
        
ColorChatiPlayerNORMAL"%s You have been kicked from your gang."g_szPrefix );
        
        return 
PLUGIN_HANDLED;
    }

    public 
ChangeName_Handlerid )
    {
        if( 
g_iGangid ] == -|| getStatusidg_iGangid ] ) == STATUS_MEMBER )
        {
            return;
        }
        
        new 
iGang g_iGangid ];
        
        new 
szArgs64 ];
        
read_argsszArgscharsmaxszArgs ) );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
bool:bInGang33 ];
        new 
iStatus33 ];
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] )
                continue;
        
            
bInGangiPlayer ] = true;
            
iStatusiPlayer ] = getStatusidiGang );
            
            
set_user_gangiPlayer, -);
        }
        
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        
aDataGangName ] = szArgs;
        
        
ArraySetArrayg_aGangsiGangaData );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( !
bInGangiPlayer ] )
                continue;
            
            
set_user_gangiPlayeriGangiStatusid ] );
        }
    }
        
    public 
ShowAddAdminMenuid )
    {
        new 
iPlayers32 ], iNum;
        new 
szName32 ], szData];
        new 
hMenu menu_create"Choose a Player to Promote:""AddAdminMenu_Handler" );
        
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] || getStatusiPlayerg_iGangiPlayer ] ) > STATUS_MEMBER )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
AddAdminMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszDatacharsmaxszData ), szNamecharsmaxszName ), hCallback );
        
        new 
iChosen str_to_numszData );
        
        if( !
is_user_connectediChosen ) )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiChoseng_iGangid ], STATUS_LEADER );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || iPlayer == iChosen )
                continue;
            
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has been promoted to an admin of your gang."g_szPrefixszName );
        }
        
        
ColorChatiChosenNORMAL"%s ^01You have been promoted to an admin of your gang."g_szPrefix );
        
        
menu_destroyhMenu );
        return 
PLUGIN_HANDLED;
    }

    public 
ShowRemoveAdminMenuid )
    {
        new 
iPlayers32 ], iNum;
        new 
szName32 ], szData];
        new 
hMenu menu_create"Choose a Player to Demote:""RemoveAdminMenu_Handler" );
        
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] || getStatusiPlayerg_iGangiPlayer ] ) != STATUS_ADMIN )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            
num_to_striPlayerszDatacharsmaxszData ) );
            
            
menu_additemhMenuszNameszData );
        }
        
        
menu_displayidhMenu);
    }

    public 
RemoveAdminMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        new 
iAccesshCallbackszData], szName32 ];
        
        
menu_item_getinfohMenuiItemiAccessszDatacharsmaxszData ), szNamecharsmaxszName ), hCallback );
        
        new 
iChosen str_to_numszData );
        
        if( !
is_user_connectediChosen ) )
        {
            
menu_destroyhMenu );
            
ShowLeaderMenuid );
            return 
PLUGIN_HANDLED;
        }
        
        
set_user_gangiChoseng_iGangid ], STATUS_MEMBER );
        
        new 
iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangiPlayer ] != g_iGangid ] || iPlayer == iChosen )
                continue;
            
            
ColorChatiPlayerNORMAL"%s ^03%s ^01has been demoted from being an admin of your gang."g_szPrefixszName );
        }
        
        
ColorChatiChosenNORMAL"%s ^01You have been demoted from being an admin of your gang."g_szPrefix );
        
        
menu_destroyhMenu );
        return 
PLUGIN_HANDLED;
    }
        
    public 
ShowMembersMenuid )
    {
        new 
szName64 ], iPlayers32 ], iNum;
        
get_playersiPlayersiNum );
        
        new 
hMenu menu_create"Online Members:""MemberMenu_Handler" );
        
        for( new 
0iPlayeriNumi++ )
        {
            
iPlayer iPlayers];
            
            if( 
g_iGangid ] != g_iGangiPlayer ] )
                continue;
            
            
get_user_nameiPlayerszNamecharsmaxszName ) );
            
            switch( 
getStatusiPlayerg_iGangid ] ) )
            {
                case 
STATUS_MEMBER:
                {
                    
addszNamecharsmaxszName ), " \r[Member]" );
                }
                
                case 
STATUS_ADMIN:
                {
                    
addszNamecharsmaxszName ), " \r[Admin]" );
                }
                
                case 
STATUS_LEADER:
                {
                    
addszNamecharsmaxszName ), " \r[Leader]" );
                }
            }

            
menu_additemhMenuszName );
        }
        
        
menu_displayidhMenu);
    }

    public 
MemberMenu_HandleridhMenuiItem )
    {
        if( 
iItem == MENU_EXIT )
        {
            
menu_destroyhMenu );
            
Cmd_Gangid );
            return 
PLUGIN_HANDLED;
        }
        
        
menu_destroyhMenu );
        
        
ShowMembersMenuid )
        return 
PLUGIN_HANDLED;
    }

    
// Credits to Tirant from zombie mod and xOR from xRedirect
    
public LoadGangs()
    {
        new 
szConfigsDir60 ];
        
get_configsdirszConfigsDircharsmaxszConfigsDir ) );
        
addszConfigsDircharsmaxszConfigsDir ), "/jb_gangs.ini" );
        
        new 
iFile fopenszConfigsDir"rt" );
        
        new 
aDataGangInfo ];
        
        new 
szBuffer512 ], szData], szValue], iiCurGang;
        
        while( !
feofiFile ) )
        {
            
fgetsiFileszBuffercharsmaxszBuffer ) );
            
            
trimszBuffer );
            
remove_quotesszBuffer );
            
            if( !
szBuffer] || szBuffer] == ';' 
            {
                continue;
            }
            
            if( 
szBuffer] == '[' && szBufferstrlenszBuffer ) - ] == ']' )
            {
                
copyaDataGangName ], strlenszBuffer ) - 2szBuffer] );
                
aDataGangHP ] = 0;
                
aDataGangStealing ] = 0;
                
aDataGangStamina ] = 0;
                
aDataGangWeaponDrop ] = 0;
                
aDataGangDamage ] = 0;
                
aDataGangGetCash ] = 0;
                
aDataGangKills ] = 0;
                
aDataNumMembers ] = 0;
                
                
aDataGangMembers ] = _:TrieCreate();
                
                if( 
TrieKeyExistsg_tGangNamesaDataGangName ] ) )
                {
                    new 
szError256 ];
                    
formatexszErrorcharsmaxszError ), "[JB Gangs] Gang already exists: %s"aDataGangName ] );
                    
set_fail_stateszError );
                }
                
                
ArrayPushArrayg_aGangsaData );
                
                
TrieSetCellg_tGangNamesaDataGangName ], iCurGang );

                
log_amx"Gang Created: %s"aDataGangName ] );
                
                
iCurGang++;
                
                continue;
            }
            
            
strtokszBufferszData31szValue511'=' );
            
trimszData );
            
trimszValue );
            
            if( 
TrieGetCellg_tGangValuesszData) )
            {
                
ArrayGetArrayg_aGangsiCurGang 1aData );
                
                switch( 
)
                {                    
                    case 
VALUE_HP:
                        
aDataGangHP ] = str_to_numszValue );
                    
                    case 
VALUE_STEALING:
                        
aDataGangStealing ] = str_to_numszValue );
                    
                    case 
VALUE_STAMINA:
                        
aDataGangStamina ] = str_to_numszValue );
                    
                    case 
VALUE_WEAPONDROP:
                        
aDataGangWeaponDrop ] = str_to_numszValue );
                        
                    case 
VALUE_DAMAGE:
                        
aDataGangDamage ] = str_to_numszValue );
                        
                    case 
VALUE_GETCASH:
                        
aDataGangGetCash ] = str_to_numszValue );
                    
                    case 
VALUE_KILLS:
                        
aDataGangKills ] = str_to_numszValue );
                }
                
                
ArraySetArrayg_aGangsiCurGang 1aData );
            }
        }
        
        new Array:
aSQL;
        
sqlv_read_all_exg_hVaultaSQL );
        
        new 
aVaultDataSQLVaultEntryEx ];
        
        new 
iGang;
        
        for( 
0ArraySizeaSQL ); i++ )
        {
            
ArrayGetArrayaSQLiaVaultData );
            
            if( 
TrieGetCellg_tGangNamesaVaultDataSQLVEx_Key2 ], iGang ) )
            {
                
ArrayGetArrayg_aGangsiGangaData );
                
                
TrieSetCellaDataGangMembers ], aVaultDataSQLVEx_Key1 ], str_to_numaVaultDataSQLVEx_Data ] ) );
                
                
aDataNumMembers ]++;
                
                
ArraySetArrayg_aGangsiGangaData );
            }
        }
        
        
fcloseiFile );
    }

    public 
SaveGangs()
    {
        new 
szConfigsDir64 ];
        
get_configsdirszConfigsDircharsmaxszConfigsDir ) );
        
        
addszConfigsDircharsmaxszConfigsDir ), "/jb_gangs.ini" );
        
        if( 
file_existsszConfigsDir ) )
            
delete_fileszConfigsDir );
            
        new 
iFile fopenszConfigsDir"wt" );
            
        new 
aDataGangInfo ];
        
        new 
szBuffer256 ];

        for( new 
0ArraySizeg_aGangs ); i++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            
formatexszBuffercharsmaxszBuffer ), "[%s]^n"aDataGangName ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "HP=%i^n"aDataGangHP ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Stealing=%i^n"aDataGangStealing ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Stamina=%i^n"aDataGangStamina ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "WeaponDrop=%i^n"aDataGangWeaponDrop ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Damage=%i^n"aDataGangDamage ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "GetCash=%i^n"aDataGangGetCash ] );
            
fputsiFileszBuffer );
            
            
formatexszBuffercharsmaxszBuffer ), "Kills=%i^n^n"aDataGangKills ] );
            
fputsiFileszBuffer );
        }
        
        
fcloseiFile );
    }
        
        

    
set_user_gangidiGangiStatus=STATUS_MEMBER )
    {
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );

        new 
aDataGangInfo ];
        
        if( 
g_iGangid ] > -)
        {
            
ArrayGetArrayg_aGangsg_iGangid ], aData );
            
TrieDeleteKeyaDataGangMembers ], szAuthID );
            
aDataNumMembers ]--;
            
ArraySetArrayg_aGangsg_iGangid ], aData );
            
            
sqlv_remove_exg_hVaultszAuthIDaDataGangName ] );
        }

        if( 
iGang > -)
        {
            
ArrayGetArrayg_aGangsiGangaData );
            
TrieSetCellaDataGangMembers ], szAuthIDiStatus );
            
aDataNumMembers ]++;
            
ArraySetArrayg_aGangsiGangaData );
            
            
sqlv_set_num_exg_hVaultszAuthIDaDataGangName ], iStatus );        
        }

        
g_iGangid ] = iGang;
        
        return 
1;
    }
        
    
get_user_gangid )
    {
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );
        
        new 
aDataGangInfo ];
        
        for( new 
0ArraySizeg_aGangs ); i++ )
        {
            
ArrayGetArrayg_aGangsiaData );
            
            if( 
TrieKeyExistsaDataGangMembers ], szAuthID ) )
                return 
i;
        }
        
        return -
1;
    }
                
    
getStatusidiGang )
    {
        if( !
is_user_connectedid ) || iGang == -)
            return 
STATUS_NONE;
            
        new 
aDataGangInfo ];
        
ArrayGetArrayg_aGangsiGangaData );
        
        new 
szAuthID35 ];
        
get_user_authididszAuthIDcharsmaxszAuthID ) );
        
        new 
iStatus;
        
TrieGetCellaDataGangMembers ], szAuthIDiStatus );
        
        return 
iStatus;
    } 


waza123a 01-09-2014 07:12

Re: [HELP ] GANG not Create
 
yes

Snitch 01-18-2014 16:44

Re: [HELP ] GANG not Create
 
i have fixed the getcash..

af


All times are GMT -4. The time now is 10:10.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.