Jump to content
dreadpirate

Jebus - Just Editor Based Unit Spawning

Recommended Posts

On 3/9/2017 at 3:41 PM, dreadpirate said:
  •  

 

I tested out PAUSE while updating the script and it's working on my end.

 

0 = [this, "PAUSE=", 150] execVM "Jebus.sqf";

Well, before I started testing the pause feature,  I did open the script to have a look at the coding. I didn't make any changes to anything inside, but I noticed the icon for the file changed. It is still an SQF file though, and everything else still works, so I'm not too sure how relevant  it is. Also, I do get an error message at the top of the screen when I try to conduct a test, by placing a BLUFOR soldier where OPFOR will spawn,  and putting 0 = [this, "PAUSE=", 150] OPFOR units still spawn after the respective trigger they are synced to activates, even with the BLUFOR soldier right next to them, and I get this error message: "...SpawnPos , _unitSide, _PauseRadius] call [#]Jebus_fnc_enemyinradius file C:\users\user\Documents\Arma 3 - Other Profiles\MyProfile\MPmissions\MyMission\Jebus.sqf, line 312" And just in case it is relevant,  I'm using vientnam OPFOR units from the UNSUNG mod, and the trigger synced to the group fires when the radius it covers, the "OPFOR base" , has no BLUFOR units inside it, and I did make sure to put the BLUFOR unit within the pause radius, but outside of the trigger radius - UPDATE: I solved the problem.  After carefully comparing the folders in my mission file and the Demo file, it turns out I was missing an Init folder. It started working properly after I copy and pasted the folder into my mission,  sorry for the trouble!

Share this post


Link to post
Share on other sites

Finally had time to sit down and add this to a mission.  Thank you very much for keeping this updated.  I use this with UPS and seems to be working well except I can't figure out how to get the AI patrol to patrol in Safe mode.  They keep wanting to run around in their patrol area.

 

I tried setting the group to Safe and I also added on single waypoint with Safe set, but still having the issue.  Any ideas?

Share this post


Link to post
Share on other sites
1 hour ago, gatordev said:

Finally had time to sit down and add this to a mission.  Thank you very much for keeping this updated.  I use this with UPS and seems to be working well except I can't figure out how to get the AI patrol to patrol in Safe mode.  They keep wanting to run around in their patrol area.

 

I tried setting the group to Safe and I also added on single waypoint with Safe set, but still having the issue.  Any ideas?

The issue seems to be UPS being too "sensitive". I've had civilians and even supposedly-invisible Zeus units trip them out of Safe mode.

 

If you observe from a long distance, they do walk as expected.

Share this post


Link to post
Share on other sites
On 4/8/2017 at 5:25 PM, dreadpirate said:

The issue seems to be UPS being too "sensitive". I've had civilians and even supposedly-invisible Zeus units trip them out of Safe mode.

 

If you observe from a long distance, they do walk as expected.

 

I was playing with this some more tonight and UPS doesn't seem to be the culprit. I have a simple two-man team set with a Safe/Slow waypoint right in front of them.  As the player, I'm a civilian some 400m+ from them.  The only other "bad guys" are on a completely different island across the map (Tanoa).  As soon as the mission starts, the two-man team starts trotting along in Aware.  It's doing this with and without UPS being called and I've confirmed UPS truly isn't being called by anything else (only group used with JEBUS and UPS debug is turned on). 

 

