Français Se téléporter avec une action sur un objet

  • Auteur de la discussion Auteur de la discussion Rosil Ortega
  • Date de début Date de début
20/5/20
21
1
4
450
Salut à tous !

Je fait ce tuto pour aider les mappeurs

1) Poser un premier objet sur la carte avec point_tp_1 dans variable
2) Poser un deuxième objet sur la carte avec dans l'init cette commande :
Code:
this addAction ["Se téléporter au point 1",{player setPosATL (getPosATL point_tp_1)}];
Vous pouvez répéter l'opération en remplaçant point_tp_1 par une autre variable pour mettre d'autres destinations.

Voila !

Le tuto viens de cette vidéo :
 
Dernière édition par un modérateur:
  • Thinking
Les réactions: ToMA3
Petit rajout si ça intéresse :)

Code:
this addAction ["Texte de votre choix en Structured Text",{ player setPosATL (getPosATL tp);sleep 0.5;_this select 1 switchMove ""; }, nil,10,true,true,"","true",3,false,"",""];

Le structured Text : https://community.bistudio.com/wiki/Structured_Text

sleep 0.5 pour une rapidité améliorée

select 1 switchMove pour éviter les animations (Ranger/reprendre son arme ou encore l'animation lorsque vous tombez à cause de l'altitude)

La valeur 10 permet de modifier la "priorité" de l'action (sa position dans le menu avec la molette)

La valeur 3 permet de modifier la distance d'affichage (pour éviter que quelqu'un puisse se TP en étant à 50m de l'objet en question)

Pour les autres paramètres, se référer à : https://community.bistudio.com/wiki/addAction
 
Dernière édition par un modérateur:
  • Like
Les réactions: Maxence
Bonjou,

Cela fonctionne pour moi, comment pourrais-je rajouter un timer avec une progress bar avant la téléportation, et rendre l'action payante ?
Merci d'avance
 
Alors c'est bien plus compliqué pour rajouter tout ça, j'ai pris un peu de temps pour te le faire exceptionnellement.

Dans ton Functions.hpp il faut que tu définisses une nouvelle fonction "teleportPlayer".

Dans ta mission, créé un fichier fn_teleportPlayer.sqf (dans le bon dossier par rapport à ce que tu as fait dans le Functions.hpp) avec dedans :
Code:
/*
    Maxence
*/
_tpPos = param [0,[],[[]]];
if ((count _tpPos) isEqualTo 0) exitWith {};

_price = 500;
_duree = 30;

if (life_cash < _price) exitWith {hint "Vous n'avez pas assez d'argent !";};

life_cash = life_cash - _price;
[0] call SOCK_fnc_updatePartial;

disableSerialization;
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;

_upp = "Téléportation en cours";
_pgText ctrlSetText format ["%2 (1%1)...","%",_upp];
_progress progressSetPosition 0.01;
_cP = 0.01;

_position = position player;
0 cutText["Téléportation en cours","BLACK FADED",99999999];

for "_i" from 0 to 1 step 0 do {
    uiSleep  (_duree / 100);
    _cP = _cP + 0.01;

    _progress progressSetPosition _cP;
    _pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];

    if (_cP >= 1) exitWith {};
    if (player distance _position > 10) exitWith {};
};

"progressBar" cutText ["","PLAIN"];
0 cutText ["","BLACK IN"];
life_action_inUse = false;

if (player distance _position > 10) exitWith {hint "Ne vous éloignez pas !"; };
player setPosATL _tpPos;

Pour l'action dans l'objet, il faudra la modifier de cette manière :
Code:
this addAction ["Se téléporter au point 1 (500€)",{[(getPosATL point_tp_1)] spawn life_fnc_teleportPlayer}];
 
Dernière édition:
Alors c'est bien plus compliqué pour rajouter tout ça, j'ai pris un peu de temps pour te le faire exceptionnellement.

Dans ton Functions.hpp il faut que tu définisses une nouvelle fonction "teleportPlayer".

Dans ta mission, créé un fichier fn_teleportPlayer.sqf (dans le bon dossier par rapport à ce que tu as fait dans le Functions.hpp) avec dedans :
Code:
/*
    Maxence
*/
_tpPos = param [0,[],[[]]];
if ((count _tpPos) isEqualTo 0) exitWith {};

_price = 500;
_duree = 30;

if (life_cash < _price) exitWith {hint "Vous n'avez pas assez d'argent !";};

life_cash = life_cash - _price;
[0] call SOCK_fnc_updatePartial;

disableSerialization;
"progressBar" cutRsc ["life_progress","PLAIN"];
_ui = uiNamespace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;

_upp = "Téléportation en cours";
_pgText ctrlSetText format ["%2 (1%1)...","%",_upp];
_progress progressSetPosition 0.01;
_cP = 0.01;

_position = position player;

for "_i" from 0 to 1 step 0 do {
    uiSleep  (_duree / 100);
    _cP = _cP + 0.01;

    _progress progressSetPosition _cP;
    _pgText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_upp];

    if (_cP >= 1) exitWith {};
    if (player distance _position > 10) exitWith {};
};

"progressBar" cutText ["","PLAIN"];
life_action_inUse = false;

if (player distance _position > 10) exitWith {hint "Ne vous éloignez pas !"; };
player setPosATL _tpPos;

Pour l'action dans l'objet, il faudra la modifier de cette manière :
Code:
this addAction ["Se téléporter au point 1 (500€)",{[(getPosATL point_tp_1)] spawn life_fnc_teleportPlayer}];
Après test c'est bon ça fonctionne merci Maxence Maxence

Serait-il possible de mettre un black screen le temps de la progress bar en rajoutant le son d'un moteur .?