Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- With Scout System
- #include <amxmodx>
- #include <amxmisc>
- #include <cstrike>
- #include <engine>
- #include <hamsandwich>
- #include <fakemeta_util>
- #include <fvault>
- #include <dhudmessage>
- #include <vault>
- // Because I like semicolons =P
- #pragma semicolon 1
- // To evoid AMX_ERR_STACKERR, AMX_ERR_STACKLOW and AMX_ERR_HEAPLOW debug errors
- #pragma dynamic 32768
- #pragma tabsize 0
- #define is_valid_player(%1) (1 <= %1 <= 32)
- // Plugin version
- #define PLUGIN_VERSION "1.0"
- // HitAndRun stuff taskids
- #define COUNTDOWN_TASKID 1336
- #define TIMER_TASKID 1337
- #define SOUNDS_TASKID 1338
- #define GAMESTART_TASKID 1339
- // Max win sounds
- #define MAX_WIN_SOUNDS 6
- // Max infecte sounds
- #define MAX_INFECTE_SOUNDS 3
- // Max levels that allowed
- #define MAX_LEVELS 21
- // Counter-Strike money offset
- #define OFFSET_CSMONEY 115
- // HeGrenade damage bit
- #define DMG_HEGRENADE (1<<24)
- /* make_user_statusicon(index, const spr[], r = 0, g = 255, b = 255, status = STATUSICON_ON) */
- #define STATUSICON_OFF 0
- #define STATUSICON_ON 1
- #define STATUSICON_FLASH 2
- /* Fog Settings */
- #define FOG_OFF 0
- #define FOG_LOW 3
- #define FOG_NORMAL 5
- #define FOG_HIGH 7
- #define FOG_MAX 9
- new infected = 0, bool:GameStarted = false;
- new bool:g_lasttwo = false;
- new Float:g_timer;
- new smoke, light, WinnerBeamspr;
- new g_winner;
- new g_lasthit = 0;
- new g_maxplayers;
- new HnrSync;
- new cd;
- new g_rounds[33],g_totalrounds[33],g_wins[33],g_totalwins[33];
- new xps[MAX_LEVELS] [] = {
- "10",
- "20",
- "40",
- "80",
- "160",
- "320",
- "640",
- "840",
- "1000",
- "1500",
- "2200",
- "3000",
- "4000",
- "7000",
- "11000",
- "20000",
- "32000",
- "44000",
- "58000",
- "80000",
- "100000"
- };
- new playerxp[33],playerlevel[33];
- new playercash[33];
- enum _:Events
- {
- EVENT_NONE,
- EVENT_GRAVITY,
- EVENT_KNIFE,
- EVENT_NOZOOM,
- EVENT_AWP,
- EVENT_FOG
- };
- enum _:Cvars
- {
- ENABLED,
- NOSLOWDOWN,
- NOZOOM,
- SCOUTDROP,
- BLOCKKILL,
- CASHSYS,
- ROUNDSYS,
- SENDSYS,
- GAMBLESYS,
- LEVELSYS
- };
- enum _:WepTemp
- {
- NAME[32],
- CLASS[32],
- COST,
- CSW,
- BULLETS
- };
- /* Name | Class | Cost | CSW Code | Bullets */
- new szPriWeapons [] [WepTemp] = {
- { "M4A1", "weapon_m4a1", 50, CSW_M4A1, 2 },
- { "MP5", "weapon_mp5navy", 60, CSW_MP5NAVY, 5 },
- { "M3", "weapon_m3", 70, CSW_M3, 6 }
- };
- /* Name | Class | Cost | CSW Code | - */
- new szGrenades [3] [WepTemp] = {
- { "HE Grenade", "weapon_hegrenade", 20, CSW_HEGRENADE },
- { "Flash Grenade", "weapon_flashbang", 15, CSW_FLASHBANG },
- { "Freeze Grenade", "weapon_smokegrenade", 20, CSW_SMOKEGRENADE }
- };
- /* - | - | Cost | - | Bullets */
- new szExtraAmmo [] [WepTemp] = {
- { "", "", 30, 0, 5 },
- { "", "", 70, 0, 15 },
- { "", "", 130, 0, 30 }
- };
- enum _:Powers
- {
- SPEED,
- INVISIBILITY,
- GRAVITY,
- NOHEGRENADE,
- NOFLASH
- };
- enum _:PwrTemp
- {
- PWR_NAME[64],
- PWR_TIME[16],
- PWR_COST
- };
- /* Name | Time | Cost */
- new szPwrs [Powers] [PwrTemp] = {
- { "Speed" ,"1 Round", 100 },
- { "Invisibility" ,"10 Seconds", 130 },
- { "Gravity", "1 Round", 130 },
- { "No He Grenade Infection", "1 Round" , 150 },
- { "No Flash", "1 Round", 170 }
- };
- new GambleNums [] = {
- 50,
- 100,
- 200,
- 400,
- 800,
- 1600,
- 3200,
- 6400,
- 12800,
- 25600,
- 51200,
- 102400
- };
- new g_GambleChoose[33];
- new const g_eventname[Events][] = {
- "",
- "Gravity Event",
- "Knife Event",
- "NoZoom Event",
- "Awp Event",
- "Fog Event"
- };
- new g_event = 0;
- new g_round = 0;
- new bool:EventStarted = false;
- new bool:fn = true;
- new bool:g_powers[33][Powers];
- new g_cvars[Cvars];
- new const g_szVault[] = "HitAndRun";
- new const g_winsounds [MAX_WIN_SOUNDS] [] = {
- "HyuNaS_HNR/winsound1.mp3",
- "HyuNaS_HNR/winsound2.mp3",
- "HyuNaS_HNR/winsound3.mp3",
- "HyuNaS_HNR/winsound4.mp3",
- "HyuNaS_HNR/winsound5.mp3",
- "HyuNaS_HNR/winsound6.mp3"
- };
- new const g_infectesounds [MAX_INFECTE_SOUNDS] [] = {
- "HyuNaS_HNR/infected1.wav",
- "HyuNaS_HNR/infected2.wav",
- "HyuNaS_HNR/infected3.wav"
- };
- new fwd_win,fwd_infected,fwd_event,fwd_return;
- new g_msgScreenFade;
- // NEW SCOUT
- new iLevel[33];
- new iXp[33];
- new scout_on;
- new MaxLevel;
- new StartedLevel;
- new g_msgSayText;
- new cvar_KillXp;
- new cvar_HsXp;
- new cvar_ScoutXp;
- new Forward_spawn;
- new Forward_levelup;
- new ForwardReturn;
- const MAX_SCOUTS = 12
- new const g_scoutNames[MAX_SCOUTS][32] =
- {
- "Normal Scout",
- "yellow Scout",
- "steyr scout",
- "sig sauer sg3000 scout",
- "safari scout",
- "pharaoh scout",
- "komando steyrscout scout",
- "default scout reskin gtwalq",
- "crossbow scout",
- "blue scout",
- "badass m24 scout",
- "ak scout"
- };
- new const g_scoutLevels[MAX_SCOUTS] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }
- new const g_scoutvModels[MAX_SCOUTS][256] =
- {
- "models/v_scout.mdl",
- "models/lolscouthnr/v_scout_yellow.mdl",
- "models/lolscouthnr/v_scout_steyr.mdl",
- "models/lolscouthnr/v_scout_sg3000.mdl",
- "models/lolscouthnr/v_scout_safari.mdl",
- "models/lolscouthnr/v_scout_pharaoh.mdl",
- "models/lolscouthnr/v_scout_komando.mdl",
- "models/lolscouthnr/v_scout_default.mdl",
- "models/lolscouthnr/v_scout_crossbow.mdl",
- "models/lolscouthnr/v_scout_blue.mdl",
- "models/lolscouthnr/v_scout_badass.mdl",
- "models/lolscouthnr/v_scout_ak.mdl"
- }
- native register_maxlevels( maxlevel = 99, started_xp_level = 100 );
- native get_user_level( index );
- native get_user_xp( index );
- public plugin_init(){
- register_plugin("HyuNaS HitAndRun & Scouts",PLUGIN_VERSION,"Hyuna & /A/ & SerMajor"); // /A/ & SerMajor for scout system
- ///////////////////////
- /// Client Commands ///
- ///////////////////////
- register_clcmd("jointeam","cmd_block");
- register_clcmd("chooseteam","cmd_block");
- register_clcmd("say","HandleSay");
- register_clcmd("say_team","HandleSay");
- register_clcmd("radio1","ActionShop");
- register_clcmd("radio2","ActionShop");
- register_clcmd("radio3","ActionShop");
- //////////////////
- /// Log Events ///
- //////////////////
- register_logevent("Event_RoundStart",2,"1=Round_Start");
- register_logevent("Event_RoundEnd",2,"1=Round_End");
- //////////////
- /// Events ///
- //////////////
- register_event("TextMsg","Event_RoundEnd","a","2&#Game_C","2&#Game_w");
- register_event("ResetHUD","Event_ResetHUD","b");
- register_event("HideWeapon","Event_HideWeapon","b");
- register_event("CurWeapon","Event_CurWeapon","be","1=1");
- register_event("ScreenFade", "Event_Flash","be","4=255","5=255","6=255","7>199");
- ////////////////
- /// CVARS!!! ///
- ////////////////
- register_cvar("amx_hnr_version",PLUGIN_VERSION,FCVAR_SERVER | FCVAR_SPONLY);
- g_cvars[ENABLED] = register_cvar("amx_hnr_enabled","1",FCVAR_SERVER);
- g_cvars[NOSLOWDOWN] = register_cvar("amx_hnr_noslowdown","1");
- g_cvars[NOZOOM] = register_cvar("amx_hnr_nozoom","0");
- g_cvars[SCOUTDROP] = register_cvar("amx_hnr_noscoutdrop","1");
- g_cvars[BLOCKKILL] = register_cvar("amx_hnr_blockkill","1");
- g_cvars[CASHSYS] = register_cvar("amx_hnr_cashsys","1");
- g_cvars[ROUNDSYS] = register_cvar("amx_hnr_roundsys","1");
- g_cvars[SENDSYS] = register_cvar("amx_hnr_sendsys","1");
- g_cvars[GAMBLESYS] = register_cvar("amx_hnr_gamblesys","1");
- g_cvars[LEVELSYS] = register_cvar("amx_hnr_levelsys","1");
- /////////////////
- /// Ham Stuff ///
- /////////////////
- RegisterHam(Ham_Killed,"player","fw_HamPlayerKilled",1);
- RegisterHam(Ham_TakeDamage,"player","fw_HamTakeDamage");
- RegisterHam(Ham_Spawn,"player","fw_HamPlayerSpawn",1);
- RegisterHam(Ham_Player_Jump,"player","fw_HamPlayerJump");
- RegisterHam(Ham_Weapon_SecondaryAttack,"weapon_scout","fw_ScoutOnZoomOn");
- RegisterHam(Ham_CS_Item_CanDrop,"weapon_scout","fw_ScoutCanDrop");
- ////////////////
- /// Messages ///
- ////////////////
- register_message(get_user_msgid("StatusIcon"),"msgStatusIcon");
- register_message(get_user_msgid("Money"),"MessageMoney");
- register_message(get_user_msgid("HideWeapon"),"MessageHideWeapon");
- ///////////////////
- /// Forwards!!! ///
- ///////////////////
- fwd_win = CreateMultiForward("hnr_client_won",ET_IGNORE,FP_CELL);
- fwd_infected = CreateMultiForward("hnr_client_infected",ET_IGNORE,FP_CELL);
- fwd_event = CreateMultiForward("hnr_event_started",ET_IGNORE,FP_CELL);
- register_forward(FM_GetGameDescription,"fw_GetGameDescription");
- register_forward(FM_ClientKill,"fw_ClientKill");
- set_task(30.0,"Adv_message",.flags="b");
- g_maxplayers = get_maxplayers();
- g_msgScreenFade = get_user_msgid("ScreenFade");
- HnrSync = CreateHudSyncObj();
- // scout
- // register max levels 13 is the top level, 100 is the started level xp.
- register_maxlevels( 13, 100 );
- //Admin commands
- register_concmd("scout_givexp" ,"givexp",ADMIN_RCON,"Add xp to a player")
- register_concmd("scout_takexp", "takexp",ADMIN_RCON,"Remove xp from a player");
- //Clcmd's
- scout_on = register_cvar( "Scout_skins", "1" )
- register_clcmd("say","HandleSay");
- register_clcmd("say_team","HandleSay")
- register_clcmd("say /scout", "ScoutSkinsMenu");
- register_clcmd("say /level", "PlayerLevelsMenu");
- //logevent
- register_logevent("round_end", 2, "1=Round_End")
- //Event's
- register_event("CurWeapon","CurWeapon","be","1=1");
- register_event( "DeathMsg", "EventDeathMsg", "a" );
- //Cvar's
- cvar_KillXp = register_cvar( "kill_xp", "5" );
- cvar_HsXp = register_cvar( "hs_xp", "2" );
- cvar_ScoutXp = register_cvar( "Scout_xp", "3" );
- //Ham's
- RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawn", 1 );
- RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
- //Forward's
- Forward_levelup = CreateMultiForward( "forward_client_levelup", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL );
- Forward_spawn = CreateMultiForward( "forward_client_spawn", ET_IGNORE, FP_CELL , FP_CELL, FP_CELL );
- set_task(15.0, "scoutmessage", 0, _, _, "b")
- set_task(35.0, "Levelmessage", 0, _, _, "b")
- g_msgSayText = get_user_msgid("SayText");
- }
- public plugin_cfg(){
- if (!cstrike_running())
- set_fail_state("Supports only Counter-Strike!");
- RemoveEntityAll("func_bomb_target");
- RemoveEntityAll("info_bomb_target");
- if (is_plugin_loaded("FrostNades") == -1)
- {
- fn = false;
- log_amx("DEBUG: Frostnade plugin not found!");
- }
- set_cvar_num("mp_flashlight",0);
- set_cvar_num("mp_roundtime",9);
- set_cvar_num("sv_airaccelerate",100);
- set_cvar_num("mp_freezetime",0);
- set_cvar_num("mp_limitteams",0);
- set_cvar_num("mp_autoteambalance",0);
- if (fn)
- {
- set_cvar_num("fn_enabled",1);
- set_cvar_num("fn_hitself",0);
- set_cvar_num("fn_los",0);
- set_cvar_num("fn_icon",2);
- }
- set_cvar_string("humans_join_team","T");
- LoadConfig();
- set_task(5.0,"RestartGame");
- }
- public LoadConfig(){
- new cfg[256],some[256];
- get_configsdir(some,255);
- formatex(cfg,255,"%s/HitAndRun.cfg",some);
- if (!file_exists(cfg))
- {
- log_amx("DEBUG: HitAndRun config file (%s) not found. Creating...",cfg);
- write_file(cfg,"////////////////////////////////////////////////////////////");
- formatex(some,255,"/// HyuNas HitAndRun v%s By Hyuna aka NorToN config file ///",PLUGIN_VERSION);
- write_file(cfg,some);
- write_file(cfg,"////////////////////////////////////////////////////////////");
- write_file(cfg,"");
- write_file(cfg,"");
- write_file(cfg,"/////////////////////");
- write_file(cfg,"/// General Cvars ///");
- write_file(cfg,"/////////////////////");
- write_file(cfg,"");
- write_file(cfg,"amx_hnr_enabled 1 // Enable/Disable the plugin. (Defualt: 1)");
- write_file(cfg,"amx_hnr_noslowdown 1 // Enable/Disable noslowdown after jump. (Defualt: 1)");
- write_file(cfg,"amx_hnr_nozoom 0 // Enable/Disable nozoom at scout. (Defualt: 0)");
- write_file(cfg,"amx_hnr_noscoutdrop 1 // Enable/Disable blocking scout from dropping. (Defualt: 1)");
- write_file(cfg,"amx_hnr_blockkill 1 // Enable/Disable blocking from client killing himself. (Defualt: 1)");
- write_file(cfg,"");
- write_file(cfg,"/////////////////////");
- write_file(cfg,"/// Systems Cvars ///");
- write_file(cfg,"/////////////////////");
- write_file(cfg,"amx_hnr_cashsys 1 // Enable/Disable Cash (aka Money aka Points) System. (Defualt: 1)");
- write_file(cfg,"amx_hnr_roundsys 1 // Enable/Disable Round & Wins Count System. (Defualt: 1)");
- write_file(cfg,"amx_hnr_sendsys 1 // Enable/Disable Send System. (Defualt: 1)");
- write_file(cfg,"amx_hnr_gamblesys 1 // Enable/Disable Gamble System. (Defualt: 1)");
- write_file(cfg,"amx_hnr_levelsys 1 // Enable/Disable Level System. (Defualt: 1)");
- log_amx("DEBUG: HitAndRun config file (%s) was succesfully created.",cfg);
- }
- server_cmd("exec %s",cfg);
- server_exec();
- log_amx("DEBUG: HitAndRun config file (%s) was succesfully executed.",cfg);
- }
- public plugin_precache(){
- // scout
- precache_model("models/lolscouthnr/v_scout_yellow.mdl")
- precache_model("models/lolscouthnr/v_scout_steyr.mdl")
- precache_model("models/lolscouthnr/v_scout_sg3000.mdl")
- precache_model("models/lolscouthnr/v_scout_safari.mdl")
- precache_model("models/lolscouthnr/v_scout_pharaoh.mdl")
- precache_model("models/lolscouthnr/v_scout_komando.mdl")
- precache_model("models/lolscouthnr/v_scout_default.mdl")
- precache_model("models/lolscouthnr/v_scout_crossbow.mdl")
- precache_model("models/lolscouthnr/v_scout_blue.mdl")
- precache_model("models/lolscouthnr/v_scout_badass.mdl")
- precache_model("models/lolscouthnr/v_scout_ak.mdl")
- smoke = precache_model("sprites/steam1.spr");
- light = precache_model("sprites/lgtning.spr");
- WinnerBeamspr = precache_model("sprites/zbeam2.spr");
- precache_sound("ambience/thunder_clap.wav");
- precache_sound("HyuNaS_HNR/loser.wav");
- precache_sound("HyuNaS_HNR/alarm-thriller.mp3");
- precache_sound("HyuNaS_HNR/Clock.mp3");
- precache_model("models/player/Adv-Sick/Adv-Sick.mdl");
- for (new i = 0; i <= MAX_WIN_SOUNDS - 1; i++)
- precache_sound(g_winsounds[i]);
- for (new j = 0; j <= MAX_INFECTE_SOUNDS - 1; j++)
- precache_sound(g_infectesounds[j]);
- }
- ///////////////////
- /// API Support ///
- ///////////////////
- public plugin_natives(){
- register_library("HitAndRun"); // API libarary support
- register_native("hnr_get_infected","_hnr_get_infected");
- register_native("hnr_get_lasthit","_hnr_get_lasthit");
- register_native("hnr_get_winner","_hnr_get_winner");
- register_native("hnr_started","_hnr_started");
- register_native("hnr_get_event","_hnr_get_event");
- register_native("hnr_get_user_rounds","_hnr_get_user_rounds");
- register_native("hnr_get_user_xp","_hnr_get_user_xp");
- register_native("hnr_get_user_level","_hnr_get_user_level");
- register_native("hnr_get_user_powers","_hnr_get_user_powers");
- //scout
- register_library( "scout-Skins" );
- register_native( "register_maxlevels", "_register_maxlevels" );
- register_native( "get_user_level", "_get_user_level" );
- register_native( "set_user_level", "_set_user_level" );
- register_native( "get_user_xp", "_get_user_xp" );
- register_native( "set_user_xp", "_set_user_xp" );
- }
- public _hnr_get_infected(plugin,params){
- return infected;
- }
- public _hnr_get_lasthit(plugin,params){
- return g_lasthit;
- }
- public _hnr_get_winner(plugin,params){
- return g_winner;
- }
- public bool:_hnr_started(plugin,params){
- return bool:GameStarted;
- }
- public _hnr_get_event(plugin,params){
- return g_event;
- }
- public _hnr_get_user_rounds(plugin,params){
- new client = get_param(1), total = get_param(2);
- if (is_user_connected(client))
- return (total ? (g_rounds[client] + g_totalrounds[client]) : g_rounds[client]);
- log_error(AMX_ERR_NATIVE,"[HitAndRun] Player %i is invaild!",client);
- return -1;
- }
- public _hnr_get_user_xp(plugin,params){
- new client = get_param(1);
- if (is_user_connected(client))
- return playerxp[client];
- log_error(AMX_ERR_NATIVE,"[HitAndRun] Player %i is invaild!",client);
- return -1;
- }
- public _hnr_get_user_level(plugin,params){
- new client = get_param(1);
- if (is_user_connected(client))
- return playerlevel[client];
- log_error(AMX_ERR_NATIVE,"[HitAndRun] Player %i is invaild!",client);
- return -1;
- }
- public _hnr_get_user_powers(plugin,params){
- new client = get_param(1);
- new powers;
- if (is_user_connected(client))
- {
- for (new i = 0; i < Powers; i++)
- if (g_powers[client][i])
- powers |= 1<<i;
- return powers;
- }
- log_error(AMX_ERR_NATIVE,"[HitAndRun] Player %i is invaild!",client);
- return 0;
- }
- ///////////////////
- /// Save & Load ///
- ///////////////////
- public client_putinserver(client) LoadData(client);
- public client_disconnect(client){
- set_task(0.5,"check");
- SaveData(client);
- }
- public check(){
- if (get_playersnum() < 2)
- {
- if (!GameStarted)
- {
- remove_task(COUNTDOWN_TASKID);
- Event_RoundStart();
- }
- else
- RestartGame();
- }
- }
- /////////////////////
- /// Some say cmds ///
- /////////////////////
- public HandleSay(client){
- new iMsg[200], iArgs[4][60];
- read_argv(1,iMsg ,sizeof iMsg - 1);
- parse(iMsg,iArgs[0],charsmax(iArgs[]),iArgs[1],charsmax(iArgs[]),iArgs[2],charsmax(iArgs[]),iArgs[3],charsmax(iArgs[]));
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return 0;
- if(equali(iArgs[0],"/hnrstats"))
- {
- if (!get_pcvar_num(g_cvars[ROUNDSYS]))
- {
- ColorChat(client,"HNR Stats system is disabled!");
- return 0;
- }
- new player = cmd_target(client,iArgs[1],CMDTARGET_NO_BOTS);
- if (!player)
- {
- ColorChat(client,"Rounds Played: ^4%i ^3| ^1 Total Rounds Played: ^4%i",g_rounds[client],g_totalrounds[client]);
- ColorChat(client,"Wins: ^4%i ^3| ^1Total Wins: ^4%i",g_wins[client],g_totalwins[client]);
- }
- else
- {
- ColorChat(client,"^3%s^1 HNR game status:",get_player_name(player));
- ColorChat(client,"Rounds Played: ^4%i ^3| ^1 Total Rounds Played: ^4%i",g_rounds[player],g_totalrounds[player]);
- ColorChat(client,"Wins: ^4%i ^3| ^1Total Wins: ^4%i",g_wins[client],g_totalwins[player]);
- }
- }
- else if (equali(iArgs[0],"/cash"))
- {
- if (!get_pcvar_num(g_cvars[CASHSYS]))
- {
- ColorChat(client,"HNR Cash system is disabled!");
- return 0;
- }
- new player = cmd_target(client,iArgs[1],CMDTARGET_NO_BOTS);
- if (!player)
- ColorChat(client,"Your Cash: ^4%i",playercash[client]);
- else
- ColorChat(client,"^3%s^1 Cash: ^4%i",get_player_name(player),playercash[player]);
- }
- else if (equali(iArgs[0],"/shop"))
- ActionShop(client);
- else if (equali(iArgs[0],"/level") || equali(iArgs[0],"/lvl") || equali(iArgs[0],"/xp"))
- {
- if (!get_pcvar_num(g_cvars[LEVELSYS]))
- {
- ColorChat(client,"HNR Level system is disabled!");
- return 0;
- }
- new player = cmd_target(client,iArgs[1],CMDTARGET_NO_BOTS);
- if (!player)
- {
- ColorChat(client,"Level: ^4%i ^3| ^1Xp: ^4%i ^3| ^1Xp to next level: ^4%i"
- ,playerlevel[client]
- ,playerxp[client]
- ,(playerlevel[client] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[client] + 1]) - playerxp[client])));
- }
- else
- {
- ColorChat(client,"^3%s^1 Level Status:",get_player_name(player));
- ColorChat(client,"Level: ^4%i ^3| ^1Xp: ^4%i ^3| ^1Xp to next level: ^4%i"
- ,playerlevel[player]
- ,playerxp[player]
- ,(playerlevel[player] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[player] + 1]) - playerxp [player])));
- }
- }
- else if (equali( iArgs[0],"/send"))
- {
- if (!get_pcvar_num(g_cvars[SENDSYS]) || !get_pcvar_num(g_cvars[CASHSYS]))
- {
- ColorChat(client,"HNR Send/Cash system is disabled!");
- return 0;
- }
- if (equali(iArgs[1],""))
- {
- ColorChat(client,"Usage: ^4/send <target> <amount>");
- return 1;
- }
- new player = cmd_target(client,iArgs[1],CMDTARGET_NO_BOTS);
- if (!player || player == client)
- {
- ColorChat(client,"You can't send cash to yourself!");
- return 1;
- }
- if(!is_str_num(iArgs[2]))
- {
- ColorChat(client,"You must enter ^3numbers^1!");
- return 1;
- }
- new num = str_to_num(iArgs[2]);
- if (!check_cash(client,num))
- {
- ColorChat(client,"You don't have that amount of cash!");
- return 1;
- }
- playercash[client] -= num;
- playercash[player] += num;
- ColorChat(client,"You send ^4%i^3 cash^1 to ^3%s^1.",num,get_player_name(player));
- ColorChat(player,"^3%s^1 send ^4%i^3 cash^1 to you.",get_player_name(client),num);
- ColorChat(0,"^3%s^1 send ^4%i^3 cash^1 to ^3%s^1.",get_player_name(client),num,get_player_name(player));
- return 1;
- }
- else if(equali(iArgs[0],"/gamble"))
- {
- if (!get_pcvar_num(g_cvars[GAMBLESYS]) || !get_pcvar_num(g_cvars[CASHSYS]))
- {
- ColorChat(client,"HNR Gamble/Cash system is disabled!");
- return 0;
- }
- if(!is_str_num(iArgs[1]))
- {
- ColorChat(client,"You ^3must ^1enter ^1numbers^1!");
- return 1;
- }
- else if(playercash[client] < str_to_num(iArgs[1]))
- {
- ColorChat(client,"You ^3don't ^1have enough ^3cash^1!");
- return 1;
- }
- else if(str_to_num(iArgs[1]) < 50)
- {
- ColorChat(client,"You ^3must ^1gamble on more than^4 50 ^3cash^1!");
- return 1;
- }
- Action_Gamble(client,(str_to_num(iArgs[1])));
- return 1;
- }
- else if (equali(iArgs[0],"/next") || equali(iArgs[0],"/nextlevel") || equali(iArgs[0],"/nextlvl"))
- {
- if (!get_pcvar_num(g_cvars[LEVELSYS]))
- {
- ColorChat(client,"HNR Level system is disabled!");
- return 0;
- }
- ColorChat(client,"Xp to next level: ^4%i",(playerlevel[client] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[client] + 1]) - playerxp[client])));
- }
- else if (equali(iArgs[0],"/scout"))
- {
- ColorChat(client,"HyuNaS HitAndRun scout system is currently unavailable.");
- return 1;
- }
- else if (equali(iArgs[0],"/rs"))
- ActionReset(client);
- else if (equali(iArgs[0],"/hnrhelp"))
- ActionHelp(client);
- else if (equali(iArgs[0],"/event"))
- {
- if (EventStarted)
- ColorChat(client,"^3%s^1 is running now!",g_eventname[g_event]);
- else if (get_playersnum() < 3)
- ColorChat(client,"Need at least^4 3 players^1 to start an ^4Event^1!");
- else if (g_round == 6)
- ColorChat(client,"Event will start next round.");
- else
- ColorChat(client,"Rounds until the next event will start: ^4%i^1.",(7 - g_round));
- }
- return 0;
- }
- /////////////////////
- /// Gamble Action ///
- /////////////////////
- public Action_Gamble(client,cash){
- new GambledNum = random(101);
- switch(GambledNum)
- {
- case 0..49:
- {
- ColorChat(0,"^3%s^1 has gambled on ^4%i^1 cash and ^3lost^1!",get_player_name(client),cash);
- playercash[client]-=cash;
- client_cmd(client,"spk HyuNaS_HNR/loser.wav");
- }
- case 50..100:
- {
- ColorChat(0,"^3%s^1 has gambled on ^4%i^1 cash and ^3WON^1!",get_player_name(client),cash);
- playercash[client]+=cash;
- }
- }
- }
- ////////////
- /// Shop ///
- ////////////
- public ActionShop(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return 0;
- new some[256],shop,cb;
- 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"));
- shop = menu_create(some,"Shop_Handler");
- cb = menu_makecallback("Shop_CallBack");
- menu_additem(shop,"\yWeapons Shop",.callback=cb);
- menu_additem(shop,"\yGrenades Shop",.callback=cb);
- menu_additem(shop,"\yExtra Ammo Shop",.callback=cb);
- menu_additem(shop,"\yPowers Shop",.callback=cb);
- menu_addblank(shop,5);
- menu_additem(shop,"\yMisc Stuff");
- menu_addblank(shop,6);
- menu_additem(shop,"\yHelp");
- menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
- menu_setprop(shop,MPROP_EXITNAME,"\yExit Shop");
- menu_display(client,shop);
- return 1;
- }
- public Shop_CallBack(client,shop,item){
- if (EventStarted || !get_pcvar_num(g_cvars[CASHSYS]) || !is_user_alive(client))
- return ITEM_DISABLED;
- return ITEM_ENABLED;
- }
- public Shop_Handler(client,shop,item){
- if (item == MENU_EXIT)
- {
- menu_destroy(shop);
- return;
- }
- switch (item)
- {
- case 0: ActionWepShop(client);
- case 1: ActionGreShop(client);
- case 2: ActionExtShop(client);
- case 3: ActionPwrShop(client);
- case 4: ActionMisc(client);
- case 5:
- {
- ActionHelp(client);
- ActionShop(client);
- return;
- }
- }
- menu_destroy(shop);
- }
- public ActionWepShop(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new some[256],shop,cb;
- 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"));
- shop = menu_create(some,"WepShop_Handler");
- cb = menu_makecallback("Shop_CallBack");
- for (new i = 0; i < sizeof szPriWeapons; i++)
- {
- formatex(some,255,"\y%s \d[\r %i Bullets \d] [\y %i Cash \d]",szPriWeapons[i][NAME],szPriWeapons[i][BULLETS],szPriWeapons[i][COST]);
- menu_additem(shop,some,.callback=cb);
- }
- menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
- menu_setprop(shop,MPROP_EXITNAME,"\yBack");
- menu_display(client,shop);
- }
- public WepShop_Handler(client,shop,item){
- if (item == MENU_EXIT || !is_user_alive(client))
- {
- menu_destroy(shop);
- ActionShop(client);
- return;
- }
- if (user_has_weapon(client,szPriWeapons[item][CSW]))
- {
- ColorChat(client,"You already have ^4%s^1!",szPriWeapons[item][NAME]);
- ActionWepShop(client);
- return;
- }
- if (!check_cash(client,szPriWeapons[item][COST]))
- {
- ColorChat(client,"You don't have enought cash to buy ^4%s^1!",szPriWeapons[item][NAME]);
- ActionWepShop(client);
- return;
- }
- new weapon = fm_give_item(client,szPriWeapons[item][CLASS]);
- cs_set_user_bpammo(client,szPriWeapons[item][CSW],0);
- if (weapon > 0)
- cs_set_weapon_ammo(weapon,szPriWeapons[item][BULLETS]);
- playercash[client] -= szPriWeapons[item][COST];
- 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]);
- menu_destroy(shop);
- }
- public ActionGreShop(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new some[256],shop,cb;
- 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"));
- shop = menu_create(some,"GreShop_Handler");
- cb = menu_makecallback("Shop_CallBack");
- for (new i =0; i < 3; i++)
- {
- formatex(some,255,"\y%s \d[\y %i Cash \d]",szGrenades[i][NAME],szGrenades[i][COST]);
- menu_additem(shop,some,.callback=cb);
- }
- menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
- menu_setprop(shop,MPROP_EXITNAME,"\yBack");
- menu_display(client,shop);
- }
- public GreShop_Handler(client,shop,item){
- if (item == MENU_EXIT || !is_user_alive(client))
- {
- menu_destroy(shop);
- ActionShop(client);
- return;
- }
- if (item == 2 && !fn)
- {
- ColorChat(client,"FrostNade plugin isn't installed on this server!");
- ActionGreShop(client);
- return;
- }
- if (user_has_weapon(client,szGrenades[item][CSW]))
- {
- client_print(client,print_center,"#Cstrike_TitlesTXT_Cannot_Carry_Anymore");
- ActionGreShop(client);
- return;
- }
- if (!check_cash(client,szGrenades[item][COST]))
- {
- ColorChat(client,"You don't have enought cash to buy ^4%s^1!",szGrenades[item][NAME]);
- ActionGreShop(client);
- return;
- }
- fm_give_item(client,szGrenades[item][CLASS]);
- playercash[client] -= szGrenades[item][COST];
- ColorChat(client,"You bought ^4%s^1 for ^4%i cash^1!",szGrenades[item][NAME],szGrenades[item][COST]);
- menu_destroy(shop);
- }
- public ActionExtShop(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new some[256],shop,cb;
- 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"));
- shop = menu_create(some,"ExtShop_Handler");
- cb = menu_makecallback("Shop_CallBack");
- for (new i =0; i < sizeof szExtraAmmo; i++)
- {
- formatex(some,255,"\yExtra Ammo Pack %i \d[\r %i Bullets \d] [\y %i Cash \d]",(i+1),szExtraAmmo[i][BULLETS],szExtraAmmo[i][COST]);
- menu_additem(shop,some,.callback=cb);
- }
- menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
- menu_setprop(shop,MPROP_EXITNAME,"\yBack");
- menu_display(client,shop);
- }
- public ExtShop_Handler(client,shop,item){
- if (item == MENU_EXIT || !is_user_alive(client))
- {
- menu_destroy(shop);
- ActionShop(client);
- return;
- }
- if (!user_has_weapon(client,CSW_SCOUT))
- {
- ColorChat(client,"You must have a ^4scout^1 to buy any ^4Extra Ammo Pack^1.");
- ActionExtShop(client);
- return;
- }
- if (!check_cash(client,szExtraAmmo[item][COST]))
- {
- ColorChat(client,"You don't have enought cash to buy ^4Extra Ammo Pack %i^1!",(item+1));
- ActionExtShop(client);
- return;
- }
- if (cs_get_user_bpammo(client,CSW_SCOUT) >= 90)
- {
- ColorChat(client,"You cann't buy more ^4Extra Ammo Packs^1!");
- ActionExtShop(client);
- return;
- }
- cs_set_user_bpammo(client,CSW_SCOUT,(cs_get_user_bpammo(client,CSW_SCOUT) + szExtraAmmo[item][BULLETS]));
- if(cs_get_user_bpammo(client,CSW_SCOUT) > 90)
- cs_set_user_bpammo(client,CSW_SCOUT,90);
- playercash[client] -= szExtraAmmo[item][COST];
- client_cmd(client,"spk ^"\items/9mmclip1^"");
- 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]);
- menu_destroy(shop);
- }
- public ActionPwrShop(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new some[256],shop,cb;
- 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"));
- shop = menu_create(some,"PwrShop_Handler");
- cb = menu_makecallback("Shop_CallBack2");
- for (new i = 0; i < sizeof szPwrs; i++)
- {
- 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]);
- menu_additem(shop,some,.callback=cb);
- }
- menu_setprop(shop,MPROP_EXIT,MEXIT_ALL);
- menu_setprop(shop,MPROP_EXITNAME,"\yBack");
- menu_display(client,shop);
- }
- public PwrShop_Handler(client,shop,item){
- if (item == MENU_EXIT)
- {
- menu_destroy(shop);
- ActionShop(client);
- return;
- }
- if (client == infected)
- {
- ColorChat(client,"You musn't be infected to use the ^4Powers Shop^1!");
- menu_destroy(shop);
- ActionPwrShop(client);
- return;
- }
- if (!check_cash(client,szPwrs[item][PWR_COST]))
- {
- ColorChat(client,"You don't have enought cash to buy ^4%s^1!",szPwrs[item][PWR_NAME]);
- ActionPwrShop(client);
- return;
- }
- g_powers[client][item] = true;
- playercash[client] -= szPwrs[item][PWR_COST];
- switch(item)
- {
- case SPEED:
- {
- new maxspeed = pev(client,pev_maxspeed);
- maxspeed*=2.0;
- set_pev(client,pev_maxspeed,maxspeed);
- }
- case INVISIBILITY:
- {
- fm_set_entity_visibility(client,0);
- set_task(10.0,"RemoveInv",client);
- }
- case GRAVITY: set_pev(client,pev_gravity,0.7);
- }
- 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]);
- menu_destroy(shop);
- }
- public RemoveInv(client){
- if(is_user_alive(client))
- {
- ColorChat(client,"^4Invisibility Power^1 has gone! You are ^3visible^1 now!");
- fm_set_entity_visibility(client,1);
- }
- g_powers[client][INVISIBILITY] = false;
- }
- public Shop_CallBack2(client,shop,item){
- if (!is_user_alive(client) || g_powers[client][item] || EventStarted || !get_pcvar_num(g_cvars[CASHSYS]))
- return ITEM_DISABLED;
- return ITEM_ENABLED;
- }
- public ActionPlrStatus(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new some[256],PlrStatus;
- static players[32],szTemp[10],pnum;
- get_players(players,pnum,"ch");
- if (pnum < 2)
- {
- ColorChat(client,"No other players on this server!");
- ActionMisc(client);
- return;
- }
- formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yPlayers Status ^nYour cash: \r%i",playercash[client]);
- PlrStatus = menu_create(some,"PlrStatus_Handler");
- for (new i; i < pnum; i++)
- {
- if (!is_user_connected(players[i]) || players[i] == client)
- continue;
- 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]]);
- num_to_str(players[i],szTemp,charsmax(szTemp));
- menu_additem(PlrStatus,some,szTemp);
- }
- menu_setprop(PlrStatus,MPROP_EXITNAME,"\yBack");
- menu_setprop(PlrStatus,MPROP_EXIT,MENU_EXIT);
- menu_display(client,PlrStatus);
- }
- public PlrStatus_Handler(client,PlrStatus,item){
- if (item == MENU_EXIT)
- {
- menu_destroy(PlrStatus);
- ActionMisc(client);
- return;
- }
- new data[6],szName[64],access,callback;
- menu_item_getinfo(PlrStatus,item,access,data,charsmax(data),szName,charsmax(szName),callback);
- new player = str_to_num(data);
- if (!is_user_connected(player))
- {
- menu_destroy(PlrStatus);
- ActionPlrStatus(client);
- return;
- }
- ColorChat(client,"^4%s^1 Status:",get_player_name(player));
- ColorChat(client,"Cash: ^4%i",playercash[player]);
- ColorChat(client,"Rounds Played: ^4%i ^3| ^1 Total Rounds Played: ^4%i",g_rounds[player],g_totalrounds[player]);
- ColorChat(client,"Wins: ^4%i ^3| ^1Total Wins: ^4%i",g_wins[player],g_totalwins[player]);
- ColorChat(client,"Level: ^4%i ^3| ^1Xp: ^4%i ^3| ^1Xp to next level: ^4%i"
- ,playerlevel[player]
- ,playerxp[player]
- ,(playerlevel[player] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[player] + 1]) - playerxp [player])));
- ActionPlrStatus(client);
- }
- public ActionMisc(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new some[256],cb,misc;
- formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yMisc Stuff ^nYour cash: \r%i",playercash[client]);
- misc = menu_create(some,"Misc_Handler");
- cb = menu_makecallback("Shop_CallBack3");
- menu_additem(misc,"\yEvents \d[\r Admin Only \d]",.callback = cb);
- menu_additem(misc,"\yGamble Cash");
- menu_additem(misc,"\yPlayers Status");
- menu_additem(misc,"\yYour Status");
- menu_setprop(misc,MPROP_EXITNAME,"\yBack");
- menu_setprop(misc,MPROP_EXIT,MENU_EXIT);
- menu_display(client,misc);
- }
- public Shop_CallBack3(client,misc,item)
- return (EventStarted || GameStarted || g_round == 6 || !(get_user_flags(client) & ADMIN_LEVEL_B) || get_playersnum() < 3) ? ITEM_DISABLED:ITEM_ENABLED;
- public Misc_Handler(client,misc,item){
- if (item == MENU_EXIT)
- {
- menu_destroy(misc);
- ActionShop(client);
- return;
- }
- switch(item)
- {
- case 0: ActionEvents(client);
- case 1: ActionGamble(client);
- case 2: ActionPlrStatus(client);
- case 3:
- {
- ColorChat(client,"Your Status:");
- ColorChat(client,"Cash: ^4%i",playercash[client]);
- ColorChat(client,"Rounds Played: ^4%i ^3| ^1 Total Rounds Played: ^4%i",g_rounds[client],g_totalrounds[client]);
- ColorChat(client,"Wins: ^4%i ^3| ^1Total Wins: ^4%i",g_wins[client],g_totalwins[client]);
- ColorChat(client,"Level: ^4%i ^3| ^1Xp: ^4%i ^3| ^1Xp to next level: ^4%i"
- ,playerlevel[client]
- ,playerxp[client]
- ,(playerlevel[client] == MAX_LEVELS ? 0:(str_to_num(xps[playerlevel[client] + 1]) - playerxp[client])));
- ActionMisc(client);
- return;
- }
- }
- menu_destroy(misc);
- }
- public ActionEvents(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new some[256],cb,misc;
- formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yEvents ^nYour cash: \r%i",playercash[client]);
- misc = menu_create(some,"Events_Handler");
- cb = menu_makecallback("Shop_CallBack3");
- for (new i = 1; i < sizeof g_eventname; i++)
- {
- formatex(some,255,"\y%s \d[\y x2 Cash \d] [\y x2 XP \d]",g_eventname[i]);
- menu_additem(misc,some,.callback = cb);
- }
- menu_setprop(misc,MPROP_EXITNAME,"\yBack");
- menu_setprop(misc,MPROP_EXIT,MENU_EXIT);
- menu_display(client,misc);
- }
- public Events_Handler(client,misc,item){
- if (item == MENU_EXIT)
- {
- menu_destroy(misc);
- ActionMisc(client);
- return;
- }
- else if (get_playersnum() < 3)
- {
- ColorChat(client,"Need at least^4 3 players^1 to start an ^4Event^1!");
- ActionMisc(client);
- return;
- }
- ActionEvent(item + 1);
- ColorChat(0,"^3%s^1 has started ^4%s^1!",get_player_name(client),g_eventname[item + 1]);
- menu_destroy(misc);
- }
- public ActionGamble(client){
- if (!get_pcvar_num(g_cvars[ENABLED]) || !get_pcvar_num(g_cvars[GAMBLESYS]))
- return;
- new some[256],misc;
- formatex(some,255,"\d[\y HyuNaS HNR Shop \d] ^n\yGamble Cash ^nYour cash: \r%i",playercash[client]);
- misc = menu_create(some,"Gamble_Handler");
- formatex(some,255,"\yGambled Cash: \d[\r %i \d]",GambleNums[g_GambleChoose[client]]);
- menu_additem(misc,some);
- menu_additem(misc,"\yGamble NOW!");
- menu_setprop(misc,MPROP_EXITNAME,"\yBack");
- menu_setprop(misc,MPROP_EXIT,MENU_EXIT);
- menu_display(client,misc);
- }
- public Gamble_Handler(client,misc,item){
- if (item == MENU_EXIT)
- {
- menu_destroy(misc);
- ActionMisc(client);
- return;
- }
- switch (item)
- {
- case 0:
- {
- g_GambleChoose[client]++;
- if (g_GambleChoose[client] > charsmax(GambleNums))
- g_GambleChoose[client] = 0;
- ActionGamble(client);
- return;
- }
- case 1:
- {
- if(!check_cash(client,GambleNums[g_GambleChoose[client]]))
- {
- ColorChat(client,"You ^3don't ^1have enough ^3cash^1!");
- g_GambleChoose[client] = 0;
- ActionGamble(client);
- return;
- }
- Action_Gamble(client,GambleNums[g_GambleChoose[client]]);
- g_GambleChoose[client] = 0;
- }
- }
- menu_destroy(misc);
- }
- //////////////////////
- /// HitAndRun Help ///
- //////////////////////
- public ActionHelp(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new Help[3500];
- add(Help,charsmax(Help),"<html><head><title>HyuNaS HitAndRun Help</title></head><body bgcolor=^"000000^"><font color=^"#FFFFFF^"><center>");
- add(Help,charsmax(Help),"<h1>HyuNaS HitAndRun v1.0 By Hyuna aka NorToN</h1><br /></center>");
- add(Help,charsmax(Help),"<h3>Commands:</h3>");
- 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 />");
- 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.)");
- add(Help,charsmax(Help),"<br /><h3>Rules:</h3>");
- 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 />");
- add(Help,charsmax(Help),"• And the most important: Enjoy!");
- add(Help,charsmax(Help),"</font></body></html>");
- show_motd(client,Help,"HyuNaS HitAndRun Help");
- }
- ///////////////////
- /// Reset Stats ///
- ///////////////////
- public ActionReset(client){
- new rs = menu_create("\d[\y HyuNaS HNR Shop \d]\y Reset Stats^n Are you sure?","ResetStats_Handler");
- menu_additem(rs,"\yYes");
- menu_additem(rs,"\yNo");
- menu_setprop(rs,MPROP_EXIT,MEXIT_NEVER);
- menu_display(client,rs);
- }
- public ResetStats_Handler(client,rs,item){
- if (!item)
- {
- g_totalrounds[client] = 0;
- g_totalwins[client] = 0;
- g_wins[client] = 0;
- g_rounds[client] = 0;
- playerlevel[client] = 0;
- playerxp[client] = 0;
- playercash[client] = 0;
- SaveData(client);
- ColorChat(0,"^3%s^1 has just reset his stats!",get_player_name(client));
- ColorChat(client,"You just reset your stats!");
- }
- menu_destroy(rs);
- }
- /////////////////////////
- /// Block team change ///
- /////////////////////////
- public cmd_block(client){
- if (cs_get_user_team(client) == CS_TEAM_SPECTATOR)
- cs_set_user_team(client,CS_TEAM_T);
- ActionShop(client);
- return PLUGIN_HANDLED_MAIN;
- }
- ///////////////////
- /// Adv message ///
- ///////////////////
- public Adv_message(){
- ColorChat(0,"This server is running ^4HyuNaS HitAndRun^1 ^4v%s^1 By ^4Hyuna^1.",PLUGIN_VERSION);
- ColorChat(0,"Type ^3/hnrhelp^1 to view the help motd.");
- }
- // Game Description
- public fw_GetGameDescription(){
- new some[32];
- formatex(some,31,"HitAndRun v%s",PLUGIN_VERSION);
- forward_return(FMV_STRING,some);
- return FMRES_SUPERCEDE;
- }
- public fw_ClientKill(client){
- if (!get_pcvar_num(g_cvars[ENABLED]) || !get_pcvar_num(g_cvars[BLOCKKILL]) || !is_user_alive(client))
- return FMRES_IGNORED;
- ColorChat(client,"You cann't kill yourself!");
- console_print(client,"You cann't kill yourself!");
- return FMRES_SUPERCEDE;
- }
- //////////////////////
- /// Hide HUD Stuff ///
- //////////////////////
- public msgStatusIcon(msgid,msgdest,id){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return 1;
- static szIcon[8];
- get_msg_arg_string(2,szIcon,7);
- if(equal(szIcon,"buyzone") && get_msg_arg_int(1))
- {
- set_pdata_int(id,235,get_pdata_int(id,235) & ~(1<<0));
- return 1;
- }
- return 0;
- }
- public MessageMoney(msgid,dest,id){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- set_pdata_int(id,OFFSET_CSMONEY,0);
- set_msg_arg_int(1,ARG_LONG,0);
- }
- public MessageHideWeapon(msgid,dest,id){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- set_msg_arg_int(1,ARG_BYTE,get_msg_arg_int(1) | (1<<5));
- }
- public Event_ResetHUD(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- set_pdata_int(client,362,0);
- set_pdata_int(client,361,(1<<3)|(1<<4));
- }
- public Event_HideWeapon(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- new iFlags = read_data(1);
- new HudFlags;
- for (new i = 0; i <= 7; i++)
- HudFlags |= 1<<i;
- if(1<<3 && (iFlags & 1<<3 != 1<<3))
- {
- set_pdata_int(client,362,0);
- set_pdata_int(client,361,iFlags|(1<<3)|(1<<4));
- }
- if(iFlags & HudFlags && !(1<<3 & 1<<7) && is_user_alive(client))
- set_pdata_cbase(client,374,FM_NULLENT);
- }
- public Event_CurWeapon(client){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- if (g_powers[client][SPEED])
- {
- new maxspeed = pev(client,pev_maxspeed);
- maxspeed*=2.0;
- engfunc(EngFunc_SetClientMaxspeed,client,maxspeed);
- set_pev(client,pev_maxspeed,maxspeed);
- }
- }
- public Event_Flash(client){
- if (g_powers[client][NOFLASH])
- {
- message_begin(MSG_ONE,g_msgScreenFade,{0,0,0},client);
- write_short((1<<0));
- write_short((1<<0));
- write_short((1<<0));
- write_byte(0);
- write_byte(0);
- write_byte(0);
- write_byte(255);
- message_end();
- }
- }
- ////////////////////
- /// Some Events ///
- //////////////////
- public Event_RoundStart(){
- if (g_winner)
- remove_task(g_winner);
- for (new i = 1; i <= g_maxplayers; i++)
- {
- if (is_user_connected(i))
- {
- if (cs_get_user_team(i) != CS_TEAM_T)
- cs_set_user_team(i,CS_TEAM_T);
- if (!is_user_alive(i))
- ExecuteHam(Ham_CS_RoundRespawn,i);
- }
- }
- remove_task(COUNTDOWN_TASKID);
- remove_task(GAMESTART_TASKID);
- remove_task(SOUNDS_TASKID);
- remove_task(TIMER_TASKID);
- fm_set_lights("m");
- GameStarted = false;
- EventStarted = false;
- infected = 0;
- g_lasthit = 0;
- g_lasttwo = false;
- g_event = 0;
- g_winner = 0;
- CreateFog(0,0,0,FOG_OFF);
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- cd = 10;
- set_task(1.0,"StartCD",COUNTDOWN_TASKID,.flags="b");
- set_task(11.0,"Start_Game",GAMESTART_TASKID);
- ColorChat(0,"^3Game will start in^4 10 seconds^1!");
- client_cmd(0,"mp3 stop");
- }
- public StartCD(taskid){
- static szWord[32];
- num_to_word(cd,szWord,31);
- if (cd < 1)
- {
- remove_task(taskid);
- return;
- }
- client_cmd(0,"spk ^"\vox/%s second%s^"",szWord,cd > 1 ? "s":"");
- set_dhudmessage(0,255,0,-1.0,0.13,0,6.0,0.5,0.25,0.25);
- show_dhudmessage(0,"Game will start in %i second%s!",cd,cd > 1 ? "s":"");
- cd--;
- }
- public Event_RoundEnd(){
- GameStarted = false;
- EventStarted = false;
- infected = 0;
- g_lasthit = 0;
- g_lasttwo = false;
- g_event = 0;
- CreateFog(0,0,0,FOG_OFF);
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- for (new i = 1; i <= g_maxplayers; i++)
- {
- if (is_user_connected(i))
- {
- if (cs_get_user_team(i) == CS_TEAM_T)
- g_rounds[i]++;
- if (cs_get_user_team(i) != CS_TEAM_T)
- cs_set_user_team(i,CS_TEAM_T);
- g_powers[i][SPEED] = false;
- g_powers[i][INVISIBILITY] = false;
- g_powers[i][GRAVITY] = false;
- g_powers[i][NOHEGRENADE] = false;
- g_powers[i][NOFLASH] = false;
- }
- }
- }
- //////////////////////////
- /// Some HAM functions ///
- //////////////////////////
- public fw_HamPlayerSpawn(client){
- if (!is_user_alive(client) || !get_pcvar_num(g_cvars[ENABLED]))
- return;
- else if (GameStarted)
- {
- fm_strip_user_weapons(client);
- user_silentkill(client);
- blind_player(client);
- ColorChat(client,"You cann't play when the game is running!");
- return;
- }
- PreparePlayer(client);
- g_powers[client][SPEED] = false;
- g_powers[client][INVISIBILITY] = false;
- g_powers[client][GRAVITY] = false;
- g_powers[client][NOHEGRENADE] = false;
- }
- public fw_HamPlayerKilled(victim, attacker, shouldgib){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- if (victim == infected && is_user_connected(victim))
- {
- fm_set_user_rendering(victim,kRenderFxNone,255,255,255,kRenderNormal,16);
- client_cmd(victim,"spk HyuNaS_HNR/loser.wav");
- if (g_event == EVENT_FOG)
- fm_set_entity_visibility(victim,1);
- check_winner();
- last_two();
- blind_player(victim);
- }
- }
- public fw_HamTakeDamage(victim, idinflictor, attacker, Float:damage, damagebits){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return HAM_IGNORED;
- if (is_user_alive(victim) && is_user_alive(attacker) && attacker == infected && victim != attacker)
- {
- if (g_powers[victim][NOHEGRENADE] && (damagebits & DMG_HEGRENADE))
- return HAM_SUPERCEDE;
- make_bartime(attacker,0);
- g_lasthit = attacker;
- make_user_statusicon(attacker,"dmg_bio",.status = STATUSICON_OFF);
- if (g_event == EVENT_FOG)
- fm_set_entity_visibility(attacker,1);
- infect_player(victim,0);
- fm_set_user_rendering(attacker,kRenderFxNone,255,255,255,kRenderNormal,16);
- client_cmd(victim,"spk %s",g_infectesounds[random(MAX_INFECTE_SOUNDS)]);
- cs_reset_user_model(attacker);
- return HAM_SUPERCEDE;
- }
- return HAM_SUPERCEDE;
- }
- // Blocks zoom at scout
- public fw_ScoutOnZoomOn(const ent){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return HAM_IGNORED;
- if (get_pcvar_num(g_cvars[NOZOOM]))
- return HAM_SUPERCEDE;
- return (g_lasttwo ? HAM_SUPERCEDE:HAM_IGNORED);
- }
- public fw_ScoutCanDrop(entity){
- if (!get_pcvar_num(g_cvars[ENABLED]) ||!get_pcvar_num(g_cvars[SCOUTDROP]))
- return HAM_IGNORED;
- return HAM_SUPERCEDE;
- }
- public fw_HamPlayerJump(client){
- if (!get_pcvar_num(g_cvars[ENABLED]) ||!get_pcvar_num(g_cvars[NOSLOWDOWN]))
- return HAM_IGNORED;
- if (is_user_alive(client))
- set_pev(client,pev_fuser2,0.0);
- return HAM_IGNORED;
- }
- ////////////////
- /// Events /////
- ////////////////
- public ActionEvent(event){
- g_round = 0;
- EventStarted = true;
- if (!event)
- g_event = random_num(1,(Events - 1));
- else
- g_event = event;
- ExecuteForward(fwd_event,fwd_return,g_event);
- static players[32],pnum;
- get_players(players,pnum,"aceh","TERRORIST");
- switch(g_event)
- {
- case EVENT_GRAVITY:
- {
- for (new i; i < pnum; i++)
- {
- set_pev(players[i],pev_gravity,0.7);
- }
- }
- case EVENT_KNIFE:
- {
- for (new i; i < pnum; i++)
- {
- fm_strip_user_weapons(players[i]);
- fm_give_item(players[i],"weapon_knife");
- }
- }
- case EVENT_NOZOOM:
- {
- g_lasttwo = true;
- }
- case EVENT_AWP:
- {
- for (new i; i < pnum; i++)
- {
- fm_strip_user_weapons(players[i]);
- fm_give_item(players[i],"weapon_awp");
- cs_set_user_bpammo(players[i],CSW_AWP,256);
- }
- }
- case EVENT_FOG:
- {
- CreateFog(127,127,127,FOG_HIGH);
- }
- }
- set_task(4.0,"Infect_RandomPlayer");
- 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]);
- }
- //////////////////
- /// Game Start ///
- //////////////////
- public Start_Game(){
- new client = get_randomplayer();
- GameStarted = true;
- last_two();
- if (client != -1 && get_playersnum() > 2)
- {
- g_round++;
- if (g_round == 6)
- ColorChat(0,"^3Random Event^1 will start next round!");
- }
- if (g_round == 7 && !g_lasttwo && get_playersnum() > 2)
- {
- ActionEvent(0);
- return;
- }
- infect_player(client,1);
- }
- public PreparePlayer(client){
- fm_strip_user_weapons(client);
- fm_set_user_health(client,100);
- fm_give_item(client,"weapon_knife");
- fm_give_item(client,"weapon_scout");
- fm_give_item(client,"weapon_hegrenade");
- fm_give_item(client,"weapon_flashbang");
- fm_give_item(client,"weapon_flashbang");
- if (fn)
- fm_give_item(client,"weapon_smokegrenade");
- fm_set_user_rendering(client,kRenderFxNone,255,255,255,kRenderNormal,16);
- if (pev(client,pev_weapons) & (1<<CSW_C4))
- engclient_cmd(client,"drop","weapon_c4");
- cs_reset_user_model(client);
- }
- public infect_player(client,rnd){
- if (!GameStarted || g_winner)
- return;
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- infected = client;
- if(!is_user_alive(infected))
- {
- ColorChat(0,"Need at least 2 players to start the game! Retry in 15 seconds...");
- GameStarted = false;
- set_task(15.0,"Event_RoundStart",GAMESTART_TASKID);
- return;
- }
- ExecuteForward(fwd_infected,fwd_return,infected);
- fm_set_user_rendering(infected,kRenderFxGlowShell,random(256),random(256),random(256),kRenderTransAlpha,120);
- do_effect(infected,1);
- make_user_statusicon(infected,"dmg_bio",.status = STATUSICON_FLASH);
- MakeSickness();
- cs_set_user_model(infected,"Adv-Sick");
- if (g_event == EVENT_FOG)
- fm_set_entity_visibility(infected,0);
- if (rnd)
- {
- set_hudmessage(0,255,0,-1.0,-1.0,0,6.0,10.0);
- ShowSyncHudMsg(0,HnrSync,"%s Has been choosen randomly...",get_player_name(client));
- ColorChat(0,"^3%s^1 Has been choosen ^4randomly^1...",get_player_name(client));
- do_effect(infected,0);
- g_timer = 20.0;
- set_task(0.1,"ShowTimer",TIMER_TASKID,.flags="b");
- set_task(3.0,"TikTok",SOUNDS_TASKID);
- set_task(13.0,"Trrrrr",SOUNDS_TASKID);
- }
- make_bartime(infected,(floatround(g_timer)));
- }
- public TikTok() client_cmd(0,"mp3 play sound/HyuNaS_HNR/alarm-thriller.mp3");
- public Trrrrr() client_cmd(0,"mp3 play sound/HyuNaS_HNR/Clock.mp3");
- public Infect_RandomPlayer(){
- if (!GameStarted || is_user_alive(infected))
- return;
- new rnd = get_randomplayer();
- infect_player(rnd,1);
- }
- public ShowTimer(taskid){
- if (!GameStarted)
- {
- remove_task(TIMER_TASKID);
- return;
- }
- if (!is_user_connected(infected))
- {
- remove_task(TIMER_TASKID);
- set_task(4.0,"Infect_RandomPlayer");
- return;
- }
- if (g_timer < 0.1)
- {
- make_user_statusicon(infected,"dmg_bio",.status = STATUSICON_OFF);
- if (g_lasthit)
- {
- make_deathmsg(g_lasthit,infected,0,"");
- user_silentkill(infected);
- g_lasthit = 0;
- }
- else
- user_kill(infected,1);
- set_task(4.0,"Infect_RandomPlayer");
- remove_task(TIMER_TASKID);
- return;
- }
- set_dhudmessage(255,0,0,-1.0,0.71,1,0.0,0.12,0.0,0.0);
- show_dhudmessage(0,"Time Left: %.1f Seconds!^n^"%s^" Was Last Hit",g_timer,get_player_name(infected));
- g_timer-=0.1;
- }
- public WinnerBeam(client){
- static Origin[3];
- get_user_origin(client,Origin);
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
- write_byte(TE_BEAMTORUS);
- write_coord(Origin[0]);
- write_coord(Origin[1]);
- write_coord(Origin[2]);
- write_coord(Origin[0]);
- write_coord(Origin[1]);
- write_coord(Origin[2] + 400);
- write_short(WinnerBeamspr);
- write_byte(0);
- write_byte(1);
- write_byte(7);
- write_byte(80);
- write_byte(1);
- write_byte(random(256));
- write_byte(random(256));
- write_byte(random(256));
- write_byte(200);
- write_byte(0);
- message_end();
- }
- public check_winner(){
- if (!get_pcvar_num(g_cvars[ENABLED]))
- return;
- static players[32],pnum;
- get_players(players,pnum,"aceh","TERRORIST");
- remove_task(TIMER_TASKID);
- remove_task(SOUNDS_TASKID);
- if (pnum == 1)
- {
- g_winner = players[0];
- ExecuteForward(fwd_win,fwd_return,g_winner);
- fm_set_lights("b");
- set_task(0.21,"WinnerBeam",g_winner,.flags="b");
- set_dhudmessage(255,0,0,-1.0,0.71,2,6.0,20.0);
- show_dhudmessage(0,"Congratulations!^n The winner is %s!",get_player_name(g_winner));
- new cash = (10 * get_playersnum());
- new xp = (5 * get_playersnum());
- if (EventStarted)
- {
- cash*=2;
- xp*=2;
- }
- playerxp[g_winner]+=cash;
- playercash[g_winner]+=cash;
- g_wins[g_winner]++;
- new players[32], num
- get_players(players, num, "a") // alive players
- for(new i = 0; i < num; i++)
- {
- ColorChat(players[i],"You have received 10 xp for surviving the round")
- iXp[players[i]]+= 10 // or whatever xp you want to give
- CheckLevel(players[i])
- SaveData(players[i])
- ColorChat(0,"Congratulations! The ^3winner^1%s is ^4%s^1!",(EventStarted ? " of the event":""),get_player_name(g_winner));
- 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"));
- check_level(g_winner);
- client_cmd(0,"mp3 play sound/%s",g_winsounds[random(MAX_WIN_SOUNDS)]);
- set_task(20.0,"RestartGame");
- Event_RoundEnd();
- GameStarted = true;
- return;
- }
- ColorChat(0,"Online:^4 %i ^3| ^1Alive:^4 %i ^3| ^1Dead:^4 %i",get_playersnum(),pnum,(get_playersnum() - pnum));
- set_task(4.0,"Infect_RandomPlayer");
- }
- public last_two(){
- static players[32],pnum;
- get_players(players,pnum,"aceh","TERRORIST");
- if (pnum == 2)
- g_lasttwo = true;
- }
- public RestartGame(){
- GameStarted = false;
- server_cmd("sv_restart 1");
- }
- public SaveData(id){
- if (!is_user_connected(id) || is_user_bot(id) || is_user_hltv(id))
- return;
- new SteamID[35];
- get_user_authid(id,SteamID,34);
- if(contain(SteamID,"_ID_LAN") != -1 || contain(SteamID,"STEAM_0:4") != -1 || contain(SteamID,"VALVE") != -1 || equali(SteamID,"STEAM_666:88:666"))
- get_user_ip(id,SteamID,34,1);
- new szData[40];
- g_totalrounds[id]+=g_rounds[id];
- g_totalwins[id]+=g_wins[id];
- formatex(szData,charsmax(szData),"%d %d %d %d %d",g_totalrounds[id],g_totalwins[id],playerlevel[id],playerxp[id],playercash[id]);
- fvault_set_data(g_szVault,SteamID,szData);
- }
- public LoadData(id){
- if (!is_user_connected(id) || is_user_bot(id) || is_user_hltv(id))
- return;
- new SteamID[35];
- get_user_authid(id, SteamID, 34);
- if(contain(SteamID,"_ID_LAN") != -1 || contain(SteamID,"STEAM_0:4") != -1 || contain(SteamID,"VALVE") != -1 || equali(SteamID,"STEAM_666:88:666"))
- get_user_ip(id,SteamID,34,1);
- new szData[40],szRounds[8],szWins[8],szLevel[8],szXp[8],szCash[8];
- if(fvault_get_data(g_szVault,SteamID,szData,charsmax(szData)))
- {
- parse(szData,szRounds,charsmax(szRounds),szWins,charsmax(szWins),szLevel,charsmax(szLevel),szXp,charsmax(szXp),szCash,charsmax(szCash));
- g_totalrounds[id] = str_to_num(szRounds);
- g_totalwins[id] = str_to_num(szWins);
- playerlevel[id] = str_to_num(szLevel);
- playerxp[id] = str_to_num(szXp);
- playercash[id] = str_to_num(szCash);
- }
- else
- {
- g_totalrounds[id] = 0;
- g_totalwins[id] = 0;
- playerlevel[id] = 0;
- playerxp[id] = 0;
- playercash[id] = 0;
- }
- g_wins[id] = 0;
- g_rounds[id] = 0;
- }
- //////////////
- /// Stocks ///
- //////////////
- stock get_randomplayer(){
- static players[32],pnum;
- get_players(players,pnum,"aceh","TERRORIST");
- if (pnum < 2)
- return -1;
- return players[random(pnum)];
- }
- stock get_player_name(client){
- static szName[32];
- get_user_name(client,szName,31);
- return szName;
- }
- stock RemoveEntityAll(name[]){
- new ent = engfunc(EngFunc_FindEntityByString,0,"classname",name);
- new temp;
- while (ent)
- {
- temp = engfunc(EngFunc_FindEntityByString,ent,"classname",name);
- engfunc(EngFunc_RemoveEntity, ent);
- ent = temp;
- }
- log_amx("DEBUG: Entity ^"%s^" was removed from the map",name);
- }
- stock do_effect(index,type){
- static origin[3], srco[3];
- get_user_origin(index,origin);
- origin[2] -= 26;
- srco[0] = origin[0] + 150;
- srco[1] = origin[1] + 150;
- srco[2] = origin[2] + 400;
- switch(type)
- {
- case 0:
- {
- create_lightning(srco,origin);
- emit_sound(index,CHAN_ITEM,"ambience/thunder_clap.wav",1.0,ATTN_NORM,0,PITCH_NORM);
- }
- case 1: create_EarthQuake(index);
- }
- }
- stock check_level(client){
- if (!is_user_connected(client) || !get_pcvar_num(g_cvars[ENABLED]) || !get_pcvar_num(g_cvars[LEVELSYS]))
- return;
- if (playerlevel[client] == MAX_LEVELS)
- return;
- while (playerxp[client] > str_to_num(xps[playerlevel[client]]))
- {
- playerlevel[client]++;
- ColorChat(client,"Congratulations! You'r have level up! You'r new level is: ^4%i^1",playerlevel[client]);
- ColorChat(0,"^3%s^1 has level up to level ^4%i^1!",get_player_name(client),playerlevel[client]);
- }
- }
- stock fm_set_lights(const lights[])
- engfunc(EngFunc_LightStyle,0,lights);
- stock bool:check_cash(client,amount)
- return (playercash[client] > amount ? true:false);
- stock MakeSickness(){
- static Origin[3];
- get_user_origin(infected,Origin);
- message_begin(MSG_PVS,SVC_TEMPENTITY,Origin);
- write_byte(TE_IMPLOSION);
- write_coord(Origin[0]);
- write_coord(Origin[1]);
- write_coord(Origin[2]);
- write_byte(128);
- write_byte(20);
- write_byte(3);
- message_end();
- }
- stock create_lightning(vec1[3],vec2[3]){
- //Lightning
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
- write_byte(0);
- write_coord(vec1[0]);
- write_coord(vec1[1]);
- write_coord(vec1[2]);
- write_coord(vec2[0]);
- write_coord(vec2[1]);
- write_coord(vec2[2]);
- write_short(light);
- write_byte(1); // framestart
- write_byte(5);// framerate
- write_byte(2); // life
- write_byte(20); // width
- write_byte(30);// noise
- write_byte(200); // r, g, b
- write_byte(200); // r, g, b
- write_byte(200); // r, g, b
- write_byte(200); // brightness
- write_byte(200); // speed
- message_end();
- //Sparks
- message_begin(MSG_PVS,SVC_TEMPENTITY,vec2);
- write_byte(9);
- write_coord(vec2[0]);
- write_coord(vec2[1]);
- write_coord(vec2[2]);
- message_end();
- //Smoke
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY,vec2);
- write_byte(5);
- write_coord(vec2[0]);
- write_coord(vec2[1]);
- write_coord(vec2[2]);
- write_short(smoke);
- write_byte(10);
- write_byte(10);
- message_end();
- }
- stock create_EarthQuake(index){
- static msgScreenShake;
- if (!msgScreenShake)
- msgScreenShake = get_user_msgid("ScreenShake");
- message_begin(MSG_ONE,msgScreenShake,{0,0,0},index);
- write_short(255<<14); //ammount
- write_short(10<<14); //lasts this long
- write_short(255<<14); //frequency
- message_end();
- }
- ////////////////////////////////////////////
- /// Thanks to Arkshine for this stock =] ///
- ////////////////////////////////////////////
- stock CreateFog(iRed = 127,iGreen = 127,iBlue = 127,iDensity = 7){
- static msgFog;
- if (!msgFog)
- msgFog = get_user_msgid("Fog");
- // Fog density offsets [Thnx to DA]
- 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,
- 101, 68, 59, 10, 41, 95, 59, 111, 18, 125, 59, 111, 18, 3, 60, 68, 116, 19, 60 };
- // Get the amount of density
- new dens;
- dens = (4 * iDensity);
- // The fog message
- message_begin(MSG_BROADCAST,msgFog,{0,0,0},0);
- write_byte(iRed); // Red
- write_byte(iGreen); // Green
- write_byte(iBlue); // Blue
- write_byte(fog_density[dens]); // SD
- write_byte(fog_density[dens + 1]); // ED
- write_byte(fog_density[dens + 2]); // D1
- write_byte(fog_density[dens + 3]); // D2
- message_end();
- }
- stock blind_player(index){
- message_begin(MSG_ONE,g_msgScreenFade,.player = index);
- write_short(1<<15);
- write_short(1<<10);
- write_short(1<<12);
- write_byte(0); // Red
- write_byte(0); // Green
- write_byte(0); // Blue
- write_byte(255); // Alpha
- message_end();
- }
- stock make_bartime(index,duration = 0){
- static msgBarTime;
- if (!msgBarTime)
- msgBarTime = get_user_msgid("BarTime");
- message_begin((index ? MSG_ONE:MSG_ALL),msgBarTime,.player = index);
- write_short(duration);
- message_end();
- }
- stock make_user_statusicon(index, const spr[], r = 0, g = 255, b = 255, status = STATUSICON_ON){
- static iconstatus;
- if (!iconstatus)
- iconstatus = get_user_msgid("StatusIcon");
- message_begin((index ? MSG_ONE:MSG_ALL),iconstatus,.player = index);
- write_byte(status); // status (0=hide, 1=show, 2=flash)
- write_string(spr); // sprite name
- write_byte(r); // red
- write_byte(g); // green
- write_byte(b); // blue
- message_end();
- }
- stock ColorChat(const id,const string[],any:...){
- new msg[191], players[32], count = 1;
- static len; len = formatex(msg,charsmax(msg),"^4[ ^3HyuNaS HNR ^4]^1 ");
- vformat(msg[len],charsmax(msg) - len,string,3);
- static msgSayText;
- if (!msgSayText)
- msgSayText = get_user_msgid("SayText");
- if(id) players[0] = id;
- else get_players(players,count,"ch");
- for (new i = 0; i < count; i++)
- {
- if(is_user_connected(players[i]))
- {
- message_begin(MSG_ONE_UNRELIABLE,msgSayText,.player = players[i]);
- write_byte(players[i]); // Sender ID
- write_string(msg); // String 1
- message_end();
- }
- }
- }
- public _register_maxlevels( plugin, params )
- {
- if( MaxLevel != 0 && StartedLevel != 0 )
- {
- return;
- }
- else
- {
- MaxLevel = get_param( 1 );
- StartedLevel = get_param( 2 );
- }
- }
- public _get_user_level( plugin, params )
- {
- return iLevel[ get_param( 1 ) ];
- }
- public _set_user_level( plugin, params )
- {
- iLevel[ get_param( 1 ) ] = max( get_param( 2 ), MaxLevel );
- FlsahLevelUp( get_param( 1 ) );
- SaveData( get_param( 1 ) );
- LoadData( get_param( 1 ) );
- }
- public _get_user_xp( plugin, params )
- {
- return iXp[ get_param( 1 ) ];
- }
- public _set_user_xp( plugin, params )
- {
- iXp[ get_param( 1 ) ] = get_param( 2 );
- CheckLevel( get_param( 1 ) );
- SaveData( get_param( 1 ) );
- LoadData( get_param( 1 ) );
- }
- public CheckLevel( id )
- {
- if( iLevel[id] == MaxLevel )
- {
- return;
- }
- else
- {
- new level = iLevel[id] > 0 ? iLevel[id] : 1;
- new xp = level * StartedLevel;
- if( iLevel[id] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- while( iXp[id] >= xp )
- {
- iLevel[id]++;
- ColorChat(id,"^4Congratulations!^1 You'r have level up! You'r new^4 LEVEL^1 is: ^3%i^1.", iLevel[id]);
- ColorChat(0,"^3%s^1 has level up to^4 LEVEL^3 %i^1!",get_player_name(id), iLevel[id]);
- FlsahLevelUp(id);
- ExecuteForward( Forward_levelup, ForwardReturn, id, iLevel[id], iXp[id] );
- SaveData( id );
- CheckLevel( id );
- break;
- }
- }
- }
- public FlsahLevelUp( id )
- {
- message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), { 0, 0, 0}, id );
- write_short( 1 << 10 );
- write_short( 1 << 10 );
- write_short( 0 );
- write_byte( 0 );
- write_byte( 255 );
- write_byte( 215 );
- write_byte( 100 );
- message_end( );
- }
- public HandleSay(id){
- if (get_pcvar_num(scout_on) == 0)
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- new iMsg[200], iArgs[4][60];
- new level = iLevel[id] > 0 ? iLevel[id] : 1;
- new xp = level * StartedLevel;
- if( iLevel[id] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- read_argv(1,iMsg ,sizeof iMsg - 1);
- parse(iMsg,iArgs[0],charsmax(iArgs[]),iArgs[1],charsmax(iArgs[]),iArgs[2],charsmax(iArgs[]),iArgs[3],charsmax(iArgs[]));
- if (equali(iArgs[0],"/level") || equali(iArgs[0],"/lvl") || equali(iArgs[0],"/xp"))
- {
- new player = cmd_target(id,iArgs[1],CMDTARGET_NO_BOTS);
- if (!player)
- {
- 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 );
- }
- }
- return 0;
- }
- public EventDeathMsg(id)
- {
- if (get_pcvar_num(scout_on) == 0)
- return PLUGIN_HANDLED;
- new killer = read_data( 1 );
- new victim = read_data( 2 );
- if( killer == victim || ! is_user_connected( killer ) || ! is_user_connected( victim ) )
- {
- return PLUGIN_HANDLED;
- //return;
- }
- new XpAmount = get_pcvar_num( cvar_KillXp );
- if( read_data( 3 ) )
- {
- XpAmount += get_pcvar_num( cvar_HsXp );
- }
- static sWeapon[ 26 ];
- read_data( 4, sWeapon, sizeof( sWeapon ) - 1 );
- if( equal( sWeapon, "scout" ) )
- {
- XpAmount += get_pcvar_num( cvar_ScoutXp );
- }
- iXp[ killer ] += XpAmount;
- CheckLevel( killer );
- SaveData( killer );
- ColorChat( killer, "You have gained^3 %i^1 XP.", XpAmount );
- return PLUGIN_HANDLED;
- }
- public FwdPlayerSpawn( id )
- {
- ExecuteForward( Forward_spawn, ForwardReturn, id, iLevel[id], iXp[id] );
- }
- public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
- {
- if( get_pcvar_num( scout_on ) == 0 )
- return HAM_IGNORED;
- if( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_SCOUT )
- {
- SetHamParamFloat(4, damage + Scout_model[attacker]);
- return HAM_HANDLED;
- }
- return HAM_IGNORED;
- }
- public ScoutSkinsMenu(id) {
- if (!get_pcvar_num(scout_on))
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- new szItem[256];
- new level = iLevel[id] > 0 ? iLevel[id] : 1;
- new xp = level * StartedLevel;
- if( iLevel[id] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- 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);
- new menu = menu_create( szItem, "ScoutSkinsMenu_Handler" );
- for (new i = 0; i < MAX_SCOUTS; i++)
- {
- 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]),
- menu_additem(menu, szItem, .paccess = (iLevel[id] >= g_scoutLevels[i]) ? 0 : 1);
- }
- menu_display(id, menu, 0 );
- return PLUGIN_HANDLED;
- }
- public ScoutSkinsMenu_Handler(id, menu, item)
- {
- if(item == MENU_EXIT)
- {
- menu_destroy(menu)
- return PLUGIN_HANDLED
- }
- SetScout(id, item);
- ColorChat(id, "The Scout you chose is: ^4%s^1.", g_scoutNames[item]);
- SaveData(id);
- return PLUGIN_HANDLED;
- }
- public SetScout(id, item) {
- Scout_model[id] = item
- new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
- if ( Weapon != CSW_SCOUT )
- return PLUGIN_HANDLED
- new vModel[56],pModel[56]
- if (get_pcvar_num(scout_on) == 0)
- {
- format(vModel,55,"models/v_scout.mdl")
- return PLUGIN_HANDLED;
- }
- format(vModel,55, g_scoutvModels[item])
- format(pModel,55,"models/p_Scout.mdl")
- entity_set_string(id, EV_SZ_viewmodel, vModel)
- entity_set_string(id, EV_SZ_weaponmodel, pModel)
- return PLUGIN_HANDLED;
- }
- public PlayerLevelsMenu(id)
- {
- if (get_pcvar_num(scout_on) == 0)
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- new some[256], menu;
- static players[32],szTemp[10],pnum;
- get_players(players,pnum,"ch");
- formatex(some,255,"\w[ \r%s \w] \yPlayer's Level:\r", g_VAULTNAME);
- menu = menu_create(some,"PlayerLevelsMenu_Handler");
- for (new i; i < pnum; i++)
- {
- new level = iLevel[players[i]] > 0 ? iLevel[players[i]] : 1;
- new xp = level * StartedLevel;
- if( iLevel[players[i]] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- 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);
- num_to_str(players[i],szTemp,charsmax(szTemp));
- menu_additem(menu, some, szTemp);
- }
- menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
- menu_display(id, menu);
- return PLUGIN_HANDLED;
- }
- public PlayerLevelsMenu_Handler(id,menu, item){
- if (item == MENU_EXIT)
- {
- menu_destroy(menu);
- return;
- }
- new data[6] ,szName[64],access,callback;
- menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
- new player = str_to_num(data);
- new level = iLevel[player] > 0 ? iLevel[player] : 1;
- new xp = level * StartedLevel;
- if( iLevel[player] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- 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);
- PlayerLevelsMenu(id);
- }
- public CurWeapon(id)
- {
- // Set Knife Model
- SetScout(id, Scout_model[id])
- }
- public givexp(id) {
- if (get_pcvar_num(scout_on) == 0)
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- if( get_user_flags( id ) & ADMIN_RCON ) {
- new PlayerToGive[32], XP[32]
- read_argv(1,PlayerToGive,31)
- read_argv(2,XP, 31)
- new Player = cmd_target(id,PlayerToGive,9)
- if(!Player) {
- return PLUGIN_HANDLED
- }
- new XPtoGive = str_to_num(XP)
- new name[32],owner[32]
- get_user_name(id,owner,31)
- get_user_name(Player,name,31)
- ColorChat(0,"^4ADMIN^3 %s^1 give to^4 %s^3 %s^1 XP.", owner,name,XP );
- iXp[Player]+= XPtoGive
- CheckLevel(Player);
- SaveData(id)
- }
- else {
- client_print(id,print_console,"You have no acces to that command")
- return PLUGIN_HANDLED
- }
- return PLUGIN_HANDLED;
- }
- public takexp(id) {
- if (get_pcvar_num(scout_on) == 0)
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- if(get_user_flags(id) & ADMIN_RCON ) {
- new PlayerToTake[32], XP[32]
- read_argv(1,PlayerToTake,31 )
- read_argv(2,XP,31 )
- new Player = cmd_target(id,PlayerToTake,9)
- if(!Player) {
- return PLUGIN_HANDLED
- }
- new XPtoTake = str_to_num(XP)
- new name[32],owner[32]
- get_user_name(id,owner,31)
- get_user_name(Player,name,31)
- ColorChat(0,"^4ADMIN^3 %s^1 take to^4 %s^3 %s^1 XP.", owner,name,XP );
- iXp[ Player ]-=XPtoTake
- CheckLevel(Player);
- SaveData(id)
- }
- else {
- client_print(id,print_console,"You have no acces to that command.")
- return PLUGIN_HANDLED
- }
- return PLUGIN_HANDLED;
- }
- public client_disconnect(id) {
- if(task_exists(id)){
- remove_task(id)
- }
- SaveData(id);
- }
- public Scoutmessage(id) {
- if (get_pcvar_num(scout_on) == 0)
- return PLUGIN_HANDLED;
- ColorChat(0, "Type ^3/Scout ^1in chat to open the ^4Scout Skins Menu^1.");
- ColorChat(0, "This server is running ^4%s ^3v%s^1 by ^4%s^1.",g_VAULTNAME, VERSION, AUTHOR)
- return PLUGIN_HANDLED;
- }
- public Levelmessage(id) {
- if (get_pcvar_num(scout_on) == 0)
- return PLUGIN_HANDLED;
- ColorChat(0,"To see other ^4Players Level ^1type ^3/level ^1in chat.");
- return PLUGIN_HANDLED;
- }
- public client_putinserver(id) LoadData(id);
- public SaveData(id){
- new authid[32]
- get_user_authid(id, authid, 31)
- new vaultkey[64]
- new vaultdata[64]
- format(vaultkey, 63, "SCOUTMOD_%s", authid)
- format(vaultdata, 63, "%d", Scout_model[id])
- set_vaultdata(vaultkey, vaultdata)
- new data[ 16 ];
- get_user_authid( id, authid, sizeof( authid ) - 1 );
- formatex( data, sizeof( data ) - 1, "%d %d", iLevel[id], iXp[id] );
- fvault_set_data(g_VAULTNAME, authid, data );
- return;
- }
- public LoadData(id){
- new authid[32]
- get_user_authid(id,authid,31)
- new vaultkey[64], vaultdata[64]
- format(vaultkey, 63, "SCOUTMOD_%s", authid)
- get_vaultdata(vaultkey, vaultdata, 63)
- Scout_model[id] = str_to_num(vaultdata)
- new data[ 16 ], szLevel[ 8 ], szXp[ 8 ];
- get_user_authid( id, authid, sizeof( authid ) - 1 );
- if( fvault_get_data(g_VAULTNAME, authid, data, sizeof( data ) - 1 ) )
- {
- strbreak( data, szLevel, sizeof( szLevel ) - 1, szXp, sizeof( szXp ) - 1 );
- iLevel[id] = str_to_num( szLevel );
- iXp[id] = str_to_num( szXp );
- return;
- }
- else
- {
- iLevel[id] = 0;
- iXp[id] = 0;
- return;
- }
- }
- stock get_player_name(id){
- static szName[32];
- get_user_name(id,szName,31);
- return szName;
- }
- stock ColorChat( const id, const string[ ], { Float, Sql, Resul, _ } : ... )
- {
- new msg[ 191 ], players[ 32 ], count = 1;
- static len;
- if (!len)
- len = formatex( msg, charsmax( msg ), "^x04[^x01 Scout-Skins^x04 ]^x01 " );
- vformat( msg[ len ], charsmax( msg ) - len, string, 3 );
- if( id )
- players[ 0 ] = id;
- else
- get_players( players,count,"ch" );
- for( new i = 0; i < count; i++ )
- {
- message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _ , players[ i ] );
- write_byte( players[ i ] );
- write_string( msg );
- message_end( );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement