Jump to content
Sign in to follow this  
fett_li

Making placed units be editable for every Zeus

Recommended Posts

Thanks a lot. This really helped me with a few issues I was having.

Share this post


Link to post
Share on other sites

hey Fett_Li in den functions grpPlaced und objPlaced fehlen in den forEach-Schleifen die semicolons in den einzeilern

Share this post


Link to post
Share on other sites

Hi community,

me and my clan had the problem that when we played a zeus mission with 30 or more players and 2 or 3 zeus, every unit placed by zeus was only editable for the zeus who placed them. Also were JIPed players not marked as editable for the zeus which led to the bad situation were we couldn't order AI units to "destroy" players.

I solved both problems and I'd like to share this, because someone might be interested in it.

Make players marked as editable also with JIP:

To get this, you jast hav to add this in the initPlayerServer.sqf:

{ _x addCuratorEditableObjects [[_this select 0],true];
} forEach allCurators;

Making placed units be editable for every Zeus:

This is a bit more tricky. First you have to create in youre mission folder the folder "functions", and in that the folder curator.

In this folder place the following three scripts:

fn_eventHandlers.sqf

{ _x addEventHandler ["CuratorGroupPlaced",{[_this,"FETT_fnc_grpPlaced",false] spawn BIS_fnc_MP}];
_x addEventHandler ["CuratorObjectPlaced",{[_this,"FETT_fnc_objPlaced",false] spawn BIS_fnc_MP}];
} forEach allCurators;

fn_grpPlaced.sqf

_curator = _this select 0;
_placed = _this select 1;

{ _x addCuratorEditableObjects [(units _placed),true]
} forEach (allCurators - [_curator]);

nil 

fn_objPlaced.sqf

_curator = _this select 0;
_placed = _this select 1;

{ _x addCuratorEditableObjects [[_placed],true]
} forEach (allCurators - [_curator]);

nil 

To make use of this functions just add in youre description.ext:

class CfgFunctions {
class FETT {
class curator {
class eventHandlers {postInit = 1;};
class objPlaced {};
class grpPlaced {};
};
};
};

And you're done! I hope this helps some people!

Thank you for this :)

Share this post


Link to post
Share on other sites

I updated the scripts to the latest scripting commands so that the network traffic should be reduced. Also it's no easier to use the scripts!

Share this post


Link to post
Share on other sites

Hello,
I used this script for my GameMaster mission and there seemed to be no issues. Hovewer they resurfaced and whats better they are not consistent. Sometimes when some Zeus returns back from Remote or he reconnects, he will spawn as a brid.
Here is a mission file and a modpack we are using on server, clients have aditionals like ST_HUD, TAW_Viewdistance....

https://www.dropbox.com/s/1rkjedmr6qhii2p/ZeusRemastered.Altis.pbo?dl=0


mods="'modssix/@cba_a3;modssix/@ares;modssix/@rhs_usf3;modssix/@rhs_afrf3;modssix/@rds;modssix/@rds_rhs_comp;modssix/@ace3;@aceServer;modssix/@leights_opfor;modssix/@allinarmaterrainpack;modssix/@caplants2;modssix/@acr_a3;modssix/@acr_a3_cup;modssix/@ascz_heads;modssix/@ctab;modssix/@asdg_jr;modssix/@mbg_killhouses_a3;modssix/@task_force_radio;modssix/@tryk;modssix/@hlcmods_core;modssix/@hlcmods_ak;modssix/@hlc_wp_mp5;modssix/@hlc_wp_saw;modssix/@hlcmods_m60e4;modssix/@sma;modssix/@rh_acc;modssix/@rh_m4_a3;modssix/@rh_pistol_a3;modssix/@tf47_launchers;modssix/@3cb_baf_weapons;modssix/@melb;modssix/@rds_civpack;modssix/@3cb_baf_equipment;modssix/@3cb_baf_units;modssix/@cariboufrontier;modssix/@3cb_baf_vehicles;modssix/@usaf'"

Share this post


Link to post
Share on other sites

Hi arcanum,

sorry to say that but I won't be able to help you there. In can only say that my script won't cause such an error because it doesn't interfere in any way with the spawning of a zeus, etc.

Also I had a brief look at your mission and can't find any mistake in there.

 

Seems to be a modpack related problem.

 

Greetings

Share this post


Link to post
Share on other sites

hey i figured out how to get zeus working on my exile server but i cant edit the preexisting vehicles and objects or the ones created by the traders someone on the first page said something similar but it used syncing in the 2d editor is there a persistent way to do it so when a new object or vehicle is created it will add it to the zeus?

Share this post


Link to post
Share on other sites

Have you tried using the ADV_Zeus.sqf script?

 

ADV_Zeus.sqf:

/*
ADV_zeus script by Belbo
Makes most units placed in the editor and playable units editable by Zeus.
Call from init.sqf via:
if (isServer) then {[CURATORMODULENAME,true] execVM "ADV_zeus.sqf";};
*/

_curator = _this select 0;
_addCivilians = _this select 1;

//adds objects placed in editor:
_curator addCuratorEditableObjects [vehicles,true];
_curator addCuratorEditableObjects [(allMissionObjects "Man"),false];
_curator addCuratorEditableObjects [(allMissionObjects "Air"),true];
_curator addCuratorEditableObjects [(allMissionObjects "Ammo"),false];
	
//makes all units continuously available to Zeus (for respawning players and AI that's being spawned by a script.)
while {true} do {
	_toAdd = if (!_addCivilians && {(side _x) == civilian}) then {false} else {true};
	{
		if (_toAdd) then {_curator addCuratorEditableObjects [[_x], true]};
	} forEach allUnits;
	_curator addCuratorEditableObjects [vehicles, true];
	sleep 10;
};

if (true) exitWith {};

Then in the init.sqf file:

if (isServer) then 
{
//ZeusModule = your curator module name; true = boolean, if civilians should be editable by zeus as well - set to false if you don't want civilians to be editable.
[ZeusModule,true] execVM "ADV_zeus.sqf";
[ZeusModule1,true] execVM "ADV_zeus.sqf";
[ZeusModule2,true] execVM "ADV_zeus.sqf";
[ZeusModule3,true] execVM "ADV_zeus.sqf";
};

All you do is add a line for every Zeus you have, making sure that all of the Zeus modules have owners and that the names match the ones in brackets.

That and the PLAYER unit, not any of the PLAYABLE ones, the one with the red circle around it, has to have the first Zeus module listed in the init.sqf, in this case "ZeusModule".

Share this post


Link to post
Share on other sites

I prefer this variant, which is a bit easier on the performance:

if ( !("cba_xeh" in activatedAddons) ) then {
	_newUnits = [];
	_oldUnits = [];
	while {true} do {
		sleep 5;
		_allUnits = allUnits;
		_newUnits = _allUnits - _oldUnits;
		{
			_x addCuratorEditableObjects [_newUnits,true]
		} forEach AllCurators;
		_oldUnits =+ _newUnits;
	};
};

The cba - check is there because I also have a simple server-side addon that uses cba-initeventhandlers to add units to zeus (which works even better). So this snippet is only a fallback in case CBA is not running.

Share this post


Link to post
Share on other sites

I don't see why this should be easier on performance.

You have a thread bothering the scheduler which is never good. I'm just using event handlers which should be very minimal.

And adding to that you share your units with some delay.

 

But if it works for you - okay. I don't care.

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  

×