Bienvenue invité ( Connexion | Inscription )

Flash...Flash...Flash
Mille-Sabords survit uniquement grâce aux dons de ses membres, MERCI !!!>


 
Reply to this topicStart new topic
> Besoin d'aide script arma3
Nemo
posté jeudi 11 février 2016 à 14:21
Message #1


Icône de groupe
Typhon

Groupe : Membre d'Honneur
Messages : 16115
Inscrit : 07/04/2006
Lieu : Strasbourg
Membre no 2410



Voilà mon soucis je souhaite qu'à une heure donnée un IA apparaisse et monte dans un véhicule faire un trajet donné.

Alors j'arrive à mettre mon IA dans le véhicule sans soucis et à le faire rouler, mais je fais comment pour que l'IA n'apparaisse qu'à disons 1h00 du matin??? début de mission minuit


--------------------
A FLUCTIBUS OPES
VENI,VIDI,VICI



NO TREPASSING-VIOLATORS WILL BE SHOT-SURVIVORS WILL BE SHOT AGAIN
Go to the top of the page
 
+Quote Post
BALLA
posté jeudi 11 février 2016 à 21:24
Message #2


***
Petite brise

Groupe : Membres
Messages : 126
Inscrit : 02/01/2010
Membre no 15499



tout dépend.

qui peut le plus peut le moins, donc voilà un petit script qui te permettra de créer un camion avec des unités de renforts qui seront déchargées là ou tu le souhaites.

Avant tout, il faut savoir que toute partie lancée lit automatiquement plusieurs fichiers, s'ils sont présents dans la mission.
L'un d'eux, dont on se sert pour appeler en cascade les scripts persos, est l'init.

Il faut donc créer un init.sqf (fichier texte) dans ton dossier de mission (qui se trouve par défaut dans tes documents, arma 3, missions...). Ce dossier se crée
dès que tu as enregistré ta mission dans l'éditeur. A faire donc de suite, pour pouvoir placé ses fichiers scripts.

Nous allons créer également un creation.sqf (toujours en fichier texte), qui lui va contenir le code qui va nous permettre de faire ce que je t'ai décrit plus haut.

Dans l'éditeur, il faut placer deux marqueurs.
Le premier avec le nom start, sera le lieu où l'on va créer nos unités.
Le second avec le nom end, qui marque le lieu d'arrivée.
Pose des marqueurs par défaut, sans forme ni couleur, ils ne servent que de balise et n'ont pas besoin d'être vu par les joueurs sur la map.

Nous allons posé quelque part sur la map un soldat Opfor, tout seul, dans un coin, qu'on ne croisera jamais et qui ne sert qu'a éviter quelques lignes de code.
S'il n'existait pas, il faudrait créer un centre, puis créer un camp, en ligne de commande.

