fontions BIS_fnc_UnitCapture et BIS_fnc_UnitPlay

Pour les Masochistes Éditeurs de missions
Répondre
Avatar du membre
=[TTK]= Clem
Retraité
Retraité
Messages : 431
Enregistré le : ven. 12 févr. 2010, 15:47

fontions BIS_fnc_UnitCapture et BIS_fnc_UnitPlay

Message par =[TTK]= Clem »

BIS_fnc_UnitCapture et BIS_fnc_UnitPlay permette de capturer les mouvement effectuer par le joueur en véhicule et de les faire refaire par l'ia (looping en avion ,slalom en voiture ,poser un helico sur le toit d'un bâtiment etc ) .

on va prendre pour exemple une insertion en helico qui débute dans un canyon ,suit ce canyon ,se pose prés de la ville et l'helico éjecte tous les passager et puis repart .

d'abord on vas capturer les mouvement ,

pour ce faire on creer un declencheur Radio alpha et dans le champ sur act on mets

Code : Tout sélectionner

null = [plane1, 120, 30, true] spawn BIS_fnc_UnitCapture
syntaxe :

Code : Tout sélectionner

null = [unit, duration, FPS, Firing, StartTime] spawn BIS_fnc_UnitCapture

Unit - l'unite qui vas servir de modele pour la capture
Duration - le temps maxi de l'enregistrement 
OPT:FPS - OPTIONAL: le nombres de FPS max qui vont être capturé  (default 20). la  Limite est de  1 a 100
OPT:Firing - OPTIONAL: si true, est sélectionner on peut a l'instar des mouvement capturer aussi les tirs effectuer par le modele
OPT:StartTime - OPTIONAL: ???????
ensuite on rajoute le module fonction

et on crée un helico et on le nomme plane1

puis pour commencer l'enregistrement on fais 0-0-1

des que on a fini on fais echap une première fois puis encore une fois pour arriver a cette écran

Image


