Système TeamSpeak du Réseau Jeux-Strategie.com Abonnez-vous à nos flux RSS Mur du Réseau Jeux-Strategie.com
 

      

Guide de création des events

Créé le : 11 September 2004

Edition du : 27 October 2004

Auteur : Namspopof


 

Table des matières

  • 1. Introduction.
  • 1.1 Les Events et leurs choix possibles
  • 1.2 Pays, provinces, chefs et ministres aléatoires
  • 2. Les fichiers des Events
  • 3 Structure d’un Event
  • 3.1 Id
  • 3.2 Trigger (déclencheur)
  • 3.2.1 Conditions pour combiner un Trigger
  • 3.2.2 Trigger Conditions
  • 3.3 Evénements aléatoires (Random)
  • 3.4 Evénements répétitifs (Persistent)
  • 3.5 Déclaration d’un pays
  • 3.6 Nom d’un Event
  • 3.6.1 Event par l’AI (AI_EVENT)
  • 3.7 Commande DESC
  • 3.8 Commande Style
  • 3.9 Date, offset et deathdate
  • 3.10 Action
  • 3.10.1 Mode de calcul en pourcentage du déclenchement d’un Event par l’AI
  • 3.10.2 Commandes diverses
    Diplomatie et politique | Affaires internes | Ministres et chefs militaires| Unités et installations militaires | Autres commandes
  • 3.11 Utilisation des flags dans les Events
  • 4.0 Exemples

 

1. Introduction

Il est possible de mettre en application des événements complexes dans HoI en employant un langage couramment appelé script d’Event. Les événements peuvent être faits pour se produire pour un pays précis et/ou à certaines dates, avec des choix multiples possibles.


1.1 Events and alternatives


La plupart des Events a deux choix possibles sinon plus. La convention de base doit placer l'alternative historique choisie en premier. Le premier choix sera choisi par l’AI dans la plupart des jeux (mais pas tous). Cela pour s’assurer que l’AI prendra la plupart du temps le choix historique en (après tout, c'est un jeu d'histoire).
Quelques Events traitent de pays annexés à d’autre. La chose importante à se rappeler ici est de toujours laisser une porte de sortie différente pour un joueur humain ! Tu dois donc inclure un Event à choix pour le pays allant être annexé, où dans la plupart des cas l’AI acceptera, mais un joueur humain pourrait refuser. Un bon exemple de ce cas est l'événement autrichien d'"Anschluss", où l'Allemagne dans la plupart des jeux annexe l'Autriche :


event = {
id = 2100
random = no
country = AUS

# Triggered by GER 2020

name = "EVT_2100_NAME"
desc = "EVT_2100_DESC"
style = 0

action_a = {
name = "ACTIONNAME2100A"
# Become part of the Greater Reich (Game Over)
command = { type = trigger which = 2001 } # GER
}
action_b = {
name = "ACTIONNAME2100B" # Join the Axis
command = { type = alliance which = GER }
command = { type = alignment which = fascist value = 200 }
command = { type = access which = GER }
command = { type = dissent value = 10 }
command = { type = trigger which = 2002 } # GER
}
action_c = {
name = "ACTIONNAME2100C" # Austria shall remain independent
command = { type = dissent value = 40 }
}
}


Dans cet Event, l’AI choisira très probablement de rejoindre l'Allemagne, alors qu'un joueur humain peut l’éviter.


1.2 Pays, provinces, chefs et ministres aléatoires


Tu peux préciser les pays, les provinces, les chefs et les ministres de façon aléatoire dans un événement en remplaçant le numéro d'identification avec '- 1 ', dans certains cas '- 2 '(se référer à la commande réelle pour ceci) ou alors '-3 '.
-1 est un id (identificateur) aléatoire, alors que -2 peut fournir un id spécial (par exemple l’id du ministre ayant la plus basse fidélité). -3 peut être utilisé comme id pour plusieurs choix aléatoires se faisant en même.


2. Les fichiers des Events


Les fichiers des Events sont les fichiers situés dans le sous –répertoire de db\events. On peut les nommer comme on le souhaite, mais il est préférable de leur donner un nom expliquant l’événement que l’on souhaite faire.
Pour avoir les événements inclus dans le scénario, ils doivent être liés. Dans le répertoire db le dossier des events s’appelle events.txt. Ce dossier est lié avec les scénarios et tient une liste des Events qui seront classés dans le jeu. Comme, par exemple :


event = "db\events\albania.txt"


Ceci lie le dossier avec les événements albanais au scénario.


3 Structure d’un Event


La structure d'un Event utilisée dans HoI est, par exemple :


event = { #Put in comments after a '#' sign. The
#rest of the line will not be read a code
id = [id]
trigger = {
[trigger conditions]
}
random = no
country = [country tag]
name = "[event name]"
desc = "[event description]"
style = 0

date = { day = 1 month = march year = 1938 }
offset = 30
deathdate = { day = 12 month = march year = 1940 }

action_a = {
name = "[action name]" # The text displayed for this option
command = { [commands] }
}
action_b = {
name = "[action name]" # The text displayed for this option
command = { [commands] }
}
}


Les diverses explications de cet Event sont décrites ci-dessous.


3.1 Id


L'id de l’Event est un nombre entier (sans décimale), et doit être unique pour chaque événement. Les id valides vont de 1 jusqu'à 4 milliards,ce qui laisse une marge appréciable de possibilité !
Example :
id = 3001
HoI emploie les id allant du nombre 1 à 5000. Toutes les identifications au-dessus de 5000 seront utilisables pour des mods spécifiques.


3.2 Trigger (déclencheur)


Des déclencheurs d’Events (triggers) sont utilisés sous certaines conditions, du fait de circonstances qui font que l’Event se passe. Ci-dessous une liste complète de tous les déclencheurs (triggers) possibles.


3.2.1 Conditions pour combiner un Trigger


Des triggers peuvent être combinés en utilisant les opérateurs logiques AND,OR et NOT. En ajoutant plus d'un état de trigger, l'opérateur par défaut est AND (pas la peine de le marquer, ce sera automatiquement compris comme opérateur AND) :


trigger = {
exists = VIC
alliance = { country = GER country = ITA }
}

C’est une action avec un choix unique, quoi que le joueur décide. La commande name indique le lien vers le fichier text.csv où on écrira le texte en rapport avec ce choix (dans ce cas, c’est à la ligne ACTIONNAME3704A que l’on écrira ce que l’on souhaite pour expliquer l’Event – par exemple : réoccupation des Sudétes par l’Allemagne). Même une action qui ne débouche sur aucune action doit être lié au fichier text.csv, doit être déclarée, sinon il y aura un conflit dans le jeu et alors bug garanti. De même, on peut écrire directement à la commande name la description de l’Event (rappel : si la description est trop longue, il y aura des problèmes aussi donc il est préférable d’écrire la description dans le fichier text.csv). Exemple: Dans cet exemple l'événement se déclenchera si une de ces conditions quelconques est rencontrées. Le troisième opérateur, NOT, est habituel pour vérifier si la condition n'est pas réunie :Ce trigger sera valide uniquement si les deux conditions sont réunies (le gouvernement de Vichy en France doit exister – le code de vichy est VIC – ET l’Allemagne et l’Italie doivent être alliée). Si tu veux que l'Event se déclenche si seulement une des conditions soit rencontré, tu devras employer OR :



trigger = {
OR = {
event = 2006
event = 2011
}
}



trigger = {
NOT = {
war = { country = GER country = FRA }
alliance = { country = GER country = FRA }
}
}


Il est important noter qu’ici le trigger se réalise uniquement si toutes les conditions ne sont pas effectives. Dans cet exemple le déclenchement est valide si l'Allemagne et la France ne sont pas en guerre et si l'Allemagne et la France ne sont pas alliées.


3.2.2 Trigger Conditions


ai = [yes/no]
Précise que le pays concerné est en AI (joueur non humain) ou pas.

alignment = [communist/fascist/democratic]
Précise quelle direction politique le pays de réception est le plus proche.

alliance = { country = [tag 1] country = [tag 2] }
Précise que les pays spécifiés sont bien allies.

atwar = [yes/no/country tag]
Précise que le pays spécifié est en guerre ou pas, ou si un autre pays est en état de guerre.

continent = [europe/america/asia/africa/oceania]
Précise que la capitale du pays spécifié est situé dans le continent adéquat.

control = { province = [province id] data = [country tag/-1] }
Précise que la province indiquée est contrôlée par le pays indiqué.

core = { province = [province id] data = [country tag/-1] }
Précise que la province X fait partie du pays spécifié.

dissent = x
Précise que la dissidence est de la valeur de x.

event = [event id]
Précise que l’événement indiqué se produit.

exists = [country tag]
Précise que le pays spécifié existe.

flag = [flag name]
Précise le flag utilisé si spécifié à ‘yes’, faux si spécifié à ‘no’ ou si aucune spécification mise. Voir ci-après pour plus d'information sur les flags.

garrison = { country = [country tag] province = [province id] size = x }
Précise que le pays spécifié à une garnison de x divisions ou plus dans la province stipulée.

government = [communist/fascist/democratic]
Précise le type de gouvernement du pays.

headofgovernment = [minister id]
Précise quel ministre est choisi comme chef du gouvernement.

headofstate = [minister id]
Précise quel ministre est choisi comme chef d’Etat.

ideology = [nazi/ fascist/ paternal_autocrat/
liberal_conservative/ centrist/ reformed_socialist/
left_wing_radical/ leninist/ stalinist]
Précise le type d’idéologie du gouvernement d’un pays.

intel_diff = x
Précise la différence entre notre niveau de renseignements (services secrets) et celui de l’ennemi, s’il est égal ou au-dessus d’une valeur x (x = notre Intel - Intel ennemi).

ispuppet = [country tag]
Précise que le pays stipulé est sous la coupe (puppet) du pays initié au départ.

leader = [leader id]
Précise que l’officier indiqué est en activité.

leader_loyalty = x
Précise la fidélité d’un officier grâce à la valeur x.

lost_VP = { country = [country tag] value = X }
Précise une valeur X% ou plus à ses propres VPs (points de victoire) quand elles sont aux mains de l’ennemi.

lost_national = { country = [country tag] value = X }
Précise une valeur X% ou plus aux provinces nationales quand elles sont aux mains de l’ennemi.

