
MAKE TELEPORTS POINTS
Thanks to Babast from FOXCOM TEAM for this script
To make teleport points, follow this process :
​
​
​
STEP 1 - Create folder named "BAS_teleport" in your mission folder (exemple : your_mission\BAS_teleport
​
​
​
​
STEP 2 - Create a file text file in your mission folder (not BAS_teleport) and past the follow code :
/* Prevent script injection */
inGameUISetEventHandler ["PrevAction", ""];
inGameUISetEventHandler ["Action", ""];
inGameUISetEventHandler ["NextAction", ""];
/* Compile basstard's revive */
call compileFinal preprocessFileLineNumbers "BAS_teleport\BAS_teleportInit.sqf";
Save as init.sqf
​
​
​
STEP 3 - In the "BAS_teleport" folder, make file named BAS_teleportFunctions.sqf and past this :
​
/******************************************************************************************
* This work is licensed under the APL-SA. Copyright © 2016 basstard @ BI Forums *
******************************************************************************************
Author : basstard
Date : 24/08/2016 (jj/mm/aaaa)
Version : 0.1
Description : Functions collection for basstard's teleport functionnalities
Usage : N/A
Syntax : N/A
Parameters : None
*/
/******************************************************************************************
Description : Function to call from trigger's onAct. field
Syntax : 0 = [thisTrigger, thisList] call BAS_fnc_callFromTrigger;
Parameters : None
Return : None
*******************************************************************************************/
BAS_fnc_callFromTrigger =
{
private ["_trigger", "_playerList"];
_trigger = _this select 0;
_playerList = _this select 1;
if (isServer || isDedicated) then
{
{
if ((isPlayer _x) && (!(_x getVariable ["BAS_isTeleported", false]))) then
{
_x setVariable ["BAS_isTeleported", true, true];
[_x, _trigger] remoteExec ["BAS_fnc_teleportServer", 2, false];
[_x, _trigger] remoteExec ["BAS_fnc_teleportClient", [0,-2] select isDedicated, false];
};
} forEach _playerList;
};
};
/******************************************************************************************
Description : Function to handle teleport request server side
Syntax : [unit, trigger] spawn BAS_fnc_teleportServer;
Parameters : Unit: Object
Trigger: Object
Return : None
*******************************************************************************************/
BAS_fnc_teleportServer =
{
private ["_unit", "_trigger", "_markerPos"];
_unit = _this select 0;
_trigger = _this select 1;
if (isServer || isDedicated) then
{
/* Make player invisible */
_unit hideObjectGlobal true;
/* Wait for effective teleportation */
waitUntil
{
sleep 0.1;
!(_unit inArea _trigger)
};
/* Make player visible again */
_unit hideObjectGlobal false;
_unit setVariable ["BAS_isTeleported", false, true];
};
};
/******************************************************************************************
Description : Function to handle teleport request client side
Syntax : [unit, trigger] spawn BAS_fnc_teleportClient;
Parameters : Unit: Object
Trigger: Object
Return : None
*******************************************************************************************/
BAS_fnc_teleportClient =
{
private ["_unit", "_trigger", "_markerPos", "_playerPos"];
_unit = _this select 0;
_trigger = _this select 1;
_markerPos = [];
if (local _unit) then
{
/* Disable damages and freeze unit */
_unit allowDamage false;
disableUserInput true;
/* Get marker position from associated trigger */
_markerPos =
{
if (_x select 0 == _trigger) exitWith
{
getMarkerPos (_x select 1)
}
} count BAS_teleportLocationsList;
/* Check for empty position */
if (_markerPos isEqualTo []) then
{
/* Show error screen */
titleText ["ERROR EMPTY POSITION", "BLACK IN", 5];
}
else
{
/* Proceed to teleportation */
titleText ["You are going to the location, please wait...", "BLACK FADED", 1];
// _playerPos = [_markerPos,5,10,2,0,0,0] call BIS_fnc_findSafePos;
// waitUntil {sleep 0.1; preloadCamera _markerPos};
// waitUntil {!isNil "bis_fnc_init" && {bis_fnc_init}};
// _unit setPos _playerPos;
_unit setPos _markerPos;
waitUntil { sleep 0.1 ; !isObjectHidden _unit };
titleText ["", "BLACK IN", 5];
};
/* Enable damages and unfreeze unit */
disableUserInput false;
_unit allowDamage true;
};
};
​
​
Save file
​
​
​
STEP 4 - In the "BAS_teleport" folder, create a file BAS_teleportInit.sqf and past the following code :
Note : see step 5 just below to change locations, dont hesitate to add or remove teleportations area, in following this :
[trigger_name,"spawn_point_name"]
You can already modify teleportations points here, you have just to have BAS_teleportInit.sqf to modify to add or remove location, not others files
​
/******************************************************************************************
* This work is licensed under the APL-SA. Copyright © 2016 basstard @ BI Forums *
******************************************************************************************
Author : basstard
Date : 24/08/2016 (jj/mm/aaaa)
Version : 0.1
Description : Initialization of basstard's teleport context
Usage : This script is called from init.sqf
Syntax : call compileFinal preprocessFileLineNumbers "BAS_teleportInit.sqf";
Parameters : None
*/
/* Global var that can be tweaked */
BAS_teleportLocationsList =
[
[trigger1,"nuclear_plant"],
[trigger2,"prip_1"],
[trigger3,"yanov"],
[trigger4,"pripyat2"]
]; // list of teleport locations, it consists of arrays of trigger name associated to a marker name
/* Compile functions linked to revive functionnalities */
call compile preprocessFileLineNumbers "BAS_teleport\BAS_teleportFunctions.sqf";
/* Make teleportation markers invisible on the map */
[] spawn
{
{
(_x select 1) setMarkerAlpha 0;
} forEach BAS_teleportLocationsList;
};
Save file
​
​
​
​
​
STEP 5 - In the editor, open your mission and place trigger, name this trigger trigger1, and make spawn point (empty marker) named nuclear_plant somewhere, out of your trigger
​
In your trigger, on activation, past this :
​
0 = [thisTrigger, thisList] call BAS_fnc_callFromTrigger;
​
​
​
In the editor, open your mission and place trigger, name this trigger trigger2, and make spawn point (empty marker) named prip_1 somewhere, out of your trigger
​
In your trigger, on activation, past this :
​
0 = [thisTrigger, thisList] call BAS_fnc_callFromTrigger;
​
​
​
In the editor, open your mission and place trigger, name this trigger trigger3, and make spawn point (empty marker) named yanov somewhere, out of your trigger
​
In your trigger, on activation, past this :
​
0 = [thisTrigger, thisList] call BAS_fnc_callFromTrigger;
​
In the editor, open your mission and place trigger, name this trigger trigger4, and make spawn point (empty marker) named pripyat2 somewhere, out of your trigger
​
In your trigger, on activation, past this :
​
0 = [thisTrigger, thisList] call BAS_fnc_callFromTrigger;
​
​
Dont forget on all of your trigger to set on activation/detection who can activate triggers (anyone, BLUFOR, OPFOR, etc...)
​
​
​
​
Save your mission and export to multiplayers
Note : explanations about teleportation system
Go inside trigger1 teleport you to nuclear_plant
Go inside trigger2 teleport you to prip_1
Go inside trigger3 teleport you to yanov
Go inside trigger4 teleport you to pripyat
​
​