Bien, tout d'abord, le code dans l'init.sqf qui appellera automatiquement le creation.sqf (pour info, une ligne qui commence par // est une ligne de commentaire)
Code
//seul le serveur lance le script
if (isServer) then {
null = [] execVM "creation.sqf"
};

Ici on lance creation.sqf en gérant ce qu'on appelle la localité. c'est à dire que seul le serveur lance le script.
init.sqf est lancé en début de partie par chaque entité (joueur) et le serveur. Ici le if limite donc l'appel à une seule fois, celle du serveur.

et voici le code du creation.sqf
Code
//temporisation en seconde (donc 3600 si tu veux attendre une heure)
sleep 10;

//creation de deux groupes (conducteurs et troupes dans le camion)
//cela ne crée rien, juste les "containers" groupe prêts à recevoir nos unités créées après
_g1 = createGroup east;
_g2 = createGroup east;
//la création de groupe est possible seulement s'il existe un camp qui lui existe s'il existe un centre
//d'où le positionnement d'un soldat Opfor dans l'éditeur
//ATTENTION on ne peut créer de groupes que pour le même camp de l'unité posé dans l'éditeur, si un civil a été posé
//tout le code ne marche pas!

//on recupere la position des deux marqueurs posés dans l'editeur
_posdepart = getMarkerPos "start";
_posarrivee = getMarkerPos "end";

//creation d'un camion decouvert au point de départ avec son pilote
[_posdepart,0,"O_Truck_02_transport_F",_g1] call BIS_fnc_spawnVehicle;
//recuperation de l'unité et du nom du véhicule créés
_leader = leader _g1;
_vehicule = vehicle _leader;

//creation d'un groupe de soldat que l'on place dans la foulée en passager du camion
_g2 = [_posdepart,EAST,["O_soldier_SL_F","O_soldier_TL_F","O_soldier_AR_F","O_soldier_GL_F","O_medic_F","O_soldier_AR_F","O_soldier_F","O_soldier_F","O_soldier_GL_F","O_soldier_F"]] call BIS_fnc_spawnGroup;
{_x moveInCargo _vehicule} forEach units _g2;

//assignation au conducteur d'un point de passage de type 'c'est tranquille' pour aller décharger les troupes (TR UNLOAD) (il existe nombre de type de waypoint)
//en effet, en mode safe, les conducteurs prennent automatiquement les routes pour faire leurs transits
//ce qui n'est pas le cas s'ils sont en mode combat !

_wp = _g1 addWaypoint [_posarrivee , 0];
_wp setWaypointType "TR UNLOAD";
_wp setWaypointCombatMode "RED";
_wp setWaypointSpeed "NORMAL";
_wp setWaypointBehaviour "SAFE";

//autre paramètre du waypoint : regle d'engagement, feu a volonté. vitesse de déplacement normale.


Pour info, on ne peut créer une unité que si elle appartient à un groupe préalablement créé.
Il n'y a pas de limitation au nombre d'unité appartenant au même groupe.
Par camp, on ne peut avoir créer que 300 groupes environ. (ce qui laisse beaucoup de marge pour une mission)

Voilou, en une question, on aura balayé pas mal de points du scripting sous arma 3
fichiers d'appel, localité, forme des sqf,...

Si tu as des questions là-dessus, n'hésite surtout pas.

voici le lien sur le wiki de Bohémia concernant tout ça : syntaxe des commandes, aides en tout genre....
https://community.bistudio.com/wiki/Categor...cripting_Topics

Ce message a été modifié par BALLA - jeudi 11 février 2016 à 21:45.


--------------------
Go to the top of the page
 
+Quote Post
Nemo
posté vendredi 12 février 2016 à 16:09
Message #3


Icône de groupe
Typhon

Groupe : Membre d'Honneur
Messages : 16115
Inscrit : 07/04/2006
Lieu : Strasbourg
Membre no 2410



Super merci Balla.

Juste pour être sur
_leader = leader _g1;
_vehicule = vehicle _leader;

Leader_g1 et vehicule_leader c'est juste le nom que je donne aux véhicules dans l éditeur?


--------------------
A FLUCTIBUS OPES
VENI,VIDI,VICI



NO TREPASSING-VIOLATORS WILL BE SHOT-SURVIVORS WILL BE SHOT AGAIN
Go to the top of the page
 
+Quote Post
Sacha
posté vendredi 12 février 2016 à 16:18
Message #4


Icône de groupe
Cyclone

Groupe : In memoriam
Messages : 8278
Inscrit : 02/12/2007
Lieu : Lyon Centre
Membre no 8555



Je vois que le fiston a enfin retenu quelques unes de mes leçons sur le scriptage !

laugh.gif


--------------------
Go to the top of the page
 
+Quote Post
ybar
posté vendredi 12 février 2016 à 17:19
Message #5


Icône de groupe
Sémaphore 2018

Groupe : Sémaphore
Messages : 3228
Inscrit : 07/04/2007
Lieu : Ardennes belges
Membre no 6490



Félicitations pour cette démo du script sur Arma3
Et merci à ce bon programmeur qui doccumente généreusement ses lignes
( // infos en francais des commandes utilisées)

Ce message a été modifié par ybar - vendredi 12 février 2016 à 17:21.


--------------------
L'union fait la force - devise nationale belge - Voir les tutos sur ma chaîne Youtube (cliquez ICI )
Go to the top of the page
 
+Quote Post
BALLA
posté vendredi 12 février 2016 à 18:25
Message #6


***
Petite brise

Groupe : Membres
Messages : 126
Inscrit : 02/01/2010
Membre no 15499



Citation (Nemo @ vendredi 12 f?vrier 2016 à 15:09) *
Super merci Balla.

Juste pour être sur
_leader = leader _g1;
_vehicule = vehicle _leader;

Leader_g1 et vehicule_leader c'est juste le nom que je donne aux véhicules dans l éditeur?



Non pas du tout.
dans ton éditeur, pour l'instant, tu as seulement 4 choses :
ton unité joueur,
un opfor quelque part au bout de la map,
deux marqueurs, un avec le nom start et l'autre end.

ces deux lignes de codes n'ont pour seul but que de connaitre le nom du véhicule piloté par l'unité du groupe _g1.
C'est ce nom qu'on utilise dans les lignes suivantes pour mettre en passager toutes les unités du second groupe créé, _g2.
Groupe qui sera "déchargé" au point d'arrivée.


--------------------
Go to the top of the page
 
+Quote Post
Nemo
posté vendredi 12 février 2016 à 19:41
Message #7


Icône de groupe
Typhon

Groupe : Membre d'Honneur
Messages : 16115
Inscrit : 07/04/2006
Lieu : Strasbourg
Membre no 2410



Ok je fais mon boulet les soldats c'est "O_soldier_SL_F" ça m'apprendra à pas lire..


--------------------
A FLUCTIBUS OPES
VENI,VIDI,VICI



NO TREPASSING-VIOLATORS WILL BE SHOT-SURVIVORS WILL BE SHOT AGAIN
Go to the top of the page
 
+Quote Post
Nemo
posté dimanche 14 février 2016 à 15:49
Message #8


Icône de groupe
Typhon

Groupe : Membre d'Honneur
Messages : 16115
Inscrit : 07/04/2006
Lieu : Strasbourg
Membre no 2410



Ok autre question dans mon init j'ai ça pour lancer briefing.sqf

Code
execVM "briefing.sqf";
if(isNil "paramsArray") then {
    paramsArray = [
        5,             // Nombre de vie
        0,             // Perdre vie si réanimé
        0             // Perdre vie si respawn base
    ];
};

ADO_REVIVE_PARAM_life             = paramsArray select 0;
ADO_REVIVE_PARAM_revive         = paramsArray select 1;
ADO_REVIVE_PARAM_respawnBase    = paramsArray select 2;

execVM "ADO_Revive\ado_revive_init.sqf";


Dans mon briefing.sqf
Code
waitUntil { !isNil {player} };
waitUntil { player == player };

player createDiaryRecord ["Diary", ["Renseignements", "Le rendez vous entre Miller et Carlors est prévue à 00h45  L'UAV est prêt de l'épave de la CIA"]];


//Task1 - COMMENT
task_1 = player createSimpleTask ["Récupérer l'UAV"];
task_1 setSimpleTaskDescription ["votre objectif est de récupérer l'uav sur l'épave de la cia","Récupérer l'UAV","Récupérer l'UAV"];
task_1 setSimpleTaskDestination (getMarkerPos "task1");
task_1 setTaskState "assigned";
player setCurrentTask task_1;

//Task2 - COMMENT
task_2 = player createSimpleTask ["Récupérer l'ordinateur"];
task_2 setSimpleTaskDescription ["Récupérer l'ordinateur dans la maison de Carlos","Récupérer l'ordinateur","Récupérer l'ordinateur"];
task_1 setSimpleTaskDestination (getMarkerPos "task2");
task_2 setTaskState "assigned";
player setCurrentTask task_2;

//Task3 - COMMENT
task_3 = player createSimpleTask ["Récupérer les documents"];
task_3 setSimpleTaskDescription ["Récupérer les documents dans la maison de Carlos","Récupérer les documents","Récupérer les documents"];
task_1 setSimpleTaskDestination (getMarkerPos "task3");
task_3 setTaskState "assigned";
player setCurrentTask task_3;


et fail ça ne marche pas...


--------------------
A FLUCTIBUS OPES
VENI,VIDI,VICI



NO TREPASSING-VIOLATORS WILL BE SHOT-SURVIVORS WILL BE SHOT AGAIN
Go to the top of the page
 
+Quote Post
BALLA
posté dimanche 14 février 2016 à 16:05
Message #9


***
Petite brise

Groupe : Membres
Messages : 126
Inscrit : 02/01/2010
Membre no 15499



C'est à dire, ça ne marche pas ?

le briefing ? le revive ado ?

Y a t'il un message d'erreur qui survient ?


--------------------
Go to the top of the page
 
+Quote Post
Nemo
posté dimanche 14 février 2016 à 16:07
Message #10


Icône de groupe
Typhon

Groupe : Membre d'Honneur
Messages : 16115
Inscrit : 07/04/2006
Lieu : Strasbourg
Membre no 2410



le brief en fait je n'ai aucune tache....

Revice fonctionne bien


--------------------
A FLUCTIBUS OPES
VENI,VIDI,VICI



NO TREPASSING-VIOLATORS WILL BE SHOT-SURVIVORS WILL BE SHOT AGAIN
Go to the top of the page
 
+Quote Post
BALLA
posté dimanche 14 février 2016 à 19:23
Message #11


***
Petite brise

Groupe : Membres
Messages : 126
Inscrit : 02/01/2010
Membre no 15499



Citation (Nemo @ dimanche 14 f?vrier 2016 à 15:07) *
le brief en fait je n'ai aucune tache....

Revice fonctionne bien



enlève les deux lignes :
Code
waitUntil { !isNil {player} };
waitUntil { player == player };


Ce sont elles qui empêchent la mise en oeuvre du briefing.


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : jeudi 28 mars 2024 à 20:27