on fais F1, et puis on colle tous ça dans un document texte que on appelleras uh60_1a.sqf (pour moi plus d'une demi-heure pour coller) et on devrait avoir un truc de ce genre la :

Image


on cree 2 uh60 et on les nommes mh1 et mh2 puis un 2 groupes d'infanterie avec pour un dans l'init {_X moveInCargo mh1} forEach units group this et pour l'autre {_X moveInCargo mh2} forEach units group this.

on sauvegarde la mission et on quite arma,on vas dans le dossier mission ou on a créer un init et notre script uh60_1a.sqf
on vas appeler la sequence enregistrer avec cette commande

[mh1,call compile loadFile "uh60_1a.sqf",[mh1,"landingDone"]] spawn BIS_fnc_UnitPlay;

[unite,call compile loadFile "uh60_1a.sqf",[mh1,"variable de la sequence"]] spawn BIS_fnc_UnitPlay;

unite,le nom de l'helico qui vas jouer la séquence
uh60_1a.sqf ,le nom du script ou on a coller l'enregistrement


init.sqf

Code : Tout sélectionner

sleep 0.5;

[mh1,call compile loadFile "uh60_1a.sqf",[mh1,"landingDone"]] spawn BIS_fnc_UnitPlay;
sleep 2;
[mh2,call compile loadFile "uh60_2a.sqf",[mh2,"landingDone"]] spawn BIS_fnc_UnitPlay;

mh1 setVariable ["landingDone",false];  
mh2 setVariable ["landingDone",false];

mh1 setVariable ["takeOffReady",false];
mh2 setVariable ["takeOffReady",false];

_stop = {
	waitUntil{_this getVariable "landingDone"};
	doStop _this;
	_this flyInHeight 0;
	(driver _this) disableAI "MOVE";
	(driver _this) disableAI "AUTOTARGET";

	waitUntil{_this setVelocity [0,0,0]; _this getVariable "takeOffReady"};
};

mh1 spawn _stop;
mh2 spawn _stop;

waitUntil{{_X getVariable "landingDone"} count [mh1,mh2] >= 2};

mh1 execVM "unload_uh60.sqf";
mh2 execVM "unload_uh60.sqf";

waitUntil{{_X getVariable "unloaded"} count [mh1,mh2] >= 2};

mh1 setVariable ["takeOffReady",true];
[mh1,call compile loadFile "uh60_1b.sqf",[mh1,"insertionDone"]] spawn BIS_fnc_UnitPlay;
sleep 2;
mh2 setVariable ["takeOffReady",true];
[mh2,call compile loadFile "uh60_2b.sqf",[mh2,"insertionDone"]] spawn BIS_fnc_UnitPlay;

mh1 setVariable ["insertionDone",false];
mh2 setVariable ["insertionDone",false];

_remove = {
	waitUntil{_this getVariable "insertionDone"};
	_this setPos [random 50,random 50,100 + random 100];
	_this setVelocity [0,0,0];
	_this enableSimulation false;
	_this hideObject true;
};

mh1 spawn _remove;
mh2 spawn _remove;

unload_uh60.sqf

Code : Tout sélectionner

_uh60 = _this;

_uh60 setVariable ["unloaded",false];

_crew = crew _uh60;
_cargo = [_crew,{group _X != group driver _uh60}] call BIS_fnc_conditionalSelect;

waitUntil{(getPos _uh60 select 2) < 1 && (speed _uh60) < 1};

_i = 0;
{
	unassignVehicle _X;
	_X action ["GETOUT",_uh60];
	if(_i mod 2 == 0)then{
		_X setPos (_uh60 modelToWorld [2,2,-2]);
		_X setDir (getDir _uh60 + 40 + random 25);
	}else{
		_X setPos (_uh60 modelToWorld [-2,2,-2]);
		_X setDir (getDir _uh60 - 40 - random 25);
		sleep 1.3;
	};
	_i = _i + 1;
} forEach _cargo;

sleep 0.7;

_uh60 setVariable ["unloaded",true];


au debut de linit on apelle la sequence d'aproche pour chaque helico

on mets les variable en false

dans la partie _stop ,

avec waitUntil on vas atendre que l'helico est fini sa sequenche d'aproche et passe la variable landingDone en true

pour stopper l'helico, et empêcher que l'ia reprenne les commandes


mh1 spawn _stop;
mh2 spawn _stop;

on fais excuter la partie stop

waitUntil{{_X getVariable "landingDone"} count [mh1,mh2] >= 2}

on synchronise les deux helico dans la phase d'atterrissage

mh1 execVM "unload_uh60.sqf";
mh2 execVM "unload_uh60.sqf";

on fais faire exécuter le script de déchargement de l'infanterie

un fois le script de déchargement de l'infanterie on as un variable unloaded qui passer a true
pour dire que l'infanterie a debarquer

waitUntil{{_X getVariable "unloaded"} count [mh1,mh2] >= 2};

on synchronise les deux helico dans la phase de debarquement

[mh1,call compile loadFile "uh60_1b.sqf",[mh1,"insertionDone"]] spawn BIS_fnc_UnitPlay;

on fais jouer les séquences de décollage et retour a la base


remove = {
waitUntil{_this getVariable "insertionDone"};
_this setPos [random 50,random 50,100 + random 100];
_this setVelocity [0,0,0];
_this enableSimulation false;
_this hideObject true;
};

une fois les séquences de décollage et retour a la base on a la variable insertionDone qui passe en true
on attend que la variable insertionDone passe en true
pour déplacer l'helico hors de vue
le stopper
empêcher que l'ia reprenne le contrôle
et on le cache .

PS

pour jouer des sequences de tir la commande est spawn BIS_fnc_UnitPlayFiring
pour jouer des sequences de mouvement la commande est spawn BIS_fnc_UnitPlayFiring

nutiliser pas calll a la place de spawn

et combiner les deux


[heli1,call compile loadFile "mouvement.sqf",[heli1,"mouvement"]] spawn BIS_fnc_UnitPlay;
[heli1,call compile loadFile "tir.sqf",[heli1,"tir"]] spawn BIS_fnc_UnitPlayFiring;

selon la syntaxe vu plus haut
Fichiers joints
insertions.Takistan.rar
mission demo
(220.96 Kio) Téléchargé 235 fois
Image

Avatar du membre
=[TTK]= Frog
Grand Passpartou
Grand Passpartou
Âge : 50
Messages : 1912
Enregistré le : sam. 27 févr. 2010, 18:15
Humeur : acqueuse.
Localisation : Région bientôt annexée à la France.

Re: fontions BIS_fnc_UnitCapture et BIS_fnc_UnitPlay

Message par =[TTK]= Frog »

CLem = PRESIDENT
Image
'Qué fadag, ce gary'...'OULA, elle doit faire mal celle-là !'... 'Je ne me demande même pas s'il existe une team qui ressemble à la TTK

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: fontions BIS_fnc_UnitCapture et BIS_fnc_UnitPlay

Message par =[TTK]= Memphis007 »

pff chui sur qu'il a tout pompé sur son voisin...
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Clem
Retraité
Retraité
Messages : 431
Enregistré le : ven. 12 févr. 2010, 15:47

Re: fontions BIS_fnc_UnitCapture et BIS_fnc_UnitPlay

Message par =[TTK]= Clem »

encore une petite mission demo d'acrobatie aérienne

nécessite @ttk ,arma 2 et AOA
Fichiers joints
show_aerien.Chernarus.rar
mision demo
(280.81 Kio) Téléchargé 206 fois
Image

Répondre