|
Veteran Member
Join Date: Sep 2013
Location: Kazakhstan
|

01-09-2014
, 07:10
Re: [HELP ] GANG not Create
|
#5
|
Quote:
Originally Posted by waza123a
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, GangName[ 64 ], 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_iGang[ 33 ]; new bActiveGet[ 33 ];
public plugin_init() { register_plugin( "Jailbreak Gang System", g_szVersion, "H3avY Ra1n" ); g_aGangs = ArrayCreate( GangInfo );
g_tGangValues = TrieCreate(); g_tGangNames = TrieCreate(); g_hVault = sqlv_open_local( "jb_gangs", false ); sqlv_init_ex( g_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_szVersion, FCVAR_SPONLY | FCVAR_SERVER ); register_menu( "Gang Menu", 1023, "GangMenu_Handler" ); register_menu( "Skills Menu", 1023, "SkillsMenu_Handler" ); for( new i = 0; i < sizeof g_szGangValues; i++ ) { TrieSetCell( g_tGangValues, g_szGangValues[ i ], i ); }
RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1 ); RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0 ); RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Post", 1 ); RegisterHam( Ham_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 aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); new iTotal = get_pcvar_num( g_pGetCashPerLevel ) * aData[ GangGetCash ] if ( bActiveGet[ id ] ) { ColorChat( id, NORMAL, "^4You need to wait until the^3 Next Round^1 to^4 Get Cash^1!" ); return 1; } if( g_iGang[ id ] < -1 ) { ColorChat( id, NORMAL, "^4You Need To Be In ^3Gang ^4To Use GetCash!"); return 1; } cs_set_user_money( id, cs_get_user_money( id ) + ( iTotal + 50 ) ); bActiveGet[ id ] = true; ColorChat( id, NORMAL, "^3You received^4 %i Cash^1,^3 Good Luck^1.", iTotal + 50 ); return 1; } public client_disconnect( id ) { g_iGang[ id ] = -1; }
public client_putinserver( id ) { g_iGang[ id ] = get_user_gang( id ); }
public plugin_end() { SaveGangs(); sqlv_close( g_hVault ); }
public Event_DeathMsg() { new iKiller = read_data( 1 ); new iVictim = read_data( 2 ); if( !is_user_alive( iKiller ) || cs_get_user_team( iVictim ) != CS_TEAM_CT || cs_get_user_team( iKiller ) != CS_TEAM_T ) return PLUGIN_CONTINUE; new iTotal = get_pcvar_num( g_pPointsPerKill ) + ( bool:read_data( 3 ) ? get_pcvar_num( g_pHeadshotBonus ) : 0 ); if( g_iGang[ iKiller ] > -1 ) { new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ iKiller ], aData ); aData[ GangKills ]++; ArraySetArray( g_aGangs, g_iGang[ iKiller ], aData ); iTotal += iTotal * ( aData[ GangStealing ] * get_pcvar_num( g_pStealingPerLevel ) ); } cs_set_user_money( iKiller, cs_get_user_money( iKiller ) + iTotal ); return PLUGIN_CONTINUE; } public Ham_PlayerSpawn_Post( id ) { if( !is_user_alive( id ) || cs_get_user_team( id ) == CS_TEAM_SPECTATOR ) return HAM_IGNORED; if( g_iGang[ id ] == -1 ) { return HAM_IGNORED; } set_task(1.0, "GiveHP", id) bActiveGet[ id ] = false; return HAM_IGNORED; } public GiveHP(id) { new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); new iHealth = get_user_health( id ) + aData[ GangHP ] * get_pcvar_num( g_pHealthPerLevel ); set_user_health( id, iHealth ); } public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits ) { if( !is_user_alive( iAttacker ) || cs_get_user_team( iAttacker ) == CS_TEAM_SPECTATOR ) return HAM_IGNORED; if( g_iGang[ iAttacker ] == -1 ) return HAM_IGNORED; new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData ); SetHamParamFloat( 4, flDamage + ( get_pcvar_num( g_pDamagePerLevel ) * ( aData[ GangDamage ] ) ) ); return HAM_IGNORED; }
public Ham_TakeDamage_Post( iVictim, iInflictor, iAttacker, Float:flDamage, iBits ) { if( !is_user_alive( iAttacker ) || g_iGang[ iAttacker ] == -1 || get_user_weapon( iAttacker ) != CSW_KNIFE || cs_get_user_team( iAttacker ) != CS_TEAM_T ) { return HAM_IGNORED; } new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData ); new iChance = aData[ GangWeaponDrop ] * get_pcvar_num( g_pWeaponDropPerLevel ); if( iChance == 0 ) return HAM_IGNORED; new bool:bDrop = ( random_num( 1, 100 ) <= iChance ); if( bDrop ) client_cmd( iVictim, "drop" ); return HAM_IGNORED; }
public Ham_PlayerResetSpeedPost( id ) { if( g_iGang[ id ] == -1 || !is_user_alive( id ) || cs_get_user_team( id ) == CS_TEAM_SPECTATOR ) { return HAM_IGNORED; } new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); if( aData[ GangStamina ] > 0 && get_user_maxspeed( id ) > 1.0 ) set_user_maxspeed( id, 250.0 + ( aData[ GangStamina ] * get_pcvar_num( g_pStaminaPerLevel ) ) ); return HAM_IGNORED; }
public Cmd_Gang( id ) { if( !is_user_connected( id ) ) return PLUGIN_HANDLED; static szMenu[ 512 ], iLen, aData[ GangInfo ], iKeys, iStatus; iKeys = MENU_KEY_0 | MENU_KEY_4; iStatus = getStatus( id, g_iGang[ id ] ); if( g_iGang[ id ] > -1 ) { ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); iLen = formatex( szMenu, charsmax( szMenu ), "\yGang Menu^n\wCurrent Gang:\y %s^n", aData[ GangName ] ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yCash: \w%i^n^n", cs_get_user_money( id ) ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \dCreate a Gang [%i Cash]^n", get_pcvar_num( g_pCreateCost ) ); } else { iLen = formatex( szMenu, charsmax( szMenu ), "\yGang Menu^n\wCurrent Gang:\r None^n" ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yCash: \w%i^n^n", cs_get_user_money( id ) ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \wCreate a Gang [%i Cash]^n", get_pcvar_num( g_pCreateCost ) ); iKeys |= MENU_KEY_1; } if( iStatus > STATUS_MEMBER && g_iGang[ id ] > -1 && get_pcvar_num( g_pMaxMembers ) > aData[ NumMembers ] ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \wInvite Player to Gang^n" ); iKeys |= MENU_KEY_2; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \dInvite Player to Gang^n" ); if( g_iGang[ id ] > -1 ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \wSkills^n" ); iKeys |= MENU_KEY_3; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \dSkills^n" ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r4. \wTop-10^n" ); if( g_iGang[ id ] > -1 ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \wLeave Gang^n" ); iKeys |= MENU_KEY_5; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \dLeave Gang^n" ); if( iStatus > STATUS_MEMBER ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r6. \wGang Admin Menu^n" ); iKeys |= MENU_KEY_6; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r6. \dGang Admin Menu^n" ); if( g_iGang[ id ] > -1 ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \wOnline Members^n" ); iKeys |= MENU_KEY_7; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \dOnline Members^n" ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "^n\r0. \wExit" ); show_menu( id, iKeys, szMenu, -1, "Gang Menu" ); return PLUGIN_CONTINUE; }
public GangMenu_Handler( id, iKey ) { switch( ( iKey + 1 ) % 10 ) { case 0: return PLUGIN_HANDLED; case 1: { if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE ) { client_cmd( id, "messagemode gang_name" ); } else if( cs_get_user_money( id ) < get_pcvar_num( g_pCreateCost ) ) { ColorChat( id, NORMAL, "%s You do not have enough points to create a gang!", g_szPrefix ); return PLUGIN_HANDLED; } else client_cmd( id, "messagemode gang_name" ); } case 2: { ShowInviteMenu( id ); } case 3: { ShowSkillsMenu( id ); } case 4: { Cmd_Top10( id ); } case 5: { ShowLeaveConfirmMenu( id ); } case 6: { ShowLeaderMenu( id ); } case 7: { ShowMembersMenu( id ); } } return PLUGIN_HANDLED; }
public Cmd_CreateGang( id ) { new bool:bAdmin = false; if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE ) { bAdmin = true; } else if( cs_get_user_money( id ) < get_pcvar_num( g_pCreateCost ) ) { ColorChat( id, NORMAL, "%s You do not have enough points to create a gang.", g_szPrefix ); return PLUGIN_HANDLED; } else if( g_iGang[ id ] > -1 ) { ColorChat( id, NORMAL, "%s You cannot create a gang if you are already in one!", g_szPrefix ); return PLUGIN_HANDLED; } else if( cs_get_user_team( id ) != CS_TEAM_T ) { ColorChat( id, NORMAL, "%s Only ^03prisoners ^01can create gangs!", g_szPrefix ); return PLUGIN_HANDLED; } new szArgs[ 60 ]; read_args( szArgs, charsmax( szArgs ) ); remove_quotes( szArgs ); if( TrieKeyExists( g_tGangNames, szArgs ) ) { ColorChat( id, NORMAL, "%s That gang with that name already exists.", g_szPrefix ); Cmd_Gang( id ); return PLUGIN_HANDLED; } new aData[ GangInfo ]; aData[ GangName ] = szArgs; aData[ GangHP ] = 0; aData[ GangStealing ] = 0; aData[ GangStamina ] = 0; aData[ GangWeaponDrop ] = 0; aData[ GangDamage ] = 0; aData[ NumMembers ] = 0; aData[ GangGetCash ] = 0; aData[ GangMembers ] = _:TrieCreate(); ArrayPushArray( g_aGangs, aData ); if( !bAdmin ) cs_set_user_money( id, cs_get_user_money( id ) - get_pcvar_num(g_pCreateCost)); set_user_gang( id, ArraySize( g_aGangs ) - 1, STATUS_LEADER ); ColorChat( id, NORMAL, "%s You have successfully created gang '^03%s^01'.", g_szPrefix, szArgs ); return PLUGIN_HANDLED; }
public ShowInviteMenu( id ) { new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new szInfo[ 6 ], hMenu; hMenu = menu_create( "Choose a Player to Invite:", "InviteMenu_Handler" ); new szName[ 32 ]; for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( iPlayer == id || g_iGang[ iPlayer ] == g_iGang[ id ] || cs_get_user_team( iPlayer ) == CS_TEAM_SPECTATOR ) continue; if( g_iGang[ iPlayer ] > -1 ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szInfo, charsmax( szInfo ) ); menu_additem( hMenu, szName, szInfo ); } menu_display( id, hMenu, 0 ); }
public InviteMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { Cmd_Gang( id ); return PLUGIN_HANDLED; } new szData[ 6 ], iAccess, hCallback, szName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, 31, hCallback ); new iPlayer = str_to_num( szData );
if( !is_user_connected( iPlayer ) ) return PLUGIN_HANDLED; ShowInviteConfirmMenu( id, iPlayer );
ColorChat( id, NORMAL, "%s You have successfully invited %s to join your gang.", g_szPrefix, szName ); Cmd_Gang( id ); return PLUGIN_HANDLED; }
public ShowInviteConfirmMenu( id, iPlayer ) { new szName[ 32 ]; get_user_name( id, szName, charsmax( szName ) ); new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); new szMenuTitle[ 128 ]; formatex( szMenuTitle, charsmax( szMenuTitle ), "%s Invited You to Join %s", szName, aData[ GangName ] ); new hMenu = menu_create( szMenuTitle, "InviteConfirmMenu_Handler" ); new szInfo[ 6 ]; num_to_str( g_iGang[ id ], szInfo, 5 ); menu_additem( hMenu, "Accept Invitation", szInfo ); menu_additem( hMenu, "Decline Invitation", "-1" ); menu_display( iPlayer, hMenu, 0 ); }
public InviteConfirmMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) return PLUGIN_HANDLED; new szData[ 6 ], iAccess, hCallback; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback ); new iGang = str_to_num( szData ); if( iGang == -1 ) return PLUGIN_HANDLED; if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER ) { ColorChat( id, NORMAL, "%s You cannot leave your gang while you are the leader.", g_szPrefix ); return PLUGIN_HANDLED; } set_user_gang( id, iGang ); new aData[ GangInfo ]; ArrayGetArray( g_aGangs, iGang, aData ); ColorChat( id, NORMAL, "%s You have successfully joined the gang ^03%s^01.", g_szPrefix, aData[ GangName ] ); return PLUGIN_HANDLED; }
public ShowSkillsMenu( id ) { static szMenu[ 512 ], iLen, iKeys, aData[ GangInfo ]; 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; } ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); iLen = formatex( szMenu, charsmax( szMenu ), "\ySkills Menu^n^n" ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r1. \wHealth Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pHealthCost ), aData[ GangHP ], get_pcvar_num( g_pHealthMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r2. \wStealing Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pStealingCost ), aData[ GangStealing ], get_pcvar_num( g_pStealingMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r3. \wDamage Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pDamageCost ), aData[ GangDamage ], get_pcvar_num( g_pDamageMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r4. \wWeapon Drop Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pWeaponDropCost ), aData[ GangWeaponDrop ], get_pcvar_num( g_pWeaponDropMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r5. \wSpeed Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pStaminaCost ), aData[ GangStamina ], get_pcvar_num( g_pStaminaMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r6. \wGetCash Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pGetCashCost ), aData[ GangGetCash ], get_pcvar_num( g_pGetCashMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "^n\r0. \wExit" ); show_menu( id, iKeys, szMenu, -1, "Skills Menu" ); }
public SkillsMenu_Handler( id, iKey ) { new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); switch( ( iKey + 1 ) % 10 ) { case 0: { Cmd_Gang( id ); return PLUGIN_HANDLED; } case 1: { if( aData[ GangHP ] == get_pcvar_num( g_pHealthMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangHP ] > get_pcvar_num( g_pHealthMax ) ) { aData[ GangHP ] = get_pcvar_num( g_pHealthMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pHealthCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangHP ]++; cs_set_user_money( id, iRemaining ); } case 2: { if( aData[ GangStealing ] == get_pcvar_num( g_pStealingMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangStealing ] > get_pcvar_num( g_pStealingMax ) ) { aData[ GangStealing ] = get_pcvar_num( g_pStealingMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pStealingCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangStealing ]++; cs_set_user_money( id, iRemaining); } case 3: { if( aData[ GangDamage ] == get_pcvar_num( g_pDamageMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangDamage ] > get_pcvar_num( g_pDamageMax ) ) { aData[ GangDamage ] = get_pcvar_num( g_pDamageMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pDamageCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangDamage ]++; cs_set_user_money( id, iRemaining); } case 4: { if( aData[ GangWeaponDrop ] == get_pcvar_num( g_pWeaponDropMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangWeaponDrop ] > get_pcvar_num( g_pWeaponDropMax ) ) { aData[ GangWeaponDrop ] = get_pcvar_num( g_pWeaponDropMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pWeaponDropCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangWeaponDrop ]++; cs_set_user_money( id, iRemaining ); } case 5: { if( aData[ GangStamina ] == get_pcvar_num( g_pStaminaMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangStamina ] > get_pcvar_num( g_pStaminaMax ) ) { aData[ GangStamina ] = get_pcvar_num( g_pStaminaMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pStaminaCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangStamina ]++; cs_set_user_money( id, iRemaining ); } case 6: { if( aData[ GangGetCash ] == get_pcvar_num( g_pGetCashMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangGetCash ] > get_pcvar_num( g_pGetCashMax ) ) { aData[ GangGetCash ] = get_pcvar_num( g_pGetCashMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pGetCashCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangGetCash ]++; cs_set_user_money( id, iRemaining ); } } ArraySetArray( g_aGangs, g_iGang[ id ], aData ); new iPlayers[ 32 ], iNum, iPlayer; new szName[ 32 ]; get_players( iPlayers, iNum ); for( new i = 0; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( iPlayer == id || g_iGang[ iPlayer ] != g_iGang[ id ] ) continue; ColorChat( iPlayer, NORMAL, "%s ^03%s ^01has just upgraded one of your gang's skills.", g_szPrefix, szName ); } ColorChat( id, NORMAL, "%s You have successfully upgraded your gang.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } public Cmd_Top10( id ) { new iSize = ArraySize( g_aGangs ); new iOrder[ 100 ][ 2 ]; new aData[ GangInfo ]; for( new i = 0; i < iSize; i++ ) { ArrayGetArray( g_aGangs, i, aData ); iOrder[ i ][ 0 ] = i; iOrder[ i ][ 1 ] = aData[ GangKills ]; } SortCustom2D( iOrder, iSize, "Top10_Sort" ); new szMessage[ 2048 ]; formatex( szMessage, charsmax( szMessage ), "<body bgcolor=#000000><font color=#FFB000><pre>" ); format( szMessage, charsmax( szMessage ), "%s%2s %-22.22s %7s %4s %10s %9s %9s %11s %8s^n", szMessage, "#", "Name", "Kills", "HP", "Stealing", "GetCash", "Stamina", "WeaponDrop", "Damage" ); for( new i = 0; i < min( 10, iSize ); i++ ) { ArrayGetArray( g_aGangs, iOrder[ i ][ 0 ], aData ); format( szMessage, charsmax( szMessage ), "%s%-2d %22.22s %7d %4d %10d %9d %9d %11d %8d^n", szMessage, i + 1, aData[ GangName ], aData[ GangKills ], aData[ GangHP ], aData[ GangStealing ], aData[ GangGetCash ], aData[ GangStamina], aData[ GangWeaponDrop ], aData[ GangDamage ] ); } show_motd( id, szMessage, "Gang Top 10" ); }
public Top10_Sort( const iElement1[ ], const iElement2[ ], const iArray[ ], szData[], iSize ) { if( iElement1[ 1 ] > iElement2[ 1 ] ) return -1; else if( iElement1[ 1 ] < iElement2[ 1 ] ) return 1; return 0; }
public ShowLeaveConfirmMenu( id ) { new hMenu = menu_create( "Are you sure you want to leave?", "LeaveConfirmMenu_Handler" ); menu_additem( hMenu, "Yes, Leave Now", "0" ); menu_additem( hMenu, "No, Don't Leave", "1" ); menu_display( id, hMenu, 0 ); }
public LeaveConfirmMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) return PLUGIN_HANDLED; new szData[ 6 ], iAccess, hCallback; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback ); switch( str_to_num( szData ) ) { case 0: { if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER ) { ColorChat( id, NORMAL, "%s You must transfer leadership before leaving this gang.", g_szPrefix ); Cmd_Gang( id ); return PLUGIN_HANDLED; } ColorChat( id, NORMAL, "%s You have successfully left your gang.", g_szPrefix ); set_user_gang( id, -1 ); Cmd_Gang( id ); } case 1: Cmd_Gang( id ); } return PLUGIN_HANDLED; }
public ShowLeaderMenu( id ) { new hMenu = menu_create( "Gang Leader Menu", "LeaderMenu_Handler" ); new iStatus = getStatus( id, g_iGang[ id ] ); if( iStatus == STATUS_LEADER ) { menu_additem( hMenu, "Disband Gang", "0" ); menu_additem( hMenu, "Transfer Leadership", "1" ); menu_additem( hMenu, "Add An Admin", "4" ); menu_additem( hMenu, "Remove An Admin", "5" ); } menu_additem( hMenu, "Kick From Gang", "2" ); menu_additem( hMenu, "Change Gang Name", "3" ); menu_display( id, hMenu, 0 ); }
public LeaderMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { Cmd_Gang( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback ); switch( str_to_num( szData ) ) { case 0: { ShowDisbandConfirmMenu( id ); } case 1: { ShowTransferMenu( id ); } case 2: { ShowKickMenu( id ); } case 3: { client_cmd( id, "messagemode New_Name" ); } case 4: { ShowAddAdminMenu( id ); } case 5: { ShowRemoveAdminMenu( id ); } } return PLUGIN_HANDLED; }
public ShowDisbandConfirmMenu( id ) { new hMenu = menu_create( "Are you sure you want to disband the gang?", "DisbandConfirmMenu_Handler" ); menu_additem( hMenu, "Yes, Disband Now", "0" ); menu_additem( hMenu, "No, Don't Disband", "1" ); menu_display( id, hMenu, 0 ); }
public DisbandConfirmMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) return PLUGIN_HANDLED; new szData[ 6 ], iAccess, hCallback; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback ); switch( str_to_num( szData ) ) { case 0: { ColorChat( id, NORMAL, "%s You have successfully disbanded your gang.", g_szPrefix ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new iPlayer; for( new i = 0; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( iPlayer == id ) continue; if( g_iGang[ id ] != g_iGang[ iPlayer ] ) continue;
ColorChat( iPlayer, NORMAL, "%s Your gang has been disband by its leader.", g_szPrefix ); set_user_gang( iPlayer, -1 ); } new iGang = g_iGang[ id ]; set_user_gang( id, -1 ); ArrayDeleteItem( g_aGangs, iGang );
Cmd_Gang( id ); } case 1: Cmd_Gang( id ); } return PLUGIN_HANDLED; }
public ShowTransferMenu( id ) { new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum, "e", "TERRORIST" ); new hMenu = menu_create( "Transfer Leadership to:", "TransferMenu_Handler" ); new szName[ 32 ], szData[ 6 ]; for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szData, charsmax( szData ) ); menu_additem( hMenu, szName, szData ); } menu_display( id, hMenu, 0 ); }
public TransferMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { ShowLeaderMenu( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ], szName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback ); new iPlayer = str_to_num( szData ); if( !is_user_connected( iPlayer ) ) { ColorChat( id, NORMAL, "%s That player is no longer connected.", g_szPrefix ); ShowTransferMenu( id ); return PLUGIN_HANDLED; } set_user_gang( iPlayer, g_iGang[ id ], STATUS_LEADER ); set_user_gang( id, g_iGang[ id ], STATUS_ADMIN ); Cmd_Gang( id ); new iPlayers[ 32 ], iNum, iTemp; get_players( iPlayers, iNum );
for( new i = 0; i < iNum; i++ ) { iTemp = iPlayers[ i ]; if( iTemp == iPlayer ) { ColorChat( iTemp, NORMAL, "%s You are the new leader of your gang.", g_szPrefix ); continue; } else if( g_iGang[ iTemp ] != g_iGang[ id ] ) continue; ColorChat( iTemp, NORMAL, "%s ^03%s^01 is the new leader of your gang.", g_szPrefix, szName ); } return PLUGIN_HANDLED; }
public ShowKickMenu( id ) { new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new hMenu = menu_create( "Kick Player From Gang:", "KickMenu_Handler" ); new szName[ 32 ], szData[ 6 ]; for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szData, charsmax( szData ) ); menu_additem( hMenu, szName, szData ); } menu_display( id, hMenu, 0 ); }
public KickMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { ShowLeaderMenu( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ], szName[ 32 ], KickerName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback ); new iPlayer = str_to_num( szData ); get_user_name(id, KickerName, 31) if( !is_user_connected( iPlayer ) ) { ColorChat( id, NORMAL, "%s That player is no longer connected.", g_szPrefix ); ShowTransferMenu( id ); return PLUGIN_HANDLED; } else if(getStatus( iPlayer, g_iGang[ iPlayer ] ) == STATUS_LEADER && !get_pcvar_num( g_pLeadersKick )) { ColorChat( id, NORMAL, "%s That player Is The Leader!.", g_szPrefix ); ColorChat( iPlayer, NORMAL, "%s %s Tried To Kick You From Your Own Gang! Get Revenge", g_szPrefix, KickerName); ShowTransferMenu( id ); return PLUGIN_HANDLED; } set_user_gang( iPlayer, -1 ); Cmd_Gang( id ); new iPlayers[ 32 ], iNum, iTemp; get_players( iPlayers, iNum ); for( new i = 0; i < iNum; i++ ) { iTemp = iPlayers[ i ]; if( iTemp == iPlayer || g_iGang[ iTemp ] != g_iGang[ id ] ) continue; ColorChat( iTemp, NORMAL, "%s ^03%s^01 has been kicked from the gang.", g_szPrefix, szName ); } ColorChat( iPlayer, NORMAL, "%s You have been kicked from your gang.", g_szPrefix ); return PLUGIN_HANDLED; }
public ChangeName_Handler( id ) { if( g_iGang[ id ] == -1 || getStatus( id, g_iGang[ id ] ) == STATUS_MEMBER ) { return; } new iGang = g_iGang[ id ]; new szArgs[ 64 ]; read_args( szArgs, charsmax( szArgs ) ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new bool:bInGang[ 33 ]; new iStatus[ 33 ]; for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ id ] != g_iGang[ iPlayer ] ) continue; bInGang[ iPlayer ] = true; iStatus[ iPlayer ] = getStatus( id, iGang ); set_user_gang( iPlayer, -1 ); } new aData[ GangInfo ]; ArrayGetArray( g_aGangs, iGang, aData ); aData[ GangName ] = szArgs; ArraySetArray( g_aGangs, iGang, aData ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( !bInGang[ iPlayer ] ) continue; set_user_gang( iPlayer, iGang, iStatus[ id ] ); } } public ShowAddAdminMenu( id ) { new iPlayers[ 32 ], iNum; new szName[ 32 ], szData[ 6 ]; new hMenu = menu_create( "Choose a Player to Promote:", "AddAdminMenu_Handler" ); get_players( iPlayers, iNum ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) > STATUS_MEMBER ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szData, charsmax( szData ) ); menu_additem( hMenu, szName, szData ); } menu_display( id, hMenu, 0 ); }
public AddAdminMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { menu_destroy( hMenu ); ShowLeaderMenu( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ], szName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback ); new iChosen = str_to_num( szData ); if( !is_user_connected( iChosen ) ) { menu_destroy( hMenu ); ShowLeaderMenu( id ); return PLUGIN_HANDLED; } set_user_gang( iChosen, g_iGang[ id ], STATUS_LEADER ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen ) continue; ColorChat( iPlayer, NORMAL, "%s ^03%s ^01has been promoted to an admin of your gang.", g_szPrefix, szName ); } ColorChat( iChosen, NORMAL, "%s ^01You have been promoted to an admin of your gang.", g_szPrefix ); menu_destroy( hMenu ); return PLUGIN_HANDLED; }
public ShowRemoveAdminMenu( id ) { new iPlayers[ 32 ], iNum; new szName[ 32 ], szData[ 6 ]; new hMenu = menu_create( "Choose a Player to Demote:", "RemoveAdminMenu_Handler" ); get_players( iPlayers, iNum ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) != STATUS_ADMIN ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szData, charsmax( szData ) ); menu_additem( hMenu, szName, szData ); } menu_display( id, hMenu, 0 ); }
public RemoveAdminMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { menu_destroy( hMenu ); ShowLeaderMenu( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ], szName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback ); new iChosen = str_to_num( szData ); if( !is_user_connected( iChosen ) ) { menu_destroy( hMenu ); ShowLeaderMenu( id ); return PLUGIN_HANDLED; } set_user_gang( iChosen, g_iGang[ id ], STATUS_MEMBER ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen ) continue; ColorChat( iPlayer, NORMAL, "%s ^03%s ^01has been demoted from being an admin of your gang.", g_szPrefix, szName ); } ColorChat( iChosen, NORMAL, "%s ^01You have been demoted from being an admin of your gang.", g_szPrefix ); menu_destroy( hMenu ); return PLUGIN_HANDLED; } public ShowMembersMenu( id ) { new szName[ 64 ], iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new hMenu = menu_create( "Online Members:", "MemberMenu_Handler" ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ id ] != g_iGang[ iPlayer ] ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); switch( getStatus( iPlayer, g_iGang[ id ] ) ) { case STATUS_MEMBER: { add( szName, charsmax( szName ), " \r[Member]" ); } case STATUS_ADMIN: { add( szName, charsmax( szName ), " \r[Admin]" ); } case STATUS_LEADER: { add( szName, charsmax( szName ), " \r[Leader]" ); } }
menu_additem( hMenu, szName ); } menu_display( id, hMenu, 0 ); }
public MemberMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { menu_destroy( hMenu ); Cmd_Gang( id ); return PLUGIN_HANDLED; } menu_destroy( hMenu ); ShowMembersMenu( id ) return PLUGIN_HANDLED; }
// Credits to Tirant from zombie mod and xOR from xRedirect public LoadGangs() { new szConfigsDir[ 60 ]; get_configsdir( szConfigsDir, charsmax( szConfigsDir ) ); add( szConfigsDir, charsmax( szConfigsDir ), "/jb_gangs.ini" ); new iFile = fopen( szConfigsDir, "rt" ); new aData[ GangInfo ]; new szBuffer[ 512 ], szData[ 6 ], szValue[ 6 ], i, iCurGang; while( !feof( iFile ) ) { fgets( iFile, szBuffer, charsmax( szBuffer ) ); trim( szBuffer ); remove_quotes( szBuffer ); if( !szBuffer[ 0 ] || szBuffer[ 0 ] == ';' ) { continue; } if( szBuffer[ 0 ] == '[' && szBuffer[ strlen( szBuffer ) - 1 ] == ']' ) { copy( aData[ GangName ], strlen( szBuffer ) - 2, szBuffer[ 1 ] ); aData[ GangHP ] = 0; aData[ GangStealing ] = 0; aData[ GangStamina ] = 0; aData[ GangWeaponDrop ] = 0; aData[ GangDamage ] = 0; aData[ GangGetCash ] = 0; aData[ GangKills ] = 0; aData[ NumMembers ] = 0; aData[ GangMembers ] = _:TrieCreate(); if( TrieKeyExists( g_tGangNames, aData[ GangName ] ) ) { new szError[ 256 ]; formatex( szError, charsmax( szError ), "[JB Gangs] Gang already exists: %s", aData[ GangName ] ); set_fail_state( szError ); } ArrayPushArray( g_aGangs, aData ); TrieSetCell( g_tGangNames, aData[ GangName ], iCurGang );
log_amx( "Gang Created: %s", aData[ GangName ] ); iCurGang++; continue; } strtok( szBuffer, szData, 31, szValue, 511, '=' ); trim( szData ); trim( szValue ); if( TrieGetCell( g_tGangValues, szData, i ) ) { ArrayGetArray( g_aGangs, iCurGang - 1, aData ); switch( i ) { case VALUE_HP: aData[ GangHP ] = str_to_num( szValue ); case VALUE_STEALING: aData[ GangStealing ] = str_to_num( szValue ); case VALUE_STAMINA: aData[ GangStamina ] = str_to_num( szValue ); case VALUE_WEAPONDROP: aData[ GangWeaponDrop ] = str_to_num( szValue ); case VALUE_DAMAGE: aData[ GangDamage ] = str_to_num( szValue ); case VALUE_GETCASH: aData[ GangGetCash ] = str_to_num( szValue ); case VALUE_KILLS: aData[ GangKills ] = str_to_num( szValue ); } ArraySetArray( g_aGangs, iCurGang - 1, aData ); } } new Array:aSQL; sqlv_read_all_ex( g_hVault, aSQL ); new aVaultData[ SQLVaultEntryEx ]; new iGang; for( i = 0; i < ArraySize( aSQL ); i++ ) { ArrayGetArray( aSQL, i, aVaultData ); if( TrieGetCell( g_tGangNames, aVaultData[ SQLVEx_Key2 ], iGang ) ) { ArrayGetArray( g_aGangs, iGang, aData ); TrieSetCell( aData[ GangMembers ], aVaultData[ SQLVEx_Key1 ], str_to_num( aVaultData[ SQLVEx_Data ] ) ); aData[ NumMembers ]++; ArraySetArray( g_aGangs, iGang, aData ); } } fclose( iFile ); }
public SaveGangs() { new szConfigsDir[ 64 ]; get_configsdir( szConfigsDir, charsmax( szConfigsDir ) ); add( szConfigsDir, charsmax( szConfigsDir ), "/jb_gangs.ini" ); if( file_exists( szConfigsDir ) ) delete_file( szConfigsDir ); new iFile = fopen( szConfigsDir, "wt" ); new aData[ GangInfo ]; new szBuffer[ 256 ];
for( new i = 0; i < ArraySize( g_aGangs ); i++ ) { ArrayGetArray( g_aGangs, i, aData ); formatex( szBuffer, charsmax( szBuffer ), "[%s]^n", aData[ GangName ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "HP=%i^n", aData[ GangHP ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "Stealing=%i^n", aData[ GangStealing ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "Stamina=%i^n", aData[ GangStamina ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "WeaponDrop=%i^n", aData[ GangWeaponDrop ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "Damage=%i^n", aData[ GangDamage ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "GetCash=%i^n", aData[ GangGetCash ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "Kills=%i^n^n", aData[ GangKills ] ); fputs( iFile, szBuffer ); } fclose( iFile ); }
set_user_gang( id, iGang, iStatus=STATUS_MEMBER ) { new szAuthID[ 35 ]; get_user_authid( id, szAuthID, charsmax( szAuthID ) );
new aData[ GangInfo ]; if( g_iGang[ id ] > -1 ) { ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); TrieDeleteKey( aData[ GangMembers ], szAuthID ); aData[ NumMembers ]--; ArraySetArray( g_aGangs, g_iGang[ id ], aData ); sqlv_remove_ex( g_hVault, szAuthID, aData[ GangName ] ); }
if( iGang > -1 ) { ArrayGetArray( g_aGangs, iGang, aData ); TrieSetCell( aData[ GangMembers ], szAuthID, iStatus ); aData[ NumMembers ]++; ArraySetArray( g_aGangs, iGang, aData ); sqlv_set_num_ex( g_hVault, szAuthID, aData[ GangName ], iStatus ); }
g_iGang[ id ] = iGang; return 1; } get_user_gang( id ) { new szAuthID[ 35 ]; get_user_authid( id, szAuthID, charsmax( szAuthID ) ); new aData[ GangInfo ]; for( new i = 0; i < ArraySize( g_aGangs ); i++ ) { ArrayGetArray( g_aGangs, i, aData ); if( TrieKeyExists( aData[ GangMembers ], szAuthID ) ) return i; } return -1; } getStatus( id, iGang ) { if( !is_user_connected( id ) || iGang == -1 ) return STATUS_NONE; new aData[ GangInfo ]; ArrayGetArray( g_aGangs, iGang, aData ); new szAuthID[ 35 ]; get_user_authid( id, szAuthID, charsmax( szAuthID ) ); new iStatus; TrieGetCell( aData[ GangMembers ], szAuthID, iStatus ); 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, GangName[ 64 ], 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_cash( index ); native set_user_cash( index, amount );
/* Integers */ new g_iGang[ 33 ]; new bActiveGet[ 33 ];
public plugin_init() { register_plugin( "Jailbreak Gang System", g_szVersion, "H3avY Ra1n" ); g_aGangs = ArrayCreate( GangInfo );
g_tGangValues = TrieCreate(); g_tGangNames = TrieCreate(); g_hVault = sqlv_open_local( "jb_gangs", false ); sqlv_init_ex( g_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_szVersion, FCVAR_SPONLY | FCVAR_SERVER ); register_menu( "Gang Menu", 1023, "GangMenu_Handler" ); register_menu( "Skills Menu", 1023, "SkillsMenu_Handler" ); for( new i = 0; i < sizeof g_szGangValues; i++ ) { TrieSetCell( g_tGangValues, g_szGangValues[ i ], i ); }
RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1 ); RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0 ); RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Post", 1 ); RegisterHam( Ham_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 aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); new iTotal = get_pcvar_num( g_pGetCashPerLevel ) * aData[ GangGetCash ] if ( bActiveGet[ id ] ) { ColorChat( id, NORMAL, "^4You need to wait until the^3 Next Round^1 to^4 Get Cash^1!" ); return 1; } if( g_iGang[ id ] < -1 ) { ColorChat( id, NORMAL, "^4You Need To Be In ^3Gang ^4To Use GetCash!"); return 1; } cs_set_user_money( id, cs_get_user_money( id ) + ( iTotal + 50 ) ); bActiveGet[ id ] = true; ColorChat( id, NORMAL, "^3You received^4 %i Cash^1,^3 Good Luck^1.", iTotal + 50 ); return 1; } public client_disconnect( id ) { g_iGang[ id ] = -1; }
public client_putinserver( id ) { g_iGang[ id ] = get_user_gang( id ); }
public plugin_end() { SaveGangs(); sqlv_close( g_hVault ); }
public Event_DeathMsg() { new iKiller = read_data( 1 ); new iVictim = read_data( 2 ); if( !is_user_alive( iKiller ) || cs_get_user_team( iVictim ) != CS_TEAM_CT || cs_get_user_team( iKiller ) != CS_TEAM_T ) return PLUGIN_CONTINUE; new iTotal = get_pcvar_num( g_pPointsPerKill ) + ( bool:read_data( 3 ) ? get_pcvar_num( g_pHeadshotBonus ) : 0 ); if( g_iGang[ iKiller ] > -1 ) { new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ iKiller ], aData ); aData[ GangKills ]++; ArraySetArray( g_aGangs, g_iGang[ iKiller ], aData ); iTotal += iTotal * ( aData[ GangStealing ] * get_pcvar_num( g_pStealingPerLevel ) ); } cs_set_user_money( iKiller, cs_get_user_money( iKiller ) + iTotal ); return PLUGIN_CONTINUE; } public Ham_PlayerSpawn_Post( id ) { if( !is_user_alive( id ) || cs_get_user_team( id ) == CS_TEAM_SPECTATOR ) return HAM_IGNORED; if( g_iGang[ id ] == -1 ) { return HAM_IGNORED; } set_task(1.0, "GiveHP", id) bActiveGet[ id ] = false; return HAM_IGNORED; } public GiveHP(id) { new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); new iHealth = get_user_health( id ) + aData[ GangHP ] * get_pcvar_num( g_pHealthPerLevel ); set_user_health( id, iHealth ); } public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits ) { if( !is_user_alive( iAttacker ) || cs_get_user_team( iAttacker ) == CS_TEAM_SPECTATOR ) return HAM_IGNORED; if( g_iGang[ iAttacker ] == -1 ) return HAM_IGNORED; new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData ); SetHamParamFloat( 4, flDamage + ( get_pcvar_num( g_pDamagePerLevel ) * ( aData[ GangDamage ] ) ) ); return HAM_IGNORED; }
public Ham_TakeDamage_Post( iVictim, iInflictor, iAttacker, Float:flDamage, iBits ) { if( !is_user_alive( iAttacker ) || g_iGang[ iAttacker ] == -1 || get_user_weapon( iAttacker ) != CSW_KNIFE || cs_get_user_team( iAttacker ) != CS_TEAM_T ) { return HAM_IGNORED; } new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData ); new iChance = aData[ GangWeaponDrop ] * get_pcvar_num( g_pWeaponDropPerLevel ); if( iChance == 0 ) return HAM_IGNORED; new bool:bDrop = ( random_num( 1, 100 ) <= iChance ); if( bDrop ) client_cmd( iVictim, "drop" ); return HAM_IGNORED; }
public Ham_PlayerResetSpeedPost( id ) { if( g_iGang[ id ] == -1 || !is_user_alive( id ) || cs_get_user_team( id ) == CS_TEAM_SPECTATOR ) { return HAM_IGNORED; } new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); if( aData[ GangStamina ] > 0 && get_user_maxspeed( id ) > 1.0 ) set_user_maxspeed( id, 250.0 + ( aData[ GangStamina ] * get_pcvar_num( g_pStaminaPerLevel ) ) ); return HAM_IGNORED; }
public Cmd_Gang( id ) { if( !is_user_connected( id ) ) return PLUGIN_HANDLED; static szMenu[ 512 ], iLen, aData[ GangInfo ], iKeys, iStatus; iKeys = MENU_KEY_0 | MENU_KEY_4; iStatus = getStatus( id, g_iGang[ id ] ); if( g_iGang[ id ] > -1 ) { ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); iLen = formatex( szMenu, charsmax( szMenu ), "\r[AMXX] \yGang Menu^n\wCurrent Gang:\y %s^n", aData[ GangName ] ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yCash: \w%i^n^n", cs_get_user_money( id ) ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \dCreate a Gang [%i Cash]^n", get_pcvar_num( g_pCreateCost ) ); } else { iLen = formatex( szMenu, charsmax( szMenu ), "\r[AMXX] \yGang Menu^n\wCurrent Gang:\r None^n" ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yCash: \w%i^n^n", cs_get_user_money( id ) ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \wCreate a Gang [%i Cash]^n", get_pcvar_num( g_pCreateCost ) ); iKeys |= MENU_KEY_1; } if( iStatus > STATUS_MEMBER && g_iGang[ id ] > -1 && get_pcvar_num( g_pMaxMembers ) > aData[ NumMembers ] ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \wInvite Player to Gang^n" ); iKeys |= MENU_KEY_2; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \dInvite Player to Gang^n" ); if( g_iGang[ id ] > -1 ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \wSkills^n" ); iKeys |= MENU_KEY_3; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \dSkills^n" ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r4. \wTop-10^n" ); if( g_iGang[ id ] > -1 ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \wLeave Gang^n" ); iKeys |= MENU_KEY_5; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \dLeave Gang^n" ); if( iStatus > STATUS_MEMBER ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r6. \wGang Admin Menu^n" ); iKeys |= MENU_KEY_6; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r6. \dGang Admin Menu^n" ); if( g_iGang[ id ] > -1 ) { iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \wOnline Members^n" ); iKeys |= MENU_KEY_7; } else iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \dOnline Members^n" ); iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "^n\r0. \wExit" ); show_menu( id, iKeys, szMenu, -1, "Gang Menu" ); return PLUGIN_CONTINUE; }
public GangMenu_Handler( id, iKey ) { switch( ( iKey + 1 ) % 10 ) { case 0: return PLUGIN_HANDLED; case 1: { if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE ) { client_cmd( id, "messagemode gang_name" ); } else if( cs_get_user_money( id ) < get_pcvar_num( g_pCreateCost ) ) { ColorChat( id, NORMAL, "%s You do not have enough points to create a gang!", g_szPrefix ); return PLUGIN_HANDLED; } else client_cmd( id, "messagemode gang_name" ); } case 2: { ShowInviteMenu( id ); } case 3: { ShowSkillsMenu( id ); } case 4: { Cmd_Top10( id ); } case 5: { ShowLeaveConfirmMenu( id ); } case 6: { ShowLeaderMenu( id ); } case 7: { ShowMembersMenu( id ); } } return PLUGIN_HANDLED; }
public Cmd_CreateGang( id ) { new bool:bAdmin = false; if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE ) { bAdmin = true; } else if( cs_get_user_money( id ) < get_pcvar_num( g_pCreateCost ) ) { ColorChat( id, NORMAL, "%s You do not have enough points to create a gang.", g_szPrefix ); return PLUGIN_HANDLED; } else if( g_iGang[ id ] > -1 ) { ColorChat( id, NORMAL, "%s You cannot create a gang if you are already in one!", g_szPrefix ); return PLUGIN_HANDLED; } else if( cs_get_user_team( id ) != CS_TEAM_T ) { ColorChat( id, NORMAL, "%s Only ^03prisoners ^01can create gangs!", g_szPrefix ); return PLUGIN_HANDLED; } new szArgs[ 60 ]; read_args( szArgs, charsmax( szArgs ) ); remove_quotes( szArgs ); if( TrieKeyExists( g_tGangNames, szArgs ) ) { ColorChat( id, NORMAL, "%s That gang with that name already exists.", g_szPrefix ); Cmd_Gang( id ); return PLUGIN_HANDLED; } new aData[ GangInfo ]; aData[ GangName ] = szArgs; aData[ GangHP ] = 0; aData[ GangStealing ] = 0; aData[ GangStamina ] = 0; aData[ GangWeaponDrop ] = 0; aData[ GangDamage ] = 0; aData[ NumMembers ] = 0; aData[ GangGetCash ] = 0; aData[ GangMembers ] = _:TrieCreate(); ArrayPushArray( g_aGangs, aData ); if( !bAdmin ) cs_set_user_money( id, cs_get_user_money( id ) - get_pcvar_num(g_pCreateCost)); set_user_gang( id, ArraySize( g_aGangs ) - 1, STATUS_LEADER ); ColorChat( id, NORMAL, "%s You have successfully created gang '^03%s^01'.", g_szPrefix, szArgs ); return PLUGIN_HANDLED; }
public ShowInviteMenu( id ) { new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new szInfo[ 6 ], hMenu; hMenu = menu_create( "Choose a Player to Invite:", "InviteMenu_Handler" ); new szName[ 32 ]; for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( iPlayer == id || g_iGang[ iPlayer ] == g_iGang[ id ] || cs_get_user_team( iPlayer ) == CS_TEAM_SPECTATOR ) continue; if( g_iGang[ iPlayer ] > -1 ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szInfo, charsmax( szInfo ) ); menu_additem( hMenu, szName, szInfo ); } menu_display( id, hMenu, 0 ); }
public InviteMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { Cmd_Gang( id ); return PLUGIN_HANDLED; } new szData[ 6 ], iAccess, hCallback, szName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, 31, hCallback ); new iPlayer = str_to_num( szData );
if( !is_user_connected( iPlayer ) ) return PLUGIN_HANDLED; ShowInviteConfirmMenu( id, iPlayer );
ColorChat( id, NORMAL, "%s You have successfully invited %s to join your gang.", g_szPrefix, szName ); Cmd_Gang( id ); return PLUGIN_HANDLED; }
public ShowInviteConfirmMenu( id, iPlayer ) { new szName[ 32 ]; get_user_name( id, szName, charsmax( szName ) ); new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); new szMenuTitle[ 128 ]; formatex( szMenuTitle, charsmax( szMenuTitle ), "%s Invited You to Join %s", szName, aData[ GangName ] ); new hMenu = menu_create( szMenuTitle, "InviteConfirmMenu_Handler" ); new szInfo[ 6 ]; num_to_str( g_iGang[ id ], szInfo, 5 ); menu_additem( hMenu, "Accept Invitation", szInfo ); menu_additem( hMenu, "Decline Invitation", "-1" ); menu_display( iPlayer, hMenu, 0 ); }
public InviteConfirmMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) return PLUGIN_HANDLED; new szData[ 6 ], iAccess, hCallback; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback ); new iGang = str_to_num( szData ); if( iGang == -1 ) return PLUGIN_HANDLED; if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER ) { ColorChat( id, NORMAL, "%s You cannot leave your gang while you are the leader.", g_szPrefix ); return PLUGIN_HANDLED; } set_user_gang( id, iGang ); new aData[ GangInfo ]; ArrayGetArray( g_aGangs, iGang, aData ); ColorChat( id, NORMAL, "%s You have successfully joined the gang ^03%s^01.", g_szPrefix, aData[ GangName ] ); return PLUGIN_HANDLED; }
public ShowSkillsMenu( id ) { static szMenu[ 512 ], iLen, iKeys, aData[ GangInfo ]; 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; } ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); iLen = formatex( szMenu, charsmax( szMenu ), "\ySkills Menu^n^n" ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r1. \wHealth Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pHealthCost ), aData[ GangHP ], get_pcvar_num( g_pHealthMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r2. \wStealing Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pStealingCost ), aData[ GangStealing ], get_pcvar_num( g_pStealingMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r3. \wDamage Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pDamageCost ), aData[ GangDamage ], get_pcvar_num( g_pDamageMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r4. \wWeapon Drop Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pWeaponDropCost ), aData[ GangWeaponDrop ], get_pcvar_num( g_pWeaponDropMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r5. \wSpeed Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pStaminaCost ), aData[ GangStamina ], get_pcvar_num( g_pStaminaMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "\r6. \wGetCash Upgrade [\rCost: \y%i Cash\w] \y[Level:%i/%i]^n", get_pcvar_num( g_pGetCashCost ), aData[ GangGetCash ], get_pcvar_num( g_pGetCashMax ) ); iLen += formatex( szMenu[ iLen ], 511 - iLen, "^n\r0. \wExit" ); show_menu( id, iKeys, szMenu, -1, "Skills Menu" ); }
public SkillsMenu_Handler( id, iKey ) { new aData[ GangInfo ]; ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); switch( ( iKey + 1 ) % 10 ) { case 0: { Cmd_Gang( id ); return PLUGIN_HANDLED; } case 1: { if( aData[ GangHP ] == get_pcvar_num( g_pHealthMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangHP ] > get_pcvar_num( g_pHealthMax ) ) { aData[ GangHP ] = get_pcvar_num( g_pHealthMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pHealthCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangHP ]++; cs_set_user_money( id, iRemaining ); } case 2: { if( aData[ GangStealing ] == get_pcvar_num( g_pStealingMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangStealing ] > get_pcvar_num( g_pStealingMax ) ) { aData[ GangStealing ] = get_pcvar_num( g_pStealingMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pStealingCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangStealing ]++; cs_set_user_money( id, iRemaining); } case 3: { if( aData[ GangDamage ] == get_pcvar_num( g_pDamageMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangDamage ] > get_pcvar_num( g_pDamageMax ) ) { aData[ GangDamage ] = get_pcvar_num( g_pDamageMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pDamageCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangDamage ]++; cs_set_user_money( id, iRemaining); } case 4: { if( aData[ GangWeaponDrop ] == get_pcvar_num( g_pWeaponDropMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangWeaponDrop ] > get_pcvar_num( g_pWeaponDropMax ) ) { aData[ GangWeaponDrop ] = get_pcvar_num( g_pWeaponDropMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pWeaponDropCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangWeaponDrop ]++; cs_set_user_money( id, iRemaining ); } case 5: { if( aData[ GangStamina ] == get_pcvar_num( g_pStaminaMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangStamina ] > get_pcvar_num( g_pStaminaMax ) ) { aData[ GangStamina ] = get_pcvar_num( g_pStaminaMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pStaminaCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangStamina ]++; cs_set_user_money( id, iRemaining ); } case 6: { if( aData[ GangGetCash ] == get_pcvar_num( g_pGetCashMax ) ) { ColorChat( id, NORMAL, "%s Your gang is already at the max level for that skill.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } else if( aData[ GangGetCash ] > get_pcvar_num( g_pGetCashMax ) ) { aData[ GangGetCash ] = get_pcvar_num( g_pGetCashMax ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } new iRemaining = cs_get_user_money( id ) - get_pcvar_num( g_pGetCashCost ); if( iRemaining < 0 ) { ColorChat( id, NORMAL, "%s You don't have enough points for that.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } aData[ GangGetCash ]++; cs_set_user_money( id, iRemaining ); } } ArraySetArray( g_aGangs, g_iGang[ id ], aData ); new iPlayers[ 32 ], iNum, iPlayer; new szName[ 32 ]; get_players( iPlayers, iNum ); for( new i = 0; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( iPlayer == id || g_iGang[ iPlayer ] != g_iGang[ id ] ) continue; ColorChat( iPlayer, NORMAL, "%s ^03%s ^01has just upgraded one of your gang's skills.", g_szPrefix, szName ); } ColorChat( id, NORMAL, "%s You have successfully upgraded your gang.", g_szPrefix ); ShowSkillsMenu( id ); return PLUGIN_HANDLED; } public Cmd_Top10( id ) { new iSize = ArraySize( g_aGangs ); new iOrder[ 100 ][ 2 ]; new aData[ GangInfo ]; for( new i = 0; i < iSize; i++ ) { ArrayGetArray( g_aGangs, i, aData ); iOrder[ i ][ 0 ] = i; iOrder[ i ][ 1 ] = aData[ GangKills ]; } SortCustom2D( iOrder, iSize, "Top10_Sort" ); new szMessage[ 2048 ]; formatex( szMessage, charsmax( szMessage ), "<body bgcolor=#000000><font color=#FFB000><pre>" ); format( szMessage, charsmax( szMessage ), "%s%2s %-22.22s %7s %4s %10s %9s %9s %11s %8s^n", szMessage, "#", "Name", "Kills", "HP", "Stealing", "GetCash", "Stamina", "WeaponDrop", "Damage" ); for( new i = 0; i < min( 10, iSize ); i++ ) { ArrayGetArray( g_aGangs, iOrder[ i ][ 0 ], aData ); format( szMessage, charsmax( szMessage ), "%s%-2d %22.22s %7d %4d %10d %9d %9d %11d %8d^n", szMessage, i + 1, aData[ GangName ], aData[ GangKills ], aData[ GangHP ], aData[ GangStealing ], aData[ GangGetCash ], aData[ GangStamina], aData[ GangWeaponDrop ], aData[ GangDamage ] ); } show_motd( id, szMessage, "Gang Top 10" ); }
public Top10_Sort( const iElement1[ ], const iElement2[ ], const iArray[ ], szData[], iSize ) { if( iElement1[ 1 ] > iElement2[ 1 ] ) return -1; else if( iElement1[ 1 ] < iElement2[ 1 ] ) return 1; return 0; }
public ShowLeaveConfirmMenu( id ) { new hMenu = menu_create( "Are you sure you want to leave?", "LeaveConfirmMenu_Handler" ); menu_additem( hMenu, "Yes, Leave Now", "0" ); menu_additem( hMenu, "No, Don't Leave", "1" ); menu_display( id, hMenu, 0 ); }
public LeaveConfirmMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) return PLUGIN_HANDLED; new szData[ 6 ], iAccess, hCallback; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback ); switch( str_to_num( szData ) ) { case 0: { if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER ) { ColorChat( id, NORMAL, "%s You must transfer leadership before leaving this gang.", g_szPrefix ); Cmd_Gang( id ); return PLUGIN_HANDLED; } ColorChat( id, NORMAL, "%s You have successfully left your gang.", g_szPrefix ); set_user_gang( id, -1 ); Cmd_Gang( id ); } case 1: Cmd_Gang( id ); } return PLUGIN_HANDLED; }
public ShowLeaderMenu( id ) { new hMenu = menu_create( "Gang Leader Menu", "LeaderMenu_Handler" ); new iStatus = getStatus( id, g_iGang[ id ] ); if( iStatus == STATUS_LEADER ) { menu_additem( hMenu, "Disband Gang", "0" ); menu_additem( hMenu, "Transfer Leadership", "1" ); menu_additem( hMenu, "Add An Admin", "4" ); menu_additem( hMenu, "Remove An Admin", "5" ); } menu_additem( hMenu, "Kick From Gang", "2" ); menu_additem( hMenu, "Change Gang Name", "3" ); menu_display( id, hMenu, 0 ); }
public LeaderMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { Cmd_Gang( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback ); switch( str_to_num( szData ) ) { case 0: { ShowDisbandConfirmMenu( id ); } case 1: { ShowTransferMenu( id ); } case 2: { ShowKickMenu( id ); } case 3: { client_cmd( id, "messagemode New_Name" ); } case 4: { ShowAddAdminMenu( id ); } case 5: { ShowRemoveAdminMenu( id ); } } return PLUGIN_HANDLED; }
public ShowDisbandConfirmMenu( id ) { new hMenu = menu_create( "Are you sure you want to disband the gang?", "DisbandConfirmMenu_Handler" ); menu_additem( hMenu, "Yes, Disband Now", "0" ); menu_additem( hMenu, "No, Don't Disband", "1" ); menu_display( id, hMenu, 0 ); }
public DisbandConfirmMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) return PLUGIN_HANDLED; new szData[ 6 ], iAccess, hCallback; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback ); switch( str_to_num( szData ) ) { case 0: { ColorChat( id, NORMAL, "%s You have successfully disbanded your gang.", g_szPrefix ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new iPlayer; for( new i = 0; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( iPlayer == id ) continue; if( g_iGang[ id ] != g_iGang[ iPlayer ] ) continue;
ColorChat( iPlayer, NORMAL, "%s Your gang has been disband by its leader.", g_szPrefix ); set_user_gang( iPlayer, -1 ); } new iGang = g_iGang[ id ]; set_user_gang( id, -1 ); ArrayDeleteItem( g_aGangs, iGang );
Cmd_Gang( id ); } case 1: Cmd_Gang( id ); } return PLUGIN_HANDLED; }
public ShowTransferMenu( id ) { new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum, "e", "TERRORIST" ); new hMenu = menu_create( "Transfer Leadership to:", "TransferMenu_Handler" ); new szName[ 32 ], szData[ 6 ]; for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szData, charsmax( szData ) ); menu_additem( hMenu, szName, szData ); } menu_display( id, hMenu, 0 ); }
public TransferMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { ShowLeaderMenu( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ], szName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback ); new iPlayer = str_to_num( szData ); if( !is_user_connected( iPlayer ) ) { ColorChat( id, NORMAL, "%s That player is no longer connected.", g_szPrefix ); ShowTransferMenu( id ); return PLUGIN_HANDLED; } set_user_gang( iPlayer, g_iGang[ id ], STATUS_LEADER ); set_user_gang( id, g_iGang[ id ], STATUS_ADMIN ); Cmd_Gang( id ); new iPlayers[ 32 ], iNum, iTemp; get_players( iPlayers, iNum );
for( new i = 0; i < iNum; i++ ) { iTemp = iPlayers[ i ]; if( iTemp == iPlayer ) { ColorChat( iTemp, NORMAL, "%s You are the new leader of your gang.", g_szPrefix ); continue; } else if( g_iGang[ iTemp ] != g_iGang[ id ] ) continue; ColorChat( iTemp, NORMAL, "%s ^03%s^01 is the new leader of your gang.", g_szPrefix, szName ); } return PLUGIN_HANDLED; }
public ShowKickMenu( id ) { new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new hMenu = menu_create( "Kick Player From Gang:", "KickMenu_Handler" ); new szName[ 32 ], szData[ 6 ]; for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szData, charsmax( szData ) ); menu_additem( hMenu, szName, szData ); } menu_display( id, hMenu, 0 ); }
public KickMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { ShowLeaderMenu( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ], szName[ 32 ], KickerName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback ); new iPlayer = str_to_num( szData ); get_user_name(id, KickerName, 31) if( !is_user_connected( iPlayer ) ) { ColorChat( id, NORMAL, "%s That player is no longer connected.", g_szPrefix ); ShowTransferMenu( id ); return PLUGIN_HANDLED; } else if(getStatus( iPlayer, g_iGang[ iPlayer ] ) == STATUS_LEADER && !get_pcvar_num( g_pLeadersKick )) { ColorChat( id, NORMAL, "%s That player Is The Leader!.", g_szPrefix ); ColorChat( iPlayer, NORMAL, "%s %s Tried To Kick You From Your Own Gang! Get Revenge", g_szPrefix, KickerName); ShowTransferMenu( id ); return PLUGIN_HANDLED; } set_user_gang( iPlayer, -1 ); Cmd_Gang( id ); new iPlayers[ 32 ], iNum, iTemp; get_players( iPlayers, iNum ); for( new i = 0; i < iNum; i++ ) { iTemp = iPlayers[ i ]; if( iTemp == iPlayer || g_iGang[ iTemp ] != g_iGang[ id ] ) continue; ColorChat( iTemp, NORMAL, "%s ^03%s^01 has been kicked from the gang.", g_szPrefix, szName ); } ColorChat( iPlayer, NORMAL, "%s You have been kicked from your gang.", g_szPrefix ); return PLUGIN_HANDLED; }
public ChangeName_Handler( id ) { if( g_iGang[ id ] == -1 || getStatus( id, g_iGang[ id ] ) == STATUS_MEMBER ) { return; } new iGang = g_iGang[ id ]; new szArgs[ 64 ]; read_args( szArgs, charsmax( szArgs ) ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new bool:bInGang[ 33 ]; new iStatus[ 33 ]; for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ id ] != g_iGang[ iPlayer ] ) continue; bInGang[ iPlayer ] = true; iStatus[ iPlayer ] = getStatus( id, iGang ); set_user_gang( iPlayer, -1 ); } new aData[ GangInfo ]; ArrayGetArray( g_aGangs, iGang, aData ); aData[ GangName ] = szArgs; ArraySetArray( g_aGangs, iGang, aData ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( !bInGang[ iPlayer ] ) continue; set_user_gang( iPlayer, iGang, iStatus[ id ] ); } } public ShowAddAdminMenu( id ) { new iPlayers[ 32 ], iNum; new szName[ 32 ], szData[ 6 ]; new hMenu = menu_create( "Choose a Player to Promote:", "AddAdminMenu_Handler" ); get_players( iPlayers, iNum ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) > STATUS_MEMBER ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szData, charsmax( szData ) ); menu_additem( hMenu, szName, szData ); } menu_display( id, hMenu, 0 ); }
public AddAdminMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { menu_destroy( hMenu ); ShowLeaderMenu( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ], szName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback ); new iChosen = str_to_num( szData ); if( !is_user_connected( iChosen ) ) { menu_destroy( hMenu ); ShowLeaderMenu( id ); return PLUGIN_HANDLED; } set_user_gang( iChosen, g_iGang[ id ], STATUS_LEADER ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen ) continue; ColorChat( iPlayer, NORMAL, "%s ^03%s ^01has been promoted to an admin of your gang.", g_szPrefix, szName ); } ColorChat( iChosen, NORMAL, "%s ^01You have been promoted to an admin of your gang.", g_szPrefix ); menu_destroy( hMenu ); return PLUGIN_HANDLED; }
public ShowRemoveAdminMenu( id ) { new iPlayers[ 32 ], iNum; new szName[ 32 ], szData[ 6 ]; new hMenu = menu_create( "Choose a Player to Demote:", "RemoveAdminMenu_Handler" ); get_players( iPlayers, iNum ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) != STATUS_ADMIN ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); num_to_str( iPlayer, szData, charsmax( szData ) ); menu_additem( hMenu, szName, szData ); } menu_display( id, hMenu, 0 ); }
public RemoveAdminMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { menu_destroy( hMenu ); ShowLeaderMenu( id ); return PLUGIN_HANDLED; } new iAccess, hCallback, szData[ 6 ], szName[ 32 ]; menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback ); new iChosen = str_to_num( szData ); if( !is_user_connected( iChosen ) ) { menu_destroy( hMenu ); ShowLeaderMenu( id ); return PLUGIN_HANDLED; } set_user_gang( iChosen, g_iGang[ id ], STATUS_MEMBER ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen ) continue; ColorChat( iPlayer, NORMAL, "%s ^03%s ^01has been demoted from being an admin of your gang.", g_szPrefix, szName ); } ColorChat( iChosen, NORMAL, "%s ^01You have been demoted from being an admin of your gang.", g_szPrefix ); menu_destroy( hMenu ); return PLUGIN_HANDLED; } public ShowMembersMenu( id ) { new szName[ 64 ], iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new hMenu = menu_create( "Online Members:", "MemberMenu_Handler" ); for( new i = 0, iPlayer; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; if( g_iGang[ id ] != g_iGang[ iPlayer ] ) continue; get_user_name( iPlayer, szName, charsmax( szName ) ); switch( getStatus( iPlayer, g_iGang[ id ] ) ) { case STATUS_MEMBER: { add( szName, charsmax( szName ), " \r[Member]" ); } case STATUS_ADMIN: { add( szName, charsmax( szName ), " \r[Admin]" ); } case STATUS_LEADER: { add( szName, charsmax( szName ), " \r[Leader]" ); } }
menu_additem( hMenu, szName ); } menu_display( id, hMenu, 0 ); }
public MemberMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { menu_destroy( hMenu ); Cmd_Gang( id ); return PLUGIN_HANDLED; } menu_destroy( hMenu ); ShowMembersMenu( id ) return PLUGIN_HANDLED; }
// Credits to Tirant from zombie mod and xOR from xRedirect public LoadGangs() { new szConfigsDir[ 60 ]; get_configsdir( szConfigsDir, charsmax( szConfigsDir ) ); add( szConfigsDir, charsmax( szConfigsDir ), "/jb_gangs.ini" ); new iFile = fopen( szConfigsDir, "rt" ); new aData[ GangInfo ]; new szBuffer[ 512 ], szData[ 6 ], szValue[ 6 ], i, iCurGang; while( !feof( iFile ) ) { fgets( iFile, szBuffer, charsmax( szBuffer ) ); trim( szBuffer ); remove_quotes( szBuffer ); if( !szBuffer[ 0 ] || szBuffer[ 0 ] == ';' ) { continue; } if( szBuffer[ 0 ] == '[' && szBuffer[ strlen( szBuffer ) - 1 ] == ']' ) { copy( aData[ GangName ], strlen( szBuffer ) - 2, szBuffer[ 1 ] ); aData[ GangHP ] = 0; aData[ GangStealing ] = 0; aData[ GangStamina ] = 0; aData[ GangWeaponDrop ] = 0; aData[ GangDamage ] = 0; aData[ GangGetCash ] = 0; aData[ GangKills ] = 0; aData[ NumMembers ] = 0; aData[ GangMembers ] = _:TrieCreate(); if( TrieKeyExists( g_tGangNames, aData[ GangName ] ) ) { new szError[ 256 ]; formatex( szError, charsmax( szError ), "[JB Gangs] Gang already exists: %s", aData[ GangName ] ); set_fail_state( szError ); } ArrayPushArray( g_aGangs, aData ); TrieSetCell( g_tGangNames, aData[ GangName ], iCurGang );
log_amx( "Gang Created: %s", aData[ GangName ] ); iCurGang++; continue; } strtok( szBuffer, szData, 31, szValue, 511, '=' ); trim( szData ); trim( szValue ); if( TrieGetCell( g_tGangValues, szData, i ) ) { ArrayGetArray( g_aGangs, iCurGang - 1, aData ); switch( i ) { case VALUE_HP: aData[ GangHP ] = str_to_num( szValue ); case VALUE_STEALING: aData[ GangStealing ] = str_to_num( szValue ); case VALUE_STAMINA: aData[ GangStamina ] = str_to_num( szValue ); case VALUE_WEAPONDROP: aData[ GangWeaponDrop ] = str_to_num( szValue ); case VALUE_DAMAGE: aData[ GangDamage ] = str_to_num( szValue ); case VALUE_GETCASH: aData[ GangGetCash ] = str_to_num( szValue ); case VALUE_KILLS: aData[ GangKills ] = str_to_num( szValue ); } ArraySetArray( g_aGangs, iCurGang - 1, aData ); } } new Array:aSQL; sqlv_read_all_ex( g_hVault, aSQL ); new aVaultData[ SQLVaultEntryEx ]; new iGang; for( i = 0; i < ArraySize( aSQL ); i++ ) { ArrayGetArray( aSQL, i, aVaultData ); if( TrieGetCell( g_tGangNames, aVaultData[ SQLVEx_Key2 ], iGang ) ) { ArrayGetArray( g_aGangs, iGang, aData ); TrieSetCell( aData[ GangMembers ], aVaultData[ SQLVEx_Key1 ], str_to_num( aVaultData[ SQLVEx_Data ] ) ); aData[ NumMembers ]++; ArraySetArray( g_aGangs, iGang, aData ); } } fclose( iFile ); }
public SaveGangs() { new szConfigsDir[ 64 ]; get_configsdir( szConfigsDir, charsmax( szConfigsDir ) ); add( szConfigsDir, charsmax( szConfigsDir ), "/jb_gangs.ini" ); if( file_exists( szConfigsDir ) ) delete_file( szConfigsDir ); new iFile = fopen( szConfigsDir, "wt" ); new aData[ GangInfo ]; new szBuffer[ 256 ];
for( new i = 0; i < ArraySize( g_aGangs ); i++ ) { ArrayGetArray( g_aGangs, i, aData ); formatex( szBuffer, charsmax( szBuffer ), "[%s]^n", aData[ GangName ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "HP=%i^n", aData[ GangHP ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "Stealing=%i^n", aData[ GangStealing ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "Stamina=%i^n", aData[ GangStamina ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "WeaponDrop=%i^n", aData[ GangWeaponDrop ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "Damage=%i^n", aData[ GangDamage ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "GetCash=%i^n", aData[ GangGetCash ] ); fputs( iFile, szBuffer ); formatex( szBuffer, charsmax( szBuffer ), "Kills=%i^n^n", aData[ GangKills ] ); fputs( iFile, szBuffer ); } fclose( iFile ); }
set_user_gang( id, iGang, iStatus=STATUS_MEMBER ) { new szAuthID[ 35 ]; get_user_authid( id, szAuthID, charsmax( szAuthID ) );
new aData[ GangInfo ]; if( g_iGang[ id ] > -1 ) { ArrayGetArray( g_aGangs, g_iGang[ id ], aData ); TrieDeleteKey( aData[ GangMembers ], szAuthID ); aData[ NumMembers ]--; ArraySetArray( g_aGangs, g_iGang[ id ], aData ); sqlv_remove_ex( g_hVault, szAuthID, aData[ GangName ] ); }
if( iGang > -1 ) { ArrayGetArray( g_aGangs, iGang, aData ); TrieSetCell( aData[ GangMembers ], szAuthID, iStatus ); aData[ NumMembers ]++; ArraySetArray( g_aGangs, iGang, aData ); sqlv_set_num_ex( g_hVault, szAuthID, aData[ GangName ], iStatus ); }
g_iGang[ id ] = iGang; return 1; } get_user_gang( id ) { new szAuthID[ 35 ]; get_user_authid( id, szAuthID, charsmax( szAuthID ) ); new aData[ GangInfo ]; for( new i = 0; i < ArraySize( g_aGangs ); i++ ) { ArrayGetArray( g_aGangs, i, aData ); if( TrieKeyExists( aData[ GangMembers ], szAuthID ) ) return i; } return -1; } getStatus( id, iGang ) { if( !is_user_connected( id ) || iGang == -1 ) return STATUS_NONE; new aData[ GangInfo ]; ArrayGetArray( g_aGangs, iGang, aData ); new szAuthID[ 35 ]; get_user_authid( id, szAuthID, charsmax( szAuthID ) ); new iStatus; TrieGetCell( aData[ GangMembers ], szAuthID, iStatus ); return iStatus; }
Last edited by Snitch; 01-09-2014 at 07:16.
|
|