lost_IC = { country = [country tag] value = X }
Précise une valeur X% ou plus à l’IC nationale quand elles sont aux mains de l’ennemi.

major = [yes/no]
Précise le pays qui reçoit (yes) ou pas (no) ENG, FRA, GER, JAP, USA, ITA or SOV.

manpower = x
Précise ce que le pays reçoit comme manpower (main d’oeuvre nécessaire pour construire des unites ou remise à niveau).

minister = [minister id]
Précise quel ministre est activé.

minister_loyalty = x
Précise la loyauté du ministre suivant la valeur x.

owned = { province = [province id] data = [country tag/-1] }
Précise que la province spécifiée est contrôlée directement par le pays stipulé.

puppet = { country = [tag 1] country = [tag 2] }
Précise que le pays référencé tag 1 est sous contrôle (puppet) du pays référencé tag 2.

random = x
Donne une chance aléatoire (random) en % pour que l’Event se déclenche. Notez que la commande 'random = yes/no' n’est pas utilisable quand vous utilisez ceci. Voir aussi la partie 3.3 Evénements aléatoires.

technology = [tech id]
Précise que cette technologique est connu (elle est trouvée).

war = { country = [tag 1] country = [tag 2] }
Précise que le pays tag 1 est en guerre contre le pays tag2.

warentry = x
Précise le niveau de WE (Warentry – entrée en guerre) par la valeur x.

year = [date]
Précise une date.
oil = x
Précise le montant de pétrole reçu dans les stocks.

rubber = x
Précise le montant de caoutchouc reçu dans les stocks.

coal = x
Précise le montant de charbon reçu dans les stocks.

steel = x
Précise le montant d’acier reçu dans les stocks.

supplies = x
Précise le montant de ravitaillement (supplies) dans les stocks.


3.3 Evénements aléatoires (Random)


Cette déclaration indique que l'événement peut être aléatoire ou pas. Pour des événements spécifiques de pays, c'est habituellement non. Noter que tu peux mettre une probabilité aléatoire (pourcentage) pour qu'un événement non-aléatoire se produise en utilisant la commande de déclenchement 'random = [percentage]’. Voir ci-dessus. Exemple :
random = no
Les événements aléatoires sont les seuls événements, indépendamment des événements persistants (voir ci-dessous) qui peuvent se produire plus d'une fois.


3.4 Evénements répétitifs (Persistent)


Cette déclaration indique que l'événement devrait pouvoir se déclencher plus d’une fois ou pas. En plaçant dans un événement la commande persistent et au cas où l’Event ne se déclenche pas, cela permet qu’il se reproduise encore. Note : ceci signifie que l'’Event ne peut pas se faire avec la commande de déclenchement ‘event =’, car lorsqu’il y a une suite historique cela ferait double emploi et donc possibilité de bugs. Exemple :
persistent = yes


Déclare cet Event comme pouvant se reproduire plusieurs fois tant qu’il n’aura pas été déclenché réellement.


3.5 Déclaration d’un pays


Cette déclaration indique dans quel pays l’Event se passe. Il faut que le pays existe bien dans le fichier scénario (*.inc). Exemple:


country = GER

Dans ce cas, on declare l’Allemagne, code GER
Le pays peut être omis si l'événement est un événement aléatoire (voir 3.3).


3.6 Nom d’un Event


Ceci indique le nom de l'Event qui apparaît dans la fenêtre de HoI durant le jeu au moment où l’Event se déclenche. C’est une commande spécifique et se trouve aussi dans le fichier text.csv qui se trouve dans le répertoire config de HoI. Exemple:


name = "EVT_2050_NAME"

Le nom de l’Event peut aussi être directement inséré dans le fichier où l’Event se trouve.
Exemple:


name = "The Molotov-Ribbentrop Pact"


3.6.1 Event par l’AI (AI_EVENT)


Nouveau dans la version 1.03: Utiliser le nom "AI_EVENT" dans un Event ne le fera pas apparaître dans une fenêtre au cours du jeu.
Ceci peut être employé pour des événements sans choix autre qu’un constant pour l’AI. L’intérêt de cet utilisation est simplement lorsque tu souhaites ne pas nécessairement montrer tout les événements qui n’ont pas d’influence directe sur le cours du jeu (par exemple, un ministre de l’armement au Bouthan est révoqué).


3.7 Commande DESC


C'est le texte principal de l’Event qui apparaît dans la fenêtre du jeu lors de son déclenchement. C’est une commande spécifique qui se trouve aussi dans le fichier text.csv. Exemple:


name = "EVENTHIST3704"


De même que pour le nom de l’Event, on peut insérer directement le texte dans le fichier de l’Event lui-même, mais une trop grande longueur de texte peut induire des problèmes dans le bon fonctionnement du jeu. Il est donc préférable de mettre le texte dans le fichier text.csv.


3.8 Commande Style


Cette commande est en rapport avec le format de la fenêtre window des Events. Pour HoI la commande 'style = 0' est employé pour tous les événements.


3.9 Date, offset et deathdate


Ceci défini la date à laquelle l’Event apparaîtra. Si seule cette commande est utilisée, l’Event se produire à la date stipulée si les déclenchements (triggers) sont d’accord pour le réaliser. Exemple:


