[nexuiz-commits] r6250 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Mar 22 14:39:19 EDT 2009
Author: mand1nga
Date: 2009-03-22 14:39:18 -0400 (Sun, 22 Mar 2009)
New Revision: 6250
Modified:
trunk/data/qcsrc/server/bots.qc
Log:
Fix for bot_aim() suggested by Qantourisc, makes this code dependent of "time" instead of "frametime". **Please test**
Removed old commented code
Modified: trunk/data/qcsrc/server/bots.qc
===================================================================
--- trunk/data/qcsrc/server/bots.qc 2009-03-22 14:37:23 UTC (rev 6249)
+++ trunk/data/qcsrc/server/bots.qc 2009-03-22 18:39:18 UTC (rev 6250)
@@ -2,7 +2,7 @@
float AI_STATUS_ROAMING = 1; // Bot is just crawling the map. No enemies at sight
float AI_STATUS_ATTACKING = 2; // There are enemies at sight
float AI_STATUS_RUNNING = 4; // Bot is bunny hopping
-float AI_STATUS_DANGER_AHEAD = 8; // There is lava/slime/abism ahead
+float AI_STATUS_DANGER_AHEAD = 8; // There is lava/slime/trigger_hurt ahead
float AI_STATUS_OUT_JUMPPAD = 16; // Trying to get out of a "vertical" jump pad
float AI_STATUS_OUT_WATER = 32; // Trying to get out of water
@@ -1213,7 +1213,7 @@
maxdistance = 50000;
else
maxdistance = 1500;
-
+
for(i=increment;!navigation_markroutes_nearestwaypoints(waylist, i)&&i<maxdistance;i+=increment);
searching = TRUE;
@@ -1714,6 +1714,7 @@
.float bot_nextthink;
.float bot_badaimtime;
.float bot_aimthinktime;
+.float bot_prevaimtime;
.vector bot_mouseaim;
.vector bot_badaimoffset;
.vector bot_1st_order_aimfilter;
@@ -1724,39 +1725,9 @@
.vector bot_olddesiredang;
float bot_aimdir(vector v, float maxfiredeviation)
{
-/*
- local float snapcos;
- local vector olddir, newdir, desireddir;
-
- makevectors(self.v_angle);
- olddir = newdir = v_forward;
- desireddir = normalize(v);
- snapcos = cos(cvar("bot_ai_aimskill_snapangle") * frametime * (skill + 1) * 0.5);
- if (desireddir * olddir < v_forward_x)
- newdir = desireddir;
- else
- {
- local float blendrate;
- blendrate = cvar("bot_ai_aimskill_blendrate") * frametime * (skill + 1) * 0.5;
- newdir = olddir + (desireddir - olddir) * bound(0, blendrate, 1);
- }
-
- // decide whether to fire this time
- if ((desireddir * newdir) >= cos(maxfiredeviation))
- self.bot_firetimer = time + 0.3;
-
- self.v_angle = vectoangles(newdir);
- self.v_angle_x = self.v_angle_x * -1;
-
- makevectors(self.v_angle);
- shotorg = self.origin + self.view_ofs;
- shotdir = newdir;
-
- return time < self.bot_firetimer;
-*/
-
- local float dist;
+ local float dist, delta_t, blend;
local vector desiredang, diffang;
+ local float delta_t;
//dprint("aim ", self.netname, ": old:", vtos(self.v_angle));
// make sure v_angle is sane first
@@ -1796,9 +1767,11 @@
self.bot_olddesiredang = desiredang;
//dprint(" diff:", vtos(diffang));
+ delta_t = time-self.bot_prevaimtime;
+ self.bot_prevaimtime = time;
// Here we will try to anticipate the comming aiming direction
self.bot_1st_order_aimfilter= self.bot_1st_order_aimfilter
- + (diffang * (1 / frametime) - self.bot_1st_order_aimfilter) * bound(0, cvar("bot_ai_aimskill_order_filter_1st"),1);
+ + (diffang * (1 / delta_t) - self.bot_1st_order_aimfilter) * bound(0, cvar("bot_ai_aimskill_order_filter_1st"),1);
self.bot_2nd_order_aimfilter= self.bot_2nd_order_aimfilter
+ (self.bot_1st_order_aimfilter - self.bot_2nd_order_aimfilter) * bound(0, cvar("bot_ai_aimskill_order_filter_2nd"),1);
self.bot_3th_order_aimfilter= self.bot_3th_order_aimfilter
@@ -1808,7 +1781,6 @@
self.bot_5th_order_aimfilter= self.bot_5th_order_aimfilter
+ (self.bot_4th_order_aimfilter - self.bot_5th_order_aimfilter) * bound(0, cvar("bot_ai_aimskill_order_filter_5th"),1);
- local float blend;
//blend = (bound(0,skill,10)*0.1)*pow(1-bound(0,skill,10)*0.05,2.5)*5.656854249; //Plot formule before changing !
blend = bound(0,skill,10)*0.1;
desiredang = desiredang + blend *
@@ -1861,7 +1833,7 @@
blendrate = cvar("bot_ai_aimskill_blendrate");
r = max(fixedrate, blendrate);
//self.v_angle = self.v_angle + diffang * bound(frametime, r * frametime * (2+skill*skill*0.05-random()*0.05*(10-skill)), 1);
- self.v_angle = self.v_angle + diffang * bound(frametime, r * frametime * (2+pow(skill+self.bot_mouseskill,3)*0.005-random()), 1);
+ self.v_angle = self.v_angle + diffang * bound(delta_t, r * delta_t * (2+pow(skill+self.bot_mouseskill,3)*0.005-random()), 1);
self.v_angle = self.v_angle * bound(0,cvar("bot_ai_aimskill_mouse"),1) + desiredang * bound(0,(1-cvar("bot_ai_aimskill_mouse")),1);
//self.v_angle = self.v_angle + diffang * bound(0, r * frametime * (skill * 0.5 + 2), 1);
//self.v_angle = self.v_angle + diffang * (1/ blendrate);
More information about the nexuiz-commits
mailing list