Page 1 of 1

Getting Frikbot to shoot an entity

Posted: Thu Jul 05, 2007 10:06 pm
by CocoT
Hi! :)
I'm playing around with a little something here and was wondering if there was an easy way to make a Frikbot shoot an entity that is not a player or a monster. Basically, I'm making the player create an entity and would like bots to shoot at it (while shooting at each other and/or the player). I've tried a couple of things but can't seem to make it work. Any suggestions? :)

Posted: Thu Jul 05, 2007 11:45 pm
by Orion
Yes! :)

You can do it pretty easily, search fot bot_dodge_stuff() at bot_fight.qc and add this in the (else) after (if (coop)) statement:

Code: Select all

local entity head;
head = findradius(self.origin, 9999);
while(head)
{
	if(head.classname == "something")
	{
		if(head.health > 0)
		{
			tsz = bot_size_player(head) + vlen(head.origin - self.origin) * 0.5;
			if (tsz < foesz)
			{
				if (fov(head) || head.b_sound > time || self.b_skill == 3)
				{
					if (fisible(head))
					{
						self.enemy = head;
						foesz = tsz;
					}
				}
			}
		}
	}
	head = head.chain;
}

Posted: Fri Jul 06, 2007 12:11 am
by Electro
If you really want to shove things down its throat you could always just do:

self.enemy = targetentity;

at the end of BotAI

BotAI is called pretty often, so if it's an entity you already know.. should be fine, but you don't want to be doing a find here methinks.

Really depends on what you're using it for! :)

Posted: Fri Jul 06, 2007 9:38 am
by CocoT
Great! Thanks a lot, guys, it works fine now :D

Posted: Fri Jul 06, 2007 2:25 pm
by FrikaC
Wait. FrikBot....shooting entities....I don't see how that fits with either InfraRed or SpaceWalk.....

Posted: Fri Jul 06, 2007 3:09 pm
by Entar
Who said he's working on one of those two? CocoT seems to have a certain aptitude for working on multiple mods at a time... dum dum DUM!

Posted: Fri Jul 06, 2007 8:00 pm
by CocoT
:shock:

...

/me tiptoes out of the thread...

... but trips on his own screenshot

Image

... ouch!

Re: Getting Frikbot to shoot an entity

Posted: Tue Aug 05, 2014 1:51 am
by redrum
I tried implementing the above code, but get this error message:

INDIRECT 13454(FOE)ENTITY 0 13077(_NEXT)._NEXT 13454(FOE)
BOT_FIGHT.QC : BOT_DODGE_STUFF
BOT_AI.QC : BOTAI
BOT_PHYS.QC : POSTPHYSICS
(NO FUNCTION)
RUNAWAY LOOP ERROR

The code compiles with no warnings.

Re: Getting Frikbot to shoot an entity

Posted: Tue Aug 05, 2014 3:38 am
by r00k
BotAI is called pretty often, so if it's an entity you already know.. should be fine, but you don't want to be doing a find here methinks.
Try Electro's method instead?

or wrap a counter there instead, like if c > 256 break;

Re: Getting Frikbot to shoot an entity

Posted: Tue Aug 05, 2014 1:37 pm
by redrum
Yea...that was getting errors as well. I tried that first. I have no idea what you said after that
or wrap a counter there instead, like if c > 256 break;

Re: Getting Frikbot to shoot an entity

Posted: Wed Aug 06, 2014 1:47 pm
by redrum
any other help?

Re: Getting Frikbot to shoot an entity

Posted: Wed Aug 06, 2014 4:18 pm
by Spike
make sure you are not recursively calling findradius. it can potentially mess up the .next chain resulting in infinite loops (at least in dp where the order isn't guarenteed, but its a potential problem in any engine).

Re: Getting Frikbot to shoot an entity

Posted: Wed Aug 06, 2014 9:06 pm
by redrum
Thx Spike. I'll look into it.

Re: Getting Frikbot to shoot an entity

Posted: Fri Aug 08, 2014 8:27 pm
by redrum
When using Electros method of adding self.enemy = targetentity; at the end of BotAI().

I get an error while compiling: "Unknown value targetentity" and "type mismatch for = (pointer and _variant)

Re: Getting Frikbot to shoot an entity

Posted: Mon Aug 11, 2014 9:50 pm
by r00k
i think he means target1, target2, target3, self.enemy etc. for targetentity.

ok look up the function

priority_for_thing

add the classname and a priority to that function, might help.