date = { day = 1 month = october year = 1938 }


La commande offset est une compensation en jours, démarrant toujours à la date de départ de l’Event. Cela signifie que l’Event se produire durant un jour quelconque de cette durée stipulée. Si l'Event a des triggers précis, il cherchera à se déclencher à partir de la date de départ. Exemple:


offset = 300


Dans ce cas-ci l’Event pourra se déclencher dans les 300 jours à partir de la date indiquée au départ.
Le deathdate est la date limite d'un événement, après quoi il ne peut plus être déclenché. Le rapport de deathdate est seulement utile si l'événement a un état de déclenchement. Les événements sans deathdate démarreront à tout moment si d’autres paramètres de déclenchements sont valides. Si les déclenchements nécessaires ne peuvent pas se réaliser, alors même la date de départ de l’Event ne le déclenchera pas. Si tu veux que l'Event cherche à se déclencher, il est préférable de mettre une date de fin, nommée deathdate. Exemple:


deathdate = { day = 1 month = october year = 1943 }


3.10 Action


Les rapports d'action sont les réponses à l'événement offert au joueur. Parfois, on écrit simplement "Ok", d'autres fois il y peut y avoir jusqu’à quatre réponses différentes. Les rapports d'action contiennent toujours un rapport d’action (les effets de choisir cette option, la décision) et ce que cela implique dans le choix. Exemple:


action_a ={ #Ok
name = "ACTIONNAME3704A"
command = { }
}



action_a ={ #Ok
name = "Crush the rebellion!"
command = { }
}


Quant un pays géré par l’IA (intelligence artificielle ou joueur non humain) bénéficie d’un Event à choix multiple, c’est la plupart du temps le premier choix qui sera retenu. Ceci signifie que tu devrais toujours mettre le choix historique en tant que premier choix.


3.10.1 Mode de calcul en pourcentage du déclenchement d’un Event par l’AI


Comme mentionnéci-dessus, le pourcentage que l’AI choisisse le premier choix (action a) est en moyenne de 85 % lors du déclenchement de l’Event, dans le cas oùil y aurait 4 choix possibles. Les pourcentages exacts sont :
Option Ratio %
2 options action_a 85/90 94,4%
action_b 5/90 5,6%
3 options action_a 85/95 89,4%
action_b 5/95 5,3%
action_c 5/95 5,3%
4 options action_a 85/100 85%
action_b 5/100 5%
action_c 5/100 5%
action_d 5/100 5%


3.10.2 Commandes diverses


Ci-dessous la liste de toutes les commandes valides :


Diplomatie et politique


type = access which = [country tag]

Autorise l’accès militaire à un pays.


type = addcore which = [province id]

Ajoute à un pays une réclamation d’une province d’un autre pays.


type = alignment which = communist/fascist/democratic value = x

Place l'alignement vers la faction indiquée en function de la valeur x. Les entrées valables vont de la valeur 0 à 200.


type = alliance which = [country tag]

Enters an alliance with the country specified.


type = country which = [country tag]

Modifie un pays en un autre pays.


type = coup_nation which = [country tag]

Déclenche un coup d’état dans le pays.


type = end_access which = [country tag]

Annule l’accès militaire du pays spécifié; c'est-à-dire, le pays n'obtient plus l'accès au pays initiateur de l’Event.


type = end_mastery which = [country tag]

Le pays concerné n’est plus l’état liée par alliance du pays initiateur de l’Event. Utiliser pour traduire l’émancipation d’un pays par rapport à son colonisateur (par exemple, indépendance de l’Irak vis-à-vis de la Grande-Bretagne) et ceci au niveau par exemple d’une alliance obligatoire systématique.


type = end_puppet

Enlève le statut d’état fantôche. Utiliser pour que le pays spécifié retrouve sa pleine indépendance (le pays maître initial ne peut plus récupérer les ressources de ce pays redevenu libre).


type = independence which = [country tag] value = [0/1]

Accorde l'indépendance au pays indiqué. Le pays doit être défini dans le fichier revolt.txt (situé dans le répertoire db). Si la valeur 'value = 1' les troupes dans les provinces ne seront pas assimilées au niveau pays, tandis que la valeur 'value = 0' fait que les troupes deviennent troupes nationales du nouveau.


type = influence value = x

Modifie l’influence diplomatique du pays avec la valeur x. Cette valeur peut être positive ou négative.


type = inherit which = [country tag]

Hérite (annexe) du pays spécifié.


type = leave_alliance

Fait que le pays concerné par l’Event quitte n’importe qu’elle alliance où il serait.


type = make_puppet which = [country tag]

Crée un état fantôche dans le pays spécifié.


type = peace which = [country tag] value = [0/1]

Déclenche la paix avec le pays spécifié. Si la 'value = 1' la commande donnera une paix séparée (et par conséquent le déplacement de l'alliance), alors que la 'value = 0' signifie une paix avec l’ensemble de l’alliance.


type = removecore which = [province id]

Enlève les réclamations d’un pays sur la province spécifiée d’un autre pays.


type = secedeprovince which = [country tag] value = [province id]

Attribue la province spécifié au pays spécifié.


type = war which = [country tag]

Déclaration de guerre sur le pays spécifié.


Affaires internes


type = capital which = [province id]

Déplace la capitale du pays sur la province spécifiée.


type = civil_war which = [country tag]

Démarre une guerre civile dans le pays ! Pour que cette commande ait un effet, une révolte de ce pays doit être défini dans le fichier revolt.txt (situé dans le répertoire db). Le pays qui se révolte doit être identifié avec son paramètre.


type = dissent value = x

Modifie le niveau de dissent d’un pays suivant la valeur x. Celle-ci peut être positive ou négative.


type = population which = [province id] value = x

Modifie la population d’une province spécifique suivant la valeur x. Celle-ci peut être positive ou négative.


type = province_keypoints which = [province id] value = x

Modifie la valeur du point de victoire que vaut une province spécifique avec la valeur x. Celle-ci peut être positive ou négative.


type = warentry value = x

Modifie le WE (niveau d’entrée en guerre) du pays démocratique avec la valeur x. Celle-ci peut être positive ou négative.


type = warentry which = [country tag] value = x

Modifie le WE du pays démocratique spécifié dans l’Event avec la valeur x. Celle-ci peut être positive ou négative.


Ministres et chefs militaires


type = armamentminister which = [minister id]

Installe le ministre de l’armement.


type = chiefofair which = [minister id]

Installe le chef des forces aériennes.


type = chiefofarmy which = [minister id]

Installe le chef de l’armée de terre.


type = chiefofnavy which = [minister id]

Installe le chef de la marine.


type = chiefofstaff which = [minister id]

Installe le chef d’état-major.


type = foreignminister which = [minister id]

Installe le chef de la diplomatie.


type = headofgovernment which = [minister id]

Installe le premier ministre.


type = headofstate which = [minister id]

Installe le chef de l’état.


type = leader which = [leader id]

Nomme cet officier comme commandant.


type = leader_loyalty which = [leader id] value = x

Ajuste la fidélité de l’officier spécifique avec la valeur x. Celle-ci peut être positive ou négative.


type = minister which = [minister id]

Active le ministre indiqué, il est maintenant disponible lorsqu’on se rend dans le menu gouvernement.

type = minister_loyalty which = [minister id] value = x

Ajuste la loyauté du ministre spécifié avec la valeur x. Celle-ci peut être positive ou négative.


type = ministerofintelligence which = [minister id]

Installe le ministre des services secrets.


type = ministerofsecurity which = [minister id]

Installe le ministre de la sécurité.


type = reveal_leader_loyalty which = [leader id]

Indique la fidélité de l’officier indiqué.


type = reveal_minister_loyalty which = [minister id]

Indique la fidélité du ministre spécifié.


type = set_leader_skill which = [leader id] value = x

Ajuste le skill (qualité) de l’officier spécifié. La valeur x peut être positive ou négative.


type = set_minister_skill which = [minister id] value = x

Ajuste le skill (qualité) du ministre spécifié. La valeur x peut être positive ou négative..


type = sleepleader which = [leader id]

Rend indisponible l’officier spécifié avec x. Se servir de 'which = -2' pour retirer l’officier ayant la plus basse fidélité.


type = sleepminister which = [minister id]

Rend indisponible le ministre spécifié avec x. Se servir de 'which = -2' pour retirer le ministre ayant la plus basse fidélité.


type = wakeleader which = [leader id]

Active le commandant indiqué (voir les commandes plus haut pour les officiers).
Ressources et technologies


type = coalpool value = x

Modifie le charbon dans les stocks du pays. Cette valeur puet soit être positive ou négative.



type = convoy which = [startprov id] value = [endprov id] when = [resource_bits]

Crée un convoi en stipulant sa province de départ et sa province d’arrivée. Les marchandises qu'il doit transporter sont définies avec la commande resource bits : 1=oil (pétrole), 2=steel (acier), 4=coal (charbon), 8=rubber (caoutchouc), 16=supplies (ravitaillement). Par exemple, pour définir un transport de pétrole et de ravitaillement on compte le chiffre 1 (pétrole) et 16 (ravitaillement) soit le chiffre 17.


type = gain_tech which = [tech id]

Donne l’acquisition de la technologie indiquée. Toute recherche en cours sur cette technologie est annulée automatiquement.


type = industry which = [province id] value = x

Modifie le niveau industriel de la province spécifié. Soit en positif ou négatif.


type = infrastructure which = [province id] value = x

Modifie le niveau d’infrastructure de la province. Soit en positif ou négatif.


type = manpowerpool value = x

Change la main d'oeuvre disponible d'un pays avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).


type = oilpool value = x

Change le stock disponible de pétrole d'un pays avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).


type = prio_research which = [tech id]

Provoque le fait que le pays à la priorité pour rechercher cette technologie spécifiée (l’IA recherchera tour les pré-requis pour arriver à trouver cette technologie).


type = province_manpower which = [province id] value = x

Change la main d'oeuvre de la province indiquée avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).


type = research_sabotaged Sabote

(enlève) une recherche (aléatoire) en marche.


type = rubberpool value = x

Change le caoutchouc disponible d'un pays avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).


type = start_research which = [tech id]

Le pays concerné commence à rechercher la technologie indiquée.


type = steal_tech which = [country tag]

