#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
new const warmup_sounds[][] = { "misc/rozgrzewka1.mp3", "misc/rozgrzewka2.mp3" };
new const warmup_weapons[][] = { "weapon_ak47", "weapon_m4a1", "weapon_deagle", "weapon_mp5navy", "weapon_famas", "weapon_awp" };
new const weapon_names[][] = { "AK-47", "M4A1", "Deagle", "MP5", "Famas", "AWP" };
new iTimer, iWeaponIndex, bool:bOnlyHS, bool:iRozgrzewka;
new syncHud;
public plugin_init() {
register_plugin("Rozgrzewka", "0.0", "Rozgrzewka");
register_event("HLTV", "event_round_start", "a", "1=0", "2=0");
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled", 1);
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1);
RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack");
syncHud = CreateHudSyncObj();
}
public plugin_precache() {
for(new i = 0; i < sizeof warmup_sounds; i++) {
precache_generic(warmup_sounds[i]);
}
}
public event_round_start() {
if(!iRozgrzewka && get_gametime() < 15.0) {
start_warmup();
}
}
public start_warmup() {
iRozgrzewka = true;
iTimer = 30;
iWeaponIndex = random(sizeof warmup_weapons);
bOnlyHS = (random(2) == 1);
server_cmd("csstats_pause 1");
new iRandSound = random(sizeof warmup_sounds);
client_cmd(0, "mp3 play sound/%s", warmup_sounds[iRandSound]);
set_task(1.0, "warmup_timer", 1337, _, _, "a", iTimer);
}
public warmup_timer() {
iTimer--;
set_hudmessage(0, 160, 255, -1.0, 0.05, 0, 0.1, 1.0, 0.1, 0.1, -1);
ShowSyncHudMsg(0, syncHud, "--- ROZGRZEWKA ---^nCzas: %d sek^nBron: %s^nTryb: %s",
iTimer, weapon_names[iWeaponIndex], bOnlyHS ? "[ONLY HS]" : "[NORMALNY]");
if(iTimer <= 0) {
end_warmup();
}
}
public end_warmup() {
iRozgrzewka = false;
remove_task(1337);
server_cmd("csstats_pause 0");
server_cmd("sv_restart 1");
client_cmd(0, "mp3 stop");
set_hudmessage(255, 0, 0, -1.0, 0.2, 1, 1.0, 5.0);
show_hudmessage(0, "KONIEC ROZGRZEWKI! POWODZENIA!");
}
public fw_PlayerSpawn(id) {
if(!is_user_alive(id) || !iRozgrzewka)
return;
strip_user_weapons(id);
give_item(id, "weapon_knife");
new weapon_id = give_item(id, warmup_weapons[iWeaponIndex]);
if(weapon_id > 0) {
cs_set_user_bpammo(id, get_weaponid(warmup_weapons[iWeaponIndex]), 250);
}
}
public fw_PlayerKilled(victim, attacker, shouldgib) {
if(iRozgrzewka) {
set_task(0.7, "respawn_player", victim);
}
}
public respawn_player(id) {
if(is_user_connected(id) && iRozgrzewka) {
ExecuteHamB(Ham_CS_RoundRespawn, id);
}
}
public fw_TraceAttack(victim, attacker, Float:damage, Float:direction, tracehandle, damagebits) {
if(iRozgrzewka && bOnlyHS && is_user_connected(attacker)) {
if(get_tr2(tracehandle, TR_iHitgroup) != HIT_HEAD) {
return HAM_SUPERCEDE;
}
}
return HAM_IGNORED;
}