script "Patrols.sqf" © Pumpkin

 

 


Script de patrouille aléatoire avec comportement amélioré :

C'est assez pénible pour un créateur de mission de savoir exactement le chemin qu'emprunte les patrouilles : le suspens, l'immersion,... sont grandement amoindris. On peut cependant créer des patrouilles avec un chemin plus ou moins aléatoire dans l'éditeur (rayon de position aléatoire des points de passage), mais, en cas d'attaque, on pourra observer des aberrations de comportement, comme une patrouille qui passe tranquillement à côté d'une escouade alliée qui se fait attaquer, sans lever le petit doigt (vers la gachette, entre autre). C'est là l'utilité du script : permettre à toutes les patrouilles d'un secteur de patrouiller aléatoirement et d'interagir entre elles : Si une patrouille se fait attaquer ou repère un ennemi, toutes les patrouilles du secteur seront averties, se mettront en mode combat, et pourront éventuellement rejoindre en renfort la patrouille qui a déclenché l'alerte. A noter que l'alerte a une durée limitée, ce qui permet un retour à la normale au bout d'un moment.

Le secteur de patrouille est déterminé par un déclencheur, peu importe la forme ou la taille (pas trop petit sinon la patrouille restera quasiment sur place, ou trop grand sinon vous n'aurez que peu de chance de la rencontrer). Si la zone (et donc le déclencheur) empiéte sur une étendue d'eau, la patrouille ne s'y dirigera pas; on peut donc,par exemple, placer un déclencheur unique au milieu d'un port, la patrouille n'ira pas faire trempette.

Les secteurs de patrouille peuvent se recouvrir : si une patrouille provenant d'un secteur A entre dans un secteur B, elle sera intégrée au secteur B en tant qu' "alliée", et en cas d'attaque de cette patrouille, les patrouilles du secteur B viendront à la rescousse. On peut aussi "attaché" plusieurs patrouilles a un même secteur, de façon à obtenir une interaction entre plusieurs patrouilles de plusieurs secteurs. Gaffe tout de même à ne pas exagérer ! Les ennemis sont sacrément hargneux et même 5 ou 6 bons soldats n'ont jamais tenu bien longtemps en face de 30 ou 40 ennemis qui leur tombent dessus en même temps.

D'autre part, je trouvais anormal qu'on puisse se cacher dans une maison sans jamais être inquiété. J'ai essayé de faire en sorte que, lorsqu'une patrouille passe à proximité de la maison où vous vous êtes planqué, il y a une chance que le chef de patrouille désigne un gars pour aller voir si d'aventure il n'y aurait pas un ennemi (donc vous !) sournoisement planqué dedans; ce n'est pas systématique mais c'est un risque !


Installation

  1. Copier le script "Patrols.sqf" dans le répertoire de la mission

    Dans l'éditeur :

  2. Créer un déclencheur sur la zone de la patrouille et le nommer (zone grise dans l'exemple ci-dessous, nommé "tcherno_patrol1")

    il peut être elliptique ou rectangulaire, et orienté selon le bon vouloir du créateur de mission. Peu importe les autres paramètres du déclencheur, seule compte la taille ('Axe a' et 'Axe b'), l'angle, la forme et le nom. Le texte est optionnel et ne permet qu'au créateur de mieux s'y retrouver (dans l'exemple le texte est égale au nom du déclencheur, soit "tcherno_patrol1", mais, je le répète, il n'a aucune importance et peut être vide)

  3. mettre la ligne de lancement du script dans le champ initialisation du leader de la patrouille

    exemples :

    CODE:

    nul = [this,tcherno_patrol1] execVM "patrols.sqf"

    nul = [this,tcherno_patrol1,150,"patrol_strt1","patrol_dest1"] execVM "patrols.sqf"
    nota : la 1ère ligne est un exemple d'appel simplifié avec les 2 paramètres obligatoire, la 2ème contient tous les paramètres, y compris la désignation des 2 marqueurs de débuggage, qui se trouve en bas à droite dans la mission d'exemple (2 marqueurs pour la 1ère patrouille, 2 marqueurs pour la 2ème patrouille)

Paramètres

[chef_de_groupe, libellé_du_déclencheur (, distance_de_convergence_sur_objectif , "nom_du_marqueur_départ", "nom_du_marqueur_fin")] execVM "Patrols.sqf" (ne pas oublier de faire précéder par 'nul = ' dans l'éditeur, sinon ce brave éditeur hurle à l'erreur "type script, rien attendu")

exemples :

CODE:

nul = [this,tcherno_patrol1] execVM "patrols.sqf"
patrouille dans la zone du déclencheur nommé "tcherno_patrol1"

CODE:

nul = [this,tcherno_patrol1,300] execVM "patrols.sqf"
patrouille dans la zone du déclencheur nommé "tcherno_patrol1", renfort uniquement si une attaque ou un ennemi est repéré à 300m de distance.

CODE:

nul = [this,tcherno_patrol1,150,"patrol_strt1","patrol_dest1"] execVM "patrols.sqf"
patrouille dans la zone du déclencheur nommé "tcherno_patrol1", renfort si une attaque ou un ennemi est repéré à 150m de distance (valeur par défaut), avec mode de débuggage activé : déplacement suivis par les marqueurs "patrol_strt1" et "patrol_dest1"

Les missions d'exemples

Vous êtes un sniper sur le toit d'un bâtiment. Il y a une patrouille au Nord-Est, au bout de la rue. Après le temps d'initialisation (environ 10s), durant lequel il ne faut rien faire, vous pourrez tester le comportement des deux patrouilles présentes et les observer. Vous pouvez tuez les soldats ennemis en leur tirant dessus, bien évidemment, mais j'ai aussi intégré la mort spontané d'un soldat par un ordre radio, afin de simuler un "head-shoot" sans se faire repéré. Nota important : vous êtes invincible ! Vous n'êtes pas considéré comme captif, car cela fausserai le comportement des patrouilles; vous encaisserez les bastos sans broncher, et vous pourrez sauter les immeubles de 20m sans vous egratigner.

Il y a une mission d'exemple côté Ouest (BLUFOR) et côté Est (OPFOR), de façon à comparer ce qui se modifie en fonction du camp (en fait, quasiment rien. En ce qui concerne le script "patrols.sqf", seules les unités changent)

Autre petit chose indispensable pour mes tests : observer chacun des ennemis individuellement et suivre leur traque pas à pas. J'ai donc aussi intégré quelques uns de mes outils de débugage habituels, plus ces "vues ennemies". Pour les codeurs/créateurs de mission que cela intéresse, j'ai un petit répertoire "debug\" dans lequel il y a "initddebug.sqf" qui met en place le menu de débugage (= options du menu précédées par une *) et les deux scripts nécessaires, "miniheadcam2.sqf" et "keyspressed.sqf". Au niveau de l'éditeur, il suffit de créer un "gros" déclencheur (style 2000x2000, 5000x5000, voir plus) englobant toute la zone, avec comme 'Activation' le camp à observer (OPFOR ou BLUFOR), type 'présent', condition 'true', sur activation 'MHC2_units = thislist' ("MHC2_units" étant la variable utilisée dans le script "miniheadcam2.sqf").

Pour débuggage également, il y a 4 marqueurs "patrol_strt1", "patrol_dest1", "patrol_strt2", "patrol_dest2", qui permettent de suivre sur la carte les déplacements des deux patrouilles.

Bonne édition !