/* status.qc This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to: Free Software Foundation, Inc. 59 Temple Place - Suite 330 Boston, MA 02111-1307, USA $Id$ */ .float laststattime; // time of last status update .float motd_count; .float statstate; // is the status bar on? float PLAYERSTATTIME = 1.75; void () MOTD = { if (self.motd_count < 4) { self.motd_count = self.motd_count + 1; if (self.classname == "spectator") { centerprint (self, "Welcome!\nRunning ThreeWave CTF 4.21\n\n" "ÃÁÐÔÕÒÅ ÔÈÅ ÆÌÁÇ!\n"); return; } if (gamestart) { centerprint (self, "Welcome!\nRunning ThreeWave CTF 4.21\n\n" "ÃÁÐÔÕÒÅ ÔÈÅ ÆÌÁÇ!\n\nChoose an exit...\n"); //red return; } if (self.steam == TEAM_COLOR1) centerprint (self, "Welcome!\nRunning ThreeWave CTF 4.21\n\n" "ÃÁÐÔÕÒÅ ÔÈÅ ÆÌÁÇ!\n\nYou are ÒÅÄ team\n"); //red else centerprint (self, "Welcome!\nRunning Threewave CTF 4.21\n\n" "ÃÁÐÔÕÒÅ ÔÈÅ ÆÌÁÇ!\n\nYou are ÂÌÕÅ team"); //blue return; } sprint (self, PRINT_HIGH, "Impulse 70 to turn off status bar\n"); sprint (self, PRINT_HIGH, "Impulse 71 through 81 to set status bar " "resolution\n"); sprint (self, PRINT_HIGH, "71:200 72:240 73:300 74:350 75:384 76:400 " "77:480 78:600 79:768 81:1024\n"); self.motd_count = 0; }; void () MOTD_ChooseTeam = { if (self.motd_count < 6) { self.motd_count = self.motd_count + 1; centerprint (self, "Welcome!\nRunning ThreeWave CTF 4.2\n\nÃÁÐÔÕÒÅ " "ÔÈÅ ÆÌÁÇ!\n\nPress 1 for ÒÅÄ team\nPress 2 for ÂÌÕÅ " "team\nOr Press Jump for automatic team\n"); return; } self.motd_count = 0; }; void () TeamCaptureCheckUpdate = { local entity p; if (gamestart) return; // handled by vote exit if (lastteamscrtime > time) return; lastteamscrtime = time + TEAMSCRTIME; // count up teamscr teamscr1 = teamscr2 = 0; p = find (world, classname, "player"); while (p != world) { if (p.steam == TEAM_COLOR1) teamscr1 = teamscr1 + p.frags; else if (p.steam == TEAM_COLOR2) teamscr2 = teamscr2 + p.frags; p = find (p, classname, "player"); } }; void () TeamCaptureResetUpdate = { lastteamscrtime = 0; TeamCaptureCheckUpdate(); }; void () TeamEndScore = { local string s; if (gamestart) return; lastteamscrtime = 0; TeamCaptureCheckUpdate(); if (teamscr1 > teamscr2) { bprint (PRINT_HIGH, "ÒÅÄ team won the level with "); s = ftos (teamscr1); bprint (PRINT_HIGH, s); bprint (PRINT_HIGH, " points!\n"); bprint (PRINT_HIGH, "ÂÌÕÅ team lost with "); s = ftos (teamscr2); bprint (PRINT_HIGH, s); bprint (PRINT_HIGH, " points.\n"); } else if (teamscr1 < teamscr2) { bprint (PRINT_HIGH, "ÂÌÕÅ team won the level with "); s = ftos (teamscr2); bprint (PRINT_HIGH, s); bprint (PRINT_HIGH, " points!\n"); bprint (PRINT_HIGH, "ÒÅÄ team lost with "); s = ftos (teamscr1); bprint (PRINT_HIGH, s); bprint (PRINT_HIGH, " points.\n"); } else { bprint (PRINT_HIGH, "ÂÌÕÅ and ÒÅÄ team tied level with "); s = ftos (teamscr1); bprint (PRINT_HIGH, s); bprint (PRINT_HIGH, " points!\n"); } }; string (entity who) TeamSetStatRes = { switch (who.statstate) { default: // > 7 = 768+ return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 7: // 600 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 6: // 480 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 5: // 400: return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 4: // 384 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 3: // 350 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 2: // 300 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 1: // 240: return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 0: // 200 return "\n\n\n\n\n\n\n\n\n\n\n\n"; } }; string (entity who) TeamSetStatRes2 = { switch (who.statstate) { default: // >7 = 768+ return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 7: // 600 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 6: // 480 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 5: // 400 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 4: // 384 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 3: // 350 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 2: // 300 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 1: // 240 return "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; case 0: // 200 return "\n\n\n\n\n\n\n\n\n\n\n"; } }; void () TeamCapturePlayerUpdate = { local entity e; local string n, t, s1, s2, s3, res; if (self.laststattime > time) return; TeamCaptureCheckUpdate (); self.laststattime = time + PLAYERSTATTIME; if (self.motd_count) { MOTD (); return; } if (self.statstate < 0) return; res = TeamSetStatRes(self); if (gamestart) { if (vote_leader == world) centerprint2 (self, res, " Choose an exit..."); else { res = TeamSetStatRes2 (vote_leader); n = ftos (voteexit_time - time); centerprint5 (self, res, vote_leader.message, " leads\n", n, " seconds until exit"); } return; } //.1234567890123456789012345678901234567 // Res.R.B. Capture The Flag // Res.R.B. BLUE 999 if (self.player_flag & ITEM_RUNE1_FLAG) s1 = "Resist …"; else if (self.player_flag & ITEM_RUNE2_FLAG) s1 = "Strength…"; else if (self.player_flag & ITEM_RUNE3_FLAG) s1 = "Haste …"; else if (self.player_flag & ITEM_RUNE4_FLAG) s1 = "Regen …"; else s1 = " …"; e = find (world, classname, "item_flag_team1"); if (e.cnt == FLAG_AT_BASE) s2 = " …"; else if (e.cnt == FLAG_CARRIED) s2 = "R…"; else s2 = "Ò…"; e = find (world, classname, "item_flag_team2"); if (e.cnt == FLAG_AT_BASE) s3 = " …"; else if (e.cnt == FLAG_CARRIED) s3 = "B…"; else s3 = "Â…"; if (teamscr1 == 0 && teamscr2 == 0) { // CTFBOT centerprint5 (self, res, s1, s2, s3, " Capture The Flag"); return; } if (time < (last_flag_capture + 6)) { if (last_capture_team == TEAM_COLOR1) { if (teamscr1 > teamscr2) { t = "Red Capture! RED "; n = ftos(teamscr1 - teamscr2); } else if (teamscr1 < teamscr2) { t = "Red Capture! BLUE "; n = ftos(teamscr2 - teamscr1); } else { t = "Red Capture! TIED "; n = ""; } } else { if (teamscr1 > teamscr2) { t = "Blue Capture! RED "; n = ftos(teamscr1 - teamscr2); } else if (teamscr1 < teamscr2) { t = "Blue Capture! BLUE "; n = ftos(teamscr2 - teamscr1); } else { t = "Blue Capture! TIED "; n = ""; } } } else { if (teamscr1 > teamscr2) { t = " RED "; n = ftos(teamscr1 - teamscr2); } else if (teamscr1 < teamscr2) { t = " BLUE "; n = ftos(teamscr2 - teamscr1); } else { t = " TIED "; n = ""; } } centerprint7(self, res, s1, s2, s3, " ", t, n); // }; void (entity who, string s) TeamPlayerUpdate = { local string n, res; TeamCaptureCheckUpdate(); who.laststattime = time + PLAYERSTATTIME; if (who.statstate < 0) { centerprint(who, s); return; } res = TeamSetStatRes2(who); if (teamscr1 == 0 && teamscr2 == 0) { centerprint3(who, res, s, "\n Capture The Flag"); } else if (teamscr1 > teamscr2) { n = ftos(teamscr1 - teamscr2); centerprint4(who, res, s, "\n RED ", n); } else if (teamscr1 < teamscr2) { n = ftos(teamscr2 - teamscr1); centerprint4(who, res, s, "\n BLUE ", n); } else centerprint3(who, res, s, "\n TIED"); }; void (entity who, string s1, string s2) TeamPlayerUpdate2 = { local string res, n; TeamCaptureCheckUpdate (); who.laststattime = time + PLAYERSTATTIME; if (who.statstate < 0) { centerprint2 (who, s1, s2); return; } res = TeamSetStatRes2 (who); if (teamscr1 == 0 && teamscr2 == 0) { centerprint4 (who, res, s1, s2, "\n Capture The Flag"); return; } else if (teamscr1 > teamscr2) { n = ftos(teamscr1 - teamscr2); centerprint5 (who, res, s1, s2, "\n RED ", n); } else if (teamscr1 < teamscr2) { n = ftos(teamscr2 - teamscr1); centerprint5 (who, res, s1, s2, "\n BLUE ", n); } else { centerprint4 (who, res, s1, s2, "\n TIED"); return; } };