Accueil
Accueil

Bienvenue invité ( Connexion | Inscription )

2 Pages V  1 2 >  
Reply to this topicStart new topic
> Lua Script, Lib de fonctionnalites
Galevsky
post 3 Mar 2014, 14:36
Message #1




Born to fly, fly to feel alive !

Messages : 3,001
Inscrit : 26/10/05
Lieu : Antibes
Membre n° 282

Conjointement avec Etcher, et autres contributeurs si il le souhaitent, on va mettre sur pied un ensemble de fonctionnalites lua qui permettront d'ajouter des fonctionnalites en script lua pour rendre les missions:
  • Plus adaptables, en generant des unites qui tiennent compte notamment du nombre d'humains sur la missions afin de s'affranchir du besoin d'edition manuelle
  • Plus dynamiques, avec des comportement de l'IA qui prend en compte la sitac au sens large
  • Plus faciles, afin de rendre a la portee des possibilites de fonctionnalites qu'aujourd'hui peu de createurs de missions disposent.
Principe:

Basee sur Mist, notre bibliotheque sera une extension, et un simple fichier execute au lancement de la mission. On va commencer par recenser les besoins et les acquis car on a deja pas mal de choses.

Je commence pour ma part:


Utils

getRandomLocationInArea(prefix)
Renvoi un point en 2D choisi de maniere aleatoire parmi le/les zones dont le nom commence par le prefix en parametre.
ex: getRandomLocationInArea('rescue') renverra un point se trouvant a l'interieur de l'une des zones dont le nom commence par 'rescue'.

L'usage de cette fonction, c'est typiquement une mission CSAR, ou pour rendre une mission rejouable a l'infini en generant des unites jamais au meme endroit.

getRandomLocationInSector(origin, radiale_min, radiale_max, distance_mini, distance_max)
Renvoi un point en 2D choisi de maniere aleatoire dans un secteur par rapport a un point d'origine.
ex: getRandomLocationInSector(origin, 90, 180, 70, 110) renverra un point aleatoire situee entre les radiales 90 et 180 du point d'origine, et a une distance comprise entre 70 et 110km.
On peut prevoir de simplifier un appel getRandomLocationInSector(origin, 90, 90, 110, 110) par
getRandomLocationInSector(origin, 90, 110)

getClosestAB(origin, [type])
Renvoi l'ID de la BA la plus proche du point origin et du bon type si specifie( sinon ca renvoie la base peut-importe sa couleur). type choisi parmi {'FRIEND', 'FOE', 'NEUTRAL', 'FRIEND_NEUTRAL', 'FOE_NEUTRAL'}

getHumanNb([type], [side])
Renvoi le nombre d'appareils pilotes par des humains, avec le type d'appareil en option, ainsi que le side parmi {'RED','BLUE'}
ex: getHumanNb('F-15C') renverra le nombre de F-15C humain dans la partie actuellement.


CSAR


generateEjectedPilot(prefix, nb_km)
Cree un pilot au sol dans une des zones dont le nom commence par prefix et qui tirera une smoke orange si une unite amie entre dans un cercle de nb_km km


A2A

leadUnit(groupId)
Ajoute dans le menu F-10 un certaine nombre d'actions que le groupe executera.
  • reprendre la route initiale
  • prendre un CAP N/E/S/W
  • prendre un niveau de vol de XXXX
  • prendre une vitesse de XXXXX
  • orbiter sur la position courante
  • follow me
Typiquement pour toutes les missions MASA, Escorte et autres.

generateGAI(BA_ID, country, [difficulty])
Ajoute sur la base BA_ID des chasseurs en mission Fighter Sweep, avec des unites du pays country dont le type et le nombre est determine en fonction de la difficulte diffculty parmi {'easy', 'normal', 'hard'} (par default, difficulty='normal').


generateTraffic(BA_ID_DPT, BA_ID_ARR, COUNTRY)
Ajoute un vol d'une base vers l'autre en mission de type nothing, pour une unite choisie au hazard.

