@mordoryjacz, trochę potestowaliśmy i nasunęły mi się dwie kwestie, a mianowicie - czy byłaby możliwość dodania do kodu:
- braku możliwości zakupu broni = domyślam się, że po prostu na czas trwania rozgrzewki wartość portfela każdego z graczy powinna wynosić 0$ i nikt nie powinien otrzymywać $ za zabójstwo,
- zablokowania możliwości podłożenia bomby?
#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; }


Dodatki SourceMod




Moja zawartość
Mężczyzna