// //Ich Respawn Script v2.0 // //Allows automatic delayed respawn // //Allows say command driven respawn // //Server commands // //respawn block config { //Ich Respawn settings (some settings require you to reload the script. to do so use es_reload ich_respawn) //Say commmand settings respawn_chat_enable 1 //enable chat respawn command respawn_chat_trigger "!respawn" //Chat respawn command //Client console command settings respawn_command_enable 1 //enable client command command respawn_command_trigger "!respawn" //client command trigger //may be implemented in a later version (the more requests the more likely i'll do it) //respawn_player_delay 2 //Delay untill players can use chat or command to respawn (not autorespawn) //Client say/console command settings respawn_deadonly 1 //Only allow dead players to use say/console respawn commands //General settings respawn_enabled 1 //Allow autorespawn and player say/console commands respawn_round_limit 4 //number of times a player respawn in a round including initial spawn respawn_roundenddisable 1 //Do not respawn if round has ended //Auto respawn settings respawn_auto_enable 1 //Enable autorespawn respawn_auto_delay 2 //Number of seconds to delay autorespawn //Keep count of players after they leave the server? Prevents players from reconnecting to the server and respawning the same round respawn_keepcountdata 1 } block load { //Enable better deadflag handling refcount increment eventscripts_deadflag //Create variables es_xset respawn_chat_enable 1 "IchRespawn - Enable chat respawn command" es_xset respawn_chat_trigger "!respawn" "IchRespawn - Chat respawn command" //Client console command settings es_xset respawn_command_enable 1 "IchRespawn - enable client command command" es_xset respawn_command_trigger "!respawn" "IchRespawn - client command trigger" //Client say/console command settings es_xset respawn_deadonly 1 "IchRespawn - Only allow dead players to use say/console respawn commands" es_xset respawn_player_delay 2 "IchRespawn - Delay untill players can use chat or command to respawn (not autorespawn)" //General settings es_xset respawn_enabled 1 "IchRespawn - Allow autorespawn and player say/console commands" es_xset respawn_round_limit 4 "IchRespawn - number of times a player respawn in a round" es_xset respawn_roundenddisable 1 "IchRespawn - Do not respawn if round has ended" //Auto respawn settings es_xset respawn_auto_enable 1 "IchRespawn - Enable autorespawn" es_xset respawn_auto_delay 3 "IchRespawn - Number of seconds to delay autorespawn" es_xset respawn_keepcountdata 1 "IchRespawn - Keep count of players after they leave the server? Prevents players from reconnecting to the server and respawning the same round" es_xset respawn_version 2.0 "Ichthys Respawn Script Version" es_xmakepublic respawn_version es_xset respawn_roundcount 0 es_xset respawn_roundended 1 es_xset respawn_userid 0 es_xset respawn_formatformat 0 es_xset respawn_exists 0 es_xset respawn_spawncount 0 es_xset respawn_spawncount_check 0 es_xset respawn_roundcount_check 0 es_xset respawn_isdead 0 es_xset respawn_teamid 0 es_xset respawn_id 0 es_xset respawn_count_ct 0 es_xset respawn_count_t 0 //do config es_xdoblock ich_respawn/config //server commands es_xexists respawn_exists command respawn if (server_var(respawn_exists) = 0) then es_xregcmd respawn "ich_respawn/respawn_server" "Ichthys Respawn Command" //Client commands es_set respawn_chat_trigger_current server_var(respawn_chat_trigger) es_regsaycmd server_var(respawn_chat_trigger) "ich_respawn/respawn_client" "IchRespawn - Client Respawn Chat Command" es_set respawn_command_trigger_current server_var(respawn_command_trigger) es_regclientcmd server_var(respawn_command_trigger) "ich_respawn/respawn_client" "IchRespawn - Client Respawn Console Command" //keygroup es_keygroupcreate respawn //Init player list es_xdoblock ich_respawn/init_list } block init_list { es_createplayerlist respawn_templist es_xforeachkey respawn_userid in respawn_templist "es_xdoblock ich_respawn/init_list_fek" es_keygroupdelete respawn_templist } block init_list_fek { es uniqueid respawn_id server_var(respawn_userid) 1 es_keycreate respawn server_var(respawn_id) es_keygetvalue respawn_isdead respawn_templist server_var(respawn_userid) isdead es_keysetvalue respawn server_var(respawn_id) spawncount 0 } block unload { refcount decrement eventscripts_deadflag //remove keygroup and commands //Client commands es_unregsaycmd server_var(respawn_chat_trigger_current) es_unregclientcmd server_var(respawn_command_trigger_current) //keygroup es_keygroupdelete respawn } block enable { refcount increment eventscripts_deadflag es_xdoblock ich_respawn/config //Client commands es_set respawn_chat_trigger_current server_var(respawn_chat_trigger) es_regsaycmd server_var(respawn_chat_trigger) "ich_respawn/respawn_client" "IchRespawn - Client Respawn Chat Command" es_set respawn_command_trigger_current server_var(respawn_command_trigger) es_regclientcmd server_var(respawn_command_trigger) "ich_respawn/respawn_client" "IchRespawn - Client Respawn Console Command" //keygroup es_xkeygroupcreate respawn } block disable { refcount decrement eventscripts_deadflag //Client commands es_unregsaycmd server_var(respawn_chat_trigger_current) es_unregclientcmd server_var(respawn_command_trigger_current) //keygroup es_xkeygroupdelete respawn } //respawn auto block respawn_server { //Get type es_xgetargv respawn_format 1 es_xformatv respawn_format ich_respawn/respawn_server_%1 respawn_format es_doblock server_var(respawn_format) } //respawn auto block respawn_server_auto { es_xgetargv respawn_userid 2 es_xgetargv respawn_spawncount_check 3 es_xgetargv respawn_roundcount_check 4 //get id es uniqueid respawn_id server_var(respawn_userid) 1 //Check if user is still on server ifx true(respawn_id) do { es_dbgmsg -1 on a team? es_getplayerteam respawn_teamid server_var(respawn_userid) ifx parse("respawn_teamid > 1") do { //Same round? ifx parse("respawn_roundcount_check = respawn_roundcount") do { //Same spawncount? es_keygetvalue respawn_spawncount respawn server_var(respawn_id) spawncount ifx parse("respawn_spawncount_check = respawn_spawncount") do { es est_spawn server_var(respawn_userid) } } } } } block respawn_client { //enabled? ifx true(respawn_enabled) do { ifx false(respawn_roundended) do { es_xgetuserid respawn_userid //Get some data! es_createplayerlist respawn_templist server_var(respawn_userid) //on a team? es_keygetvalue respawn_teamid respawn_templist server_var(respawn_userid) teamid ifx parse("respawn_teamid > 1") do { //Allow dead players? es_keygetvalue respawn_isdead respawn_templist server_var(respawn_userid) isdead ifx false(respawn_deadonly) do { es_xsetinfo respawn_isdead 1 } ifx true(respawn_isdead) do { //get some counts and check 'em es uniqueid respawn_id server_var(respawn_userid) 1 es_keygetvalue respawn_spawncount respawn server_var(respawn_id) spawncount ifx parse("respawn_spawncount < respawn_round_limit") do { es est_spawn server_var(respawn_userid) 1 } else do { es_xformatv respawn_format "#greenIchRespawn #default- #lightgreenYou may not respawn any more times #default(%1/%2)" respawn_spawncount respawn_round_limit es_tell server_var(respawn_userid) #multi server_var(respawn_format) } } else do { es_tell server_var(respawn_userid) #multi #greenIchRespawn #default- #lightgreenYou On this server you must be dead to respawn } } else do { es_tell server_var(respawn_userid) #multi #green IchRespawn #default- #lightgreenYou must be on a team in order to respawn } es_keygroupdelete respawn_templist } } } event round_start { //Increment round count //Used to make sure players that were set to respawn in the previous round don't respawn in the next es_xmath respawn_roundcount + 1 if (server_var(respawn_roundcount) > 100) then es_xset respawn_roundcount 0 //Set round as not ended es_xset respawn_roundended 0 } event round_end { //Clear out keygroup and create list es_xdoblock ich_respawn/init_list //Don't let players respawn when the round has ended and is going to start again soon or change map es_xset respawn_roundended 1 } event player_death { ifx true(respawn_enabled) do //enabled? { es_getlivingplayercount respawn_count_ct 2 es_getlivingplayercount respawn_count_t 3 es_mathparse respawn_spawncount "min(respawn_count_ct,respawn_count_t)" //There are players on both teams? ifx true(respawn_spawncount) do { //Auto respawn on? ifx true(respawn_auto_enable) do { //round not ended? ifx false(respawn_roundended) do { //Get spawncount and check it against limit es uniqueid respawn_id event_var(userid) 1 es_keygetvalue respawn_spawncount respawn server_var(respawn_id) spawncount ifx parse("respawn_spawncount < respawn_round_limit") do { es_delayed server_var(respawn_auto_delay) respawn auto event_var(userid) server_var(respawn_spawncount) server_var(respawn_roundcount) } else do { es_xformatv respawn_format "#greenIchRespawn #default- #lightgreenYou may not respawn any more times #default(%1/%1)" respawn_round_limit es_tell server_var(respawn_userid) #multi server_var(respawn_format) } } } } else do { es_xset respawn_roundended 1 } } } event player_spawn { if (event_var(es_userteam) > 1) do { es uniqueid respawn_id event_var(userid) 1 es_keygetvalue respawn_spawncount respawn server_var(respawn_id) spawncount es_xmath respawn_spawncount + 1 es_keysetvalue respawn server_var(respawn_id) spawncount server_var(respawn_spawncount) //Message es_xmathparse respawn_spawncount_check "respawn_round_limit - respawn_spawncount" ifx parse("respawn_spawncount_check > 1") do { es_xformatv respawn_format "#greenIchRespawn #default- #lightgreenYou may respawn #green%1 #lightgreenmore times #default(%2/%3)" respawn_spawncount_check respawn_spawncount respawn_round_limit es_tell event_var(userid) #multi server_var(respawn_format) } else do { ifx parse("respawn_spawncount_check = 1") do { es_xformatv respawn_format "#greenIchRespawn #default- #lightgreenYou may respawn #green%1 #lightgreenmore time #default(%2/%3)" respawn_spawncount_check respawn_spawncount respawn_round_limit es_tell event_var(userid) #multi server_var(respawn_format) } else do { es_xformatv respawn_format "#greenIchRespawn #default- #lightgreenYou may not respawn any nmore times #default(%1/%2)" respawn_spawncount respawn_round_limit es_tell event_var(userid) #multi server_var(respawn_format) } } } } event player_activate { es uniqueid respawn_id event_var(userid) 1 es_keycreate respawn server_var(respawn_id) es_keysetvalue respawn server_var(respawn_id) spawncount 0 } event player_disconnect { ifx false(respawn_keepcountdata) do { es uniqueid respawn_id event_var(userid) 1 es_keydelete respawn server_var(respawn_id) } }