SUPPORT

callAWACS([nb_escort], [type_escort])
Accessible via menu F-10 dans un menu Support, fait decoller un AWACS depuis la base amie la plus proche pour aller orbiter sur la zone la plus proche dont le nom commence par 'awacs' (ou AWACS), et si il n'en trouve pas, il ira orbiter a mi-chemin entre la localisation de l'unite qui fait la demande et la BA de depart.
ex: callAWACS(3, 'Su-27') fera decoller un AWACS avec 3 SU-27 en mission d'escorte.

callTanker([nb_escort], [type_escort])
Accessible via menu F-10 dans un menu Support, pareil que pour l'AWACS, mais avec un tanker qui correspond a l'unite humaine qui en fait la demande. Et bien sur on choisit d'abord parmi les zones dont le nom commence par 'tanker' (case non-senstive)


callEscort(nb_escort, type_escort)
Accessible via menu F-10 dans un menu Support, fait decoller des appareils pour mission d'escorter l'unite humaine qui en fait la demande.

fireSmoke()
Permet a un humain ejecte d'allumer une smoke orange sur sa position (passage par une unite genere au lieu d'ejection si pas possible avec le pilote ejecte et une detection par zone du CSAR)




to be continued...





Ce message a été modifié par Galevsky - 3 Mar 2014, 15:51.

--------------------
Image IPB Image IPB

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
DArt
post 3 Mar 2014, 15:37
Message #2




I am LotAtc

Indicatif : JR-01
Messages : 6,280
Inscrit : 30/11/06
Lieu : Savoie
Membre n° 999

Je peux fournir du lua pour faire des chronométrages wink.gif

--------------------

Image IPB

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Galevsky
post 3 Mar 2014, 16:19
Message #3




Born to fly, fly to feel alive !

Messages : 3,001
Inscrit : 26/10/05
Lieu : Antibes
Membre n° 282

c-a-d ? dis-nous en plus... cowboy.gif

Toute contribution est bienvenue !!

--------------------
Image IPB Image IPB

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Galevsky
post 19 Jun 2014, 15:34
Message #4




Born to fly, fly to feel alive !

Messages : 3,001
Inscrit : 26/10/05
Lieu : Antibes
Membre n° 282

Un tuto geant sur l'edition de mission est a venir avec ses bonnes pratiques, avec en prime des exemple tres concrets concernant les fonctionnalites dynamiques suivantes:


Trigger: comment creer des evenements declencheurs

# Bases sur le temps
- comment declencher X minutes apres le lancement de la partie
- comment declencher a une heure precise
- comment declencher de maniere aleatoire entre tel et tel duree apres le lancement de la partie
- comment declencher a partir d'une certaine duree a partir d'un certain evenement anterieur

# Bases sur une zone
- comment declencher si des unites entre sur un territoire
- comment declencher si plus aucune unites se trouve sur un territoire
- comment declencher si une BA est capturee
- comment declencher si des unites sont a telle distance d'une autre unite
- comment declencher si des unites sont a telle distance d'un point fixe

# Bases sur les unites elles-memes et leur etat
- comment declencher si une unite meurt
- comment declencher si le niveau de vie d'une unite atteint telle valeur
- comment declencher si une unite atteint telle vitesse
- comment declencher si une unite atteint telle altitude
- comment declencher si une unite est au niveau du sol

Action: comment creer tous types d'actions differentes
- comment generer une smoke
- comment generer une fusee de detresse
- comment generer une explosion
- comment generer un/des fantassin(s) au sol qui vont monter a bord/debarquer d'un helico
- comment activer une unite (apparition dans le jeu)
- comment activer une unite qui somnolait (deja presente physiquement mais immobile)
- comment activer une unite dans un endroit aleatoire
- comment assigner une nouvelle destination a une unite
- comment rendre le plan de vol d'une unite au sol en boucle


Pour certaines d'entre elle, pas besoin de lua, le Mission Editor suffit, pour d'autre le script lua sera necessaire: une ligne sera suffisante pout chaque action, pour rester simple. On ne peut pas tout faire, mais 90% des besoins seront couverts.

Si vous voyez des besoins, dites-le.


Ce message a été modifié par Galevsky - 19 Jun 2014, 16:09.

--------------------
Image IPB Image IPB

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Galevsky
post 21 Jun 2014, 14:21
Message #5




Born to fly, fly to feel alive !

Messages : 3,001
Inscrit : 26/10/05
Lieu : Antibes
Membre n° 282

Voilà le tuto:

http://dcs-tools.com/brief/tuto-edition.php

C'est pas fini, je vais détailler toutes les options intéressantes suivant les différents types de mission, ainsi que le fameux annuaire de triggers, mais cette première mission guidée pas-à-pas est faite pour commencer à faire des missions MP simples, tout étant valide pour le MP.

Si des gens veulent relire, identifier les points où j'irais un peu trop vite, discuter de ce qu'ils feraient différemment, ce serait super sympa.

--------------------
Image IPB Image IPB

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Boulling
post 21 Jun 2014, 14:53
Message #6






Indicatif : FX-04
Messages : 1,044
Inscrit : 27/04/14
Lieu : Nantes
Membre n° 4,087

Merci! Je lis ça ce soir et je te donne mon retour!

Je sens que ça va m'être utile!

Édit: La méthodologie est bonne, tout est clair, bon boulot! thumbsup.gif

Ce message a été modifié par boulling - 22 Jun 2014, 09:59.

--------------------

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Goztreh
post 21 Jun 2014, 14:57
Message #7




Missa Bombardé Colonel

Indicatif : BA-03
Messages : 1,958
Inscrit : 16/04/13
Membre n° 4,014

Bon boulot Galevsky! thumbsup.gif

Dans les petits détails à apporter:

- Section 3.2 Meteo: J'utilise souvent ce lien pour les heures de lever et coucher de soleil. DCS Calender

- Section 3.3 ENI IA: Le FighterSweep fonctionne très bien en SP. En MP par contre, dans le meilleur des cas les appareils engagent l'avion du hosteur et les autres IA. Sur un dédié, cette fonction est inutile. Je lui préfère l'utilisation de la fonction CAP. Bien plus agressive envers TOUS les avions en vol sans distinction. Je leur place aussi une fonction orbit sur le premier waypoint de manière à ce qu'ils restent en l'air un maximum de temps.

Il y a une petite faute 'au lâcher de pose', je n'arrive plus à la retrouver...

Goz.

--------------------
Golf Oscar Zoulou

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Skander
post 21 Jun 2014, 15:02
Message #8



 


Indicatif : KO-11
Messages : 672
Inscrit : 18/02/07
Lieu : Anglet
Membre n° 1,480

Très bon boulot en effet ! thumbsup.gif
Très utile.

--------------------
Ceux qui arrivent en retard sont de bien meilleure humeur que ceux qui les attendent... (Confucius Mercapide 1954 ap J.C.)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Skander
post 16 Sep 2016, 19:24
Message #9



 


Indicatif : KO-11
Messages : 672
Inscrit : 18/02/07
Lieu : Anglet
Membre n° 1,480

Déterrage... laugh.gif

Ton tuto n'est plus disponible, Gal ?
wink.gif

--------------------
Ceux qui arrivent en retard sont de bien meilleure humeur que ceux qui les attendent... (Confucius Mercapide 1954 ap J.C.)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Galevsky
post 17 Sep 2016, 12:21
Message #10




Born to fly, fly to feel alive !

Messages : 3,001
Inscrit : 26/10/05
Lieu : Antibes
Membre n° 282

non faudrait que je le remette

--------------------
Image IPB Image IPB

User is offlineProfile CardPM
Go to the top of the page
+Quote Post

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

Haut de page · Retour à l'accueil · Contacter le Webmestre Nous sommes le : 10/11/24 - 18:54