From 29a352d04b6024ee382ce952e5fbe03ad12df57c Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 13 Jun 2009 17:26:29 +0000 Subject: [PATCH] two minor HUD patches; more persistence for bot scripting (if routing fails, they now have 20 seconds to walk around to random waypoints and find a route again) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@7025 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/client/sbar.qc | 12 ++++-- .../dialog_multiplayer_playersetup_radar.c | 39 +++++++++++-------- data/qcsrc/server/bots.qc | 12 ++++-- data/qcsrc/server/gamecommand.qc | 2 +- data/qcsrc/server/havocbot.qc | 26 +++++-------- 5 files changed, 49 insertions(+), 42 deletions(-) diff --git a/data/qcsrc/client/sbar.qc b/data/qcsrc/client/sbar.qc index 652df5989..c037ca5e5 100644 --- a/data/qcsrc/client/sbar.qc +++ b/data/qcsrc/client/sbar.qc @@ -2161,17 +2161,21 @@ void Sbar_Draw (void) if (intermission == 1) { - Sbar_DrawCenterPrint(); if(sb_showaccuracy) Sbar_DrawAccuracyStats(); else Sbar_DrawScoreboard(); - return; + Sbar_DrawCenterPrint(); } else if (intermission == 2) { - Sbar_FinaleOverlay(); - Sbar_DrawCenterPrint(); + if(sb_showaccuracy) + Sbar_DrawAccuracyStats(); + else if (sb_showscores) + Sbar_DrawScoreboard(); + else + Sbar_FinaleOverlay(); + Sbar_DrawCenterPrint(); } else if(sb_showaccuracy) { diff --git a/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup_radar.c b/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup_radar.c index 4c95dd848..f4101b0fb 100644 --- a/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup_radar.c +++ b/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup_radar.c @@ -58,24 +58,29 @@ void fillNexuizRadarDialog(entity me) me.TD(me, 1, 4, makeNexuizTextLabel(0, "HUD settings:")); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Default Red:")); - me.TD(me, 1, 3, e = makeNexuizSlider(0, 1, 0.01, "sbar_color_bg_r")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Default Green:")); - me.TD(me, 1, 3, e = makeNexuizSlider(0, 1, 0.01, "sbar_color_bg_g")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Default Blue:")); - me.TD(me, 1, 3, e = makeNexuizSlider(0, 1, 0.01, "sbar_color_bg_b")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Team brightness:")); - me.TD(me, 1, 3, e = makeNexuizSlider(0.1, 1, 0.01, "sbar_color_bg_team")); - me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Alpha:")); + me.TD(me, 1, 0.8, e = makeNexuizCheckBoxEx(100, 110, "viewsize", "Background:")); me.TD(me, 1, 3, e = makeNexuizSlider(0, 1, 0.01, "sbar_alpha_bg")); + setDependent(e, "viewsize", 0, 100); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Default Red:")); + me.TD(me, 1, 3, e = makeNexuizSlider(0, 1, 0.01, "sbar_color_bg_r")); + setDependent(e, "viewsize", 0, 100); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Default Green:")); + me.TD(me, 1, 3, e = makeNexuizSlider(0, 1, 0.01, "sbar_color_bg_g")); + setDependent(e, "viewsize", 0, 100); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Default Blue:")); + me.TD(me, 1, 3, e = makeNexuizSlider(0, 1, 0.01, "sbar_color_bg_b")); + setDependent(e, "viewsize", 0, 100); + me.TR(me); + me.TDempty(me, 0.2); + me.TD(me, 1, 0.8, e = makeNexuizTextLabel(0, "Team brightness:")); + me.TD(me, 1, 3, e = makeNexuizSlider(0.1, 1, 0.01, "sbar_color_bg_team")); + setDependent(e, "viewsize", 0, 100); me.TR(me); me.TR(me); me.TD(me, 1, 4, makeNexuizTextLabel(0, "Waypoint settings:")); diff --git a/data/qcsrc/server/bots.qc b/data/qcsrc/server/bots.qc index 9956cede1..3a97e3a0b 100644 --- a/data/qcsrc/server/bots.qc +++ b/data/qcsrc/server/bots.qc @@ -1927,7 +1927,10 @@ void navigation_goalrating_end() if not (self.navigation_hasgoals) { dprint(self.netname, " can't walk to any goal, going to a near waypoint\n"); - local entity head; + + entity head; + + RandomSelection_Init(); head = findradius(self.origin,1000); while(head) { @@ -1935,11 +1938,12 @@ void navigation_goalrating_end() if(!(head.wpflags & WAYPOINTFLAG_GENERATED)) if(vlen(self.origin-head.origin)>100) if(checkpvs(self.view_ofs,head)) - if(random()<0.5) - navigation_routetogoal(head,self.origin); - + RandomSelection_Add(head, 0, string_null, 1, 0); head = head.chain; } + if(RandomSelection_chosen_ent) + navigation_routetogoal(RandomSelection_chosen_ent, self.origin); + self.navigation_hasgoals = FALSE; // Reset this value } }; diff --git a/data/qcsrc/server/gamecommand.qc b/data/qcsrc/server/gamecommand.qc index 70b067470..d3fbfb480 100644 --- a/data/qcsrc/server/gamecommand.qc +++ b/data/qcsrc/server/gamecommand.qc @@ -970,7 +970,7 @@ void GameCommand(string command) bot_queuecommand(bot, strcat(argv(3), " ", argv(4))); } else - localcmd(s, "\n"); + localcmd(strcat(s, "\n")); ++i; } diff --git a/data/qcsrc/server/havocbot.qc b/data/qcsrc/server/havocbot.qc index 0b473c594..6b4b0d37b 100644 --- a/data/qcsrc/server/havocbot.qc +++ b/data/qcsrc/server/havocbot.qc @@ -1132,6 +1132,7 @@ void havocbot_ai() }; .entity havocbot_personal_waypoint; +.float havocbot_personal_waypoint_searchtime; float havocbot_moveto_refresh_route() { // Refresh path to goal if necessary @@ -1140,19 +1141,7 @@ float havocbot_moveto_refresh_route() navigation_goalrating_start(); navigation_routerating(wp, 10000, 10000); navigation_goalrating_end(); - - if(self.navigation_hasgoals) - { - dprint(self.netname, " walking to its personal waypoint\n"); - self.bot_strategytime = time + 10; - return TRUE; - } - else - { - dprint("(", self.netname, ") Warning: can't walk to the personal waypoint located at ", vtos(wp.origin),", trying again later\n"); - self.bot_strategytime = time + 1; - return FALSE; - } + return self.navigation_hasgoals; } .float havocbot_personal_waypoint_failcounter; @@ -1171,23 +1160,28 @@ float havocbot_moveto(vector pos) } if (!bot_strategytoken_taken) - if(self.bot_strategytime= 10) { - dprint("Warning: can't walk to the personal waypoint located at ", vtos(wp.origin),"\n"); + dprint("Warning: can't walk to the personal waypoint located at ", vtos(self.havocbot_personal_waypoint.origin),"\n"); self.aistatus &~= AI_STATUS_WAYPOINT_PERSONAL_LINKING; remove(self.havocbot_personal_waypoint); return CMD_STATUS_ERROR; } + else + dprint(self.netname, " can't walk to its personal waypoint (after ", ftos(self.havocbot_personal_waypoint_failcounter), " failed attempts), trying later\n"); } } @@ -1225,7 +1219,7 @@ float havocbot_moveto(vector pos) return CMD_STATUS_EXECUTING; } - self.bot_strategytime = time; // so we set the route next frame + self.havocbot_personal_waypoint_searchtime = time; // so we set the route next frame self.aistatus &~= AI_STATUS_WAYPOINT_PERSONAL_LINKING; self.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_GOING; -- 2.39.2