Is it possible something changed recently with A3?  This is with the last week or two's DEV branches that I'm seeing this.  Also, FWIW, Azure-Cool's UPSMON doesn't have this issue (though it throws lots of it's own errors).

Share this post


Link to post
Share on other sites
15 hours ago, gatordev said:

As soon as the mission starts, the two-man team starts trotting along in Aware.  It's doing this with and without UPS being called

 

Ironically a fellow clan mission creator mentioned the same thing and we don't (yet) use UPS. He was using CACHE= and mentioned that despite a safe/walk waypoint, an uncached unit will go to aware and therefore run. However when I tested with no mods, I began to think the same where a unit ran roughly to the first waypoint, then started walking after that. Every subsequent cache and decache was also ok.

Share this post


Link to post
Share on other sites

Trying to get this working for a mission.

 

When I put the OPFOR near where the mission starts with a trigger nearby, I can get the OPFOR to come in once I cross the trigger. When I move that same trigger and OPFOR group out to the part of the map I want to use it, nothing happens. I even put in hint"opfor"; in the trigger so I know I am hitting it. Any ideas on why I can not get this to work? What other information do you need from me?

 

My mistake. It was spawning too close to friendlies and I had to use PAUSE to get the units to spawn in.

 

Thanks for making this script.

 

Jason

Edited by SaltyMedic
Fixed problem

Share this post


Link to post
Share on other sites
On 4/15/2017 at 11:44 AM, anfo said:

 

Ironically a fellow clan mission creator mentioned the same thing and we don't (yet) use UPS. He was using CACHE= and mentioned that despite a safe/walk waypoint, an uncached unit will go to aware and therefore run. However when I tested with no mods, I began to think the same where a unit ran roughly to the first waypoint, then started walking after that. Every subsequent cache and decache was also ok.

 

I'll give that a shot.

Share this post


Link to post
Share on other sites

Hi Dread

 

Couple of easy questions I hope :f:

 

Q1.

I'd like to try UPS some more in upcoming missions but I'm slightly confused. Can you please explain the difference between what is on post 1 of your thread:

0 = [this, "PAUSE=, 100, "INIT=", "[_proxyThis, 'agia] execVM 'UPS.sqf'"] execVM "Jebus.sqf"; 

 

and this code in your example Stratis mission:

 

0 = [this,"INIT=","[_proxyThis,'11'] execVM 'scripts\upsmon.sqf'"] execVM "Jebus.sqf"; 

 

Is there a simple distinction between script UPS.sqf and UPSMON.sqf that makes it easier to know which one is best for my needs?

 

Q2.

 

From your example mission:

 

0 = [this, "DELAY=", 10, "GAIA_NOFOLLOW=", "9", "RESPAWNMARKERS=", ["m1", "m2"]] execVM "Jebus.sqf";

 

Are the m1, m2 markers supposed to be hidden by the script? The reason I ask is that they stay visible in preview.

Share this post


Link to post
Share on other sites
10 hours ago, anfo said:

Hi Dread

 

Couple of easy questions I hope :f:

 

Q1.

I'd like to try UPS some more in upcoming missions but I'm slightly confused. Can you please explain the difference between what is on post 1 of your thread:


0 = [this, "PAUSE=, 100, "INIT=", "[_proxyThis, 'agia] execVM 'UPS.sqf'"] execVM "Jebus.sqf"; 

 

and this code in your example Stratis mission:

 


0 = [this,"INIT=","[_proxyThis,'11'] execVM 'scripts\upsmon.sqf'"] execVM "Jebus.sqf"; 

 

Is there a simple distinction between script UPS.sqf and UPSMON.sqf that makes it easier to know which one is best for my needs?

 

UPSMON is based on UPS, but has additional features and tweaks, so try both and see which you prefer.

 

 

10 hours ago, anfo said:

 

Q2.

 

From your example mission:

 


0 = [this, "DELAY=", 10, "GAIA_NOFOLLOW=", "9", "RESPAWNMARKERS=", ["m1", "m2"]] execVM "Jebus.sqf";

 

Are the m1, m2 markers supposed to be hidden by the script? The reason I ask is that they stay visible in preview.

 

The script doesn't hide the markers. Use the empty markers for an actual mission. Markers -> System -> Empty

Share this post


Link to post
Share on other sites
7 hours ago, dreadpirate said:

UPSMON is based on UPS, but has additional features and tweaks, so try both and see which you prefer.

 

Do you have a preference since you have probably looked at both in a bit of depth of late, or maybe it isn't that simple? Seems like UPSMON is an attempt to "improve" UPS beyond just AI patrolling and reaction.

 

I will still try both and see what member's impressions are.

Share this post


Link to post
Share on other sites

I gave up on UPSMON because of all of the script errors I was getting after multiple A3 updates.  He started adding a lot of AI enhancements that didn't survive the updates and then appears to have stopped supporting UPSMON.  He was feeding betas to me for a while, but even that stopped.

 

FWIW, it seems the AI have stopped running around at Aware now, even with out the Cache command, so I'm a happy camper.  Thanks again for the mod.

Share this post


Link to post
Share on other sites

Hi Dread

 

A possible issue for your future action

 

 

Share this post


Link to post
Share on other sites

Hi @anfo

 

The issue is that JEBUS doesn't save editor variable names. I vaguely remember trying to add this feature and having problems with it. Maybe it's time to attack the problem with fresh eyes.

 

In the meantime, you can change the code in your waypoint to the following:

 

{deleteVehicle (vehicle _x); deleteVehicle _x} forEach thisList;

.....which will delete all vehicles and all units in the group when it hits the waypoint.

 

One wrinkle I discovered when testing this is that you need to place at least one other waypoint between the spawn position and the delete position, or sometimes the group gets deleted instantly at the spawn position.

 

Yes, only sometimes.....

 

Share this post


Link to post
Share on other sites
10 minutes ago, dreadpirate said:

The issue is that JEBUS doesn't save editor variable names. I vaguely remember trying to add this feature and having problems with it. Maybe it's time to attack the problem with fresh eyes.

 

Hey @dreadpirate ,

i am currently working on the same thingt on a very similar project (look at sig). I had an error with it but I found a solution to save, delete and restore objects with there editor names. Basicly it works like shown in the following pseudo functions:

fnc_get_editor_var =
{
 params ["_object"];
 (vehicleVarName _object)
};

fnc_delete_obj =
{
 params ["_object"];
 _object setVehicleVarName "";
 deleteVehicle _object;
};

fnc_spawn_obj =
{
 params ["_object", "_name"];
 if(_name isEqualTo "") exitWith{};
 missionNamespace setVariable [ _name, _object, true];
 [_object, _name] remoteExec ["setVehicleVarName", 0, _object];
};

I hope this helps to get it working for ur project. Just ask if u ve questions with it.

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, dreadpirate said:

{deleteVehicle (vehicle _x); deleteVehicle _x} forEach thisList;

 

Thanks @dreadpirate even better, one code to delete them all works just as well

Share this post


Link to post
Share on other sites
On ‎6‎/‎6‎/‎2017 at 9:59 PM, sarogahtyp said:

 

Hey @dreadpirate ,

i am currently working on the same thingt on a very similar project (look at sig). I had an error with it but I found a solution to save, delete and restore objects with there editor names. Basicly it works like shown in the following pseudo functions:


fnc_get_editor_var =
{
 params ["_object"];
 (vehicleVarName _object)
};

fnc_delete_obj =
{
 params ["_object"];
 _object setVehicleVarName "";
 deleteVehicle _object;
};

fnc_spawn_obj =
{
 params ["_object", "_name"];
 if(_name isEqualTo "") exitWith{};
 missionNamespace setVariable [ _name, _object, true];
 [_object, _name] remoteExec ["setVehicleVarName", 0, _object];
};

I hope this helps to get it working for ur project. Just ask if u ve questions with it.

 

Thanks @sarogahtyp, I had a quick look at your script and it looks way more professional than my humble effort.

 

I suppose mine started as a very simple respawning script that has had more features tacked on over time, whereas yours has a smooth overall design and structure.

  • Like 1

Share this post


Link to post
Share on other sites

Thanks for such an incredibly useful and versatile script. Does anyone have an idea why setObjectTextureGlobal would not work on units running JEBUS? I have tried running it in the init directly, from a script called from the init, and from a script called through Jebus. All the other parts of the script are completed, but it simply ignores this command. The same script runs perfectly on units not running JEBUS, so I know that is not the issue. Any help would be appreciated!

Share this post


Link to post
Share on other sites

@SterlingC 

Post your JEBUS init and how the retexture script is normally called and maybe I can help you out. 

Share this post


Link to post
Share on other sites
10 hours ago, dreadpirate said:

@SterlingC 

Post your JEBUS init and how the retexture script is normally called and maybe I can help you out. 

1
1

Thanks. My mission was fairly far along when I decided to implement an equipment randomization system and that lead to some confusion when integrating with JEBUS. I was finally able to get it working on my own. Here is an example for anyone interested:   

 

Spoiler

// For use with JEBUS: 0 = [this, "Lives", 3, ADDITIONAL JEBUS PERAMITERS, "INIT=", "[_proxyThis] execVM 'Units\Equipment\RandomGearNatoRifleman.sqf'", "GAIA_NOFOLLOW=", "1_1"] execVM "Jebus.sqf";
// For non-JEBUS units paste this into units init: [this] execVM "Units\Equipment\RandomGearNatoRifleman.sqf";

_this = _this select 0;

removeAllItems _this; removeAllAssignedItems _this; removeUniform _this; removeVest _this; removeBackpack _this; removeHeadgear _this; removeGoggles _this;

// HEADGEAR:

_HeadGear = ["H_HelmetB_light_sand","H_HelmetB_light_black","H_HelmetB_light_desert","H_HelmetB_light_snakeskin","H_HelmetB_light_grass"];
_this addHeadgear (_HeadGear select ([0,(count _HeadGear)-1] call BIS_fnc_randomInt));;

// UNIFORM:

_Uniform = ["U_B_CombatUniform_mcam_tshirt","U_B_CombatUniform_mcam_vest","U_B_CombatUniform_mcam_vest"];
_this addUniform (_Uniform select ([0,(count _Uniform)-1] call BIS_fnc_randomInt));;

_this setObjectTextureGlobal [0, "\a3\characters_f\BLUFOR\Data\clothing_wdl_co.paa"];

// VEST:

_Vest = ["V_PlateCarrier1_rgr","V_PlateCarrier1_rgr_noflag_F"];
_this addVest (_Vest select ([0,(count _Vest)-1] call BIS_fnc_randomInt));;

// BACKPACK:

_Backpack = ["B_AssaultPack_mcamo","B_AssaultPack_rgr","B_AssaultPack_khk","B_FieldPack_cbr"];
_this addBackpack (_Backpack select ([0,(count _Backpack)-1] call BIS_fnc_randomInt));;

// Goggles:

_Goggles = ["NVGoggles","NVGoggles_OPFOR","NVGoggles_INDEP"];
_this linkItem (_Goggles select ([0,(count _Goggles)-1] call BIS_fnc_randomInt));;

//MAP:
_this linkItem "ItemMap";

// FACE:
_Face = ["WhiteHead_17","GreekHead_A3_09","TanoanHead_A3_05","WhiteHead_22_a","WhiteHead_08","WhiteHead_05","PersianHead_A3_01","PersianHead_A3_04_l","AsianHead_A3_04","WhiteHead_22_a","WhiteHead_11","TanoanHead_A3_05","TanoanHead_A3_05","AsianHead_A3_04"];
_this setFace (_Face select ([0,(count _Face)-1] call BIS_fnc_randomInt));;

// VOICE:
_this setSpeaker "male02eng";

_WeaponScript = ["Units\Weapons\NATORifleman\RandomSPAR556.sqf", "Units\Weapons\NATORifleman\Random762Rifles.sqf", "Units\Weapons\NATORifleman\SPAR556TAN.sqf", "Units\Weapons\NATORifleman\SPAR556TAN.sqf"];
_this execVM (_WeaponScript select ([0,(count _WeaponScript)-1] call BIS_fnc_randomInt));;

 
 

 

The script randomizes my NATO units within my particular preferences, like gear and identity. In this example all my NATO riflemen running the script will be retextured to the woodland uniforms from the vanilla game, but the real purpose for this feature was so that my opfor can use my own uniform retextures without addons. I wanted an increased likelihood that my riflemen will use the Tan SPAR, which is why that script is repeated a couple of times in the weapons section.

 

Thanks again for such a great script, and thank you for being willing to help with integrating my own script.   

Share this post


Link to post
Share on other sites

@SterlingC:

 

A possible issue is that _proxyThis only refers to the leader of the group, so to run it on all members of a group you need to do something like this:

0 = [this, "Lives", 3, "INIT=", "{[_x] execVM 'Units\Equipment\RandomGearNatoRifleman.sqf'} forEach units (group _proxyThis)", "GAIA_NOFOLLOW=", "1_1"] execVM "Jebus.sqf";

In fact, if you look at the demo mission, I have a similar script running on a group patrolling the radio tower West of Kamino.

It seems to work ok, although I've never actually verified that the woodland texture can be seen by others in MP.....

Share this post


Link to post
Share on other sites

G'day Dread

 

I'm probably asking a bit too much here, but I have a CQB scenario which I would like to use Jebus to respawn live targets within. The area is just shoot house walls on a flat ground, however when the units respawn they "sometimes" spawn away from their wanted locations (outside facility). They are not grouped so formations are not affecting them, but they are spawning with disableai "move".

 

Is there anything that can be done to spawn exactly where they're required? Again, probably a big ask I know. As they say, don't ask, don't get! ;)

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

×