Advertisement
Guest User

HyunasHnrWithMyScoutSystem

a guest
Aug 1st, 2014
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 105.38 KB | None | 0 0
  1.    With Scout System
  2.  #include <amxmodx>
  3.     #include <amxmisc>
  4.     #include <cstrike>
  5.     #include <engine>
  6.     #include <hamsandwich>
  7.     #include <fakemeta_util>
  8.     #include <fvault>
  9.     #include <dhudmessage>
  10.     #include <vault>  
  11.      
  12.     // Because I like semicolons =P
  13.     #pragma semicolon 1
  14.      
  15.     // To evoid AMX_ERR_STACKERR, AMX_ERR_STACKLOW and AMX_ERR_HEAPLOW debug errors
  16.     #pragma dynamic 32768
  17.    
  18.     #pragma tabsize 0
  19.      
  20.     #define is_valid_player(%1) (1 <= %1 <= 32)
  21.      
  22.     // Plugin version
  23.     #define PLUGIN_VERSION "1.0"
  24.      
  25.     // HitAndRun stuff taskids
  26.     #define COUNTDOWN_TASKID 1336
  27.     #define TIMER_TASKID 1337
  28.     #define SOUNDS_TASKID 1338
  29.     #define GAMESTART_TASKID 1339
  30.      
  31.     // Max win sounds
  32.     #define MAX_WIN_SOUNDS 6
  33.      
  34.     // Max infecte sounds
  35.     #define MAX_INFECTE_SOUNDS 3
  36.      
  37.     // Max levels that allowed
  38.     #define MAX_LEVELS 21
  39.      
  40.     // Counter-Strike money offset
  41.     #define OFFSET_CSMONEY 115
  42.      
  43.     // HeGrenade damage bit
  44.     #define DMG_HEGRENADE  (1<<24)
  45.      
  46.      
  47.     /* make_user_statusicon(index, const spr[], r = 0, g = 255, b = 255, status = STATUSICON_ON) */
  48.     #define STATUSICON_OFF 0
  49.     #define STATUSICON_ON 1
  50.     #define STATUSICON_FLASH 2
  51.      
  52.     /* Fog Settings */
  53.     #define FOG_OFF 0
  54.     #define FOG_LOW 3
  55.     #define FOG_NORMAL 5
  56.     #define FOG_HIGH 7
  57.     #define FOG_MAX 9
  58.      
  59.      
  60.     new infected = 0, bool:GameStarted = false;
  61.     new bool:g_lasttwo = false;
  62.     new Float:g_timer;
  63.      
  64.     new smoke, light, WinnerBeamspr;
  65.     new g_winner;
  66.     new g_lasthit = 0;
  67.     new g_maxplayers;
  68.     new HnrSync;
  69.     new cd;
  70.      
  71.     new g_rounds[33],g_totalrounds[33],g_wins[33],g_totalwins[33];
  72.      
  73.     new xps[MAX_LEVELS] []  = {
  74.             "10",
  75.             "20",
  76.             "40",
  77.             "80",
  78.             "160",
  79.             "320",
  80.             "640",
  81.             "840",
  82.             "1000",
  83.             "1500",
  84.             "2200",
  85.             "3000",
  86.             "4000",
  87.             "7000",
  88.             "11000",
  89.             "20000",
  90.             "32000",
  91.             "44000",
  92.             "58000",
  93.             "80000",
  94.             "100000"
  95.     };
  96.      
  97.     new playerxp[33],playerlevel[33];
  98.     new playercash[33];
  99.      
  100.     enum _:Events
  101.     {
  102.             EVENT_NONE,
  103.             EVENT_GRAVITY,
  104.             EVENT_KNIFE,
  105.             EVENT_NOZOOM,
  106.             EVENT_AWP,
  107.             EVENT_FOG
  108.     };
  109.      
  110.     enum _:Cvars
  111.     {
  112.             ENABLED,
  113.             NOSLOWDOWN,
  114.             NOZOOM,
  115.             SCOUTDROP,
  116.             BLOCKKILL,
  117.             CASHSYS,
  118.             ROUNDSYS,
  119.             SENDSYS,
  120.             GAMBLESYS,
  121.             LEVELSYS
  122.     };
  123.      
  124.     enum _:WepTemp
  125.     {
  126.             NAME[32],
  127.             CLASS[32],
  128.             COST,
  129.             CSW,
  130.             BULLETS
  131.     };
  132.      
  133.     /* Name | Class | Cost | CSW Code | Bullets */
  134.     new szPriWeapons [] [WepTemp] = {
  135.             { "M4A1", "weapon_m4a1", 50, CSW_M4A1, 2 },
  136.             { "MP5", "weapon_mp5navy", 60, CSW_MP5NAVY, 5 },
  137.             { "M3", "weapon_m3", 70, CSW_M3, 6 }
  138.     };
  139.      
  140.     /* Name | Class | Cost | CSW Code | - */
  141.     new szGrenades [3] [WepTemp] = {
  142.             { "HE Grenade", "weapon_hegrenade", 20, CSW_HEGRENADE },
  143.             { "Flash Grenade", "weapon_flashbang", 15, CSW_FLASHBANG },
  144.             { "Freeze Grenade", "weapon_smokegrenade", 20, CSW_SMOKEGRENADE }
  145.     };
  146.      
  147.     /* - | - | Cost | - | Bullets */
  148.     new szExtraAmmo [] [WepTemp] = {
  149.             { "", "", 30, 0, 5 },
  150.             { "", "", 70, 0, 15 },
  151.             { "", "", 130, 0, 30 }
  152.     };
  153.      
  154.     enum _:Powers
  155.     {
  156.             SPEED,
  157.             INVISIBILITY,
  158.             GRAVITY,
  159.             NOHEGRENADE,
  160.             NOFLASH
  161.     };
  162.      
  163.     enum _:PwrTemp
  164.     {
  165.             PWR_NAME[64],
  166.             PWR_TIME[16],
  167.             PWR_COST
  168.     };
  169.      
  170.     /* Name | Time | Cost */
  171.     new szPwrs [Powers] [PwrTemp] = {
  172.             { "Speed" ,"1 Round", 100 },
  173.             { "Invisibility" ,"10 Seconds", 130 },
  174.             { "Gravity", "1 Round", 130 },
  175.             { "No He Grenade Infection", "1 Round" , 150 },
  176.             { "No Flash", "1 Round", 170 }
  177.     };
  178.      
  179.     new GambleNums [] = {
  180.             50,
  181.             100,
  182.             200,
  183.             400,
  184.             800,
  185.             1600,
  186.             3200,
  187.             6400,
  188.             12800,
  189.             25600,
  190.             51200,
  191.             102400
  192.     };
  193.      
  194.     new g_GambleChoose[33];
  195.      
  196.     new const g_eventname[Events][] = {
  197.             "",
  198.             "Gravity Event",
  199.             "Knife Event",
  200.             "NoZoom Event",
  201.             "Awp Event",
  202.             "Fog Event"
  203.     };
  204.      
  205.     new g_event = 0;
  206.     new g_round = 0;
  207.     new bool:EventStarted = false;
  208.     new bool:fn = true;
  209.      
  210.     new bool:g_powers[33][Powers];
  211.      
  212.     new g_cvars[Cvars];
  213.      
  214.     new const g_szVault[] = "HitAndRun";
  215.      
  216.     new const g_winsounds [MAX_WIN_SOUNDS] [] = {
  217.             "HyuNaS_HNR/winsound1.mp3",
  218.             "HyuNaS_HNR/winsound2.mp3",
  219.             "HyuNaS_HNR/winsound3.mp3",
  220.             "HyuNaS_HNR/winsound4.mp3",
  221.             "HyuNaS_HNR/winsound5.mp3",
  222.             "HyuNaS_HNR/winsound6.mp3"
  223.     };
  224.      
  225.     new const g_infectesounds [MAX_INFECTE_SOUNDS] [] = {
  226.             "HyuNaS_HNR/infected1.wav",
  227.             "HyuNaS_HNR/infected2.wav",
  228.             "HyuNaS_HNR/infected3.wav"
  229.     };
  230.      
  231.     new fwd_win,fwd_infected,fwd_event,fwd_return;
  232.      
  233.     new g_msgScreenFade;
  234.      
  235.      // NEW SCOUT
  236.          new iLevel[33];
  237.     new iXp[33];
  238.      
  239.     new scout_on;
  240.      
  241.     new MaxLevel;
  242.     new StartedLevel;
  243.     new g_msgSayText;
  244.      
  245.     new cvar_KillXp;
  246.     new cvar_HsXp;
  247.     new cvar_ScoutXp;
  248.      
  249.     new Forward_spawn;
  250.     new Forward_levelup;
  251.     new ForwardReturn;
  252.      
  253.     const MAX_SCOUTS = 12
  254.    
  255.     new const g_scoutNames[MAX_SCOUTS][32] =
  256.     {
  257.     "Normal Scout",
  258.     "yellow Scout",
  259.     "steyr scout",
  260.     "sig sauer sg3000 scout",
  261.     "safari scout",
  262.     "pharaoh scout",
  263.     "komando steyrscout scout",
  264.     "default scout reskin gtwalq",
  265.     "crossbow scout",
  266.     "blue scout",
  267.     "badass m24 scout",
  268.     "ak scout"
  269.     };
  270.    
  271.         new const g_scoutLevels[MAX_SCOUTS] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }
  272.      
  273.     new const g_scoutvModels[MAX_SCOUTS][256] =
  274.     {
  275.     "models/v_scout.mdl",
  276.     "models/lolscouthnr/v_scout_yellow.mdl",
  277.     "models/lolscouthnr/v_scout_steyr.mdl",
  278.     "models/lolscouthnr/v_scout_sg3000.mdl",
  279.     "models/lolscouthnr/v_scout_safari.mdl",
  280.     "models/lolscouthnr/v_scout_pharaoh.mdl",
  281.     "models/lolscouthnr/v_scout_komando.mdl",
  282.     "models/lolscouthnr/v_scout_default.mdl",
  283.     "models/lolscouthnr/v_scout_crossbow.mdl",
  284.     "models/lolscouthnr/v_scout_blue.mdl",
  285.     "models/lolscouthnr/v_scout_badass.mdl",
  286.     "models/lolscouthnr/v_scout_ak.mdl"
  287.     }
  288.    
  289.         native register_maxlevels( maxlevel = 99, started_xp_level = 100 );
  290.     native get_user_level( index );
  291.     native get_user_xp( index );
  292.    
  293.     public plugin_init(){
  294.             register_plugin("HyuNaS HitAndRun & Scouts",PLUGIN_VERSION,"Hyuna & /A/ & SerMajor"); // /A/ & SerMajor for scout system
  295.            
  296.             ///////////////////////
  297.             /// Client Commands ///
  298.             ///////////////////////
  299.            
  300.             register_clcmd("jointeam","cmd_block");
  301.             register_clcmd("chooseteam","cmd_block");
  302.            
  303.             register_clcmd("say","HandleSay");
  304.             register_clcmd("say_team","HandleSay");
  305.            
  306.             register_clcmd("radio1","ActionShop");
  307.             register_clcmd("radio2","ActionShop");
  308.             register_clcmd("radio3","ActionShop");
  309.      
  310.             //////////////////
  311.             /// Log Events ///
  312.             //////////////////
  313.            
  314.             register_logevent("Event_RoundStart",2,"1=Round_Start");
  315.             register_logevent("Event_RoundEnd",2,"1=Round_End");
  316.            
  317.            
  318.             //////////////
  319.             /// Events ///
  320.             //////////////
  321.            
  322.             register_event("TextMsg","Event_RoundEnd","a","2&#Game_C","2&#Game_w");
  323.             register_event("ResetHUD","Event_ResetHUD","b");
  324.             register_event("HideWeapon","Event_HideWeapon","b");
  325.             register_event("CurWeapon","Event_CurWeapon","be","1=1");
  326.             register_event("ScreenFade", "Event_Flash","be","4=255","5=255","6=255","7>199");
  327.            
  328.            
  329.             ////////////////
  330.             /// CVARS!!! ///
  331.             ////////////////
  332.            
  333.             register_cvar("amx_hnr_version",PLUGIN_VERSION,FCVAR_SERVER | FCVAR_SPONLY);
  334.            
  335.             g_cvars[ENABLED] = register_cvar("amx_hnr_enabled","1",FCVAR_SERVER);
  336.             g_cvars[NOSLOWDOWN] = register_cvar("amx_hnr_noslowdown","1");
  337.             g_cvars[NOZOOM] = register_cvar("amx_hnr_nozoom","0");
  338.             g_cvars[SCOUTDROP] = register_cvar("amx_hnr_noscoutdrop","1");
  339.             g_cvars[BLOCKKILL] = register_cvar("amx_hnr_blockkill","1");
  340.            
  341.             g_cvars[CASHSYS] = register_cvar("amx_hnr_cashsys","1");
  342.             g_cvars[ROUNDSYS] = register_cvar("amx_hnr_roundsys","1");
  343.             g_cvars[SENDSYS] = register_cvar("amx_hnr_sendsys","1");
  344.             g_cvars[GAMBLESYS] = register_cvar("amx_hnr_gamblesys","1");
  345.             g_cvars[LEVELSYS] = register_cvar("amx_hnr_levelsys","1");
  346.            
  347.            
  348.             /////////////////
  349.             /// Ham Stuff ///
  350.             /////////////////
  351.            
  352.             RegisterHam(Ham_Killed,"player","fw_HamPlayerKilled",1);
  353.             RegisterHam(Ham_TakeDamage,"player","fw_HamTakeDamage");
  354.             RegisterHam(Ham_Spawn,"player","fw_HamPlayerSpawn",1);
  355.             RegisterHam(Ham_Player_Jump,"player","fw_HamPlayerJump");
  356.            
  357.             RegisterHam(Ham_Weapon_SecondaryAttack,"weapon_scout","fw_ScoutOnZoomOn");
  358.             RegisterHam(Ham_CS_Item_CanDrop,"weapon_scout","fw_ScoutCanDrop");
  359.            
  360.            
  361.             ////////////////
  362.             /// Messages ///
  363.             ////////////////
  364.            
  365.             register_message(get_user_msgid("StatusIcon"),"msgStatusIcon");
  366.             register_message(get_user_msgid("Money"),"MessageMoney");
  367.             register_message(get_user_msgid("HideWeapon"),"MessageHideWeapon");
  368.            
  369.            
  370.             ///////////////////
  371.             /// Forwards!!! ///
  372.             ///////////////////
  373.            
  374.             fwd_win = CreateMultiForward("hnr_client_won",ET_IGNORE,FP_CELL);
  375.             fwd_infected = CreateMultiForward("hnr_client_infected",ET_IGNORE,FP_CELL);
  376.             fwd_event = CreateMultiForward("hnr_event_started",ET_IGNORE,FP_CELL);
  377.            
  378.             register_forward(FM_GetGameDescription,"fw_GetGameDescription");
  379.             register_forward(FM_ClientKill,"fw_ClientKill");
  380.            
  381.             set_task(30.0,"Adv_message",.flags="b");
  382.            
  383.             g_maxplayers = get_maxplayers();
  384.            
  385.             g_msgScreenFade = get_user_msgid("ScreenFade");
  386.            
  387.             HnrSync = CreateHudSyncObj();
  388.        
  389.        
  390.        
  391.         // scout
  392.         // register max levels 13 is the top level, 100 is the started level xp.
  393.         register_maxlevels( 13, 100 );
  394.          
  395.         //Admin commands
  396.          
  397.         register_concmd("scout_givexp" ,"givexp",ADMIN_RCON,"Add xp to a player")
  398.         register_concmd("scout_takexp", "takexp",ADMIN_RCON,"Remove xp from a player");
  399.          
  400.         //Clcmd's
  401.          
  402.         scout_on = register_cvar( "Scout_skins", "1" )
  403.          
  404.         register_clcmd("say","HandleSay");  
  405.         register_clcmd("say_team","HandleSay")
  406.         register_clcmd("say /scout", "ScoutSkinsMenu");
  407.         register_clcmd("say /level", "PlayerLevelsMenu");
  408.    
  409.     //logevent
  410.     register_logevent("round_end", 2, "1=Round_End")  
  411.          
  412.         //Event's
  413.          
  414.         register_event("CurWeapon","CurWeapon","be","1=1");
  415.         register_event( "DeathMsg", "EventDeathMsg", "a" );
  416.          
  417.         //Cvar's
  418.          
  419.         cvar_KillXp = register_cvar( "kill_xp", "5" );
  420.         cvar_HsXp = register_cvar( "hs_xp", "2" );
  421.         cvar_ScoutXp = register_cvar( "Scout_xp", "3" );
  422.          
  423.         //Ham's
  424.          
  425.         RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawn", 1 );
  426.         RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  427.          
  428.         //Forward's
  429.          
  430.         Forward_levelup = CreateMultiForward( "forward_client_levelup", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL );
  431.         Forward_spawn = CreateMultiForward( "forward_client_spawn", ET_IGNORE, FP_CELL , FP_CELL, FP_CELL );
  432.          
  433.         set_task(15.0, "scoutmessage", 0, _, _, "b")
  434.         set_task(35.0, "Levelmessage", 0, _, _, "b")
  435.        
  436.         g_msgSayText = get_user_msgid("SayText");
  437.     }
  438.      
  439.     public plugin_cfg(){
  440.             if (!cstrike_running())
  441.                     set_fail_state("Supports only Counter-Strike!");
  442.                    
  443.             RemoveEntityAll("func_bomb_target");
  444.             RemoveEntityAll("info_bomb_target");
  445.            
  446.             if (is_plugin_loaded("FrostNades") == -1)
  447.             {
  448.                     fn = false;
  449.                     log_amx("DEBUG: Frostnade plugin not found!");
  450.             }
  451.            
  452.             set_cvar_num("mp_flashlight",0);
  453.             set_cvar_num("mp_roundtime",9);
  454.             set_cvar_num("sv_airaccelerate",100);
  455.             set_cvar_num("mp_freezetime",0);
  456.             set_cvar_num("mp_limitteams",0);
  457.             set_cvar_num("mp_autoteambalance",0);
  458.            
  459.             if (fn)
  460.             {
  461.                     set_cvar_num("fn_enabled",1);
  462.                     set_cvar_num("fn_hitself",0);
  463.                     set_cvar_num("fn_los",0);
  464.                     set_cvar_num("fn_icon",2);
  465.             }
  466.            
  467.             set_cvar_string("humans_join_team","T");
  468.            
  469.             LoadConfig();
  470.            
  471.             set_task(5.0,"RestartGame");
  472.     }
  473.      
  474.     public LoadConfig(){
  475.             new cfg[256],some[256];
  476.             get_configsdir(some,255);
  477.             formatex(cfg,255,"%s/HitAndRun.cfg",some);
  478.            
  479.             if (!file_exists(cfg))
  480.             {
  481.                     log_amx("DEBUG: HitAndRun config file (%s) not found. Creating...",cfg);
  482.            
  483.                     write_file(cfg,"////////////////////////////////////////////////////////////");
  484.                     formatex(some,255,"/// HyuNas HitAndRun v%s By Hyuna aka NorToN config file ///",PLUGIN_VERSION);
  485.                     write_file(cfg,some);
  486.                     write_file(cfg,"////////////////////////////////////////////////////////////");
  487.                     write_file(cfg,"");
  488.                     write_file(cfg,"");
  489.                     write_file(cfg,"/////////////////////");
  490.                     write_file(cfg,"/// General Cvars ///");
  491.                     write_file(cfg,"/////////////////////");
  492.                     write_file(cfg,"");
  493.                     write_file(cfg,"amx_hnr_enabled 1       // Enable/Disable the plugin. (Defualt: 1)");
  494.                     write_file(cfg,"amx_hnr_noslowdown 1    // Enable/Disable noslowdown after jump. (Defualt: 1)");
  495.                     write_file(cfg,"amx_hnr_nozoom 0        // Enable/Disable nozoom at scout. (Defualt: 0)");
  496.                     write_file(cfg,"amx_hnr_noscoutdrop 1   // Enable/Disable blocking scout from dropping. (Defualt: 1)");
  497.                     write_file(cfg,"amx_hnr_blockkill 1     // Enable/Disable blocking from client killing himself. (Defualt: 1)");
  498.                     write_file(cfg,"");
  499.                     write_file(cfg,"/////////////////////");
  500.                     write_file(cfg,"/// Systems Cvars ///");
  501.                     write_file(cfg,"/////////////////////");
  502.                     write_file(cfg,"amx_hnr_cashsys 1       // Enable/Disable Cash (aka Money aka Points) System. (Defualt: 1)");
  503.                     write_file(cfg,"amx_hnr_roundsys 1      // Enable/Disable Round & Wins Count System. (Defualt: 1)");
  504.                     write_file(cfg,"amx_hnr_sendsys 1       // Enable/Disable Send System. (Defualt: 1)");
  505.                     write_file(cfg,"amx_hnr_gamblesys 1     // Enable/Disable Gamble System. (Defualt: 1)");
  506.                     write_file(cfg,"amx_hnr_levelsys 1      // Enable/Disable Level System. (Defualt: 1)");
  507.                    
  508.                     log_amx("DEBUG: HitAndRun config file (%s) was succesfully created.",cfg);
  509.             }
  510.            
  511.             server_cmd("exec %s",cfg);
  512.             server_exec();
  513.            
  514.             log_amx("DEBUG: HitAndRun config file (%s) was succesfully executed.",cfg);
  515.     }
  516.      
  517.     public plugin_precache(){
  518.      // scout
  519.              precache_model("models/lolscouthnr/v_scout_yellow.mdl")  
  520.         precache_model("models/lolscouthnr/v_scout_steyr.mdl")  
  521.         precache_model("models/lolscouthnr/v_scout_sg3000.mdl")  
  522.         precache_model("models/lolscouthnr/v_scout_safari.mdl")  
  523.         precache_model("models/lolscouthnr/v_scout_pharaoh.mdl")  
  524.         precache_model("models/lolscouthnr/v_scout_komando.mdl")  
  525.         precache_model("models/lolscouthnr/v_scout_default.mdl")  
  526.         precache_model("models/lolscouthnr/v_scout_crossbow.mdl")  
  527.         precache_model("models/lolscouthnr/v_scout_blue.mdl")  
  528.         precache_model("models/lolscouthnr/v_scout_badass.mdl")  
  529.         precache_model("models/lolscouthnr/v_scout_ak.mdl")  
  530.    
  531.    
  532.    
  533.             smoke = precache_model("sprites/steam1.spr");
  534.             light = precache_model("sprites/lgtning.spr");
  535.             WinnerBeamspr = precache_model("sprites/zbeam2.spr");
  536.            
  537.             precache_sound("ambience/thunder_clap.wav");
  538.            
  539.             precache_sound("HyuNaS_HNR/loser.wav");
  540.            
  541.             precache_sound("HyuNaS_HNR/alarm-thriller.mp3");
  542.             precache_sound("HyuNaS_HNR/Clock.mp3");
  543.            
  544.             precache_model("models/player/Adv-Sick/Adv-Sick.mdl");
  545.            
  546.             for (new i = 0; i <= MAX_WIN_SOUNDS - 1; i++)
  547.                     precache_sound(g_winsounds[i]);
  548.                    
  549.             for (new j = 0; j <= MAX_INFECTE_SOUNDS - 1; j++)
  550.                     precache_sound(g_infectesounds[j]);
  551.     }
  552.      
  553.     ///////////////////
  554.     /// API Support ///
  555.     ///////////////////
  556.      
  557.     public plugin_natives(){
  558.             register_library("HitAndRun"); // API libarary support
  559.            
  560.             register_native("hnr_get_infected","_hnr_get_infected");
  561.             register_native("hnr_get_lasthit","_hnr_get_lasthit");
  562.             register_native("hnr_get_winner","_hnr_get_winner");
  563.            
  564.             register_native("hnr_started","_hnr_started");
  565.             register_native("hnr_get_event","_hnr_get_event");
  566.            
  567.             register_native("hnr_get_user_rounds","_hnr_get_user_rounds");
  568.            
  569.             register_native("hnr_get_user_xp","_hnr_get_user_xp");
  570.            
  571.             register_native("hnr_get_user_level","_hnr_get_user_level");
  572.            
  573.             register_native("hnr_get_user_powers","_hnr_get_user_powers");
  574.        
  575.        
  576.         //scout
  577.        
  578.                 register_library( "scout-Skins" );
  579.      
  580.     register_native( "register_maxlevels", "_register_maxlevels" );
  581.     register_native( "get_user_level", "_get_user_level" );
  582.     register_native( "set_user_level", "_set_user_level" );
  583.     register_native( "get_user_xp", "_get_user_xp" );
  584.     register_native( "set_user_xp", "_set_user_xp" );
  585.     }
  586.      
  587.     public _hnr_get_infected(plugin,params){
  588.             return infected;
  589.     }
  590.      
  591.     public _hnr_get_lasthit(plugin,params){
  592.             return g_lasthit;
  593.     }
  594.      
  595.     public _hnr_get_winner(plugin,params){
  596.             return g_winner;
  597.     }
  598.      
  599.     public bool:_hnr_started(plugin,params){
  600.             return bool:GameStarted;
  601.     }
  602.      
  603.     public _hnr_get_event(plugin,params){
  604.             return g_event;
  605.     }
  606.      
  607.     public _hnr_get_user_rounds(plugin,params){
  608.             new client = get_param(1), total = get_param(2);
  609.            
  610.             if (is_user_connected(client))
  611.                     return (total ? (g_rounds[client] + g_totalrounds[client]) : g_rounds[client]);
  612.                    
  613.             log_error(AMX_ERR_NATIVE,"[HitAndRun] Player %i is invaild!",client);
  614.            
  615.             return -1;
  616.     }
  617.      
  618.     public _hnr_get_user_xp(plugin,params){
  619.             new client = get_param(1);
  620.            
  621.             if (is_user_connected(client))
  622.                     return playerxp[client];
  623.                    
  624.             log_error(AMX_ERR_NATIVE,"[HitAndRun] Player %i is invaild!",client);
  625.            
  626.             return -1;
  627.     }
  628.      
  629.     public _hnr_get_user_level(plugin,params){
  630.             new client = get_param(1);
  631.            
  632.             if (is_user_connected(client))
  633.                     return playerlevel[client];
  634.                    
  635.             log_error(AMX_ERR_NATIVE,"[HitAndRun] Player %i is invaild!",client);
  636.            
  637.             return -1;
  638.     }
  639.      
  640.     public _hnr_get_user_powers(plugin,params){
  641.             new client = get_param(1);
  642.             new powers;
  643.            
  644.             if (is_user_connected(client))
  645.             {
  646.                     for (new i = 0; i < Powers; i++)
  647.                             if (g_powers[client][i])
  648.                                     powers |= 1<<i;
  649.                                    
  650.                     return powers;
  651.             }
  652.                    
  653.             log_error(AMX_ERR_NATIVE,"[HitAndRun] Player %i is invaild!",client);
  654.            
  655.             return 0;
  656.     }
  657.      
  658.     ///////////////////
  659.     /// Save & Load ///
  660.     ///////////////////
  661.      
  662.     public client_putinserver(client) LoadData(client);
  663.      
  664.     public client_disconnect(client){
  665.            
  666.             set_task(0.5,"check");
  667.                    
  668.             SaveData(client);
  669.     }
  670.      
  671.     public check(){
  672.             if (get_playersnum() < 2)
  673.             {
  674.                     if (!GameStarted)
  675.                     {
  676.                             remove_task(COUNTDOWN_TASKID);
  677.                             Event_RoundStart();
  678.                     }
  679.                    
  680.                     else
  681.                             RestartGame();
  682.             }
  683.     }
  684.      
  685.     /////////////////////
  686.     /// Some say cmds ///
  687.     /////////////////////
  688.      
  689.     public HandleSay(client){
  690.             new iMsg[200], iArgs[4][60];
  691.             read_argv(1,iMsg ,sizeof iMsg - 1);
  692.             parse(iMsg,iArgs[0],charsmax(iArgs[]),iArgs[1],charsmax(iArgs[]),iArgs[2],charsmax(iArgs[]),iArgs[3],charsmax(iArgs[]));
  693.            
  694.             if (!get_pcvar_num(g_cvars[ENABLED]))
  695.                     return 0;
  696.            
  697.             if(equali(iArgs[0],"/hnrstats"))
  698.             {
  699.                     if (!get_pcvar_num(g_cvars[ROUNDSYS]))
  700.                     {
  701.                             ColorChat(client,"HNR Stats system is disabled!");
  702.                             return 0;
  703.                     }
  704.                            
  705.                     new player = cmd_target(client,iArgs[1],CMDTARGET_NO_BOTS);
  706.                    
  707.                     if (!player)
  708.                     {
  709.                             ColorChat(client,"Rounds Played: ^4%i ^3| ^1 Total Rounds Played: ^4%i",g_rounds[client],g_totalrounds[client]);
  710.                             ColorChat(client,"Wins: ^4%i ^3| ^1Total Wins: ^4%i",g_wins[client],g_totalwins[client]);
  711.                     }
  712.      
  713.                     else
  714.                     {
  715.                             ColorChat(client,"^3%s^1 HNR game status:",get_player_name(player));
  716.                             ColorChat(client,"Rounds Played: ^4%i ^3| ^1 Total Rounds Played: ^4%i",g_rounds[player],g_totalrounds[player]);
  717.                             ColorChat(client,"Wins: ^4%i ^3| ^1Total Wins: ^4%i",g_wins[client],g_totalwins[player]);
  718.                     }
  719.             }
  720.            
  721.             else if (equali(iArgs[0],"/cash"))
  722.             {
  723.                     if (!get_pcvar_num(g_cvars[CASHSYS]))
  724.                     {
  725.                             ColorChat(client,"HNR Cash system is disabled!");
  726.                             return 0;
  727.                     }
  728.                    
  729.                     new player = cmd_target(client,iArgs[1],CMDTARGET_NO_BOTS);
  730.                    
  731.                     if (!player)
  732.                             ColorChat(client,"Your Cash: ^4%i",playercash[client]);
  733.      
  734.                     else
  735.                             ColorChat(client,"^3%s^1 Cash: ^4%i",get_player_name(player),playercash[player]);
  736.             }
  737.            
  738.             else if (equali(iArgs[0],"/shop"))
  739.                     ActionShop(client);
  740.            
  741.             else if (equali(iArgs[0],"/level") || equali(iArgs[0],"/lvl") || equali(iArgs[0],"/xp"))
  742.             {      
  743.                     if (!get_pcvar_num(g_cvars[LEVELSYS]))
  744.                     {
  745.                             ColorChat(client,"HNR Level system is disabled!");
  746.                             return 0;
  747.                     }
  748.                    
  749.                     new player = cmd_target(client,iArgs[1],CMDTARGET_NO_BOTS);
  750.                    
  751.                     if (!player)
  752.                     {
  753.                             ColorChat(client,"Level: ^4%i ^3| ^1Xp: ^4%i ^3| ^1Xp to next level: ^4%i"
  754.                                     ,playerlevel[client]
  755.                                     ,playerxp[client]
  756.                                     ,(playerlevel[client] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[client] + 1]) - playerxp[client])));
  757.                     }
  758.                    
  759.                     else
  760.                     {
  761.                             ColorChat(client,"^3%s^1 Level Status:",get_player_name(player));
  762.                             ColorChat(client,"Level: ^4%i ^3| ^1Xp: ^4%i ^3| ^1Xp to next level: ^4%i"
  763.                                     ,playerlevel[player]
  764.                                     ,playerxp[player]
  765.                                     ,(playerlevel[player] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[player] + 1]) - playerxp [player])));
  766.                     }
  767.             }
  768.            
  769.             else if (equali( iArgs[0],"/send"))
  770.             {
  771.                     if (!get_pcvar_num(g_cvars[SENDSYS]) || !get_pcvar_num(g_cvars[CASHSYS]))
  772.                     {
  773.                             ColorChat(client,"HNR Send/Cash system is disabled!");
  774.                             return 0;
  775.                     }
  776.                            
  777.                     if (equali(iArgs[1],""))
  778.                     {
  779.                             ColorChat(client,"Usage: ^4/send <target> <amount>");
  780.                             return 1;
  781.                     }
  782.                    
  783.                     new player = cmd_target(client,iArgs[1],CMDTARGET_NO_BOTS);
  784.                    
  785.                     if (!player || player == client)
  786.                     {
  787.                             ColorChat(client,"You can't send cash to yourself!");
  788.                             return 1;
  789.                     }
  790.                    
  791.                     if(!is_str_num(iArgs[2]))
  792.                     {
  793.                             ColorChat(client,"You must enter ^3numbers^1!");
  794.                             return 1;
  795.                     }
  796.                    
  797.                     new num = str_to_num(iArgs[2]);
  798.                    
  799.                     if (!check_cash(client,num))
  800.                     {
  801.                             ColorChat(client,"You don't have that amount of cash!");
  802.                             return 1;
  803.                     }
  804.                    
  805.                    
  806.                     playercash[client] -= num;
  807.                     playercash[player] += num;
  808.                    
  809.                     ColorChat(client,"You send ^4%i^3 cash^1 to ^3%s^1.",num,get_player_name(player));
  810.                     ColorChat(player,"^3%s^1 send ^4%i^3 cash^1 to you.",get_player_name(client),num);
  811.                     ColorChat(0,"^3%s^1 send ^4%i^3 cash^1 to ^3%s^1.",get_player_name(client),num,get_player_name(player));
  812.                    
  813.                     return 1;
  814.             }
  815.            
  816.             else if(equali(iArgs[0],"/gamble"))
  817.             {
  818.                    
  819.                     if (!get_pcvar_num(g_cvars[GAMBLESYS]) || !get_pcvar_num(g_cvars[CASHSYS]))
  820.                     {
  821.                             ColorChat(client,"HNR Gamble/Cash system is disabled!");
  822.                             return 0;
  823.                     }
  824.                    
  825.                     if(!is_str_num(iArgs[1]))
  826.                     {
  827.                             ColorChat(client,"You ^3must ^1enter ^1numbers^1!");
  828.                             return 1;
  829.                     }
  830.                    
  831.                     else if(playercash[client] < str_to_num(iArgs[1]))
  832.                     {
  833.                             ColorChat(client,"You ^3don't ^1have enough ^3cash^1!");
  834.                             return 1;
  835.                     }
  836.                    
  837.                     else if(str_to_num(iArgs[1]) < 50)
  838.                     {
  839.                             ColorChat(client,"You ^3must ^1gamble on more than^4 50 ^3cash^1!");
  840.                             return 1;
  841.                     }
  842.                    
  843.                     Action_Gamble(client,(str_to_num(iArgs[1])));
  844.                    
  845.                     return 1;
  846.             }
  847.            
  848.             else if (equali(iArgs[0],"/next") || equali(iArgs[0],"/nextlevel") || equali(iArgs[0],"/nextlvl"))
  849.             {
  850.                     if (!get_pcvar_num(g_cvars[LEVELSYS]))
  851.                     {
  852.                             ColorChat(client,"HNR Level system is disabled!");
  853.                             return 0;
  854.                     }
  855.                            
  856.                     ColorChat(client,"Xp to next level: ^4%i",(playerlevel[client] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[client] + 1]) - playerxp[client])));
  857.             }
  858.                    
  859.             else if (equali(iArgs[0],"/scout"))
  860.             {
  861.                     ColorChat(client,"HyuNaS HitAndRun scout system is currently unavailable.");
  862.                     return 1;
  863.             }
  864.            
  865.             else if (equali(iArgs[0],"/rs"))
  866.                     ActionReset(client);
  867.                    
  868.             else if (equali(iArgs[0],"/hnrhelp"))
  869.                     ActionHelp(client);
  870.                    
  871.             else if (equali(iArgs[0],"/event"))
  872.             {
  873.                     if (EventStarted)
  874.                             ColorChat(client,"^3%s^1 is running now!",g_eventname[g_event]);
  875.                            
  876.                     else if (get_playersnum() < 3)
  877.                             ColorChat(client,"Need at least^4 3 players^1 to start an ^4Event^1!");
  878.                            
  879.                     else if (g_round == 6)
  880.                             ColorChat(client,"Event will start next round.");
  881.                            
  882.                     else
  883.                             ColorChat(client,"Rounds until the next event will start: ^4%i^1.",(7 - g_round));
  884.             }
  885.                    
  886.             return 0;
  887.     }
  888.      
  889.     /////////////////////
  890.     /// Gamble Action ///
  891.     /////////////////////
  892.      
  893.     public Action_Gamble(client,cash){
  894.             new GambledNum = random(101);
  895.            
  896.             switch(GambledNum)
  897.             {
  898.                     case 0..49:
  899.                     {
  900.                             ColorChat(0,"^3%s^1 has gambled on ^4%i^1 cash and ^3lost^1!",get_player_name(client),cash);
  901.                             playercash[client]-=cash;
  902.                             client_cmd(client,"spk HyuNaS_HNR/loser.wav");
  903.                     }
  904.                            
  905.                     case 50..100:
  906.                     {
  907.                             ColorChat(0,"^3%s^1 has gambled on ^4%i^1 cash and ^3WON^1!",get_player_name(client),cash);
  908.                             playercash[client]+=cash;
  909.                     }
  910.             }
  911.     }
  912.      
  913.     ////////////
  914.     /// Shop ///
  915.     ////////////
  916.      
  917.     public ActionShop(client){
  918.             if (!get_pcvar_num(g_cvars[ENABLED]))
  919.                     return 0;
  920.            
  921.             new some[256],shop,cb;
  922.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yWelcome to the shop! ^nYour cash: \r%i\y^nShop Status: \d[ \r%s \d]",playercash[client],(EventStarted || !is_user_alive(client) || !get_pcvar_num(g_cvars[CASHSYS]) ? "OFF":"ON"));
  923.            
  924.             shop = menu_create(some,"Shop_Handler");
  925.             cb = menu_makecallback("Shop_CallBack");
  926.            
  927.             menu_additem(shop,"\yWeapons Shop",.callback=cb);
  928.             menu_additem(shop,"\yGrenades Shop",.callback=cb);
  929.             menu_additem(shop,"\yExtra Ammo Shop",.callback=cb);
  930.             menu_additem(shop,"\yPowers Shop",.callback=cb);
  931.             menu_addblank(shop,5);
  932.             menu_additem(shop,"\yMisc Stuff");
  933.             menu_addblank(shop,6);
  934.             menu_additem(shop,"\yHelp");
  935.            
  936.             menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
  937.             menu_setprop(shop,MPROP_EXITNAME,"\yExit Shop");
  938.            
  939.             menu_display(client,shop);
  940.            
  941.             return 1;
  942.     }
  943.      
  944.     public Shop_CallBack(client,shop,item){
  945.             if (EventStarted || !get_pcvar_num(g_cvars[CASHSYS]) || !is_user_alive(client))
  946.                     return ITEM_DISABLED;
  947.                    
  948.             return ITEM_ENABLED;
  949.     }
  950.      
  951.     public Shop_Handler(client,shop,item){
  952.             if (item == MENU_EXIT)
  953.             {
  954.                     menu_destroy(shop);
  955.                     return;
  956.             }
  957.            
  958.             switch (item)
  959.             {
  960.                     case 0: ActionWepShop(client);
  961.                     case 1: ActionGreShop(client);
  962.                     case 2: ActionExtShop(client);
  963.                     case 3: ActionPwrShop(client);
  964.                     case 4: ActionMisc(client);
  965.                    
  966.                     case 5:
  967.                     {
  968.                             ActionHelp(client);
  969.                             ActionShop(client);
  970.                             return;
  971.                     }
  972.             }
  973.            
  974.             menu_destroy(shop);
  975.     }
  976.      
  977.     public ActionWepShop(client){
  978.             if (!get_pcvar_num(g_cvars[ENABLED]))
  979.                     return;
  980.                    
  981.             new some[256],shop,cb;
  982.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yWeapons Shop ^nYour cash: \r%i\y^nShop Status: \d[ \r%s \d]",playercash[client],(EventStarted || !is_user_alive(client) || !get_pcvar_num(g_cvars[CASHSYS]) ? "OFF":"ON"));
  983.            
  984.             shop = menu_create(some,"WepShop_Handler");
  985.             cb = menu_makecallback("Shop_CallBack");
  986.            
  987.             for (new i = 0; i < sizeof szPriWeapons; i++)
  988.             {
  989.                     formatex(some,255,"\y%s \d[\r %i Bullets \d] [\y %i Cash \d]",szPriWeapons[i][NAME],szPriWeapons[i][BULLETS],szPriWeapons[i][COST]);
  990.                     menu_additem(shop,some,.callback=cb);
  991.             }
  992.            
  993.             menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
  994.             menu_setprop(shop,MPROP_EXITNAME,"\yBack");
  995.            
  996.             menu_display(client,shop);
  997.     }
  998.      
  999.     public WepShop_Handler(client,shop,item){
  1000.             if (item == MENU_EXIT || !is_user_alive(client))
  1001.             {
  1002.                     menu_destroy(shop);
  1003.                     ActionShop(client);
  1004.                     return;
  1005.             }
  1006.            
  1007.             if (user_has_weapon(client,szPriWeapons[item][CSW]))
  1008.             {
  1009.                     ColorChat(client,"You already have ^4%s^1!",szPriWeapons[item][NAME]);
  1010.                     ActionWepShop(client);
  1011.                     return;
  1012.             }
  1013.            
  1014.             if (!check_cash(client,szPriWeapons[item][COST]))
  1015.             {
  1016.                     ColorChat(client,"You don't have enought cash to buy ^4%s^1!",szPriWeapons[item][NAME]);
  1017.                     ActionWepShop(client);
  1018.                     return;
  1019.             }
  1020.            
  1021.             new weapon = fm_give_item(client,szPriWeapons[item][CLASS]);
  1022.            
  1023.             cs_set_user_bpammo(client,szPriWeapons[item][CSW],0);
  1024.            
  1025.             if (weapon > 0)
  1026.                     cs_set_weapon_ammo(weapon,szPriWeapons[item][BULLETS]);
  1027.            
  1028.             playercash[client] -= szPriWeapons[item][COST];
  1029.            
  1030.             ColorChat(client,"You bought ^4%s^1 with ^4%i bullets^1 for ^4%i cash^1!",szPriWeapons[item][NAME],szPriWeapons[item][BULLETS],szPriWeapons[item][COST]);
  1031.            
  1032.             menu_destroy(shop);
  1033.     }
  1034.      
  1035.     public ActionGreShop(client){
  1036.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1037.                     return;
  1038.                    
  1039.             new some[256],shop,cb;
  1040.            
  1041.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yGrenades Shop ^nYour cash: \r%i\y^nShop Status: \d[ \r%s \d]",playercash[client],(EventStarted || !is_user_alive(client) || !get_pcvar_num(g_cvars[CASHSYS]) ? "OFF":"ON"));
  1042.            
  1043.             shop = menu_create(some,"GreShop_Handler");
  1044.             cb = menu_makecallback("Shop_CallBack");
  1045.            
  1046.             for (new i =0; i < 3; i++)
  1047.             {
  1048.                     formatex(some,255,"\y%s \d[\y %i Cash \d]",szGrenades[i][NAME],szGrenades[i][COST]);
  1049.                     menu_additem(shop,some,.callback=cb);
  1050.             }
  1051.            
  1052.             menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
  1053.             menu_setprop(shop,MPROP_EXITNAME,"\yBack");
  1054.            
  1055.             menu_display(client,shop);
  1056.     }
  1057.      
  1058.     public GreShop_Handler(client,shop,item){
  1059.             if (item == MENU_EXIT || !is_user_alive(client))
  1060.             {
  1061.                     menu_destroy(shop);
  1062.                     ActionShop(client);
  1063.                     return;
  1064.             }
  1065.            
  1066.             if (item == 2 && !fn)
  1067.             {
  1068.                     ColorChat(client,"FrostNade plugin isn't installed on this server!");
  1069.                     ActionGreShop(client);
  1070.                     return;
  1071.             }
  1072.            
  1073.             if (user_has_weapon(client,szGrenades[item][CSW]))
  1074.             {
  1075.                     client_print(client,print_center,"#Cstrike_TitlesTXT_Cannot_Carry_Anymore");
  1076.                     ActionGreShop(client);
  1077.                     return;
  1078.             }
  1079.            
  1080.             if (!check_cash(client,szGrenades[item][COST]))
  1081.             {
  1082.                     ColorChat(client,"You don't have enought cash to buy ^4%s^1!",szGrenades[item][NAME]);
  1083.                     ActionGreShop(client);
  1084.                     return;
  1085.             }
  1086.            
  1087.             fm_give_item(client,szGrenades[item][CLASS]);
  1088.            
  1089.             playercash[client] -= szGrenades[item][COST];
  1090.            
  1091.             ColorChat(client,"You bought ^4%s^1 for ^4%i cash^1!",szGrenades[item][NAME],szGrenades[item][COST]);
  1092.      
  1093.             menu_destroy(shop);
  1094.     }
  1095.      
  1096.     public ActionExtShop(client){
  1097.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1098.                     return;
  1099.                    
  1100.             new some[256],shop,cb;
  1101.            
  1102.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yExtra Ammo Shop ^nYour cash: \r%i\y^nShop Status: \d[ \r%s \d]",playercash[client],(EventStarted || !is_user_alive(client) || !get_pcvar_num(g_cvars[CASHSYS]) ? "OFF":"ON"));
  1103.            
  1104.             shop = menu_create(some,"ExtShop_Handler");
  1105.             cb = menu_makecallback("Shop_CallBack");
  1106.      
  1107.             for (new i =0; i < sizeof szExtraAmmo; i++)
  1108.             {
  1109.                     formatex(some,255,"\yExtra Ammo Pack %i \d[\r %i Bullets \d] [\y %i Cash \d]",(i+1),szExtraAmmo[i][BULLETS],szExtraAmmo[i][COST]);
  1110.                     menu_additem(shop,some,.callback=cb);
  1111.             }
  1112.            
  1113.             menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
  1114.             menu_setprop(shop,MPROP_EXITNAME,"\yBack");
  1115.            
  1116.             menu_display(client,shop);
  1117.     }
  1118.      
  1119.     public ExtShop_Handler(client,shop,item){
  1120.             if (item == MENU_EXIT || !is_user_alive(client))
  1121.             {
  1122.                     menu_destroy(shop);
  1123.                     ActionShop(client);
  1124.                     return;
  1125.             }
  1126.      
  1127.             if (!user_has_weapon(client,CSW_SCOUT))
  1128.             {
  1129.                     ColorChat(client,"You must have a ^4scout^1 to buy any ^4Extra Ammo Pack^1.");
  1130.                     ActionExtShop(client);
  1131.                     return;
  1132.             }
  1133.            
  1134.             if (!check_cash(client,szExtraAmmo[item][COST]))
  1135.             {
  1136.                     ColorChat(client,"You don't have enought cash to buy ^4Extra Ammo Pack %i^1!",(item+1));
  1137.                     ActionExtShop(client);
  1138.                     return;
  1139.             }
  1140.            
  1141.             if (cs_get_user_bpammo(client,CSW_SCOUT) >= 90)
  1142.             {
  1143.                     ColorChat(client,"You cann't buy more ^4Extra Ammo Packs^1!");
  1144.                     ActionExtShop(client);
  1145.                     return;
  1146.             }
  1147.            
  1148.             cs_set_user_bpammo(client,CSW_SCOUT,(cs_get_user_bpammo(client,CSW_SCOUT) + szExtraAmmo[item][BULLETS]));
  1149.            
  1150.             if(cs_get_user_bpammo(client,CSW_SCOUT) > 90)
  1151.                     cs_set_user_bpammo(client,CSW_SCOUT,90);
  1152.            
  1153.             playercash[client] -= szExtraAmmo[item][COST];
  1154.            
  1155.             client_cmd(client,"spk ^"\items/9mmclip1^"");
  1156.                            
  1157.             ColorChat(client,"You bought ^4Extra Ammo Pack %i^1 [ ^3%i Bullets ^1] for ^4%i cash^1!",(item+1),szExtraAmmo[item][BULLETS],szExtraAmmo[item][COST]);
  1158.            
  1159.             menu_destroy(shop);
  1160.     }
  1161.      
  1162.     public ActionPwrShop(client){
  1163.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1164.                     return;
  1165.                    
  1166.             new some[256],shop,cb;
  1167.            
  1168.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yPowers Shop ^nYour cash: \r%i\y^nShop Status: \d[ \r%s \d]",playercash[client],(EventStarted || !is_user_alive(client) || !get_pcvar_num(g_cvars[CASHSYS]) ? "OFF":"ON"));
  1169.            
  1170.             shop = menu_create(some,"PwrShop_Handler");
  1171.             cb = menu_makecallback("Shop_CallBack2");
  1172.            
  1173.             for (new i = 0; i < sizeof szPwrs; i++)
  1174.             {
  1175.                     formatex(some,255,"\y%s \d[\y %s \d] \d[\y %i Cash \d]",szPwrs[i][PWR_NAME],szPwrs[i][PWR_TIME],szPwrs[i][PWR_COST]);
  1176.                     menu_additem(shop,some,.callback=cb);
  1177.             }
  1178.            
  1179.             menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
  1180.             menu_setprop(shop,MPROP_EXITNAME,"\yBack");
  1181.            
  1182.             menu_display(client,shop);
  1183.     }
  1184.      
  1185.     public PwrShop_Handler(client,shop,item){
  1186.             if (item == MENU_EXIT)
  1187.             {
  1188.                     menu_destroy(shop);
  1189.                     ActionShop(client);
  1190.                     return;
  1191.             }
  1192.            
  1193.             if (client == infected)
  1194.             {
  1195.                     ColorChat(client,"You musn't be infected to use the ^4Powers Shop^1!");
  1196.                     menu_destroy(shop);
  1197.                     ActionPwrShop(client);
  1198.                     return;
  1199.             }
  1200.            
  1201.             if (!check_cash(client,szPwrs[item][PWR_COST]))
  1202.             {
  1203.                     ColorChat(client,"You don't have enought cash to buy ^4%s^1!",szPwrs[item][PWR_NAME]);
  1204.                     ActionPwrShop(client);
  1205.                     return;
  1206.             }
  1207.            
  1208.             g_powers[client][item] = true;
  1209.            
  1210.             playercash[client] -= szPwrs[item][PWR_COST];
  1211.                            
  1212.             switch(item)
  1213.             {
  1214.                     case SPEED:
  1215.                     {
  1216.                             new maxspeed = pev(client,pev_maxspeed);
  1217.                             maxspeed*=2.0;
  1218.                             set_pev(client,pev_maxspeed,maxspeed);
  1219.                     }
  1220.                    
  1221.                     case INVISIBILITY:
  1222.                     {
  1223.                             fm_set_entity_visibility(client,0);
  1224.                            
  1225.                             set_task(10.0,"RemoveInv",client);
  1226.                     }
  1227.                    
  1228.                     case GRAVITY: set_pev(client,pev_gravity,0.7);
  1229.             }
  1230.            
  1231.             ColorChat(client,"You bought ^4%s^1 [^3 %s ^1] for ^4%i cash^1!",szPwrs[item][PWR_NAME],szPwrs[item][PWR_TIME],szPwrs[item][PWR_COST]);
  1232.            
  1233.             menu_destroy(shop);
  1234.     }
  1235.      
  1236.     public RemoveInv(client){
  1237.             if(is_user_alive(client))
  1238.             {
  1239.                     ColorChat(client,"^4Invisibility Power^1 has gone! You are ^3visible^1 now!");
  1240.                     fm_set_entity_visibility(client,1);
  1241.             }
  1242.                    
  1243.             g_powers[client][INVISIBILITY] = false;
  1244.     }
  1245.      
  1246.     public Shop_CallBack2(client,shop,item){
  1247.             if (!is_user_alive(client) || g_powers[client][item] || EventStarted || !get_pcvar_num(g_cvars[CASHSYS]))
  1248.                     return ITEM_DISABLED;
  1249.                    
  1250.             return ITEM_ENABLED;
  1251.     }
  1252.      
  1253.     public ActionPlrStatus(client){
  1254.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1255.                     return;
  1256.                    
  1257.             new some[256],PlrStatus;
  1258.            
  1259.             static players[32],szTemp[10],pnum;    
  1260.             get_players(players,pnum,"ch");
  1261.            
  1262.             if (pnum < 2)
  1263.             {
  1264.                     ColorChat(client,"No other players on this server!");
  1265.                     ActionMisc(client);
  1266.                     return;
  1267.             }
  1268.            
  1269.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yPlayers Status ^nYour cash: \r%i",playercash[client]);
  1270.            
  1271.             PlrStatus = menu_create(some,"PlrStatus_Handler");
  1272.            
  1273.             for (new i; i < pnum; i++)
  1274.             {
  1275.                     if (!is_user_connected(players[i]) || players[i] == client)
  1276.                             continue;
  1277.                    
  1278.                     formatex(some,256,"%s \r| \d[\y Level: %i \d]  \r| \d[ \yCash: %i \d]",get_player_name(players[i]),playerlevel[players[i]],playercash[players[i]]);
  1279.                     num_to_str(players[i],szTemp,charsmax(szTemp));
  1280.                     menu_additem(PlrStatus,some,szTemp);
  1281.             }
  1282.            
  1283.             menu_setprop(PlrStatus,MPROP_EXITNAME,"\yBack");
  1284.             menu_setprop(PlrStatus,MPROP_EXIT,MENU_EXIT);
  1285.             menu_display(client,PlrStatus);
  1286.     }
  1287.      
  1288.     public PlrStatus_Handler(client,PlrStatus,item){
  1289.             if (item == MENU_EXIT)
  1290.             {
  1291.                     menu_destroy(PlrStatus);
  1292.                     ActionMisc(client);
  1293.                     return;
  1294.             }
  1295.            
  1296.             new data[6],szName[64],access,callback;
  1297.            
  1298.             menu_item_getinfo(PlrStatus,item,access,data,charsmax(data),szName,charsmax(szName),callback);
  1299.            
  1300.             new player = str_to_num(data);
  1301.            
  1302.             if (!is_user_connected(player))
  1303.             {
  1304.                     menu_destroy(PlrStatus);
  1305.                     ActionPlrStatus(client);
  1306.                     return;
  1307.             }
  1308.                    
  1309.             ColorChat(client,"^4%s^1 Status:",get_player_name(player));
  1310.             ColorChat(client,"Cash: ^4%i",playercash[player]);
  1311.             ColorChat(client,"Rounds Played: ^4%i ^3| ^1 Total Rounds Played: ^4%i",g_rounds[player],g_totalrounds[player]);
  1312.             ColorChat(client,"Wins: ^4%i ^3| ^1Total Wins: ^4%i",g_wins[player],g_totalwins[player]);
  1313.             ColorChat(client,"Level: ^4%i ^3| ^1Xp: ^4%i ^3| ^1Xp to next level: ^4%i"
  1314.                     ,playerlevel[player]
  1315.                     ,playerxp[player]
  1316.                     ,(playerlevel[player] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[player] + 1]) - playerxp [player])));
  1317.            
  1318.             ActionPlrStatus(client);
  1319.     }
  1320.      
  1321.     public ActionMisc(client){
  1322.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1323.                     return;
  1324.                    
  1325.             new some[256],cb,misc;
  1326.            
  1327.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yMisc Stuff ^nYour cash: \r%i",playercash[client]);
  1328.             misc = menu_create(some,"Misc_Handler");
  1329.             cb = menu_makecallback("Shop_CallBack3");
  1330.            
  1331.             menu_additem(misc,"\yEvents \d[\r Admin Only \d]",.callback = cb);
  1332.             menu_additem(misc,"\yGamble Cash");
  1333.             menu_additem(misc,"\yPlayers Status");
  1334.             menu_additem(misc,"\yYour Status");
  1335.            
  1336.             menu_setprop(misc,MPROP_EXITNAME,"\yBack");
  1337.             menu_setprop(misc,MPROP_EXIT,MENU_EXIT);
  1338.             menu_display(client,misc);
  1339.     }
  1340.      
  1341.     public Shop_CallBack3(client,misc,item)
  1342.             return (EventStarted || GameStarted || g_round == 6 || !(get_user_flags(client) & ADMIN_LEVEL_B) || get_playersnum() < 3) ? ITEM_DISABLED:ITEM_ENABLED;
  1343.            
  1344.     public Misc_Handler(client,misc,item){
  1345.             if (item == MENU_EXIT)
  1346.             {
  1347.                     menu_destroy(misc);
  1348.                     ActionShop(client);
  1349.                     return;
  1350.             }
  1351.            
  1352.             switch(item)
  1353.             {
  1354.                     case 0: ActionEvents(client);
  1355.                     case 1: ActionGamble(client);
  1356.                     case 2: ActionPlrStatus(client);
  1357.                     case 3:
  1358.                     {
  1359.                             ColorChat(client,"Your Status:");
  1360.                             ColorChat(client,"Cash: ^4%i",playercash[client]);
  1361.                             ColorChat(client,"Rounds Played: ^4%i ^3| ^1 Total Rounds Played: ^4%i",g_rounds[client],g_totalrounds[client]);
  1362.                             ColorChat(client,"Wins: ^4%i ^3| ^1Total Wins: ^4%i",g_wins[client],g_totalwins[client]);
  1363.                             ColorChat(client,"Level: ^4%i ^3| ^1Xp: ^4%i ^3| ^1Xp to next level: ^4%i"
  1364.                                     ,playerlevel[client]
  1365.                                     ,playerxp[client]
  1366.                                     ,(playerlevel[client] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[client] + 1]) - playerxp[client])));
  1367.                                    
  1368.                             ActionMisc(client);
  1369.                             return;
  1370.                     }
  1371.             }
  1372.            
  1373.             menu_destroy(misc);
  1374.     }
  1375.      
  1376.     public ActionEvents(client){
  1377.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1378.                     return;
  1379.                    
  1380.             new some[256],cb,misc;
  1381.            
  1382.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yEvents ^nYour cash: \r%i",playercash[client]);
  1383.             misc = menu_create(some,"Events_Handler");
  1384.             cb = menu_makecallback("Shop_CallBack3");
  1385.            
  1386.             for (new i = 1; i < sizeof g_eventname; i++)
  1387.             {
  1388.                     formatex(some,255,"\y%s \d[\y x2 Cash \d] [\y x2 XP \d]",g_eventname[i]);
  1389.                     menu_additem(misc,some,.callback = cb);
  1390.             }
  1391.            
  1392.             menu_setprop(misc,MPROP_EXITNAME,"\yBack");
  1393.             menu_setprop(misc,MPROP_EXIT,MENU_EXIT);
  1394.             menu_display(client,misc);
  1395.     }
  1396.      
  1397.     public Events_Handler(client,misc,item){
  1398.             if (item == MENU_EXIT)
  1399.             {
  1400.                     menu_destroy(misc);
  1401.                     ActionMisc(client);
  1402.                     return;
  1403.             }
  1404.            
  1405.             else if (get_playersnum() < 3)
  1406.             {
  1407.                     ColorChat(client,"Need at least^4 3 players^1 to start an ^4Event^1!");
  1408.                     ActionMisc(client);
  1409.                     return;
  1410.             }
  1411.            
  1412.             ActionEvent(item + 1);
  1413.            
  1414.             ColorChat(0,"^3%s^1 has started ^4%s^1!",get_player_name(client),g_eventname[item + 1]);
  1415.            
  1416.             menu_destroy(misc);
  1417.     }
  1418.      
  1419.     public ActionGamble(client){
  1420.             if (!get_pcvar_num(g_cvars[ENABLED]) || !get_pcvar_num(g_cvars[GAMBLESYS]))
  1421.                     return;
  1422.                    
  1423.             new some[256],misc;
  1424.            
  1425.             formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yGamble Cash ^nYour cash: \r%i",playercash[client]);
  1426.             misc = menu_create(some,"Gamble_Handler");
  1427.            
  1428.             formatex(some,255,"\yGambled Cash: \d[\r %i \d]",GambleNums[g_GambleChoose[client]]);
  1429.             menu_additem(misc,some);
  1430.            
  1431.             menu_additem(misc,"\yGamble NOW!");
  1432.            
  1433.             menu_setprop(misc,MPROP_EXITNAME,"\yBack");
  1434.             menu_setprop(misc,MPROP_EXIT,MENU_EXIT);
  1435.             menu_display(client,misc);
  1436.     }
  1437.      
  1438.     public Gamble_Handler(client,misc,item){
  1439.             if (item == MENU_EXIT)
  1440.             {
  1441.                     menu_destroy(misc);
  1442.                     ActionMisc(client);
  1443.                     return;
  1444.             }
  1445.            
  1446.             switch (item)
  1447.             {
  1448.                     case 0:
  1449.                     {
  1450.                             g_GambleChoose[client]++;
  1451.                            
  1452.                             if (g_GambleChoose[client] > charsmax(GambleNums))
  1453.                                     g_GambleChoose[client] = 0;
  1454.                                    
  1455.                             ActionGamble(client);
  1456.                             return;
  1457.                     }
  1458.                    
  1459.                     case 1:
  1460.                     {
  1461.                    
  1462.                             if(!check_cash(client,GambleNums[g_GambleChoose[client]]))
  1463.                             {
  1464.                                     ColorChat(client,"You ^3don't ^1have enough ^3cash^1!");
  1465.                                     g_GambleChoose[client] = 0;
  1466.                                     ActionGamble(client);
  1467.                                     return;
  1468.                             }
  1469.                            
  1470.                             Action_Gamble(client,GambleNums[g_GambleChoose[client]]);
  1471.                            
  1472.                             g_GambleChoose[client] = 0;
  1473.                     }      
  1474.             }
  1475.            
  1476.             menu_destroy(misc);
  1477.     }
  1478.      
  1479.     //////////////////////
  1480.     /// HitAndRun Help ///
  1481.     //////////////////////
  1482.      
  1483.     public ActionHelp(client){
  1484.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1485.                     return;
  1486.                    
  1487.             new Help[3500];
  1488.             add(Help,charsmax(Help),"<html><head><title>HyuNaS HitAndRun Help</title></head><body bgcolor=^"000000^"><font color=^"#FFFFFF^"><center>");
  1489.             add(Help,charsmax(Help),"<h1>HyuNaS HitAndRun v1.0 By Hyuna aka NorToN</h1><br /></center>");
  1490.             add(Help,charsmax(Help),"<h3>Commands:</h3>");
  1491.             add(Help,charsmax(Help),"• say /hnrhelp - Shows this help motd.<br /> • say /hnrstats - Shows the rounds that played, total rounds played, wins and total wins. Supporting to see other players stats.<br /> • say /cash - Shows how much cash do you have. Supports see other playes cash.<br /> • say /level or say /xp - Shows What level you are, how much xp do you have and how much xp do you need to collet to level up.<br />");
  1492.             add(Help,charsmax(Help),"• say /next - Shows how much xp do you need to collect to level up.<br /> • say /send - Sends to client cash.<br /> • say /gamble - Gambles the cash. The min cash is 50.<br /> • say /shop - Opens the shop menu.<br /> • say /rs - Restart Stats: wins, rounds, level, xp and cash.<br /> • say /event - Shows infomation about Events (if it's running, how much rounds left until the event will start etc.)");
  1493.             add(Help,charsmax(Help),"<br /><h3>Rules:</h3>");
  1494.             add(Help,charsmax(Help),"• Don't Cheat! You'll be banned from the server!<br/> • Don't Retry!<br/> • Don't use bugs at this plugin!<br/> • Don't flood with gamble!<br/> • Play fair!<br />");
  1495.             add(Help,charsmax(Help),"• And the most important: Enjoy!");
  1496.             add(Help,charsmax(Help),"</font></body></html>");
  1497.            
  1498.             show_motd(client,Help,"HyuNaS HitAndRun Help");
  1499.     }
  1500.      
  1501.     ///////////////////
  1502.     /// Reset Stats ///
  1503.     ///////////////////
  1504.      
  1505.     public ActionReset(client){
  1506.             new rs = menu_create("\d[\y HyuNaS HNR Shop \d]\y Reset Stats^n Are you sure?","ResetStats_Handler");
  1507.            
  1508.             menu_additem(rs,"\yYes");
  1509.             menu_additem(rs,"\yNo");
  1510.            
  1511.             menu_setprop(rs,MPROP_EXIT,MEXIT_NEVER);
  1512.             menu_display(client,rs);
  1513.     }
  1514.      
  1515.     public ResetStats_Handler(client,rs,item){
  1516.             if (!item)
  1517.             {
  1518.                     g_totalrounds[client] = 0;
  1519.                     g_totalwins[client] = 0;
  1520.                     g_wins[client] = 0;
  1521.                     g_rounds[client] = 0;
  1522.                     playerlevel[client] = 0;
  1523.                     playerxp[client] = 0;
  1524.                     playercash[client] = 0;
  1525.                            
  1526.                     SaveData(client);
  1527.                            
  1528.                     ColorChat(0,"^3%s^1 has just reset his stats!",get_player_name(client));
  1529.                     ColorChat(client,"You just reset your stats!");
  1530.             }
  1531.            
  1532.             menu_destroy(rs);
  1533.     }
  1534.      
  1535.     /////////////////////////
  1536.     /// Block team change ///
  1537.     /////////////////////////
  1538.      
  1539.     public cmd_block(client){
  1540.             if (cs_get_user_team(client) == CS_TEAM_SPECTATOR)
  1541.                     cs_set_user_team(client,CS_TEAM_T);
  1542.                    
  1543.             ActionShop(client);
  1544.             return PLUGIN_HANDLED_MAIN;
  1545.     }
  1546.      
  1547.     ///////////////////
  1548.     /// Adv message ///
  1549.     ///////////////////
  1550.      
  1551.     public Adv_message(){
  1552.             ColorChat(0,"This server is running ^4HyuNaS HitAndRun^1 ^4v%s^1 By ^4Hyuna^1.",PLUGIN_VERSION);
  1553.             ColorChat(0,"Type ^3/hnrhelp^1 to view the help motd.");
  1554.     }
  1555.      
  1556.     // Game Description
  1557.     public fw_GetGameDescription(){
  1558.             new some[32];
  1559.             formatex(some,31,"HitAndRun v%s",PLUGIN_VERSION);
  1560.             forward_return(FMV_STRING,some);
  1561.             return FMRES_SUPERCEDE;
  1562.     }
  1563.      
  1564.     public fw_ClientKill(client){
  1565.             if (!get_pcvar_num(g_cvars[ENABLED]) || !get_pcvar_num(g_cvars[BLOCKKILL]) || !is_user_alive(client))
  1566.                     return FMRES_IGNORED;
  1567.            
  1568.             ColorChat(client,"You cann't kill yourself!");
  1569.             console_print(client,"You cann't kill yourself!");
  1570.            
  1571.             return FMRES_SUPERCEDE;
  1572.     }
  1573.      
  1574.     //////////////////////
  1575.     /// Hide HUD Stuff ///
  1576.     //////////////////////
  1577.      
  1578.     public msgStatusIcon(msgid,msgdest,id){
  1579.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1580.                     return 1;
  1581.                    
  1582.             static szIcon[8];
  1583.             get_msg_arg_string(2,szIcon,7);
  1584.      
  1585.             if(equal(szIcon,"buyzone") && get_msg_arg_int(1))
  1586.             {
  1587.                     set_pdata_int(id,235,get_pdata_int(id,235) & ~(1<<0));
  1588.                     return 1;
  1589.             }
  1590.      
  1591.             return 0;
  1592.     }  
  1593.      
  1594.     public MessageMoney(msgid,dest,id){
  1595.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1596.                     return;
  1597.                    
  1598.             set_pdata_int(id,OFFSET_CSMONEY,0);
  1599.             set_msg_arg_int(1,ARG_LONG,0);
  1600.     }
  1601.      
  1602.     public MessageHideWeapon(msgid,dest,id){
  1603.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1604.                     return;
  1605.                    
  1606.             set_msg_arg_int(1,ARG_BYTE,get_msg_arg_int(1) | (1<<5));
  1607.     }
  1608.      
  1609.     public Event_ResetHUD(client){
  1610.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1611.                     return;
  1612.                    
  1613.             set_pdata_int(client,362,0);
  1614.             set_pdata_int(client,361,(1<<3)|(1<<4));
  1615.     }
  1616.      
  1617.     public Event_HideWeapon(client){
  1618.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1619.                     return;
  1620.                    
  1621.             new iFlags = read_data(1);
  1622.                    
  1623.             new HudFlags;
  1624.                    
  1625.             for (new i = 0; i <= 7; i++)
  1626.                             HudFlags |= 1<<i;
  1627.                    
  1628.             if(1<<3 && (iFlags & 1<<3 != 1<<3))
  1629.             {
  1630.                     set_pdata_int(client,362,0);
  1631.                     set_pdata_int(client,361,iFlags|(1<<3)|(1<<4));
  1632.             }
  1633.            
  1634.             if(iFlags & HudFlags && !(1<<3 & 1<<7) && is_user_alive(client))
  1635.                     set_pdata_cbase(client,374,FM_NULLENT);
  1636.     }
  1637.      
  1638.     public Event_CurWeapon(client){
  1639.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1640.                     return;
  1641.                    
  1642.             if (g_powers[client][SPEED])
  1643.             {
  1644.                     new maxspeed = pev(client,pev_maxspeed);
  1645.                     maxspeed*=2.0;
  1646.                     engfunc(EngFunc_SetClientMaxspeed,client,maxspeed);
  1647.                     set_pev(client,pev_maxspeed,maxspeed);
  1648.             }
  1649.     }
  1650.      
  1651.     public Event_Flash(client){
  1652.             if (g_powers[client][NOFLASH])
  1653.             {
  1654.                     message_begin(MSG_ONE,g_msgScreenFade,{0,0,0},client);
  1655.                     write_short((1<<0));
  1656.                     write_short((1<<0));
  1657.                     write_short((1<<0));
  1658.                     write_byte(0);
  1659.                     write_byte(0);
  1660.                     write_byte(0);
  1661.                     write_byte(255);
  1662.                     message_end();
  1663.             }
  1664.     }
  1665.      
  1666.     ////////////////////
  1667.     /// Some Events ///
  1668.     //////////////////
  1669.      
  1670.     public Event_RoundStart(){
  1671.             if (g_winner)
  1672.                     remove_task(g_winner);
  1673.                    
  1674.             for (new i = 1; i <= g_maxplayers; i++)
  1675.             {
  1676.                     if (is_user_connected(i))
  1677.                     {
  1678.                             if (cs_get_user_team(i) != CS_TEAM_T)
  1679.                                     cs_set_user_team(i,CS_TEAM_T);
  1680.                                    
  1681.                             if (!is_user_alive(i))
  1682.                                     ExecuteHam(Ham_CS_RoundRespawn,i);
  1683.                     }
  1684.             }
  1685.                    
  1686.             remove_task(COUNTDOWN_TASKID);
  1687.             remove_task(GAMESTART_TASKID);
  1688.             remove_task(SOUNDS_TASKID);
  1689.             remove_task(TIMER_TASKID);
  1690.            
  1691.             fm_set_lights("m");
  1692.            
  1693.             GameStarted = false;
  1694.             EventStarted = false;
  1695.             infected = 0;
  1696.             g_lasthit = 0;
  1697.             g_lasttwo = false;
  1698.             g_event = 0;
  1699.             g_winner = 0;
  1700.            
  1701.             CreateFog(0,0,0,FOG_OFF);
  1702.            
  1703.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1704.                     return;
  1705.                    
  1706.             cd = 10;
  1707.                    
  1708.             set_task(1.0,"StartCD",COUNTDOWN_TASKID,.flags="b");
  1709.             set_task(11.0,"Start_Game",GAMESTART_TASKID);
  1710.             ColorChat(0,"^3Game will start in^4 10 seconds^1!");
  1711.            
  1712.             client_cmd(0,"mp3 stop");
  1713.     }
  1714.      
  1715.     public StartCD(taskid){
  1716.             static szWord[32];
  1717.             num_to_word(cd,szWord,31);
  1718.            
  1719.             if (cd < 1)
  1720.             {
  1721.                     remove_task(taskid);
  1722.                     return;
  1723.             }
  1724.            
  1725.             client_cmd(0,"spk ^"\vox/%s second%s^"",szWord,cd > 1 ? "s":"");
  1726.            
  1727.             set_dhudmessage(0,255,0,-1.0,0.13,0,6.0,0.5,0.25,0.25);
  1728.             show_dhudmessage(0,"Game will start in %i second%s!",cd,cd > 1 ? "s":"");
  1729.            
  1730.             cd--;
  1731.     }
  1732.      
  1733.     public Event_RoundEnd(){
  1734.             GameStarted = false;
  1735.             EventStarted = false;
  1736.             infected = 0;
  1737.             g_lasthit = 0;
  1738.             g_lasttwo = false;
  1739.             g_event = 0;
  1740.            
  1741.             CreateFog(0,0,0,FOG_OFF);
  1742.            
  1743.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1744.                     return;
  1745.            
  1746.             for (new i = 1; i <= g_maxplayers; i++)
  1747.             {
  1748.                     if (is_user_connected(i))
  1749.                     {
  1750.                             if (cs_get_user_team(i) == CS_TEAM_T)
  1751.                                     g_rounds[i]++;
  1752.                                    
  1753.                             if (cs_get_user_team(i) != CS_TEAM_T)
  1754.                                     cs_set_user_team(i,CS_TEAM_T);
  1755.                                    
  1756.                             g_powers[i][SPEED] = false;
  1757.                             g_powers[i][INVISIBILITY] = false;
  1758.                             g_powers[i][GRAVITY] = false;
  1759.                             g_powers[i][NOHEGRENADE] = false;
  1760.                             g_powers[i][NOFLASH] = false;
  1761.                     }
  1762.             }
  1763.     }
  1764.      
  1765.     //////////////////////////
  1766.     /// Some HAM functions ///
  1767.     //////////////////////////
  1768.      
  1769.     public fw_HamPlayerSpawn(client){
  1770.             if (!is_user_alive(client) || !get_pcvar_num(g_cvars[ENABLED]))
  1771.                     return;
  1772.                    
  1773.             else if (GameStarted)
  1774.             {
  1775.                     fm_strip_user_weapons(client);
  1776.                     user_silentkill(client);
  1777.                     blind_player(client);
  1778.                    
  1779.                     ColorChat(client,"You cann't play when the game is running!");
  1780.                    
  1781.                     return;
  1782.             }
  1783.            
  1784.             PreparePlayer(client);
  1785.            
  1786.             g_powers[client][SPEED] = false;
  1787.             g_powers[client][INVISIBILITY] = false;
  1788.             g_powers[client][GRAVITY] = false;
  1789.             g_powers[client][NOHEGRENADE] = false;
  1790.     }
  1791.      
  1792.     public fw_HamPlayerKilled(victim, attacker, shouldgib){
  1793.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1794.                     return;
  1795.                    
  1796.             if (victim == infected && is_user_connected(victim))
  1797.             {
  1798.                     fm_set_user_rendering(victim,kRenderFxNone,255,255,255,kRenderNormal,16);
  1799.                     client_cmd(victim,"spk HyuNaS_HNR/loser.wav");
  1800.                    
  1801.                     if (g_event == EVENT_FOG)
  1802.                             fm_set_entity_visibility(victim,1);
  1803.                    
  1804.                     check_winner();
  1805.                    
  1806.                     last_two();
  1807.                    
  1808.                     blind_player(victim);
  1809.             }
  1810.     }
  1811.      
  1812.     public fw_HamTakeDamage(victim, idinflictor, attacker, Float:damage, damagebits){
  1813.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1814.                     return HAM_IGNORED;
  1815.            
  1816.             if (is_user_alive(victim) && is_user_alive(attacker) &&  attacker == infected && victim != attacker)
  1817.             {
  1818.                     if (g_powers[victim][NOHEGRENADE] && (damagebits & DMG_HEGRENADE))
  1819.                             return HAM_SUPERCEDE;
  1820.                            
  1821.                     make_bartime(attacker,0);
  1822.                            
  1823.                     g_lasthit = attacker;
  1824.                    
  1825.                     make_user_statusicon(attacker,"dmg_bio",.status = STATUSICON_OFF);
  1826.                    
  1827.                     if (g_event == EVENT_FOG)
  1828.                             fm_set_entity_visibility(attacker,1);
  1829.                            
  1830.                     infect_player(victim,0);
  1831.                     fm_set_user_rendering(attacker,kRenderFxNone,255,255,255,kRenderNormal,16);
  1832.                    
  1833.                     client_cmd(victim,"spk %s",g_infectesounds[random(MAX_INFECTE_SOUNDS)]);
  1834.                    
  1835.                     cs_reset_user_model(attacker);
  1836.                    
  1837.                     return HAM_SUPERCEDE;
  1838.             }
  1839.            
  1840.             return HAM_SUPERCEDE;
  1841.     }
  1842.      
  1843.     // Blocks zoom at scout
  1844.     public fw_ScoutOnZoomOn(const ent){
  1845.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1846.                     return HAM_IGNORED;
  1847.                    
  1848.             if (get_pcvar_num(g_cvars[NOZOOM]))
  1849.                     return HAM_SUPERCEDE;
  1850.                    
  1851.             return (g_lasttwo ? HAM_SUPERCEDE:HAM_IGNORED);
  1852.     }
  1853.      
  1854.     public fw_ScoutCanDrop(entity){
  1855.             if (!get_pcvar_num(g_cvars[ENABLED]) ||!get_pcvar_num(g_cvars[SCOUTDROP]))
  1856.                     return HAM_IGNORED;
  1857.                    
  1858.             return HAM_SUPERCEDE;
  1859.     }
  1860.      
  1861.     public fw_HamPlayerJump(client){
  1862.             if (!get_pcvar_num(g_cvars[ENABLED]) ||!get_pcvar_num(g_cvars[NOSLOWDOWN]))
  1863.                     return HAM_IGNORED;
  1864.                    
  1865.             if (is_user_alive(client))
  1866.                     set_pev(client,pev_fuser2,0.0);
  1867.                    
  1868.             return HAM_IGNORED;
  1869.     }
  1870.      
  1871.     ////////////////
  1872.     /// Events /////
  1873.     ////////////////
  1874.      
  1875.     public ActionEvent(event){
  1876.             g_round = 0;
  1877.             EventStarted = true;
  1878.            
  1879.             if (!event)
  1880.                     g_event = random_num(1,(Events - 1));
  1881.            
  1882.             else
  1883.                     g_event = event;
  1884.            
  1885.             ExecuteForward(fwd_event,fwd_return,g_event);
  1886.            
  1887.             static players[32],pnum;
  1888.             get_players(players,pnum,"aceh","TERRORIST");
  1889.            
  1890.             switch(g_event)
  1891.             {
  1892.                     case EVENT_GRAVITY:
  1893.                     {
  1894.                             for (new i; i < pnum; i++)
  1895.                             {
  1896.                                     set_pev(players[i],pev_gravity,0.7);
  1897.                             }
  1898.                     }
  1899.                    
  1900.                     case EVENT_KNIFE:
  1901.                     {
  1902.                             for (new i; i < pnum; i++)
  1903.                             {
  1904.                                     fm_strip_user_weapons(players[i]);
  1905.                                     fm_give_item(players[i],"weapon_knife");
  1906.                             }
  1907.                     }
  1908.                    
  1909.                     case EVENT_NOZOOM:
  1910.                     {
  1911.                             g_lasttwo = true;
  1912.                     }
  1913.                    
  1914.                     case EVENT_AWP:
  1915.                     {
  1916.                             for (new i; i < pnum; i++)
  1917.                             {
  1918.                                     fm_strip_user_weapons(players[i]);
  1919.                                     fm_give_item(players[i],"weapon_awp");
  1920.                                     cs_set_user_bpammo(players[i],CSW_AWP,256);
  1921.                             }
  1922.                     }
  1923.                    
  1924.                     case EVENT_FOG:
  1925.                     {
  1926.                             CreateFog(127,127,127,FOG_HIGH);
  1927.                     }              
  1928.             }
  1929.            
  1930.             set_task(4.0,"Infect_RandomPlayer");
  1931.            
  1932.             ColorChat(0,"^3%s^1 has been started! If you'll win you'll get ^4x2 xp^1 and ^4x2 cash^1!",g_eventname[g_event]);
  1933.     }
  1934.      
  1935.     //////////////////
  1936.     /// Game Start ///
  1937.     //////////////////
  1938.      
  1939.     public Start_Game(){
  1940.             new client = get_randomplayer();
  1941.            
  1942.             GameStarted = true;
  1943.            
  1944.             last_two();
  1945.            
  1946.             if (client != -1 && get_playersnum() > 2)
  1947.             {
  1948.                     g_round++;
  1949.                    
  1950.                     if (g_round == 6)
  1951.                             ColorChat(0,"^3Random Event^1 will start next round!");
  1952.             }
  1953.            
  1954.             if (g_round == 7 && !g_lasttwo && get_playersnum() > 2)
  1955.             {
  1956.                     ActionEvent(0);
  1957.                     return;
  1958.             }
  1959.            
  1960.             infect_player(client,1);
  1961.     }
  1962.      
  1963.     public PreparePlayer(client){
  1964.             fm_strip_user_weapons(client);
  1965.            
  1966.             fm_set_user_health(client,100);
  1967.            
  1968.             fm_give_item(client,"weapon_knife");
  1969.             fm_give_item(client,"weapon_scout");
  1970.            
  1971.             fm_give_item(client,"weapon_hegrenade");
  1972.             fm_give_item(client,"weapon_flashbang");
  1973.             fm_give_item(client,"weapon_flashbang");
  1974.            
  1975.             if (fn)
  1976.                     fm_give_item(client,"weapon_smokegrenade");
  1977.            
  1978.             fm_set_user_rendering(client,kRenderFxNone,255,255,255,kRenderNormal,16);
  1979.            
  1980.             if (pev(client,pev_weapons) & (1<<CSW_C4))
  1981.                     engclient_cmd(client,"drop","weapon_c4");
  1982.                    
  1983.             cs_reset_user_model(client);
  1984.     }
  1985.      
  1986.     public infect_player(client,rnd){
  1987.             if (!GameStarted || g_winner)
  1988.                     return;
  1989.                    
  1990.             if (!get_pcvar_num(g_cvars[ENABLED]))
  1991.                     return;
  1992.                    
  1993.             infected = client;
  1994.            
  1995.             if(!is_user_alive(infected))
  1996.             {
  1997.                     ColorChat(0,"Need at least 2 players to start the game! Retry in 15 seconds...");
  1998.                    
  1999.                     GameStarted = false;
  2000.                    
  2001.                     set_task(15.0,"Event_RoundStart",GAMESTART_TASKID);
  2002.                     return;
  2003.             }
  2004.            
  2005.             ExecuteForward(fwd_infected,fwd_return,infected);
  2006.      
  2007.             fm_set_user_rendering(infected,kRenderFxGlowShell,random(256),random(256),random(256),kRenderTransAlpha,120);
  2008.            
  2009.             do_effect(infected,1);
  2010.            
  2011.             make_user_statusicon(infected,"dmg_bio",.status = STATUSICON_FLASH);
  2012.            
  2013.             MakeSickness();
  2014.            
  2015.             cs_set_user_model(infected,"Adv-Sick");
  2016.            
  2017.             if (g_event == EVENT_FOG)
  2018.                     fm_set_entity_visibility(infected,0);
  2019.            
  2020.             if (rnd)
  2021.             {
  2022.                     set_hudmessage(0,255,0,-1.0,-1.0,0,6.0,10.0);          
  2023.                     ShowSyncHudMsg(0,HnrSync,"%s Has been choosen randomly...",get_player_name(client));
  2024.                     ColorChat(0,"^3%s^1 Has been choosen ^4randomly^1...",get_player_name(client));
  2025.                    
  2026.                     do_effect(infected,0);
  2027.                    
  2028.                     g_timer = 20.0;
  2029.                     set_task(0.1,"ShowTimer",TIMER_TASKID,.flags="b");
  2030.                    
  2031.                     set_task(3.0,"TikTok",SOUNDS_TASKID);
  2032.                     set_task(13.0,"Trrrrr",SOUNDS_TASKID);
  2033.             }
  2034.            
  2035.             make_bartime(infected,(floatround(g_timer)));
  2036.     }
  2037.      
  2038.     public TikTok() client_cmd(0,"mp3 play sound/HyuNaS_HNR/alarm-thriller.mp3");
  2039.      
  2040.     public Trrrrr() client_cmd(0,"mp3 play sound/HyuNaS_HNR/Clock.mp3");
  2041.      
  2042.     public Infect_RandomPlayer(){
  2043.             if (!GameStarted || is_user_alive(infected))
  2044.                     return;
  2045.                    
  2046.             new rnd = get_randomplayer();
  2047.             infect_player(rnd,1);
  2048.     }
  2049.      
  2050.     public ShowTimer(taskid){
  2051.      
  2052.             if (!GameStarted)
  2053.             {
  2054.                     remove_task(TIMER_TASKID);
  2055.                     return;
  2056.             }
  2057.            
  2058.             if (!is_user_connected(infected))
  2059.             {
  2060.                     remove_task(TIMER_TASKID);
  2061.                     set_task(4.0,"Infect_RandomPlayer");
  2062.                     return;
  2063.             }
  2064.            
  2065.             if (g_timer < 0.1)
  2066.             {
  2067.                    
  2068.                     make_user_statusicon(infected,"dmg_bio",.status = STATUSICON_OFF);
  2069.                    
  2070.                     if (g_lasthit)
  2071.                     {
  2072.                             make_deathmsg(g_lasthit,infected,0,"");
  2073.                             user_silentkill(infected);
  2074.                            
  2075.                             g_lasthit = 0;
  2076.                     }
  2077.                    
  2078.                     else
  2079.                             user_kill(infected,1);
  2080.                            
  2081.                     set_task(4.0,"Infect_RandomPlayer");
  2082.                    
  2083.                     remove_task(TIMER_TASKID);
  2084.                     return;
  2085.             }
  2086.            
  2087.             set_dhudmessage(255,0,0,-1.0,0.71,1,0.0,0.12,0.0,0.0);
  2088.             show_dhudmessage(0,"Time Left: %.1f Seconds!^n^"%s^" Was Last Hit",g_timer,get_player_name(infected));
  2089.            
  2090.             g_timer-=0.1;
  2091.     }
  2092.      
  2093.     public WinnerBeam(client){
  2094.             static Origin[3];
  2095.             get_user_origin(client,Origin);
  2096.            
  2097.             message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  2098.             write_byte(TE_BEAMTORUS);
  2099.             write_coord(Origin[0]);
  2100.             write_coord(Origin[1]);
  2101.             write_coord(Origin[2]);
  2102.             write_coord(Origin[0]);
  2103.             write_coord(Origin[1]);
  2104.             write_coord(Origin[2] + 400);
  2105.             write_short(WinnerBeamspr);
  2106.             write_byte(0);
  2107.             write_byte(1);
  2108.             write_byte(7);
  2109.             write_byte(80);        
  2110.             write_byte(1);
  2111.             write_byte(random(256));
  2112.             write_byte(random(256));
  2113.             write_byte(random(256));
  2114.             write_byte(200);
  2115.             write_byte(0);        
  2116.             message_end();
  2117.     }
  2118.      
  2119.     public check_winner(){
  2120.             if (!get_pcvar_num(g_cvars[ENABLED]))
  2121.                     return;
  2122.                    
  2123.             static players[32],pnum;
  2124.             get_players(players,pnum,"aceh","TERRORIST");
  2125.            
  2126.             remove_task(TIMER_TASKID);
  2127.             remove_task(SOUNDS_TASKID);
  2128.            
  2129.             if (pnum == 1)
  2130.             {
  2131.                     g_winner = players[0];
  2132.                    
  2133.                     ExecuteForward(fwd_win,fwd_return,g_winner);
  2134.                    
  2135.                     fm_set_lights("b");
  2136.                    
  2137.                     set_task(0.21,"WinnerBeam",g_winner,.flags="b");
  2138.                    
  2139.                     set_dhudmessage(255,0,0,-1.0,0.71,2,6.0,20.0);
  2140.                     show_dhudmessage(0,"Congratulations!^n The winner is %s!",get_player_name(g_winner));
  2141.                    
  2142.                     new cash = (10 * get_playersnum());
  2143.                     new xp = (5 * get_playersnum());
  2144.                    
  2145.                     if (EventStarted)
  2146.                     {
  2147.                             cash*=2;
  2148.                             xp*=2;
  2149.                     }
  2150.                    
  2151.                     playerxp[g_winner]+=cash;
  2152.                     playercash[g_winner]+=cash;
  2153.                     g_wins[g_winner]++;
  2154.            
  2155.                 new players[32], num
  2156.     get_players(players, num, "a") // alive players
  2157.    
  2158.     for(new i = 0; i < num; i++)
  2159.     {
  2160.         ColorChat(players[i],"You have received 10 xp for surviving the round")
  2161.         iXp[players[i]]+= 10 // or whatever xp you want to give
  2162.         CheckLevel(players[i])
  2163.         SaveData(players[i])
  2164.                    
  2165.                     ColorChat(0,"Congratulations! The ^3winner^1%s is ^4%s^1!",(EventStarted ? " of the event":""),get_player_name(g_winner));
  2166.                     ColorChat(0,"^3%s^1 won in ^4%i ^3xp^1 and ^4%i ^3cash^1 for winning the %s!",get_player_name(g_winner),cash,xp,(EventStarted ? "event":"game"));
  2167.      
  2168.                     check_level(g_winner);
  2169.                    
  2170.                     client_cmd(0,"mp3 play sound/%s",g_winsounds[random(MAX_WIN_SOUNDS)]);
  2171.                    
  2172.                     set_task(20.0,"RestartGame");
  2173.                    
  2174.                     Event_RoundEnd();
  2175.                     GameStarted = true;
  2176.                    
  2177.                     return;
  2178.             }
  2179.      
  2180.             ColorChat(0,"Online:^4 %i ^3| ^1Alive:^4 %i ^3| ^1Dead:^4 %i",get_playersnum(),pnum,(get_playersnum() - pnum));
  2181.            
  2182.             set_task(4.0,"Infect_RandomPlayer");
  2183.     }
  2184.      
  2185.     public last_two(){
  2186.             static players[32],pnum;
  2187.             get_players(players,pnum,"aceh","TERRORIST");
  2188.            
  2189.             if (pnum == 2)
  2190.                     g_lasttwo = true;
  2191.     }
  2192.      
  2193.     public RestartGame(){
  2194.             GameStarted = false;
  2195.             server_cmd("sv_restart 1");
  2196.     }
  2197.      
  2198.     public SaveData(id){
  2199.             if (!is_user_connected(id) || is_user_bot(id) || is_user_hltv(id))
  2200.                     return;
  2201.            
  2202.             new SteamID[35];
  2203.             get_user_authid(id,SteamID,34);
  2204.            
  2205.             if(contain(SteamID,"_ID_LAN") != -1 || contain(SteamID,"STEAM_0:4") != -1 || contain(SteamID,"VALVE") != -1 || equali(SteamID,"STEAM_666:88:666"))
  2206.                     get_user_ip(id,SteamID,34,1);
  2207.            
  2208.             new szData[40];
  2209.            
  2210.             g_totalrounds[id]+=g_rounds[id];
  2211.             g_totalwins[id]+=g_wins[id];
  2212.                    
  2213.             formatex(szData,charsmax(szData),"%d %d %d %d %d",g_totalrounds[id],g_totalwins[id],playerlevel[id],playerxp[id],playercash[id]);
  2214.            
  2215.             fvault_set_data(g_szVault,SteamID,szData);
  2216.     }
  2217.      
  2218.     public LoadData(id){
  2219.             if (!is_user_connected(id) || is_user_bot(id) || is_user_hltv(id))
  2220.                     return;
  2221.            
  2222.             new SteamID[35];
  2223.             get_user_authid(id, SteamID, 34);
  2224.            
  2225.             if(contain(SteamID,"_ID_LAN") != -1 || contain(SteamID,"STEAM_0:4") != -1 || contain(SteamID,"VALVE") != -1 || equali(SteamID,"STEAM_666:88:666"))
  2226.                     get_user_ip(id,SteamID,34,1);
  2227.            
  2228.             new szData[40],szRounds[8],szWins[8],szLevel[8],szXp[8],szCash[8];
  2229.             if(fvault_get_data(g_szVault,SteamID,szData,charsmax(szData)))
  2230.             {
  2231.                     parse(szData,szRounds,charsmax(szRounds),szWins,charsmax(szWins),szLevel,charsmax(szLevel),szXp,charsmax(szXp),szCash,charsmax(szCash));
  2232.                    
  2233.                     g_totalrounds[id] = str_to_num(szRounds);
  2234.                     g_totalwins[id] = str_to_num(szWins);
  2235.                     playerlevel[id] = str_to_num(szLevel);
  2236.                     playerxp[id] = str_to_num(szXp);
  2237.                     playercash[id] = str_to_num(szCash);
  2238.             }
  2239.            
  2240.             else
  2241.             {
  2242.                     g_totalrounds[id] = 0;
  2243.                     g_totalwins[id] = 0;
  2244.                     playerlevel[id] = 0;
  2245.                     playerxp[id] = 0;
  2246.                     playercash[id] = 0;
  2247.             }
  2248.            
  2249.             g_wins[id] = 0;
  2250.             g_rounds[id] = 0;
  2251.     }
  2252.      
  2253.     //////////////
  2254.     /// Stocks ///
  2255.     //////////////
  2256.      
  2257.      
  2258.     stock get_randomplayer(){
  2259.             static players[32],pnum;
  2260.             get_players(players,pnum,"aceh","TERRORIST");
  2261.            
  2262.             if (pnum < 2)
  2263.                     return -1;
  2264.            
  2265.             return players[random(pnum)];
  2266.     }
  2267.      
  2268.     stock get_player_name(client){
  2269.             static szName[32];
  2270.             get_user_name(client,szName,31);
  2271.             return szName;
  2272.     }
  2273.      
  2274.     stock RemoveEntityAll(name[]){
  2275.             new ent = engfunc(EngFunc_FindEntityByString,0,"classname",name);
  2276.             new temp;
  2277.        
  2278.             while (ent)
  2279.             {
  2280.                     temp = engfunc(EngFunc_FindEntityByString,ent,"classname",name);
  2281.                     engfunc(EngFunc_RemoveEntity, ent);
  2282.                     ent = temp;
  2283.             }
  2284.            
  2285.             log_amx("DEBUG: Entity ^"%s^" was removed from the map",name);
  2286.     }
  2287.      
  2288.     stock do_effect(index,type){
  2289.             static origin[3], srco[3];
  2290.             get_user_origin(index,origin);
  2291.            
  2292.             origin[2] -= 26;
  2293.             srco[0] = origin[0] + 150;
  2294.             srco[1] = origin[1] + 150;
  2295.             srco[2] = origin[2] + 400;
  2296.            
  2297.             switch(type)
  2298.             {
  2299.                     case 0:
  2300.                     {
  2301.                             create_lightning(srco,origin);
  2302.                             emit_sound(index,CHAN_ITEM,"ambience/thunder_clap.wav",1.0,ATTN_NORM,0,PITCH_NORM);
  2303.                     }
  2304.                    
  2305.                     case 1: create_EarthQuake(index);
  2306.             }
  2307.     }
  2308.      
  2309.     stock check_level(client){
  2310.             if (!is_user_connected(client) || !get_pcvar_num(g_cvars[ENABLED]) || !get_pcvar_num(g_cvars[LEVELSYS]))
  2311.                     return;
  2312.                    
  2313.             if (playerlevel[client] == MAX_LEVELS)
  2314.                     return;
  2315.                    
  2316.             while (playerxp[client] > str_to_num(xps[playerlevel[client]]))
  2317.             {
  2318.                     playerlevel[client]++;
  2319.                     ColorChat(client,"Congratulations! You'r have level up! You'r new level is: ^4%i^1",playerlevel[client]);
  2320.                     ColorChat(0,"^3%s^1 has level up to level ^4%i^1!",get_player_name(client),playerlevel[client]);
  2321.             }
  2322.     }
  2323.      
  2324.     stock fm_set_lights(const lights[])
  2325.             engfunc(EngFunc_LightStyle,0,lights);
  2326.      
  2327.     stock bool:check_cash(client,amount)
  2328.             return (playercash[client] > amount ? true:false);
  2329.      
  2330.     stock MakeSickness(){
  2331.             static Origin[3];
  2332.             get_user_origin(infected,Origin);
  2333.            
  2334.             message_begin(MSG_PVS,SVC_TEMPENTITY,Origin);
  2335.             write_byte(TE_IMPLOSION);
  2336.             write_coord(Origin[0]);
  2337.             write_coord(Origin[1]);
  2338.             write_coord(Origin[2]);
  2339.             write_byte(128);
  2340.             write_byte(20);
  2341.             write_byte(3);
  2342.             message_end();
  2343.     }
  2344.      
  2345.     stock create_lightning(vec1[3],vec2[3]){
  2346.             //Lightning
  2347.             message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  2348.             write_byte(0);
  2349.             write_coord(vec1[0]);
  2350.             write_coord(vec1[1]);
  2351.             write_coord(vec1[2]);
  2352.             write_coord(vec2[0]);
  2353.             write_coord(vec2[1]);
  2354.             write_coord(vec2[2]);
  2355.             write_short(light);
  2356.             write_byte(1); // framestart
  2357.             write_byte(5);// framerate
  2358.             write_byte(2); // life
  2359.             write_byte(20); // width
  2360.             write_byte(30);// noise
  2361.             write_byte(200); // r, g, b
  2362.             write_byte(200); // r, g, b
  2363.             write_byte(200); // r, g, b
  2364.             write_byte(200); // brightness
  2365.             write_byte(200); // speed
  2366.             message_end();
  2367.            
  2368.             //Sparks
  2369.             message_begin(MSG_PVS,SVC_TEMPENTITY,vec2);
  2370.             write_byte(9);
  2371.             write_coord(vec2[0]);
  2372.             write_coord(vec2[1]);
  2373.             write_coord(vec2[2]);
  2374.             message_end();
  2375.            
  2376.             //Smoke
  2377.             message_begin(MSG_BROADCAST,SVC_TEMPENTITY,vec2);
  2378.             write_byte(5);
  2379.             write_coord(vec2[0]);
  2380.             write_coord(vec2[1]);
  2381.             write_coord(vec2[2]);
  2382.             write_short(smoke);
  2383.             write_byte(10);
  2384.             write_byte(10);
  2385.             message_end();
  2386.     }
  2387.      
  2388.     stock create_EarthQuake(index){
  2389.             static msgScreenShake;
  2390.            
  2391.             if (!msgScreenShake)
  2392.                     msgScreenShake = get_user_msgid("ScreenShake");
  2393.                    
  2394.             message_begin(MSG_ONE,msgScreenShake,{0,0,0},index);
  2395.             write_short(255<<14); //ammount
  2396.             write_short(10<<14); //lasts this long
  2397.             write_short(255<<14); //frequency
  2398.             message_end();
  2399.     }
  2400.      
  2401.     ////////////////////////////////////////////
  2402.     /// Thanks to Arkshine for this stock =] ///
  2403.     ////////////////////////////////////////////
  2404.      
  2405.     stock CreateFog(iRed = 127,iGreen = 127,iBlue = 127,iDensity = 7){
  2406.             static msgFog;
  2407.            
  2408.             if (!msgFog)
  2409.                     msgFog = get_user_msgid("Fog");
  2410.                    
  2411.             // Fog density offsets [Thnx to DA]
  2412.             new const fog_density[] = { 0, 0, 0, 0, 111, 18, 3, 58, 111, 18, 125, 58, 66, 96, 27, 59, 90, 101, 60, 59, 90,
  2413.                     101, 68, 59, 10, 41, 95, 59, 111, 18, 125, 59, 111, 18, 3, 60, 68, 116, 19, 60 };
  2414.        
  2415.             // Get the amount of density
  2416.             new dens;
  2417.             dens = (4 * iDensity);
  2418.                
  2419.             // The fog message
  2420.             message_begin(MSG_BROADCAST,msgFog,{0,0,0},0);
  2421.             write_byte(iRed); // Red
  2422.             write_byte(iGreen); // Green
  2423.             write_byte(iBlue); // Blue
  2424.             write_byte(fog_density[dens]); // SD
  2425.             write_byte(fog_density[dens + 1]); // ED
  2426.             write_byte(fog_density[dens + 2]); // D1
  2427.             write_byte(fog_density[dens + 3]); // D2
  2428.             message_end();
  2429.     }
  2430.      
  2431.     stock blind_player(index){
  2432.             message_begin(MSG_ONE,g_msgScreenFade,.player = index);
  2433.             write_short(1<<15);
  2434.             write_short(1<<10);
  2435.             write_short(1<<12);
  2436.             write_byte(0); // Red
  2437.             write_byte(0); // Green
  2438.             write_byte(0); // Blue
  2439.             write_byte(255); // Alpha
  2440.             message_end();
  2441.     }
  2442.      
  2443.     stock make_bartime(index,duration = 0){
  2444.             static msgBarTime;
  2445.            
  2446.             if (!msgBarTime)
  2447.                     msgBarTime = get_user_msgid("BarTime");
  2448.                    
  2449.             message_begin((index ? MSG_ONE:MSG_ALL),msgBarTime,.player = index);
  2450.             write_short(duration);
  2451.             message_end();
  2452.     }
  2453.      
  2454.     stock make_user_statusicon(index, const spr[], r = 0, g = 255, b = 255, status = STATUSICON_ON){
  2455.             static iconstatus;
  2456.            
  2457.             if (!iconstatus)
  2458.                     iconstatus = get_user_msgid("StatusIcon");
  2459.      
  2460.             message_begin((index ? MSG_ONE:MSG_ALL),iconstatus,.player = index);
  2461.             write_byte(status); // status (0=hide, 1=show, 2=flash)
  2462.             write_string(spr); // sprite name
  2463.             write_byte(r); // red
  2464.             write_byte(g); // green
  2465.             write_byte(b); // blue
  2466.             message_end();
  2467.     }
  2468.      
  2469.     stock ColorChat(const id,const string[],any:...){
  2470.             new msg[191], players[32], count = 1;
  2471.             static len; len = formatex(msg,charsmax(msg),"^4[ ^3HyuNaS HNR ^4]^1 ");
  2472.             vformat(msg[len],charsmax(msg) - len,string,3);
  2473.            
  2474.             static msgSayText;
  2475.            
  2476.             if (!msgSayText)
  2477.                     msgSayText = get_user_msgid("SayText");
  2478.            
  2479.             if(id)  players[0] = id;
  2480.             else    get_players(players,count,"ch");
  2481.            
  2482.             for (new i = 0; i < count; i++)
  2483.             {
  2484.                     if(is_user_connected(players[i]))
  2485.                     {
  2486.                             message_begin(MSG_ONE_UNRELIABLE,msgSayText,.player = players[i]);
  2487.                             write_byte(players[i]); // Sender ID
  2488.                             write_string(msg); // String 1
  2489.                             message_end();
  2490.                     }
  2491.             }
  2492.     }
  2493. public _register_maxlevels( plugin, params )
  2494.     {
  2495.         if( MaxLevel != 0 && StartedLevel != 0 )
  2496.         {
  2497.             return;
  2498.         }
  2499.         else
  2500.         {
  2501.             MaxLevel = get_param( 1 );
  2502.             StartedLevel = get_param( 2 );
  2503.         }
  2504.     }
  2505.      
  2506.     public _get_user_level( plugin, params )
  2507.     {
  2508.         return iLevel[ get_param( 1 ) ];
  2509.     }
  2510.      
  2511.     public _set_user_level( plugin, params )
  2512.     {
  2513.         iLevel[ get_param( 1 ) ] = max( get_param( 2 ), MaxLevel );
  2514.          
  2515.         FlsahLevelUp( get_param( 1 ) );
  2516.          
  2517.         SaveData( get_param( 1 ) );
  2518.          
  2519.         LoadData( get_param( 1 ) );
  2520.     }
  2521.      
  2522.     public _get_user_xp( plugin, params )
  2523.     {
  2524.         return iXp[ get_param( 1 ) ];
  2525.     }
  2526.      
  2527.     public _set_user_xp( plugin, params )
  2528.     {
  2529.         iXp[ get_param( 1 ) ] = get_param( 2 );
  2530.          
  2531.         CheckLevel( get_param( 1 ) );
  2532.          
  2533.         SaveData( get_param( 1 ) );
  2534.          
  2535.         LoadData( get_param( 1 ) );
  2536.     }
  2537.      
  2538.     public CheckLevel( id )
  2539.     {
  2540.         if( iLevel[id] == MaxLevel )
  2541.         {
  2542.             return;
  2543.         }
  2544.         else
  2545.         {
  2546.             new level = iLevel[id] > 0 ? iLevel[id] : 1;
  2547.              
  2548.             new xp = level * StartedLevel;
  2549.              
  2550.             if( iLevel[id] > 0 )
  2551.             {
  2552.                 xp +=  ( xp * 4 / 2 );
  2553.             }
  2554.              
  2555.             while( iXp[id] >= xp )
  2556.             {
  2557.                 iLevel[id]++;
  2558.                  
  2559.                 ColorChat(id,"^4Congratulations!^1 You'r have level up! You'r new^4 LEVEL^1 is: ^3%i^1.", iLevel[id]);  
  2560.                 ColorChat(0,"^3%s^1 has level up to^4 LEVEL^3 %i^1!",get_player_name(id), iLevel[id]);  
  2561.                  
  2562.                 FlsahLevelUp(id);
  2563.                  
  2564.                 ExecuteForward( Forward_levelup, ForwardReturn, id, iLevel[id], iXp[id] );
  2565.                  
  2566.                 SaveData( id );
  2567.                  
  2568.                 CheckLevel( id );
  2569.                  
  2570.                 break;
  2571.             }
  2572.         }
  2573.     }
  2574.      
  2575.     public FlsahLevelUp( id )
  2576.     {
  2577.         message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), { 0, 0, 0}, id );
  2578.         write_short( 1 << 10 );
  2579.         write_short( 1 << 10 );
  2580.         write_short( 0 );
  2581.         write_byte( 0 );
  2582.         write_byte( 255 );
  2583.         write_byte( 215 );
  2584.         write_byte( 100 );
  2585.         message_end( );
  2586.     }
  2587.      
  2588.      
  2589.     public HandleSay(id){
  2590.          
  2591.         if (get_pcvar_num(scout_on) == 0)
  2592.         {
  2593.             ColorChat(id, "The mod has been disabale.");
  2594.             return PLUGIN_HANDLED;
  2595.         }
  2596.          
  2597.         new iMsg[200], iArgs[4][60];  
  2598.         new level = iLevel[id] > 0 ? iLevel[id] : 1;
  2599.          
  2600.         new xp = level * StartedLevel;
  2601.          
  2602.         if( iLevel[id] > 0 )
  2603.         {
  2604.             xp +=  ( xp * 4 / 2 );
  2605.         }
  2606.          
  2607.         read_argv(1,iMsg ,sizeof iMsg - 1);  
  2608.         parse(iMsg,iArgs[0],charsmax(iArgs[]),iArgs[1],charsmax(iArgs[]),iArgs[2],charsmax(iArgs[]),iArgs[3],charsmax(iArgs[]));  
  2609.          
  2610.         if (equali(iArgs[0],"/level") || equali(iArgs[0],"/lvl") || equali(iArgs[0],"/xp"))  
  2611.         {      
  2612.             new player = cmd_target(id,iArgs[1],CMDTARGET_NO_BOTS);  
  2613.              
  2614.             if (!player)  
  2615.             {  
  2616.                 ColorChat( id, "Your^4 LEVEL^1 is:^3 %i^4 |^1 Your^4 XP^1 is:^3 %i^1/^3%i^1.", iLevel[id], iXp[id], xp );
  2617.             }  
  2618.         }  
  2619.          
  2620.         return 0;  
  2621.     }  
  2622.      
  2623.     public EventDeathMsg(id)
  2624.     {
  2625.         if (get_pcvar_num(scout_on) == 0)
  2626.             return PLUGIN_HANDLED;
  2627.          
  2628.         new killer = read_data( 1 );
  2629.         new victim = read_data( 2 );
  2630.          
  2631.         if( killer == victim || ! is_user_connected( killer ) || ! is_user_connected( victim ) )
  2632.         {
  2633.             return PLUGIN_HANDLED;
  2634.             //return;
  2635.         }
  2636.          
  2637.         new XpAmount = get_pcvar_num( cvar_KillXp );
  2638.          
  2639.         if( read_data( 3 ) )
  2640.         {
  2641.             XpAmount += get_pcvar_num( cvar_HsXp );
  2642.         }
  2643.          
  2644.         static sWeapon[ 26 ];
  2645.          
  2646.         read_data( 4, sWeapon, sizeof( sWeapon ) - 1 );
  2647.          
  2648.          
  2649.         if( equal( sWeapon, "scout" ) )    
  2650.         {
  2651.             XpAmount += get_pcvar_num( cvar_ScoutXp );
  2652.         }
  2653.          
  2654.         iXp[ killer ] += XpAmount;
  2655.          
  2656.         CheckLevel( killer );
  2657.          
  2658.         SaveData( killer );
  2659.          
  2660.         ColorChat( killer, "You have gained^3 %i^1 XP.", XpAmount );
  2661.          
  2662.         return PLUGIN_HANDLED;
  2663.     }
  2664.      
  2665.     public FwdPlayerSpawn( id )
  2666.     {
  2667.         ExecuteForward( Forward_spawn, ForwardReturn, id, iLevel[id], iXp[id] );
  2668.     }
  2669.      
  2670.     public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  2671.     {
  2672.         if( get_pcvar_num( scout_on ) == 0 )
  2673.             return HAM_IGNORED;
  2674.          
  2675.         if( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_SCOUT )
  2676.         {
  2677.             SetHamParamFloat(4, damage + Scout_model[attacker]);
  2678.              
  2679.             return HAM_HANDLED;
  2680.         }
  2681.          
  2682.         return HAM_IGNORED;
  2683.     }
  2684.      
  2685.     public ScoutSkinsMenu(id) {  
  2686.          
  2687.         if (!get_pcvar_num(scout_on))
  2688.         {
  2689.             ColorChat(id, "The mod has been disabale.");
  2690.             return PLUGIN_HANDLED;
  2691.         }
  2692.          
  2693.         new szItem[256];
  2694.          
  2695.         new level = iLevel[id] > 0 ? iLevel[id] : 1;
  2696.          
  2697.         new xp = level * StartedLevel;
  2698.          
  2699.         if( iLevel[id] > 0 )
  2700.         {
  2701.             xp +=  ( xp * 4 / 2 );
  2702.         }
  2703.          
  2704.         formatex(szItem, charsmax(szItem), "\w[ \r%s \w] \yScout Skins Menu \rv%s^n\yYour Level: \r%d \w- \yYour XP: \r%d\w/\r%d\w.^n\yPage:\r", g_VAULTNAME, VERSION,iLevel[id],iXp[id], xp);
  2705.         new menu = menu_create( szItem, "ScoutSkinsMenu_Handler" );  
  2706.        
  2707.         for (new i = 0; i < MAX_SCOUTS; i++)
  2708.         {
  2709.             formatex(szItem, charsmax(szItem), iLevel[id] >= g_scoutLevels[i] ? "%s [\yUNLOCKED\w]" : "\d%s [\rLEVEL %d REQUIRE\d]", iLevel[id] >= g_scoutLevels[i] ? g_scoutNames[i] : "?????????", g_scoutLevels[i]),
  2710.             menu_additem(menu, szItem, .paccess = (iLevel[id] >= g_scoutLevels[i]) ? 0 : 1);
  2711.         }
  2712.        
  2713.         menu_display(id, menu, 0 );
  2714.          
  2715.         return PLUGIN_HANDLED;
  2716.     }  
  2717.      
  2718.     public ScoutSkinsMenu_Handler(id, menu, item)  
  2719.     {
  2720.         if(item == MENU_EXIT)
  2721.         {
  2722.             menu_destroy(menu)
  2723.             return PLUGIN_HANDLED
  2724.         }
  2725.          
  2726.         SetScout(id, item);
  2727.         ColorChat(id, "The Scout you chose is: ^4%s^1.", g_scoutNames[item]);
  2728.          
  2729.         SaveData(id);
  2730.         return PLUGIN_HANDLED;
  2731.     }
  2732.      
  2733.     public SetScout(id, item) {  
  2734.          
  2735.         Scout_model[id] = item
  2736.          
  2737.         new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)  
  2738.         if ( Weapon != CSW_SCOUT )  
  2739.             return PLUGIN_HANDLED  
  2740.          
  2741.         new vModel[56],pModel[56]  
  2742.          
  2743.         if (get_pcvar_num(scout_on) == 0)
  2744.         {
  2745.             format(vModel,55,"models/v_scout.mdl")  
  2746.             return PLUGIN_HANDLED;
  2747.         }
  2748.          
  2749.         format(vModel,55, g_scoutvModels[item])  
  2750.         format(pModel,55,"models/p_Scout.mdl")
  2751.         entity_set_string(id, EV_SZ_viewmodel, vModel)  
  2752.         entity_set_string(id, EV_SZ_weaponmodel, pModel)  
  2753.          
  2754.         return PLUGIN_HANDLED;    
  2755.     }
  2756.      
  2757.     public PlayerLevelsMenu(id)
  2758.     {    
  2759.         if (get_pcvar_num(scout_on) == 0)
  2760.         {
  2761.             ColorChat(id, "The mod has been disabale.");
  2762.             return PLUGIN_HANDLED;
  2763.         }
  2764.          
  2765.         new some[256], menu;
  2766.          
  2767.         static players[32],szTemp[10],pnum;    
  2768.         get_players(players,pnum,"ch");
  2769.          
  2770.         formatex(some,255,"\w[ \r%s \w] \yPlayer's Level:\r", g_VAULTNAME);
  2771.          
  2772.         menu = menu_create(some,"PlayerLevelsMenu_Handler");
  2773.          
  2774.         for (new i; i < pnum; i++)
  2775.         {
  2776.             new level = iLevel[players[i]] > 0 ? iLevel[players[i]] : 1;
  2777.              
  2778.             new xp = level * StartedLevel;
  2779.              
  2780.             if( iLevel[players[i]] > 0 )
  2781.             {
  2782.                 xp +=  ( xp * 4 / 2 );
  2783.             }
  2784.              
  2785.             formatex(some,256,"%s \y(Level: \r%i\y) \w- \y(XP: \r%i\w/\r%i\y)",get_player_name(players[i]), iLevel[players[i]], iXp[players[i]], xp);
  2786.             num_to_str(players[i],szTemp,charsmax(szTemp));
  2787.             menu_additem(menu, some, szTemp);
  2788.         }
  2789.          
  2790.         menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
  2791.         menu_display(id, menu);
  2792.          
  2793.         return PLUGIN_HANDLED;
  2794.     }
  2795.      
  2796.     public PlayerLevelsMenu_Handler(id,menu, item){
  2797.         if (item == MENU_EXIT)
  2798.         {
  2799.             menu_destroy(menu);
  2800.             return;
  2801.         }
  2802.          
  2803.         new data[6] ,szName[64],access,callback;
  2804.          
  2805.         menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
  2806.          
  2807.         new player = str_to_num(data);
  2808.          
  2809.         new level = iLevel[player] > 0 ? iLevel[player] : 1;
  2810.          
  2811.         new xp = level * StartedLevel;
  2812.          
  2813.         if( iLevel[player] > 0 )
  2814.         {
  2815.             xp +=  ( xp * 4 / 2 );
  2816.         }
  2817.          
  2818.         ColorChat(id,"^3%s's ^4LEVEL ^1is: ^3%i ^1with ^3%i^1/^3%i ^4XP^1.",get_player_name(player), iLevel[player], iXp[player], xp);
  2819.         PlayerLevelsMenu(id);
  2820.     }
  2821.      
  2822.     public CurWeapon(id)  
  2823.     {
  2824.         // Set Knife Model
  2825.         SetScout(id, Scout_model[id])
  2826.     }  
  2827.      
  2828.     public givexp(id) {
  2829.         if (get_pcvar_num(scout_on) == 0)
  2830.         {
  2831.             ColorChat(id, "The mod has been disabale.");
  2832.             return PLUGIN_HANDLED;
  2833.         }
  2834.          
  2835.         if( get_user_flags( id ) & ADMIN_RCON ) {
  2836.              
  2837.             new PlayerToGive[32], XP[32]
  2838.             read_argv(1,PlayerToGive,31)
  2839.             read_argv(2,XP, 31)
  2840.             new Player = cmd_target(id,PlayerToGive,9)
  2841.              
  2842.             if(!Player) {
  2843.                  
  2844.                 return PLUGIN_HANDLED
  2845.                  
  2846.             }
  2847.              
  2848.             new XPtoGive = str_to_num(XP)
  2849.             new name[32],owner[32]
  2850.             get_user_name(id,owner,31)
  2851.             get_user_name(Player,name,31)
  2852.             ColorChat(0,"^4ADMIN^3 %s^1 give to^4 %s^3 %s^1 XP.", owner,name,XP );
  2853.             iXp[Player]+= XPtoGive
  2854.             CheckLevel(Player);
  2855.             SaveData(id)
  2856.              
  2857.         }
  2858.          
  2859.         else {
  2860.              
  2861.             client_print(id,print_console,"You have no acces to that command")
  2862.              
  2863.             return PLUGIN_HANDLED
  2864.         }
  2865.          
  2866.         return PLUGIN_HANDLED;
  2867.     }
  2868.      
  2869.     public takexp(id) {
  2870.         if (get_pcvar_num(scout_on) == 0)
  2871.         {
  2872.             ColorChat(id, "The mod has been disabale.");
  2873.             return PLUGIN_HANDLED;
  2874.         }
  2875.          
  2876.         if(get_user_flags(id) & ADMIN_RCON ) {
  2877.              
  2878.              
  2879.             new PlayerToTake[32], XP[32]
  2880.             read_argv(1,PlayerToTake,31 )
  2881.             read_argv(2,XP,31 )
  2882.             new Player = cmd_target(id,PlayerToTake,9)
  2883.              
  2884.             if(!Player) {
  2885.                  
  2886.                 return PLUGIN_HANDLED
  2887.                  
  2888.             }
  2889.              
  2890.             new XPtoTake = str_to_num(XP)
  2891.             new name[32],owner[32]
  2892.             get_user_name(id,owner,31)
  2893.             get_user_name(Player,name,31)
  2894.             ColorChat(0,"^4ADMIN^3 %s^1 take to^4 %s^3 %s^1 XP.", owner,name,XP );
  2895.             iXp[ Player ]-=XPtoTake
  2896.             CheckLevel(Player);
  2897.             SaveData(id)
  2898.              
  2899.         }
  2900.          
  2901.         else {
  2902.              
  2903.             client_print(id,print_console,"You have no acces to that command.")
  2904.              
  2905.             return PLUGIN_HANDLED
  2906.              
  2907.         }
  2908.          
  2909.         return PLUGIN_HANDLED;
  2910.     }
  2911.      
  2912.     public client_disconnect(id) {    
  2913.          
  2914.         if(task_exists(id)){
  2915.             remove_task(id)  
  2916.         }
  2917.         SaveData(id);
  2918.     }    
  2919.      
  2920.      
  2921.     public Scoutmessage(id) {  
  2922.          
  2923.         if (get_pcvar_num(scout_on) == 0)
  2924.             return PLUGIN_HANDLED;
  2925.          
  2926.         ColorChat(0, "Type ^3/Scout ^1in chat to open the ^4Scout Skins Menu^1.");  
  2927.         ColorChat(0, "This server is running ^4%s ^3v%s^1 by ^4%s^1.",g_VAULTNAME, VERSION, AUTHOR)
  2928.         return PLUGIN_HANDLED;
  2929.     }    
  2930.      
  2931.     public Levelmessage(id) {  
  2932.          
  2933.         if (get_pcvar_num(scout_on) == 0)
  2934.             return PLUGIN_HANDLED;
  2935.          
  2936.         ColorChat(0,"To see other ^4Players Level ^1type ^3/level ^1in chat.");  
  2937.         return PLUGIN_HANDLED;
  2938.     }
  2939.      
  2940.     public client_putinserver(id) LoadData(id);
  2941.      
  2942.     public SaveData(id){  
  2943.          
  2944.         new authid[32]  
  2945.         get_user_authid(id, authid, 31)  
  2946.          
  2947.         new vaultkey[64]  
  2948.         new vaultdata[64]  
  2949.          
  2950.         format(vaultkey, 63, "SCOUTMOD_%s", authid)  
  2951.         format(vaultdata, 63, "%d", Scout_model[id])  
  2952.         set_vaultdata(vaultkey, vaultdata)
  2953.          
  2954.         new data[ 16 ];
  2955.          
  2956.         get_user_authid( id, authid, sizeof( authid ) - 1 );
  2957.          
  2958.         formatex( data, sizeof( data ) - 1, "%d %d", iLevel[id], iXp[id] );
  2959.          
  2960.         fvault_set_data(g_VAULTNAME, authid, data );
  2961.          
  2962.         return;
  2963.          
  2964.          
  2965.     }  
  2966.      
  2967.     public LoadData(id){  
  2968.          
  2969.         new authid[32]  
  2970.         get_user_authid(id,authid,31)  
  2971.          
  2972.         new vaultkey[64], vaultdata[64]  
  2973.          
  2974.         format(vaultkey, 63, "SCOUTMOD_%s", authid)  
  2975.         get_vaultdata(vaultkey, vaultdata, 63)  
  2976.         Scout_model[id] = str_to_num(vaultdata)
  2977.          
  2978.         new data[ 16 ], szLevel[ 8 ], szXp[ 8 ];
  2979.          
  2980.         get_user_authid( id, authid, sizeof( authid ) - 1 );
  2981.          
  2982.         if( fvault_get_data(g_VAULTNAME, authid, data, sizeof( data ) - 1 ) )
  2983.         {
  2984.             strbreak( data, szLevel, sizeof( szLevel ) - 1, szXp, sizeof( szXp ) - 1 );
  2985.              
  2986.             iLevel[id] = str_to_num( szLevel );
  2987.             iXp[id] = str_to_num( szXp );
  2988.              
  2989.             return;
  2990.         }
  2991.         else
  2992.         {
  2993.             iLevel[id] = 0;
  2994.             iXp[id] = 0;
  2995.              
  2996.             return;
  2997.         }
  2998.     }
  2999.      
  3000.     stock get_player_name(id){
  3001.         static szName[32];
  3002.         get_user_name(id,szName,31);
  3003.         return szName;
  3004.     }
  3005.      
  3006.     stock ColorChat( const id, const string[ ], { Float, Sql, Resul, _ } : ... )
  3007.     {
  3008.     new msg[ 191 ], players[ 32 ], count = 1;
  3009.      
  3010.     static len;
  3011.     if (!len)
  3012.         len = formatex( msg, charsmax( msg ), "^x04[^x01 Scout-Skins^x04 ]^x01 " );
  3013.      
  3014.     vformat( msg[ len ], charsmax( msg ) - len, string, 3 );
  3015.      
  3016.     if( id )
  3017.         players[ 0 ] = id;
  3018.         else
  3019.             get_players( players,count,"ch" );
  3020.          
  3021.         for( new i = 0; i < count; i++ )
  3022.         {
  3023.                 message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _ , players[ i ] );
  3024.                 write_byte( players[ i ] );
  3025.                 write_string( msg );
  3026.                 message_end( );
  3027.         }
  3028.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement