Advertisement
Guest User

Rejack Shop Cs 1.6

a guest
May 27th, 2016
616
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 46.86 KB | None | 0 0
  1. /* Plugins Details:
  2.  
  3. * Description:
  4. This is a shop plugin for JailBreak plugins.
  5. This plugin includes Knives Shop and Bank Menu.
  6. This plugin was published on www.Fxp.co.il - http://www.fxp.co.il/showthread.php?t=12969869 by _Rejack.
  7.  
  8. * Client Commands (Chat):
  9. * Say /Shop - Open shop menu
  10. * Say /Knife - Open knives shop
  11. * Say /Bank - Open bank menu
  12. * Say /NextCash - Every 30 Mins (Cvar) you get 2500 Cash (Cvar)
  13. * Say /GetCash - Every round you get 150 Cash (Cvar)
  14. * Say /Cash <Name> - Check how much cash a player have
  15. * Say /Gamble <Amount> - Gamble on amount of cash (/gamble allin or /gamble all - to gamble on all of your cash)
  16. * Say /Transfer <Name> <Amount> - Transfer an amount of cash to a player
  17. * Say /Deposit <Amount> - Depoist an amount of cash into the bank
  18. * Say /Withdraw <Amount< - Withdraw an amoount of cash from the bank
  19.  
  20. * Admin Commands (Console):
  21. * amx_set_knife <nick, #userid, authid> <knife level>
  22. - Set a player knife level (Flag: L - ADMIN_RCON needed)
  23. * amx_set_bank <nick, #userid, authid> <bank cash>
  24. - Set a player cash in the bank (Flag: L - ADMIN_RCON needed)
  25. * amx_add_cash <nick, #userid, authid> <cash>
  26. - Give a player a certain amount of cash (Flag: L - ADMIN_RCON needed)
  27. * amx_remove_cash <nick, #userid, authid> <cash>
  28. - Remove a certain amount of cash from a player (Flag: L - ADMIN_RCON needed)
  29.  
  30. * Cvars:
  31. * Cvars are in the .cfg file (JailBreakShop.cfg)
  32.  
  33. * Natives:
  34. * get_user_cash( client )
  35. - get the amount of cash a player have
  36. * set_user_cash( client, amount )
  37. - set the amount of cash for a player
  38. * get_user_bank( client )
  39. - get the amount of cash a player have in the bank
  40. * set_user_bank( client, amount )
  41. - set the amount of cash a player have in the bank
  42. * get_user_knife( client )
  43. - get the knife level of the player current knife
  44. - if a player bought the 3rd knife but using the 2nd knife this will get the 2nd knife
  45. * set_user_knife( client, level )
  46. - set a player knife level
  47. * get_knife_name( client )
  48. - get the current knife name a player have.
  49. * get_user_maxknife( client )
  50. - get the knife level of the player top knife
  51. - if a player bought the 3rd knife but using the 2nd knife this will get the 3rd knife
  52.  
  53. * Credits:
  54. * Rejack : For creating the plugin.
  55. * wiyH : For designing the new v_knife0.mdl.
  56.  
  57. * Support:
  58. Need help in something ?
  59. - Fxp: http://www.fxp.co.il/member.php?u=659448
  60. - Skype: yan1255
  61.  
  62. * Change Log:
  63. * v1.0: was never published.
  64. * v1.1: was never published.
  65. * v1.2:
  66. * first published the plugin as BETA
  67. * v1.3:
  68. * Completely rebuilt the plugin
  69. * v1.3.1:
  70. * Fixed Bank
  71. * Fixed NextCash
  72. * v1.3.2:
  73. * Fixed Powers Shop Menu
  74. * Fixed Misc Shop Menu to show the note by cvar
  75. * v1.3.3:
  76. * Fixed transfer.
  77. * Fixed Get Cash
  78. * Fixed box.
  79. * Made that only T's get HP and AP from knives.
  80. * Fixed powers menu (showed something unneeded).
  81. * Save bug.
  82. * Set Knife Bug
  83. * v1.3.4:
  84. * Fixed damage bug
  85. * Changed the files names.
  86. * Changed the v_bknuckle model (credit to Stav)
  87. * Changed team error from Counter-Terrorist to Terrorists.
  88. */
  89.  
  90.  
  91.  
  92.  
  93. /* Includes */
  94.  
  95. #include < amxmodx >
  96. #include < amxmisc >
  97. #include < cstrike >
  98. #include < fakemeta_util >
  99. #include < hamsandwich >
  100. #include < engine >
  101. #include < fvault >
  102.  
  103. /* Defines */
  104.  
  105. #define KNIFE_DIR "models/JailBreak/Knives/"
  106. #define V_KNIFEMODEL "v_knife"
  107. #define MAX_KNIFE 30
  108.  
  109. #pragma semicolon 1
  110.  
  111. /* Enums */
  112.  
  113. enum _:enData
  114. {
  115. Cash,
  116. Bank,
  117. Connection,
  118. mKnife,
  119. cKnife
  120. };
  121.  
  122. enum _:en_pCvars
  123. {
  124. cvarToggle,
  125. cvarToggleBank,
  126. cvarToggleKnife,
  127. cvarToggleGetCash,
  128. cvarToggleNextCash,
  129. cvarToggleSwitchTeams,
  130. cvarFirstCash,
  131. cvarGambleMin,
  132. cvarGambleChance,
  133. cvarTransferMin,
  134. cvarTransferMax,
  135. cvarTransferMaxAmount,
  136. cvarNextTime,
  137. cvarNextAmount,
  138. cvarGetAmount,
  139. cvarTax,
  140. cvarKillCash,
  141. cvarHeadshot,
  142. cvarHeg,
  143. cvarFlash,
  144. cvarSmoke,
  145. cvarHealth,
  146. cvarDisHealth,
  147. cvarArmor,
  148. cvarDisArmor,
  149. cvarGodmode,
  150. cvarSpeed,
  151. cvarGravity,
  152. cvarStealth,
  153. cvarTimeGodmode,
  154. cvarTimeSpeed,
  155. cvarTimeGravity,
  156. cvarTimeStealth,
  157. cvarSwitch,
  158. cvarFreeday,
  159. cvarPrefix,
  160. cvarSystem
  161. };
  162.  
  163. enum _:enKnivesData
  164. {
  165. kName[ 32 ],
  166. kCost[ 10 ],
  167. kHealth[ 5 ],
  168. kArmor[ 5 ],
  169. kDamage[ 3 ]
  170. };
  171.  
  172. enum _:enCvarsData
  173. {
  174. cvarData,
  175. cvarString[ 32 ],
  176. cvarName[ 64 ]
  177. };
  178.  
  179. enum _:enShopData
  180. {
  181. iName[ 32 ],
  182. iCost,
  183. iClass[ 64 ],
  184. iTime
  185. };
  186.  
  187. /* Arrays */
  188.  
  189. new szCvars[ ][ enCvarsData ] =
  190. {
  191. { cvarToggle, "1", "jbshop_toggle" },
  192. { cvarToggleBank, "1", "jbshop_toggle_bank" },
  193. { cvarToggleKnife, "1", "jbshop_enable_knife" },
  194. { cvarToggleGetCash, "0", "jbshop_enable_getcash" },
  195. { cvarToggleNextCash, "1", "jbshop_enable_nextcash" },
  196. { cvarToggleSwitchTeams, "0", "jbshop_switchteams" },
  197. { cvarFirstCash, "0", "jbshop_first_time" },
  198. { cvarGambleMin, "300", "jbshop_gamble_min" },
  199. { cvarGambleChance, "50", "jbshop_gamble_chance" },
  200. { cvarTransferMin, "300", "jbshop_transfer_min" },
  201. { cvarTransferMax, "50000", "jbshop_transfer_max" },
  202. { cvarTransferMaxAmount, "50000", "jbshop_transfer_max_amount" },
  203. { cvarNextTime, "5", "jbshop_nextcash_time" },
  204. { cvarNextAmount, "2500", "jbshop_nextcash_amount" },
  205. { cvarGetAmount, "0", "jbshop_getcash_amount" },
  206. { cvarTax, "10", "jbshop_tax" },
  207. { cvarKillCash, "250", "jbshop_cash_kill" },
  208. { cvarHeadshot, "500", "jbshop_cash_headshot" },
  209. { cvarHeg, "6000", "jbshop_cost_hegrenade" },
  210. { cvarFlash, "3500", "jbshop_cost_flash" },
  211. { cvarSmoke, "6500", "jbshop_cost_smoke" },
  212. { cvarHealth, "5000", "jbshop_cost_health" },
  213. { cvarDisHealth, "250", "jbshop_discount_health" },
  214. { cvarArmor, "750", "jbshop_cost_armor" },
  215. { cvarDisArmor, "150", "jbshop_discount_armor" },
  216. { cvarGodmode, "8000", "jbshop_cost_godmode" },
  217. { cvarSpeed, "5000", "jbshop_cost_speed" },
  218. { cvarGravity, "5000", "jbshop_cost_gravity" },
  219. { cvarStealth, "7000", "jbshop_cost_stealth" },
  220. { cvarTimeGodmode, "10", "jbshop_time_godmode" },
  221. { cvarTimeSpeed, "15", "jbshop_time_speed" },
  222. { cvarTimeGravity, "15", "jbshop_time_gravity" },
  223. { cvarTimeStealth, "10", "jbshop_time_stealth" },
  224. { cvarSwitch, "25000", "jbshop_cost_switchteams" },
  225. { cvarFreeday, "8000", "jbshop_cost_freeday" },
  226. { cvarPrefix, "SoB", "jbshop_prefix" },
  227. { cvarSystem, "1", "jbshop_save_system" }
  228. };
  229.  
  230. new szKnives[ MAX_KNIFE ][ enKnivesData ] =
  231. {
  232. { "SoB Knife", "0", "0", "0", "0" },
  233. { "Holy Knife", "15000", "2", "6", "3" },
  234. { "Boxer Knife", "50000", "3", "8", "5" },
  235. { "Ninja Knife", "60000", "4", "9", "8" },
  236. { "Dark Knife", "100000", "5", "10", "10" },
  237. { "Gold Daggers", "200000", "6", "12", "11" },
  238. { "Gold Knife", "250000", "7", "15", "12" },
  239. { "GodModel Knife", "350000", "8", "19", "13" },
  240. { "Banana Knife", "400000", "9", "21", "15" },
  241. { "Katana Sword", "600000", "11", "24", "18" },
  242. { "Poly Knife", "900000", "12", "26", "20" },
  243. { "Army Knife", "1000000", "13", "28", "21" },
  244. { "Butterfly Knife", "2200000", "14", "31", "22" },
  245. { "Basliong", "3000000", "15", "40", "23" },
  246. { "Yellow Knife", "4000000", "17", "41", "25" },
  247. { "Master Knife", "4500000", "18", "42", "27" },
  248. { "Kingdom Knife", "5000000", "20", "44", "29" },
  249. { "Fuck Knife", "7000000", "21", "48", "30" },
  250. { "RainBow Knife", "7500000", "23", "52", "31" },
  251. { "GRASS Knife", "9000000", "24", "53", "32" },
  252. { "Joy Knife", "1000000000", "25", "56", "33" },
  253. { "BatMan Knife", "1200000000", "26", "60", "35" },
  254. { "Krembo Knife", "1300000000", "28", "69", "36" },
  255. { "Elite Knife", "1500000000", "30", "71", "37" },
  256. { "Anog Knife", "1600000000", "31", "72", "38" },
  257. { "Assassin's Dagger", "1800000000", "32", "73", "40" },
  258. { "Picture Knife", "1999900000", "35", "74", "43" },
  259. { "OfyyrHaHatih Knife", "2000000000", "37", "75", "45" },
  260. { "Assassin's Dagger", "2100000000", "40", "80", "46" },
  261. { "Zooloo Knife", "2200000000", "41", "82", "49" }
  262. };
  263.  
  264. new szGrenades[ ][ enShopData ] =
  265. {
  266. { "Explosive", cvarHeg, "weapon_hegrenade" },
  267. { "Flashbang", cvarFlash, "weapon_flashbang" },
  268. { "SmokeGrenade", cvarSmoke, "weapon_smokegrenade" }
  269. };
  270.  
  271. new szPowers[ ][ enShopData ] =
  272. {
  273. { "Godmode", cvarGodmode, "taskRemoveGodmode", cvarTimeGodmode },
  274. { "Speed", cvarSpeed, "taskRemoveSpeed", cvarTimeSpeed },
  275. { "Gravity", cvarGravity, "taskRemoveGravity", cvarTimeGravity },
  276. { "Stealth", cvarStealth, "taskRemoveStealth", cvarTimeStealth }
  277. };
  278.  
  279. new szMisc[ ][ enShopData ] =
  280. {
  281. { "Switch Teams", cvarSwitch },
  282. { "Freeday", cvarFreeday }
  283. };
  284.  
  285. new p_Knife[ ] = "p_knives.mdl";
  286.  
  287. new szItem[ 128 ];
  288.  
  289. new szVault[ ] = "JBShopVault";
  290.  
  291. /* Integers */
  292.  
  293. new iData[ 33 ][ enData ], iKnifeCallback[ 33 ];
  294.  
  295. /* Variables */
  296.  
  297. new pCvar[ en_pCvars ], kCvarsCost[ MAX_KNIFE ], kCvarsDamage[ MAX_KNIFE ], kCvarsHealth[ MAX_KNIFE ], kCvarsArmor[ MAX_KNIFE ], szKnivesModels[ MAX_KNIFE ][ 128 ];
  298.  
  299. /* Booleans */
  300.  
  301. new bool: bFreeday[ 33 ], bool: bSwitch[ 33 ], bool: bGodmode[ 33 ], bool: bSpeed[ 33 ], bool: bGravity[ 33 ], bool: bStealth[ 33 ],
  302. bool: bActiveGet[ 33 ];
  303.  
  304. /* Float */
  305.  
  306. new Float:fNextTime[ 33 ];
  307.  
  308.  
  309. public plugin_init()
  310. {
  311. register_plugin( "JailBreak Shop", "1.3.4", "Rejack" );
  312.  
  313. /* Client Commands */
  314. register_clcmd( "say", "CmdSay" );
  315.  
  316. /* Console Commands */
  317. register_concmd("set_knife", "CmdSetKnife", ADMIN_RCON, "<nick, #userid, authid> <knife level>");
  318. register_concmd("set_bank", "CmdSetBank", ADMIN_RCON, "<nick, #userid, authid> <bank cash>");
  319. register_concmd("add_cash", "CmdAddCash", ADMIN_RCON, "<nick, #userid, authid> <cash>");
  320. register_concmd("remove_cash", "CmdRemoveCash", ADMIN_RCON, "<nick, #userid, authid> <cash>");
  321.  
  322. /* Events */
  323. register_event( "CurWeapon", "evCurWeapon", "be", "1=1" );
  324. register_event( "DeathMsg", "evDeathMsg", "a" );
  325.  
  326. /* Log Events */
  327. register_logevent( "evRoundStart", 2, "1=Round_Start" );
  328.  
  329. /* Forwards */
  330. RegisterHam( Ham_Spawn, "player", "FwdSpawn_Post", 1 );
  331. RegisterHam( Ham_TakeDamage, "player", "FwdTakeDamage_Pre", 0 );
  332.  
  333. /* Cvars */
  334. for ( new i; i < sizeof szCvars; i++ )
  335. pCvar[ szCvars[ i ][ cvarData ] ] = register_cvar( szCvars[ i ][ cvarName ], szCvars[ i ][ cvarString ] );
  336.  
  337. for ( new i; i < sizeof szKnives; i++ )
  338. {
  339. formatex( szItem, charsmax( szItem ), "jbshop_knife%i_cost", i );
  340.  
  341. kCvarsCost[ i ] = register_cvar( szItem, szKnives[ i ][ kCost ] );
  342.  
  343. formatex( szItem, charsmax( szItem ), "jbshop_knife%i_health", i );
  344.  
  345. kCvarsHealth[ i ] = register_cvar( szItem, szKnives[ i ][ kHealth ] );
  346.  
  347. formatex( szItem, charsmax( szItem ), "jbshop_knife%i_armor", i );
  348.  
  349. kCvarsArmor[ i ] = register_cvar( szItem, szKnives[ i ][ kArmor ] );
  350.  
  351. formatex( szItem, charsmax( szItem ), "jbshop_knife%i_damage", i );
  352.  
  353. kCvarsDamage[ i ] = register_cvar( szItem, szKnives[ i ][ kDamage ] );
  354. }
  355. }
  356.  
  357. public plugin_precache()
  358. {
  359. for ( new i; i < MAX_KNIFE; i++ )
  360. {
  361. formatex( szKnivesModels[ i ], 127, "%s%s%i.mdl", KNIFE_DIR, V_KNIFEMODEL, i );
  362.  
  363. precache_model( szKnivesModels[ i ] );
  364. }
  365.  
  366. new szModel[ 128 ];
  367.  
  368. formatex( szModel, charsmax( szModel ), "%s%s", KNIFE_DIR, p_Knife );
  369.  
  370. precache_model( szModel );
  371. }
  372.  
  373. public plugin_cfg()
  374. {
  375. new szFileDir[ 32 ], szFile[ 128 ];
  376.  
  377. get_configsdir( szFileDir, charsmax( szFileDir ) );
  378.  
  379. formatex( szFile, charsmax( szFile ), "%s/JailBreakShop.cfg", szFileDir );
  380.  
  381. if ( !file_exists( szFile ) )
  382. {
  383. server_print( "Error: %s was not found!", szFile );
  384.  
  385. return 0;
  386. }
  387.  
  388. server_cmd( "exec %s", szFile );
  389.  
  390. return 0;
  391. }
  392.  
  393. public plugin_natives()
  394. {
  395. register_library( "JailBreakShop" );
  396.  
  397. register_native( "get_user_cash", "_get_cash" );
  398. register_native( "set_user_cash", "_set_cash" );
  399. register_native( "get_user_bank", "_get_bank" );
  400. register_native( "set_user_bank", "_set_bank" );
  401. register_native( "get_user_knife", "_get_knife" );
  402. register_native( "set_user_knife", "_set_knife" );
  403. register_native( "get_knife_name", "_get_knife_name" );
  404. register_native( "get_user_maxknife", "_get_maxknife" );
  405. }
  406.  
  407.  
  408. /* Natives */
  409.  
  410. public _get_cash( plugin, params )
  411. {
  412. new client = get_param( 1 );
  413.  
  414. return iData[ client ][ Cash ];
  415. }
  416.  
  417. public _set_cash( plugin, params )
  418. {
  419. new client = get_param( 1 );
  420.  
  421. new amount = max( 0, get_param( 2 ) );
  422.  
  423. iData[ client ][ Cash ] = amount;
  424.  
  425. if ( iData[ client ][ Bank ] <0 )
  426. iData[ client ][ Bank ] = 0;
  427.  
  428. CmdSave( client );
  429.  
  430. return iData[ client ][ Cash ];
  431. }
  432.  
  433. public _get_bank( plugin, params )
  434. {
  435. new client = get_param( 1 );
  436.  
  437. return iData[ client ][ Bank ];
  438. }
  439.  
  440. public _set_bank( plugin, params )
  441. {
  442. new client = get_param( 1 );
  443.  
  444. new amount = max( 0, get_param( 2 ) );
  445.  
  446. iData[ client ][ Bank ] = amount;
  447.  
  448. if ( iData[ client ][ Bank ] <0 )
  449. iData[ client ][ Bank ] = 0;
  450.  
  451. CmdSave( client );
  452.  
  453. return iData[ client ][ Bank ];
  454. }
  455.  
  456. public _get_knife( plugin, params )
  457. {
  458. new client = get_param( 1 );
  459.  
  460. return iData[ client ][ cKnife ];
  461. }
  462.  
  463. public _set_knife( plugin, params )
  464. {
  465. new client = get_param( 1 );
  466.  
  467. new amount = max( 0, get_param( 2 ) );
  468.  
  469. iData[ client ][ mKnife ] = amount;
  470.  
  471. if ( iData[ client ][ mKnife ] < 0 )
  472. iData[ client ][ mKnife ] = 0;
  473.  
  474. if ( iData[ client ][ mKnife ] > sizeof szKnives )
  475. iData[ client ][ mKnife ] = 0;
  476.  
  477. iData[ client ][ cKnife ] = iData[ client ][ mKnife ];
  478.  
  479. CmdSave( client );
  480.  
  481. return iData[ client ][ Bank ];
  482. }
  483.  
  484. public _get_knife_name( plugin, params )
  485. {
  486. new client = get_param( 1 );
  487.  
  488. return szKnives[ iData[ client ][ cKnife ] ];
  489. }
  490.  
  491. public _get_maxknife( plugin, params )
  492. {
  493. new client = get_param( 1 );
  494.  
  495. return iData[ client ][ mKnife ];
  496. }
  497.  
  498. /* Shop */
  499.  
  500. public CmdShop( client )
  501. {
  502. if ( Cvar() == 0 )
  503. return 1;
  504.  
  505. if ( cs_get_user_team( client ) != CS_TEAM_T )
  506. return ColorPrint( client, "You need to be a^4 Terrorist^1." );
  507.  
  508. formatex( szItem, charsmax( szItem ), "\r[%s]\w JailBreak Shop^nYou have\r %i\w Cash", Prefix(), iData[ client ][ Cash ] );
  509.  
  510. new Menu = menu_create( szItem, "SubShop" );
  511.  
  512. menu_additem( Menu, "\rGrenades\w Shop" );
  513. menu_additem( Menu, "\rHeatlh\w Shop" );
  514. menu_additem( Menu, "\rArmor\w Shop" );
  515. menu_additem( Menu, "\rPlayers Menu^n" );
  516.  
  517. if ( Cvar( cvarToggleKnife ) != 0 )
  518. menu_additem( Menu, "\rKnife\w Menu" );
  519.  
  520. menu_display( client, Menu );
  521.  
  522. return 1;
  523. }
  524.  
  525. public SubShop( client, Menu, Item )
  526. {
  527. if ( Cvar() == 0 )
  528. return 1;
  529.  
  530. if ( cs_get_user_team( client ) != CS_TEAM_T )
  531. return ColorPrint( client, "You need to be a^4 Terrorist^1." );
  532.  
  533. if ( Item == MENU_EXIT )
  534. {
  535. menu_destroy( Menu );
  536.  
  537. return 1;
  538. }
  539.  
  540. formatex( szItem, charsmax( szItem ), "\r[%s]\w JailBreak Shop^nYou have\r %i\w Cash", Prefix(), iData[ client ][ Cash ] );
  541.  
  542. new iMenu;
  543.  
  544. switch ( Item )
  545. {
  546. case 0:
  547. {
  548. iMenu = menu_create( szItem, "SubGrenades" );
  549.  
  550. for ( new i; i < sizeof szGrenades; i++ )
  551. {
  552. formatex( szItem, charsmax( szItem ), "%s - \d[\r %i Cash \d]", szGrenades[ i ][ iName ], Cvar( szGrenades[ i ][ iCost ] ) );
  553.  
  554. menu_additem( iMenu, szItem );
  555. }
  556. }
  557.  
  558. case 1:
  559. {
  560. iMenu = menu_create( szItem, "SubHealth" );
  561.  
  562. for ( new i; i < 5; i++ )
  563. {
  564. formatex( szItem, charsmax( szItem ), "%i HP - \d[\r %i Cash \d]", (i+1) * 10, (i+1) * Cvar( cvarHealth ) - (i * Cvar( cvarDisHealth ) ) );
  565.  
  566. menu_additem( iMenu, szItem );
  567. }
  568. }
  569.  
  570. case 2:
  571. {
  572. iMenu = menu_create( szItem, "SubArmor" );
  573.  
  574. for ( new i; i < 5; i++ )
  575. {
  576. formatex( szItem, charsmax( szItem ), "%i AP - \d[\r %i Cash \d]", (i+1) * 10, (i+1) * Cvar( cvarArmor ) - (i * Cvar( cvarDisArmor ) ) );
  577.  
  578. menu_additem( iMenu, szItem );
  579. }
  580. }
  581.  
  582. case 5: return CmdPlayers( client );
  583.  
  584. case 6: return CmdKnife( client );
  585. }
  586.  
  587. menu_setprop( Menu, MPROP_EXITNAME, "Back" );
  588.  
  589. menu_display( client, iMenu );
  590.  
  591. menu_destroy( Menu );
  592.  
  593. return 1;
  594. }
  595.  
  596. public SubGrenades( client, Menu, Item )
  597. {
  598. if ( Cvar() == 0 )
  599. return 1;
  600.  
  601. if ( cs_get_user_team( client ) != CS_TEAM_T )
  602. return ColorPrint( client, "You need to be a^4 Terrorist^1." );
  603.  
  604. if ( !is_user_alive( client ) )
  605. return ColorPrint( client, "You need to be^4 Alive^1." );
  606.  
  607. if ( Item == MENU_EXIT )
  608. {
  609. menu_destroy( Menu );
  610.  
  611. CmdShop( client );
  612.  
  613. return 1;
  614. }
  615.  
  616. if ( iData[ client ][ Cash ] < Cvar( szGrenades[ Item ][ iCost ] ) )
  617. return ColorPrint( client, "You don't have enough cash." );
  618.  
  619. fm_give_item( client, szGrenades[ Item ][ iClass ] );
  620.  
  621. ColorPrint( client, "You purchased^3 %s^1.", szGrenades[ Item ][ iName ] );
  622.  
  623. iData[ client ][ Cash ] -= Cvar( szGrenades[ Item ][ iCost ] );
  624.  
  625. menu_destroy( Menu );
  626.  
  627. CmdShop( client );
  628.  
  629. return 1;
  630. }
  631.  
  632. public SubHealth( client, Menu, Item )
  633. {
  634. if ( Cvar() == 0 )
  635. return 1;
  636.  
  637. if ( cs_get_user_team( client ) != CS_TEAM_T )
  638. return ColorPrint( client, "You need to be a^4 Terrorist^1." );
  639.  
  640. if ( !is_user_alive( client ) )
  641. return ColorPrint( client, "You need to be^4 Alive^1." );
  642.  
  643. if ( Item == MENU_EXIT )
  644. {
  645. menu_destroy( Menu );
  646.  
  647. CmdShop( client );
  648.  
  649. return 1;
  650. }
  651.  
  652. new Cost = (Item+1) * Cvar( cvarHealth ) - (Item * Cvar( cvarDisHealth ) );
  653.  
  654. new Amount = (Item+1) * 10;
  655.  
  656. if ( iData[ client ][ Cash ] < Cost )
  657. return ColorPrint( client, "You don't have enough cash." );
  658.  
  659. fm_set_user_health( client, get_user_health( client ) + Amount );
  660.  
  661. ColorPrint( client, "You've bought^3 %i Health^1.", Amount );
  662.  
  663. iData[ client ][ Cash ] -= Cost;
  664.  
  665. menu_destroy( Menu );
  666.  
  667. CmdShop( client );
  668.  
  669. return 1;
  670. }
  671.  
  672. public SubArmor( client, Menu, Item )
  673. {
  674. if ( Cvar() == 0 )
  675. return 1;
  676.  
  677. if ( cs_get_user_team( client ) != CS_TEAM_T )
  678. return ColorPrint( client, "You need to be a^4 Terrorist^1." );
  679.  
  680. if ( !is_user_alive( client ) )
  681. return ColorPrint( client, "You need to be^4 Alive^1." );
  682.  
  683. if ( Item == MENU_EXIT )
  684. {
  685. menu_destroy( Menu );
  686.  
  687. CmdShop( client );
  688.  
  689. return 1;
  690. }
  691.  
  692. new Cost = (Item+1) * Cvar( cvarArmor ) - (Item * Cvar( cvarDisArmor ) );
  693.  
  694. new Amount = (Item+1) * 10;
  695.  
  696. if ( iData[ client ][ Cash ] < Cost )
  697. return ColorPrint( client, "You don't have enough cash." );
  698.  
  699. fm_set_user_armor( client, get_user_armor( client ) + Amount );
  700.  
  701. ColorPrint( client, "You've bought^3 %i Health^1.", Amount );
  702.  
  703. iData[ client ][ Cash ] -= Cost;
  704.  
  705. menu_destroy( Menu );
  706.  
  707. CmdShop( client );
  708.  
  709. return 1;
  710. }
  711.  
  712. public SubPowers( client, Menu, Item )
  713. {
  714. if ( Cvar() == 0 )
  715. return 1;
  716.  
  717. if ( cs_get_user_team( client ) != CS_TEAM_T )
  718. return ColorPrint( client, "You need to be a^4 Terrorist^1." );
  719.  
  720. if ( !is_user_alive( client ) )
  721. return ColorPrint( client, "You need to be^4 Alive^1." );
  722.  
  723. if ( Item == MENU_EXIT )
  724. {
  725. menu_destroy( Menu );
  726.  
  727. CmdShop( client );
  728.  
  729. return 1;
  730. }
  731.  
  732. if ( iData[ client ][ Cash ] < Cvar( szPowers[ Item ][ iCost ] ) )
  733. return ColorPrint( client, "You don't have enough cash." );
  734.  
  735. switch ( Item )
  736. {
  737. case 0:
  738. {
  739. if ( bGodmode[ client ] )
  740. return ColorPrint( client, "You're already using this power!" );
  741.  
  742. fm_set_user_godmode( client, 1 );
  743.  
  744. bGodmode[ client ] = true;
  745. }
  746.  
  747. case 1:
  748. {
  749. if ( bSpeed[ client ] )
  750. return ColorPrint( client, "You're already using this power!" );
  751.  
  752. fm_set_user_maxspeed( client, fm_get_user_maxspeed( client ) * 2 );
  753.  
  754. bSpeed[ client ] = true;
  755. }
  756.  
  757. case 2:
  758. {
  759. if ( bGravity[ client ] )
  760. return ColorPrint( client, "You're already using this power!" );
  761.  
  762. fm_set_user_gravity( client, 0.5 );
  763.  
  764. bGravity[ client ] = true;
  765. }
  766.  
  767. case 3:
  768. {
  769. if ( bStealth[ client ] )
  770. return ColorPrint( client, "You're already using this power!" );
  771.  
  772. fm_set_user_rendering( client, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0 );
  773.  
  774. bStealth[ client ] = true;
  775. }
  776. }
  777.  
  778. ColorPrint( client, "You purchased^3 %s^4 %i Seconds^1!", szPowers[ Item ][ iName ], szPowers[ Item ][ iTime ] );
  779.  
  780. set_task( float( Cvar( szPowers[ Item ][ iTime ] ) ), szPowers[ Item ][ iClass ], client );
  781.  
  782. iData[ client ][ Cash ] -= Cvar( szPowers[ Item ][ iCost ] );
  783.  
  784. menu_destroy( Menu );
  785.  
  786. CmdShop( client );
  787.  
  788. return 1;
  789. }
  790.  
  791. public SubMisc( client, Menu, Item )
  792. {
  793. if ( Cvar() == 0 )
  794. return 1;
  795.  
  796. if ( cs_get_user_team( client ) != CS_TEAM_T )
  797. return ColorPrint( client, "You need to be a^4 Terrorist^1." );
  798.  
  799. if ( !is_user_alive( client ) )
  800. return ColorPrint( client, "You need to be^4 Alive^1." );
  801.  
  802. if ( Item == MENU_EXIT )
  803. {
  804. menu_destroy( Menu );
  805.  
  806. CmdShop( client );
  807.  
  808. return 1;
  809. }
  810.  
  811. if ( iData[ client ][ Cash ] < Cvar( szMisc[ Item ][ iCost ] ) )
  812. return ColorPrint( client, "You don't have enough cash." );
  813.  
  814. switch ( Item )
  815. {
  816. case 0:
  817. {
  818. if ( bGodmode[ client ] )
  819. return ColorPrint( client, "You're already using this power!" );
  820.  
  821. fm_set_user_godmode( client, 1 );
  822.  
  823. bGodmode[ client ] = true;
  824.  
  825. if ( bSwitch[ client ] )
  826. return ColorPrint( client, "You already bought this." );
  827.  
  828. if ( Cvar( cvarToggleSwitchTeams ) == 0 )
  829. return ColorPrint( client, "This item is disabled." );
  830.  
  831. if ( Cvar( cvarToggleSwitchTeams ) == 2 && OnlineAdmins() )
  832. return ColorPrint( client, "There's online admins now so you can't purchase this item." );
  833.  
  834. cs_set_user_team( client, CS_TEAM_CT );
  835.  
  836. ExecuteHamB( Ham_CS_RoundRespawn, client );
  837.  
  838. bSwitch[ client ] = true;
  839. }
  840.  
  841. case 1:
  842. {
  843. if ( bFreeday[ client ] )
  844. return ColorPrint( client, "You already bought this." );
  845.  
  846. fm_set_user_rendering( client, kRenderFxGlowShell, 0, 150, 255, kRenderNormal, 16 );
  847.  
  848. bFreeday[ client ] = true;
  849. }
  850. }
  851.  
  852. ColorPrint( client, "You purchased^3 %s^1.", szMisc[ Item ][ iName ] );
  853.  
  854. ColorPrint( 0, "^3%s^1 just purchased^4 %s^1!", szMisc[ Item ][ iName ] );
  855.  
  856. iData[ client ][ Cash ] -= Cvar( szMisc[ Item ][ iCost ] );
  857.  
  858. menu_destroy( Menu );
  859.  
  860. CmdShop( client );
  861.  
  862. return 1;
  863. }
  864.  
  865. /* Remove Powers */
  866.  
  867. public taskRemoveGodmode( client )
  868. {
  869. fm_set_user_godmode( client, 0 );
  870.  
  871. bGodmode[ client ] = false;
  872. }
  873.  
  874. public taskRemoveSpeed( client )
  875. {
  876. fm_set_user_maxspeed( client, 250.0 );
  877.  
  878. bSpeed[ client ] = false;
  879. }
  880.  
  881. public taskRemoveGravity( client )
  882. {
  883. fm_set_user_gravity( client, 1.0 );
  884.  
  885. bGravity[ client ] = false;
  886. }
  887.  
  888. public taskRemoveStealth( client )
  889. {
  890. fm_set_user_rendering( client );
  891.  
  892. bStealth[ client ] = false;
  893. }
  894.  
  895. /* Players Menu */
  896.  
  897. public CmdPlayers( client )
  898. {
  899. if ( Cvar() == 0 )
  900. return 1;
  901.  
  902. formatex( szItem, charsmax( szItem ), "\r[%s]\w Players Menu", Prefix() );
  903.  
  904. new Menu = menu_create( szItem, "SubPlayers" );
  905.  
  906. new Players[ 32 ], iNum, iPlayer, szTempid[ 10 ];
  907.  
  908. get_players( Players, iNum );
  909.  
  910. for ( new i; i < iNum; i++ )
  911. {
  912. iPlayer = Players[ i ];
  913.  
  914. num_to_str( iPlayer, szTempid, charsmax( szTempid ) );
  915.  
  916. formatex( szItem, charsmax( szItem ), "\y%s:\r %i Cash\d and\r %i Bank Cash", szName( iPlayer ), iData[ iPlayer ][ Cash ], iData[ iPlayer ][ Bank ] );
  917.  
  918. menu_additem( Menu, szItem, szTempid );
  919. }
  920.  
  921. menu_display( client, Menu );
  922.  
  923. return 1;
  924. }
  925.  
  926. public SubPlayers( client, Menu, Item )
  927. {
  928. if ( Cvar() == 0 )
  929. return 1;
  930.  
  931. if ( Item == MENU_EXIT )
  932. {
  933. menu_destroy( Menu );
  934.  
  935. return 1;
  936. }
  937.  
  938. new Trash, mData[ 10 ];
  939.  
  940. menu_item_getinfo( Menu, Item, Trash, mData, charsmax( mData ), _,_, Trash );
  941.  
  942. new iPlayer = str_to_num( mData );
  943.  
  944. ColorPrint( client, "^3%s^1 have^4 %i Cash^1 and^3 %i Bank Cash^1.", szName( iPlayer ), iData[ iPlayer ][ Cash ], iData[ iPlayer ][ Bank ] );
  945.  
  946. CmdPlayers( client );
  947.  
  948. return 1;
  949. }
  950.  
  951. /* Knife Shop */
  952.  
  953. public CmdKnife( client )
  954. {
  955. if ( Cvar() == 0 )
  956. return 1;
  957.  
  958. if ( Cvar( cvarToggleKnife ) == 0 )
  959. return ColorPrint( client, "^3Knife Shop^1 is disabled." );
  960.  
  961. formatex( szItem, charsmax( szItem ), "\r[%s]\w JailBreak Knives Shop^nYou have\r %i\w Cash", Prefix(), iData[ client ][ Cash ] );
  962.  
  963. new Menu = menu_create( szItem, "SubKnife" );
  964.  
  965. new szCost[ 128 ];
  966.  
  967. for ( new i; i < sizeof szKnives; i++ )
  968. {
  969. formatex( szCost, charsmax( szCost ), "- \d[\r %i Cash \d]", kCvar( kCvarsCost[ i ] ) );
  970.  
  971. formatex( szItem, charsmax( szItem ), "%s %s", szKnives[ i ], (iData[ client ][ mKnife ] == (i-1)) ? szCost : (iData[ client ][ mKnife ] >= i) ? (iData[ client ][ cKnife ] == i) ? "- \d[\y Equiped \d]" : "- \d[\r Acquired \d]" : "" );
  972.  
  973. menu_additem( Menu, szItem, "", _, menu_makecallback( "MenuCallback_CmdKnife" ) );
  974. }
  975.  
  976. menu_display( client, Menu );
  977.  
  978. return 1;
  979. }
  980.  
  981. public SubKnife( client, Menu, Item )
  982. {
  983. if ( Cvar() == 0 )
  984. return 1;
  985.  
  986. if ( Cvar( cvarToggleKnife ) == 0 )
  987. return ColorPrint( client, "^3Knife Shop^1 is disabled." );
  988.  
  989. if ( Item == MENU_EXIT )
  990. {
  991. menu_destroy( Menu );
  992.  
  993. CmdShop( client );
  994.  
  995. return 1;
  996. }
  997.  
  998. iKnifeCallback[ client ] = Item;
  999.  
  1000. formatex( szItem, charsmax( szItem ), "\r[%s]\w Knives Shop^nYou have\r %i\w Cash^n^n\d%s Details :", Prefix(), iData[ client ][ Cash ], szKnives[ Item ] );
  1001.  
  1002. new iMenu = menu_create( szItem, "CmdSubKnife" );
  1003.  
  1004. new szCost[ 128 ];
  1005.  
  1006. formatex( szItem, charsmax( szItem ), "HP Bonus - \d[\r %i HP \d]", kCvar( kCvarsHealth[ Item ] ) );
  1007. menu_additem( iMenu, szItem, "", _, menu_makecallback( "MenuCallback_SubKnife_Disabled" ) );
  1008.  
  1009. formatex( szItem, charsmax( szItem ), "AP Bonus - \d[\r %i AP \d]", kCvar( kCvarsArmor[ Item ] ) );
  1010. menu_additem( iMenu, szItem, "", _, menu_makecallback( "MenuCallback_SubKnife_Disabled" ) );
  1011.  
  1012. formatex( szItem, charsmax( szItem ), "Damage Bonus - \d[\r %i Damage \d]^n", kCvar( kCvarsDamage[ Item ] ) );
  1013. menu_additem( iMenu, szItem, "", _, menu_makecallback( "MenuCallback_SubKnife_Disabled" ) );
  1014.  
  1015.  
  1016. formatex( szCost, charsmax( szCost ), " - \d[\r %i Cash \d]", kCvar( kCvarsCost[ Item ] ) );
  1017.  
  1018. formatex( szItem, charsmax( szItem ), "Purchase this Knife%s", (iData[ client ][ mKnife ] >= Item) ? "" : szCost );
  1019.  
  1020. menu_additem( iMenu, szItem, "", _, menu_makecallback( "MenuCallback_SubKnife_Cost" ) );
  1021.  
  1022.  
  1023. menu_additem( iMenu, "Use this Knife Model", "", _, menu_makecallback( "MenuCallback_SubKnife_Use" ) );
  1024.  
  1025. menu_display( client, iMenu );
  1026.  
  1027. menu_destroy( Menu );
  1028.  
  1029. return 1;
  1030. }
  1031.  
  1032. public CmdSubKnife( client, Menu, Item )
  1033. {
  1034. if ( Cvar() == 0 )
  1035. return 1;
  1036.  
  1037. if ( Cvar( cvarToggleKnife ) == 0 )
  1038. return ColorPrint( client, "^3Knife Shop^1 is disabled." );
  1039.  
  1040. if ( Item == MENU_EXIT )
  1041. {
  1042. menu_destroy( Menu );
  1043.  
  1044. CmdKnife( client );
  1045.  
  1046. return 1;
  1047. }
  1048.  
  1049. new iKnife = iKnifeCallback[ client ];
  1050.  
  1051. switch ( Item )
  1052. {
  1053. case 3: // Purchased
  1054. {
  1055. if ( iKnife <= iData[ client ][ mKnife ] )
  1056. return ColorPrint( client, "You already own this knife!" );
  1057.  
  1058. if ( iData[ client ][ Cash ] < kCvar( kCvarsCost[ iKnife ] ) )
  1059. return ColorPrint( client, "You don't have enough cash." );
  1060.  
  1061. iData[ client ][ mKnife ] = iKnife;
  1062.  
  1063. iData[ client ][ cKnife ] = iKnife;
  1064.  
  1065. iData[ client ][ Cash ] -= kCvar( kCvarsCost[ iKnife ] );
  1066.  
  1067. CmdSave( client );
  1068.  
  1069. ColorPrint( 0, "^3%s^1 purchased^4 %s^1!", szName( client ), szKnives[ iKnife ] );
  1070.  
  1071. log_amx( "%s (%s | %s | %i Cash ) just purchased %s", szName( client ), szAuth( client ), szAddress( client ), iData[ client ][ Cash ], szKnives[ iKnife ] );
  1072. }
  1073.  
  1074. case 4: // Equiped
  1075. {
  1076. if ( iKnife > iData[ client ][ mKnife ] )
  1077. return ColorPrint( client, "You haven't bought that knife yet." );
  1078.  
  1079. if ( iKnife == iData[ client ][ cKnife ] )
  1080. return ColorPrint( client, "You're already have this knife equiped." );
  1081.  
  1082. iData[ client ][ cKnife ] = iKnife;
  1083.  
  1084. CmdSave( client );
  1085.  
  1086. ColorPrint( client, "You equiped^4 %s ^1!", szKnives[ iKnife ] );
  1087. }
  1088. }
  1089.  
  1090. CmdKnife( client );
  1091.  
  1092. return 1;
  1093. }
  1094. /* Callbacks */
  1095.  
  1096. public MenuCallback_CmdKnife( client, Menu, Item )
  1097. {
  1098. if ( iData[ client ][ mKnife ] >= Item - 1 )
  1099. return ITEM_ENABLED;
  1100.  
  1101. return ITEM_DISABLED;
  1102. }
  1103.  
  1104. public MenuCallback_SubKnife_Disabled()
  1105. return ITEM_DISABLED;
  1106.  
  1107. public MenuCallback_SubKnife_Cost( client, Menu, Item )
  1108. {
  1109. Item = iKnifeCallback[ client ];
  1110.  
  1111. if ( iData[ client ][ Cash ] < kCvar( kCvarsCost[ Item ] ) || iData[ client ][ mKnife ] >= Item )
  1112. return ITEM_DISABLED;
  1113.  
  1114. return ITEM_ENABLED;
  1115. }
  1116.  
  1117. public MenuCallback_SubKnife_Use( client, Menu, Item )
  1118. {
  1119. Item = iKnifeCallback[ client ];
  1120.  
  1121. if ( Item > iData[ client ][ mKnife ] || Item == iData[ client ][ cKnife ] )
  1122. return ITEM_DISABLED;
  1123.  
  1124. return ITEM_ENABLED;
  1125. }
  1126. /* Bank */
  1127.  
  1128. public CmdBank( client )
  1129. {
  1130. if ( Cvar() == 0 )
  1131. return 1;
  1132.  
  1133. if ( Cvar( cvarToggleBank ) == 0 )
  1134. return ColorPrint( client, "^3Bank^1 is disabled." );
  1135.  
  1136. formatex( szItem, charsmax( szItem ), "\r[%s]\w JailBreak Bank^n^n\dYou have\r %i\d Cash^nYou have\r %i\d Cash in the Bank^nYou have\r %i\w Cash in Total",
  1137. Prefix(), iData[ client ][ Cash ], iData[ client ][ Bank ], iData[ client ][ Cash ] + iData[ client ][ Bank ] );
  1138.  
  1139. new Menu = menu_create( szItem, "SubBank" );
  1140.  
  1141. menu_additem( Menu, "Deposit" );
  1142. menu_additem( Menu, "Withdraw" );
  1143.  
  1144. menu_display( client, Menu );
  1145.  
  1146. return 1;
  1147. }
  1148.  
  1149. public SubBank( client, Menu, Item )
  1150. {
  1151. if ( Cvar() == 0 )
  1152. return 1;
  1153.  
  1154. if ( Cvar( cvarToggleBank ) == 0 )
  1155. return ColorPrint( client, "^3Bank^1 is disabled." );
  1156.  
  1157. if ( Item == MENU_EXIT )
  1158. {
  1159. menu_destroy( Menu );
  1160.  
  1161. return 1;
  1162. }
  1163.  
  1164. switch ( Item )
  1165. {
  1166. case 0: client_cmd( client, "say /deposit" );
  1167.  
  1168. case 1: client_cmd( client, "say /withdraw" );
  1169. }
  1170.  
  1171. CmdBank( client );
  1172.  
  1173. return 1;
  1174. }
  1175.  
  1176. /* Client Side */
  1177.  
  1178. public client_putinserver( client )
  1179. {
  1180. fNextTime[ client ] = get_gametime();
  1181.  
  1182. CmdLoad( client );
  1183.  
  1184. bActiveGet[ client ] = true;
  1185.  
  1186. if ( iData[ client ][ Connection ] == 0 )
  1187. {
  1188. iData[ client ][ Connection ] = 1;
  1189.  
  1190. iData[ client ][ Cash ] = Cvar( cvarFirstCash );
  1191. }
  1192. }
  1193.  
  1194. public client_disconnect( client )
  1195. {
  1196. CmdSave( client );
  1197. }
  1198.  
  1199. public CmdSay( client )
  1200. {
  1201. if ( Cvar() == 0 )
  1202. return 0;
  1203.  
  1204. new szMsg[ 192 ], szArgs[ 3 ][ 32 ];
  1205.  
  1206. read_argv( 1, szMsg, charsmax( szMsg ) );
  1207.  
  1208. parse( szMsg, szArgs[ 0 ], 31, szArgs[ 1 ], 31, szArgs[ 2 ], 31 );
  1209.  
  1210.  
  1211. if ( equali( szMsg, "/shop" ) )
  1212. return CmdShop( client );
  1213.  
  1214. if ( equali( szMsg, "/knife" ) )
  1215. return CmdKnife( client );
  1216.  
  1217. if ( equali( szMsg, "/bank" ) )
  1218. return CmdBank( client );
  1219.  
  1220. if ( equali( szMsg, "/nextcash" ) || equali( szMsg, "/nc" ) )
  1221. {
  1222. new Float:fMins = (get_gametime()/60) - (fNextTime[ client ]/60);
  1223.  
  1224. if ( Cvar( cvarToggleNextCash ) == 0 )
  1225. return ColorPrint( client, "^3Next Cash^1 is disabled." );
  1226.  
  1227. if ( fMins <= Cvar( cvarNextTime ) )
  1228. return ColorPrint( client, "You need to wait^3 %.1f Minutes^1!", Cvar( cvarNextTime ) - fMins );
  1229.  
  1230. fNextTime[ client ] = get_gametime();
  1231.  
  1232. iData[ client ][ Cash ] += Cvar( cvarNextAmount );
  1233.  
  1234. CmdSave( client );
  1235.  
  1236. return ColorPrint( client, "You received^3 %i Cash^1,^4 Good Luck^1!", Cvar( cvarNextAmount ) );
  1237. }
  1238.  
  1239. if ( equali( szMsg, "/getcash" ) || equali( szMsg, "/gc" ) )
  1240. {
  1241. if ( Cvar( cvarToggleGetCash ) == 0 )
  1242. return ColorPrint( client, "^3Get Cash^1 is disabled." );
  1243.  
  1244. if ( bActiveGet[ client ] )
  1245. return ColorPrint( client, "You need to wait until the^3 Next Round^1 to^4 Get Cash^1!" );
  1246.  
  1247. iData[ client ][ Cash ] += Cvar( cvarGetAmount );
  1248.  
  1249. CmdSave( client );
  1250.  
  1251. bActiveGet[ client ] = true;
  1252.  
  1253. return ColorPrint( client, "You received^4 %i Cash^1,^3 Good Luck^1.", Cvar( cvarGetAmount ) );
  1254. }
  1255.  
  1256. if ( equali( szArgs[ 0 ], "/cash" ) )
  1257. {
  1258. new iPlayer = cmd_target( client, szArgs[ 1 ], 8 );
  1259.  
  1260. if ( equali( szMsg, "/cash" ) )
  1261. iPlayer = client;
  1262.  
  1263. if ( !iPlayer )
  1264. return ColorPrint( client, "^3%s^1 was not found!", szArgs[ 1 ] );
  1265.  
  1266. return ColorPrint( client, "^3%s^1 have^4 %i Cash^1 &^3 %i Bank Cash^1,^4 %s^1.", szName( iPlayer ), iData[ iPlayer ][ Cash ], iData[ iPlayer ][ Bank ], szKnives[ iData[ iPlayer ][ cKnife ] ] );
  1267. }
  1268.  
  1269. if ( equali( szArgs[ 0 ], "/gamble" ) )
  1270. {
  1271. new Amount = str_to_num( szArgs[ 1 ] );
  1272.  
  1273. if ( equali( szArgs[ 1 ], "allin" ) || equali( szArgs[ 1 ], "all" ) )
  1274. Amount = iData[ client ][ Cash ];
  1275.  
  1276. else if ( equali( szMsg, "/gamble" ) || !is_str_num( szArgs[ 1 ] ) )
  1277. return ColorPrint( client, "Syntax: /^4gamble^1 <^3amount^1>" );
  1278.  
  1279. if ( Amount > iData[ client ][ Cash ] )
  1280. return ColorPrint( client, "You don't have this amount of cash." );
  1281.  
  1282. if ( Amount < Cvar( cvarGambleMin ) )
  1283. return ColorPrint( client, "You need to gamble on minimum of^4 %i Cash^1 at a time.", Cvar( cvarGambleMin ) );
  1284.  
  1285. new g_iChance = random_num( 1, 100 );
  1286.  
  1287. new bool: b_gambleWin = false, iTotal = iData[ client ][ Cash ];
  1288.  
  1289. iData[ client ][ Cash ] -= Amount;
  1290.  
  1291. if ( g_iChance <= Cvar( cvarGambleChance ) )
  1292. {
  1293. b_gambleWin = true;
  1294.  
  1295. iData[ client ][ Cash ] = iTotal + Amount;
  1296. }
  1297.  
  1298. log_amx( "%s ( %s | %s ) gambled on %i Cash and lost. Total cash left: %i Cash", szName( client ), szAuth( client ), szAddress( client ), Amount, iData[ client ][ Cash ] );
  1299.  
  1300. CmdSave( client );
  1301.  
  1302. return ColorPrint( 0, "^3%s^1 gambled on^4 %i Cash^1 and^3 %s^1!", szName( client ), Amount, b_gambleWin ? "Won" : "Lost" );
  1303. }
  1304.  
  1305. if ( equali( szArgs[ 0 ], "/transfer" ) )
  1306. {
  1307. if ( !is_str_num( szArgs[ 2 ] ) || equali( szMsg, "/transfer" ) )
  1308. return ColorPrint( client, "Syntax: /^4transfer^1 <^4amount^1>" );
  1309.  
  1310. new iPlayer = cmd_target( client, szArgs[ 1 ], 8 );
  1311.  
  1312. if ( !iPlayer )
  1313. return ColorPrint( client, "^3%s^1 was not found!", szArgs[ 1 ] );
  1314.  
  1315. if ( iPlayer == client )
  1316. return ColorPrint( client, "You can't transfer cash to yourself." );
  1317.  
  1318. new Amount = str_to_num( szArgs[ 2 ] );
  1319.  
  1320. if ( Amount > iData[ client ][ Cash ] )
  1321. return ColorPrint( client, "You don't have enough cash." );
  1322.  
  1323. if ( Amount < Cvar( cvarTransferMin ) )
  1324. return ColorPrint( client, "You can't transfer less than^4 %i Cash^1.", Cvar( cvarTransferMin ) );
  1325.  
  1326. if ( Amount <= 0 )
  1327. return ColorPrint( client, "You can't transfer less than^4 1 Cash^1." );
  1328.  
  1329. if ( iData[ client ][ Cash ] > Cvar( cvarTransferMaxAmount ) && Cvar( cvarTransferMaxAmount ) != 0 )
  1330. return ColorPrint( client, "You can't transfer if you have more than^4 %i Cash^1!", Cvar( cvarTransferMaxAmount ) );
  1331.  
  1332. if ( Amount > Cvar( cvarTransferMax ) && Cvar( cvarTransferMax ) != 0 )
  1333. return ColorPrint( client, "You can't transfer more than^4 %i Cash^1!", Cvar( cvarTransferMax ) );
  1334.  
  1335. new Amount2 = Amount;
  1336.  
  1337. if ( Cvar( cvarTax ) != 0 )
  1338. Amount2 = Amount - (Amount / 100 * Cvar( cvarTax ));
  1339.  
  1340.  
  1341. iData[ client ][ Cash ] -= Amount;
  1342.  
  1343. iData[ iPlayer ][ Cash ] += Amount2;
  1344.  
  1345. log_amx( "%s ( %s | %s | %i Cash ) transfer %i cash to %s ( %s | %s | %i ). He received %i cash because of the tax rate.",
  1346. szName( client ), szAuth( client ), szAddress( client ), iData[ client ][ Cash ], Amount, szName( iPlayer ), szAuth( iPlayer ), szAddress( iPlayer ), iData[ iPlayer ][ Cash ], Amount2 );
  1347.  
  1348. CmdSave( client );
  1349.  
  1350. return ColorPrint( client, "^3%s^1 transfered^4 %i Cash^1 to^3 %s^1, he received^4 %i Cash ^1(^3%i%% Tax^1)", szName( client ), Amount, szName( iPlayer ), Amount2, Cvar( cvarTax ) );
  1351. }
  1352.  
  1353. if ( equali( szArgs[ 0 ], "/deposit" ) )
  1354. {
  1355. if ( Cvar( cvarToggleBank ) == 0 )
  1356. return ColorPrint( client, "^3Bank^1 is disabled." );
  1357.  
  1358. if ( !is_str_num( szArgs[ 1 ] ) || equali( szMsg, "/deposit" ) )
  1359. return ColorPrint( client, "Syntax: /^4deposit^1 <^4amount^1>" );
  1360.  
  1361. new Amount = str_to_num( szArgs[ 1 ] );
  1362.  
  1363. if ( Amount > iData[ client ][ Cash ] )
  1364. return ColorPrint( client, "You don't have this amount of cash." );
  1365.  
  1366. iData[ client ][ Bank ] += Amount;
  1367.  
  1368. iData[ client ][ Cash ] -= Amount;
  1369.  
  1370. CmdSave( client );
  1371.  
  1372. return ColorPrint( client, "You^3 deposited^4 %i Cash^1 to the^3 bank^1!", Amount );
  1373. }
  1374.  
  1375. if ( equali( szArgs[ 0 ], "/withdraw" ) )
  1376. {
  1377. if ( Cvar( cvarToggleBank ) == 0 )
  1378. return ColorPrint( client, "^3Bank^1 is disabled." );
  1379.  
  1380. if ( !is_str_num( szArgs[ 1 ] ) || equali( szMsg, "/withdraw" ) )
  1381. return ColorPrint( client, "Syntax: /^4withdraw^1 <^4amount^1>" );
  1382.  
  1383. new Amount = str_to_num( szArgs[ 1 ] );
  1384.  
  1385. if ( Amount > iData[ client ][ Bank ] )
  1386. return ColorPrint( client, "You don't have enough cash in the bank." );
  1387.  
  1388. iData[ client ][ Bank ] -= Amount;
  1389.  
  1390. iData[ client ][ Cash ] += Amount;
  1391.  
  1392. CmdSave( client );
  1393.  
  1394. return ColorPrint( client, "You^3 withdrawed^4 %i Cash^1 from the^3 bank^1!", Amount );
  1395. }
  1396.  
  1397. return 0;
  1398. }
  1399.  
  1400. /* Events */
  1401.  
  1402. public evRoundStart()
  1403. {
  1404. if ( Cvar() == 0 || Cvar( cvarToggleGetCash ) == 0 )
  1405. return 0;
  1406.  
  1407. static gMaxPlayers;
  1408.  
  1409. gMaxPlayers = get_maxplayers();
  1410.  
  1411. for ( new i = 1; i < gMaxPlayers; i++ )
  1412. {
  1413. if ( !is_user_connected( i ) )
  1414. continue;
  1415.  
  1416. bActiveGet[ i ] = false;
  1417. }
  1418.  
  1419. return 0;
  1420. }
  1421.  
  1422. public evCurWeapon( client )
  1423. {
  1424. if ( !is_user_alive( client ) || !is_user_connected( client ) || Cvar() == 0 )
  1425. return 0;
  1426.  
  1427. if ( bSpeed[ client ] )
  1428. fm_set_user_maxspeed( client, fm_get_user_maxspeed( client ) * 2 );
  1429.  
  1430. if ( get_user_weapon( client ) == CSW_KNIFE && Cvar( cvarToggleKnife ) != 0 )
  1431. {
  1432. entity_set_string( client, EV_SZ_viewmodel, szKnivesModels[ iData[ client ][ cKnife ] ] );
  1433.  
  1434. formatex( szItem, charsmax( szItem ), "%s%s", KNIFE_DIR, p_Knife );
  1435.  
  1436. entity_set_string( client, EV_SZ_weaponmodel, szItem );
  1437. }
  1438.  
  1439. return 0;
  1440. }
  1441.  
  1442. public evDeathMsg()
  1443. {
  1444. if ( Cvar() == 0 )
  1445. return 0;
  1446.  
  1447. new iKiller = read_data( 1 );
  1448. new iVictim = read_data( 2 );
  1449. new iHeadshot = read_data( 3 );
  1450.  
  1451. new CsTeams: iTeam[ 2 ];
  1452.  
  1453. iTeam[ 0 ] = cs_get_user_team( iKiller );
  1454.  
  1455. iTeam[ 1 ] = cs_get_user_team( iVictim );
  1456.  
  1457. if ( iTeam[ 0 ] == iTeam[ 1 ] || iTeam[ 0 ] != CS_TEAM_T || iTeam[ 1 ] != CS_TEAM_CT )
  1458. return 0;
  1459.  
  1460. new Amount = Cvar( cvarKillCash );
  1461.  
  1462. if ( iHeadshot )
  1463. Amount = Cvar( cvarHeadshot );
  1464.  
  1465. iData[ iKiller ][ Cash ] += Amount;
  1466.  
  1467. CmdSave( iKiller );
  1468.  
  1469. return 0;
  1470. }
  1471.  
  1472. /* Forwards */
  1473.  
  1474. public FwdSpawn_Post( client )
  1475. {
  1476. if ( !is_user_connected( client ) || !is_user_alive( client ) || Cvar() == 0 )
  1477. return 1;
  1478.  
  1479. for ( new i; i < sizeof szPowers; i++ )
  1480. set_task( 0.1, szPowers[ i ][ iClass ], client );
  1481.  
  1482. if ( cs_get_user_team( client ) == CS_TEAM_T )
  1483. {
  1484. fm_set_user_health( client, get_user_health( client ) + kCvar( kCvarsHealth[ iData[ client ][ cKnife ] ] ) );
  1485.  
  1486. fm_set_user_armor( client, get_user_armor( client ) + kCvar( kCvarsArmor[ iData[ client ][ cKnife ] ] ) );
  1487. }
  1488.  
  1489. return 0;
  1490. }
  1491.  
  1492. public FwdTakeDamage_Pre( iVictim, Inf, iAttacker, Float:fDamage, iDmgBits )
  1493. {
  1494. if ( Cvar() == 0 || Cvar( cvarToggleKnife ) == 0 )
  1495. return 1;
  1496.  
  1497. static gMaxPlayers;
  1498.  
  1499. gMaxPlayers = get_maxplayers();
  1500.  
  1501. if ( 1 <= iAttacker <= gMaxPlayers && 1 <= iVictim <= gMaxPlayers && get_user_weapon( iAttacker ) == CSW_KNIFE && iDmgBits & DMG_NEVERGIB && !(iDmgBits&(1<<24)) )
  1502. {
  1503. SetHamParamFloat( 4, fDamage + kCvar( kCvarsDamage[ iData[ iAttacker ][ cKnife ] ] ) );
  1504.  
  1505. if ( cs_get_user_team( iVictim ) == cs_get_user_team( iAttacker ) && get_cvar_num( "mp_friendlyfire" ) == 0 )
  1506. return 1;
  1507.  
  1508. new Float:fRandom[ 3 ];
  1509.  
  1510. for ( new i; i < 3; i++ )
  1511. fRandom[ i ] = random_float( 100.0, 150.0 );
  1512.  
  1513. entity_set_vector( iVictim, EV_VEC_punchangle, fRandom );
  1514. }
  1515.  
  1516. return 1;
  1517. }
  1518.  
  1519. /* Set Data */
  1520.  
  1521. public CmdSetKnife( client, iLevel, cid )
  1522. {
  1523. if ( Cvar() == 0 )
  1524. return 0;
  1525.  
  1526. if ( !cmd_access( client, iLevel, cid, 3 ) )
  1527. return 1;
  1528.  
  1529. static iArgs[ 35 ];
  1530.  
  1531. read_argv( 1, iArgs, charsmax( iArgs ) );
  1532.  
  1533. new iPlayer = cmd_target( client, iArgs, CMDTARGET_NO_BOTS );
  1534.  
  1535. if ( !iPlayer )
  1536. return 1;
  1537.  
  1538. if ( !is_user_connected( iPlayer ) )
  1539. return 1;
  1540.  
  1541. read_argv( 2, iArgs, charsmax( iArgs ) );
  1542.  
  1543. if ( !is_str_num( iArgs ) )
  1544. {
  1545. console_print( client, "You need to use valid numbers only." );
  1546.  
  1547. return 1;
  1548. }
  1549.  
  1550. new Amount = str_to_num( iArgs );
  1551.  
  1552. if ( Amount <= 0 )
  1553. {
  1554. console_print( client, "Error: Minimum value is: 1." );
  1555.  
  1556. return 1;
  1557. }
  1558.  
  1559. if ( Amount > sizeof szKnives )
  1560. {
  1561. console_print( client, "Error: Maximum value is: %i.", sizeof szKnives );
  1562.  
  1563. return 1;
  1564. }
  1565.  
  1566. Amount = Amount - 1;
  1567.  
  1568. iData[ client ][ mKnife ] = Amount;
  1569.  
  1570. iData[ client ][ cKnife ] = Amount;
  1571.  
  1572. CmdSave( client );
  1573.  
  1574. log_amx( "%s ( %s | %s ) defined %s's ( %s | %s ) knife level to %i", szName( client ), szAuth( client ), szAddress( client ),
  1575. szName( iPlayer ), szAuth( iPlayer ), szAddress( iPlayer ), Amount );
  1576.  
  1577. return 1;
  1578. }
  1579.  
  1580. public CmdSetBank( client, iLevel, cid )
  1581. {
  1582. if ( Cvar() == 0 )
  1583. return 0;
  1584.  
  1585. if ( !cmd_access( client, iLevel, cid, 3 ) )
  1586. return 1;
  1587.  
  1588. static iArgs[ 35 ];
  1589.  
  1590. read_argv( 1, iArgs, charsmax( iArgs ) );
  1591.  
  1592. new iPlayer = cmd_target( client, iArgs, CMDTARGET_NO_BOTS );
  1593.  
  1594. if ( !iPlayer )
  1595. return 1;
  1596.  
  1597. if ( !is_user_connected( iPlayer ) )
  1598. return 1;
  1599.  
  1600. read_argv( 2, iArgs, charsmax( iArgs ) );
  1601.  
  1602. if ( !is_str_num( iArgs ) )
  1603. {
  1604. console_print( client, "You need to use valid numbers only." );
  1605.  
  1606. return 1;
  1607. }
  1608.  
  1609. new Amount = str_to_num( iArgs );
  1610.  
  1611. if ( Amount <= 0 )
  1612. {
  1613. console_print( client, "Error: Minimum value is: 1." );
  1614.  
  1615. return 1;
  1616. }
  1617.  
  1618. iData[ client ][ Bank ] = Amount;
  1619.  
  1620. CmdSave( client );
  1621.  
  1622. log_amx( "%s ( %s | %s ) defined %s's ( %s | %s ) amount of cash in the bank to %i", szName( client ), szAuth( client ), szAddress( client ),
  1623. szName( iPlayer ), szAuth( iPlayer ), szAddress( iPlayer ), Amount );
  1624.  
  1625. return 1;
  1626. }
  1627.  
  1628. public CmdAddCash( client, iLevel, cid )
  1629. {
  1630. if ( Cvar() == 0 )
  1631. return 0;
  1632.  
  1633. if ( !cmd_access( client, iLevel, cid, 3 ) )
  1634. return 1;
  1635.  
  1636. static iArgs[ 35 ];
  1637.  
  1638. read_argv( 1, iArgs, charsmax( iArgs ) );
  1639.  
  1640. new iPlayer = cmd_target( client, iArgs, CMDTARGET_NO_BOTS );
  1641.  
  1642. if ( !iPlayer )
  1643. return 1;
  1644.  
  1645. if ( !is_user_connected( iPlayer ) )
  1646. return 1;
  1647.  
  1648. read_argv( 2, iArgs, charsmax( iArgs ) );
  1649.  
  1650. if ( !is_str_num( iArgs ) )
  1651. {
  1652. console_print( client, "You need to use valid numbers only." );
  1653.  
  1654. return 1;
  1655. }
  1656.  
  1657. new Amount = str_to_num( iArgs );
  1658.  
  1659. if ( Amount <= 0 )
  1660. {
  1661. console_print( client, "Error: Minimum value is: 1." );
  1662.  
  1663. return 1;
  1664. }
  1665.  
  1666. iData[ iPlayer ][ Cash ] += Amount;
  1667.  
  1668. if ( iData[ iPlayer ][ Cash ] < 0 )
  1669. iData[ iPlayer ][ Cash ] = 0;
  1670.  
  1671. CmdSave( iPlayer );
  1672.  
  1673. log_amx( "%s ( %s | %s ) added %i cash to %s ( %s | %s | %i Cash Total )", szName( client ), szAuth( client ), szAddress( client ), Amount,
  1674. szName( iPlayer ), szAuth( iPlayer ), szAddress( iPlayer ), iData[ iPlayer ][ Cash ] );
  1675.  
  1676. return 1;
  1677. }
  1678.  
  1679. public CmdRemoveCash( client, iLevel, cid )
  1680. {
  1681. if ( Cvar() == 0 )
  1682. return 0;
  1683.  
  1684. if ( !cmd_access( client, iLevel, cid, 3 ) )
  1685. return 1;
  1686.  
  1687. static iArgs[ 35 ];
  1688.  
  1689. read_argv( 1, iArgs, charsmax( iArgs ) );
  1690.  
  1691. new iPlayer = cmd_target( client, iArgs, CMDTARGET_NO_BOTS );
  1692.  
  1693. if ( !iPlayer )
  1694. return 1;
  1695.  
  1696. if ( !is_user_connected( iPlayer ) )
  1697. return 1;
  1698.  
  1699. read_argv( 2, iArgs, charsmax( iArgs ) );
  1700.  
  1701. if ( !is_str_num( iArgs ) )
  1702. {
  1703. console_print( client, "You need to use valid numbers only." );
  1704.  
  1705. return 1;
  1706. }
  1707.  
  1708. new Amount = str_to_num( iArgs );
  1709.  
  1710. if ( Amount <= 0 )
  1711. {
  1712. console_print( client, "Error: Minimum value is: 1." );
  1713.  
  1714. return 1;
  1715. }
  1716.  
  1717. iData[ iPlayer ][ Cash ] -= Amount;
  1718.  
  1719. if ( iData[ iPlayer ][ Cash ] <= 0 )
  1720. iData[ iPlayer ][ Cash ] = 0;
  1721.  
  1722. CmdSave( iPlayer );
  1723.  
  1724. log_amx( "%s ( %s | %s ) removed %i cash from %s ( %s | %s | %i Cash Total )", szName( client ), szAuth( client ), szAddress( client ), Amount,
  1725. szName( iPlayer ), szAuth( iPlayer ), szAddress( iPlayer ), iData[ iPlayer ][ Cash ] );
  1726.  
  1727. return 1;
  1728. }
  1729.  
  1730. /* Data Storage */
  1731.  
  1732. stock CmdSave( const index )
  1733. {
  1734. new szKey[ 64 ], szData[ 256 ];
  1735.  
  1736. switch ( Cvar( cvarSystem ) )
  1737. {
  1738. case 1: formatex( szKey, charsmax( szKey ), "%s-sSystem", szAddress( index ) );
  1739.  
  1740. default: formatex( szKey, charsmax( szKey ), "%s-sSystem", szAuth( index ) );
  1741. }
  1742.  
  1743. formatex( szData, charsmax( szData ), "%i#%i#%i#%i#%i#", iData[ index ][ mKnife ], iData[ index ][ cKnife ], iData[ index ][ Cash ],
  1744. iData[ index ][ Bank ], iData[ index ][ Connection ] );
  1745.  
  1746. fvault_set_data( szVault, szKey, szData );
  1747. }
  1748.  
  1749. stock CmdLoad( const index )
  1750. {
  1751. new szKey[ 64 ], szData[ 256 ];
  1752.  
  1753. switch ( Cvar( cvarSystem ) )
  1754. {
  1755. case 1: formatex( szKey, charsmax( szKey ), "%s-sSystem", szAddress( index ) );
  1756.  
  1757. default: formatex( szKey, charsmax( szKey ), "%s-sSystem", szAuth( index ) );
  1758. }
  1759.  
  1760. formatex( szData, charsmax( szData ), "%i#%i#%i#%i#%i#", iData[ index ][ mKnife ], iData[ index ][ cKnife ], iData[ index ][ Cash ],
  1761. iData[ index ][ Bank ], iData[ index ][ Connection ] );
  1762.  
  1763. fvault_get_data( szVault, szKey, szData, 255 );
  1764.  
  1765. replace_all( szData, 255, "#", " " );
  1766.  
  1767. new SetData[ 5 ][ 32 ];
  1768.  
  1769. parse( szData, SetData[ 0 ], 31, SetData[ 1 ], 31, SetData[ 2 ], 31, SetData[ 3 ], 31, SetData[ 4 ], 31 );
  1770.  
  1771. iData[ index ][ mKnife ] = str_to_num( SetData[ 0 ] );
  1772.  
  1773. iData[ index ][ cKnife ] = str_to_num( SetData[ 1 ] );
  1774.  
  1775. iData[ index ][ Cash ] = str_to_num( SetData[ 2 ] );
  1776.  
  1777. iData[ index ][ Bank ] = str_to_num( SetData[ 3 ] );
  1778.  
  1779. iData[ index ][ Connection ] = str_to_num( SetData[ 4 ] );
  1780. }
  1781.  
  1782. /* Stocks */
  1783.  
  1784. stock ColorPrint( const index, const string[], any:... )
  1785. {
  1786. new szMsg[ 191 ], Players[ 32 ], PNum = 1;
  1787.  
  1788. static iLen; iLen = formatex( szMsg, charsmax( szMsg ), "^4[%s]^1 ", Prefix() );
  1789.  
  1790. vformat( szMsg[ iLen ], charsmax( szMsg ) - iLen, string, 3 );
  1791.  
  1792. if ( index )
  1793. Players[ 0 ] = index;
  1794.  
  1795. else
  1796. get_players( Players, PNum, "ch" );
  1797.  
  1798. for ( new i; i < PNum; i++ )
  1799. {
  1800. if( is_user_connected( Players[ i ] ) )
  1801. {
  1802. message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, Players[ i ] );
  1803.  
  1804. write_byte( Players[ i ] );
  1805.  
  1806. write_string( szMsg );
  1807.  
  1808. message_end( );
  1809. }
  1810. }
  1811.  
  1812. return 1;
  1813. }
  1814.  
  1815. stock szName( const index )
  1816. {
  1817. static Name[ 128 ];
  1818.  
  1819. get_user_name( index, Name, charsmax( Name ) );
  1820.  
  1821. return Name;
  1822. }
  1823.  
  1824. stock szAuth( const index )
  1825. {
  1826. static Auth[ 35 ];
  1827.  
  1828. get_user_authid( index, Auth, charsmax( Auth ) );
  1829.  
  1830. return Auth;
  1831. }
  1832.  
  1833. stock szAddress( const index )
  1834. {
  1835. static Address[ 20 ];
  1836.  
  1837. get_user_ip( index, Address, charsmax( Address ), 1 );
  1838.  
  1839. return Address;
  1840. }
  1841.  
  1842. stock Cvar( TheCvar = cvarToggle )
  1843. {
  1844. return get_pcvar_num( pCvar[ TheCvar ] );
  1845. }
  1846.  
  1847. stock kCvar( TheCvar )
  1848. {
  1849. return get_pcvar_num( TheCvar );
  1850. }
  1851.  
  1852. stock Prefix()
  1853. {
  1854. new szPrefix[ 32 ];
  1855.  
  1856. get_pcvar_string( pCvar[ cvarPrefix ], szPrefix, charsmax( szPrefix ) );
  1857.  
  1858. return szPrefix;
  1859. }
  1860.  
  1861. stock bool: OnlineAdmins()
  1862. {
  1863. static gMaxPlayers;
  1864.  
  1865. gMaxPlayers = get_maxplayers();
  1866.  
  1867. new a_Count;
  1868.  
  1869. for ( new i = 1; i < gMaxPlayers; i++ )
  1870. {
  1871. if ( !is_user_connected( i ) )
  1872. continue;
  1873.  
  1874. if ( is_user_admin( i ) )
  1875. a_Count++;
  1876. }
  1877.  
  1878. if ( a_Count > 0 )
  1879. return true;
  1880.  
  1881. return false;
  1882. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement