hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.24. 17:23



Jelenlévő felhasználók

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

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó 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  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Banda
HozzászólásElküldve: 2013.08.08. 20:49 
Offline
Őskövület
Avatar

Csatlakozott: 2011.12.28. 00:35
Hozzászólások: 2736
Megköszönt másnak: 56 alkalommal
Megköszönték neki: 275 alkalommal
Hali.

Valaki ezt át tudná úgy írni, hogy ölésért kapjon pontot.
És hogy ne csak a Tknek legyen elérhető a menü. + Ha ölsz akkor legyen is pontom amivel a bandát lehet létre hozni.
Mert amikor ölök nem akar pontot adni :(

SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include < amxmodx >
  3. #include < amxmisc >
  4. #include < sqlvault_ex >
  5. #include < cstrike >
  6. #include < hamsandwich >
  7. #include < fun >
  8.  
  9. /* Defines */
  10.  
  11. #define ADMIN_CREATE ADMIN_LEVEL_B
  12.  
  13. /* Constants */
  14.  
  15. new const g_szVersion[ ] = "1.1.2";
  16.  
  17. enum _:GangInfo
  18. {
  19. Trie:GangMembers,
  20. GangName[ 64 ],
  21. GangHP,
  22. GangStealing,
  23. GangGravity,
  24. GangDamage,
  25. GangStamina,
  26. GangWeaponDrop,
  27. GangKills,
  28. NumMembers
  29. };
  30.  
  31. enum
  32. {
  33. VALUE_HP,
  34. VALUE_STEALING,
  35. VALUE_GRAVITY,
  36. VALUE_DAMAGE,
  37. VALUE_STAMINA,
  38. VALUE_WEAPONDROP,
  39. VALUE_KILLS
  40. }
  41.  
  42. enum
  43. {
  44. STATUS_NONE,
  45. STATUS_MEMBER,
  46. STATUS_ADMIN,
  47. STATUS_LEADER
  48. };
  49.  
  50. new const g_szGangValues[ ][ ] =
  51. {
  52. "Élet",
  53. "Lopakodás",
  54. "Gravitáció",
  55. "Sebzés",
  56. "ĂllokĂ©pessĂ©g",
  57. "FegyverDobás",
  58. "Ölés"
  59. };
  60.  
  61.  
  62.  
  63. /* Tries */
  64.  
  65. new Trie:g_tGangNames;
  66. new Trie:g_tGangValues;
  67.  
  68. /* Vault */
  69.  
  70. new SQLVault:g_hVault;
  71. new SQLVault:g_hPointsVault;
  72.  
  73. /* Arrays */
  74.  
  75. new Array:g_aGangs;
  76.  
  77. /* Pcvars */
  78.  
  79. new g_pCreateCost;
  80.  
  81. new g_pHealthCost;
  82. new g_pStealingCost;
  83. new g_pGravityCost;
  84. new g_pDamageCost;
  85. new g_pStaminaCost;
  86. new g_pWeaponDropCost;
  87.  
  88. new g_pHealthMax;
  89. new g_pStealingMax;
  90. new g_pGravityMax;
  91. new g_pDamageMax;
  92. new g_pStaminaMax;
  93. new g_pWeaponDropMax;
  94.  
  95. new g_pHealthPerLevel;
  96. new g_pStealingPerLevel;
  97. new g_pGravityPerLevel;
  98. new g_pDamagePerLevel;
  99. new g_pStaminaPerLevel;
  100. new g_pWeaponDropPerLevel;
  101.  
  102. new g_pPointsPerKill;
  103. new g_pHeadshotBonus;
  104.  
  105. new g_pMaxMembers;
  106. new g_pAdminCreate;
  107.  
  108. /* Integers */
  109.  
  110. new g_iGang[ 33 ];
  111. new g_iPoints[ 33 ];
  112.  
  113.  
  114. public plugin_init()
  115. {
  116. register_plugin( "Gang System", g_szVersion, "H3avY Ra1n" );
  117.  
  118. g_aGangs = ArrayCreate( GangInfo );
  119.  
  120. g_tGangValues = TrieCreate();
  121. g_tGangNames = TrieCreate();
  122.  
  123. g_hVault = sqlv_open_local( "gangs", false );
  124. sqlv_init_ex( g_hVault );
  125.  
  126. g_hPointsVault = sqlv_open_local( "points", true );
  127.  
  128. g_pCreateCost = register_cvar( "gang_cost", "50" );
  129. g_pHealthCost = register_cvar( "health_cost", "20" );
  130. g_pStealingCost = register_cvar( "stealing_cost", "20" );
  131. g_pGravityCost = register_cvar( "gravity_cost", "20" );
  132. g_pDamageCost = register_cvar( "damage_cost", "20" );
  133. g_pStaminaCost = register_cvar( "stamina_cost", "20" );
  134. g_pWeaponDropCost = register_cvar( "weapondrop_cost", "20" );
  135.  
  136. g_pHealthMax = register_cvar( "health_max", "10" );
  137. g_pStealingMax = register_cvar( "stealing_max", "10" );
  138. g_pGravityMax = register_cvar( "gravity_max", "10" ); // Max * Gravity Per Level must be LESS than 800
  139. g_pDamageMax = register_cvar( "damage_max", "10" );
  140. g_pStaminaMax = register_cvar( "stamina_max", "10" );
  141. g_pWeaponDropMax = register_cvar( "weapondrop_max", "10" );
  142.  
  143. g_pHealthPerLevel = register_cvar( "health_per", "10" );
  144. g_pStealingPerLevel = register_cvar( "stealing_per", "0.05" );
  145. g_pGravityPerLevel = register_cvar( "gravity_per", "50" );
  146. g_pDamagePerLevel = register_cvar( "damage_per", "3" );
  147. g_pStaminaPerLevel = register_cvar( "stamina_per", "3" );
  148. g_pWeaponDropPerLevel = register_cvar( "weapondrop_per", "1" );
  149.  
  150. g_pPointsPerKill = register_cvar( "points_per_kill", "3" );
  151. g_pHeadshotBonus = register_cvar( "headshot_bonus", "2" );
  152.  
  153. g_pMaxMembers = register_cvar( "max_members", "10" );
  154. g_pAdminCreate = register_cvar( "admin_create", "1" ); // Admins can create gangs without points
  155.  
  156. register_cvar( "gang_version", g_szVersion, FCVAR_SPONLY | FCVAR_SERVER );
  157.  
  158. register_menu( "Gang Menu", 1023, "GangMenu_Handler" );
  159. register_menu( "Skills Menu", 1023, "SkillsMenu_Handler" );
  160.  
  161. for( new i = 0; i < sizeof g_szGangValues; i++ )
  162. {
  163. TrieSetCell( g_tGangValues, g_szGangValues[ i ], i );
  164. }
  165.  
  166. RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1 );
  167. RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0 );
  168. RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Post", 1 );
  169. RegisterHam( Ham_Item_PreFrame, "player", "Ham_PlayerResetSpeedPost", 1);
  170.  
  171. register_event( "DeathMsg", "Event_DeathMsg", "a" );
  172.  
  173. register_clcmd( "say /banda", "Cmd_Gang" );
  174. register_clcmd( "gang_name", "Cmd_CreateGang" );
  175.  
  176. LoadGangs();
  177. }
  178.  
  179. public client_disconnect( id )
  180. {
  181. g_iGang[ id ] = -1;
  182.  
  183. new szAuthID[ 35 ];
  184. get_user_authid( id, szAuthID, charsmax( szAuthID ) );
  185.  
  186. sqlv_set_num( g_hPointsVault, szAuthID, g_iPoints[ id ] );
  187. }
  188.  
  189. public client_putinserver( id )
  190. {
  191. g_iGang[ id ] = get_user_gang( id );
  192. new szAuthID[ 35 ];
  193. get_user_authid( id, szAuthID, charsmax( szAuthID ) );
  194.  
  195. g_iPoints[ id ] = sqlv_get_num( g_hPointsVault, szAuthID );
  196. }
  197.  
  198. public plugin_end()
  199. {
  200. SaveGangs();
  201. sqlv_close( g_hVault );
  202. }
  203.  
  204. public Ham_PlayerSpawn_Post( id )
  205. {
  206. if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
  207. return HAM_IGNORED;
  208.  
  209. if( g_iGang[ id ] == -1 )
  210. {
  211. return HAM_IGNORED;
  212. }
  213.  
  214. new aData[ GangInfo ];
  215. ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
  216.  
  217. new iHealth = 100 + aData[ GangHP ] * get_pcvar_num( g_pHealthPerLevel );
  218. set_user_health( id, iHealth );
  219.  
  220. new iGravity = 800 - ( get_pcvar_num( g_pGravityPerLevel ) * aData[ GangGravity ] );
  221. set_user_gravity( id, float( iGravity ) / 800.0 );
  222.  
  223. return HAM_IGNORED;
  224. }
  225.  
  226. public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )
  227. {
  228. if( !is_user_alive( iAttacker ) || cs_get_user_team( iAttacker ) != CS_TEAM_T )
  229. return HAM_IGNORED;
  230.  
  231. if( g_iGang[ iAttacker ] == -1 )
  232. return HAM_IGNORED;
  233.  
  234. new aData[ GangInfo ];
  235. ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData );
  236.  
  237. SetHamParamFloat( 4, flDamage + ( get_pcvar_num( g_pDamagePerLevel ) * ( aData[ GangDamage ] ) ) );
  238.  
  239. return HAM_IGNORED;
  240. }
  241.  
  242. public Ham_TakeDamage_Post( iVictim, iInflictor, iAttacker, Float:flDamage, iBits )
  243. {
  244. if( !is_user_alive( iAttacker ) || g_iGang[ iAttacker ] == -1 || get_user_weapon( iAttacker ) != CSW_KNIFE || cs_get_user_team( iAttacker ) != CS_TEAM_T )
  245. {
  246. return HAM_IGNORED;
  247. }
  248.  
  249. new aData[ GangInfo ];
  250. ArrayGetArray( g_aGangs, g_iGang[ iAttacker ], aData );
  251.  
  252. new iChance = aData[ GangWeaponDrop ] * get_pcvar_num( g_pWeaponDropPerLevel );
  253.  
  254. if( iChance == 0 )
  255. return HAM_IGNORED;
  256.  
  257. new bool:bDrop = ( random_num( 1, 100 ) <= iChance );
  258.  
  259. if( bDrop )
  260. client_cmd( iVictim, "drop" );
  261.  
  262. return HAM_IGNORED;
  263. }
  264.  
  265. public Ham_PlayerResetSpeedPost( id )
  266. {
  267. if( g_iGang[ id ] == -1 || !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
  268. {
  269. return HAM_IGNORED;
  270. }
  271.  
  272. new aData[ GangInfo ];
  273. ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
  274.  
  275. if( aData[ GangStamina ] > 0 && get_user_maxspeed( id ) > 1.0 )
  276. set_user_maxspeed( id, 250.0 + ( aData[ GangStamina ] * get_pcvar_num( g_pStaminaPerLevel ) ) );
  277.  
  278. return HAM_IGNORED;
  279. }
  280.  
  281. public Event_DeathMsg()
  282. {
  283. new iKiller = read_data( 1 );
  284. new iVictim = read_data( 2 );
  285.  
  286. if( !is_user_alive( iKiller ) || cs_get_user_team( iVictim ) != CS_TEAM_CT || cs_get_user_team( iKiller ) != CS_TEAM_T )
  287. return PLUGIN_CONTINUE;
  288.  
  289. new iTotal = get_pcvar_num( g_pPointsPerKill ) + ( bool:read_data( 3 ) ? get_pcvar_num( g_pHeadshotBonus ) : 0 );
  290.  
  291. if( g_iGang[ iKiller ] > -1 )
  292. {
  293. new aData[ GangInfo ];
  294. ArrayGetArray( g_aGangs, g_iGang[ iKiller ], aData );
  295. aData[ GangKills ]++;
  296. ArraySetArray( g_aGangs, g_iGang[ iKiller ], aData );
  297.  
  298. iTotal += iTotal * ( aData[ GangStealing ] * get_pcvar_num( g_pStealingPerLevel ) );
  299. }
  300.  
  301. g_iPoints[ iKiller ] += iTotal;
  302.  
  303. return PLUGIN_CONTINUE;
  304. }
  305.  
  306. public Cmd_Gang( id )
  307. {
  308. if( !is_user_connected( id ) || cs_get_user_team( id ) != CS_TEAM_T )
  309. {
  310. print_color( id, "!g[Banda]!y csak a Terroristák tudnak hozzáférni ehhez a menühöz.");
  311. return PLUGIN_HANDLED;
  312. }
  313.  
  314. static szMenu[ 512 ], iLen, aData[ GangInfo ], iKeys, iStatus;
  315.  
  316. iKeys = MENU_KEY_0 | MENU_KEY_4;
  317.  
  318. iStatus = getStatus( id, g_iGang[ id ] );
  319.  
  320. if( g_iGang[ id ] > -1 )
  321. {
  322. ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
  323. iLen = formatex( szMenu, charsmax( szMenu ), "\yGangster menü^n\wAktuális banda:\y %s^n", aData[ GangName ] );
  324. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\ypontok: \w%i^n^n", g_iPoints[ id ] );
  325. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \dHozlétre egy bandát [%i pont]^n", get_pcvar_num( g_pCreateCost ) );
  326. }
  327.  
  328. else
  329. {
  330. iLen = formatex( szMenu, charsmax( szMenu ), "\yGangster menü^n\wAktuális banda:\r None^n" );
  331. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\ypontok: \w%i^n^n", g_iPoints[ id ] );
  332. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\r1. \wHozlétre egy bandát [%i pont]^n", get_pcvar_num( g_pCreateCost ) );
  333.  
  334. iKeys |= MENU_KEY_1;
  335. }
  336.  
  337.  
  338. if( iStatus > STATUS_MEMBER && g_iGang[ id ] > -1 && get_pcvar_num( g_pMaxMembers ) > aData[ NumMembers ] )
  339. {
  340. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w2. \rJátĂ©kos meghívás a bandába^n" );
  341. iKeys |= MENU_KEY_2;
  342. }
  343. else
  344. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w2. \dJátĂ©kos meghívás a bandába^n" );
  345.  
  346. if( g_iGang[ id ] > -1 )
  347. {
  348. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w3. \rTapasztalat^n" );
  349. iKeys |= MENU_KEY_3;
  350. }
  351.  
  352. else
  353. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w3. \dTapasztalat^n" );
  354.  
  355. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w4. \wTop-10^n" );
  356.  
  357. if( g_iGang[ id ] > -1 )
  358. {
  359. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w5. \rKilépés a bandából^n" );
  360. iKeys |= MENU_KEY_5;
  361. }
  362.  
  363. else
  364. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w5. \dKilépés a bandából^n" );
  365.  
  366.  
  367. if( iStatus > STATUS_MEMBER )
  368. {
  369. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w6. \rAdmin banda menĂĽ^n" );
  370. iKeys |= MENU_KEY_6;
  371. }
  372.  
  373. else
  374. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w6. \dAdmin banda menĂĽ^n" );
  375.  
  376. if( g_iGang[ id ] > -1 )
  377. {
  378. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w7. \rJelenlévŠtagok^n" );
  379. iKeys |= MENU_KEY_7;
  380. }
  381.  
  382. else
  383. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "\w7. \dJelenlévŠtagok^n" );
  384.  
  385. iLen += formatex( szMenu[ iLen ], charsmax( szMenu ) - iLen, "^n\w0. \rKilépés" );
  386.  
  387. show_menu( id, iKeys, szMenu, -1, "Gang Menu" );
  388.  
  389. return PLUGIN_CONTINUE;
  390. }
  391.  
  392. public GangMenu_Handler( id, iKey )
  393. {
  394. switch( ( iKey + 1 ) % 10 )
  395. {
  396. case 0: return PLUGIN_HANDLED;
  397.  
  398. case 1:
  399. {
  400. if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE )
  401. {
  402. client_cmd( id, "messagemode gang_name" );
  403. }
  404.  
  405. else if( g_iPoints[ id ] < get_pcvar_num( g_pCreateCost ) )
  406. {
  407. print_color( id, "!g[Banda]!y Neked nincs elég pontod, hogy létrehoz egy bandát!!");
  408. return PLUGIN_HANDLED;
  409. }
  410.  
  411. else
  412. client_cmd( id, "messagemode gang_name" );
  413. }
  414.  
  415. case 2:
  416. {
  417. ShowInviteMenu( id );
  418. }
  419.  
  420. case 3:
  421. {
  422. ShowSkillsMenu( id );
  423. }
  424.  
  425. case 4:
  426. {
  427. Cmd_Top10( id );
  428. }
  429.  
  430. case 5:
  431. {
  432. ShowLeaveConfirmMenu( id );
  433. }
  434.  
  435. case 6:
  436. {
  437. ShowLeaderMenu( id );
  438. }
  439.  
  440. case 7:
  441. {
  442. ShowMembersMenu( id );
  443. }
  444. }
  445.  
  446. return PLUGIN_HANDLED;
  447. }
  448.  
  449. public Cmd_CreateGang( id )
  450. {
  451. new bool:bAdmin = false;
  452.  
  453. if( get_pcvar_num( g_pAdminCreate ) && get_user_flags( id ) & ADMIN_CREATE )
  454. {
  455. bAdmin = true;
  456. }
  457.  
  458. else if( g_iPoints[ id ] < get_pcvar_num( g_pCreateCost ) )
  459. {
  460. print_color( id, "!g[Banda]!y Neked nincs elég pontod, hogy létrehoz egy bandát!!");
  461. return PLUGIN_HANDLED;
  462. }
  463.  
  464. else if( g_iGang[ id ] > -1 )
  465. {
  466. print_color( id, "!g[Banda]!y Nem tudsz létrehozni egy bandát ha már egy bandába benne vagy!!");
  467. return PLUGIN_HANDLED;
  468. }
  469.  
  470. else if( cs_get_user_team( id ) != CS_TEAM_T )
  471. {
  472. print_color( id, "!g[Banda]!y csak a Terroristák tudnak bandákat létrehozni!!");
  473. return PLUGIN_HANDLED;
  474. }
  475.  
  476. new szArgs[ 60 ];
  477. read_args( szArgs, charsmax( szArgs ) );
  478.  
  479. remove_quotes( szArgs );
  480.  
  481. if( TrieKeyExists( g_tGangNames, szArgs ) )
  482. {
  483. print_color( id, "!g[Banda]!y Az a banda ezzel a nével már létezik!!." );
  484. Cmd_Gang( id );
  485. return PLUGIN_HANDLED;
  486. }
  487.  
  488. new aData[ GangInfo ];
  489.  
  490. aData[ GangName ] = szArgs;
  491. aData[ GangHP ] = 0;
  492. aData[ GangStealing ] = 0;
  493. aData[ GangGravity ] = 0;
  494. aData[ GangStamina ] = 0;
  495. aData[ GangWeaponDrop ] = 0;
  496. aData[ GangDamage ] = 0;
  497. aData[ NumMembers ] = 0;
  498. aData[ GangMembers ] = _:TrieCreate();
  499.  
  500. ArrayPushArray( g_aGangs, aData );
  501.  
  502. if( !bAdmin )
  503. g_iPoints[ id ] -= get_pcvar_num( g_pCreateCost );
  504.  
  505. set_user_gang( id, ArraySize( g_aGangs ) - 1, STATUS_LEADER );
  506.  
  507. print_color( id, "!g[Banda]!y Sikeresen alkoltál egy bandát. Neve:!t %s", szArgs );
  508.  
  509. return PLUGIN_HANDLED;
  510. }
  511.  
  512. public ShowInviteMenu( id )
  513. {
  514. new iPlayers[ 32 ], iNum;
  515. get_players( iPlayers, iNum );
  516.  
  517. new szInfo[ 6 ], hMenu;
  518. hMenu = menu_create( "Meghíváshoz válasz egy játékost a bandába:", "InviteMenu_Handler" );
  519. new szName[ 32 ];
  520.  
  521. for( new i = 0, iPlayer; i < iNum; i++ )
  522. {
  523. iPlayer = iPlayers[ i ];
  524.  
  525.  
  526. if( iPlayer == id || g_iGang[ iPlayer ] == g_iGang[ id ] || cs_get_user_team( iPlayer ) != CS_TEAM_T )
  527. continue;
  528.  
  529. get_user_name( iPlayer, szName, charsmax( szName ) );
  530.  
  531. num_to_str( iPlayer, szInfo, charsmax( szInfo ) );
  532.  
  533. menu_additem( hMenu, szName, szInfo );
  534. }
  535.  
  536. menu_display( id, hMenu, 0 );
  537. }
  538.  
  539. public InviteMenu_Handler( id, hMenu, iItem )
  540. {
  541. if( iItem == MENU_EXIT )
  542. {
  543. Cmd_Gang( id );
  544. return PLUGIN_HANDLED;
  545. }
  546.  
  547. new szData[ 6 ], iAccess, hCallback, szName[ 32 ];
  548. menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, 31, hCallback );
  549.  
  550. new iPlayer = str_to_num( szData );
  551.  
  552. if( !is_user_connected( iPlayer ) )
  553. return PLUGIN_HANDLED;
  554.  
  555. ShowInviteConfirmMenu( id, iPlayer );
  556.  
  557. print_color( id, "!g[Banda]!y Téged sikeresen meghívtad a %s bandába!!", szName );
  558.  
  559. Cmd_Gang( id );
  560. return PLUGIN_HANDLED;
  561. }
  562.  
  563. public ShowInviteConfirmMenu( id, iPlayer )
  564. {
  565. new szName[ 32 ];
  566. get_user_name( id, szName, charsmax( szName ) );
  567.  
  568. new aData[ GangInfo ];
  569. ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
  570.  
  571. new szMenuTitle[ 128 ];
  572. formatex( szMenuTitle, charsmax( szMenuTitle ), "%s felkért téged, hogy csatlakoz %s", szName, aData[ GangName ] );
  573. new hMenu = menu_create( szMenuTitle, "InviteConfirmMenu_Handler" );
  574.  
  575. new szInfo[ 6 ];
  576. num_to_str( g_iGang[ id ], szInfo, 5 );
  577.  
  578. menu_additem( hMenu, "Elfogadjad a meghívást", szInfo );
  579. menu_additem( hMenu, "Elutasítja a meghĂ­vást", "-1" );
  580.  
  581. menu_display( iPlayer, hMenu, 0 );
  582. }
  583.  
  584. public InviteConfirmMenu_Handler( id, hMenu, iItem )
  585. {
  586. if( iItem == MENU_EXIT )
  587. return PLUGIN_HANDLED;
  588.  
  589. new szData[ 6 ], iAccess, hCallback;
  590. menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );
  591.  
  592. new iGang = str_to_num( szData );
  593.  
  594. if( iGang == -1 )
  595. return PLUGIN_HANDLED;
  596.  
  597. if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER )
  598. {
  599. print_color( id, "!g[Banda]!y Nem tudod elhagyani a bandátad amíg te vagy a vezető!!");
  600. return PLUGIN_HANDLED;
  601. }
  602.  
  603. set_user_gang( id, iGang );
  604.  
  605. new aData[ GangInfo ];
  606. ArrayGetArray( g_aGangs, iGang, aData );
  607.  
  608. print_color( id, "!g[Banda]!y Sikeren csatlakoztál a bandához ^03%s^01.", aData[ GangName ] );
  609.  
  610. return PLUGIN_HANDLED;
  611. }
  612.  
  613.  
  614. public ShowSkillsMenu( id )
  615. {
  616. static szMenu[ 512 ], iLen, iKeys, aData[ GangInfo ];
  617.  
  618. if( !iKeys )
  619. {
  620. iKeys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_0;
  621. }
  622.  
  623. ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
  624.  
  625. iLen = formatex( szMenu, charsmax( szMenu ), "\rFejlesztés MenĂĽ^n^n" );
  626. iLen += formatex( szMenu[ iLen ], 511 - iLen, "\w1. \yÉlet fejlesztĂ©s \d[\rĂra: \y%i \rPont\d] \y[\wSzint:%i/%i\y]^n", get_pcvar_num( g_pHealthCost ), aData[ GangHP ], get_pcvar_num( g_pHealthMax ) );
  627. iLen += formatex( szMenu[ iLen ], 511 - iLen, "\w2. \yLopakodás fejlesztĂ©s \d[\rĂra: \y%i \rPont\d] \y[\wSzint:%i/%i\y]^n", get_pcvar_num( g_pStealingCost ), aData[ GangStealing ], get_pcvar_num( g_pStealingMax ) );
  628. iLen += formatex( szMenu[ iLen ], 511 - iLen, "\w3. \yGravitáciĂł fejlesztĂ©s \d[\rĂra: \y%i \rPont\d] \y[\wSzint:%i/%i\y]^n", get_pcvar_num( g_pGravityCost ), aData[ GangGravity ], get_pcvar_num( g_pGravityMax ) );
  629. iLen += formatex( szMenu[ iLen ], 511 - iLen, "\w4. \ySebzĂ©s fejlesztĂ©s \d[\rĂra: \y%i \rPont\d] \y[\wSzint:%i/%i\y]]^n", get_pcvar_num( g_pDamageCost ), aData[ GangDamage ], get_pcvar_num( g_pDamageMax ) );
  630. iLen += formatex( szMenu[ iLen ], 511 - iLen, "\w5. \yFegyver dobás fejlesztĂ©s \d[\rĂra: \y%i \rPont\d] \y[\wSzint:%i/%i\y]^n", get_pcvar_num( g_pWeaponDropCost ), aData[ GangWeaponDrop ], get_pcvar_num( g_pWeaponDropMax ) );
  631. iLen += formatex( szMenu[ iLen ], 511 - iLen, "\w6. \ySebessĂ©g fejlesztĂ©s \d[\rĂra: \y%i \rPont\d] \y[\wSzint:%i/%i\y]^n", get_pcvar_num( g_pStaminaCost ), aData[ GangStamina ], get_pcvar_num( g_pStaminaMax ) );
  632.  
  633. iLen += formatex( szMenu[ iLen ], 511 - iLen, "^n\w0. \rKilépés" );
  634.  
  635. show_menu( id, iKeys, szMenu, -1, "Skills Menu" );
  636. }
  637.  
  638. public SkillsMenu_Handler( id, iKey )
  639. {
  640. new aData[ GangInfo ];
  641. ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
  642.  
  643. switch( ( iKey + 1 ) % 10 )
  644. {
  645. case 0:
  646. {
  647. Cmd_Gang( id );
  648. return PLUGIN_HANDLED;
  649. }
  650.  
  651. case 1:
  652. {
  653. if( aData[ GangHP ] == get_pcvar_num( g_pHealthMax ) )
  654. {
  655. print_color( id, "!g[Banda]!y A bandád már a maximum szintet elérte!!");
  656. ShowSkillsMenu( id );
  657. return PLUGIN_HANDLED;
  658. }
  659.  
  660. new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pHealthCost );
  661.  
  662. if( iRemaining < 0 )
  663. {
  664. print_color( id, "!g[Banda]!y Neked nincs elég pontod!!");
  665. ShowSkillsMenu( id );
  666. return PLUGIN_HANDLED;
  667. }
  668.  
  669. aData[ GangHP ]++;
  670.  
  671. g_iPoints[ id ] = iRemaining;
  672. }
  673.  
  674. case 2:
  675. {
  676. if( aData[ GangStealing ] == get_pcvar_num( g_pStealingMax ) )
  677. {
  678. print_color( id, "!g[Banda]!y A bandád már a maximum szintet elérte!!");
  679. ShowSkillsMenu( id );
  680. return PLUGIN_HANDLED;
  681. }
  682.  
  683. new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pStealingCost );
  684.  
  685. if( iRemaining < 0 )
  686. {
  687. print_color( id, "!g[Banda]!y Neked nincs elég pontod!!");
  688. ShowSkillsMenu( id );
  689. return PLUGIN_HANDLED;
  690. }
  691.  
  692. aData[ GangStealing ]++;
  693.  
  694. g_iPoints[ id ] = iRemaining;
  695. }
  696.  
  697. case 3:
  698. {
  699. if( aData[ GangGravity ] == get_pcvar_num( g_pGravityMax ) )
  700. {
  701. print_color( id, "!g[Banda]!y A bandád már a maximum szintet elérte!!");
  702. ShowSkillsMenu( id );
  703. return PLUGIN_HANDLED;
  704. }
  705.  
  706. new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pGravityCost );
  707.  
  708. if( iRemaining < 0 )
  709. {
  710. print_color( id, "!g[Banda]!y Neked nincs elég pontod!!");
  711. ShowSkillsMenu( id );
  712. return PLUGIN_HANDLED;
  713. }
  714.  
  715. aData[ GangGravity ]++;
  716.  
  717. g_iPoints[ id ] = iRemaining;
  718. }
  719.  
  720. case 4:
  721. {
  722. if( aData[ GangDamage ] == get_pcvar_num( g_pDamageMax ) )
  723. {
  724. print_color( id, "!g[Banda]!y A bandád már a maximum szintet elérte!!");
  725. ShowSkillsMenu( id );
  726. return PLUGIN_HANDLED;
  727. }
  728.  
  729. new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pDamageCost );
  730.  
  731. if( iRemaining < 0 )
  732. {
  733. print_color( id, "!g[Banda]!y Neked nincs elég pontod!!");
  734. ShowSkillsMenu( id );
  735. return PLUGIN_HANDLED;
  736. }
  737.  
  738. aData[ GangDamage ]++;
  739.  
  740. g_iPoints[ id ] = iRemaining;
  741. }
  742.  
  743. case 5:
  744. {
  745. if( aData[ GangWeaponDrop ] == get_pcvar_num( g_pWeaponDropMax ) )
  746. {
  747. print_color( id, "!g[Banda]!y A bandád már a maximum szintet elérte!!" );
  748. ShowSkillsMenu( id );
  749. return PLUGIN_HANDLED;
  750. }
  751.  
  752. new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pWeaponDropCost );
  753.  
  754. if( iRemaining < 0 )
  755. {
  756. print_color( id, "!g[Banda]!y Neked nincs elég pontod!!");
  757. ShowSkillsMenu( id );
  758. return PLUGIN_HANDLED;
  759. }
  760.  
  761. aData[ GangWeaponDrop ]++;
  762.  
  763. g_iPoints[ id ] = iRemaining;
  764. }
  765.  
  766. case 6:
  767. {
  768. if( aData[ GangStamina ] == get_pcvar_num( g_pStaminaMax ) )
  769. {
  770. print_color( id, "!g[Banda]!y A bandád már a maximum szintet elérte!!");
  771. ShowSkillsMenu( id );
  772. return PLUGIN_HANDLED;
  773. }
  774.  
  775. new iRemaining = g_iPoints[ id ] - get_pcvar_num( g_pStaminaCost );
  776.  
  777. if( iRemaining < 0 )
  778. {
  779. print_color( id, "!g[Banda]!y Neked nincs elég pontod!!");
  780. ShowSkillsMenu( id );
  781. return PLUGIN_HANDLED;
  782. }
  783.  
  784. aData[ GangStamina ]++;
  785.  
  786. g_iPoints[ id ] = iRemaining;
  787. }
  788. }
  789.  
  790. ArraySetArray( g_aGangs, g_iGang[ id ], aData );
  791.  
  792. new iPlayers[ 32 ], iNum, iPlayer;
  793. new szName[ 32 ];
  794. get_players( iPlayers, iNum );
  795.  
  796. for( new i = 0; i < iNum; i++ )
  797. {
  798. iPlayer = iPlayers[ i ];
  799.  
  800. if( iPlayer == id || g_iGang[ iPlayer ] != g_iGang[ id ] )
  801. continue;
  802.  
  803. print_color( iPlayer, "!g[Banda]!t %s!y Fejlesztette a bandád egyike közül!!", szName );
  804. }
  805.  
  806. print_color( id, "!g[Banda]!y Sikeren fejlesztetted a bandádat!!");
  807.  
  808. ShowSkillsMenu( id );
  809.  
  810. return PLUGIN_HANDLED;
  811. }
  812.  
  813.  
  814. public Cmd_Top10( id )
  815. {
  816. new iSize = ArraySize( g_aGangs );
  817.  
  818. new iOrder[ 100 ][ 2 ];
  819.  
  820. new aData[ GangInfo ];
  821.  
  822. for( new i = 0; i < iSize; i++ )
  823. {
  824. ArrayGetArray( g_aGangs, i, aData );
  825.  
  826. iOrder[ i ][ 0 ] = i;
  827. iOrder[ i ][ 1 ] = aData[ GangKills ];
  828. }
  829.  
  830. SortCustom2D( iOrder, iSize, "Top10_Sort" );
  831.  
  832. new szMessage[ 2048 ];
  833. formatex( szMessage, charsmax( szMessage ), "<body bgcolor=#000000><font color=#FFB000><pre>" );
  834. format( szMessage, charsmax( szMessage ), "%s%2s %-22.22s %7s %4s %10s %9s %9s %11s %8s^n", szMessage, "#", "Name", "Kills", "HP", "Stealing",
  835. "Gravity", "Stamina", "WeaponDrop", "Damage" );
  836.  
  837. for( new i = 0; i < min( 10, iSize ); i++ )
  838. {
  839. ArrayGetArray( g_aGangs, iOrder[ i ][ 0 ], aData );
  840.  
  841. format( szMessage, charsmax( szMessage ), "%s%-2d %22.22s %7d %4d %10d %9d %9d %11d %8d^n", szMessage, i + 1, aData[ GangName ],
  842. aData[ GangKills ], aData[ GangHP ], aData[ GangStealing ], aData[ GangGravity ], aData[ GangStamina], aData[ GangWeaponDrop ], aData[ GangDamage ] );
  843. }
  844.  
  845. show_motd( id, szMessage, "Gang Top 10" );
  846. }
  847.  
  848. public Top10_Sort( const iElement1[ ], const iElement2[ ], const iArray[ ], szData[], iSize )
  849. {
  850. if( iElement1[ 1 ] > iElement2[ 1 ] )
  851. return -1;
  852.  
  853. else if( iElement1[ 1 ] < iElement2[ 1 ] )
  854. return 1;
  855.  
  856. return 0;
  857. }
  858.  
  859. public ShowLeaveConfirmMenu( id )
  860. {
  861. new hMenu = menu_create( "Te biztos vagy benne, hogy kilépsz?", "LeaveConfirmMenu_Handler" );
  862. menu_additem( hMenu, "Igen, biztos vagyok", "0" );
  863. menu_additem( hMenu, "Nem, nem lépek ki", "1" );
  864.  
  865. menu_display( id, hMenu, 0 );
  866. }
  867.  
  868. public LeaveConfirmMenu_Handler( id, hMenu, iItem )
  869. {
  870. if( iItem == MENU_EXIT )
  871. return PLUGIN_HANDLED;
  872.  
  873. new szData[ 6 ], iAccess, hCallback;
  874. menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );
  875.  
  876. switch( str_to_num( szData ) )
  877. {
  878. case 0:
  879. {
  880. if( getStatus( id, g_iGang[ id ] ) == STATUS_LEADER )
  881. {
  882. print_color( id, "!g[Banda]!y Neked vezetést kell át adnod mielőtt kilépsz a bandából!!");
  883. Cmd_Gang( id );
  884.  
  885. return PLUGIN_HANDLED;
  886. }
  887.  
  888. print_color( id, "!g[Banda]!y Sikeresen elhagytad a bandádat!");
  889. set_user_gang( id, -1 );
  890. Cmd_Gang( id );
  891. }
  892.  
  893. case 1: Cmd_Gang( id );
  894. }
  895.  
  896. return PLUGIN_HANDLED;
  897. }
  898.  
  899. public ShowLeaderMenu( id )
  900. {
  901. new hMenu = menu_create( "Banda vezető menü:", "LeaderMenu_Handler" );
  902.  
  903. new iStatus = getStatus( id, g_iGang[ id ] );
  904.  
  905. if( iStatus == STATUS_LEADER )
  906. {
  907. menu_additem( hMenu, "Feloszlik a banda", "0" );
  908. menu_additem( hMenu, "Vezetés visz tovább", "1" );
  909. menu_additem( hMenu, "Hozzá ad egy admint", "4" );
  910. menu_additem( hMenu, "Törli az admint", "5" );
  911. }
  912.  
  913. menu_additem( hMenu, "Bandából kirúgás", "2" );
  914. menu_additem( hMenu, "Válasz banda nevet", "3" );
  915.  
  916.  
  917. menu_display( id, hMenu, 0 );
  918. }
  919.  
  920. public LeaderMenu_Handler( id, hMenu, iItem )
  921. {
  922. if( iItem == MENU_EXIT )
  923. {
  924. Cmd_Gang( id );
  925. return PLUGIN_HANDLED;
  926. }
  927.  
  928. new iAccess, hCallback, szData[ 6 ];
  929. menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );
  930.  
  931. switch( str_to_num( szData ) )
  932. {
  933. case 0:
  934. {
  935. ShowDisbandConfirmMenu( id );
  936. }
  937.  
  938. case 1:
  939. {
  940. ShowTransferMenu( id );
  941. }
  942.  
  943. case 2:
  944. {
  945. ShowKickMenu( id );
  946. }
  947.  
  948. case 3:
  949. {
  950. client_cmd( id, "messagemode New_Name" );
  951. }
  952.  
  953. case 4:
  954. {
  955. ShowAddAdminMenu( id );
  956. }
  957.  
  958. case 5:
  959. {
  960. ShowRemoveAdminMenu( id );
  961. }
  962. }
  963.  
  964. return PLUGIN_HANDLED;
  965. }
  966.  
  967. public ShowDisbandConfirmMenu( id )
  968. {
  969. new hMenu = menu_create( "Biztos vagy te benne, hogy feloszlatod a bandát?", "DisbandConfirmMenu_Handler" );
  970. menu_additem( hMenu, "Igen, feloszlatom", "0" );
  971. menu_additem( hMenu, "Nem, nem osztalom fel", "1" );
  972.  
  973. menu_display( id, hMenu, 0 );
  974. }
  975.  
  976. public DisbandConfirmMenu_Handler( id, hMenu, iItem )
  977. {
  978. if( iItem == MENU_EXIT )
  979. return PLUGIN_HANDLED;
  980.  
  981. new szData[ 6 ], iAccess, hCallback;
  982. menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, _, _, hCallback );
  983.  
  984. switch( str_to_num( szData ) )
  985. {
  986. case 0:
  987. {
  988.  
  989. print_color( id, "!g[Banda]!y Sikeresen feloszlattad a bandádat!!");
  990.  
  991. new iPlayers[ 32 ], iNum;
  992.  
  993. get_players( iPlayers, iNum );
  994.  
  995. new iPlayer;
  996.  
  997. for( new i = 0; i < iNum; i++ )
  998. {
  999. iPlayer = iPlayers[ i ];
  1000.  
  1001. if( iPlayer == id )
  1002. continue;
  1003.  
  1004. if( g_iGang[ id ] != g_iGang[ iPlayer ] )
  1005. continue;
  1006.  
  1007. print_color( iPlayer, "!g[Banda]!y A bandád a vezető álltal feloszlot!!");
  1008. set_user_gang( iPlayer, -1 );
  1009. }
  1010.  
  1011. new iGang = g_iGang[ id ];
  1012.  
  1013. set_user_gang( id, -1 );
  1014.  
  1015. ArrayDeleteItem( g_aGangs, iGang );
  1016.  
  1017. Cmd_Gang( id );
  1018. }
  1019.  
  1020. case 1: Cmd_Gang( id );
  1021. }
  1022.  
  1023. return PLUGIN_HANDLED;
  1024. }
  1025.  
  1026. public ShowTransferMenu( id )
  1027. {
  1028. new iPlayers[ 32 ], iNum;
  1029. get_players( iPlayers, iNum, "e", "TERRORIST" );
  1030.  
  1031. new hMenu = menu_create( "Vezetést visz tovább:", "TransferMenu_Handler" );
  1032. new szName[ 32 ], szData[ 6 ];
  1033.  
  1034. for( new i = 0, iPlayer; i < iNum; i++ )
  1035. {
  1036. iPlayer = iPlayers[ i ];
  1037.  
  1038. if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer )
  1039. continue;
  1040.  
  1041. get_user_name( iPlayer, szName, charsmax( szName ) );
  1042. num_to_str( iPlayer, szData, charsmax( szData ) );
  1043.  
  1044. menu_additem( hMenu, szName, szData );
  1045. }
  1046.  
  1047. menu_display( id, hMenu, 0 );
  1048. }
  1049.  
  1050. public TransferMenu_Handler( id, hMenu, iItem )
  1051. {
  1052. if( iItem == MENU_EXIT )
  1053. {
  1054. ShowLeaderMenu( id );
  1055. return PLUGIN_HANDLED;
  1056. }
  1057.  
  1058. new iAccess, hCallback, szData[ 6 ], szName[ 32 ];
  1059.  
  1060. menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback );
  1061.  
  1062. new iPlayer = str_to_num( szData );
  1063.  
  1064. if( !is_user_connected( iPlayer ) )
  1065. {
  1066. print_color( id, "!g[Banda]!y Annak a játékosnak már jó a kapcsolatai!!");
  1067. ShowTransferMenu( id );
  1068. return PLUGIN_HANDLED;
  1069. }
  1070.  
  1071. set_user_gang( iPlayer, g_iGang[ id ], STATUS_LEADER );
  1072. set_user_gang( id, g_iGang[ id ], STATUS_ADMIN );
  1073.  
  1074. Cmd_Gang( id );
  1075.  
  1076. new iPlayers[ 32 ], iNum, iTemp;
  1077. get_players( iPlayers, iNum );
  1078.  
  1079. for( new i = 0; i < iNum; i++ )
  1080. {
  1081. iTemp = iPlayers[ i ];
  1082.  
  1083. if( iTemp == iPlayer )
  1084. {
  1085. print_color( iTemp,"!g[Banda]!y Te vagy a bandád új vezetője!!");
  1086. continue;
  1087. }
  1088.  
  1089. else if( g_iGang[ iTemp ] != g_iGang[ id ] )
  1090. continue;
  1091.  
  1092. print_color( iTemp, "!g[Banda]!t %s!y van a bandádnak egy új vezetője!!", szName );
  1093. }
  1094.  
  1095. return PLUGIN_HANDLED;
  1096. }
  1097.  
  1098.  
  1099. public ShowKickMenu( id )
  1100. {
  1101. new iPlayers[ 32 ], iNum;
  1102. get_players( iPlayers, iNum );
  1103.  
  1104. new hMenu = menu_create( "Játékos kirúgás a bandából:", "KickMenu_Handler" );
  1105. new szName[ 32 ], szData[ 6 ];
  1106.  
  1107.  
  1108. for( new i = 0, iPlayer; i < iNum; i++ )
  1109. {
  1110. iPlayer = iPlayers[ i ];
  1111.  
  1112. if( g_iGang[ iPlayer ] != g_iGang[ id ] || id == iPlayer )
  1113. continue;
  1114.  
  1115. get_user_name( iPlayer, szName, charsmax( szName ) );
  1116. num_to_str( iPlayer, szData, charsmax( szData ) );
  1117.  
  1118. menu_additem( hMenu, szName, szData );
  1119. }
  1120.  
  1121. menu_display( id, hMenu, 0 );
  1122. }
  1123.  
  1124. public KickMenu_Handler( id, hMenu, iItem )
  1125. {
  1126. if( iItem == MENU_EXIT )
  1127. {
  1128. ShowLeaderMenu( id );
  1129. return PLUGIN_HANDLED;
  1130. }
  1131.  
  1132. new iAccess, hCallback, szData[ 6 ], szName[ 32 ];
  1133.  
  1134. menu_item_getinfo( hMenu, iItem, iAccess, szData, 5, szName, charsmax( szName ), hCallback );
  1135.  
  1136. new iPlayer = str_to_num( szData );
  1137.  
  1138. if( !is_user_connected( iPlayer ) )
  1139. {
  1140. print_color( id, "!g[Banda]!y Annak a játékosnak már jó a kapcsolatai!!");
  1141. ShowTransferMenu( id );
  1142. return PLUGIN_HANDLED;
  1143. }
  1144.  
  1145. set_user_gang( iPlayer, -1 );
  1146.  
  1147. Cmd_Gang( id );
  1148.  
  1149. new iPlayers[ 32 ], iNum, iTemp;
  1150. get_players( iPlayers, iNum );
  1151.  
  1152. for( new i = 0; i < iNum; i++ )
  1153. {
  1154. iTemp = iPlayers[ i ];
  1155.  
  1156. if( iTemp == iPlayer || g_iGang[ iTemp ] != g_iGang[ id ] )
  1157. continue;
  1158.  
  1159. print_color( iTemp, "!g[Banda]!t %s!y Kirúgtak a bandából", szName );
  1160. }
  1161.  
  1162. print_color( iPlayer, "!g[Banda]!y Téged kirúgtak a bandából!!", szName );
  1163.  
  1164. return PLUGIN_HANDLED;
  1165. }
  1166.  
  1167. public ChangeName_Handler( id )
  1168. {
  1169. if( g_iGang[ id ] == -1 || getStatus( id, g_iGang[ id ] ) == STATUS_MEMBER )
  1170. {
  1171. return;
  1172. }
  1173.  
  1174. new iGang = g_iGang[ id ];
  1175.  
  1176. new szArgs[ 64 ];
  1177. read_args( szArgs, charsmax( szArgs ) );
  1178.  
  1179. new iPlayers[ 32 ], iNum;
  1180. get_players( iPlayers, iNum );
  1181.  
  1182. new bool:bInGang[ 33 ];
  1183. new iStatus[ 33 ];
  1184.  
  1185. for( new i = 0, iPlayer; i < iNum; i++ )
  1186. {
  1187. iPlayer = iPlayers[ i ];
  1188.  
  1189. if( g_iGang[ id ] != g_iGang[ iPlayer ] )
  1190. continue;
  1191.  
  1192. bInGang[ iPlayer ] = true;
  1193. iStatus[ iPlayer ] = getStatus( id, iGang );
  1194.  
  1195. set_user_gang( iPlayer, -1 );
  1196. }
  1197.  
  1198. new aData[ GangInfo ];
  1199. ArrayGetArray( g_aGangs, iGang, aData );
  1200.  
  1201. aData[ GangName ] = szArgs;
  1202.  
  1203. ArraySetArray( g_aGangs, iGang, aData );
  1204.  
  1205. for( new i = 0, iPlayer; i < iNum; i++ )
  1206. {
  1207. iPlayer = iPlayers[ i ];
  1208.  
  1209. if( !bInGang[ iPlayer ] )
  1210. continue;
  1211.  
  1212. set_user_gang( iPlayer, iGang, iStatus[ id ] );
  1213. }
  1214. }
  1215.  
  1216. public ShowAddAdminMenu( id )
  1217. {
  1218. new iPlayers[ 32 ], iNum;
  1219. new szName[ 32 ], szData[ 6 ];
  1220. new hMenu = menu_create( "Válasz egy játékost az előre léptetéshez:", "AddAdminMenu_Handler" );
  1221.  
  1222. get_players( iPlayers, iNum );
  1223.  
  1224. for( new i = 0, iPlayer; i < iNum; i++ )
  1225. {
  1226. iPlayer = iPlayers[ i ];
  1227.  
  1228. if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) > STATUS_MEMBER )
  1229. continue;
  1230.  
  1231. get_user_name( iPlayer, szName, charsmax( szName ) );
  1232.  
  1233. num_to_str( iPlayer, szData, charsmax( szData ) );
  1234.  
  1235. menu_additem( hMenu, szName, szData );
  1236. }
  1237.  
  1238. menu_display( id, hMenu, 0 );
  1239. }
  1240.  
  1241. public AddAdminMenu_Handler( id, hMenu, iItem )
  1242. {
  1243. if( iItem == MENU_EXIT )
  1244. {
  1245. menu_destroy( hMenu );
  1246. ShowLeaderMenu( id );
  1247. return PLUGIN_HANDLED;
  1248. }
  1249.  
  1250. new iAccess, hCallback, szData[ 6 ], szName[ 32 ];
  1251.  
  1252. menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback );
  1253.  
  1254. new iChosen = str_to_num( szData );
  1255.  
  1256. if( !is_user_connected( iChosen ) )
  1257. {
  1258. menu_destroy( hMenu );
  1259. ShowLeaderMenu( id );
  1260. return PLUGIN_HANDLED;
  1261. }
  1262.  
  1263. set_user_gang( iChosen, g_iGang[ id ], STATUS_LEADER );
  1264.  
  1265. new iPlayers[ 32 ], iNum;
  1266. get_players( iPlayers, iNum );
  1267.  
  1268. for( new i = 0, iPlayer; i < iNum; i++ )
  1269. {
  1270. iPlayer = iPlayers[ i ];
  1271.  
  1272. if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen )
  1273. continue;
  1274.  
  1275. print_color( iPlayer, "!g[Banda]!t %s!y Előre léptettek egy admin bandából!!", szName );
  1276. }
  1277.  
  1278. print_color( iChosen, "!g[Banda]!y Téged előre léptettek egy admin bandából!!");
  1279.  
  1280. menu_destroy( hMenu );
  1281. return PLUGIN_HANDLED;
  1282. }
  1283.  
  1284. public ShowRemoveAdminMenu( id )
  1285. {
  1286. new iPlayers[ 32 ], iNum;
  1287. new szName[ 32 ], szData[ 6 ];
  1288. new hMenu = menu_create( "Válasz egy játékost a lefokozáshoz:", "RemoveAdminMenu_Handler" );
  1289.  
  1290. get_players( iPlayers, iNum );
  1291.  
  1292. for( new i = 0, iPlayer; i < iNum; i++ )
  1293. {
  1294. iPlayer = iPlayers[ i ];
  1295.  
  1296. if( g_iGang[ id ] != g_iGang[ iPlayer ] || getStatus( iPlayer, g_iGang[ iPlayer ] ) != STATUS_ADMIN )
  1297. continue;
  1298.  
  1299. get_user_name( iPlayer, szName, charsmax( szName ) );
  1300.  
  1301. num_to_str( iPlayer, szData, charsmax( szData ) );
  1302.  
  1303. menu_additem( hMenu, szName, szData );
  1304. }
  1305.  
  1306. menu_display( id, hMenu, 0 );
  1307. }
  1308.  
  1309. public RemoveAdminMenu_Handler( id, hMenu, iItem )
  1310. {
  1311. if( iItem == MENU_EXIT )
  1312. {
  1313. menu_destroy( hMenu );
  1314. ShowLeaderMenu( id );
  1315. return PLUGIN_HANDLED;
  1316. }
  1317.  
  1318. new iAccess, hCallback, szData[ 6 ], szName[ 32 ];
  1319.  
  1320. menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), hCallback );
  1321.  
  1322. new iChosen = str_to_num( szData );
  1323.  
  1324. if( !is_user_connected( iChosen ) )
  1325. {
  1326. menu_destroy( hMenu );
  1327. ShowLeaderMenu( id );
  1328. return PLUGIN_HANDLED;
  1329. }
  1330.  
  1331. set_user_gang( iChosen, g_iGang[ id ], STATUS_MEMBER );
  1332.  
  1333. new iPlayers[ 32 ], iNum;
  1334. get_players( iPlayers, iNum );
  1335.  
  1336. for( new i = 0, iPlayer; i < iNum; i++ )
  1337. {
  1338. iPlayer = iPlayers[ i ];
  1339.  
  1340. if( g_iGang[ iPlayer ] != g_iGang[ id ] || iPlayer == iChosen )
  1341. continue;
  1342.  
  1343. print_color( iPlayer, "!g[Banda]!t %s!y Lefokozták egy admin bandából!!", szName );
  1344. }
  1345.  
  1346. print_color( iChosen, "!g[Banda]!y Téged lefokoztak egy admin bandából!!");
  1347.  
  1348. menu_destroy( hMenu );
  1349. return PLUGIN_HANDLED;
  1350. }
  1351.  
  1352. public ShowMembersMenu( id )
  1353. {
  1354. new szName[ 64 ], iPlayers[ 32 ], iNum;
  1355. get_players( iPlayers, iNum );
  1356.  
  1357. new hMenu = menu_create( "Jelenlévő tagok:", "MemberMenu_Handler" );
  1358.  
  1359. for( new i = 0, iPlayer; i < iNum; i++ )
  1360. {
  1361. iPlayer = iPlayers[ i ];
  1362.  
  1363. if( g_iGang[ id ] != g_iGang[ iPlayer ] )
  1364. continue;
  1365.  
  1366. get_user_name( iPlayer, szName, charsmax( szName ) );
  1367.  
  1368. switch( getStatus( iPlayer, g_iGang[ id ] ) )
  1369. {
  1370. case STATUS_MEMBER:
  1371. {
  1372. add( szName, charsmax( szName ), " \r[Tag]" );
  1373. }
  1374.  
  1375. case STATUS_ADMIN:
  1376. {
  1377. add( szName, charsmax( szName ), " \r[Admin]" );
  1378. }
  1379.  
  1380. case STATUS_LEADER:
  1381. {
  1382. add( szName, charsmax( szName ), " \r[Fővezér]" );
  1383. }
  1384. }
  1385.  
  1386. menu_additem( hMenu, szName );
  1387. }
  1388.  
  1389. menu_display( id, hMenu, 0 );
  1390. }
  1391.  
  1392. public MemberMenu_Handler( id, hMenu, iItem )
  1393. {
  1394. if( iItem == MENU_EXIT )
  1395. {
  1396. menu_destroy( hMenu );
  1397. Cmd_Gang( id );
  1398. return PLUGIN_HANDLED;
  1399. }
  1400.  
  1401. menu_destroy( hMenu );
  1402.  
  1403. ShowMembersMenu( id )
  1404. return PLUGIN_HANDLED;
  1405. }
  1406.  
  1407. // Credits to Tirant from zombie mod and xOR from xRedirect
  1408. public LoadGangs()
  1409. {
  1410. new szConfigsDir[ 60 ];
  1411. get_configsdir( szConfigsDir, charsmax( szConfigsDir ) );
  1412. add( szConfigsDir, charsmax( szConfigsDir ), "/gangs.ini" );
  1413.  
  1414. new iFile = fopen( szConfigsDir, "rt" );
  1415.  
  1416. new aData[ GangInfo ];
  1417.  
  1418. new szBuffer[ 512 ], szData[ 6 ], szValue[ 6 ], i, iCurGang;
  1419.  
  1420. while( !feof( iFile ) )
  1421. {
  1422. fgets( iFile, szBuffer, charsmax( szBuffer ) );
  1423.  
  1424. trim( szBuffer );
  1425. remove_quotes( szBuffer );
  1426.  
  1427. if( !szBuffer[ 0 ] || szBuffer[ 0 ] == ';' )
  1428. {
  1429. continue;
  1430. }
  1431.  
  1432. if( szBuffer[ 0 ] == '[' && szBuffer[ strlen( szBuffer ) - 1 ] == ']' )
  1433. {
  1434. copy( aData[ GangName ], strlen( szBuffer ) - 2, szBuffer[ 1 ] );
  1435. aData[ GangHP ] = 0;
  1436. aData[ GangStealing ] = 0;
  1437. aData[ GangGravity ] = 0;
  1438. aData[ GangStamina ] = 0;
  1439. aData[ GangWeaponDrop ] = 0;
  1440. aData[ GangDamage ] = 0;
  1441. aData[ GangKills ] = 0;
  1442. aData[ NumMembers ] = 0;
  1443. aData[ GangMembers ] = _:TrieCreate();
  1444.  
  1445. if( TrieKeyExists( g_tGangNames, aData[ GangName ] ) )
  1446. {
  1447. new szError[ 256 ];
  1448. formatex( szError, charsmax( szError ), "[Gangs] Gang already exists: %s", aData[ GangName ] );
  1449. set_fail_state( szError );
  1450. }
  1451.  
  1452. ArrayPushArray( g_aGangs, aData );
  1453.  
  1454. TrieSetCell( g_tGangNames, aData[ GangName ], iCurGang );
  1455.  
  1456. log_amx( "Gang Created: %s", aData[ GangName ] );
  1457.  
  1458. iCurGang++;
  1459.  
  1460. continue;
  1461. }
  1462.  
  1463. strtok( szBuffer, szData, 31, szValue, 511, '=' );
  1464. trim( szData );
  1465. trim( szValue );
  1466.  
  1467. if( TrieGetCell( g_tGangValues, szData, i ) )
  1468. {
  1469. ArrayGetArray( g_aGangs, iCurGang - 1, aData );
  1470.  
  1471. switch( i )
  1472. {
  1473. case VALUE_HP:
  1474. aData[ GangHP ] = str_to_num( szValue );
  1475.  
  1476. case VALUE_STEALING:
  1477. aData[ GangStealing ] = str_to_num( szValue );
  1478.  
  1479. case VALUE_GRAVITY:
  1480. aData[ GangGravity ] = str_to_num( szValue );
  1481.  
  1482. case VALUE_STAMINA:
  1483. aData[ GangStamina ] = str_to_num( szValue );
  1484.  
  1485. case VALUE_WEAPONDROP:
  1486. aData[ GangWeaponDrop ] = str_to_num( szValue );
  1487.  
  1488. case VALUE_DAMAGE:
  1489. aData[ GangDamage ] = str_to_num( szValue );
  1490.  
  1491. case VALUE_KILLS:
  1492. aData[ GangKills ] = str_to_num( szValue );
  1493. }
  1494.  
  1495. ArraySetArray( g_aGangs, iCurGang - 1, aData );
  1496. }
  1497. }
  1498.  
  1499. new Array:aSQL;
  1500. sqlv_read_all_ex( g_hVault, aSQL );
  1501.  
  1502. new aVaultData[ SQLVaultEntryEx ];
  1503.  
  1504. new iGang;
  1505.  
  1506. for( i = 0; i < ArraySize( aSQL ); i++ )
  1507. {
  1508. ArrayGetArray( aSQL, i, aVaultData );
  1509.  
  1510. if( TrieGetCell( g_tGangNames, aVaultData[ SQLVEx_Key2 ], iGang ) )
  1511. {
  1512. ArrayGetArray( g_aGangs, iGang, aData );
  1513.  
  1514. TrieSetCell( aData[ GangMembers ], aVaultData[ SQLVEx_Key1 ], str_to_num( aVaultData[ SQLVEx_Data ] ) );
  1515.  
  1516. aData[ NumMembers ]++;
  1517.  
  1518. ArraySetArray( g_aGangs, iGang, aData );
  1519. }
  1520. }
  1521.  
  1522. fclose( iFile );
  1523. }
  1524.  
  1525. public SaveGangs()
  1526. {
  1527. new szConfigsDir[ 64 ];
  1528. get_configsdir( szConfigsDir, charsmax( szConfigsDir ) );
  1529.  
  1530. add( szConfigsDir, charsmax( szConfigsDir ), "/gangs.ini" );
  1531.  
  1532. if( file_exists( szConfigsDir ) )
  1533. delete_file( szConfigsDir );
  1534.  
  1535. new iFile = fopen( szConfigsDir, "wt" );
  1536.  
  1537. new aData[ GangInfo ];
  1538.  
  1539. new szBuffer[ 256 ];
  1540.  
  1541. for( new i = 0; i < ArraySize( g_aGangs ); i++ )
  1542. {
  1543. ArrayGetArray( g_aGangs, i, aData );
  1544.  
  1545. formatex( szBuffer, charsmax( szBuffer ), "[%s]^n", aData[ GangName ] );
  1546. fputs( iFile, szBuffer );
  1547.  
  1548. formatex( szBuffer, charsmax( szBuffer ), "Élet=%i^n", aData[ GangHP ] );
  1549. fputs( iFile, szBuffer );
  1550.  
  1551. formatex( szBuffer, charsmax( szBuffer ), "Lopakodás=%i^n", aData[ GangStealing ] );
  1552. fputs( iFile, szBuffer );
  1553.  
  1554. formatex( szBuffer, charsmax( szBuffer ), "Gravitáció=%i^n", aData[ GangGravity ] );
  1555. fputs( iFile, szBuffer );
  1556.  
  1557. formatex( szBuffer, charsmax( szBuffer ), "Állóképesség=%i^n", aData[ GangStamina ] );
  1558. fputs( iFile, szBuffer );
  1559.  
  1560. formatex( szBuffer, charsmax( szBuffer ), "FegyverDobás=%i^n", aData[ GangWeaponDrop ] );
  1561. fputs( iFile, szBuffer );
  1562.  
  1563. formatex( szBuffer, charsmax( szBuffer ), "Sebzés=%i^n", aData[ GangDamage ] );
  1564. fputs( iFile, szBuffer );
  1565.  
  1566. formatex( szBuffer, charsmax( szBuffer ), "Ölés=%i^n^n", aData[ GangKills ] );
  1567. fputs( iFile, szBuffer );
  1568. }
  1569.  
  1570. fclose( iFile );
  1571. }
  1572.  
  1573.  
  1574.  
  1575. set_user_gang( id, iGang, iStatus=STATUS_MEMBER )
  1576. {
  1577. new szAuthID[ 35 ];
  1578. get_user_authid( id, szAuthID, charsmax( szAuthID ) );
  1579.  
  1580. new aData[ GangInfo ];
  1581.  
  1582. if( g_iGang[ id ] > -1 )
  1583. {
  1584. ArrayGetArray( g_aGangs, g_iGang[ id ], aData );
  1585. TrieDeleteKey( aData[ GangMembers ], szAuthID );
  1586. aData[ NumMembers ]--;
  1587. ArraySetArray( g_aGangs, g_iGang[ id ], aData );
  1588.  
  1589. sqlv_remove_ex( g_hVault, szAuthID, aData[ GangName ] );
  1590. }
  1591.  
  1592. if( iGang > -1 )
  1593. {
  1594. ArrayGetArray( g_aGangs, iGang, aData );
  1595. TrieSetCell( aData[ GangMembers ], szAuthID, iStatus );
  1596. aData[ NumMembers ]++;
  1597. ArraySetArray( g_aGangs, iGang, aData );
  1598.  
  1599. sqlv_set_num_ex( g_hVault, szAuthID, aData[ GangName ], iStatus );
  1600. }
  1601.  
  1602. g_iGang[ id ] = iGang;
  1603.  
  1604. return 1;
  1605. }
  1606.  
  1607. get_user_gang( id )
  1608. {
  1609. new szAuthID[ 35 ];
  1610. get_user_authid( id, szAuthID, charsmax( szAuthID ) );
  1611.  
  1612. new aData[ GangInfo ];
  1613.  
  1614. for( new i = 0; i < ArraySize( g_aGangs ); i++ )
  1615. {
  1616. ArrayGetArray( g_aGangs, i, aData );
  1617.  
  1618. if( TrieKeyExists( aData[ GangMembers ], szAuthID ) )
  1619. return i;
  1620. }
  1621.  
  1622. return -1;
  1623. }
  1624.  
  1625. getStatus( id, iGang )
  1626. {
  1627. if( !is_user_connected( id ) || iGang == -1 )
  1628. return STATUS_NONE;
  1629.  
  1630. new aData[ GangInfo ];
  1631. ArrayGetArray( g_aGangs, iGang, aData );
  1632.  
  1633. new szAuthID[ 35 ];
  1634. get_user_authid( id, szAuthID, charsmax( szAuthID ) );
  1635.  
  1636. new iStatus;
  1637. TrieGetCell( aData[ GangMembers ], szAuthID, iStatus );
  1638.  
  1639. return iStatus;
  1640. }
  1641.  
  1642. stock print_color(const id, const input[], any:...)
  1643. {
  1644. new count = 1, players[32]
  1645. static msg[191]
  1646. vformat(msg, 190, input, 3)
  1647.  
  1648. replace_all(msg, 190, "!g", "^4")
  1649. replace_all(msg, 190, "!y", "^1")
  1650. replace_all(msg, 190, "!t", "^3")
  1651. replace_all(msg, 190, "á", "á")
  1652. replace_all(msg, 190, "é", "Ă©")
  1653. replace_all(msg, 190, "í", "Ă­")
  1654. replace_all(msg, 190, "ó", "Ăł")
  1655. replace_all(msg, 190, "ö", "ö")
  1656. replace_all(msg, 190, "ő", "Ĺ‘")
  1657. replace_all(msg, 190, "ú", "Ăş")
  1658. replace_all(msg, 190, "ü", "ĂĽ")
  1659. replace_all(msg, 190, "ű", "ű")
  1660. replace_all(msg, 190, "Á", "Á")
  1661. replace_all(msg, 190, "É", "É")
  1662. replace_all(msg, 190, "Í", "ĂŤ")
  1663. replace_all(msg, 190, "Ó", "Ă“")
  1664. replace_all(msg, 190, "Ö", "Ă–")
  1665. replace_all(msg, 190, "Ő", "Ő")
  1666. replace_all(msg, 190, "Ú", "Ăš")
  1667. replace_all(msg, 190, "Ü", "Ăś")
  1668. replace_all(msg, 190, "Ű", "Ĺ°")
  1669.  
  1670. if (id) players[0] = id; else get_players(players, count, "ch")
  1671. {
  1672. for (new i = 0; i < count; i++)
  1673. {
  1674. if (is_user_connected(players[i]))
  1675. {
  1676. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  1677. write_byte(players[i])
  1678. write_string(msg)
  1679. message_end()
  1680. }
  1681. }
  1682. }
  1683. return PLUGIN_HANDLED
  1684. }


Előre is köszi.

_________________
****


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  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 78 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