Jump to content
Sign in to follow this  
owmyeye

Suicide bomber AI, is it possible?

Recommended Posts

Hey guys, I know there are a bunch of suicide bomber scripts out there (that blow a unit up on proximity, etc)- but is it possible to make a script/mod which gives the suicide bomber unique AI in order to implement the attack?

What I'm looking for is a designated unit to go into 'careless mode' and just sprint straight for the nearest enemy (and then the same proxy detonation). Also, I'm not sure if it would be a different set of circumstances or not, but it would be good to have a SVIED try to drive up and ram/blow up on it's enemies too.

Is it possible to script in AI alterations like that? If so, anyone want to be a hero and post a script or link here?

Share this post


Link to post
Share on other sites

ALiVE already has Suicide Bombers implemented. When players patrol towns and villages where civilian hostility is high, certain civs may don a suicide vest and go after an individual in the group. You can configure this using the Military IED Threat module or setup an OPCOM that uses the Asymmetric warfare approach.

ALiVE also has a function you can call to create your own suicide bombers too [[_location, _radius, _faction], [_victim]] call ALiVE_fnc_createBomber or [_suicideBomberUnit,[_victim]] call ALiVE_fnc_createBomber

Share this post


Link to post
Share on other sites

Its very possible and would not be hard to do at all. I would use FSM instead of .SQF for this. Anyway here is a really old script I made.

