Advertisement
Rejack

DeathRun Shop (v1.0)

Mar 3rd, 2013 (edited)
930
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 33.17 KB | None | 0 0
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < cstrike >
  4. #include < fun >
  5. #include < hamsandwich >
  6. #include < engine >
  7. #include < nvault >
  8.  
  9. /* Defines and Pragma */
  10. #define MaxPowers   4
  11.  
  12. #define MaxFun      2
  13.  
  14. #define MaxWeapons  8
  15.  
  16. #define MaxGrenades 3
  17.  
  18. #pragma semicolon   1
  19.  
  20. #define CmdAccess ADMIN_RCON
  21.  
  22.  
  23. /* Cvars */
  24. enum _:Cvars
  25. {
  26.     OnOff,
  27.     Prefix,
  28.     Savetype,
  29.     kill,
  30.     suicide,
  31.     tkill,
  32.    
  33.     Godmode,
  34.     Speed,
  35.     Gravity,
  36.     Stealth,
  37.    
  38.     Glow,
  39.     NoSteps,
  40.    
  41.     Grenade,
  42.     Flash,
  43.     Smoke,
  44.    
  45.     m4a1,
  46.     ak47,
  47.     awp,
  48.     dgl,
  49.     famas,
  50.     galil,
  51.     m3,
  52.     mp5
  53. }
  54. new pCvar[ Cvars ];
  55.  
  56. /* Arrays and Variables */
  57. new g_Points[ 33 ], Val[ 33 ], Cost[ 33 ],
  58. Float:PowerTime[ 33 ], bool:g_Godmode[ 33 ], bool:g_Speed[ 33 ],
  59. bool:g_Gravity[ 33 ], bool:g_Stealth[ 33 ], Float:MaxSpeed[ 33 ], Ammo[ 33 ], g_Vault;
  60.  
  61. new g_Plugin[ 3 ][ ] = { "Deathrun Shop", "1.0", "Rejack" };
  62.  
  63. new g_PowersNames[ MaxPowers ][ ] =
  64. {
  65.     "Godmode",
  66.     "Speed",
  67.     "Gravity",
  68.     "Stealth"
  69. };
  70.  
  71. new g_PowersCost[ ] =
  72. {
  73.     Godmode,
  74.     Speed,
  75.     Gravity,
  76.     Stealth
  77. };
  78.  
  79. new g_FunNames[ MaxFun ][ ] =
  80. {
  81.     "Fun Glow",
  82.     "No Footsteps"
  83. };
  84.  
  85. new g_FunCvars[ MaxFun ] =
  86. {
  87.     Glow,
  88.     NoSteps
  89. };
  90.  
  91. new g_GrenadesNames[ MaxGrenades ][ ] =
  92. {
  93.     "HEGrenade",
  94.     "Flashbang",
  95.     "Smokegrenade"
  96. };
  97.  
  98. new g_GrenadesCvars[ MaxGrenades ] =
  99. {
  100.     Grenade,
  101.     Flash,
  102.     Smoke
  103. };
  104.  
  105. new g_GrenadesClass[ MaxGrenades ][ ] =
  106. {
  107.     "weapon_hegrenade",
  108.     "weapon_flashbang",
  109.     "weapon_smokegrenade"
  110. };
  111.  
  112. new g_GrenadesIDs[ MaxGrenades ] =
  113. {
  114.     CSW_HEGRENADE,
  115.     CSW_FLASHBANG,
  116.     CSW_SMOKEGRENADE
  117. };
  118.  
  119. new g_WeaponsNames[ MaxWeapons ][ ] =
  120. {
  121.     "M4A1",
  122.     "AK47",
  123.     "AWP",
  124.     "Deagle",
  125.     "Famas",
  126.     "Galil",
  127.     "M3",
  128.     "MP5"
  129. };
  130.  
  131. new g_WeaponsMax[ MaxWeapons ] =
  132. {
  133.     30,
  134.     30,
  135.     10,
  136.     7,
  137.     25,
  138.     35,
  139.     8,
  140.     30
  141. };
  142.  
  143. new g_WeaponsClass[ MaxWeapons ][ ] =
  144. {
  145.     "weapon_m4a1",
  146.     "weapon_ak47",
  147.     "weapon_awp",
  148.     "weapon_deagle",
  149.     "weapon_famas",
  150.     "weapon_galil",
  151.     "weapon_m3",
  152.     "weapon_mp5navy"
  153. };
  154.  
  155. new g_WeaponsIDs[ MaxWeapons ] =
  156. {
  157.     CSW_M4A1,
  158.     CSW_AK47,
  159.     CSW_AWP,
  160.     CSW_DEAGLE,
  161.     CSW_FAMAS,
  162.     CSW_GALIL,
  163.     CSW_M3,
  164.     CSW_MP5NAVY
  165. };
  166.  
  167. new g_WeaponsCvars[ MaxWeapons ] =
  168. {
  169.     m4a1,
  170.     ak47,
  171.     awp,
  172.     dgl,
  173.     famas,
  174.     galil,
  175.     m3,
  176.     mp5
  177. };
  178.  
  179. public plugin_init()
  180. {
  181.     register_plugin( g_Plugin[ 0 ], g_Plugin[ 1 ], g_Plugin[ 2 ] );
  182.    
  183.     register_clcmd( "say", "CmdSay" );
  184.    
  185.     register_clcmd( "drshop_add_points", "CmdAddPoints" );
  186.    
  187.     register_clcmd( "drshop_remove_points", "CmdRemovePoints" );
  188.    
  189.     RegisterHam( Ham_Spawn, "player", "fwClientSpawn", 1 );
  190.    
  191.     register_event( "DeathMsg", "evDeathMsg", "a" );
  192.     register_event( "CurWeapon", "evCurWeapon", "be", "1=1" );
  193.    
  194.     pCvar[ OnOff ]      = register_cvar( "drshop_enabled", "1" );
  195.     pCvar[ Prefix ]     = register_cvar( "drshop_prefix", "Deathrun" );
  196.     pCvar[ Savetype ]   = register_cvar( "drshop_save", "2" );
  197.     pCvar[ kill ]       = register_cvar( "drshop_kill", "3" );
  198.     pCvar[ suicide ]        = register_cvar( "drshop_suicide", "1" );
  199.     pCvar[ tkill ]      = register_cvar( "drshop_killt", "6" );
  200.    
  201.     pCvar[ Godmode ]        = register_cvar( "drshop_godmode", "3" );
  202.     pCvar[ Speed ]      = register_cvar( "drshop_speed", "2" );
  203.     pCvar[ Gravity ]        = register_cvar( "drshop_gravity", "3" );
  204.     pCvar[ Stealth ]        = register_cvar( "drshop_stealth", "3" );
  205.    
  206.     pCvar[ Glow ]       = register_cvar( "drshop_glow", "2" );
  207.     pCvar[ NoSteps ]        = register_cvar( "drshop_nosteps", "1" );
  208.    
  209.     pCvar[ Grenade ]        = register_cvar( "drshop_grenade", "4" );
  210.     pCvar[ Flash ]      = register_cvar( "drshop_flash", "3" );
  211.     pCvar[ Smoke ]      = register_cvar( "drshop_smoke", "2" );
  212.    
  213.     pCvar[ m4a1 ]       = register_cvar( "drshop_m4a1", "3" );
  214.     pCvar[ ak47 ]       = register_cvar( "drshop_ak47", "3" );
  215.     pCvar[ awp ]        = register_cvar( "drshop_awp", "4" );
  216.     pCvar[ dgl ]        = register_cvar( "drshop_deagle", "2" );
  217.     pCvar[ famas ]      = register_cvar( "drshop_famas", "2" );
  218.     pCvar[ galil ]      = register_cvar( "drshop_galil", "2" );
  219.     pCvar[ m3 ]     = register_cvar( "drshop_m3", "1" );
  220.     pCvar[ mp5 ]        = register_cvar( "drshop_mp5", "1" );
  221.    
  222.     g_Vault = nvault_open( "DeathrunShop" );
  223. }
  224.  
  225. public plugin_end( )    nvault_close( g_Vault );
  226.  
  227. public plugin_natives( )
  228. {
  229.     register_library( "DeathrunNatives" );
  230.    
  231.     register_native( "get_user_points", "GetPoints");
  232.    
  233.     register_native( "set_user_points", "SetPoints");
  234. }
  235.  
  236. public GetPoints( plugin, params )
  237.     return g_Points[ get_param( 1 ) ];
  238.    
  239. public SetPoints( plugin, params )
  240. {
  241.     new client = get_param( 1 );
  242.     g_Points[ client ] = max( 0, get_param( 2 ) );
  243.     Save( client );
  244.     return g_Points[ client ];
  245. }
  246. public CmdHandle( client )
  247. {
  248.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  249.    
  250.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3 Dead players^1 canno't use the shop." );
  251.    
  252.     new szItem[ 128 ];
  253.    
  254.     formatex( szItem, charsmax( szItem ), "Deathrun Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  255.    
  256.     new Menu = menu_create( szItem, "SubHandle" );
  257.    
  258.     menu_additem( Menu, "\dPlayers Points Menu", "0" );
  259.    
  260.     switch ( cs_get_user_team( client ) )
  261.     {
  262.         case CS_TEAM_T: menu_additem( Menu, "Open \rTerrorists\w Shop", "1", 0 );
  263.        
  264.         case CS_TEAM_CT:    menu_additem( Menu, "Open \rCounter-Terrorists\w Shop", "1", 0 );
  265.     }
  266.    
  267.     menu_setprop( Menu, MPROP_NUMBER_COLOR, "\y" );
  268.    
  269.     menu_setprop( Menu, MPROP_EXITNAME, "Exit Shop" );
  270.    
  271.     menu_display( client, Menu, 0 );
  272.    
  273.     return PLUGIN_HANDLED;
  274. }
  275.  
  276. public SubHandle( client, Menu, Item )
  277. {
  278.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  279.    
  280.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3 Dead players^1 canno't use the shop." );
  281.    
  282.     if ( Item == MENU_EXIT )
  283.     {
  284.         menu_destroy( Menu );
  285.        
  286.         return PLUGIN_HANDLED;
  287.     }
  288.    
  289.     switch ( cs_get_user_team( client ) )
  290.     {
  291.         case CS_TEAM_T:
  292.         {
  293.             switch ( Item )
  294.             {
  295.                 case 0: CmdPlayers( client );
  296.                
  297.                 case 1: CmdShop( client );
  298.             }
  299.         }
  300.         case CS_TEAM_CT:
  301.         {
  302.             switch ( Item )
  303.             {
  304.                 case 0: CmdPlayers( client );
  305.                
  306.                 case 1: CmdShop( client );
  307.             }
  308.         }
  309.     }
  310.    
  311.     menu_destroy( Menu );
  312.    
  313.     return PLUGIN_HANDLED;
  314. }
  315.  
  316. public CmdShop( client )
  317. {
  318.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  319.    
  320.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  321.    
  322.     new szItem[ 128 ];
  323.    
  324.     switch ( cs_get_user_team( client ) )
  325.     {
  326.         case CS_TEAM_T:
  327.         {
  328.             formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rTerrorists\y)^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  329.             new Menu = menu_create( szItem, "SubShop" );
  330.            
  331.            
  332.             menu_additem( Menu, "Powers Shop", "0", 0 );
  333.            
  334.             menu_additem( Menu, "Fun Shop", "1", 0 );
  335.            
  336.            
  337.             menu_setprop( Menu, MPROP_NUMBER_COLOR, "\y" );
  338.            
  339.             menu_setprop( Menu, MPROP_EXITNAME, "Exit Shop" );
  340.            
  341.             menu_display( client, Menu, 0 );
  342.         }
  343.         case CS_TEAM_CT:
  344.         {
  345.             formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rCounter-Terrorists\y)^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  346.             new Menu = menu_create( szItem, "SubShop" );
  347.            
  348.            
  349.             menu_additem( Menu, "Powers Shop", "0", 0 );
  350.            
  351.             menu_additem( Menu, "Fun Shop", "1", 0 );
  352.            
  353.             menu_additem( Menu, "Grenades Shop", "2", 0 );
  354.            
  355.             menu_additem( Menu, "Weapons Shop", "3", 0 );
  356.            
  357.            
  358.             menu_setprop( Menu, MPROP_NUMBER_COLOR, "\y" );
  359.            
  360.             menu_setprop( Menu, MPROP_EXITNAME, "Exit Shop" );
  361.            
  362.             menu_display( client, Menu, 0 );
  363.         }
  364.     }
  365.    
  366.     return PLUGIN_HANDLED;
  367. }
  368.  
  369. public SubShop( client, Menu, Item )
  370. {
  371.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  372.    
  373.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  374.    
  375.     if ( Item == MENU_EXIT )
  376.     {
  377.         menu_destroy( Menu );
  378.        
  379.         return PLUGIN_HANDLED;
  380.     }
  381.    
  382.     switch ( Item )
  383.     {
  384.         case 0: CmdPowers( client );
  385.        
  386.         case 1: CmdFun( client );
  387.        
  388.         case 2: CmdGrenades( client );
  389.        
  390.         case 3: CmdWeapons( client );
  391.     }
  392.    
  393.     menu_destroy( Menu );
  394.    
  395.     return PLUGIN_HANDLED;
  396. }
  397.  
  398. public CmdPowers( client )
  399. {
  400.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  401.    
  402.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  403.    
  404.     new szItem[ 128 ];
  405.    
  406.     switch ( cs_get_user_team( client ) )
  407.     {
  408.         case CS_TEAM_T:     formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rTerrorists\y)^nPowers Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  409.        
  410.         case CS_TEAM_CT:    formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rCounter-Terrorists\y)^nPowers Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  411.     }
  412.    
  413.     new Menu = menu_create( szItem, "SubPowers" );
  414.    
  415.     formatex( szItem, charsmax( szItem ), "Choose a Power:\r %s", g_PowersNames[ Val[ client ] ] );
  416.     menu_additem( Menu, szItem, "0", 0 );
  417.    
  418.     formatex( szItem, charsmax( szItem ), "Choose Time:\r %.1f", PowerTime[ client ] );
  419.     menu_additem( Menu, szItem, "1", 0 );
  420.    
  421.     new frPowers = floatround( PowerTime[ client ] );
  422.     Cost[ client ] = get_pcvar_num( pCvar[ g_PowersCost[ Val[ client ] ] ] ) * frPowers;
  423.    
  424.     formatex( szItem, charsmax( szItem ), "Purchase \y(\d %d Points \y)", Cost[ client ] );
  425.     menu_additem( Menu, szItem, "2", 0 );
  426.    
  427.    
  428.     menu_setprop( Menu, MPROP_NUMBER_COLOR, "\y" );
  429.    
  430.     menu_setprop( Menu, MPROP_EXITNAME, "Exit Shop" );
  431.    
  432.     menu_display( client, Menu, 0 );
  433.    
  434.     return PLUGIN_HANDLED;
  435. }
  436.  
  437. public SubPowers( client, Menu, Item )
  438. {
  439.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  440.    
  441.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  442.    
  443.     if ( Item == MENU_EXIT )
  444.     {
  445.         menu_destroy( Menu );
  446.        
  447.         Cost[ client ] = 0;
  448.        
  449.         PowerTime[ client ] = 0.0;
  450.        
  451.         Val[ client ] = 0;
  452.        
  453.         return PLUGIN_HANDLED;
  454.     }
  455.    
  456.     switch ( Item )
  457.     {
  458.         case 0:
  459.         {
  460.             if ( Val[ client ] == MaxPowers - 1 )
  461.             {
  462.                 Val[ client ] = 0;
  463.                
  464.                 CmdPowers( client );
  465.                
  466.                 return PLUGIN_HANDLED;
  467.             }
  468.            
  469.             Val[ client ] += 1;
  470.            
  471.             CmdPowers( client );
  472.         }
  473.        
  474.         case 1:
  475.         {
  476.             if ( PowerTime[ client ] == 10.0 )
  477.             {
  478.                 PowerTime[ client ] = 0.0;
  479.                
  480.                 CmdPowers( client );
  481.                
  482.                 return PLUGIN_HANDLED;
  483.             }
  484.            
  485.             PowerTime[ client ] += 1.0;
  486.            
  487.             CmdPowers( client );
  488.         }
  489.        
  490.         case 2:
  491.         {
  492.             if ( PowerTime[ client ] == 0.0 )   return ColorPrint( client, "Time must be greather than^4 0.0^3 seconds^1." );
  493.            
  494.             if ( g_Points[ client ] < Cost[ client ] )
  495.             {
  496.                 ColorPrint( client, "Your missing^4 %d^3 Points^1.",  Cost[ client ] - g_Points[ client ] );
  497.                
  498.                 CmdPowers( client );
  499.                
  500.                 return PLUGIN_HANDLED;
  501.             }
  502.            
  503.             switch ( Val[ client ] )
  504.             {
  505.                 case 0:
  506.                 {
  507.                     if ( g_Godmode[ client ] )  return ColorPrint( client, "You're already using this^3 power^1." );
  508.                    
  509.                     set_user_godmode( client, 1 );
  510.                    
  511.                     g_Godmode[ client ] = true;
  512.                    
  513.                     set_task( PowerTime[ client ], "RemoveGodmode", client );
  514.                 }
  515.                
  516.                 case 1:
  517.                 {
  518.                     if ( g_Speed[ client ] )        return ColorPrint( client, "You're already using this^3 power^1." );
  519.                    
  520.                     MaxSpeed[ client ] = get_user_maxspeed( client );
  521.                    
  522.                     set_user_maxspeed( client, MaxSpeed[ client ] *  2 );
  523.                    
  524.                     g_Speed[ client ] = true;
  525.                    
  526.                     set_task( PowerTime[ client ], "RemoveSpeed", client );
  527.                 }
  528.                
  529.                 case 2:
  530.                 {
  531.                     if ( g_Gravity[ client ] )  return ColorPrint( client, "You're already using this^3 power^1." );
  532.                    
  533.                     set_user_gravity( client, 0.6 );
  534.                    
  535.                     g_Gravity[ client ] = true;
  536.                    
  537.                     set_task( PowerTime[ client ], "RemoveGravity", client );
  538.                 }
  539.                
  540.                 case 3:
  541.                 {
  542.                     if ( g_Stealth[ client ] )  return ColorPrint( client, "You're already using this^3 power^1." );
  543.                    
  544.                     set_user_rendering( client, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0 );
  545.                    
  546.                     g_Stealth[ client ] = true;
  547.                    
  548.                     set_task( PowerTime[ client ], "RemoveStealth", client );
  549.                 }
  550.             }
  551.                    
  552.                    
  553.            
  554.             g_Points[ client ] -= Cost[ client ];
  555.            
  556.             Cost[ client ] = 0;
  557.            
  558.             PowerTime[ client ] = 0.0;
  559.            
  560.             Val[ client ] = 0;
  561.         }
  562.     }
  563.    
  564.     menu_destroy( Menu );
  565.    
  566.     return PLUGIN_HANDLED;
  567. }
  568.  
  569. /* Remove Powers */
  570. public RemoveGodmode( client )
  571. {
  572.     if ( g_Godmode[ client ] )
  573.     {
  574.         set_user_godmode( client, 0 );
  575.        
  576.         g_Godmode[ client ] = false;
  577.     }
  578. }
  579.  
  580. public RemoveSpeed( client )
  581. {
  582.     if ( g_Speed[ client ] )
  583.     {
  584.         set_user_gravity( client, 1.0 );
  585.        
  586.         g_Speed[ client ] = false;
  587.     }
  588. }
  589.  
  590. public RemoveGravity( client )
  591. {
  592.     if ( g_Gravity[ client ] )
  593.     {
  594.         set_user_maxspeed( client, MaxSpeed[ client ] );
  595.        
  596.         g_Gravity[ client ] = false;
  597.     }
  598. }
  599.  
  600. public RemoveStealth( client )
  601. {
  602.     if ( g_Stealth[ client ] )
  603.     {
  604.         set_user_rendering( client, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0 );
  605.        
  606.         g_Stealth[ client ] = false;
  607.     }
  608. }
  609.  
  610. public CmdFun( client )
  611. {
  612.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  613.    
  614.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  615.    
  616.     new szItem[ 128 ];
  617.    
  618.     switch ( cs_get_user_team( client ) )
  619.     {
  620.         case CS_TEAM_T:     formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rTerrorists\y)^nFun Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  621.        
  622.         case CS_TEAM_CT:    formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rCounter-Terrorists\y)^nFun Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  623.     }
  624.    
  625.     new Menu = menu_create( szItem, "SubFun" );
  626.    
  627.     formatex( szItem, charsmax( szItem ), "Choose a Fun Item:\r %s", g_FunNames[ Val[ client ] ] );
  628.     menu_additem( Menu, szItem, "0", 0 );
  629.  
  630.     formatex( szItem, charsmax( szItem ), "Purchase \y(\d %d Points \y)", get_pcvar_num( pCvar[ g_FunCvars[ Val[ client ] ] ] ) );
  631.     menu_additem( Menu, szItem, "1", 0 );
  632.    
  633.    
  634.     menu_setprop( Menu, MPROP_NUMBER_COLOR, "\y" );
  635.    
  636.     menu_setprop( Menu, MPROP_EXITNAME, "Exit Shop" );
  637.    
  638.     menu_display( client, Menu, 0 );
  639.    
  640.     return PLUGIN_HANDLED;
  641. }
  642.  
  643. public SubFun( client, Menu, Item )
  644. {
  645.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  646.    
  647.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  648.    
  649.     if ( Item == MENU_EXIT )
  650.     {
  651.         menu_destroy( Menu );
  652.        
  653.         Val[ client ] = 0;
  654.        
  655.         return PLUGIN_HANDLED;
  656.     }
  657.    
  658.     switch ( Item )
  659.     {
  660.         case 0:
  661.         {
  662.             if ( Val[ client ] == MaxFun - 1 )
  663.             {
  664.                 Val[ client ] = 0;
  665.                
  666.                 CmdFun( client );
  667.                
  668.                 return PLUGIN_HANDLED;
  669.             }
  670.            
  671.             Val[ client ] += 1;
  672.            
  673.             CmdFun( client );
  674.         }
  675.        
  676.         case 1:
  677.         {
  678.             if ( g_Points[ client ] < get_pcvar_num( pCvar[ g_FunCvars[ Val[ client ] ] ] ) )
  679.             {
  680.                 ColorPrint( client, "Your missing^4 %d^3 Points^1.",  get_pcvar_num( pCvar[ g_FunCvars[ Val[ client ] ] ] ) - g_Points[ client ] );
  681.                
  682.                 CmdFun( client );
  683.                
  684.                 return PLUGIN_HANDLED;
  685.             }  
  686.            
  687.             g_Points[ client ] -= get_pcvar_num( pCvar[ g_FunCvars[ Val[ client ] ] ] );
  688.            
  689.             new r = random_num( 50, 255 );
  690.             new g = random_num( 50, 255 );
  691.             new b = random_num( 50, 255 );
  692.            
  693.             switch ( Val[ client ] )
  694.             {
  695.                 case 0: set_user_rendering( client, kRenderFxGlowShell, r, g, b, kRenderNormal, 16 );
  696.                
  697.                 case 1: set_user_footsteps( client, 0 );
  698.             }
  699.            
  700.             Val[ client ] = 0;
  701.         }
  702.     }
  703.    
  704.     menu_destroy( Menu );
  705.    
  706.     return PLUGIN_HANDLED;
  707. }
  708. public CmdGrenades( client )
  709. {
  710.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  711.    
  712.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  713.    
  714.     if ( cs_get_user_team( client ) != CS_TEAM_CT ) return ColorPrint( client, "^3Terrorists^1 canno't use the^4 Grenades Shop^1." );
  715.    
  716.     new szItem[ 128 ];
  717.    
  718.     switch ( cs_get_user_team( client ) )
  719.     {
  720.         case CS_TEAM_T:     formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rTerrorists\y)^nGrenades Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  721.        
  722.         case CS_TEAM_CT:    formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rCounter-Terrorists\y)^nGrenades Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  723.     }
  724.    
  725.     new Menu = menu_create( szItem, "SubGrenades" );
  726.    
  727.     formatex( szItem, charsmax( szItem ), "Choose a Grenade:\r %s", g_GrenadesNames[ Val[ client ] ] );
  728.     menu_additem( Menu, szItem, "0", 0 );
  729.  
  730.     formatex( szItem, charsmax( szItem ), "Purchase \y(\d %d Points \y)", get_pcvar_num( pCvar[ g_GrenadesCvars[ Val[ client ] ] ] ) );
  731.     menu_additem( Menu, szItem, "1", 0 );
  732.    
  733.    
  734.     menu_setprop( Menu, MPROP_NUMBER_COLOR, "\y" );
  735.    
  736.     menu_setprop( Menu, MPROP_EXITNAME, "Exit Shop" );
  737.    
  738.     menu_display( client, Menu, 0 );
  739.    
  740.     return PLUGIN_HANDLED;
  741. }
  742. public SubGrenades( client, Menu, Item )
  743. {
  744.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  745.    
  746.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  747.    
  748.     if ( cs_get_user_team( client ) != CS_TEAM_CT ) return ColorPrint( client, "^3Terrorists^1 canno't use the^4 Grenades Shop^1." );
  749.    
  750.     if ( Item == MENU_EXIT )
  751.     {
  752.         menu_destroy( Menu );
  753.        
  754.         Val[ client ] = 0;
  755.        
  756.         return PLUGIN_HANDLED;
  757.     }
  758.    
  759.     switch ( Item )
  760.     {
  761.         case 0:
  762.         {
  763.             if ( Val[ client ] == MaxGrenades - 1 )
  764.             {
  765.                 Val[ client ] = 0;
  766.                
  767.                 CmdGrenades( client );
  768.                
  769.                 return PLUGIN_HANDLED;
  770.             }
  771.            
  772.             Val[ client ] += 1;
  773.            
  774.             CmdGrenades( client );
  775.         }
  776.        
  777.         case 1:
  778.         {
  779.             if ( user_has_weapon( client, g_GrenadesIDs[ Val[ client ] ] ) )
  780.             {
  781.                 CmdGrenades( client );
  782.                
  783.                 return ColorPrint( client, "You already own this item." );
  784.             }
  785.                
  786.             if ( g_Points[ client ] < get_pcvar_num( pCvar[ g_GrenadesCvars[ Val[ client ] ] ] ) )
  787.             {
  788.                 CmdGrenades( client );
  789.                
  790.                 return ColorPrint( client, "Your missing^4 %d^3 Points^1.",  get_pcvar_num( pCvar[ g_GrenadesCvars[ Val[ client ] ] ] ) - g_Points[ client ] );
  791.             }  
  792.            
  793.             g_Points[ client ] -= get_pcvar_num( pCvar[ g_GrenadesCvars[ Val[ client ] ] ] );
  794.            
  795.             give_item( client, g_GrenadesClass[ Val[ client ] ] );
  796.            
  797.             Val[ client ] = 0;
  798.         }
  799.     }
  800.    
  801.     menu_destroy( Menu );
  802.    
  803.     return PLUGIN_HANDLED;
  804. }
  805.  
  806.  
  807. public CmdWeapons( client )
  808. {
  809.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  810.    
  811.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  812.    
  813.     if ( cs_get_user_team( client ) != CS_TEAM_CT ) return ColorPrint( client, "^3Terrorists^1 canno't use the^4 Weapons Shop^1." );
  814.    
  815.     new szItem[ 128 ];
  816.    
  817.     switch ( cs_get_user_team( client ) )
  818.     {
  819.         case CS_TEAM_T:     formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rTerrorists\y)^nWeapons Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  820.        
  821.         case CS_TEAM_CT:    formatex( szItem, charsmax( szItem ), "Deathrun Shop (\rCounter-Terrorists\y)^nWeapons Shop^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  822.     }
  823.    
  824.     new Menu = menu_create( szItem, "SubWeapons" );
  825.    
  826.     formatex( szItem, charsmax( szItem ), "Choose a Weapon:\r %s", g_WeaponsNames[ Val[ client ] ] );
  827.     menu_additem( Menu, szItem, "0", 0 );
  828.    
  829.     formatex( szItem, charsmax( szItem ), "Amount of Bullets:\r %d", Ammo[ client ] );
  830.     menu_additem( Menu, szItem, "0", 0 );
  831.  
  832.     formatex( szItem, charsmax( szItem ), "Purchase \y(\d %d Points \y)", get_pcvar_num( pCvar[ g_GrenadesCvars[ Val[ client ] ] ] ) * Ammo[ client ] );
  833.     menu_additem( Menu, szItem, "1", 0 );
  834.    
  835.    
  836.     menu_setprop( Menu, MPROP_NUMBER_COLOR, "\y" );
  837.    
  838.     menu_setprop( Menu, MPROP_EXITNAME, "Exit Shop" );
  839.    
  840.     menu_display( client, Menu, 0 );
  841.    
  842.     return PLUGIN_HANDLED;
  843. }
  844.  
  845. public SubWeapons( client, Menu, Item )
  846. {
  847.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  848.    
  849.     if ( !is_user_alive( client ) ) return ColorPrint( client, "^3Dead players^1 canno't use the shop." );
  850.    
  851.     if ( cs_get_user_team( client ) != CS_TEAM_CT ) return ColorPrint( client, "^3Terrorists^1 canno't use the^4 Weapons Shop^1." );
  852.    
  853.     if ( Item == MENU_EXIT )
  854.     {
  855.         menu_destroy( Menu );
  856.        
  857.         Val[ client ] = 0;
  858.        
  859.         Ammo[ client ] = 0;
  860.        
  861.         return PLUGIN_HANDLED;
  862.     }
  863.    
  864.     switch ( Item )
  865.     {
  866.         case 0:
  867.         {
  868.             if ( Val[ client ] == MaxWeapons - 1 )
  869.             {
  870.                 Val[ client ] = 0;
  871.                
  872.                 CmdGrenades( client );
  873.                
  874.                 return PLUGIN_HANDLED;
  875.             }
  876.            
  877.             Val[ client ] += 1;
  878.            
  879.             Ammo[ client ] = 0;
  880.            
  881.             CmdWeapons( client );
  882.         }
  883.        
  884.         case 1:
  885.         {
  886.             if ( Ammo[ client ] == g_WeaponsMax[ Val[ client ] ] )
  887.             {
  888.                 Ammo[ client ] = 0;
  889.                
  890.                 CmdWeapons( client );
  891.                
  892.                 return PLUGIN_HANDLED;
  893.             }
  894.            
  895.             Ammo[ client ] += 1;
  896.            
  897.             CmdWeapons( client );
  898.         }
  899.         case 2:
  900.         {
  901.             if ( user_has_weapon( client, g_WeaponsIDs[ Val[ client ] ] ) )
  902.             {
  903.                 CmdWeapons( client );
  904.                
  905.                 return ColorPrint( client, "You already own this item." );
  906.             }
  907.            
  908.             if ( Ammo[ client ] == 0 )
  909.             {
  910.                 CmdWeapons( client );
  911.                
  912.                 return ColorPrint( client, "Ammo must be greather than^4 0^3 Bullets^1." );
  913.             }
  914.                
  915.             if ( g_Points[ client ] < get_pcvar_num( pCvar[ g_WeaponsCvars[ Val[ client ] ] ] ) * Ammo[ client ] )
  916.             {
  917.                 CmdWeapons( client );
  918.                
  919.                 return ColorPrint( client, "Your missing^4 %d^3 Points^1.",  get_pcvar_num( pCvar[ g_WeaponsCvars[ Val[ client ] ] ] ) * Ammo[ client ] - g_Points[ client ] );
  920.             }  
  921.            
  922.             g_Points[ client ] -= get_pcvar_num( pCvar[ g_WeaponsCvars[ Val[ client ] ] ] );
  923.            
  924.             give_item( client, g_WeaponsClass[ Val[ client ] ] );
  925.            
  926.             cs_set_user_bpammo( client, g_WeaponsIDs[ Val[ client ] ], 0 );
  927.            
  928.             cs_set_weapon_ammo( find_ent_by_owner( -1, g_WeaponsClass[ Val[ client ] ], client ), Ammo[ client ] );
  929.            
  930.             Val[ client ] = 0;
  931.            
  932.             Ammo[ client ] = 0;
  933.         }
  934.     }
  935.    
  936.     menu_destroy( Menu );
  937.    
  938.     return PLUGIN_HANDLED;
  939. }
  940.  
  941. public CmdPlayers( client )
  942. {
  943.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  944.    
  945.     new szItem[ 128 ];
  946.    
  947.     formatex( szItem, charsmax( szItem ), "Deathrun Shop^nPlayers Points^n^n\wYou have\y %d\w Points^n", g_Points[ client ] );
  948.     new Menu = menu_create( szItem, "SubPlayers" );
  949.    
  950.     new szPlayers[ 32 ], PNum, szTempid[ 10 ], szName[ 32 ];
  951.    
  952.     get_players( szPlayers, PNum, "c" );
  953.    
  954.     for ( new i; i < PNum; i++ )
  955.     {
  956.         new Clients = szPlayers[ i ];
  957.        
  958.         num_to_str( Clients, szTempid, charsmax( szTempid ) );
  959.        
  960.         get_user_name( Clients, szName, charsmax( szName ) );
  961.        
  962.         formatex( szItem, charsmax( szItem ), "%s \y(\d %d Points \y)", szName, g_Points[ Clients ] );
  963.        
  964.         menu_additem( Menu, szItem, szTempid, 0 );
  965.     }
  966.    
  967.     menu_setprop( Menu, MPROP_NUMBER_COLOR, "\y" );
  968.    
  969.     menu_display( client, Menu );
  970.    
  971.     return PLUGIN_HANDLED;
  972.    
  973. }
  974.  
  975. public SubPlayers( client, Menu, Item )
  976. {
  977.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  978.    
  979.     if ( Item == MENU_EXIT )
  980.     {
  981.         menu_destroy( Menu );
  982.        
  983.         return PLUGIN_HANDLED;
  984.     }
  985.    
  986.     CmdPlayers( client );
  987.    
  988.     menu_destroy( Menu );
  989.    
  990.     return PLUGIN_HANDLED;
  991. }
  992.    
  993. /* Add and Remove points publics */
  994.  
  995. public CmdAddPoints( client )
  996. {
  997.     if ( !( get_user_flags( client ) & CmdAccess ) )    return console_print( client, "You have no access to this command." );
  998.    
  999.     new g_Target[ 32 ], Amount[ 21 ];
  1000.    
  1001.     read_argv( 1, g_Target, charsmax( g_Target ) );
  1002.    
  1003.     read_argv( 2, Amount, charsmax( Amount ) );
  1004.  
  1005.     new g_Player = cmd_target( client, g_Target, 8 );
  1006.    
  1007.     if ( !g_Player )    return console_print( client, "Player was not found!" );
  1008.    
  1009.     if ( !str_to_num( Amount ) )    return console_print( client, "You need to type only valid numbers!" );
  1010.  
  1011.     static szName[ 32 ], szName2[ 32 ];
  1012.    
  1013.     static szAuthid[ 32 ], szAuthid2[ 32 ];
  1014.    
  1015.     get_user_name( client, szName, sizeof (szName) - 1 );
  1016.    
  1017.     get_user_name( g_Player, szName2, sizeof (szName2) - 1 );
  1018.    
  1019.     get_user_authid( client, szAuthid, sizeof (szAuthid) - 1);
  1020.    
  1021.     get_user_authid( g_Player, szAuthid2, sizeof (szAuthid2) - 1);
  1022.    
  1023.     new g_Amount = str_to_num( Amount );
  1024.    
  1025.     if ( g_Amount <= 0 )    return console_print( client, "You must type a number that is bigger than 0" );
  1026.    
  1027.    
  1028.     log_amx( "%s ( %s ) Added %d Points to %s ( %s )", szName, szAuthid, g_Amount, szName2, szAuthid2 );
  1029.    
  1030.     switch ( get_cvar_num( "amx_show_activity" ) )
  1031.     {
  1032.         case 1: ColorPrint( 0, "^3ADMIN:^3 Added^4 %d^3 Points^1 to^4 %s^1.", g_Amount, szName2 );
  1033.        
  1034.         case 2: ColorPrint( 0, "^3ADMIN:^4 %s^3 Added^4 %d^3 Points^1 to^4 %s^1.", szName, g_Amount, szName2 );
  1035.     }
  1036.    
  1037.     g_Points[ g_Player ] += g_Amount;
  1038.    
  1039.     if ( g_Points[ g_Player ] < 0 ) g_Points[ g_Player ] = 0;
  1040.    
  1041.     Save( client );
  1042.  
  1043.     return PLUGIN_HANDLED;
  1044. }
  1045.  
  1046. public CmdRemovePoints( client )
  1047. {
  1048.     if ( !( get_user_flags( client ) & CmdAccess ) )    return console_print( client, "You have no access to this command." );
  1049.    
  1050.     new g_Target[ 32 ], Amount[ 21 ];
  1051.    
  1052.     read_argv( 1, g_Target, charsmax( g_Target ) );
  1053.    
  1054.     read_argv( 2, Amount, charsmax( Amount ) );
  1055.  
  1056.     new g_Player = cmd_target( client, g_Target, 8 );
  1057.    
  1058.     if ( !g_Player )    return console_print( client, "Player was not found!" );
  1059.    
  1060.     if ( !str_to_num( Amount ) )    return console_print( client, "You need to type only valid numbers!" );
  1061.  
  1062.     static szName[ 32 ], szName2[ 32 ];
  1063.    
  1064.     static szAuthid[ 32 ], szAuthid2[ 32 ];
  1065.    
  1066.     get_user_name( client, szName, sizeof (szName) - 1 );
  1067.    
  1068.     get_user_name( g_Player, szName2, sizeof (szName2) - 1 );
  1069.    
  1070.     get_user_authid( client, szAuthid, sizeof (szAuthid) - 1);
  1071.    
  1072.     get_user_authid( g_Player, szAuthid2, sizeof (szAuthid2) - 1);
  1073.    
  1074.     new g_Amount = str_to_num( Amount );
  1075.    
  1076.     if ( g_Amount <= 0 )    return console_print( client, "You must type a number that is bigger than 0" );
  1077.    
  1078.    
  1079.     log_amx( "%s ( %s ) Removed %d Points to %s ( %s )", szName, szAuthid, g_Amount, szName2, szAuthid2 );
  1080.    
  1081.     switch ( get_cvar_num( "amx_show_activity" ) )
  1082.     {
  1083.         case 1: ColorPrint( 0, "^3ADMIN:^3 Removed^4 %d^3 Points^1 to^4 %s^1.", g_Amount, szName2 );
  1084.        
  1085.         case 2: ColorPrint( 0, "^3ADMIN:^4 %s^3 Removed^4 %d^3 Points^1 to^4 %s^1.", szName, g_Amount, szName2 );
  1086.     }
  1087.    
  1088.     g_Points[ g_Player ] -= g_Amount;
  1089.    
  1090.     if ( g_Points[ g_Player ] < 0 ) g_Points[ g_Player ] = 0;
  1091.    
  1092.     Save( client );
  1093.  
  1094.     return PLUGIN_HANDLED;
  1095. }
  1096. /* Events and Forwards */
  1097. public evCurWeapon( client )
  1098. {
  1099.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1100.    
  1101.     if ( g_Speed[ client ] )        set_user_maxspeed( client, MaxSpeed[ client ] * 2 );
  1102.    
  1103.     if ( g_Gravity[ client ] )  set_user_gravity( client, 0.6 );
  1104.    
  1105.     return PLUGIN_HANDLED;
  1106. }
  1107.  
  1108. public evDeathMsg( )
  1109. {
  1110.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1111.    
  1112.     new Killer  = read_data( 1 );
  1113.     new Victim  = read_data( 2 );
  1114.    
  1115.     if ( Killer == Victim ) return ColorPrint( Victim, "You lost^3 %d^4 Points^1 for committing a suicide.", get_pcvar_num( pCvar[ suicide ] ) );
  1116.    
  1117.     if ( !is_user_alive( Killer ) || is_user_alive( Victim ) || !is_user_connected( Killer ) || !is_user_connected( Victim ) )
  1118.         return PLUGIN_HANDLED;
  1119.        
  1120.     if ( cs_get_user_team( Killer ) == CS_TEAM_T || cs_get_user_team( Victim ) == CS_TEAM_CT )
  1121.     {
  1122.         ColorPrint( Killer, "You recieved^3 %d^4 Points^1.", get_pcvar_num( pCvar[ tkill ] ) );
  1123.        
  1124.         g_Points[ Killer ] += get_pcvar_num( pCvar[ tkill ] );
  1125.     }
  1126.    
  1127.     if ( cs_get_user_team( Killer ) == CS_TEAM_CT || cs_get_user_team( Victim ) == CS_TEAM_T )
  1128.     {
  1129.         if ( get_pcvar_num( pCvar[ kill ] ) == 0 )
  1130.         {
  1131.             new szPlayers[ 32 ], PNum;
  1132.            
  1133.             get_players( szPlayers, PNum, "c" );
  1134.            
  1135.             g_Points[ Killer ] += PNum;
  1136.            
  1137.             ColorPrint( Killer, "You recieved^3 %d^4 Points^1.", PNum );
  1138.         }
  1139.         else
  1140.         {
  1141.             ColorPrint( Killer, "You recieved^3 %d^4 Points^1.", get_pcvar_num( pCvar[ kill ] ) );
  1142.            
  1143.             g_Points[ Killer ] += get_pcvar_num( pCvar[ kill ] );
  1144.         }
  1145.            
  1146.     }
  1147.    
  1148.     return PLUGIN_HANDLED;
  1149. }
  1150.  
  1151. public fwClientSpawn( client )
  1152. {
  1153.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1154.    
  1155.     show_menu( client, 0, "^n", 1 );
  1156.    
  1157.     RemoveGodmode( client );
  1158.    
  1159.     RemoveSpeed( client );
  1160.    
  1161.     RemoveGravity( client );
  1162.    
  1163.     set_user_rendering( client, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0 );
  1164.    
  1165.     set_user_footsteps( client, 1 );
  1166.    
  1167.     return PLUGIN_HANDLED;
  1168. }
  1169.  
  1170. /* Save & Load & Client Stuff */
  1171.  
  1172. public Save( client )
  1173. {
  1174.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1175.    
  1176.     new szSave[ 35 ], szKey[ 40 ], szPoints[ 7 ];
  1177.    
  1178.     switch ( get_pcvar_num( pCvar[ Savetype ] ) )
  1179.     {
  1180.         case 0:     get_user_name( client, szSave, charsmax( szSave ) );
  1181.        
  1182.         case 1:     get_user_ip( client, szSave, charsmax( szSave ) );
  1183.        
  1184.         default:    get_user_authid( client, szSave, charsmax( szSave ) );
  1185.     }
  1186.    
  1187.     formatex( szKey, charsmax( szKey ), "%sCASH", szSave );
  1188.    
  1189.     formatex( szPoints , charsmax( szPoints ) , "%d" , g_Points[ client ] );
  1190.    
  1191.     nvault_set( g_Vault , szKey , szPoints );
  1192.    
  1193.     return PLUGIN_HANDLED;
  1194. }
  1195.  
  1196. public Load( client )
  1197. {
  1198.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1199.    
  1200.     new szSave[ 35 ], szKey[ 40 ];
  1201.    
  1202.     switch ( get_pcvar_num( pCvar[ Savetype ] ) )
  1203.     {
  1204.         case 0:     get_user_name( client, szSave, charsmax( szSave ) );
  1205.        
  1206.         case 1:     get_user_ip( client, szSave, charsmax( szSave ) );
  1207.        
  1208.         default:    get_user_authid( client, szSave, charsmax( szSave ) );
  1209.     }
  1210.    
  1211.     formatex( szKey , charsmax( szKey ) , "%sCASH" , szSave )
  1212.     ;
  1213.     new iPoints = nvault_get( g_Vault , szKey );
  1214.    
  1215.     if ( iPoints )
  1216.     {
  1217.         g_Points[ client ] = iPoints;
  1218.         nvault_remove( g_Vault , szKey );
  1219.     }
  1220.    
  1221.     return PLUGIN_HANDLED;
  1222. }
  1223.  
  1224. public client_putinserver( client )
  1225. {
  1226.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1227.    
  1228.     Load( client );
  1229.    
  1230.     if ( g_Points[ client ] > 10000 )   g_Points[ client ] = 10000;
  1231.    
  1232.     return PLUGIN_CONTINUE;
  1233. }
  1234.  
  1235. public client_disconnect( client )
  1236. {
  1237.     if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1238.    
  1239.     if ( g_Points[ client ] > 10000 )   g_Points[ client ] = 10000;
  1240.    
  1241.     Save( client );
  1242.    
  1243.     return PLUGIN_CONTINUE;
  1244. }
  1245.    
  1246.    
  1247. public CmdSay( client )
  1248. {
  1249.     new szMsg[ 192 ], Arg[ 38 ], Arg2[ 38 ], Arg3[ 38 ], szName[ 2 ][ 32 ];
  1250.    
  1251.     read_argv( 1, szMsg, charsmax( szMsg ) );
  1252.    
  1253.     parse( szMsg, Arg, charsmax( Arg ), Arg2, charsmax( Arg2 ) , Arg3, charsmax( Arg3 ) );
  1254.    
  1255.     get_user_name( client, szName[ 0 ], sizeof (szName[ ]) - 1 );
  1256.    
  1257.     if ( equal( szMsg, "/shop" ) )  return CmdHandle( client );
  1258.    
  1259.     if( equal( Arg, "/points" ) )
  1260.     {
  1261.         if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1262.        
  1263.         new g_Target = cmd_target( client, Arg2, 8 );
  1264.        
  1265.         get_user_name( g_Target, szName[ 1 ], sizeof (szName[ ]) - 1 );
  1266.        
  1267.         if ( equali( szMsg, "/points" ) )   return ColorPrint( client, "^4%s^1 have^3 %d^4 Points^1.", szName[ 0 ], g_Points[ client ] );
  1268.        
  1269.         if( !g_Target ) return ColorPrint( client, "Player ^3(^4%s^3)^1 was not found!", Arg2 );
  1270.        
  1271.         return ColorPrint( client, "^4%s^1 have^3 %d^4 Points^1.", szName[ 1 ], g_Points[ g_Target ] );
  1272.     }
  1273.    
  1274.     if( equal( Arg, "/gamble" ) )
  1275.     {
  1276.         if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1277.        
  1278.         if( !is_str_num( Arg2 ) )   return ColorPrint( client, "Syntax: /^4gamble^1 <^4amount^1>" );
  1279.        
  1280.         new g_Amount = str_to_num( Arg2 );
  1281.  
  1282.         if ( g_Amount < 1 ) return ColorPrint( client, "The minimum amount to gamble on is^3 1^4 Points^1." );
  1283.        
  1284.         if ( g_Amount > 50 )    return ColorPrint( client, "The maximum amount to gamble on is^3 50^4 Points^1." );
  1285.        
  1286.         if ( g_Amount >= 10000 )    return ColorPrint( client, "You have the maximum amount of^4 Points^3 Allowed^1." );
  1287.        
  1288.         if ( g_Amount > g_Points[ client ] )    return ColorPrint( client, "You don't have this amount of^4 Points^1." );
  1289.        
  1290.         switch( random_num( 1, 100 ) )
  1291.         {
  1292.             case 1..50:
  1293.             {
  1294.                 ColorPrint( 0, "^4%s^1 just gambled on^3 %d^4 Points^1 and^4 Won!", szName[ 0 ], g_Amount );
  1295.                
  1296.                 g_Points[ client ] += g_Amount;
  1297.             }
  1298.            
  1299.             case 51..100:
  1300.             {
  1301.                 ColorPrint( 0, "^4%s^1 just gambled on^3 %d^4 Points^1 and^4 Lost!", szName[ 0 ], g_Amount );
  1302.                
  1303.                 g_Points[ client ] -= g_Amount;
  1304.             }
  1305.         }
  1306.        
  1307.         Save( client );
  1308.        
  1309.         return PLUGIN_HANDLED;
  1310.        
  1311.     }
  1312.     if( equal( Arg, "/send" ) )
  1313.     {
  1314.         if ( get_pcvar_num( pCvar[ OnOff ] ) == 0 ) return PLUGIN_HANDLED;
  1315.    
  1316.         new g_Target = cmd_target( client, Arg2, 8 );
  1317.        
  1318.         if ( equali( szMsg, "/send" ) ) return ColorPrint( client, "Syntax: /^4send^1 <^4name^1> <^4amount^1>" );
  1319.        
  1320.         if( !g_Target ) return ColorPrint( client, "Player ^3(^4%s^3)^1 was not found!", Arg2 );
  1321.        
  1322.         if ( client == g_Target )   return ColorPrint( client, "You canno't^4 send^3 points^1 to yourself!" );
  1323.        
  1324.         if( !is_str_num( Arg3 ) )   return ColorPrint( client, "You must type^4 valid numbers^1." );
  1325.        
  1326.         new g_Amount = str_to_num( Arg3 );
  1327.        
  1328.         if( g_Amount < 1 )  return ColorPrint( client, "The minimum amount to send on is^3 1^4 Points^1." );
  1329.        
  1330.         if ( g_Amount > g_Points[ client ] )    return ColorPrint( client, "You don't have this amount of^4 Points^1." );
  1331.        
  1332.         get_user_name( g_Target, szName[ 1 ], sizeof (szName[ ]) - 1 );
  1333.        
  1334.         ColorPrint( 0, "^4%s^1 sent^3 %d^4 Points^1 to^3 %s^1.", szName[ 0 ], g_Amount, szName[ 1 ] );
  1335.        
  1336.         g_Points[ client ] -= g_Amount;
  1337.        
  1338.         g_Points[ g_Target ] += g_Amount;
  1339.        
  1340.         Save( client );
  1341.        
  1342.         Save( g_Target );
  1343.        
  1344.         return PLUGIN_HANDLED;
  1345.     }
  1346.    
  1347.     return PLUGIN_CONTINUE;
  1348. }
  1349. /* Stocks And Make File */
  1350. stock ColorPrint( const client, const string[], any:... )
  1351. {
  1352.     new msg[ 191 ], players[ 32 ], count = 1, g_Prefix[ 10 ];
  1353.    
  1354.     get_pcvar_string( pCvar[ Prefix ], g_Prefix, charsmax( g_Prefix ) );
  1355.    
  1356.     static len; len = formatex( msg, charsmax( msg ), "^1[^4 %s ^1] ", g_Prefix );
  1357.    
  1358.     vformat( msg[ len ], charsmax( msg ) - len, string, 3 );
  1359.    
  1360.     if( client )  players[ 0 ] = client;
  1361.    
  1362.     else    get_players( players,count,"ch" );
  1363.    
  1364.     for ( new i = 0; i < count; i++ )
  1365.     {
  1366.         if( is_user_connected( players[ i ] ) )
  1367.         {
  1368.             message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] );
  1369.            
  1370.             write_byte( players[ i ] );
  1371.            
  1372.             write_string( msg );
  1373.            
  1374.             message_end( );
  1375.         }
  1376.     }
  1377.    
  1378.     return PLUGIN_HANDLED;
  1379. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement