39-45 Stratégie > Jeux vidéo > Theatre of War > Theatre of War > Tutoriel de l'éditeur > Les scripts > Partie E 

Scripts : Partie E

Dans cette partie, nous vous proposons différents types de scripts avancés.

Voici un script d'accrochage, par Stimo

Accrochage des canons

Il est en deux parties :

- un bout de script dans le trigger principal, qui indique qui accrocher à quoi :

// ACCROCHAGES
Set @numero = 0 // Pas toucher. Sert à identifier les TriggerInstance

// accrochage des canons aux tracteurs

Add ( @numero , 1 ) // Pas toucher : incrémentation automatique des TriggerInstance
Set @armee = 2 // Le n° d'armée du canon et du tracteur
Set @groupe_tracteur = "Ger_Tracteur_1" // le nom de groupe du tracteur
Set @groupe_canon = "Ger_Pak_1" // Le nom de groupe du canon
Set @groupe_equipage = "Main_1" // Le nom du groupe de l'équipage du canon
RunTriggerInstance ( "accrochage" , @numero , @armee , @groupe_tracteur , @groupe_canon , @groupe_equipage )

Petite pause pour expliquer ça, parce que c'est pas ce qu'il y a de plus facile à comprendre dans les scripts ToWesques :

La fonction RunTriggerInstance va lancer un trigger indépendant et unique qui porte un nom (ici accrochage) et un numéro (ici, celui qui est contenu dans la variable @numéro, en l'occurence 1).
L'accrochage du premier canon sera donc géré par un trigger créé pour l'occasion et qui sera nommé accrochage1.

Le script des TriggerInstances est celui du modèle accrochage donné plus bas.

Ensuite, viennent les noms des variables dont a besoin le TriggerInstance : armee concernée, tracteur, canon, servants.


Delay ( 5000 ) // On lui laisse un peu de temps pour démarrer son accrochage avant d'ordonner celui de son voisin.

On peut ajouter autant de ces blocs que l'on veut...

Add ( @numero , 1 )
Set @armee = 2
Set @groupe_tracteur = "Ger_Tracteur_2"
Set @groupe_canon = "Ger_Pak_2"
Set @groupe_equipage = "Main_3"
RunTriggerInstance ( "accrochage" , @numero , @armee , @groupe_tracteur , @groupe_canon , @groupe_equipage )


Le second canon sera accroché par le trigger accrochage2 et ainsi de suite.

Delay ( 5000 )

(ad lib...)

- un trigger unique et indépendant qui sert de base à un TriggerInstance par accrochage.
Ce trigger est nommé accrochage


Param In @armee // transfert des noms de groupes au TriggerInstance
Param In @groupe_tracteur
Param In @groupe_canon
Param In @groupe_equipage

SetWorkArmy ( Army , @armee )


Set @unite_tracteur = GetUnitID ( Group , @groupe_tracteur , 1 ) // Récupération du numéro d'unité du tracteur
Set @unite_canon = GetUnitID ( Group , @groupe_canon , 1 ) // Récupération du numéro d'unité du canon

Ces numéros d'unités sont indispensables à la commande ATTACH car seule une UNIT peut être prise en remorque.

Label accrochage
RunCommand ( Unit , @unite_tracteur , Attach , Unit , @unite_canon ) // Ordre d'accrochage
Delay ( 5000 )
Set @ordre = GetCurrentCommand ( Unit , @unite_tracteur ) // On demande au tracteur quel est l'ordre qu'il suit à cet instant...

Tant que le canon n'est pas accroché, le camion a un ordre ATTACH. Lorsque le canon est accroché, le camion passe automatiquement en mode DEFEND.
On interroge donc le tracteur pour détecter quand l'accrochage est terminé.


if ( @ordre = "ATTACH" ) Then //Tant que le camion est en mode ATTACH...
GoTo accrochage // ... on lui répète son ordre d'accrochage...
Endif

// ... on n'arrive donc ici que lorsque le canon est accroché et que le camion est passé en mode DEFEND

Label embarquement // On va faire embarquer les servants du canon dans le tracteur.

On utilise le fait que dans ToW, les humains qui sont membres d'un groupe ne font plus partie de leur groupe lorsqu'ils embarquent dans un véhicule.
Ils seront à nouveau comptés dans leur groupe lorsqu'ils débarqueront.


RunCommand ( Group , @groupe_equipage , In_Crew , Unit , @unite_tracteur ) // On ordonne au groupe de servants (qui ne contient plus que ceux qui n'ont pas encore embarqués) de monter à bord du tracteur
Delay ( 10000 ) // On leur en laisse le temps

Set @dehors = GetNUnits ( Group , @groupe_equipage , Human ) // On compte les servants du canon qui n'ont pas encore embarqué

If ( @dehors > 0 ) Then // Tant qu'il reste des servants dehors...
Goto embarquement // ... on leur répète l'ordre d'embarquer
Endif
On n'arrive ici que si tous les servants ont embarqués
Halt

Notez que ce script fonctionne même sous le feu et si des servants sont tués pendant l'opération.
La répétition systématique des ordres permet d'éviter que les soldats gérés par l'IA ne suivent leur fâcheux penchant à monter au feu plutôt qu'à suivre l'ordre qu'on leur a donné.

 
Retour au sommaire !