Jump to content
kromka

Access from init.sqf

Recommended Posts

@pierremgi

I didn't knew this site. Nice juxtaposition.

Some things are overcomplicated for such ocasional scripting guy like me. I will check it.

-----

It works properly. Thank you.

Share this post


Link to post
Share on other sites

I would like to back to the code of teleport flag.
Currently it looks like this:

 

 


teleport = _this select 0;
teleportTarget = _this select 1;	//this is an array
sideLeader = _this select 2;
interactionDistance = 5;			//meters

player removeAction (player getVariable "idActionTeleport");
player removeAction (player getVariable "idActionAddTeleport");
player removeAction (player getVariable "idActionRemoveTeleport");

fnc_teleport= 
{
	private _destination = getPosATL (teleportTarget select 0);
	{
		if((_x == player) || !(isPlayer _x)) then		//is current player but not other player (can be AI)
		{
			_x setpos [(_destination select 0) + random [-20, 0, 20], (_destination select 1) + random [-20, 0, 20], 0.2]; 
		};
	} forEach units group player;
};

fnc_addTeleport= 
{	
	private _placeDistance = 4;
	private _playerDir = round (getDir player);
	private _playerPos = getPosATL player;
	
	"hello" remoteExec ["hint"];
	
	teleportTarget set [0, "Flag_Green_F" createVehicle [(_playerPos select 0) + _placeDistance * (sin _playerDir), (_playerPos select 1) + _placeDistance * (cos _playerDir), 0]];
	if(player == sideLeader) then 
	{	
		player removeAction (player getVariable "idActionAddTeleport");
		player setVariable ["idActionRemoveTeleport", player addAction actionRemoveTeleport];
	};
	if((side player) == (side sideLeader)) then
	{
		player setVariable ["idActionTeleport", player addAction actionTeleport];
	};
};

fnc_removeTeleport= 
{
	deleteVehicle (teleportTarget select 0);
	if(player == sideLeader) then
	{
		player setVariable ["idActionAddTeleport", player addAction actionAddTeleport];
		player removeAction (player getVariable "idActionRemoveTeleport");
	};
	if((side player) == (side sideLeader)) then
	{
		player removeAction (player getVariable "idActionTeleport");
	};
};

actionAddTeleport = ["add teleport", fnc_addTeleport, [], 0, false, true];
actionRemoveTeleport = ["remove teleport", fnc_removeTeleport, [], 0, false, true, "", "player distance (teleportTarget select 0) < interactionDistance"];
actionTeleport = ["teleport", fnc_teleport, [], 0, false, true, "", "player distance teleport < interactionDistance"];

if(isNull (teleportTarget select 0)) then 
{
	if(player == sideLeader) then 
	{
		player setVariable ["idActionAddTeleport", player addAction actionAddTeleport];
	};
}
else
{
	if(player == sideLeader) then 
	{
		player setVariable ["idActionRemoveTeleport", player addAction actionRemoveTeleport];
	};

	if((side player) == (side sideLeader)) then
	{
		player setVariable ["idActionTeleport", player addAction actionTeleport];
	};
};

 

 

On non-deditacted despite this script has still some issues but it works more or less like expected.

 

However on dedicated it totally doesn't work. Player, who is sideLeader can place/remove pole and teleport himself but other clients stay intact and this script isn't t even  launched when pole is placed.

I suppose eg this part

	if((side player) == (side sideLeader)) then
	{
		player setVariable ["idActionTeleport", player addAction actionTeleport];
	};

should be called in specific way eg with remoteExec, but I really don't know how to do it properly.

Can somebody assist me once again?

Best regards.

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

×