Vole une technologie aléatoire du pays indiquée, où 'que = -1 'est un pays non-allié aléatoire

.
type = steelpool value = x

Change l'acier disponible d'un pays avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).


type = supplies value = x

Change les approvisionnements disponibles d'un pays avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).


Unités et installations militaires


type = add_division which = [div_type] value = [brigade_type] when = [province id]
Ajoute une division de type indiqué et attache une brigade spécifique. Voir la section d'unités pour une liste de types valides de division et de brigade (use value = none pour aucune brigade rattachée). La division apparaîtra dans la boîte de réserve prête pour le déploiement si le 'when =' est omis, dans la province indiquée si 'when =’ est utilisé. Note : Cette option semble ne pas fonctionner complètement. Seule apparaît comme division les parachutistes, les marines, les miliciens et les infanteries motorisées.


type = build_division which = [div_type] value = [brig_type]
Établit une division de type indiqué et attache une brigade comme indiquée. Voir la section d'unités pour une liste de types valides de division et de brigade (use value = none pour aucune brigade rattachée). La division apparaîtra dans la boîte de réserve et doit être construite avant qu'elle puisse être déployée.


type = coastal_fort which = [province id] value = x
Change le niveau côtier de fortification de la province indiquée avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).


type = construct which = [AA_batteries/land_fort/coastal_fort/infra/ic] value = [prov nr]
Établit la construction indiquée dans la province indiquée.


type = delete_unit which = [unit id/-1]
Enlève l'unité avec l'identification indiquée, ou une unité aléatoire si 'which = -1 '.


type = detect_units which = [country tag] value = x
Détecte des unités de x dans le pays indiqué, ou avec ' which = -1 'dans un pays voisin aléatoire.


type = flak which = [province id] value = x
Change le niveau de flak de la province indiquée avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).


type = land_fort which = [province id] value = x
Change le niveau de fortification terrstre de la province indiquée avec la valeur de x. Peut être positif (augmentation) ou négatif (diminution).
type = switch_allegiance which = [country tag] value = [unit id]
L'unité indiquée (ou aléatoire si 'value = -1') devient une unité du pays indiqué.


Autres commandes :


type = ai which = "[file name]"

Modifie le fichier AI d'un pays via le fichier indiqué (le nom du fichier doit être précisé).

type = clrflag which = [flag name]

Enlève le drapeau indiqué. Si le drapeau existe il est positionné sur 'no'. Pour plus d'information sur l’emploi des drapeaux voir l’AI.



type = setflag which = [flag name]

Positionne le drapeau indiqué. Le drapeau est placé à 'yes'. Voir ci-dessous pour plus d'information sur les drapeaux.

type = sleepevent which = [event id]

Suspend l’exécution de l’Event stipulé de sorte qu’il ne déclenchera. Type = ai which = [file name]

type = trigger which = [event id]

Déclenche immédiatement l’Event stipulé.

type = vp value = x

Ajuste les points de victoire avec la valeur x. Celle-ci peut être positive ou négative.


3.11 Utilisation des flags dans les Events


Un des nouveaux outils de la version 1.03 était la possibilité de créer des Events via les Flags et d’utiliser ces derniers pour déclencher des Events. Un Flag peut être prédéfini dans un fichier de l’AI, ou il peut être positionné dans un quelconque Event. La syntaxe est décrite ci-dessus, mais un sommaire court n’empêchera pas sa réalisation : le nouveau déclencheur 'flag = [ nom du drapeau ]' vérifie si le drapeau indiqué est placé, et est vrai si le drapeau est actif. Les deux commandes d'Event, 'clrflag 'et 'setflag ', sont utilisées comme moyen pour enlever ou placer des drapeaux. Quand on charge nouveau fichier dans le dossier AI, en utilisant la nouvelle commande d'Event 'AI ', n'importe quel drapeau réglé dans ce fichier AI remplacera les drapeaux existants.
Un exemple : Tu as trois Events qui modifie les fichiers du dossier AI pour un pays. Appelons ces fichiers myai1.ai, myai2.ai et myai3.ai. Le fichier AI peut donc être modifié dans un sens différents entre ces trois fichiers, selon la façon dont la guerre évolue. Maintenant, la modification de ces fichiers est facile, mais comment connaître le fichier qui est en service alors ? Facile : Tu emploies les drapeaux !
Dans chacun des fichiers du dossier AI tu définis trois Flags. Pour celui-ci, par exemple, le fichier myai1.ai :


flag = {
myai1 = yes
myai2 = no
myai3 = no
}

Le premier choix (action_a) déclenchera immédiatement l'Event 2019, un Event de l’Allemagne :De la même façon tu as un Event pour valider le deuxième flag. Alors maintenant le nouveau dossier AI prend le relais.tu commutes la AI :Tu peux maintenant avoir des Events surveillant chacun des buts, et quand un des buts est rencontré il mettra l’autorisation pour placer ce flag (de l’option no il passera à oui :Quand ces fichiers dans le dossier AI est chargé, le flag myai1 est mis sur la position yes et sera utilisé comme déclencheur pour des Events qui seront utilisés seulement quand ce fichier est en service.Un autre exemple : Disons que tu construis un scénario où un pays a trois buts spécifiques à réaliser avant de changer complètement de stratégie complètement. Tu crées un dossier AI avec ces flags :