[color="#FF8040"][color="#191970"][b]private[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"_Unit"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Rnd_Bomb_Array"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Rnd_Bomb"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Number"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Number2"[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b];[/b][/color]

[color="#1874CD"]_Rnd_Bomb_Array[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"Bo_GBU12_LGB_MI10"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"M_Titan_AP"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"M_Titan_AP"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"HelicopterExploBig"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"M_PG_AT"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"M_Titan_AT"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"R_80mm_HE"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"R_80mm_HE"[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color] 
[color="#1874CD"]_Rnd_Bomb[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Rnd_Bomb_Array[/color] [color="#191970"][b]select[/b][/color] [color="#191970"][b]floor[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]random[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]count[/b][/color] [color="#1874CD"]_Rnd_Bomb_Array[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Number[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#191970"][b]floor[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]random[/b][/color] [color="#FF0000"]10[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]+[/b][/color] [color="#FF0000"]10[/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Number2[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Number[/color] [color="#8B3E2F"][b]+[/b][/color] [color="#FF0000"]10[/color][color="#8B3E2F"][b];[/b][/color]

[color="#191970"][b]waitUntil[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#000000"]player[/color] [color="#191970"][b]distance[/b][/color] [color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]<[/b][/color] [color="#FF0000"]50[/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

[color="#191970"][b]while[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]count[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]waypoints[/b][/color] [color="#1874CD"]_Unit[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]>[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]do[/b][/color] 
[color="#8B3E2F"][b]{[/b][/color]
[color="#191970"][b]deleteWaypoint[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]waypoints[/b][/color] [color="#1874CD"]_Unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

[color="#8B3E2F"][b][[/b][/color][color="#1874CD"]_Unit[/color][color="#8B3E2F"][b],[/b][/color][color="#000000"]player[/color][color="#8B3E2F"][b]][/b][/color] [color="#191970"][b]execVM[/b][/color] [color="#7A7A7A"]"DWS\civilians\AI_Objectives\Move.SQF"[/color][color="#8B3E2F"][b];[/b][/color]	
[color="#1874CD"]_Unit[/color] [color="#191970"][b]doWatch[/b][/color] [color="#000000"]player[/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#191970"][b]setSpeedMode[/b][/color] [color="#7A7A7A"]"LIMITED"[/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#191970"][b]allowFleeing[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#191970"][b]setBehaviour[/b][/color] [color="#7A7A7A"]"CARELESS"[/color][color="#8B3E2F"][b];[/b][/color]

[color="#191970"][b]waitUntil[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]vehicle[/b][/color] [color="#000000"]player[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]distance[/b][/color] [color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]<[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Number2[/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#191970"][b]setSpeedMode[/b][/color] [color="#7A7A7A"]"FULL"[/color][color="#8B3E2F"][b];[/b][/color]
[color="#8B3E2F"][b][[/b][/color][color="#1874CD"]_Unit[/color][color="#8B3E2F"][b]][/b][/color] [color="#191970"][b]joinSilent[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]createGroup[/b][/color] [color="#000000"]east[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]  
[color="#1874CD"]_unit[/color] [color="#191970"][b]setVariable[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"Civi_Good"[/color][color="#8B3E2F"][b],[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b],[/b][/color] [color="#000000"]true[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]

[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]![/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]exitWith[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#191970"][b]waitUntil[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]vehicle[/b][/color] [color="#000000"]player[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]distance[/b][/color] [color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]<[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Number[/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color]
[color="#8B3E2F"][b]{[/b][/color]	
Talking_Logic [color="#191970"][b]globalChat[/b][/color] [color="#7A7A7A"]"Al Akhbar!!!!"[/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Rnd_Bomb[/color] [color="#191970"][b]createVehicle[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]getPos[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]true[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]exitWith[/b][/color] [color="#8B3E2F"][b]{[/b][/color] [color="#191970"][b]deleteVehicle[/b][/color] [color="#1874CD"]_Unit[/color][color="#8B3E2F"][b];[/b][/color] [color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]


[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]true[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]exitWith[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color][/color]

Made with KK's SQF to BBCode Converter

Move.sqf

[color="#FF8040"][color="#191970"][b]private[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"_Unit"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Target"[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b];[/b][/color]
[color="#000000"]_target[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]1[/color][color="#8B3E2F"][b];[/b][/color]

[color="#191970"][b]while[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]do[/b][/color] 
[color="#8B3E2F"][b]{[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#191970"][b]doMove[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]position[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]![/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]exitWith[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#191970"][b]sleep[/b][/color] [color="#FF0000"]0.5[/color][color="#8B3E2F"][b];[/b][/color]
[color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color][/color]

Made with KK's SQF to BBCode Converter

there are some extra things in here that you don't need and this just attacks the player but its an example on how it can be done. Like I said I would rewrite this to your liking and convert this to an FSM file.

Edited by An_ArmaFan

Share this post


Link to post
Share on other sites
Its very possible and would not be hard to do at all. I would use FSM instead of .SQF for this. Anyway here is a really old script I made

....

Thanks heaps for that @An_ArmaFan

However, I hate to be a pain and ask for more help, but I'm not entirely sure how to use it. My knowledge of coding goes as far as ctrl-C and ctrl-V.

I'll start with the bit I am not as clueless about. The second quoted code is for a Move.sqf, so obviously I'll make a file called that containing the code, then just initiate that with a trigger or unit init command of "script=[] execVM "move.sqf";"? Or then again, maybe not activate it? As I can see a command like that in the FSM bit...

And as for the bit you said to do FSM, I'm sorry but I don't know what that means. Can someone please tell me where I put that code? Like in a file or a unit init or??

And lastly, how do I actually designate who the suicide bomber is?

Sorry for the massive ignorance on all of this, but I really really appreciate any further help anyone can give. Once again, thanks for your code An_ArmaFan

Share this post


Link to post
Share on other sites

Just re did it quick to fit your needs. Got a little messy when I converted it for this forum. But what it will do is it will search for enemies within 500 meters then if an enemy is found it will they start to walk to the enemy at which point when the unit becomes close he will start to run (You can change this so the unit just runs from the start) then when the unit is in range he will blow up. I also made it so if the target dies before the unit blew up the unit will find a new target. HAVE NOT TESTED IT. To use this go into the unit who you want to become a bomber and place this in his INIT null = [this] execVM "Filename.sqf";

[color="#FF8040"][color="#191970"][b]private[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"_Unit"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Rnd_Bomb_Array"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Rnd_Bomb"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Number"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Number2"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Known_Targets"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Pos"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Look_Known_Targets"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Target"[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b];[/b][/color]

[color="#1874CD"]_Rnd_Bomb_Array[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"Bo_GBU12_LGB_MI10"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"M_Titan_AP"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"M_Titan_AP"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"HelicopterExploBig"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"M_PG_AT"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"M_Titan_AT"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"R_80mm_HE"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"R_80mm_HE"[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color] 
[color="#1874CD"]_Rnd_Bomb[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Rnd_Bomb_Array[/color] [color="#191970"][b]select[/b][/color] [color="#191970"][b]floor[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]random[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]count[/b][/color] [color="#1874CD"]_Rnd_Bomb_Array[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Number[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#191970"][b]floor[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]random[/b][/color] [color="#FF0000"]10[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]+[/b][/color] [color="#FF0000"]10[/color][color="#8B3E2F"][b];[/b][/color] [color="#006400"][i]//Teh distance at which the unit will turn into an enemy[/i][/color]
[color="#1874CD"]_Number2[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Number[/color] [color="#8B3E2F"][b]+[/b][/color] [color="#FF0000"]10[/color][color="#8B3E2F"][b];[/b][/color] [color="#006400"][i]//The distacne at which the unit till blow up change if needed[/i][/color]

[color="#191970"][b]scopeName[/b][/color] [color="#7A7A7A"]"main"[/color][color="#8B3E2F"][b];[/b][/color]	
[color="#191970"][b]while[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_Unit[/color][color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]do[/b][/color]
[color="#8B3E2F"][b]{[/b][/color]
[color="#1874CD"]_Known_Targets[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#000000"]_pos[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#191970"][b]getPos[/b][/color] [color="#1874CD"]_Unit[/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Look_Known_Targets[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#191970"][b]nearestObjects[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#000000"]_pos[/color][color="#8B3E2F"][b],[/b][/color][color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"MAN"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"Car"[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b],[/b][/color][color="#FF0000"]500[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color] [color="#006400"][i]//MAY NEED TO CHANGE NUMBER[/i][/color]
[color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]alive[/b][/color] [color="#000000"]_x[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]&[/b][/color][color="#8B3E2F"][b]&[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]side[/b][/color] [color="#000000"]_x[/color] [color="#8B3E2F"][b]=[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#000000"]west[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#1874CD"]_Known_Targets[/color] [color="#191970"][b]set[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]count[/b][/color] [color="#1874CD"]_Known_Targets[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b],[/b][/color][color="#000000"]_x[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color][color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]forEach[/b][/color] [color="#1874CD"]_Look_Known_Targets[/color][color="#8B3E2F"][b];[/b][/color]

[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]count[/b][/color] [color="#1874CD"]_Known_Targets[/color] [color="#8B3E2F"][b]>[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color]
[color="#8B3E2F"][b]{[/b][/color]
	[color="#000000"]_target[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Known_Targets[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b];[/b][/color]
	[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]exitWith[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
	[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]breakTo[/b][/color] [color="#7A7A7A"]"main"[/color][color="#8B3E2F"][b];[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
	[color="#191970"][b]while[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]count[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]waypoints[/b][/color] [color="#1874CD"]_Unit[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]>[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]do[/b][/color] [color="#8B3E2F"][b]{[/b][/color] [color="#191970"][b]deleteWaypoint[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]waypoints[/b][/color] [color="#1874CD"]_Unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color] [color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

	[color="#8B3E2F"][b][[/b][/color][color="#1874CD"]_Unit[/color][color="#8B3E2F"][b],[/b][/color][color="#000000"]_target[/color][color="#8B3E2F"][b]][/b][/color] [color="#191970"][b]execVM[/b][/color] [color="#7A7A7A"]"Move.SQF"[/color][color="#8B3E2F"][b];[/b][/color]	
	[color="#1874CD"]_Unit[/color] [color="#191970"][b]doWatch[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b];[/b][/color]
	[color="#1874CD"]_Unit[/color] [color="#191970"][b]allowFleeing[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b];[/b][/color]
	[color="#1874CD"]_Unit[/color] [color="#191970"][b]setBehaviour[/b][/color] [color="#7A7A7A"]"CARELESS"[/color][color="#8B3E2F"][b];[/b][/color]
	[color="#1874CD"]_Unit[/color] [color="#191970"][b]setSpeedMode[/b][/color] [color="#7A7A7A"]"LIMITED"[/color][color="#8B3E2F"][b];[/b][/color]									[color="#006400"][i]//can remove this if you dont want the civi to walk unitl target is close[/i][/color]

	[color="#191970"][b]waitUntil[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]vehicle[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]distance[/b][/color] [color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]<[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Number2[/color] [color="#191970"][b]or[/b][/color] [color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_Unit[/color] [color="#191970"][b]or[/b][/color] [color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color] [color="#006400"][i]//can remove these if you dont want the civi to become an enemy as they sprint towards the target[/i][/color]
	[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]exitWith[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]									[color="#006400"][i]//can remove these if you dont want the civi to become an enemy as they sprint towards the target[/i][/color]
	[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]breakTo[/b][/color] [color="#7A7A7A"]"main"[/color][color="#8B3E2F"][b];[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]							[color="#006400"][i]//can remove these if you dont want the civi to become an enemy as they sprint towards the target[/i][/color]
	[color="#8B3E2F"][b][[/b][/color][color="#1874CD"]_Unit[/color][color="#8B3E2F"][b]][/b][/color] [color="#191970"][b]joinSilent[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]createGroup[/b][/color] [color="#000000"]east[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]								[color="#006400"][i]//can remove these if you dont want the civi to become an enemy as they sprint towards the target[/i][/color]
	[color="#1874CD"]_Unit[/color] [color="#191970"][b]setSpeedMode[/b][/color] [color="#7A7A7A"]"FULL"[/color][color="#8B3E2F"][b];[/b][/color]

	[color="#191970"][b]waitUntil[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]vehicle[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]distance[/b][/color] [color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]<[/b][/color][color="#8B3E2F"][b]=[/b][/color] [color="#1874CD"]_Number[/color] [color="#191970"][b]or[/b][/color] [color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_Unit[/color] [color="#191970"][b]or[/b][/color] [color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
	[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]breakTo[/b][/color] [color="#7A7A7A"]"main"[/color][color="#8B3E2F"][b];[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
	[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#8B3E2F"][b]&[/b][/color][color="#8B3E2F"][b]&[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]alive[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]then[/b][/color]
	[color="#8B3E2F"][b]{[/b][/color]	
		Talking_Logic [color="#191970"][b]globalChat[/b][/color] [color="#7A7A7A"]"Al Akhbar!!!!"[/color][color="#8B3E2F"][b];[/b][/color]
		[color="#1874CD"]_Rnd_Bomb[/color] [color="#191970"][b]createVehicle[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]getPos[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]
		[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#000000"]true[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]exitWith[/b][/color] [color="#8B3E2F"][b]{[/b][/color] [color="#191970"][b]deleteVehicle[/b][/color] [color="#1874CD"]_Unit[/color][color="#8B3E2F"][b];[/b][/color] [color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
	[color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

[color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#191970"][b]sleep[/b][/color] [color="#FF0000"]5[/color][color="#8B3E2F"][b];[/b][/color]
[color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]

[/color]

Made with KK's SQF to BBCode Converter

move.SQF

[color="#FF8040"][color="#191970"][b]private[/b][/color] [color="#8B3E2F"][b][[/b][/color][color="#7A7A7A"]"_Unit"[/color][color="#8B3E2F"][b],[/b][/color][color="#7A7A7A"]"_Target"[/color][color="#8B3E2F"][b]][/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]0[/color][color="#8B3E2F"][b];[/b][/color]
[color="#000000"]_target[/color] [color="#8B3E2F"][b]=[/b][/color] [color="#000000"]_this[/color] [color="#191970"][b]select[/b][/color] [color="#FF0000"]1[/color][color="#8B3E2F"][b];[/b][/color]

[color="#191970"][b]while[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color] [color="#8B3E2F"][b]&[/b][/color][color="#8B3E2F"][b]&[/b][/color] [color="#191970"][b]alive[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b]}[/b][/color] [color="#191970"][b]do[/b][/color] 
[color="#8B3E2F"][b]{[/b][/color]
[color="#1874CD"]_Unit[/color] [color="#191970"][b]doMove[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#191970"][b]position[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#191970"][b]if[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#1874CD"]_unit[/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]or[/b][/color] [color="#8B3E2F"][b]([/b][/color][color="#8B3E2F"][b]![/b][/color][color="#191970"][b]alive[/b][/color] [color="#000000"]_target[/color][color="#8B3E2F"][b])[/b][/color][color="#8B3E2F"][b])[/b][/color] [color="#191970"][b]exitWith[/b][/color] [color="#8B3E2F"][b]{[/b][/color][color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color]
[color="#191970"][b]sleep[/b][/color] [color="#FF0000"]0.5[/color][color="#8B3E2F"][b];[/b][/color]
[color="#8B3E2F"][b]}[/b][/color][color="#8B3E2F"][b];[/b][/color][/color]

Made with KK's SQF to BBCode Converter

Edited by An_ArmaFan

Share this post


Link to post
Share on other sites
https://community.bistudio.com/wiki/FSM If you're curious about FSMs have a read, they can be very useful, basically to you, the user it looks like a flowchart. You'll want to download the FSM editor (you could do it by hand but that would kind of negate the point), I think a link is on the wiki page.

Share this post


Link to post
Share on other sites

if (true) exitWith {}; at the end of a scope makes as much sense as a book on how to read.

Share this post


Link to post
Share on other sites
if (true) exitWith {}; at the end of a scope makes as much sense as a book on how to read.

LOL !

@owmyeye

I have a Module with Suicide Bomber options in my SpookWarCom mod pack. Noob friendly. No scripting or anything. Just install the Mod Package and place the EOD Module on the map, then set your options.

That's it. Civ Suicide Bombers are random. You can set probability. Their dexterity (trigger time). Search them for bomb, cell phone, trigger, etc if you can kill them before they explode to prove you did not kill an innocent civilian. Warning Intel. And so on...

Edited by Goblin

Share this post


Link to post
Share on other sites

Thank you everyone for your responses.

@An_ArmaFan

Thnx for that code it works.

By the way though for anyone using that code, just note that the // labels in the code for detonation distance and team switch distance are the wrong way around. That's to say, the value assigned to _number is the detonation distance and _number2 is the switch to enemy distance.

Also, the same code works just fine if the bomber unit moveindriver a vehicle to make a VBIED, although I think there may be a little problem of the bomb being spawned on the unit's location (inside the vehicle) which insulates the explosion outside a bit. I'm not sure if I just imaged it, but from tests it seems targets didn't die at close distances they should have, so I changed the code where it says:

{	
		Talking_Logic globalChat "Al Akhbar!!!!";
		_Rnd_Bomb createVehicle (getPos [b]_unit[/b]);
		if (true) exitWith { deleteVehicle _Unit; };
	};

I changed the _Unit to _(name of vehicle used).

Also from testing I realised that if the VBIED is destroyed, it should actually detonate the bomb. To do this, I made a trigger which detects if the vehicle is destroyed, at which point it spawns a bomb (well in my case, 4 Bo_GBU12_LGB_MI10) and then deletes the vehicle.

This all works very well.

@Goblin

Thanks, I'll go check that mod out because it sounds interesting

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×