#include <amxmodx> #include <hamsandwich> #define PLUGIN "Autorespawn/Auto-respawn" #define AUTHOR "HubertTM" #define VERSION "1.0" new TimeSpawn[33] = 0; new bool:Timer[33] = false; new cTimeSpawn, pTimeSpawn, cInfoSpawn, pInfoSpawn, cTeamSpawn, pTeamSpawn, cSayRespawn, pSayRespawn, cTeamAuto, pTeamAuto, cPlayers, pPlayers, cColor, pColor public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); RegisterHam(Ham_Killed, "player", "ham_killed", 1); RegisterHam(Ham_Spawn, "player", "ham_spawn", 1); register_clcmd("say /respawn", "SayRespawn"); register_clcmd("say_team /respawn", "SayRespawn"); register_clcmd("say respawn", "SayRespawn"); cTimeSpawn = register_cvar("spawn_time", "3"); cInfoSpawn = register_cvar("spawn_infotimer", "1"); cTeamSpawn = register_cvar("spawn_team", "0"); cSayRespawn = register_cvar("spawn_say", "1"); cTeamAuto = register_cvar("spawn_auto", "1"); cPlayers = register_cvar("spawn_minplayers", "2"); cColor = register_cvar("spawn_colorhud", "0"); } public client_putinserver(id){ Timer[id] = false TimeSpawn[id] = 0; set_task(5.0, "CheckTeam", id+291,_,_,"b"); } public client_disconnect(id){ Timer[id] = false TimeSpawn[id] = 0; remove_task(id+291); } public ham_killed(id) { pTimeSpawn = get_pcvar_num(cTimeSpawn); pInfoSpawn = get_pcvar_num(cInfoSpawn); pTeamSpawn = get_pcvar_num(cTeamSpawn); pSayRespawn = get_pcvar_num(cSayRespawn); pTeamAuto = get_pcvar_num(cTeamAuto); pPlayers = get_pcvar_num(cPlayers); pColor = get_pcvar_num(cColor); if(!is_user_connected(id) || get_user_team(id) == 3 || get_user_team(id) == 0 || is_user_alive(id)) return HAM_IGNORED; if(pTeamSpawn && get_user_team(id) != pTeamSpawn) return HAM_IGNORED; if(pPlayers && get_playersnum() < pPlayers) return HAM_IGNORED; TimeSpawn[id] = pTimeSpawn; UtworzHUD(id); remove_task(id+492); set_task(1.0, "TimerSpawn", id+492); Timer[id] = true; return HAM_IGNORED; } public SpawnPlayer(id) { if(!is_user_connected(id) || get_user_team(id) == 3 || get_user_team(id) == 0 || is_user_alive(id)) return PLUGIN_CONTINUE; if(pTeamSpawn && get_user_team(id) != pTeamSpawn) return PLUGIN_CONTINUE; if(get_playersnum() < pPlayers) return PLUGIN_CONTINUE; TimeSpawn[id] = pTimeSpawn; UtworzHUD(id); remove_task(id+492); set_task(1.0, "TimerSpawn", id+492); Timer[id] = true; return PLUGIN_CONTINUE; } public UtworzHUD(id){ if(pInfoSpawn){ switch(pColor) { case 0: set_hudmessage(255, 0, 0, -1.0, 0.4, 0, 1.5, 3.0); case 1: set_hudmessage(0, 255, 0, -1.0, 0.4, 0, 1.5, 3.0); case 2: set_hudmessage(0, 102, 255, -1.0, 0.4, 0, 1.5, 3.0); case 3: set_hudmessage(255, 255, 255, -1.0, 0.4, 0, 1.5, 3.0); } switch(TimeSpawn[id]){ case 0: show_hudmessage(id, "Odradzanie..."); case 1: show_hudmessage(id, "Odrodzisz sie za: %d sekunde", TimeSpawn[id]); case 2 .. 4: show_hudmessage(id, "Odrodzisz sie za: %d sekundy", TimeSpawn[id]); default: show_hudmessage(id, "Odrodzisz sie za: %d sekund", TimeSpawn[id]); } } } public TimerSpawn(id){ id-=492 if(!is_user_connected(id) || is_user_alive(id) || get_user_team(id) == 3 || get_user_team(id) == 0){ Timer[id] = false; return PLUGIN_CONTINUE; } if(TimeSpawn[id] > 1) { TimeSpawn[id]--; Timer[id] = true; UtworzHUD(id); set_task(1.0, "TimerSpawn", id+492); } else { PlayerSpawn(id); Timer[id] = false; } return PLUGIN_CONTINUE; } public PlayerSpawn(id) { if(!is_user_connected(id) || is_user_alive(id) || get_user_team(id) == 3 || get_user_team(id) == 0) return PLUGIN_CONTINUE; ExecuteHamB(Ham_CS_RoundRespawn, id); Timer[id] = false; return PLUGIN_CONTINUE; } public ham_spawn(id){ if(task_exists(id+492)) remove_task(id+492); Timer[id] = false; TimeSpawn[id] = pTimeSpawn } public SayRespawn(id) { if(!pSayRespawn || !is_user_connected(id) || is_user_alive(id) || get_user_team(id) == 3 || get_user_team(id) == 0 || Timer[id]) { if(pSayRespawn && is_user_alive(id)) client_print(id, print_chat, "[Respawn] Jestes zywy!"); else if(pSayRespawn && (get_user_team(id) == 0 || get_user_team(id) == 3)) client_print(id, print_chat, "[Respawn] Jestes spectatorem!"); else if(pSayRespawn && Timer[id] && is_user_connected(id) && !is_user_alive(id) && (get_user_team(id) == 1 || get_user_team(id) == 2)){ new menu = menu_create("Trwa odrodzenie jednak odrodzic?", "SayRespawnH"); menu_additem(menu, "Tak, odrodz mnie"); menu_additem(menu, "Nie chce."); menu_display(id, menu); } return PLUGIN_CONTINUE; } SpawnPlayer(id); return PLUGIN_CONTINUE; } public SayRespawnH(id, menu , item){ if(item != 0){ menu_destroy(menu); return PLUGIN_HANDLED; } SpawnPlayer(id); Timer[id] = false; return PLUGIN_CONTINUE; } public CheckTeam(id){ id-=291 if(!is_user_connected(id)) return PLUGIN_CONTINUE; if(is_user_alive(id)){ Timer[id] = false; return PLUGIN_CONTINUE; } if(!pTeamAuto) return PLUGIN_CONTINUE; if(Timer[id]) return PLUGIN_CONTINUE; if(get_user_team(id) == 1 || get_user_team(id) == 2) SpawnPlayer(id); return PLUGIN_CONTINUE; }
Lub niech ktos zedytuje te sma ,żeby było po calej mapie respawny
CVARY:
spawn_time 3 // po ilu sec odradzac
spawn_infotimer 1 // czy pokazywac HUD "odrodzenie za" 1-tak 0-nie
spawn_team 0 // kogo odradzac 0 - TT i CT 1 - TT 2 - CT
spawn_say 1 // komenda /respawn aktywna? 1-tak 0-nie
spawn_auto 1 // odradzac automatycznie pod dolaczeniu do teamu?
spawn_minplayers 0 // od ilu graczy ma dzialac odrodzenie 0-wylacza ograniczenie graczy (mozesz wpisac 33 jak chcesz zeby plugin nie działał )
spawn_colorhud 0 // kolor hudu 0 - czerwowny, 1 - zielony 2 - niebieski 3 - bialy
Użytkownik bartek21 edytował ten post 21.01.2013 19:50