mirror of
https://github.com/ineedbots/iw2_bot_warfare.git
synced 2025-04-22 15:25:42 +00:00
They play
This commit is contained in:
parent
83cb7b629d
commit
c9b953e32e
@ -281,14 +281,16 @@ watchAmmoUsage(weap)
|
|||||||
self endon("disconnect");
|
self endon("disconnect");
|
||||||
self endon("weapon_change");
|
self endon("weapon_change");
|
||||||
|
|
||||||
|
slot = self getWeaponSlot(weap);
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
aCount = self GetWeaponSlotClipAmmo(self getCurrentWeaponSlot());
|
aCount = self GetWeaponSlotClipAmmo(slot);
|
||||||
|
|
||||||
while (aCount == self GetWeaponSlotClipAmmo(self getCurrentWeaponSlot()))
|
while (aCount == self GetWeaponSlotClipAmmo(slot))
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if (self GetWeaponSlotClipAmmo(self getCurrentWeaponSlot()) < aCount)
|
if (self GetWeaponSlotClipAmmo(slot) < aCount)
|
||||||
self notify("weapon_fired");
|
self notify("weapon_fired");
|
||||||
else
|
else
|
||||||
self notify("reload");
|
self notify("reload");
|
||||||
@ -412,6 +414,30 @@ connected()
|
|||||||
self thread onDisconnect();
|
self thread onDisconnect();
|
||||||
|
|
||||||
level notify("bot_connected", self);
|
level notify("bot_connected", self);
|
||||||
|
|
||||||
|
self thread spawnBot();
|
||||||
|
}
|
||||||
|
|
||||||
|
spawnBot()
|
||||||
|
{
|
||||||
|
wait 5;
|
||||||
|
|
||||||
|
self notify("menuresponse", game["menu_team"], "autoassign");
|
||||||
|
|
||||||
|
wait 0.5;
|
||||||
|
|
||||||
|
weap = "mp40_mp";
|
||||||
|
if (self.team == "allies")
|
||||||
|
{
|
||||||
|
if (game["allies"] == "american")
|
||||||
|
weap = "thompson_mp";
|
||||||
|
else if (game["allies"] == "british")
|
||||||
|
weap = "greasegun_mp";
|
||||||
|
else
|
||||||
|
weap = "ppsh_mp";
|
||||||
|
}
|
||||||
|
|
||||||
|
self notify("menuresponse", game["menu_weapon_" + self.team], weap);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -208,7 +208,7 @@ doBotMovement_loop(data)
|
|||||||
0);
|
0);
|
||||||
|
|
||||||
// make the length 127
|
// make the length 127
|
||||||
dir = VectorNormalize(dir) * 127;
|
dir = vector_scale(VectorNormalize(dir), 127);
|
||||||
|
|
||||||
// invert the second component as the engine requires this
|
// invert the second component as the engine requires this
|
||||||
dir = (dir[0], 0-dir[1], 0);
|
dir = (dir[0], 0-dir[1], 0);
|
||||||
@ -227,18 +227,18 @@ doBotMovement_loop(data)
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
startPos = self.origin + (0, 0, 50);
|
startPos = self.origin + (0, 0, 50);
|
||||||
startPosForward = startPos + anglesToForward((0, angles[1], 0)) * 25;
|
startPosForward = startPos + vector_scale(anglesToForward((0, angles[1], 0)), 25);
|
||||||
bt = bulletTrace(startPos, startPosForward, false, self);
|
bt = bulletTrace(startPos, startPosForward, false, self);
|
||||||
if (bt["fraction"] >= 1)
|
if (bt["fraction"] >= 1)
|
||||||
{
|
{
|
||||||
// check if need to jump
|
// check if need to jump
|
||||||
bt = bulletTrace(startPosForward, startPosForward - (0, 0, 40), false, self);
|
bt = bulletTrace(startPosForward, startPosForward - (0, 0, 40), false, self);
|
||||||
|
|
||||||
//if (bt["fraction"] < 1 && bt["normal"][2] > 0.9 && data.i > 1.5 && !self isOnLadder())
|
/*if (bt["fraction"] < 1 && bt["normal"][2] > 0.9 && data.i > 1.5 && !self isOnLadder())
|
||||||
//{
|
{
|
||||||
// data.i = 0;
|
data.i = 0;
|
||||||
// self thread jump();
|
self thread jump();
|
||||||
//}
|
}*/
|
||||||
}
|
}
|
||||||
// check if need to knife glass
|
// check if need to knife glass
|
||||||
else if (bt["surfacetype"] == "glass")
|
else if (bt["surfacetype"] == "glass")
|
||||||
@ -258,6 +258,7 @@ doBotMovement_loop(data)
|
|||||||
|
|
||||||
// move!
|
// move!
|
||||||
self botMovement(int(dir[0]), int(dir[1]));
|
self botMovement(int(dir[0]), int(dir[1]));
|
||||||
|
self setOrigin(move_To);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -332,6 +333,9 @@ IsWeapSniper(weap)
|
|||||||
if (weap == "none")
|
if (weap == "none")
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (weaponClass(weap) != "sniper")
|
||||||
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -404,8 +408,8 @@ reload_watch_loop()
|
|||||||
if (weap == "none")
|
if (weap == "none")
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// if (self GetWeaponAmmoClip(weap) >= WeaponClipSize(weap))
|
if (self GetWeaponSlotClipAmmo(self getWeaponSlot(weap)) >= WeaponClipSize(weap))
|
||||||
// break;
|
break;
|
||||||
}
|
}
|
||||||
self.bot.isreloading = false;
|
self.bot.isreloading = false;
|
||||||
}
|
}
|
||||||
@ -513,14 +517,14 @@ reload_thread()
|
|||||||
if (cur == "" || cur == "none")
|
if (cur == "" || cur == "none")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//if(IsWeaponClipOnly(cur) || !self GetWeaponAmmoStock(cur))
|
if(IsWeaponClipOnly(cur) || !self getweaponslotammo(self getWeaponSlot(cur)))
|
||||||
// return;
|
return;
|
||||||
|
|
||||||
//maxsize = WeaponClipSize(cur);
|
maxsize = WeaponClipSize(cur);
|
||||||
//cursize = self GetWeaponammoclip(cur);
|
cursize = self GetWeaponSlotClipAmmo(self getWeaponSlot(cur));
|
||||||
|
|
||||||
//if(cursize/maxsize < 0.5)
|
if(cursize/maxsize < 0.5)
|
||||||
// self thread reload();
|
self thread reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -594,7 +598,7 @@ updateAimOffset(obj)
|
|||||||
else
|
else
|
||||||
offsetScalar = 1 - objCreatedFor / aimDiffTime;
|
offsetScalar = 1 - objCreatedFor / aimDiffTime;
|
||||||
|
|
||||||
obj.aim_offset = obj.aim_offset_base * offsetScalar;
|
obj.aim_offset = vector_scale(obj.aim_offset_base, offsetScalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1026,8 +1030,6 @@ aim_loop()
|
|||||||
|
|
||||||
if(self.bot.isfraggingafter || self.bot.issmokingafter)
|
if(self.bot.isfraggingafter || self.bot.issmokingafter)
|
||||||
nadeAimOffset = dist/3000;
|
nadeAimOffset = dist/3000;
|
||||||
else if(curweap != "none" && weaponClass(curweap) == "grenade")
|
|
||||||
nadeAimOffset = dist/16000;
|
|
||||||
|
|
||||||
if(no_trace_time && (!isDefined(self.bot.after_target) || self.bot.after_target != target))
|
if(no_trace_time && (!isDefined(self.bot.after_target) || self.bot.after_target != target))
|
||||||
{
|
{
|
||||||
@ -1042,8 +1044,6 @@ aim_loop()
|
|||||||
if(isDefined(nade) && rand <= self.pers["bots"]["behavior"]["nade"] && bulletTracePassed(eyePos, eyePos + (0, 0, 75), false, self) && bulletTracePassed(last_pos, last_pos + (0, 0, 100), false, target) && dist > level.bots_minGrenadeDistance && dist < level.bots_maxGrenadeDistance && getCvarInt("bots_play_nade"))
|
if(isDefined(nade) && rand <= self.pers["bots"]["behavior"]["nade"] && bulletTracePassed(eyePos, eyePos + (0, 0, 75), false, self) && bulletTracePassed(last_pos, last_pos + (0, 0, 100), false, target) && dist > level.bots_minGrenadeDistance && dist < level.bots_maxGrenadeDistance && getCvarInt("bots_play_nade"))
|
||||||
{
|
{
|
||||||
time = 0.5;
|
time = 0.5;
|
||||||
if (nade == "frag_grenade_mp")
|
|
||||||
time = 2;
|
|
||||||
|
|
||||||
if(!isSecondaryGrenade(nade))
|
if(!isSecondaryGrenade(nade))
|
||||||
self thread frag(time);
|
self thread frag(time);
|
||||||
@ -1148,8 +1148,6 @@ aim_loop()
|
|||||||
|
|
||||||
if(self.bot.isfraggingafter || self.bot.issmokingafter)
|
if(self.bot.isfraggingafter || self.bot.issmokingafter)
|
||||||
nadeAimOffset = dist/3000;
|
nadeAimOffset = dist/3000;
|
||||||
else if(curweap != "none" && weaponClass(curweap) == "grenade")
|
|
||||||
nadeAimOffset = dist/16000;
|
|
||||||
|
|
||||||
aimpos = last_pos + (0, 0, self getEyeHeight() + nadeAimOffset);
|
aimpos = last_pos + (0, 0, self getEyeHeight() + nadeAimOffset);
|
||||||
conedot = getConeDot(aimpos, eyePos, angles);
|
conedot = getConeDot(aimpos, eyePos, angles);
|
||||||
@ -1195,7 +1193,7 @@ aim_loop()
|
|||||||
{
|
{
|
||||||
lookat = undefined;
|
lookat = undefined;
|
||||||
|
|
||||||
if(self.bot.second_next_wp != -1 && !self.bot.issprinting && !self.bot.climbing)
|
if(self.bot.second_next_wp != -1 && !self.bot.climbing)
|
||||||
lookat = level.waypoints[self.bot.second_next_wp].origin;
|
lookat = level.waypoints[self.bot.second_next_wp].origin;
|
||||||
else if(isDefined(self.bot.towards_goal))
|
else if(isDefined(self.bot.towards_goal))
|
||||||
lookat = self.bot.towards_goal;
|
lookat = self.bot.towards_goal;
|
||||||
@ -1267,7 +1265,7 @@ canFire(curweap)
|
|||||||
if(curweap == "none")
|
if(curweap == "none")
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return /*self GetWeaponammoclip(curweap)*/;
|
return self GetWeaponSlotClipAmmo(self getWeaponSlot(curweap));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1287,7 +1285,7 @@ canAds(dist, curweap)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
weapclass = (weaponClass(curweap));
|
weapclass = (weaponClass(curweap));
|
||||||
if(weapclass == "spread" || weapclass == "grenade")
|
if(weapclass == "spread")
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1306,9 +1304,6 @@ isInRange(dist, curweap)
|
|||||||
if(weapclass == "spread" && dist > level.bots_maxShotgunDistance)
|
if(weapclass == "spread" && dist > level.bots_maxShotgunDistance)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (curweap == "m2_flamethrower_mp" && dist > level.bots_maxShotgunDistance)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1360,7 +1355,7 @@ walk_loop()
|
|||||||
{
|
{
|
||||||
self thread killWalkCauseNoWaypoints();
|
self thread killWalkCauseNoWaypoints();
|
||||||
stepDist = 64;
|
stepDist = 64;
|
||||||
forward = AnglesToForward(self GetPlayerAngles())*stepDist;
|
forward = vector_scale(AnglesToForward(self GetPlayerAngles()), stepDist);
|
||||||
forward = (forward[0], forward[1], 0);
|
forward = (forward[0], forward[1], 0);
|
||||||
myOrg = self.origin + (0, 0, 32);
|
myOrg = self.origin + (0, 0, 32);
|
||||||
|
|
||||||
@ -1376,7 +1371,7 @@ walk_loop()
|
|||||||
{
|
{
|
||||||
// didnt hit anything, just choose a random direction then
|
// didnt hit anything, just choose a random direction then
|
||||||
dir = (0,randomIntRange(-180, 180),0);
|
dir = (0,randomIntRange(-180, 180),0);
|
||||||
goal = PhysicsTrace(myOrg, myOrg + AnglesToForward(dir) * stepDist, false, self);
|
goal = PhysicsTrace(myOrg, myOrg + vector_scale(AnglesToForward(dir), stepDist), false, self);
|
||||||
goal = PhysicsTrace(goal + (0, 0, 50), goal + (0, 0, -40), false, self);
|
goal = PhysicsTrace(goal + (0, 0, 50), goal + (0, 0, -40), false, self);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1386,9 +1381,9 @@ walk_loop()
|
|||||||
d = VectorNormalize(trace["position"] - myOrg);
|
d = VectorNormalize(trace["position"] - myOrg);
|
||||||
n = trace["normal"];
|
n = trace["normal"];
|
||||||
|
|
||||||
r = d - 2 * (VectorDot(d, n)) * n;
|
r = d - 2 * vector_scale(VectorDot(d, n), n);
|
||||||
|
|
||||||
goal = PhysicsTrace(myOrg, myOrg + (r[0], r[1], 0) * stepDist, false, self);
|
goal = PhysicsTrace(myOrg, myOrg + vector_scale((r[0], r[1], 0), stepDist), false, self);
|
||||||
goal = PhysicsTrace(goal + (0, 0, 50), goal + (0, 0, -40), false, self);
|
goal = PhysicsTrace(goal + (0, 0, 50), goal + (0, 0, -40), false, self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1453,8 +1448,8 @@ strafe(target)
|
|||||||
anglesRight = (0, angles[1]-90, 0);
|
anglesRight = (0, angles[1]-90, 0);
|
||||||
|
|
||||||
myOrg = self.origin + (0, 0, 16);
|
myOrg = self.origin + (0, 0, 16);
|
||||||
left = myOrg + anglestoforward(anglesLeft)*500;
|
left = myOrg + vector_scale(anglestoforward(anglesLeft), 500);
|
||||||
right = myOrg + anglestoforward(anglesRight)*500;
|
right = myOrg + vector_scale(anglestoforward(anglesRight), 500);
|
||||||
|
|
||||||
traceLeft = BulletTrace(myOrg, left, false, self);
|
traceLeft = BulletTrace(myOrg, left, false, self);
|
||||||
traceRight = BulletTrace(myOrg, right, false, self);
|
traceRight = BulletTrace(myOrg, right, false, self);
|
||||||
@ -1776,6 +1771,7 @@ reload()
|
|||||||
self notify("bot_reload");
|
self notify("bot_reload");
|
||||||
self endon("bot_reload");
|
self endon("bot_reload");
|
||||||
|
|
||||||
|
self notify("reload_start");
|
||||||
self botAction("+reload");
|
self botAction("+reload");
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
self botAction("-reload");
|
self botAction("-reload");
|
||||||
@ -2015,9 +2011,9 @@ bot_lookat(pos, time, vel)
|
|||||||
steps = 1;
|
steps = 1;
|
||||||
|
|
||||||
myEye = self GetEyePos(); // get our eye pos
|
myEye = self GetEyePos(); // get our eye pos
|
||||||
myEye += (self getVelocity() * 0.05) * (steps - 1); // account for our velocity
|
myEye += vector_scale(vector_scale(self getVelocity(), 0.05), steps - 1); // account for our velocity
|
||||||
|
|
||||||
pos += (vel * 0.05) * (steps - 1); // add the velocity vector
|
pos += vector_scale(vector_scale(vel, 0.05), steps - 1); // add the velocity vector
|
||||||
|
|
||||||
myAngle=self getPlayerAngles();
|
myAngle=self getPlayerAngles();
|
||||||
angles = VectorToAngles( (pos - myEye) - anglesToForward(myAngle) );
|
angles = VectorToAngles( (pos - myEye) - anglesToForward(myAngle) );
|
||||||
|
@ -377,27 +377,34 @@ isSecondaryGrenade(nade)
|
|||||||
*/
|
*/
|
||||||
weaponClass(weap)
|
weaponClass(weap)
|
||||||
{
|
{
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
CoD2
|
CoD2
|
||||||
*/
|
*/
|
||||||
getCurrentWeaponSlot()
|
WeaponClipSize(weap)
|
||||||
{
|
{
|
||||||
current = self getCurrentWeapon();
|
return 1;
|
||||||
weapon1 = self getweaponslotweapon("primary");
|
}
|
||||||
weapon2 = self getweaponslotweapon("primaryb");
|
|
||||||
currentslot = undefined;
|
|
||||||
|
|
||||||
if(current == weapon1)
|
/*
|
||||||
currentslot = "primary";
|
CoD2
|
||||||
|
*/
|
||||||
|
getWeaponSlot(weap)
|
||||||
|
{
|
||||||
|
if (self getweaponslotweapon("primary") == weap)
|
||||||
|
return "primary";
|
||||||
else
|
else
|
||||||
{
|
return "primaryb";
|
||||||
currentslot = "primaryb";
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return currentslot;
|
/*
|
||||||
|
IsWeaponClipOnly cod2
|
||||||
|
*/
|
||||||
|
IsWeaponClipOnly(weap)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -737,7 +744,7 @@ RaySphereIntersect(start, end, spherePos, radius)
|
|||||||
//mu2 = (0-b - sqrt(bb4ac)) / (2 * a);
|
//mu2 = (0-b - sqrt(bb4ac)) / (2 * a);
|
||||||
|
|
||||||
// intersection points of the sphere
|
// intersection points of the sphere
|
||||||
ip1 = start + mu1 * dp;
|
ip1 = start + vector_scale(dp, mu1);
|
||||||
//ip2 = start + mu2 * dp;
|
//ip2 = start + mu2 * dp;
|
||||||
|
|
||||||
myDist = DistanceSquared(start, end);
|
myDist = DistanceSquared(start, end);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user