Wiki 1558 Posted December 7, 2017 Hi. Got a problem: the AI does not fire at practice target. I put a practice target named target1 I put an AI In init field of the AI: this dotarget target1; this dofire target1 the AI targets the practice target but does not fire at it If I put another unit instead of the practice target, the AI will fire at it So, how can I get the AI fire at the practice target? Thanks Share this post Link to post Share on other sites
f2k sel 164 Posted December 7, 2017 You will need to use Forceweaponfire https://community.bistudio.com/wiki/forceWeaponFire it's no ideal but it kind of works. I don't think it uses the AI calculations so sometimes it's a bit off. I really hate that you can't just mark any target a treat and have AI shoot at it using true calculations, it's very strange for a shooting based game that makes it difficult to shoot things. 1 Share this post Link to post Share on other sites
Wiki 1558 Posted December 7, 2017 Just tried, doesn't work. I used forceweaponfire command and fire command and nothing. It's weird cause it used to work before, even just dotarget and dofire but id no longer does now. Share this post Link to post Share on other sites
f2k sel 164 Posted December 8, 2017 8 hours ago, Wiki said: Just tried, doesn't work. I used forceweaponfire command and fire command and nothing. It's weird cause it used to work before, even just dotarget and dofire but id no longer does now. It's working for me man dotarget target; 0=[] spawn {sleep 1.5; 0 = man forceWeaponFire [currentWeapon man,"single"]} Share this post Link to post Share on other sites
Wiki 1558 Posted December 8, 2017 5 hours ago, f2k sel said: It's working for me man dotarget target; 0=[] spawn {sleep 1.5; 0 = man forceWeaponFire [currentWeapon man,"single"]} Well, it works, but one time only. The unit fires a single shot and that's all. What I'm looking for is for the unit to fire at the target and reengage it. Share this post Link to post Share on other sites
f2k sel 164 Posted December 8, 2017 Well you would need to place it in a loop but then you may want it choose different targets ect The best thing would be to look for a Shooting range script many have been made. Share this post Link to post Share on other sites
lexx 1392 Posted December 8, 2017 Use BIS_fnc_fire - that should work in any case. /edit: And yeah, you will have to put it into a simple loop. Share this post Link to post Share on other sites
pierremgi 4906 Posted December 8, 2017 Now, just just have to hit the target In init field of a shooter: 0 = this spawn { while {alive _this} do { _this doTarget cible; waitUntil {cible animationPhase "Terc" == 0}; _time = diag_tickTime; sleep 2; if (_this ammo (currentWeapon _this) == 0) then {_this addMagazine currentMagazine _this}; if ((_this weaponDirection (currentWeapon _this) vectorCos ((position cible) vectorDiff (eyepos _this))) > 0.999 min (0.975 + (0.00024 *(_this distance cible)))) then { _this forceWeaponFire [currentWeapon _this,currentWeaponMode _this]; waitUntil {cible animationPhase "Terc" == 1 or diag_tickTime > _time + 10}; } else { _this lookAt cible }; sleep 3; } }; Then place a target (moveable like: Target_PopUp_Moving_90deg_Acc2_F) and name it: cible. 1 Share this post Link to post Share on other sites
Wiki 1558 Posted December 8, 2017 Thx, I'll try this ASAP. Share this post Link to post Share on other sites
johnnyboy 3797 Posted December 8, 2017 3 hours ago, pierremgi said: if ((_this weaponDirection (currentWeapon _this) vectorCos ((position cible) vectorDiff (eyepos _this))) > 0.999 min (0.975 + (0.00024 *(_this distance cible)))) then { Hey Pierre, that is slick. I'm terrible at understanding math and vectors. I get the general idea that this if statement is checking if direction of weapon is pointing at the target object within some tolerance. But could you break down how this code works? I don't get how the combination of vectorCos and vectorDiff works, and I don't get how the values to the right of the ">" are used for the tolerance. If its too hard to explain, that's ok too... :) Share this post Link to post Share on other sites
pierremgi 4906 Posted December 8, 2017 I tested some values to stay in a cone before AI fires (The AI seems to watch the target but the weapon's direction is always drifting). The problem is to fire on something without any interest for AI brain. Perhaps, there is an alternate way with doSuppressiveFire, as you can set a position. I didn't waste my time with that. Anyway, the loop is re-adjusting the weapon's direction with lookAt and doTarget. The fire occurs if the cosine angle between the weapon's direction (weaponDirection) and the target's direction ( difference between 2 vectors: target's position & Ai's position) is close to 1 (very sharp cone). But this value is "sensitive". Then, I try to stay above the value 0.975 + 0.00024 * distance target/AI (not exceeding 0.999) 0.975 is cosine (2,5°) , 0.975 is cosine ~ 13° (distance 0 m). At 100 m , the value are same. You can work around with that or another method, but it remains hard for AI to shoot with accuracy on a simple target. Thanks for commenting what you experienced in your trials. 1 Share this post Link to post Share on other sites
Wiki 1558 Posted December 9, 2017 Still couldn't try as I'm not home, but it's weird because the commands "dotarget+dofire" used to work before. Share this post Link to post Share on other sites
Wiki 1558 Posted December 10, 2017 Hi guys, I'm back. So, I tried the code, but it doesn't work :-( Ticket here https://feedback.bistudio.com/T127344 Share this post Link to post Share on other sites
Joe98 92 Posted December 12, 2017 I have been trying to do this for about 6 years. My ultimate goal was to have mortars fire so that the rounds would land randomly. I started with an AI rifleman firing at a practice target. I tried many things. The usual result is that he would fire at the target till it was "killed". He would never again at a pop up target nor could I make him fire at a second target. Share this post Link to post Share on other sites
johnnyboy 3797 Posted December 12, 2017 Placing an invisible target in front of a popup target works. Prove it by placing a player, an AI unit named "dude", and a target in front of the dude named "popup1". Then via the debug console execute the following code. The AI will then fire on the invisible target relentlessly. This approach can be expanded to delete the invisible target when popup is knocked down, and re-add a new one when popup pops back up. Or you could place multiple targets in a range, and script moving the invisible target from one visible target to another. Then you would see the AI fire on each target in sequence. _invisibleTarget = "O_TargetSoldier" createVehicle [0,0,0]; createVehicleCrew _invisibleTarget; dude setUnitPos "DOWN"; _invisibleTarget setpos (popup1 modelToWorld [0,0,2]); dude reveal _invisibleTarget; dude doTarget _invisibleTarget; Share this post Link to post Share on other sites
pierremgi 4906 Posted December 12, 2017 On 10/12/2017 at 10:24 AM, Wiki said: Hi guys, I'm back. So, I tried the code, but it doesn't work :-( Ticket here https://feedback.bistudio.com/T127344 Why didn't you try my code? It's working. Place an animated target (it needs terc animation) , named cible, at 100 m of a shooter, stand up, crouch, prone... Simple as that! Share this post Link to post Share on other sites