flags = {
flag1 = no
flag2 = no
}



event = {
id = X
trigger = {
[goal one is achieved!]
}
random = no
country = TAG
name = "AI_EVENT"
desc = "..."
style = 0

date = { day = 1 month = january year = 1936 }
offset = 30
deathdate = { day = 1 month = january year = 1948 }

action_a = {
name = "Set that flag"
command = { type = setflag which = flag1 }
}
}


Ceci changera les flags de l manière suivante :

flags = {
flag1 = yes
flag2 = no

}



event = {
id = X
trigger = {
flag = flag1 #Is true if flag1 = yes
flag = flag2 #Is true if flag2 = yes
}
random = no
country = TAG
name = "AI_EVENT"
desc = "..."
style = 0

date = { day = 1 month = january year = 1936 }
offset = 30
deathdate = { day = 1 month = january year = 1948 }

action_a = {
name = "Switch AI"
command = { type = ai which = "new.ai" }
}
}


4. Exemples


Le chapitre suivant montrera quelques exemples pratiques de script (écriture) d’Events.


4.1 Utilisation de déclencheurs - AND NOT seulement facile, OR quand ?


Un des dispositifs les plus importants du moteur des Events est le système déclencheur. Ceux-ci décident si un Event doit se passer, selon les circonstances. Habituellement il y a des conditions pour qu’il s’accomplisse et d'autres conditions si nous ne voulons pas qu’il s’accomplisse, la plupart du temps pour compliquer le déclenchement de l’Event.
Un exemple du jeu : C'est le déclenchement pour l'Event hongrois 2503, Vienna Diktat – Claim Transylvania with German blessing :


trigger = {
exists = GER # Condition 1
exists = ROM # Condition 2
NOT = { # Condition 3
war = { country = HUN country = ROM } # Condition 3.1
OR = { # Condition 3.2
control = { province = 728 data = -1 } # Condition 3.2.1
control = { province = 729 data = -1 } # Condition 3.2.2
control = { province = 730 data = -1 } # Condition 3.2.3
}
}
}


Le principe de base est que quand rien d’autre n'est précisé, et que tu as plus d'une condition, l'opérateur par défaut est ET; c’est-à-dire que toutes les conditions doivent être remplies. Dans cet exemple il y a trois conditions principales qui tous doivent être accomplies :
L’Allemagne doit exister (Condition 1)
La Roumanie doit exister (Condition 2)
La condition NOT = { } doit être vrai, vérifiée (Condition 3)
Ainsi, qu’est-ce que la condition NOT ? Comme mentionné précédemment, le déclenchement est seulement validé si toutes les conditions sont vérifiées. Ainsi pour la condition NOT la Hongrie ne doit pas être en guerre avec la Roumanie : war = { country = HUN country = ROM } (Condition 3.1)
La condition OR = { } doit être vérifiée (Condition 3.2)
Ainsi, qu’est-ce que la condition OR ? Comme mentionné précédemment, le déclenchement est seulement validé si toutes les conditions sont vérifiées. Donc pour cette condition OR dans cet exemple une des trois propositions doivent être vérifiées :
Hongrie contrôle la province 728 (Condition 3.2.1)
Hongrie contrôle la province 729 (Condition 3.2.2)
Hongrie contrôle la province 730 (Condition 3.2.3)
En clair : Cet événement se déclenchera si : L'Allemagne et la Roumanie existe, que la Hongrie est en paix avec la Roumanie et que la Hongrie contrôle au moins une des trois provinces stipulées.


4.2 Enchaînement des chaînes d'Event


Les enchaînements des chaînes des Events sont comme une suite logique des ordres données - quand cette chaîne démarre elle peut durer un certain temps, avec de grandes conséquences – comme elle peut s’arrêter très vite. La suite logique d’une chaîne dépend en fin de compte du script de l’Event (ce qu’on a voulu en faire). There are two ways of linking events:
Employer la commande de déclenchement (trigger)
Employer le déclenchement d'événement (event trigger)
Ces deux méthodes ont une utilisation différente, comme expliqué ci-dessous.


4.2.1 la commande de déclenchement (trigger)


La commande de déclenchement (trigger) est utilisée pour donner le feu vert immediate à un Event, base sur le choix fait dans l’Event.
Pour exemple revoyons l’Event 2503 de la Hongrie :


event = {
id = 2503
random = no
country = HUN

trigger = {
#see above#
}

name = "EVT_2503_NAME"
desc = "EVT_2503_DESC"
style = 0

date = { day = 4 month = september year = 1940 }

action_a = {
name = "ACTIONNAME2503A" # Press the issue
command = { type = trigger which = 2019 } # GER
}

action_b = {
name = "ACTIONNAME2503B" # Refrain
command = { }
}
}



event = {
id = 2019
random = no
country = GER
# Triggered by HUN 2503
name = "EVT_2019_NAME"
desc = "EVT_2019_DESC"
style = 0

action_a = {
name = "ACTIONNAME2019A" # Force Romanian acceptance
command = { type = trigger which = 2701 } # ROM
}
action_b = {
name = "ACTIONNAME2019B" # Deny the Hungarian request
command = { type = trigger which = 2504 } # HUN
command = { type = trigger which = 2702 } # ROM
}
}


Il y a un élément important à soulever pour cet Event. Il est très simple, comme tu peux le voir il n’y aucune date défini dans l’Event de l’Allemagne. Puisque l'Event est prévu pour se déclencher à partir d’un autre Event, la date qui agira pour le joueur allemand sera celle ou l’Event hongrois est apparu.
L'Event allemand (déclenché par l’Event Hongrois) déclenchera à son tour un Event du joueur roumain si en tant que joueur allemand tu choise aussi l’option a. Un exemple probant de chaîne continue…


4.2.2 le déclenchement d'événement (event trigger)


Ce qui précède est donc une maniére de valider divers Events immédiatement, et à tout moment quand les conditions sont réunies. Le déclenchement d’event (event trigger) est plus adapté si tu veux que des Events se passent à une date précise, soit parce que çà correspond à un décalage dans le temps entre la décision que tu veux prendre et son application dans le jeu.
Un exemple pour ce type d’Event :
Le premier Event (1) aura certaines conditions, et sera validé le 6 janvier 1942 si ces conditions sont rencontrées.
Le second Event (2) sera validé le 29 janvier 1942, mais seulement si l’Event 1 s’est produit.
Le troisiéme Event (3) sera validé le 17 février 1942, mais seulement si le premier choix (action_a) a été choisi dans l’event 2.
Le quatriéme Event (4) sera validé le 17 février 1942, mais seulement si le deuxième choix (action_b) a été choisi dans l’Event 2.
Le cinquiéme Event (5) sera validé le 17 février 1942, mais seulement si le premier Event ne s’est jamais produit.
Allons regarder maintenant ces différents Events :


# The first event
event = {
id = 1
trigger = {
[trigger conditions here]
}
random = no
country = [country tag]
name = "The first event"
desc = "[event description]"
style = 0

date = { day = 6 month = january year = 1942 }

action_a = {
name = "Ok"
command = { }
}
}

# The second event
event = {
id = 2
trigger = {
event = 1 # Will only happend if event 1 has happened
}
random = no
country = [country tag]
name = "The second event"
desc = "[event description]"
style = 0

date = { day = 29 month = january year = 1942 }

action_a = { # Since both event 3 and 4 have the same trigger
name = "Yes" # the one not supposed to happend must be slept:
command = { sleepevent = 4 }
}
action_b = { # Ditto
name = "No"
command = { sleepevent = 3 }
}
}

# The third event
event = {
id = 3
trigger = {
event = 2 # Will only happend if event 2 has happened
}
random = no
country = [country tag]
name = "The third event"
desc = "[event description]"
style = 0

date = { day = 17 month = february year = 1942 }

action_a = {
name = "Yes"
command = { }
}
action_b = {
name = "No"
command = { }
}
}

# The fourth event
event = {
id = 4
trigger = {
event = 2 # The same trigger as above!
}
random = no
country = [country tag]
name = "The fourth event"
desc = "[event description]"
style = 0

date = { day = 17 month = february year = 1942 }

action_a = {
name = "Yes"
command = { }
}
action_b = {
name = "No"
command = { }
}
}

# The fifth event
event = {
id = 5
trigger = {
NOT { event = 1 }
# Will only happend if event 1 has not happened
}
random = no
country = [country tag]
name = "The fifth event"
desc = "[event description]"
style = 0

date = { day = 17 month = february year = 1942 }

action_a = {
name = "Yes"
command = { }
}
action_b = {
name = "No"
command = { }
}
}

Donc, que pouvons-nous en retirer ?


Les Events peuvent être soumis à des conditions multiples sans pour cela être validés immédiatement lors du choix. Dans ce cas, tu peux mettre la date réelle de déclenchement comme tu l’entends.
Au lieu de déclencher les Events qui viennent après, tu enlèves ceux qui ne doivent pas se passer en utilisant la commande sleepevent.
Problème : il n'est pas possible d'avoir un déclenchement d’Event précis sur le même Event, il faut bien séparer les différentes actions (par exemples, trois choix possibles, donc 3 Events spécifiques à déclarer).

Les dossiers de scénario dans HoI sont localisés dans les sous répertoire de scénarios. Chaque scénario est défini dans un répertoire avec comme extension fichier le terme eug. Ce répertoire est un dossier des textes qui contient toute l'information requise pour définir un scénario dans HoI (extension inc). Une partie des informations de chaque pays est stockée dans ce dossier, les autres informations peuvent être liées à dans d'autres dossiers.Un scénario typique, comme le scénario 1936, est défini avec un dossier de scénario - la route menant à la guerre (1936-1948).eug - dans le sous répertoire du répertoire scénarios de HoI. Le dossier de scénario peut tenir toutes les informations sur le scénario, ou le lien sur l'information à inclure à partir d'autres dossiers. Chacun des pays inclus dans le scénario a un fichier de type inc avec la définition de pays dans un sous répertoire. Ces dossiers sont liés à partir du fichier eug.

Réseau Gamers et Stratégie. Association Loi 1901 à capacité juridique.
©1998-2017 Réseau Gamers et Stratégie - Tous droits réservés - Mentions légales