hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 13:43



Jelenlévő felhasználók

Jelenleg 318 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 316 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], Google [Bot]az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [10 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: [Banda] JailBreak
HozzászólásElküldve:2012.05.14. 13:48 
Offline
Fanatikus

Csatlakozott:2011.12.30. 16:46
Hozzászólások:150
Megköszönt másnak: 4 alkalommal
Megköszönték neki: 2 alkalommal
Hy.

Valaki le tudná nekem fordítani ezt a plugint?

https://forums.alliedmods.net/showthread.php?t=169907

Úgy hogy működjön fordítás után... aki lefordítaná kérem tesztelje... és amxx. formátumba kérem töltse vissza ide. Köszönöm...


Csatolmányok:
jb_gangs.sma [44.58KiB]
Letöltve 31 alkalommal.


A hozzászólást 2 alkalommal szerkesztették, utoljára csmania991 2012.05.14. 17:25-kor.
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.14. 15:25 
Offline
Signore Senior
Avatar

Csatlakozott:2011.09.09. 17:39
Hozzászólások:4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
"You have not access to upload .amxx files."

Ismerôs ez a mondat alliedmodsról? Na ez itt is érvényes. :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.14. 17:25 
Offline
Fanatikus

Csatlakozott:2011.12.30. 16:46
Hozzászólások:150
Megköszönt másnak: 4 alkalommal
Megköszönték neki: 2 alkalommal
Hupsz.. :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.15. 17:13 
Offline
Nagyúr
Avatar

Csatlakozott:2011.09.07. 18:41
Hozzászólások:642
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 6 alkalommal
Ha fordítani kell akkor minek amxx? XD

_________________
Kép
Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.16. 13:12 
Offline
Fanatikus

Csatlakozott:2011.12.30. 16:46
Hozzászólások:150
Megköszönt másnak: 4 alkalommal
Megköszönték neki: 2 alkalommal
Olvass a sorok közt! :D Én csak amxx. formátumba kértem..
SMA ba meg az van amit fordítani kell....


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.17. 05:45 
Offline
Nagyúr
Avatar

Csatlakozott:2011.09.07. 18:41
Hozzászólások:642
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 6 alkalommal
Miért compilelni nem tudod? *.*

_________________
Kép
Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.17. 06:24 
Offline
Tiszteletbeli
Avatar

Csatlakozott:2011.09.18. 13:01
Hozzászólások:4274
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 515 alkalommal
Vath írta:
Miért compilelni nem tudod? *.*


Miert kell offolni ^.^
uI; hazajovok leforditom:D

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.17. 12:37 
Offline
Nagyúr
Avatar

Csatlakozott:2011.09.07. 18:41
Hozzászólások:642
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 6 alkalommal
Az élet nagy kérdései :lol:

_________________
Kép
Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.18. 19:01 
Offline
Nagyúr
Avatar

Csatlakozott:2010.11.21. 18:04
Hozzászólások:557
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 74 alkalommal
Kód:
   
   /*
         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,
         GangGravity,
         GangDamage,
         GangStamina,
         GangWeaponDrop,
         GangKills,
         NumMembers
      };
         
      enum
      {
         VALUE_HP,
         VALUE_STEALING,
         VALUE_GRAVITY,
         VALUE_DAMAGE,
         VALUE_STAMINA,
         VALUE_WEAPONDROP,
         VALUE_KILLS
      }

      enum
      {
         STATUS_NONE,
         STATUS_MEMBER,
         STATUS_ADMIN,
         STATUS_LEADER
      };

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

      new const g_szPrefix[ ] = "^04[Gang System]^01";

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

   /* Vault */
   
      new SQLVault:g_hVault;
      new SQLVault:g_hPointsVault;

   /* Arrays */
   
      new Array:g_aGangs;

   /* Pcvars */
   
      new g_pCreateCost;

      new g_pHealthCost;
      new g_pStealingCost;
      new g_pGravityCost;
      new g_pDamageCost;
      new g_pStaminaCost;
      new g_pWeaponDropCost;

      new g_pHealthMax;
      new g_pStealingMax;
      new g_pGravityMax;
      new g_pDamageMax;
      new g_pStaminaMax;
      new g_pWeaponDropMax;

      new g_pHealthPerLevel;
      new g_pStealingPerLevel;
      new g_pGravityPerLevel;
      new g_pDamagePerLevel;
      new g_pStaminaPerLevel;
      new g_pWeaponDropPerLevel;

      new g_pPointsPerKill;
      new g_pHeadshotBonus;

      new g_pMaxMembers;
      new g_pAdminCreate;

   /* Integers */
   
      new g_iGang[ 33 ];
      new g_iPoints[ 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_hPointsVault         = sqlv_open_local( "jb_points", true );
      
      g_pCreateCost         = register_cvar( "jb_gang_cost",       "50" );
      g_pHealthCost         = register_cvar( "jb_health_cost",       "20" );
      g_pStealingCost       = register_cvar( "jb_stealing_cost",    "20" );
      g_pGravityCost         = register_cvar( "jb_gravity_cost",    "20" );
      g_pDamageCost         = register_cvar( "jb_damage_cost",       "20" );
      g_pStaminaCost         = register_cvar( "jb_stamina_cost",    "20" );
      g_pWeaponDropCost      = register_cvar( "jb_weapondrop_cost",    "20" );

      g_pHealthMax         = register_cvar( "jb_health_max",       "10" );
      g_pStealingMax         = register_cvar( "jb_stealing_max",    "10" );
      g_pGravityMax         = register_cvar( "jb_gravity_max",       "10" ); // Max * Gravity Per Level must be LESS than 800
      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_pHealthPerLevel      = register_cvar( "jb_health_per",       "10"    );
      g_pStealingPerLevel      = register_cvar( "jb_stealing_per",    "0.05"    );
      g_pGravityPerLevel      = register_cvar( "jb_gravity_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_pPointsPerKill      = register_cvar( "jb_points_per_kill",   "3" );
      g_pHeadshotBonus      = register_cvar( "jb_headshot_bonus",   "2" );
      
      g_pMaxMembers         = register_cvar( "jb_max_members",      "10" );
      g_pAdminCreate         = register_cvar( "jb_admin_create",    "0" ); // Admins can create gangs without points
      
      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_event( "DeathMsg", "Event_DeathMsg", "a" );
            
      register_clcmd( "say /gang", "Cmd_Gang" );
      register_clcmd( "gang_name", "Cmd_CreateGang" );
      
      LoadGangs();
   }

   public client_disconnect( id )
   {
      g_iGang[ id ] = -1;
      
      new szAuthID[ 35 ];
      get_user_authid( id, szAuthID, charsmax( szAuthID ) );
      
      sqlv_set_num( g_hPointsVault, szAuthID, g_iPoints[ id ] );
   }

   public client_putinserver( id )
   {
      g_iGang[ id ] = get_user_gang( id );
      new szAuthID[ 35 ];
      get_user_authid( id, szAuthID, charsmax( szAuthID ) );
      
      g_iPoints[ id ] = sqlv_get_num( g_hPointsVault, szAuthID );
   }

   public plugin_end()
   {
      SaveGangs();
      sqlv_close( g_hVault );
   }

   public Ham_PlayerSpawn_Post( id )
   {
      if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
         return HAM_IGNORED;
         
      if( g_iGang[ id ] == -1 )
      {
         return HAM_IGNORED;
      }
         
      new aData[ GangInfo ];
      ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
      
      new iHealth = 100 + aData[ GangHP ] * get_pcvar_num( g_pHealthPerLevel );
      set_user_health( id, iHealth );
      
      new iGravity = 800 - ( get_pcvar_num( g_pGravityPerLevel ) * aData[ GangGravity ] );
      set_user_gravity( id, float( iGravity ) / 800.0 );
         
      return HAM_IGNORED;
   }

   public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )
   {
      if( !is_user_alive( iAttacker ) || cs_get_user_team( iAttacker ) != CS_TEAM_T )
         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_T )
      {
         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 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 ) );
      }
      
      g_iPoints[ iKiller ] += iTotal;
      
      return PLUGIN_CONTINUE;
   }

   public Cmd_Gang( id )
   {   
      if( !is_user_connected( id ) || cs_get_user_team( id ) != CS_TEAM_T )
      {
         ColorChat( id, NORMAL, "%s Only ^03prisoners ^01can access this menu.", g_szPrefix );
         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 ),  "\yBandaMenu^n\wCurrent Banda:\y %s^n", aData[ GangName ] );
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yJB Pontok: \w%i^n^n", g_iPoints[ id ] );
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \dCreate a Gang [%i Points]^n", get_pcvar_num( g_pCreateCost ) );
      }
      
      else
      {
         iLen    =    formatex( szMenu, charsmax( szMenu ),  "\yBandaMenu^n\wCurrent Gang:\r None^n" );
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yJB Pontok: \w%i^n^n", g_iPoints[ id ] );
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \wBanda Keszites [%i Points]^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. \wEmber Hivas a bandaba^n" );
         iKeys |= MENU_KEY_2;
      }
      else
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \dEmber hivasa a bandaba ^n" );
      
      if( g_iGang[ id ] > -1 )
      {
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \wKesseg^n" );
         iKeys |= MENU_KEY_3;
      }
      
      else
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \dKesseg^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. \wKilepes Bandabol^n" );
         iKeys |= MENU_KEY_5;
      }
      
      else
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \dKilepes Bandabol^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. \wReszvevo^n" );
         iKeys |= MENU_KEY_7;
      }
         
      else
         iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \dReszvevo^n" );
      
      iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "^n\r0. \wKilepes" );
      
      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( g_iPoints[ id ] < get_pcvar_num( g_pCreateCost ) )
            {
               ColorChat( id, NORMAL, "%s Nincs eleg pontod hogy bandat alakits", 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( g_iPoints[ id ] < get_pcvar_num( g_pCreateCost ) )
      {
         ColorChat( id, NORMAL, "%s Nincs eleg pontod hogy bandat alakits", g_szPrefix );
         return PLUGIN_HANDLED;
      }
      
      else if( g_iGang[ id ] > -1 )
      {
         ColorChat( id, NORMAL, "%s Nem lehet letrehozni bandat ha van mar!", g_szPrefix );
         return PLUGIN_HANDLED;
      }
      
      else if( cs_get_user_team( id ) != CS_TEAM_T )
      {
         ColorChat( id, NORMAL, "%s Csa ^03rabok ^01hozhatnak letre bandat!", 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 Ez a banda ezen a neven mar letezik.", g_szPrefix );
         Cmd_Gang( id );
         return PLUGIN_HANDLED;
      }
      
      new aData[ GangInfo ];
      
      aData[ GangName ]       = szArgs;
      aData[ GangHP ]       = 0;
      aData[ GangStealing ]    = 0;
      aData[ GangGravity ]    = 0;
      aData[ GangStamina ]    = 0;
      aData[ GangWeaponDrop ] = 0;
      aData[ GangDamage ]    = 0;
      aData[ NumMembers ]    = 0;
      aData[ GangMembers ]    = _:TrieCreate();
      
      ArrayPushArray( g_aGangs, aData );
      
      if( !bAdmin )
         g_iPoints[ id ] -= get_pcvar_num( g_pCreateCost );
      
      set_user_gang( id, ArraySize( g_aGangs ) - 1, STATUS_LEADER );
      
      ColorChat( id, NORMAL, "%s Sikeresen létrehoztal egy bandat '^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( "Valasz ki a jatekost akit megakarsz hivni:", "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_T )
            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 Sikeresen meg hivtad %s csatlakozott a bandathoz", 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 Meghivot   %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, "Meghivas elfogadasa", szInfo );
      menu_additem( hMenu, "Meghivas Elutasitasa ", "-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 Nem tudod elhagyni a bandadat, amig te vagy a vezeto.", g_szPrefix );
         return PLUGIN_HANDLED;
      }
      
      set_user_gang( id, iGang );
      
      new aData[ GangInfo ];
      ArrayGetArray( g_aGangs, iGang, aData );
      
      ColorChat( id, NORMAL, "%s Sikeresen csatlakoztal a bandahoz ^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_0;
      }
      
      ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
      
      iLen   =   formatex( szMenu, charsmax( szMenu ), "\ySkills Menu^n^n" );
      iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r1. \wElet fejlesztese [\rCost: \y%i Pontok\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pHealthCost ), aData[ GangHP ], get_pcvar_num( g_pHealthMax ) );
      iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r2. \wLopas fejlesztese [\rCost: \y%i Pontok\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pStealingCost ), aData[ GangStealing ], get_pcvar_num( g_pStealingMax ) );
      iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r3. \wGravity fejlesztese [\rCost: \y%i Pontok\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pGravityCost ), aData[ GangGravity ], get_pcvar_num( g_pGravityMax ) );
      iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r4. \wUtes fejlesztese [\rCost: \y%i Pontok\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pDamageCost ), aData[ GangDamage ], get_pcvar_num( g_pDamageMax ) );
      iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r5. \wFegyver eldobas fejlesztese [\rAr: \y%i Szint\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pWeaponDropCost ), aData[ GangWeaponDrop ], get_pcvar_num( g_pWeaponDropMax ) );
      iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r6. \wGyorsassag fejlesztese [\rAr: \y%i Points\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pStaminaCost ), aData[ GangStamina ], get_pcvar_num( g_pStaminaMax ) );
      
      iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "^n\r0. \wKilepes" );
      
      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 A bandad mar a maximumszintnal van ezert a kezsegert.", g_szPrefix  );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pHealthCost );
            
            if( iRemaining < 0 )
            {
               ColorChat( id, NORMAL, "%s Neked nincs eleg pontod.", g_szPrefix );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            aData[ GangHP ]++;
            
            g_iPoints[ id ] = iRemaining;
         }
         
         case 2:
         {
            if( aData[ GangStealing ] == get_pcvar_num( g_pStealingMax ) )
            {
               ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnel van ezert a keszsegert.", g_szPrefix  );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pStealingCost );
            
            if( iRemaining < 0 )
            {
               ColorChat( id, NORMAL, "%s Neked nincs elég pontod.", g_szPrefix );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            aData[ GangStealing ]++;
            
            g_iPoints[ id ] = iRemaining;
         }
         
         case 3:
         {
            if( aData[ GangGravity ] == get_pcvar_num( g_pGravityMax ) )
            {
               ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnel van ezert a keszsegert", g_szPrefix  );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pGravityCost );
            
            if( iRemaining < 0 )
            {
               ColorChat( id, NORMAL, "%s Neked nincs elég pontod.", g_szPrefix );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            aData[ GangGravity ]++;
            
            g_iPoints[ id ] = iRemaining;
         }
         
         case 4:
         {
            if( aData[ GangDamage ] == get_pcvar_num( g_pDamageMax ) )
            {
               ColorChat( id, NORMAL, "%s  A bandad mar a maximumszintnel van ezert a keszsegert.", g_szPrefix  );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pDamageCost );
            
            if( iRemaining < 0 )
            {
               ColorChat( id, NORMAL, "%s Neked nincs elég pontod.", g_szPrefix );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            aData[ GangDamage ]++;
            
            g_iPoints[ id ] = iRemaining;
         }
         
         case 5:
         {
            if( aData[ GangWeaponDrop ] == get_pcvar_num( g_pWeaponDropMax ) )
            {
               ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnel van ezert a keszsegert.", g_szPrefix  );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pWeaponDropCost );
            
            if( iRemaining < 0 )
            {
               ColorChat( id, NORMAL, "%s Neked nincs elég pontod", g_szPrefix );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            aData[ GangWeaponDrop ]++;
            
            g_iPoints[ id ] = iRemaining;
         }
         
         case 6:
         {
            if( aData[ GangStamina ] == get_pcvar_num( g_pStaminaMax ) )
            {
               ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnel van ezert a keszsegert.", g_szPrefix  );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pStaminaCost );
            
            if( iRemaining < 0 )
            {
               ColorChat( id, NORMAL, "%s Neked nincs elég pontod", g_szPrefix );
               ShowSkillsMenu( id );
               return PLUGIN_HANDLED;
            }
            
            aData[ GangStamina ]++;
            
            g_iPoints[ 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 ^01eppen fejlesztette a bandad keszsegei kozul az egyiket.", g_szPrefix, szName );
      }
      
      ColorChat( id, NORMAL, "%s Sikeresen fejlesztetted a bandadat.", 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",
         "Gravity", "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[ GangGravity ], 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( "Biztos vagy benne hogy tavozni akarsz?", "LeaveConfirmMenu_Handler" );
      menu_additem( hMenu, "Igen", "0" );
      menu_additem( hMenu, "Nem", "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 Neked vezetest at kell adnod mielőtt elhagyod a bandat.", g_szPrefix );
               Cmd_Gang( id );
               
               return PLUGIN_HANDLED;
            }
            
            ColorChat( id, NORMAL, "%s Sikeresen elhagytad a bandadat.", 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, "Banda feloszlatasa", "0" );
         menu_additem( hMenu, "Megvaltoztatja a vezetest", "1" );
         menu_additem( hMenu, "Hozzaad egy admint", "4" );
         menu_additem( hMenu, "Torol egy admint", "5" );
      }
      
      menu_additem( hMenu, "Kirugas a bandabol", "2" );
      menu_additem( hMenu, "Banda at nevezese", "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( "Biztos vagy, hogy fel akarod oszlatni a bandat?", "DisbandConfirmMenu_Handler" );
      menu_additem( hMenu, "Igen", "0" );
      menu_additem( hMenu, "Nem", "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 Sikeresen feloszlattad a bandadat.", 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 A bandad a vezetoje által feloszlik a banda.", 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 Ez a jatekos mar nem csatlakozik.", 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 Te vagy az uj vezetoje a banda.", g_szPrefix );
            continue;
         }
         
         else if( g_iGang[ iTemp ] != g_iGang[ id ] )
            continue;
         
         ColorChat( iTemp, NORMAL, "%s ^03%s^01 az uj banda vezetoje", g_szPrefix, szName );
      }
      
      return PLUGIN_HANDLED;
   }


   public ShowKickMenu( id )
   {
      new iPlayers[ 32 ], iNum;
      get_players( iPlayers, iNum );
      
      new hMenu = menu_create( "Kiruga a bandabol:", "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 ];
      
      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, -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 kirugtad a bandabol.", g_szPrefix, szName );
      }
      
      ColorChat( iPlayer, NORMAL, "%s Teged kirugtak a bandabol", g_szPrefix, szName );
      
      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( "Valassz egy jatekost az elolepteteshez:", "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 ^01eloleptette az admin a bandad.", g_szPrefix, szName );
      }
      
      ColorChat( iChosen, NORMAL, "%s ^01Egy admin felfokozta a bandad.", g_szPrefix );
      
      menu_destroy( hMenu );
      return PLUGIN_HANDLED;
   }

   public ShowRemoveAdminMenu( id )
   {
      new iPlayers[ 32 ], iNum;
      new szName[ 32 ], szData[ 6 ];
      new hMenu = menu_create( "Valaszt egy jatekost lefokozni:", "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 ^01lefogozta egy admin a bandad.", g_szPrefix, szName );
      }
      
      ColorChat( iChosen, NORMAL, "%s ^01Teged lefokoztak egy admin a bandad.", 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[ GangGravity ] = 0;
            aData[ GangStamina ] = 0;
            aData[ GangWeaponDrop ] = 0;
            aData[ GangDamage ] = 0;
            aData[ GangKills ] = 0;
            aData[ NumMembers ] = 0;
            aData[ GangMembers ] = _:TrieCreate();
            
            if( TrieKeyExists( g_tGangNames, aData[ GangName ] ) )
            {
               new szError[ 256 ];
               formatex( szError, charsmax( szError ), "[JB Bandak] Banda mar letezik: %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_GRAVITY:
                  aData[ GangGravity ] = 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_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 ), "Lopakodas=%i^n", aData[ GangStealing ] );
         fputs( iFile, szBuffer );
         
         formatex( szBuffer, charsmax( szBuffer ), "Gravity=%i^n", aData[ GangGravity ] );
         fputs( iFile, szBuffer );
         
         formatex( szBuffer, charsmax( szBuffer ), "Kitartas=%i^n", aData[ GangStamina ] );
         fputs( iFile, szBuffer );
         
         formatex( szBuffer, charsmax( szBuffer ), "Fegyver Dobas=%i^n", aData[ GangWeaponDrop ] );
         fputs( iFile, szBuffer );
         
         formatex( szBuffer, charsmax( szBuffer ), "Sebzes=%i^n", aData[ GangDamage ] );
         fputs( iFile, szBuffer );
         
         formatex( szBuffer, charsmax( szBuffer ), "Oles=%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;
   }


Tess :D
Ha van valami értelmetlen szó javítsd ki :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [Banda] JailBreak
HozzászólásElküldve:2012.05.27. 07:43 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
Ez egy nagyon rossz fordítás. Már bocs. Még a lefordított sorokban is vannak angol szavak.
Kód:
  1.  iLen    =    formatex( szMenu, charsmax( szMenu ),  "\yBandaMenu^n\wCurrent Banda:\y %s^n", aData[ GangName ] );

  2.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yJB Pontok: \w%i^n^n", g_iPoints[ id ] );

  3.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \dCreate a Gang [%i Points]^n", get_pcvar_num( g_pCreateCost ) );


Inkább ezt használd.
Kód:
  1.    

  2.    /*

  3.          Jailbreak Gang System

  4.          H3avY Ra1n

  5.    

  6.          Description

  7.          -----------

  8.          This plugin allows prisoners to create gangs and upgrade specific skills that apply to everybody in the gang.

  9.    

  10.    

  11.          Gang Menu

  12.          ---------

  13.          Create a Gang       - Allows a user to create a gang by paying money.

  14.          Invite to Gang       - Only the leader of the gang can invite people to the gang.

  15.          Skills             - Opens the skills menu, where any member of the gang can pay money to upgrade their skills.

  16.          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)

  17.          Leave Gang          - Allows a player to leave the gang. The leader cannot leave the gang until he transfers leadership to somebody else (explained later).

  18.          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.

  19.          Online Members       - Shows a list of gang members that are currently in the server.

  20.    

  21.    

  22.          Skills

  23.          ------

  24.          HP - Increased health

  25.          Stealing - Increased money earnings.

  26.          Gravity - Lower Gravity

  27.          Damage - Increased damage

  28.          Stamina - Gives higher speed to players.

  29.          Weapon Drop - Chance of making the guard drop the weapon when you knife them. (%1 chance increase per level)

  30.    

  31.    

  32.          CVARS

  33.          -----

  34.          jb_gang_cost       - The cost to create a gang.

  35.          jb_health_cost       - The cost to upgrade gang health.

  36.          jb_stealing_cost    - The cost to upgrade gang money earning.

  37.          jb_gravity_cost    - The cost to upgrade gang gravity.

  38.          jb_damage_cost       - The cost to upgrade gang damage.

  39.          jb_stamina_cost    - The cost to upgrade gang stamina (speed).

  40.          jb_weapondrop_cost    - The cost to upgrade gang weapon drop percentage.

  41.    

  42.          Additionally there are CVars for the max level for each type of upgrade, so replace _cost above with _max.

  43.          Also there are CVars for the amount per level, so replace _cost above with _per.

  44.          

  45.          jb_points_per_kill   - The amount of points you get for a kill

  46.          jb_headshot_bonus   - The amount of points you get for a headshot

  47.          

  48.          jb_max_members      - The max amount of members a gang can hold

  49.          jb_admin_create      - Whether or not an admin can create gangs without using points

  50.    

  51.          Credits

  52.          -------

  53.          F0RCE    - Original Plugin Idea

  54.          Exolent   - SQLVault Include

  55.          Drekes    - Freezetime Fix (I was too lazy) :)

  56.    

  57.    

  58.          Changelog

  59.          ---------

  60.          September 26, 2011   - v1.0 -    Initial Release

  61.          September 27, 2011   - v1.01 -    Added more cvars, fixed a few bugs.

  62.          September 28, 2011   - v1.1 -    Added gang admins, jb points instead of money, and a few other things I can't remember :)

  63.          January 21, 2011   - v1.1.1 -   Added a cvar for whether an admin can create a gang without using points.

  64.          January 23, 2011   - v1.1.2 -    Fixed freezetime problem

  65.    

  66.    

  67.          http://forums.alliedmods.net/showthread.php?p=1563919

  68.    */

  69.  

  70.    /* Includes */

  71.      

  72.       #include < amxmodx >

  73.       #include < amxmisc >

  74.       #include < sqlvault_ex >

  75.       #include < cstrike >

  76.       #include < colorchat >

  77.       #include < hamsandwich >

  78.       #include < fun >

  79.  

  80.    /* Defines */

  81.    

  82.       #define ADMIN_CREATE   ADMIN_LEVEL_B

  83.  

  84.    /* Constants */

  85.    

  86.       new const g_szVersion[ ] = "1.1.2";

  87.  

  88.       enum _:GangInfo

  89.       {

  90.          Trie:GangMembers,

  91.          GangName[ 64 ],

  92.          GangHP,

  93.          GangStealing,

  94.          GangGravity,

  95.          GangDamage,

  96.          GangStamina,

  97.          GangWeaponDrop,

  98.          GangKills,

  99.          NumMembers

  100.       };

  101.          

  102.       enum

  103.       {

  104.          VALUE_HP,

  105.          VALUE_STEALING,

  106.          VALUE_GRAVITY,

  107.          VALUE_DAMAGE,

  108.          VALUE_STAMINA,

  109.          VALUE_WEAPONDROP,

  110.          VALUE_KILLS

  111.       }

  112.  

  113.       enum

  114.       {

  115.          STATUS_NONE,

  116.          STATUS_MEMBER,

  117.          STATUS_ADMIN,

  118.          STATUS_LEADER

  119.       };

  120.  

  121.       new const g_szGangValues[ ][ ] =

  122.       {

  123.          "HP",

  124.          "Stealing",

  125.          "Gravity",

  126.          "Damage",

  127.          "Stamina",

  128.          "WeaponDrop",

  129.          "Kills"

  130.       };

  131.  

  132.       new const g_szPrefix[ ] = "^04[Banda rendszer]^01";

  133.  

  134.    /* Tries */

  135.    

  136.       new Trie:g_tGangNames;

  137.       new Trie:g_tGangValues;

  138.  

  139.    /* Vault */

  140.    

  141.       new SQLVault:g_hVault;

  142.       new SQLVault:g_hPointsVault;

  143.  

  144.    /* Arrays */

  145.    

  146.       new Array:g_aGangs;

  147.  

  148.    /* Pcvars */

  149.    

  150.       new g_pCreateCost;

  151.  

  152.       new g_pHealthCost;

  153.       new g_pStealingCost;

  154.       new g_pGravityCost;

  155.       new g_pDamageCost;

  156.       new g_pStaminaCost;

  157.       new g_pWeaponDropCost;

  158.  

  159.       new g_pHealthMax;

  160.       new g_pStealingMax;

  161.       new g_pGravityMax;

  162.       new g_pDamageMax;

  163.       new g_pStaminaMax;

  164.       new g_pWeaponDropMax;

  165.  

  166.       new g_pHealthPerLevel;

  167.       new g_pStealingPerLevel;

  168.       new g_pGravityPerLevel;

  169.       new g_pDamagePerLevel;

  170.       new g_pStaminaPerLevel;

  171.       new g_pWeaponDropPerLevel;

  172.  

  173.       new g_pPointsPerKill;

  174.       new g_pHeadshotBonus;

  175.  

  176.       new g_pMaxMembers;

  177.       new g_pAdminCreate;

  178.  

  179.    /* Integers */

  180.    

  181.       new g_iGang[ 33 ];

  182.       new g_iPoints[ 33 ];

  183.      

  184.  

  185.    public plugin_init()

  186.    {

  187.       register_plugin( "Jailbreak Gang System", g_szVersion, "H3avY Ra1n" );

  188.      

  189.       g_aGangs             = ArrayCreate( GangInfo );

  190.  

  191.       g_tGangValues          = TrieCreate();

  192.       g_tGangNames          = TrieCreate();

  193.      

  194.       g_hVault             = sqlv_open_local( "jb_gangs", false );

  195.       sqlv_init_ex( g_hVault );

  196.  

  197.       g_hPointsVault         = sqlv_open_local( "jb_points", true );

  198.      

  199.       g_pCreateCost         = register_cvar( "jb_gang_cost",       "50" );

  200.       g_pHealthCost         = register_cvar( "jb_health_cost",       "20" );

  201.       g_pStealingCost       = register_cvar( "jb_stealing_cost",    "20" );

  202.       g_pGravityCost         = register_cvar( "jb_gravity_cost",    "20" );

  203.       g_pDamageCost         = register_cvar( "jb_damage_cost",       "20" );

  204.       g_pStaminaCost         = register_cvar( "jb_stamina_cost",    "20" );

  205.       g_pWeaponDropCost      = register_cvar( "jb_weapondrop_cost",    "20" );

  206.  

  207.       g_pHealthMax         = register_cvar( "jb_health_max",       "10" );

  208.       g_pStealingMax         = register_cvar( "jb_stealing_max",    "10" );

  209.       g_pGravityMax         = register_cvar( "jb_gravity_max",       "10" ); // Max * Gravity Per Level must be LESS than 800

  210.       g_pDamageMax         = register_cvar( "jb_damage_max",       "10" );

  211.       g_pStaminaMax         = register_cvar( "jb_stamina_max",       "10" );

  212.       g_pWeaponDropMax      = register_cvar( "jb_weapondrop_max",    "10" );

  213.  

  214.       g_pHealthPerLevel      = register_cvar( "jb_health_per",       "10"    );

  215.       g_pStealingPerLevel      = register_cvar( "jb_stealing_per",    "0.05"    );

  216.       g_pGravityPerLevel      = register_cvar( "jb_gravity_per",       "50"    );

  217.       g_pDamagePerLevel      = register_cvar( "jb_damage_per",       "3"    );

  218.       g_pStaminaPerLevel      = register_cvar( "jb_stamina_per",       "3"    );

  219.       g_pWeaponDropPerLevel    = register_cvar( "jb_weapondrop_per",    "1"    );

  220.  

  221.       g_pPointsPerKill      = register_cvar( "jb_points_per_kill",   "3" );

  222.       g_pHeadshotBonus      = register_cvar( "jb_headshot_bonus",   "2" );

  223.      

  224.       g_pMaxMembers         = register_cvar( "jb_max_members",      "10" );

  225.       g_pAdminCreate         = register_cvar( "jb_admin_create",    "0" ); // Admins can create gangs without points

  226.      

  227.       register_cvar( "jb_gang_version", g_szVersion, FCVAR_SPONLY | FCVAR_SERVER );

  228.      

  229.       register_menu( "Gang Menu", 1023, "GangMenu_Handler" );

  230.       register_menu( "Skills Menu", 1023, "SkillsMenu_Handler" );

  231.      

  232.       for( new i = 0; i < sizeof g_szGangValues; i++ )

  233.       {

  234.          TrieSetCell( g_tGangValues, g_szGangValues[ i ], i );

  235.       }

  236.  

  237.       RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1 );

  238.       RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0 );

  239.       RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Post", 1 );

  240.       RegisterHam( Ham_Item_PreFrame, "player", "Ham_PlayerResetSpeedPost", 1);

  241.      

  242.       register_event( "DeathMsg", "Event_DeathMsg", "a" );

  243.            

  244.       register_clcmd( "say /gang", "Cmd_Gang" );

  245.       register_clcmd( "gang_name", "Cmd_CreateGang" );

  246.      

  247.       LoadGangs();

  248.    }

  249.  

  250.    public client_disconnect( id )

  251.    {

  252.       g_iGang[ id ] = -1;

  253.      

  254.       new szAuthID[ 35 ];

  255.       get_user_authid( id, szAuthID, charsmax( szAuthID ) );

  256.      

  257.       sqlv_set_num( g_hPointsVault, szAuthID, g_iPoints[ id ] );

  258.    }

  259.  

  260.    public client_putinserver( id )

  261.    {

  262.       g_iGang[ id ] = get_user_gang( id );

  263.       new szAuthID[ 35 ];

  264.       get_user_authid( id, szAuthID, charsmax( szAuthID ) );

  265.      

  266.       g_iPoints[ id ] = sqlv_get_num( g_hPointsVault, szAuthID );

  267.    }

  268.  

  269.    public plugin_end()

  270.    {

  271.       SaveGangs();

  272.       sqlv_close( g_hVault );

  273.    }

  274.  

  275.    public Ham_PlayerSpawn_Post( id )

  276.    {

  277.       if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )

  278.          return HAM_IGNORED;

  279.          

  280.       if( g_iGang[ id ] == -1 )

  281.       {

  282.          return HAM_IGNORED;

  283.       }

  284.          

  285.       new aData[ GangInfo ];

  286.       ArrayGetArray( g_aGangs, g_iGang[ id ], aData );

  287.      

  288.       new iHealth = 100 + aData[ GangHP ] * get_pcvar_num( g_pHealthPerLevel );

  289.       set_user_health( id, iHealth );

  290.      

  291.       new iGravity = 800 - ( get_pcvar_num( g_pGravityPerLevel ) * aData[ GangGravity ] );

  292.       set_user_gravity( id, float( iGravity ) / 800.0 );

  293.          

  294.       return HAM_IGNORED;

  295.    }

  296.  

  297.    public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )

  298.    {

  299.       if( !is_user_alive( iAttacker ) || cs_get_user_team( iAttacker ) != CS_TEAM_T )

  300.          return HAM_IGNORED;

  301.          

  302.       if( g_iGang[ iAttacker ] == -1 )

  303.          return HAM_IGNORED;

  304.      

  305.       new aData[ GangInfo ];

  306.       ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData );

  307.      

  308.       SetHamParamFloat( 4, flDamage + ( get_pcvar_num( g_pDamagePerLevel ) * ( aData[ GangDamage ] ) ) );

  309.      

  310.       return HAM_IGNORED;

  311.    }

  312.  

  313.    public Ham_TakeDamage_Post( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )

  314.    {

  315.       if( !is_user_alive( iAttacker ) || g_iGang[ iAttacker ] == -1 || get_user_weapon( iAttacker ) != CSW_KNIFE || cs_get_user_team( iAttacker ) != CS_TEAM_T  )

  316.       {

  317.          return HAM_IGNORED;

  318.       }

  319.      

  320.       new aData[ GangInfo ];

  321.       ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData );

  322.      

  323.       new iChance = aData[ GangWeaponDrop ] * get_pcvar_num( g_pWeaponDropPerLevel );

  324.      

  325.       if( iChance == 0 )

  326.          return HAM_IGNORED;

  327.      

  328.       new bool:bDrop = ( random_num( 1, 100 ) <= iChance );

  329.      

  330.       if( bDrop )

  331.          client_cmd( iVictim, "drop" );

  332.      

  333.       return HAM_IGNORED;

  334.    }

  335.  

  336.    public Ham_PlayerResetSpeedPost( id )

  337.    {

  338.       if( g_iGang[ id ] == -1 || !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )

  339.       {

  340.          return HAM_IGNORED;

  341.       }

  342.      

  343.       new aData[ GangInfo ];

  344.       ArrayGetArray( g_aGangs, g_iGang[ id ], aData );

  345.      

  346.       if( aData[ GangStamina ] > 0 && get_user_maxspeed( id ) > 1.0 )

  347.          set_user_maxspeed( id, 250.0 + ( aData[ GangStamina ] * get_pcvar_num( g_pStaminaPerLevel ) ) );

  348.          

  349.       return HAM_IGNORED;

  350.    }

  351.  

  352.    public Event_DeathMsg()

  353.    {

  354.       new iKiller = read_data( 1 );

  355.       new iVictim = read_data( 2 );

  356.      

  357.       if( !is_user_alive( iKiller ) || cs_get_user_team( iVictim ) != CS_TEAM_CT || cs_get_user_team( iKiller ) != CS_TEAM_T )

  358.          return PLUGIN_CONTINUE;

  359.      

  360.       new iTotal = get_pcvar_num( g_pPointsPerKill ) + ( bool:read_data( 3 ) ? get_pcvar_num( g_pHeadshotBonus ) : 0 );

  361.      

  362.       if( g_iGang[ iKiller ] > -1 )

  363.       {

  364.          new aData[ GangInfo ];

  365.          ArrayGetArray( g_aGangs, g_iGang[ iKiller ], aData );

  366.          aData[ GangKills ]++;

  367.          ArraySetArray( g_aGangs, g_iGang[ iKiller ], aData );

  368.          

  369.          iTotal += iTotal * ( aData[ GangStealing ] * get_pcvar_num( g_pStealingPerLevel ) );

  370.       }

  371.      

  372.       g_iPoints[ iKiller ] += iTotal;

  373.      

  374.       return PLUGIN_CONTINUE;

  375.    }

  376.  

  377.    public Cmd_Gang( id )

  378.    {  

  379.       if( !is_user_connected( id ) || cs_get_user_team( id ) != CS_TEAM_T )

  380.       {

  381.          ColorChat( id, NORMAL, "%s Csak az ^03oroknek ^01erheto el a menu!", g_szPrefix );

  382.          return PLUGIN_HANDLED;

  383.       }

  384.      

  385.       static szMenu[ 512 ], iLen, aData[ GangInfo ], iKeys, iStatus;

  386.      

  387.       iKeys = MENU_KEY_0 | MENU_KEY_4;

  388.      

  389.       iStatus = getStatus( id, g_iGang[ id ] );

  390.      

  391.       if( g_iGang[ id ] > -1 )

  392.       {

  393.          ArrayGetArray( g_aGangs, g_iGang[ id ], aData );

  394.          iLen    =    formatex( szMenu, charsmax( szMenu ),  "\yBandaMenu^n\wJelenlegi Banda:\y %s^n", aData[ GangName ] );

  395.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yJB Pontok: \w%i^n^n", g_iPoints[ id ] );

  396.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \dBanda letrehozas [%i Pont]^n", get_pcvar_num( g_pCreateCost ) );

  397.       }

  398.      

  399.       else

  400.       {

  401.          iLen    =    formatex( szMenu, charsmax( szMenu ),  "\yBandaMenu^n\wJelenlegi banda:\r Nincs^n" );

  402.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\yJB Pontok: \w%i^n^n", g_iPoints[ id ] );

  403.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \wBanda Keszites [%i pont]^n", get_pcvar_num( g_pCreateCost ) );

  404.          

  405.          iKeys |= MENU_KEY_1;

  406.       }

  407.      

  408.      

  409.       if( iStatus > STATUS_MEMBER && g_iGang[ id ] > -1 && get_pcvar_num( g_pMaxMembers ) > aData[ NumMembers ] )

  410.       {

  411.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \wEmber Hivas a bandaba^n" );

  412.          iKeys |= MENU_KEY_2;

  413.       }

  414.       else

  415.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r2. \dEmber hivasa a bandaba ^n" );

  416.      

  417.       if( g_iGang[ id ] > -1 )

  418.       {

  419.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \wKesseg^n" );

  420.          iKeys |= MENU_KEY_3;

  421.       }

  422.      

  423.       else

  424.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r3. \dKesseg^n" );

  425.          

  426.       iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r4. \wTop-10^n" );

  427.      

  428.       if( g_iGang[ id ] > -1 )

  429.       {

  430.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \wKilepes Bandabol^n" );

  431.          iKeys |= MENU_KEY_5;

  432.       }

  433.      

  434.       else

  435.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r5. \dKilepes Bandabol^n" );

  436.      

  437.      

  438.       if( iStatus > STATUS_MEMBER )

  439.       {

  440.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r6. \wBanda Admin Menu^n" );

  441.          iKeys |= MENU_KEY_6;

  442.       }

  443.      

  444.       else

  445.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r6. \dBanda Admin Menu^n" );

  446.      

  447.       if( g_iGang[ id ] > -1 )

  448.       {

  449.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \wResztvevo^n" );

  450.          iKeys |= MENU_KEY_7;

  451.       }

  452.          

  453.       else

  454.          iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r7. \dResztvevo^n" );

  455.      

  456.       iLen   +=   formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "^n\r0. \wKilepes" );

  457.      

  458.       show_menu( id, iKeys, szMenu, -1, "Banda Menu" );

  459.      

  460.       return PLUGIN_CONTINUE;

  461.    }

  462.  

  463.    public GangMenu_Handler( id, iKey )

  464.    {

  465.       switch( ( iKey + 1 ) % 10 )

  466.       {

  467.          case 0: return PLUGIN_HANDLED;

  468.          

  469.          case 1:

  470.          {

  471.             if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE )

  472.             {

  473.                client_cmd( id, "messagemode gang_name" );

  474.             }

  475.            

  476.             else if( g_iPoints[ id ] < get_pcvar_num( g_pCreateCost ) )

  477.             {

  478.                ColorChat( id, NORMAL, "%s Nincs eleg pontod hogy bandat alakits", g_szPrefix );

  479.                return PLUGIN_HANDLED;

  480.             }

  481.            

  482.             else

  483.                client_cmd( id, "messagemode gang_name" );

  484.          }

  485.          

  486.          case 2:

  487.          {

  488.             ShowInviteMenu( id );

  489.          }

  490.          

  491.          case 3:

  492.          {

  493.             ShowSkillsMenu( id );

  494.          }

  495.          

  496.          case 4:

  497.          {

  498.             Cmd_Top10( id );

  499.          }

  500.          

  501.          case 5:

  502.          {

  503.             ShowLeaveConfirmMenu( id );

  504.          }

  505.          

  506.          case 6:

  507.          {

  508.             ShowLeaderMenu( id );

  509.          }

  510.          

  511.          case 7:

  512.          {

  513.             ShowMembersMenu( id );

  514.          }

  515.       }

  516.      

  517.       return PLUGIN_HANDLED;

  518.    }

  519.  

  520.    public Cmd_CreateGang( id )

  521.    {

  522.       new bool:bAdmin = false;

  523.      

  524.       if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE )

  525.       {

  526.          bAdmin = true;

  527.       }

  528.      

  529.       else if( g_iPoints[ id ] < get_pcvar_num( g_pCreateCost ) )

  530.       {

  531.          ColorChat( id, NORMAL, "%s Nincs eleg pontod hogy bandat alakits", g_szPrefix );

  532.          return PLUGIN_HANDLED;

  533.       }

  534.      

  535.       else if( g_iGang[ id ] > -1 )

  536.       {

  537.          ColorChat( id, NORMAL, "%s Nem lehet letrehozni bandat ha van mar!", g_szPrefix );

  538.          return PLUGIN_HANDLED;

  539.       }

  540.      

  541.       else if( cs_get_user_team( id ) != CS_TEAM_T )

  542.       {

  543.          ColorChat( id, NORMAL, "%s Csa ^03rabok ^01hozhatnak letre bandat!", g_szPrefix );

  544.          return PLUGIN_HANDLED;

  545.       }

  546.      

  547.       new szArgs[ 60 ];

  548.       read_args( szArgs, charsmax( szArgs ) );

  549.      

  550.       remove_quotes( szArgs );

  551.      

  552.       if( TrieKeyExists( g_tGangNames, szArgs ) )

  553.       {

  554.          ColorChat( id, NORMAL, "%s Ez a banda ezen a neven mar letezik.", g_szPrefix );

  555.          Cmd_Gang( id );

  556.          return PLUGIN_HANDLED;

  557.       }

  558.      

  559.       new aData[ GangInfo ];

  560.      

  561.       aData[ GangName ]       = szArgs;

  562.       aData[ GangHP ]       = 0;

  563.       aData[ GangStealing ]    = 0;

  564.       aData[ GangGravity ]    = 0;

  565.       aData[ GangStamina ]    = 0;

  566.       aData[ GangWeaponDrop ] = 0;

  567.       aData[ GangDamage ]    = 0;

  568.       aData[ NumMembers ]    = 0;

  569.       aData[ GangMembers ]    = _:TrieCreate();

  570.      

  571.       ArrayPushArray( g_aGangs, aData );

  572.      

  573.       if( !bAdmin )

  574.          g_iPoints[ id ] -= get_pcvar_num( g_pCreateCost );

  575.      

  576.       set_user_gang( id, ArraySize( g_aGangs ) - 1, STATUS_LEADER );

  577.      

  578.       ColorChat( id, NORMAL, "%s Sikeresen létrehoztal egy bandat '^03%s^01'.", g_szPrefix, szArgs );

  579.      

  580.       return PLUGIN_HANDLED;

  581.    }

  582.  

  583.    public ShowInviteMenu( id )

  584.    {  

  585.       new iPlayers[ 32 ], iNum;

  586.       get_players( iPlayers, iNum );

  587.      

  588.       new szInfo[ 6 ], hMenu;

  589.       hMenu = menu_create( "Valasz ki a jatekost akit megakarsz hivni:", "InviteMenu_Handler" );

  590.       new szName[ 32 ];

  591.      

  592.       for( new i = 0, iPlayer; i < iNum; i++ )

  593.       {

  594.          iPlayer = iPlayers[ i ];

  595.          

  596.          

  597.          if( iPlayer == id || g_iGang[ iPlayer ] == g_iGang[ id ] || cs_get_user_team( iPlayer ) != CS_TEAM_T )

  598.             continue;

  599.            

  600.          get_user_name( iPlayer, szName, charsmax( szName ) );

  601.          

  602.          num_to_str( iPlayer, szInfo, charsmax( szInfo ) );

  603.          

  604.          menu_additem( hMenu, szName, szInfo );

  605.       }

  606.          

  607.       menu_display( id, hMenu, 0 );

  608.    }

  609.  

  610.    public InviteMenu_Handler( id, hMenu, iItem )

  611.    {

  612.       if( iItem == MENU_EXIT )

  613.       {

  614.          Cmd_Gang( id );

  615.          return PLUGIN_HANDLED;

  616.       }

  617.      

  618.       new szData[ 6 ], iAccess, hCallback, szName[ 32 ];

  619.       menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, 31, hCallback );

  620.      

  621.       new iPlayer = str_to_num( szData );

  622.  

  623.       if( !is_user_connected( iPlayer ) )

  624.          return PLUGIN_HANDLED;

  625.          

  626.       ShowInviteConfirmMenu( id, iPlayer );

  627.  

  628.       ColorChat( id, NORMAL, "%s Sikeresen meg hivtad %s csatlakozott a bandathoz", g_szPrefix, szName );

  629.      

  630.       Cmd_Gang( id );

  631.       return PLUGIN_HANDLED;

  632.    }

  633.  

  634.    public ShowInviteConfirmMenu( id, iPlayer )

  635.    {

  636.       new szName[ 32 ];

  637.       get_user_name( id, szName, charsmax( szName ) );

  638.      

  639.       new aData[ GangInfo ];

  640.       ArrayGetArray( g_aGangs, g_iGang[ id ], aData );

  641.      

  642.       new szMenuTitle[ 128 ];

  643.       formatex( szMenuTitle, charsmax( szMenuTitle ), "%s Meghivot   %s", szName, aData[ GangName ] );

  644.       new hMenu = menu_create( szMenuTitle, "InviteConfirmMenu_Handler" );

  645.      

  646.       new szInfo[ 6 ];

  647.       num_to_str( g_iGang[ id ], szInfo, 5 );

  648.      

  649.       menu_additem( hMenu, "Meghivas elfogadasa", szInfo );

  650.       menu_additem( hMenu, "Meghivas Elutasitasa ", "-1" );

  651.      

  652.       menu_display( iPlayer, hMenu, 0 );  

  653.    }

  654.  

  655.    public InviteConfirmMenu_Handler( id, hMenu, iItem )

  656.    {

  657.       if( iItem == MENU_EXIT )

  658.          return PLUGIN_HANDLED;

  659.      

  660.       new szData[ 6 ], iAccess, hCallback;

  661.       menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );

  662.      

  663.       new iGang = str_to_num( szData );

  664.      

  665.       if( iGang == -1 )

  666.          return PLUGIN_HANDLED;

  667.      

  668.       if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER )

  669.       {

  670.          ColorChat( id, NORMAL, "%s Nem tudod elhagyni a bandadat, amig te vagy a vezeto.", g_szPrefix );

  671.          return PLUGIN_HANDLED;

  672.       }

  673.      

  674.       set_user_gang( id, iGang );

  675.      

  676.       new aData[ GangInfo ];

  677.       ArrayGetArray( g_aGangs, iGang, aData );

  678.      

  679.       ColorChat( id, NORMAL, "%s Sikeresen csatlakoztal a bandahoz ^03%s^01.", g_szPrefix, aData[ GangName ] );

  680.      

  681.       return PLUGIN_HANDLED;

  682.    }

  683.      

  684.  

  685.    public ShowSkillsMenu( id )

  686.    {  

  687.       static szMenu[ 512 ], iLen, iKeys, aData[ GangInfo ];

  688.      

  689.       if( !iKeys )

  690.       {

  691.          iKeys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_0;

  692.       }

  693.      

  694.       ArrayGetArray( g_aGangs, g_iGang[ id ], aData );

  695.      

  696.       iLen   =   formatex( szMenu, charsmax( szMenu ), "\ySkills Menu^n^n" );

  697.       iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r1. \wElet fejlesztese [\rCost: \y%i Pontok\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pHealthCost ), aData[ GangHP ], get_pcvar_num( g_pHealthMax ) );

  698.       iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r2. \wLopas fejlesztese [\rCost: \y%i Pontok\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pStealingCost ), aData[ GangStealing ], get_pcvar_num( g_pStealingMax ) );

  699.       iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r3. \wGravity fejlesztese [\rCost: \y%i Pontok\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pGravityCost ), aData[ GangGravity ], get_pcvar_num( g_pGravityMax ) );

  700.       iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r4. \wUtes fejlesztese [\rCost: \y%i Pontok\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pDamageCost ), aData[ GangDamage ], get_pcvar_num( g_pDamageMax ) );

  701.       iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r5. \wFegyver eldobas fejlesztese [\rAr: \y%i Szint\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pWeaponDropCost ), aData[ GangWeaponDrop ], get_pcvar_num( g_pWeaponDropMax ) );

  702.       iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "\r6. \wGyorsassag fejlesztese [\rAr: \y%i Points\w] \y[Szint:%i/%i]^n", get_pcvar_num( g_pStaminaCost ), aData[ GangStamina ], get_pcvar_num( g_pStaminaMax ) );

  703.      

  704.       iLen   +=   formatex( szMenu[ iLen ], 511 - iLen, "^n\r0. \wKilepes" );

  705.      

  706.       show_menu( id, iKeys, szMenu, -1, "Skills Menu" );

  707.    }

  708.  

  709.    public SkillsMenu_Handler( id, iKey )

  710.    {

  711.       new aData[ GangInfo ];

  712.       ArrayGetArray( g_aGangs, g_iGang[ id ], aData );

  713.      

  714.       switch( ( iKey + 1 ) % 10 )

  715.       {

  716.          case 0:

  717.          {

  718.             Cmd_Gang( id );

  719.             return PLUGIN_HANDLED;

  720.          }

  721.          

  722.          case 1:

  723.          {

  724.             if( aData[ GangHP ] == get_pcvar_num( g_pHealthMax ) )

  725.             {

  726.                ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnal van ezert a kezsegert.", g_szPrefix  );

  727.                ShowSkillsMenu( id );

  728.                return PLUGIN_HANDLED;

  729.             }

  730.            

  731.             new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pHealthCost );

  732.            

  733.             if( iRemaining < 0 )

  734.             {

  735.                ColorChat( id, NORMAL, "%s Neked nincs eleg pontod.", g_szPrefix );

  736.                ShowSkillsMenu( id );

  737.                return PLUGIN_HANDLED;

  738.             }

  739.            

  740.             aData[ GangHP ]++;

  741.            

  742.             g_iPoints[ id ] = iRemaining;

  743.          }

  744.          

  745.          case 2:

  746.          {

  747.             if( aData[ GangStealing ] == get_pcvar_num( g_pStealingMax ) )

  748.             {

  749.                ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnel van ezert a keszsegert.", g_szPrefix  );

  750.                ShowSkillsMenu( id );

  751.                return PLUGIN_HANDLED;

  752.             }

  753.            

  754.             new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pStealingCost );

  755.            

  756.             if( iRemaining < 0 )

  757.             {

  758.                ColorChat( id, NORMAL, "%s Neked nincs elég pontod.", g_szPrefix );

  759.                ShowSkillsMenu( id );

  760.                return PLUGIN_HANDLED;

  761.             }

  762.            

  763.             aData[ GangStealing ]++;

  764.            

  765.             g_iPoints[ id ] = iRemaining;

  766.          }

  767.          

  768.          case 3:

  769.          {

  770.             if( aData[ GangGravity ] == get_pcvar_num( g_pGravityMax ) )

  771.             {

  772.                ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnel van ezert a keszsegert", g_szPrefix  );

  773.                ShowSkillsMenu( id );

  774.                return PLUGIN_HANDLED;

  775.             }

  776.            

  777.             new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pGravityCost );

  778.            

  779.             if( iRemaining < 0 )

  780.             {

  781.                ColorChat( id, NORMAL, "%s Neked nincs elég pontod.", g_szPrefix );

  782.                ShowSkillsMenu( id );

  783.                return PLUGIN_HANDLED;

  784.             }

  785.            

  786.             aData[ GangGravity ]++;

  787.            

  788.             g_iPoints[ id ] = iRemaining;

  789.          }

  790.          

  791.          case 4:

  792.          {

  793.             if( aData[ GangDamage ] == get_pcvar_num( g_pDamageMax ) )

  794.             {

  795.                ColorChat( id, NORMAL, "%s  A bandad mar a maximumszintnel van ezert a keszsegert.", g_szPrefix  );

  796.                ShowSkillsMenu( id );

  797.                return PLUGIN_HANDLED;

  798.             }

  799.            

  800.             new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pDamageCost );

  801.            

  802.             if( iRemaining < 0 )

  803.             {

  804.                ColorChat( id, NORMAL, "%s Neked nincs elég pontod.", g_szPrefix );

  805.                ShowSkillsMenu( id );

  806.                return PLUGIN_HANDLED;

  807.             }

  808.            

  809.             aData[ GangDamage ]++;

  810.            

  811.             g_iPoints[ id ] = iRemaining;

  812.          }

  813.          

  814.          case 5:

  815.          {

  816.             if( aData[ GangWeaponDrop ] == get_pcvar_num( g_pWeaponDropMax ) )

  817.             {

  818.                ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnel van ezert a keszsegert.", g_szPrefix  );

  819.                ShowSkillsMenu( id );

  820.                return PLUGIN_HANDLED;

  821.             }

  822.            

  823.             new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pWeaponDropCost );

  824.            

  825.             if( iRemaining < 0 )

  826.             {

  827.                ColorChat( id, NORMAL, "%s Neked nincs elég pontod", g_szPrefix );

  828.                ShowSkillsMenu( id );

  829.                return PLUGIN_HANDLED;

  830.             }

  831.            

  832.             aData[ GangWeaponDrop ]++;

  833.            

  834.             g_iPoints[ id ] = iRemaining;

  835.          }

  836.          

  837.          case 6:

  838.          {

  839.             if( aData[ GangStamina ] == get_pcvar_num( g_pStaminaMax ) )

  840.             {

  841.                ColorChat( id, NORMAL, "%s A bandad mar a maximumszintnel van ezert a keszsegert.", g_szPrefix  );

  842.                ShowSkillsMenu( id );

  843.                return PLUGIN_HANDLED;

  844.             }

  845.            

  846.             new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pStaminaCost );

  847.            

  848.             if( iRemaining < 0 )

  849.             {

  850.                ColorChat( id, NORMAL, "%s Neked nincs elég pontod", g_szPrefix );

  851.                ShowSkillsMenu( id );

  852.                return PLUGIN_HANDLED;

  853.             }

  854.            

  855.             aData[ GangStamina ]++;

  856.            

  857.             g_iPoints[ id ] = iRemaining;

  858.          }

  859.       }

  860.      

  861.       ArraySetArray( g_aGangs, g_iGang[ id ], aData );

  862.      

  863.       new iPlayers[ 32 ], iNum, iPlayer;

  864.       new szName[ 32 ];

  865.       get_players( iPlayers, iNum );

  866.      

  867.       for( new i = 0; i < iNum; i++ )

  868.       {

  869.          iPlayer = iPlayers[ i ];

  870.          

  871.          if( iPlayer == id || g_iGang[ iPlayer ] != g_iGang[ id ] )

  872.             continue;

  873.            

  874.          ColorChat( iPlayer, NORMAL, "%s ^03%s ^01eppen fejlesztette a bandad keszsegei kozul az egyiket.", g_szPrefix, szName );

  875.       }

  876.      

  877.       ColorChat( id, NORMAL, "%s Sikeresen fejlesztetted a bandadat.", g_szPrefix );

  878.      

  879.       ShowSkillsMenu( id );

  880.      

  881.       return PLUGIN_HANDLED;

  882.    }

  883.          

  884.      

  885.    public Cmd_Top10( id )

  886.    {

  887.       new iSize = ArraySize( g_aGangs );

  888.      

  889.       new iOrder[ 100 ][ 2 ];

  890.      

  891.       new aData[ GangInfo ];

  892.      

  893.       for( new i = 0; i < iSize; i++ )

  894.       {

  895.          ArrayGetArray( g_aGangs, i, aData );

  896.          

  897.          iOrder[ i ][ 0 ] = i;

  898.          iOrder[ i ][ 1 ] = aData[ GangKills ];

  899.       }

  900.      

  901.       SortCustom2D( iOrder, iSize, "Top10_Sort" );

  902.      

  903.       new szMessage[ 2048 ];

  904.       formatex( szMessage, charsmax( szMessage ), "<body bgcolor=#000000><font color=#FFB000><pre>" );

  905.       format( szMessage, charsmax( szMessage ), "%s%2s %-22.22s %7s %4s %10s %9s %9s %11s %8s^n", szMessage, "#", "Name", "Kills", "HP", "Stealing",

  906.          "Gravity", "Stamina", "WeaponDrop", "Damage" );

  907.          

  908.       for( new i = 0; i < min( 10, iSize ); i++ )

  909.       {

  910.          ArrayGetArray( g_aGangs, iOrder[ i ][ 0 ], aData );

  911.          

  912.          format( szMessage, charsmax( szMessage ), "%s%-2d %22.22s %7d %4d %10d %9d %9d %11d %8d^n", szMessage, i + 1, aData[ GangName ],

  913.          aData[ GangKills ], aData[ GangHP ], aData[ GangStealing ], aData[ GangGravity ], aData[ GangStamina], aData[ GangWeaponDrop ], aData[ GangDamage ] );

  914.       }

  915.      

  916.       show_motd( id, szMessage, "Gang Top 10" );

  917.    }

  918.  

  919.    public Top10_Sort( const iElement1[ ], const iElement2[ ], const iArray[ ], szData[], iSize )

  920.    {

  921.       if( iElement1[ 1 ] > iElement2[ 1 ] )

  922.          return -1;

  923.      

  924.       else if( iElement1[ 1 ] < iElement2[ 1 ] )

  925.          return 1;

  926.      

  927.       return 0;

  928.    }

  929.  

  930.    public ShowLeaveConfirmMenu( id )

  931.    {

  932.       new hMenu = menu_create( "Biztos vagy benne hogy tavozni akarsz?", "LeaveConfirmMenu_Handler" );

  933.       menu_additem( hMenu, "Igen", "0" );

  934.       menu_additem( hMenu, "Nem", "1" );

  935.      

  936.       menu_display( id, hMenu, 0 );

  937.    }

  938.  

  939.    public LeaveConfirmMenu_Handler( id, hMenu, iItem )

  940.    {

  941.       if( iItem == MENU_EXIT )

  942.          return PLUGIN_HANDLED;

  943.      

  944.       new szData[ 6 ], iAccess, hCallback;

  945.       menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );

  946.      

  947.       switch( str_to_num( szData ) )

  948.       {

  949.          case 0:

  950.          {

  951.             if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER )

  952.             {

  953.                ColorChat( id, NORMAL, "%s Neked vezetest at kell adnod mielőtt elhagyod a bandat.", g_szPrefix );

  954.                Cmd_Gang( id );

  955.                

  956.                return PLUGIN_HANDLED;

  957.             }

  958.            

  959.             ColorChat( id, NORMAL, "%s Sikeresen elhagytad a bandadat.", g_szPrefix );

  960.             set_user_gang( id, -1 );

  961.             Cmd_Gang( id );

  962.          }

  963.          

  964.          case 1: Cmd_Gang( id );

  965.       }

  966.      

  967.       return PLUGIN_HANDLED;

  968.    }

  969.  

  970.    public ShowLeaderMenu( id )

  971.    {

  972.       new hMenu = menu_create( "Gang Leader Menu", "LeaderMenu_Handler" );

  973.      

  974.       new iStatus = getStatus( id, g_iGang[ id ] );

  975.      

  976.       if( iStatus == STATUS_LEADER )

  977.       {

  978.          menu_additem( hMenu, "Banda feloszlatasa", "0" );

  979.          menu_additem( hMenu, "Megvaltoztatja a vezetest", "1" );

  980.          menu_additem( hMenu, "Hozzaad egy admint", "4" );

  981.          menu_additem( hMenu, "Torol egy admint", "5" );

  982.       }

  983.      

  984.       menu_additem( hMenu, "Kirugas a bandabol", "2" );

  985.       menu_additem( hMenu, "Banda at nevezese", "3" );

  986.      

  987.      

  988.       menu_display( id, hMenu, 0 );

  989.    }

  990.  

  991.    public LeaderMenu_Handler( id, hMenu, iItem )

  992.    {

  993.       if( iItem == MENU_EXIT )

  994.       {

  995.          Cmd_Gang( id );

  996.          return PLUGIN_HANDLED;

  997.       }

  998.      

  999.       new iAccess, hCallback, szData[ 6 ];

  1000.       menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );

  1001.      

  1002.       switch( str_to_num( szData ) )

  1003.       {

  1004.          case 0:

  1005.          {

  1006.             ShowDisbandConfirmMenu( id );

  1007.          }

  1008.          

  1009.          case 1:

  1010.          {

  1011.             ShowTransferMenu( id );

  1012.          }

  1013.          

  1014.          case 2:

  1015.          {

  1016.             ShowKickMenu( id );

  1017.          }

  1018.          

  1019.          case 3:

  1020.          {

  1021.             client_cmd( id, "messagemode New_Name" );

  1022.          }

  1023.          

  1024.          case 4:

  1025.          {

  1026.             ShowAddAdminMenu( id );

  1027.          }

  1028.          

  1029.          case 5:

  1030.          {

  1031.             ShowRemoveAdminMenu( id );

  1032.          }

  1033.       }

  1034.      

  1035.       return PLUGIN_HANDLED;

  1036.    }

  1037.  

  1038.    public ShowDisbandConfirmMenu( id )

  1039.    {

  1040.       new hMenu = menu_create( "Biztos vagy, hogy fel akarod oszlatni a bandat?", "DisbandConfirmMenu_Handler" );

  1041.       menu_additem( hMenu, "Igen", "0" );

  1042.       menu_additem( hMenu, "Nem", "1" );

  1043.      

  1044.       menu_display( id, hMenu, 0 );

  1045.    }

  1046.  

  1047.    public DisbandConfirmMenu_Handler( id, hMenu, iItem )

  1048.    {

  1049.       if( iItem == MENU_EXIT )

  1050.          return PLUGIN_HANDLED;

  1051.      

  1052.       new szData[ 6 ], iAccess, hCallback;

  1053.       menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );

  1054.      

  1055.       switch( str_to_num( szData ) )

  1056.       {

  1057.          case 0:

  1058.          {

  1059.            

  1060.             ColorChat( id, NORMAL, "%s Sikeresen feloszlattad a bandadat.", g_szPrefix );

  1061.            

  1062.             new iPlayers[ 32 ], iNum;

  1063.            

  1064.             get_players( iPlayers, iNum );

  1065.            

  1066.             new iPlayer;

  1067.            

  1068.             for( new i = 0; i < iNum; i++ )

  1069.             {

  1070.                iPlayer = iPlayers[ i ];

  1071.                

  1072.                if( iPlayer == id )

  1073.                   continue;

  1074.                

  1075.                if( g_iGang[ id ] != g_iGang[ iPlayer ] )

  1076.                   continue;

  1077.  

  1078.                ColorChat( iPlayer, NORMAL, "%s A bandad a vezetoje által feloszlik a banda.", g_szPrefix );

  1079.                set_user_gang( iPlayer, -1 );

  1080.             }

  1081.            

  1082.             new iGang = g_iGang[ id ];

  1083.            

  1084.             set_user_gang( id, -1 );

  1085.            

  1086.             ArrayDeleteItem( g_aGangs, iGang );

  1087.  

  1088.             Cmd_Gang( id );

  1089.          }

  1090.          

  1091.          case 1: Cmd_Gang( id );

  1092.       }

  1093.      

  1094.       return PLUGIN_HANDLED;

  1095.    }

  1096.  

  1097.    public ShowTransferMenu( id )

  1098.    {

  1099.       new iPlayers[ 32 ], iNum;

  1100.       get_players( iPlayers, iNum, "e", "TERRORIST" );

  1101.      

  1102.       new hMenu = menu_create( "Vezeto atiranyitasa:", "TransferMenu_Handler" );

  1103.       new szName[ 32 ], szData[ 6 ];

  1104.      

  1105.       for( new i = 0, iPlayer; i < iNum; i++ )

  1106.       {

  1107.          iPlayer = iPlayers[ i ];

  1108.          

  1109.          if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer )

  1110.             continue;

  1111.            

  1112.          get_user_name( iPlayer, szName, charsmax( szName ) );

  1113.          num_to_str( iPlayer, szData, charsmax( szData ) );

  1114.          

  1115.          menu_additem( hMenu, szName, szData );

  1116.       }

  1117.      

  1118.       menu_display( id, hMenu, 0 );

  1119.    }

  1120.  

  1121.    public TransferMenu_Handler( id, hMenu, iItem )

  1122.    {

  1123.       if( iItem == MENU_EXIT )

  1124.       {

  1125.          ShowLeaderMenu( id );

  1126.          return PLUGIN_HANDLED;

  1127.       }

  1128.      

  1129.       new iAccess, hCallback, szData[ 6 ], szName[ 32 ];

  1130.      

  1131.       menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback );

  1132.      

  1133.       new iPlayer = str_to_num( szData );

  1134.      

  1135.       if( !is_user_connected( iPlayer ) )

  1136.       {

  1137.          ColorChat( id, NORMAL, "%s Ez a jatekos mar nem csatlakozik.", g_szPrefix );

  1138.          ShowTransferMenu( id );

  1139.          return PLUGIN_HANDLED;

  1140.       }

  1141.      

  1142.       set_user_gang( iPlayer, g_iGang[ id ], STATUS_LEADER );

  1143.       set_user_gang( id, g_iGang[ id ], STATUS_ADMIN );

  1144.      

  1145.       Cmd_Gang( id );

  1146.      

  1147.       new iPlayers[ 32 ], iNum, iTemp;

  1148.       get_players( iPlayers, iNum );

  1149.  

  1150.       for( new i = 0; i < iNum; i++ )

  1151.       {

  1152.          iTemp = iPlayers[ i ];

  1153.          

  1154.          if( iTemp == iPlayer )

  1155.          {

  1156.             ColorChat( iTemp, NORMAL, "%s Te vagy az uj vezetoje a banda.", g_szPrefix );

  1157.             continue;

  1158.          }

  1159.          

  1160.          else if( g_iGang[ iTemp ] != g_iGang[ id ] )

  1161.             continue;

  1162.          

  1163.          ColorChat( iTemp, NORMAL, "%s ^03%s^01 az uj banda vezetoje", g_szPrefix, szName );

  1164.       }

  1165.      

  1166.       return PLUGIN_HANDLED;

  1167.    }

  1168.  

  1169.  

  1170.    public ShowKickMenu( id )

  1171.    {

  1172.       new iPlayers[ 32 ], iNum;

  1173.       get_players( iPlayers, iNum );

  1174.      

  1175.       new hMenu = menu_create( "Kiruga a bandabol:", "KickMenu_Handler" );

  1176.       new szName[ 32 ], szData[ 6 ];

  1177.      

  1178.      

  1179.       for( new i = 0, iPlayer; i < iNum; i++ )

  1180.       {

  1181.          iPlayer = iPlayers[ i ];

  1182.          

  1183.          if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer )

  1184.             continue;

  1185.            

  1186.          get_user_name( iPlayer, szName, charsmax( szName ) );

  1187.          num_to_str( iPlayer, szData, charsmax( szData ) );

  1188.          

  1189.          menu_additem( hMenu, szName, szData );

  1190.       }

  1191.      

  1192.       menu_display( id, hMenu, 0 );

  1193.    }

  1194.  

  1195.    public KickMenu_Handler( id, hMenu, iItem )

  1196.    {

  1197.       if( iItem == MENU_EXIT )

  1198.       {

  1199.          ShowLeaderMenu( id );

  1200.          return PLUGIN_HANDLED;

  1201.       }

  1202.      

  1203.       new iAccess, hCallback, szData[ 6 ], szName[ 32 ];

  1204.      

  1205.       menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback );

  1206.      

  1207.       new iPlayer = str_to_num( szData );

  1208.      

  1209.       if( !is_user_connected( iPlayer ) )

  1210.       {

  1211.          ColorChat( id, NORMAL, "%s Ez a jatekos nincs csatlakozva.", g_szPrefix );

  1212.          ShowTransferMenu( id );

  1213.          return PLUGIN_HANDLED;

  1214.       }

  1215.      

  1216.       set_user_gang( iPlayer, -1 );

  1217.      

  1218.       Cmd_Gang( id );

  1219.      

  1220.       new iPlayers[ 32 ], iNum, iTemp;

  1221.       get_players( iPlayers, iNum );

  1222.      

  1223.       for( new i = 0; i < iNum; i++ )

  1224.       {

  1225.          iTemp = iPlayers[ i ];

  1226.          

  1227.          if( iTemp == iPlayer || g_iGang[ iTemp ] != g_iGang[ id ] )

  1228.             continue;

  1229.          

  1230.          ColorChat( iTemp, NORMAL, "%s ^03%s^01 kirugtad a bandabol.", g_szPrefix, szName );

  1231.       }

  1232.      

  1233.       ColorChat( iPlayer, NORMAL, "%s Teged kirugtak a bandabol", g_szPrefix, szName );

  1234.      

  1235.       return PLUGIN_HANDLED;

  1236.    }

  1237.  

  1238.    public ChangeName_Handler( id )

  1239.    {

  1240.       if( g_iGang[ id ] == -1 || getStatus( id, g_iGang[ id ] ) == STATUS_MEMBER )

  1241.       {

  1242.          return;

  1243.       }

  1244.      

  1245.       new iGang = g_iGang[ id ];

  1246.      

  1247.       new szArgs[ 64 ];

  1248.       read_args( szArgs, charsmax( szArgs ) );

  1249.      

  1250.       new iPlayers[ 32 ], iNum;

  1251.       get_players( iPlayers, iNum );

  1252.      

  1253.       new bool:bInGang[ 33 ];

  1254.       new iStatus[ 33 ];

  1255.      

  1256.       for( new i = 0, iPlayer; i < iNum; i++ )

  1257.       {

  1258.          iPlayer = iPlayers[ i ];

  1259.          

  1260.          if( g_iGang[ id ] != g_iGang[ iPlayer ] )

  1261.             continue;

  1262.      

  1263.          bInGang[ iPlayer ] = true;

  1264.          iStatus[ iPlayer ] = getStatus( id, iGang );

  1265.          

  1266.          set_user_gang( iPlayer, -1 );

  1267.       }

  1268.      

  1269.       new aData[ GangInfo ];

  1270.       ArrayGetArray( g_aGangs, iGang, aData );

  1271.      

  1272.       aData[ GangName ] = szArgs;

  1273.      

  1274.       ArraySetArray( g_aGangs, iGang, aData );

  1275.      

  1276.       for( new i = 0, iPlayer; i < iNum; i++ )

  1277.       {

  1278.          iPlayer = iPlayers[ i ];

  1279.          

  1280.          if( !bInGang[ iPlayer ] )

  1281.             continue;

  1282.          

  1283.          set_user_gang( iPlayer, iGang, iStatus[ id ] );

  1284.       }

  1285.    }

  1286.      

  1287.    public ShowAddAdminMenu( id )

  1288.    {

  1289.       new iPlayers[ 32 ], iNum;

  1290.       new szName[ 32 ], szData[ 6 ];

  1291.       new hMenu = menu_create( "Valassz egy jatekost az elolepteteshez:", "AddAdminMenu_Handler" );

  1292.      

  1293.       get_players( iPlayers, iNum );

  1294.      

  1295.       for( new i = 0, iPlayer; i < iNum; i++ )

  1296.       {

  1297.          iPlayer = iPlayers[ i ];

  1298.          

  1299.          if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) > STATUS_MEMBER )

  1300.             continue;

  1301.          

  1302.          get_user_name( iPlayer, szName, charsmax( szName ) );

  1303.          

  1304.          num_to_str( iPlayer, szData, charsmax( szData ) );

  1305.          

  1306.          menu_additem( hMenu, szName, szData );

  1307.       }

  1308.      

  1309.       menu_display( id, hMenu, 0 );

  1310.    }

  1311.  

  1312.    public AddAdminMenu_Handler( id, hMenu, iItem )

  1313.    {

  1314.       if( iItem == MENU_EXIT )

  1315.       {

  1316.          menu_destroy( hMenu );

  1317.          ShowLeaderMenu( id );

  1318.          return PLUGIN_HANDLED;

  1319.       }

  1320.      

  1321.       new iAccess, hCallback, szData[ 6 ], szName[ 32 ];

  1322.      

  1323.       menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback );

  1324.      

  1325.       new iChosen = str_to_num( szData );

  1326.      

  1327.       if( !is_user_connected( iChosen ) )

  1328.       {

  1329.          menu_destroy( hMenu );

  1330.          ShowLeaderMenu( id );

  1331.          return PLUGIN_HANDLED;

  1332.       }

  1333.      

  1334.       set_user_gang( iChosen, g_iGang[ id ], STATUS_LEADER );

  1335.      

  1336.       new iPlayers[ 32 ], iNum;

  1337.       get_players( iPlayers, iNum );

  1338.      

  1339.       for( new i = 0, iPlayer; i < iNum; i++ )

  1340.       {

  1341.          iPlayer = iPlayers[ i ];

  1342.          

  1343.          if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen )

  1344.             continue;

  1345.          

  1346.          ColorChat( iPlayer, NORMAL, "%s ^03%s ^01eloleptette az admin a bandad.", g_szPrefix, szName );

  1347.       }

  1348.      

  1349.       ColorChat( iChosen, NORMAL, "%s ^01Egy admin felfokozta a bandad.", g_szPrefix );

  1350.      

  1351.       menu_destroy( hMenu );

  1352.       return PLUGIN_HANDLED;

  1353.    }

  1354.  

  1355.    public ShowRemoveAdminMenu( id )

  1356.    {

  1357.       new iPlayers[ 32 ], iNum;

  1358.       new szName[ 32 ], szData[ 6 ];

  1359.       new hMenu = menu_create( "Valaszt egy jatekost lefokozni:", "RemoveAdminMenu_Handler" );

  1360.      

  1361.       get_players( iPlayers, iNum );

  1362.      

  1363.       for( new i = 0, iPlayer; i < iNum; i++ )

  1364.       {

  1365.          iPlayer = iPlayers[ i ];

  1366.          

  1367.          if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) != STATUS_ADMIN )

  1368.             continue;

  1369.          

  1370.          get_user_name( iPlayer, szName, charsmax( szName ) );

  1371.          

  1372.          num_to_str( iPlayer, szData, charsmax( szData ) );

  1373.          

  1374.          menu_additem( hMenu, szName, szData );

  1375.       }

  1376.      

  1377.       menu_display( id, hMenu, 0 );

  1378.    }

  1379.  

  1380.    public RemoveAdminMenu_Handler( id, hMenu, iItem )

  1381.    {

  1382.       if( iItem == MENU_EXIT )

  1383.       {

  1384.          menu_destroy( hMenu );

  1385.          ShowLeaderMenu( id );

  1386.          return PLUGIN_HANDLED;

  1387.       }

  1388.      

  1389.       new iAccess, hCallback, szData[ 6 ], szName[ 32 ];

  1390.      

  1391.       menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback );

  1392.      

  1393.       new iChosen = str_to_num( szData );

  1394.      

  1395.       if( !is_user_connected( iChosen ) )

  1396.       {

  1397.          menu_destroy( hMenu );

  1398.          ShowLeaderMenu( id );

  1399.          return PLUGIN_HANDLED;

  1400.       }

  1401.      

  1402.       set_user_gang( iChosen, g_iGang[ id ], STATUS_MEMBER );

  1403.      

  1404.       new iPlayers[ 32 ], iNum;

  1405.       get_players( iPlayers, iNum );

  1406.      

  1407.       for( new i = 0, iPlayer; i < iNum; i++ )

  1408.       {

  1409.          iPlayer = iPlayers[ i ];

  1410.          

  1411.          if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen )

  1412.             continue;

  1413.          

  1414.          ColorChat( iPlayer, NORMAL, "%s ^03%s ^01lefogozta egy admin a bandad.", g_szPrefix, szName );

  1415.       }

  1416.      

  1417.       ColorChat( iChosen, NORMAL, "%s ^01Teged lefokoztak egy admin a bandad.", g_szPrefix );

  1418.      

  1419.       menu_destroy( hMenu );

  1420.       return PLUGIN_HANDLED;

  1421.    }

  1422.      

  1423.    public ShowMembersMenu( id )

  1424.    {

  1425.       new szName[ 64 ], iPlayers[ 32 ], iNum;

  1426.       get_players( iPlayers, iNum );

  1427.      

  1428.       new hMenu = menu_create( "Jelenlevo tagok:", "MemberMenu_Handler" );

  1429.      

  1430.       for( new i = 0, iPlayer; i < iNum; i++ )

  1431.       {

  1432.          iPlayer = iPlayers[ i ];

  1433.          

  1434.          if( g_iGang[ id ] != g_iGang[ iPlayer ] )

  1435.             continue;

  1436.          

  1437.          get_user_name( iPlayer, szName, charsmax( szName ) );

  1438.          

  1439.          switch( getStatus( iPlayer, g_iGang[ id ] ) )

  1440.          {

  1441.             case STATUS_MEMBER:

  1442.             {

  1443.                add( szName, charsmax( szName ), " \r[Tag]" );

  1444.             }

  1445.            

  1446.             case STATUS_ADMIN:

  1447.             {

  1448.                add( szName, charsmax( szName ), " \r[Admin]" );

  1449.             }

  1450.            

  1451.             case STATUS_LEADER:

  1452.             {

  1453.                add( szName, charsmax( szName ), " \r[Tulajdonos]" );

  1454.             }

  1455.          }

  1456.  

  1457.          menu_additem( hMenu, szName );

  1458.       }

  1459.      

  1460.       menu_display( id, hMenu, 0 );

  1461.    }

  1462.  

  1463.    public MemberMenu_Handler( id, hMenu, iItem )

  1464.    {

  1465.       if( iItem == MENU_EXIT )

  1466.       {

  1467.          menu_destroy( hMenu );

  1468.          Cmd_Gang( id );

  1469.          return PLUGIN_HANDLED;

  1470.       }

  1471.      

  1472.       menu_destroy( hMenu );

  1473.      

  1474.       ShowMembersMenu( id )

  1475.       return PLUGIN_HANDLED;

  1476.    }

  1477.  

  1478.    // Credits to Tirant from zombie mod and xOR from xRedirect

  1479.    public LoadGangs()

  1480.    {

  1481.       new szConfigsDir[ 60 ];

  1482.       get_configsdir( szConfigsDir, charsmax( szConfigsDir ) );

  1483.       add( szConfigsDir, charsmax( szConfigsDir ), "/jb_gangs.ini" );

  1484.      

  1485.       new iFile = fopen( szConfigsDir, "rt" );

  1486.      

  1487.       new aData[ GangInfo ];

  1488.      

  1489.       new szBuffer[ 512 ], szData[ 6 ], szValue[ 6 ], i, iCurGang;

  1490.      

  1491.       while( !feof( iFile ) )

  1492.       {

  1493.          fgets( iFile, szBuffer, charsmax( szBuffer ) );

  1494.          

  1495.          trim( szBuffer );

  1496.          remove_quotes( szBuffer );

  1497.          

  1498.          if( !szBuffer[ 0 ] || szBuffer[ 0 ] == ';' )

  1499.          {

  1500.             continue;

  1501.          }

  1502.          

  1503.          if( szBuffer[ 0 ] == '[' && szBuffer[ strlen( szBuffer ) - 1 ] == ']' )

  1504.          {

  1505.             copy( aData[ GangName ], strlen( szBuffer ) - 2, szBuffer[ 1 ] );

  1506.             aData[ GangHP ] = 0;

  1507.             aData[ GangStealing ] = 0;

  1508.             aData[ GangGravity ] = 0;

  1509.             aData[ GangStamina ] = 0;

  1510.             aData[ GangWeaponDrop ] = 0;

  1511.             aData[ GangDamage ] = 0;

  1512.             aData[ GangKills ] = 0;

  1513.             aData[ NumMembers ] = 0;

  1514.             aData[ GangMembers ] = _:TrieCreate();

  1515.            

  1516.             if( TrieKeyExists( g_tGangNames, aData[ GangName ] ) )

  1517.             {

  1518.                new szError[ 256 ];

  1519.                formatex( szError, charsmax( szError ), "[JB Bandak] Banda mar letezik: %s", aData[ GangName ] );

  1520.                set_fail_state( szError );

  1521.             }

  1522.            

  1523.             ArrayPushArray( g_aGangs, aData );

  1524.            

  1525.             TrieSetCell( g_tGangNames, aData[ GangName ], iCurGang );

  1526.  

  1527.             log_amx( "Gang Created: %s", aData[ GangName ] );

  1528.            

  1529.             iCurGang++;

  1530.            

  1531.             continue;

  1532.          }

  1533.          

  1534.          strtok( szBuffer, szData, 31, szValue, 511, '=' );

  1535.          trim( szData );

  1536.          trim( szValue );

  1537.          

  1538.          if( TrieGetCell( g_tGangValues, szData, i ) )

  1539.          {

  1540.             ArrayGetArray( g_aGangs, iCurGang - 1, aData );

  1541.            

  1542.             switch( i )

  1543.             {              

  1544.                case VALUE_HP:

  1545.                   aData[ GangHP ] = str_to_num( szValue );

  1546.                

  1547.                case VALUE_STEALING:

  1548.                   aData[ GangStealing ] = str_to_num( szValue );

  1549.                

  1550.                case VALUE_GRAVITY:

  1551.                   aData[ GangGravity ] = str_to_num( szValue );

  1552.                

  1553.                case VALUE_STAMINA:

  1554.                   aData[ GangStamina ] = str_to_num( szValue );

  1555.                

  1556.                case VALUE_WEAPONDROP:

  1557.                   aData[ GangWeaponDrop ] = str_to_num( szValue );

  1558.                  

  1559.                case VALUE_DAMAGE:

  1560.                   aData[ GangDamage ] = str_to_num( szValue );

  1561.                

  1562.                case VALUE_KILLS:

  1563.                   aData[ GangKills ] = str_to_num( szValue );

  1564.             }

  1565.            

  1566.             ArraySetArray( g_aGangs, iCurGang - 1, aData );

  1567.          }

  1568.       }

  1569.      

  1570.       new Array:aSQL;

  1571.       sqlv_read_all_ex( g_hVault, aSQL );

  1572.      

  1573.       new aVaultData[ SQLVaultEntryEx ];

  1574.      

  1575.       new iGang;

  1576.      

  1577.       for( i = 0; i < ArraySize( aSQL ); i++ )

  1578.       {

  1579.          ArrayGetArray( aSQL, i, aVaultData );

  1580.          

  1581.          if( TrieGetCell( g_tGangNames, aVaultData[ SQLVEx_Key2 ], iGang ) )

  1582.          {

  1583.             ArrayGetArray( g_aGangs, iGang, aData );

  1584.            

  1585.             TrieSetCell( aData[ GangMembers ], aVaultData[ SQLVEx_Key1 ], str_to_num( aVaultData[ SQLVEx_Data ] ) );

  1586.            

  1587.             aData[ NumMembers ]++;

  1588.            

  1589.             ArraySetArray( g_aGangs, iGang, aData );

  1590.          }

  1591.       }

  1592.      

  1593.       fclose( iFile );

  1594.    }

  1595.  

  1596.    public SaveGangs()

  1597.    {

  1598.       new szConfigsDir[ 64 ];

  1599.       get_configsdir( szConfigsDir, charsmax( szConfigsDir ) );

  1600.      

  1601.       add( szConfigsDir, charsmax( szConfigsDir ), "/jb_gangs.ini" );

  1602.      

  1603.       if( file_exists( szConfigsDir ) )

  1604.          delete_file( szConfigsDir );

  1605.          

  1606.       new iFile = fopen( szConfigsDir, "wt" );

  1607.          

  1608.       new aData[ GangInfo ];

  1609.      

  1610.       new szBuffer[ 256 ];

  1611.  

  1612.       for( new i = 0; i < ArraySize( g_aGangs ); i++ )

  1613.       {

  1614.          ArrayGetArray( g_aGangs, i, aData );

  1615.          

  1616.          formatex( szBuffer, charsmax( szBuffer ), "[%s]^n", aData[ GangName ] );

  1617.          fputs( iFile, szBuffer );

  1618.          

  1619.          formatex( szBuffer, charsmax( szBuffer ), "HP=%i^n", aData[ GangHP ] );

  1620.          fputs( iFile, szBuffer );

  1621.          

  1622.          formatex( szBuffer, charsmax( szBuffer ), "Lopakodas=%i^n", aData[ GangStealing ] );

  1623.          fputs( iFile, szBuffer );

  1624.          

  1625.          formatex( szBuffer, charsmax( szBuffer ), "Gravity=%i^n", aData[ GangGravity ] );

  1626.          fputs( iFile, szBuffer );

  1627.          

  1628.          formatex( szBuffer, charsmax( szBuffer ), "Kitartas=%i^n", aData[ GangStamina ] );

  1629.          fputs( iFile, szBuffer );

  1630.          

  1631.          formatex( szBuffer, charsmax( szBuffer ), "Fegyver Dobas=%i^n", aData[ GangWeaponDrop ] );

  1632.          fputs( iFile, szBuffer );

  1633.          

  1634.          formatex( szBuffer, charsmax( szBuffer ), "Sebzes=%i^n", aData[ GangDamage ] );

  1635.          fputs( iFile, szBuffer );

  1636.          

  1637.          formatex( szBuffer, charsmax( szBuffer ), "Oles=%i^n^n", aData[ GangKills ] );

  1638.          fputs( iFile, szBuffer );

  1639.       }

  1640.      

  1641.       fclose( iFile );

  1642.    }

  1643.      

  1644.      

  1645.  

  1646.    set_user_gang( id, iGang, iStatus=STATUS_MEMBER )

  1647.    {

  1648.       new szAuthID[ 35 ];

  1649.       get_user_authid( id, szAuthID, charsmax( szAuthID ) );

  1650.  

  1651.       new aData[ GangInfo ];

  1652.      

  1653.       if( g_iGang[ id ] > -1 )

  1654.       {

  1655.          ArrayGetArray( g_aGangs, g_iGang[ id ], aData );

  1656.          TrieDeleteKey( aData[ GangMembers ], szAuthID );

  1657.          aData[ NumMembers ]--;

  1658.          ArraySetArray( g_aGangs, g_iGang[ id ], aData );

  1659.          

  1660.          sqlv_remove_ex( g_hVault, szAuthID, aData[ GangName ] );

  1661.       }

  1662.  

  1663.       if( iGang > -1 )

  1664.       {

  1665.          ArrayGetArray( g_aGangs, iGang, aData );

  1666.          TrieSetCell( aData[ GangMembers ], szAuthID, iStatus );

  1667.          aData[ NumMembers ]++;

  1668.          ArraySetArray( g_aGangs, iGang, aData );

  1669.          

  1670.          sqlv_set_num_ex( g_hVault, szAuthID, aData[ GangName ], iStatus );      

  1671.       }

  1672.  

  1673.       g_iGang[ id ] = iGang;

  1674.      

  1675.       return 1;

  1676.    }

  1677.      

  1678.    get_user_gang( id )

  1679.    {

  1680.       new szAuthID[ 35 ];

  1681.       get_user_authid( id, szAuthID, charsmax( szAuthID ) );

  1682.      

  1683.       new aData[ GangInfo ];

  1684.      

  1685.       for( new i = 0; i < ArraySize( g_aGangs ); i++ )

  1686.       {

  1687.          ArrayGetArray( g_aGangs, i, aData );

  1688.          

  1689.          if( TrieKeyExists( aData[ GangMembers ], szAuthID ) )

  1690.             return i;

  1691.       }

  1692.      

  1693.       return -1;

  1694.    }

  1695.            

  1696.    getStatus( id, iGang )

  1697.    {

  1698.       if( !is_user_connected( id ) || iGang == -1 )

  1699.          return STATUS_NONE;

  1700.          

  1701.       new aData[ GangInfo ];

  1702.       ArrayGetArray( g_aGangs, iGang, aData );

  1703.      

  1704.       new szAuthID[ 35 ];

  1705.       get_user_authid( id, szAuthID, charsmax( szAuthID ) );

  1706.      

  1707.       new iStatus;

  1708.       TrieGetCell( aData[ GangMembers ], szAuthID, iStatus );

  1709.      

  1710.       return iStatus;

  1711.    }


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [10 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 0 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole