I have RQ with bots by Chuck from a long time back. To mimick CA, I rj around with the Self-Preservation rune and make believe, that is it.
Announcement
Collapse
No announcement yet.
random style like
Collapse
X
-
Yes, I would like an offline CA mod with bots as well. Go for it!
I have RQ with bots by Chuck from a long time back. To mimick CA, I rj around with the Self-Preservation rune and make believe, that is it.
-
i tried making "player start 1" and "player start 2"
but in the deathmatch, it seems you only start where you put the "info_deathmatch" entity, and making 2 "info_deathmatch" entities in different places doesnt seem to do anything, only the first entity works. am i supposed to change the second deathmatch entity in some way?
Leave a comment:
-
i got a question!
i dont wanna start a new thread though cuz it should be an easy question.
i have this prob in my deathmatch games, i cant figure out how to make multiple spawnpoints, so everytime 2 of my bots die at once they keep respawning on eachother and telefragging until the game gives me an error and shuts down.
Leave a comment:
-
I have considered adding Frikbots to CAx, but just havent gotten around to it. I know Mindzx asked for this some time ago...
You could easily add to client.qc
then in the function void() SetNewParms =void () SetPracticeParms =
{
parm1 = (((((((((IT_SHOTGUN | IT_AXE) | IT_ROCKET_LAUNCHER) | IT_ARMOR3) | IT_SUPER_SHOTGUN) | IT_NAILGUN) | IT_GRENADE_LAUNCHER) | IT_LIGHTNING) | IT_SUPER_NAILGUN) | IT_ARMOR3);
parm2 = 100;
parm3 = 200;
parm4 = 100;
parm5 = 100;
parm6 = 50;
parm7 = 100;
parm8 = IT_ROCKET_LAUNCHER;
parm9 = 80.001;
};
at the bottom add
also add it to respawn() function alsoSetPracticeParms ();
now compile it (i suggest frikqcc 2.5+)void() respawn =
{
SetPracticeParms ();
self.velocity = '0 0 0';
PutClientInServer();
};
and your frikbotmod will spawn everyone with full inventory!
If you feel bold enough to tinker maybe prioritize the bot's weapon hin hand choice based on distance from bot to player. < 120 then dont use RL etc...
Leave a comment:
-
Sounds boring yes..
But since nobody has a CAX pmode style single player mod available to download and play when nobody is at a server, I had to make one, considering you can get QCide and a handful of other Quake C stuff anywhere. My programming sucks but it gets the job done.
The idea was setting the skill made the bots have a keener sense of weapon choice, since the frikbots were programmed around finding weapons. I had to hack up the weapon choice since the bots wouldn't normally change weapons mid-combat, which makes them too predictable. CAX you start with everything so the bots were always using the RL. Which isn't bad, but it's more interesting to see them play and make quick weapon changes mid-combat using anything at skill 0 versus RL and LG only at skill 3. Obviously left the code for increased accuracy for each skill as FrikaC did originally.
The only way to beat the bots at skill 3 is to move fast, and their rocket prediction is incredible. Doesn't matter how fast you rocket jump, they will air you unless your velocity is obscene. I don't think I realized how great a job the frikbot programming is until you pop it into a CAX style mod.
It's still in development I guess you could say, but I don't really work on it anymore. The next thing I did after that was deathmatch 2 calls setspawnparms after you frag, so it makes for a killer 1 on 1 pmode. You frag the other player and he respawns, and you get all your health / armor back right where you stand ready for another round (since you were the victor). The only thing I had to change there was any mid-air rocket or nail or nade had it's damage null and void if the owner was dead, because you'd get your health back and be hurt from some bot spam after he was killed. Pretty simplistic coding, if it took anything remotely more complex I wouldn't have been able to do it.
Deathmatch 2 can be fun with a bunch of bots, because after each frag you get your shit back, so it's kind of like king of the hill. You get a frag, you get spawnparms, so in the middle of a big shit show at the mound, you'll probably come out on top as long as you keep making kills. But I did it for 1 on 1.
But anyways, make more sense now? I just wanted a quake 3 style bot system for quake 1, and since I play CAX, I need bots for CAX style play. I can't find them anywhere, so if anyone has a better one available, let me know. I got tired of looking.Last edited by sle1pn1r; 05-01-2008, 10:19 AM.
Leave a comment:
-
EDIT: Opps i pulled an ALL-NIGHTER last night and read the title post incorrectly, anyways here's usefull code for someone...
(is there a reason we only have ~54 characters in a [ code ] window? ACK!)Code:// 2001-11-18 Random number function start /* General solution to always get a valid random number of a given range and stepsize. All possible values have the same chance of being calculated. (Ok, the last value has a slighlty higher chance :) It works for negative and positive parameters, only the stepsize should fit the range: end > start : positive stepsize start > end : negative stepsize Note that the typical "result = START + floor( random() * ( COUNT - 0.01 ) )" only works for positive integer ranges with stepsize +1. */ float(float start, float end, float stepsize) rnd_number = { local float rcnt; local float rnd; local float result; // calculate the number of possible different values rcnt = floor( fabs( ( end - start ) / stepsize ) ) + 1; // calculate the random part of the result value rnd = floor( random() * rcnt ); if ( rnd == rcnt ) { rnd = rnd - 1; } // calculate the result value result = start + ( rnd * stepsize ); return result; }; // 2001-11-18 Random number function end
Leave a comment:
-
One thing to note is that function calls carry a slight overhead, so if you're trying to do a lot in a short space of time, then it's better to use as few function calls as possible.
Leave a comment:
-
Zop, thanks for the tips man. Good idea. I finessed it a bit and pulled it off without making a new function call at all, it's inside an existing function.
Worked pretty slick. Thanks again!Code:botss = self.b_skill; rnumba = random(); if (botss != 0) { rnumba = rnumba + ((botss / 10) + 0.2); } if (rnumba > 1) { rnumba = 1; }
Leave a comment:
-
Thanks, Sniper. I once added time and nextthink!
In regards to the thread, I think it would be more efficient to ADD self.b_skill and random (), and maximize it. Keep in mind, b_skill would be a range from 0.1 to 1.
float () random_skill = {
local float f;
f = random () + self.b_skill;
if (f >= 1) return 1;
return (f);
};
Leave a comment:
-
Ya well you forgot to list Zop, jerkface!Originally posted by Phenom View PostThats why I listed you as one of quakeone.com's coders
jackass! 
Leave a comment:
-
Well let's not kid ourselves Phenom. Some of us here are smart enough to understand this threadOriginally posted by Phenom View PostYou are posting on the wrong forums.
We're just Quakers here.
I welcome it.
Leave a comment:
Leave a comment: