From 65ad75f4e38acc2be9b35568cdf533a474cf9249 Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 14 Jan 2007 19:08:54 +0000 Subject: [PATCH] Replaced trunk's centerprint system by the simpler one in branch; this is to keep trunk and branch in sync. Eventually, it will get replaced by CSQC stuff anyway, so why keep it unnecessarily different. git-svn-id: svn://svn.icculus.org/nexuiz/trunk@2113 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/arena.qc | 10 ++- data/qcsrc/server/centermsg.qc | 129 ---------------------------- data/qcsrc/server/centermsg.qh | 30 ------- data/qcsrc/server/cl_client.qc | 23 +---- data/qcsrc/server/cl_physics.qc | 2 +- data/qcsrc/server/cl_player.qc | 4 +- data/qcsrc/server/cl_weapons.qc | 10 +-- data/qcsrc/server/clientcommands.qc | 2 +- data/qcsrc/server/ctf.qc | 4 +- data/qcsrc/server/defs.qh | 6 +- data/qcsrc/server/g_damage.qc | 31 ++++--- data/qcsrc/server/g_triggers.qc | 13 ++- data/qcsrc/server/g_world.qc | 1 - data/qcsrc/server/miscfunctions.qc | 28 ++++++ data/qcsrc/server/progs.src | 3 - data/qcsrc/server/t_items.qc | 3 +- data/qcsrc/server/t_plats.qc | 4 +- data/qcsrc/server/teamplay.qc | 15 ++-- data/qcsrc/server/w_nex.qc | 23 +++-- 19 files changed, 92 insertions(+), 249 deletions(-) delete mode 100644 data/qcsrc/server/centermsg.qc delete mode 100644 data/qcsrc/server/centermsg.qh diff --git a/data/qcsrc/server/arena.qc b/data/qcsrc/server/arena.qc index cc11ad73d..196ad017d 100644 --- a/data/qcsrc/server/arena.qc +++ b/data/qcsrc/server/arena.qc @@ -126,16 +126,18 @@ void Arena_Warmup() if(time < warmup && self.spawned) { if(champion) - centermsg_set(CENTERMSG_ARENACHAMP, strcat("The Champion is ", champion.netname)); + msg = strcat(msg, "The Champion is ", champion.netname, "^7\n\n\n"); if(f) - centermsg_set(CENTERMSG_ARENATIMER, strcat("Round will start in ", ftos(f))); + msg = strcat(msg, "Round will start in ", ftos(f)); else { if(self.spawned) - centermsg_set(CENTERMSG_ARENATIMER, "^1Fight!"); + msg = strcat(msg, "^1Fight!"); } + centerprint(self, msg); + if(self.spawned) self.movetype = MOVETYPE_NONE; @@ -147,7 +149,7 @@ void Arena_Warmup() else if(self.movetype == MOVETYPE_NONE) { self.movetype = MOVETYPE_WALK; - centermsg_reset(); + centerprint(self, "\n"); } } diff --git a/data/qcsrc/server/centermsg.qc b/data/qcsrc/server/centermsg.qc deleted file mode 100644 index 21f7f972e..000000000 --- a/data/qcsrc/server/centermsg.qc +++ /dev/null @@ -1,129 +0,0 @@ -.float centermsg_expire[MAXCENTERMSG]; -.string centermsg_text[MAXCENTERMSG]; -.float centermsg_nextdisplay; - -void centermsg_makedirty() -{ - self.centermsg_nextdisplay = time; -} - -void centermsg_free(float lineno) -{ - if(self.(centermsg_expire[lineno]) > 0) - strunzone(self.(centermsg_text[lineno])); - self.(centermsg_expire[lineno]) = -1; - self.(centermsg_text[lineno]) = ""; - centermsg_makedirty(); -} - -void centermsg_freefor(entity p, float lineno) -{ - entity oldself; - oldself = self; - self = p; - centermsg_free(lineno); - self = oldself; -} - -void centermsg_set(float lineno, string text) -{ - centermsg_free(lineno); - self.(centermsg_expire[lineno]) = time + self.cvar_scr_centertime; - self.(centermsg_text[lineno]) = strzone(text); - centermsg_makedirty(); -} - -void centermsg_setexpire(float lineno, string text, float expire) -{ - centermsg_free(lineno); - self.(centermsg_expire[lineno]) = time + self.cvar_scr_centertime * expire; - self.(centermsg_text[lineno]) = strzone(text); - centermsg_makedirty(); -} - -void centermsg_setfor(entity p, float lineno, string text) -{ - entity oldself; - oldself = self; - self = p; - centermsg_set(lineno, text); - self = oldself; -} - -float centermsg_checkexpire(float lineno) -{ - if(self.(centermsg_expire[lineno]) >= 0) - { - if(self.(centermsg_expire[lineno]) < time) - { - centermsg_free(lineno); - return FALSE; - } - return TRUE; - } - return FALSE; -} - -void centermsg_do() -{ - float i; - float found; - string out; - found = 0; - - if(self.cvar_scr_centertime) - self.centermsg_nextdisplay = time + self.cvar_scr_centertime * 0.8; - - for(i = 0; i < MAXCENTERMSG; ++i) - if(centermsg_checkexpire(i)) - found = 1; - - if(!found) - return; - - out = "\n\n\n\n\n\n\n\n\n\n\n\n\n"; - for(i = 0; i < MAXCENTERMSG; ++i) - { - out = strcat(out, "^7"); - if(self.centermsg_expire[i] >= 0) - out = strcat(out, self.(centermsg_text[i])); - out = strcat(out, "\n"); - } - centerprint(self, out); -} - -void centermsg_check() -{ - if(clienttype(self) != CLIENTTYPE_REAL) - return; - if(self.centermsg_nextdisplay && self.centermsg_nextdisplay <= time) - centermsg_do(); -} - -void centermsg_reset() -{ - float i; - self.centermsg_nextdisplay = 0; - for(i = 0; i < MAXCENTERMSG; ++i) - centermsg_free(i); - centerprint(self, ""); -} - -void centermsg_setall(string s) -{ - float i; - centerprint(self, s); - self.centermsg_nextdisplay = 0; - for(i = 0; i < MAXCENTERMSG; ++i) - centermsg_free(i); -} - -void centermsg_setallfor(entity p, string text) -{ - entity oldself; - oldself = self; - self = p; - centermsg_setall(text); - self = oldself; -} - diff --git a/data/qcsrc/server/centermsg.qh b/data/qcsrc/server/centermsg.qh deleted file mode 100644 index a9a426453..000000000 --- a/data/qcsrc/server/centermsg.qh +++ /dev/null @@ -1,30 +0,0 @@ -// centerprint locations -#define MAXCENTERMSG 11 -#define CENTERMSG_VOTE 0 -#define CENTERMSG_GAMEMODE1 2 -#define CENTERMSG_GAMEMODE2 3 -#define CENTERMSG_NIXNEXCOUNT 4 -#define CENTERMSG_TRIGGER 5 -#define CENTERMSG_NIXNEX 6 -#define CENTERMSG_MINSTAGIB 6 -#define CENTERMSG_MINSTAGIB2 7 -#define CENTERMSG_TEAMCHANGE 7 -#define CENTERMSG_TEAMCHANGE2 8 -#define CENTERMSG_KILL 8 -#define CENTERMSG_DEATH 8 -#define CENTERMSG_CAMP 8 -#define CENTERMSG_POINT 9 -#define CENTERMSG_TEAMSAY 10 - -#define CENTERMSG_ARENACHAMP CENTERMSG_GAMEMODE1 -#define CENTERMSG_ARENATIMER CENTERMSG_GAMEMODE2 -#define CENTERMSG_CTF CENTERMSG_GAMEMODE1 - -void centermsg_check(); -void centermsg_reset(); -void centermsg_set(float lineno, string text); -void centermsg_setfor(entity player, float lineno, string text); -void centermsg_free(float lineno); -void centermsg_freefor(entity player, float lineno); -void centermsg_setall(string s); -void centermsg_setallfor(entity player, string s); diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 82eec0e9c..0e8fcaf62 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -664,7 +664,6 @@ string ColoredTeamName(float t); //void dom_player_join_team(entity pl); void ClientConnect (void) { - //local float fh; local string s; self.classname = "player_joining"; @@ -720,23 +719,7 @@ void ClientConnect (void) self.welcomemessage_time = time + cvar("welcome_message_time"); self.welcomemessage_time2 = 0; - /* - // the client might not have his maps/%s.cfg file yet! - // so send the one from the server... - fh = fopen(strcat("maps/", mapname, ".cfg"), FILE_READ); - if(fh >= 0) - { - while((s = fgets(fh))) - stuffcmd(self, strcat(s, "\n")); - fclose(fh); - } - // and then execute the client's so he can still override CD tracks - - not needed any more: current map download system disconnects and reconnects - after the download, and then the file will be there - */ stuffcmd(self, strcat("exec maps/", mapname, ".cfg\n")); - // TODO: is this being used for anything else than cd tracks? // Remember: SVC_CDTRACK exists. Maybe it should be used. @@ -1426,7 +1409,7 @@ void PlayerPreThink (void) //sprint(self, "distance: ", ftos(self.lms_traveled_distance), "\n"); if(self.lms_traveled_distance < cvar("g_lms_campcheck_distance")) { - centermsg_set(CENTERMSG_CAMP, cvar_string("g_lms_campcheck_message")); + centerprint(self, cvar_string("g_lms_campcheck_message")); // FIXME KadaverJack: gibbing player here causes playermodel to bounce around, instead of eye.md3 // I wasn't able to find out WHY that happens, so I put a workaround in place that shall prevent players from being gibbed :( Damage(self, self, self, bound(0, cvar("g_lms_campcheck_damage"), self.health + self.armorvalue * cvar("g_balance_armor_blockpercent") + 5), DEATH_CAMP, self.origin, '0 0 0'); @@ -1554,7 +1537,7 @@ void PlayerPreThink (void) PutClientInServer(); if(self.flags & !FL_NOTARGET) bprint (strcat("^4", self.netname, "^4 is playing now\n")); - centermsg_reset(); + centerprint(self,""); return; } else { self.flags = self.flags & !FL_JUMPRELEASED; @@ -1587,7 +1570,7 @@ void PlayerPreThink (void) if(cvar("g_campaign")) campaign_bots_may_start = 1; PutClientInServer(); - centermsg_reset(); + centerprint(self,""); return; } else { self.flags = self.flags & !FL_JUMPRELEASED; diff --git a/data/qcsrc/server/cl_physics.qc b/data/qcsrc/server/cl_physics.qc index 8b12ffcea..eb1eac898 100644 --- a/data/qcsrc/server/cl_physics.qc +++ b/data/qcsrc/server/cl_physics.qc @@ -20,7 +20,7 @@ void SV_PlayerPhysics() local vector wishvel, wishdir, v; local float wishspeed, f, maxspd_mod, spd, maxairspd, airaccel, swampspd_mod; string temps; - + if (clienttype(self) == CLIENTTYPE_BOT) bot_think(); diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index 98d8ba7a0..c65497cee 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -409,7 +409,7 @@ void ClearSelectedPlayer() { if(self.selected_player) { - centermsg_set(CENTERMSG_POINT, ""); + centerprint_expire(self, CENTERPRIO_POINT); self.selected_player = world; self.selected_player_display_needs_update = FALSE; } @@ -495,7 +495,7 @@ void UpdateSelectedPlayer() { namestr = selected.netname; } - centermsg_set(CENTERMSG_POINT, namestr); + centerprint_atprio(self, CENTERPRIO_POINT, namestr); } } else diff --git a/data/qcsrc/server/cl_weapons.qc b/data/qcsrc/server/cl_weapons.qc index 273f1d07b..838886313 100644 --- a/data/qcsrc/server/cl_weapons.qc +++ b/data/qcsrc/server/cl_weapons.qc @@ -355,19 +355,13 @@ void Nixnex_GiveCurrentWeapon() if(dt >= 1 && dt <= 5) self.nixnex_lastinfotime = -42; else - { - centermsg_free(CENTERMSG_NIXNEXCOUNT); - centermsg_set(CENTERMSG_NIXNEX, strcat("^2Active weapon: ^3", W_Name(nixnex_weapon))); - } + centerprint(self, strcat("\n\n^2Active weapon: ^3", W_Name(nixnex_weapon), "\n")); } if(self.nixnex_lastinfotime != dt) { self.nixnex_lastinfotime = dt; // initial value 0 should count as "not seen" if(dt >= 1 && dt <= 5) - { - centermsg_set(CENTERMSG_NIXNEXCOUNT, strcat("^3", ftos(dt), "^2 seconds until weapon change...")); - centermsg_set(CENTERMSG_NIXNEX, strcat("Next weapon: ^3", W_Name(nixnex_nextweapon))); - } + centerprint(self, strcat("^3", ftos(dt), "^2 seconds until weapon change...\n\nNext weapon: ^3", W_Name(nixnex_nextweapon), "\n")); } if(cvar("g_use_ammunition") && time > self.nixnex_nextincr) diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index b2acf930e..e677b41a6 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -44,7 +44,7 @@ void Say(entity source, float teamsay, string msgin) { sprint(head, msgstr); if(teamsay) - centermsg_setfor(head, CENTERMSG_TEAMSAY, cmsgstr); + centerprint(head, cmsgstr); //stuffcmd(head, "play2 misc/talk.wav\n"); } head = find(head, classname, "player"); diff --git a/data/qcsrc/server/ctf.qc b/data/qcsrc/server/ctf.qc index 7ac44482a..49c1a74a3 100644 --- a/data/qcsrc/server/ctf.qc +++ b/data/qcsrc/server/ctf.qc @@ -248,7 +248,7 @@ void() FlagTouch = player = find(world, classname, "player"); while(player) { - if(player.team == self.team) centermsg_setfor(player, CENTERMSG_CTF, "The enemy got your flag! Retrieve it!"); + if(player.team == self.team) centerprint(player, "The enemy got your flag! Retrieve it!"); player = find(player, classname, "player"); } @@ -289,7 +289,7 @@ void() FlagTouch = player = find(world, classname, "player"); while(player) { - if(player.team == self.team) centermsg_setfor(player, CENTERMSG_CTF, "The enemy got your flag! Retrieve it!"); + if(player.team == self.team) centerprint(player, "The enemy got your flag! Retrieve it!"); player = find(player, classname, "player"); } self.movetype = MOVETYPE_NONE; // flag must have MOVETYPE_NONE here, otherwise it will drop through the floor... diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index 4aac283ea..d6e6fcf79 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -155,7 +155,7 @@ void(entity e, float chan, string samp, float vol, float atten) sound = #8; void(entity client, string s) stuffcmd = #21; void(entity client, string s) sprint = #24; vector(entity e, float sped) aim = #44; -void(entity client, string s) centerprint = #73; +void(entity client, string s) centerprint_builtin = #73; void(entity e) setspawnparms = #78; void(float to, float f) WriteByte = #52; void(float to, float f) WriteChar = #53; @@ -301,4 +301,8 @@ void ClearSelectedPlayer(); .float selected_player_display_needs_update; // are regular updates necessary? (health) .float selected_player_display_timeout; // when the selection will time out +void centerprint_atprio(entity e, float prio, string s); +void centerprint_expire(entity e, float prio); +void centerprint(entity e, string s); + .float respawn_countdown; // next number to count diff --git a/data/qcsrc/server/g_damage.qc b/data/qcsrc/server/g_damage.qc index b812e6ade..3cc85f870 100644 --- a/data/qcsrc/server/g_damage.qc +++ b/data/qcsrc/server/g_damage.qc @@ -107,12 +107,11 @@ void Obituary (entity attacker, entity targ, float deathtype) m = strcat(m, "^6Pink Team"); else if (targ.team == 13) m = strcat(m, "^3Yellow Team"); - centermsg_setfor(targ, CENTERMSG_TEAMCHANGE, m); + centerprint(targ, m); } else if (deathtype == DEATH_AUTOTEAMCHANGE) { - centermsg_setfor(targ, CENTERMSG_TEAMCHANGE, "You have been moved into a different team to improve team balance"); - m = "You are now on: "; + m = "You have been moved into a different team to improve team balance\nYou are now on: "; if (targ.team == 5) m = strcat(m, "^1Red Team"); else if (targ.team == 14) @@ -121,19 +120,19 @@ void Obituary (entity attacker, entity targ, float deathtype) m = strcat(m, "^6Pink Team"); else if (targ.team == 13) m = strcat(m, "^3Yellow Team"); - centermsg_setfor(targ, CENTERMSG_TEAMCHANGE2, m); + centerprint(targ, m); return; } else if (deathtype == DEATH_CAMP) - centermsg_setfor(targ, CENTERMSG_DEATH, "^1Die camper!"); + centerprint(targ, strcat("^1Die camper!\n\n\n")); else if (deathtype == DEATH_NOAMMO) - centermsg_setfor(targ, CENTERMSG_DEATH, "^1You were killed for running out of ammo..."); + centerprint(targ, strcat("^1You were killed for running out of ammo...\n\n\n")); else if (deathtype == DEATH_ROT) - centermsg_setfor(targ, CENTERMSG_DEATH, "^1You grew too old without taking your medicine"); + centerprint(targ, strcat("^1You grew too old without taking your medicine\n\n\n")); else if (deathtype == DEATH_MIRRORDAMAGE) - centermsg_setfor(targ, CENTERMSG_DEATH, "^1Don't shoot your team mates!"); + centerprint(targ, strcat("^1Don't shoot your team mates!\n\n\n")); else - centermsg_setfor(targ, CENTERMSG_DEATH, "^1You killed your own dumb self!"); + centerprint(targ, strcat("^1You killed your own dumb self!\n\n\n")); if (deathtype == IT_GRENADE_LAUNCHER) bprint ("^1",s, "^1 detonated\n"); @@ -168,7 +167,7 @@ void Obituary (entity attacker, entity targ, float deathtype) } else if (teamplay && attacker.team == targ.team) { - centermsg_setfor(attacker, CENTERMSG_DEATH, "^1Moron! You fragged a teammate!"); + centerprint(attacker, strcat("^1Moron! You fragged a teammate!\n\n\n")); bprint ("^1", attacker.netname, "^1 mows down a teammate\n"); GiveFrags(attacker, targ, -1); //attacker.frags = attacker.frags - 1; @@ -191,8 +190,8 @@ void Obituary (entity attacker, entity targ, float deathtype) bprint("^1",attacker.netname, "^1 drew first blood", "\n"); } - centermsg_setfor(attacker, CENTERMSG_KILL, strcat("^4You fragged ^7", s)); - centermsg_setfor(targ, CENTERMSG_DEATH, strcat("^1You were fragged by ^7", attacker.netname)); + centerprint(attacker, strcat("^4You fragged ^7", s, "\n\n\n")); + centerprint(targ, strcat("^1You were fragged by ^7", attacker.netname, "\n\n\n")); if (deathtype == IT_LASER) bprint ("^1",s, "^1 was blasted by ", attacker.netname, "\n"); @@ -279,7 +278,7 @@ void Obituary (entity attacker, entity targ, float deathtype) } else { - centermsg_setfor(targ, CENTERMSG_DEATH, "^1Watch your step!"); + centerprint(targ, strcat("^1Watch your step!\n\n\n")); if (deathtype == DEATH_HURTTRIGGER && attacker.message != "") bprint ("^1",s, "^1 ", attacker.message, "\n"); else if (deathtype == DEATH_DROWN) @@ -403,7 +402,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if (targ.armorvalue && (deathtype == IT_NEX) && damage) { targ.armorvalue -= 1; - centermsg_setfor(targ, CENTERMSG_MINSTAGIB, strcat("^3Remaining extra lives: ",ftos(targ.armorvalue))); + centerprint(targ, strcat("^3Remaining extra lives: ",ftos(targ.armorvalue),"\n")); damage = 0; if(clienttype(targ) == CLIENTTYPE_REAL) stuffcmd(targ, "play2 misc/hit.wav\n"); //stuffcmd(attacker, "play2 misc/hit.wav\n"); @@ -418,7 +417,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if (targ != attacker) { if (targ.classname == "player") - centermsg_setfor(attacker, CENTERMSG_MINSTAGIB, "Secondary fire inflicts no damage!\n"); + centerprint(attacker, "Secondary fire inflicts no damage!\n"); damage = 0; mirrordamage = 0; force = '0 0 0'; @@ -541,7 +540,7 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if(attacker.armorvalue > 0) { attacker.armorvalue = attacker.armorvalue - 1; - centermsg_setfor(attacker, CENTERMSG_MINSTAGIB, strcat("^3Remaining extra lives: ",ftos(attacker.armorvalue))); + centerprint(attacker, strcat("^3Remaining extra lives: ",ftos(attacker.armorvalue),"\n")); if(clienttype(attacker) == CLIENTTYPE_REAL) stuffcmd(attacker, "play2 misc/hit.wav\n"); } mirrordamage = 0; diff --git a/data/qcsrc/server/g_triggers.qc b/data/qcsrc/server/g_triggers.qc index 86ae26028..bf3582c89 100644 --- a/data/qcsrc/server/g_triggers.qc +++ b/data/qcsrc/server/g_triggers.qc @@ -54,7 +54,7 @@ void() SUB_UseTargets = // if (activator.classname == "player" && self.message != "") { - centermsg_setfor (activator, CENTERMSG_TRIGGER, self.message); + centerprint (activator, self.message); if (!self.noise) sound (activator, CHAN_VOICE, "misc/talk.wav", 1, ATTN_NORM); } @@ -307,20 +307,20 @@ void() counter_use = && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0) { if (self.count >= 4) - centermsg_setfor (activator, CENTERMSG_TRIGGER, "There are more to go..."); + centerprint (activator, "There are more to go..."); else if (self.count == 3) - centermsg_setfor (activator, CENTERMSG_TRIGGER, "Only 3 more to go..."); + centerprint (activator, "Only 3 more to go..."); else if (self.count == 2) - centermsg_setfor (activator, CENTERMSG_TRIGGER, "Only 2 more to go..."); + centerprint (activator, "Only 2 more to go..."); else - centermsg_setfor (activator, CENTERMSG_TRIGGER, "Only 1 more to go..."); + centerprint (activator, "Only 1 more to go..."); } return; } if (activator.classname == "player" && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0) - centermsg_setfor(activator, CENTERMSG_TRIGGER, "Sequence completed!"); + centerprint(activator, "Sequence completed!"); self.enemy = activator; multi_trigger (); }; @@ -429,7 +429,6 @@ void() func_sparks = } } */ - void() rain_think = { self.nextthink = time + 0.1; diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 7683916e5..430fe067b 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -959,7 +959,6 @@ void() CheckRules_Player = // fixme: don't check players; instead check dom_team and ctf_team entities // (div0: and that in CheckRules_World please) - centermsg_check(); }; float checkrules_oneminutewarning; diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index d53323bbe..81eff7c1c 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -561,3 +561,31 @@ string decolorize(string s) } return out; } + +#define CENTERPRIO_POINT 1 +#define CENTERPRIO_NORMAL 5 +.float centerprint_priority; +.float centerprint_expires; +void centerprint_atprio(entity e, float prio, string s) +{ + if(time > e.centerprint_expires) + e.centerprint_priority = 0; + if(prio >= e.centerprint_priority) + { + e.centerprint_priority = prio; + e.centerprint_expires = time + e.cvar_scr_centertime; + centerprint_builtin(e, s); + } +} +void centerprint_expire(entity e, float prio) +{ + if(prio == e.centerprint_priority) + { + e.centerprint_priority = 0; + centerprint_builtin(e, ""); + } +} +void centerprint(entity e, string s) +{ + centerprint_atprio(e, CENTERPRIO_NORMAL, s); +} diff --git a/data/qcsrc/server/progs.src b/data/qcsrc/server/progs.src index ff8871c50..50d8293c2 100644 --- a/data/qcsrc/server/progs.src +++ b/data/qcsrc/server/progs.src @@ -8,7 +8,6 @@ defs.qh // Should rename this, it has fields and globals extensions.qh campaign.qh -centermsg.qh ../common/campaign_common.qh ../common/util.qh ../common/util.qc @@ -80,5 +79,3 @@ clientcommands.qc campaign.qc ../common/campaign_file.qc ../common/campaign_setup.qc - -centermsg.qc diff --git a/data/qcsrc/server/t_items.qc b/data/qcsrc/server/t_items.qc index 886b7abf4..e3f47dee8 100644 --- a/data/qcsrc/server/t_items.qc +++ b/data/qcsrc/server/t_items.qc @@ -53,8 +53,7 @@ void Item_Touch (void) if (self.ammo_cells) { // play some cool sounds ;) - centermsg_freefor(other, CENTERMSG_MINSTAGIB); - centermsg_freefor(other, CENTERMSG_MINSTAGIB2); + centerprint(other, "\n"); if(other.health <= 5) stuffcmd(other, "play2 announcer/robotic/lastsecond.ogg\n"); else if(other.health < 50) diff --git a/data/qcsrc/server/t_plats.qc b/data/qcsrc/server/t_plats.qc index a5e0b2675..48a8209e1 100644 --- a/data/qcsrc/server/t_plats.qc +++ b/data/qcsrc/server/t_plats.qc @@ -894,7 +894,7 @@ void() door_touch = if (self.owner.message != "") { if (other.flags & FL_CLIENT) - centermsg_setfor (other, CENTERMSG_TRIGGER, self.owner.message); + centerprint (other, self.owner.message); sound (other, CHAN_VOICE, "misc/talk.wav", 1, ATTN_NORM); } }; @@ -1295,7 +1295,7 @@ void() secret_touch = if (self.message) { if (other.flags & FL_CLIENT) - centermsg_setfor (other, CENTERMSG_TRIGGER, self.message); + centerprint (other, self.message); sound (other, CHAN_BODY, "misc/talk.wav", 1, ATTN_NORM); } }; diff --git a/data/qcsrc/server/teamplay.qc b/data/qcsrc/server/teamplay.qc index 137402d5d..0a0b8c546 100644 --- a/data/qcsrc/server/teamplay.qc +++ b/data/qcsrc/server/teamplay.qc @@ -309,16 +309,16 @@ void PrintWelcomeMessage(entity pl) if(self.classname == "observer") { if(cvar("g_lms") && self.frags <= 0 && self.frags > -666) - return centermsg_setall(strcat(newlines, "^1You have no more lives left\nwait for next round\n\n\n^7press attack to spectate other players")); + return centerprint(self, strcat(newlines, "^1You have no more lives left\nwait for next round\n\n\n^7press attack to spectate other players")); else if(cvar("g_lms") && self.frags == -666) - return centermsg_setall(strcat(newlines, "^1Match has already begun\nwait for next round\n\n\n^7press attack to spectate other players")); + return centerprint(self, strcat(newlines, "^1Match has already begun\nwait for next round\n\n\n^7press attack to spectate other players")); } else if(self.classname == "spectator") { if ((cvar("g_lms") && self.frags < 1) || cvar("g_arena")) - return centermsg_setall(strcat(newlines, "spectating ", self.enemy.netname, "\n\n\n^7press attack for next player\npress attack2 for free fly mode")); + return centerprint(self, strcat(newlines, "spectating ", self.enemy.netname, "\n\n\n^7press attack for next player\npress attack2 for free fly mode")); else - return centermsg_setall(strcat(newlines, "spectating ", self.enemy.netname, "\n\n\n^7press jump to play\n^7press attack for next player\npress attack2 for free fly mode")); + return centerprint(self, strcat(newlines, "spectating ", self.enemy.netname, "\n\n\n^7press jump to play\n^7press attack for next player\npress attack2 for free fly mode")); } @@ -327,7 +327,7 @@ void PrintWelcomeMessage(entity pl) if(cvar("g_campaign")) { - centermsg_setallfor(pl, campaign_message); + centerprint(pl, campaign_message); return; } @@ -413,7 +413,7 @@ void PrintWelcomeMessage(entity pl) s = strzone(s); - centermsg_setallfor(pl, s); + centerprint(pl, s); //sprint(pl, s); strunzone(s); @@ -931,6 +931,7 @@ void ShufflePlayerOutOfTeam (float source_team) float smallestteam, smallestteam_count, steam; float lowest_bot_score, lowest_player_score; entity head, lowest_bot, lowest_player, selected; + string m; smallestteam = 0; smallestteam_count = 999999999; @@ -1066,7 +1067,6 @@ void ShufflePlayerOutOfTeam (float source_team) if(selected.deadflag == DEAD_NO) Damage(selected, selected, selected, 100000, DEATH_AUTOTEAMCHANGE, selected.origin, '0 0 0'); - /* m = "You have been moved into a different team to improve team balance\nYou are now on: "; if (selected.team == 5) m = strcat(m, "^1Red Team"); @@ -1077,7 +1077,6 @@ void ShufflePlayerOutOfTeam (float source_team) else if (selected.team == 13) m = strcat(m, "^3Yellow Team"); centerprint(selected, m); - */ } // part of g_balance_teams_force diff --git a/data/qcsrc/server/w_nex.qc b/data/qcsrc/server/w_nex.qc index e7cbef280..ce4bae07f 100644 --- a/data/qcsrc/server/w_nex.qc +++ b/data/qcsrc/server/w_nex.qc @@ -67,68 +67,67 @@ void minstagib_ammocheck (void) { if (self.health == 5) { - centermsg_set(CENTERMSG_MINSTAGIB, "you're dead now..."); + centerprint(self, "you're dead now...\n"); Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/terminated.ogg\n"); } if (self.health == 10) { - centermsg_set(CENTERMSG_MINSTAGIB, "^11^7 second left to find some ammo"); + centerprint(self, "^11^7 second left to find some ammo\n"); Damage(self, self, self, 5, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/1.ogg\n"); } if (self.health == 20) { - centermsg_set(CENTERMSG_MINSTAGIB, "^12^7 seconds left to find some ammo"); + centerprint(self, "^12^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/2.ogg\n"); } if (self.health == 30) { - centermsg_set(CENTERMSG_MINSTAGIB, "^13^7 seconds left to find some ammo"); + centerprint(self, "^13^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/3.ogg\n"); } if (self.health == 40) { - centermsg_set(CENTERMSG_MINSTAGIB, "^14^7 seconds left to find some ammo"); + centerprint(self, "^14^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/4.ogg\n"); } if (self.health == 50) { - centermsg_set(CENTERMSG_MINSTAGIB, "^15^7 seconds left to find some ammo"); + centerprint(self, "^15^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/5.ogg\n"); } if (self.health == 60) { - centermsg_set(CENTERMSG_MINSTAGIB, "^36^7 seconds left to find some ammo"); + centerprint(self, "^36^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/6.ogg\n"); } if (self.health == 70) { - centermsg_set(CENTERMSG_MINSTAGIB, "^37^7 seconds left to find some ammo"); + centerprint(self, "^37^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/7.ogg\n"); } if (self.health == 80) { - centermsg_set(CENTERMSG_MINSTAGIB, "^38^7 seconds left to find some ammo"); + centerprint(self, "^38^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/8.ogg\n"); } if (self.health == 90) { - centermsg_set(CENTERMSG_MINSTAGIB, "^39^7 seconds left to find some ammo"); + centerprint(self, "^39^7 seconds left to find some ammo\n"); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/9.ogg\n"); } if (self.health == 100) { - centermsg_set(CENTERMSG_MINSTAGIB, "get some ammo or"); - centermsg_set(CENTERMSG_MINSTAGIB2, "you'll be dead in ^310^7 seconds..."); + centerprint(self, "get some ammo or\nyou'll be dead in ^310^7 seconds..."); Damage(self, self, self, 10, DEATH_NOAMMO, self.origin, '0 0 0'); stuffcmd(self, "play2 announcer/robotic/10.ogg\n"); } -- 2.39.2