Rejack

JailBreak Knives Shop (v1.3.4)

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