#include #include #include #include #define SOUND_HEARTBEAT "fastrun_heartbeat.wav" #define SPEED_USE_SKILL 350.0 #define SPEED_REST_SKILL 150.0 #define TIME_USE_SKILL 10.0 #define TIME_REST_SKILL 5.0 new Float:g_iTimeUseSkill[33]; new Float:g_iTimeUseRest[33]; new Float:g_iScreenFade[33]; new bool:g_iOnSkill[33]; new bool:g_iOffSkill[33]; new bool:g_iUsing[33]; new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame; public plugin_init() { register_plugin("FastRun (From CS: Online)", "0.1", "fl0wer") register_concmd("use_fustrun", "concmd_fastrun") RegisterHam(Ham_Spawn, "player", "Player_Spawn_Post", 1) RegisterHam(Ham_Killed, "player", "Player_Killed_Post", 1) RegisterHam(Ham_Player_PreThink, "player", "Player_PreThink_Pre") } public plugin_precache() { precache_sound(SOUND_HEARTBEAT) } public concmd_fastrun(id) { if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) { if(g_iUsing[id]) { g_iUsing[id] = false; g_iOnSkill[id] = true; g_iScreenFade[id] = get_gametime(); g_iTimeUseSkill[id] = get_gametime(); func(id) } return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public Player_Spawn_Post(id) { if(is_user_alive(id)) { g_iUsing[id] = true; client_cmd(id, "bind 5 ^"slot5;use_fustrun^"") } } public Player_Killed_Post(victim, attacker, shouldgib) { if(g_iOnSkill[victim] || g_iOffSkill[victim]) { g_iOnSkill[victim] = false; g_iOffSkill[victim] = false; g_iTimeUseSkill[victim] = 0.0; g_iTimeUseRest[victim] = 0.0; g_iScreenFade[victim] = 0.0; } } public Player_PreThink_Pre(id) { if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) { if(g_iOnSkill[id]) { set_pev(id, pev_maxspeed, SPEED_USE_SKILL) func(id) if(g_iTimeUseSkill[id] + TIME_USE_SKILL <= get_gametime()) { g_iOnSkill[id] = false; g_iTimeUseSkill[id] = 0.0; g_iOffSkill[id] = true; g_iTimeUseRest[id] = get_gametime(); } } if(g_iOffSkill[id]) { set_pev(id, pev_maxspeed, SPEED_REST_SKILL) func(id) if(g_iTimeUseRest[id] + TIME_REST_SKILL <= get_gametime()) { g_iOffSkill[id] = false; g_iTimeUseRest[id] = 0.0; g_iScreenFade[id] = 0.0; ExecuteHamB(Ham_Player_ResetMaxSpeed, id) } } } } func(id) { if(g_iScreenFade[id] + 1.0 <= get_gametime()) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, id) write_short(1<<12) write_short(1<<10) write_short(0x0000) write_byte(255) write_byte(255) write_byte(255) write_byte(200) message_end() client_cmd(id, "spk /%s", SOUND_HEARTBEAT) g_iScreenFade[id] = get_gametime(); } }