Mod:Scripts

From Wikipedia 2197
Revision as of 18:34, 25 September 2022 by Anabellebel (talk | contribs) (Created page with "This tutorial shows the basics of scripting in ''The Sum''. To code dialogues, it is best to Mod:Create_a_dialogue#Scripting dialogue (advanced)|follow th...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This tutorial shows the basics of scripting in The Sum. To code dialogues, it is best to follow the steps in this tutorial.

Preview of the script page.

Outils requis

This tutorial uses mainly the Level editor.

Before You Begin

Please take some time to read the "Scripting" section of the readme file of the Fallout Tactics editor.

Terms to learn

Entity

Character (actor) and/or object, an entity is an interactive element of the game. Most of the scripts concern and affect entities.

Player

Each entity (character or interactive object) is associated with a "player", whether controlled by the player or not. Each player is linked to a team, and several players can have the same team. There is an unlimited number of players.

Bulb.png  It is possible to assign special behaviors (AI) to each player, such as running away from the player. 



}In The Sum, the basic players are:

  1. Scenary : Everything that is part of the decor and does not have a particular behavior. Behavior: passive.
  2. Joueur : Any entity controlled by the player.
  3. Animaux : Animals on the map. Behavior: Friendly by default, hostile if the player skins an animal or has raw meat on them without bones to distract the animals.
  4. Humains : Various entities. Behavior: Neutral by default, hostile if injured in the presence of the player.
  5. Ennemis : Various entities. Behavior: Hostile by default, friendly under certain scripted circumstances.
  6. Amis : Various entities. Behavior: Friendly by default, hostile if injured in the presence of the player.
  7. Banque : Scripted Entities. Behavior: Never hostile.

Team

Each team determines the alignment (from hostile to friendly) of a player towards others teams. This alignment goes from -10 (complete hostility, red dot in the minimap) to 10 (complete friendliness, green dot in the minimap). 0 indicate the neutrality (gray dot in the minimap).

Quantity

Quantity refers to a large list of possible conditions for entities, pretty much everything that is part of their entity file (.ent) (e.g. Strength, Dexterity, Age, Sex, % of Life Points, Living or Dead, Perks, Electricity, etc.) can be checked (counted) in one of the conditions starting with: Quantity -.

Waypoint

A waypoint is an invisible marker added to a location with the Level_editor. Each waypoint has a code name and an index, and several waypoints can share the same name. It is possible to program a movement of characters by programming a series of waypoints.

Zone

Areas are rectangular prisms (with a width, length and height) with a unique code name in a location. Several conditions determine the presence or characteristics of entities in zones. They are created and used in the Level_editor.

Exit Grid

A green area at the edges of a location that allows, when walking in the middle of it, to leave the current location to access the Worldmap.

Créer un script

Ouvrir le fichier du lieu (éditeur de niveaux)

  1. Ouvrez le dossier Game/ puis FT Improver.EXE.
    Alert.png  Utiliser FT Tools.exe à la place résultera en une erreur. 


  2. Passez les vidéos en cliquant dessus.
  3. Cliquez sur
    ⦿  MORE 
    .
  4. Cliquez sur
    ⦿  LEVEL EDITOR 
    .
  5. Accédez au menu
     File 
    puis
     Open 
    .
  6. Ouvrez le fichier du lieu précédemment créé qui doit se terminer par .mis.

Accéder aux scripts

Les scripts sont stockés et codés dans l'Éditeur de niveaux.

  1. Cliquez sur l'onglet
     Level 
    .
  2. Cliquez sur
     Triggers... 
    en bas à gauche.

Ajouter un script

Dans l'Éditeur de niveaux, un script est une série de conditions menant (si elles sont toutes vraies) à une série d'actions. Attention: Il n'existe pas de "ou" (or) dans l'Éditeur. Vous pouvez créer autant de scripts que nécessaire, mais ceux-ci ne fonctionnent que dans le lieu dans lequel ils ont été ajoutés.

Bulb.png  Pour chaque script, ajoutez une courte description qui est facile à comprendre (exemple: FUITE ENNEMIS - 1 mort). 



Conditions

Il existe 20 conditions. Celles qui ne sont pas recommandées sont barrées.

  • Always: Condition par défaut, elle est toujours vraie. Pratique quand on veut produire une action qui démarre automatiquement, comme l'assignation de variables.
  • Never: Elle est toujours fausse. Utile pour désactiver un script temporairement.
  • Speech Occured: Une fenêtre de dialogue au nom de code spécifié s'est ouverte. Peut être déclenchée par scripts en utilisant l'action Force Speech.
  • Skill Use Occured: Un personnage au nom de code spécifié a utilisé une Compétence.
  • Variable: Une variable spécifiée a une valeur déterminée.
  • Timer: Un compteur au nom de code spécifié a atteint une valeur déterminée.
  • Quantity - Team: Nombre d'éléments (< > ou =) d'un même type d'une team spécifiée.
  • Quantity - Player: Nombre d'éléments (< > ou =) d'un même type d'un player spécifié.
  • Quantity - Player Kills: Comparaison, entre deux players, du nombre de personnages tués.
  • Quantity - Unit: Nombre d'éléments (< > ou =) d'un même type d'une entité spécifiée.
  • Object Script State: État (activé ou non) d'un objet interactif, comme un interrupteur ou une porte.
  • WeaponMode is: Ces modes ne sont pas utilisés dans Nous Aurons
  • World mode of play is: Le mode de jeu de Nous Aurons est toujours CTB.
  • Gui Open: Fenêtre ouverte par le joueur. Inv (Sac), Main, Char (État), Loot (Fouille), Steal (Vol), Barter (Échange), Options (Options), Skilldex (Agir), Pipboy (GPSP) et Speech (Dialogue).
  • Right Click on Tab: Inutile.
  • All Alive at Exit Grid: Vraie si tous les personnages encore vivants dans l'équipe du joueur sont dans des Exit Grid, les zones vertes en bordure du lieu servant à atteindre la carte du jeu.
  • Can See: Vraie si le personnage d'un player est capable d'en voir un d'un autre player. Les personnages qui utilisent la Compétence Discrétion ne déclenchent pas cette condition.
  • Brain Extraction Complete: Inutile.
  • MP - Game Timed Out: Nous Aurons ne fonctionne pas en mode Multiplayer.
  • Main Actor Alive: Comme la partie s'arrête quand le personnage principal meurt, cette condition équivaut à Always.

Actions

Il existe 61 conditions. Celles qui ne sont pas recommandées sont barrées.

  • Center view: Centre la vue sur une entité spécifiée. Le reste du temps, la vue peut être changée librement par le joueur.
  • Player Retreat Zone: Assigne une Retreat Zone à un player (zone dans laquelle les personnages d'un player se rendront si gravement blessés).
  • Player Move State - Deactivate: Désactive un player. Il disparaît.
  • Player Move State - Stationary: Hors combat, rend les personnages d'un player statiques. Si désactivés, ils apparaissent.
  • Player Move State - Perimeter: Hors combat, assigne une zone à un player (zone dans laquelle les personnages essaient de rester).
  • Player Move State - Wander: Hors combat, assigne une zone à un player (zone dans laquelle il erre).
  • Player Move State - Follow: Hors combat, assigne le nom de code d'un personnage à un player. Les personnages de ce player essaient de le suivre.
  • Player Move State - WayPoint: Hors combat, assigne le premier WayPoint (index 0) d'un nom spécifié aux personnages d'un player. Ils marcheront (dépendamment de leur Priority) vers ce premier WayPoint puis d'autres WayPoints du même nom s'ils existent.
    Alert.png  Si le script est marqué comme
     ✔ Preserve 
    , les personnages ne marcheront jamais au delà de l'index 0.
     


  • Player Move State - Flee: Donne l'ordre aux personnages d'un player de se sauver dans une zone spécifiée.
  • Player Priority - Move State: Chance que les personnages d'un player se déplacent quand un script leur demande. À 10, ils abandonnent tout et se déplacent. Au dessus de 8, ils courent au lieu de marcher.
  • Player Priority - Aggression: Chance que les personnages d'un player en attaquent un autre quand un script leur demande.
  • Player Priority - Communication: Distance à laquelle les personnages d'un même player se rendent compte qu'un autre est attaqué. À 0, ils ne réagissent pas, à 10, ils communiquent sur toute la carte.
  • Player Priority - Mobility: Hors combat, fréquence à laquelle les personnages d'un player se déplacent. À 1, ils arrêtent à chaque pas ou presque, à 10, ils sont toujours en mouvement.
  • Player Priority - Kill Player: Chance que les personnages d'un player attaquent un autre player quand un script leur demande.
  • Player Priority - Kill Unit: Chance que les personnages d'un player attaquent une entité spécifiée quand un script leur demande.
  • Set Variable: Assigne une valeur (textuelle) à une variable. Il est possible de cocher l'option
     Campaign 
    pour que la variable soit lue dans d'autres lieux.
  • Set Timer: Détermine et démarre un compteur ascendant ou descendant (si la case
     Decending 
    est cochée.
    Alert.png  Un compteur laissé en fonction peut parfois faire planter le jeu. 


  • Stop Timer: Arrête un compteur spécifié.
  • Show Timer: Affiche un compteur spécifié en haut de l'écran, visible par le joueur.
  • Wait: Attend un nombre de secondes spécifiées avant d'accomplir les actions suivantes dans la liste.
    Alert.png  Wait fonctionne uniquement quand la case
     ✔ Blocking 
    est cochée dans les paramètres de l'action.
     


  • Add Objective: Ajoute une tâche (parmi les entrées du fichier .txt du lieu) à la liste de tâches du joueur (écran GPSP). Si la case
     with popup box 
    est cochée, une notification de tâche apparaît sur l'écran principal.
  • Complete Objective: Complète (change en gris) une tâche spécifiée (parmi les entrées du fichier .txt du lieu) à la liste de tâches du joueur (écran GPSP).
  • Set Death Text: Non utilisé.
  • End Mission: Quitte le jeu (
     Main Menu 
    ), Rejoint la carte (
     World Map 
    ), Tue le personnage principal (
     Death Screen 
    ), mène à l'écran d'échec (
     Fail Screen 
    ) ou de victoire (
     Win Screen 
    ).
  • Goto Mission: Déplace instantanément le joueur et tous ses personnages dans un lieu (spécifié par son nom de code).
  • Toggle Exit Grids: Les Exit Grids sont toujours fonctionnelles dans Nous Aurons.
  • Set Click Speech: Assigne un dialogue (ajouté dans l'onglet
     Level 
    et bouton
     Speech... 
    ) à une entité spécifiée. Celui-ci se déclenche quand le joueur clique dessus.
    Bulb.png  Utiliser Set Click Speech sur une entité spécifiée avec le paramètre "None" enlève un dialogue déjà programmé. 


  • Set Random Speech: Assigne un dialogue (ajouté dans l'onglet
     Level 
    et bouton
     Speech... 
    ) flottant au dessus de la tête d'une entité spécifiée. Celui-ci s'affiche de temps en temps.
    Bulb.png  Utiliser Set Random Speech sur une entité spécifiée avec le paramètre "None" enlève un dialogue déjà programmé. 


  • Play Wav: Fait jouer un fichier .wav du dossier Game/core/sound/. Le
     Sound Id 
    doit être unique. Si le nom de code d'une entité est spécifié, le son ne pourra être entendu qu'à proximité de cette entité.
  • Kill Entity: Tue instantanément une entité d'une manière spécifiée (Normal, Explode, Cutinhalf, Electrify, Melt, Fire, Riddled, Bighole).
  • Set object script state: Actionne un objet interactif spécifié. Par exemple, si c'est une porte, il est possible de l'ouvrir ou de la fermer.
  • Set Team Alignment Matrix: Détermine l'alignement d'une team. Affecte tous les players de cette team.
  • Display World Text: Affiche un texte (parmi les entrées du fichier .txt du lieu) sous forme d'une fenêtre jaune au milieu de la page. La fenêtre interrompt le jeu, il faut appuyer sur
    ⦿  OK 
    pour continuer.
  • Start Combat Mode: Le mode de jeu de Nous Aurons est toujours CTB.
  • Add Reputation: Utilisé par les scripts généraux pour déterminer l'électricité disponible.
  • Add Experience: Ajoute un nombre spécifié de Points d'Autonomie au personnage principal.
  • Add Experience to Player: Ajoute un nombre spécifié de Points d'Autonomie à tous les personnages d'un player spécifié.
  • Force Speech: Déclenche le dialogue (ajouté dans l'onglet
     Level 
    et bouton
     Speech... 
    ) d'une entité spécifiée et centre automatiquement la vue dessus.
    Alert.png  Spécifier une entité inexistante fera planter le jeu. 


  • Change Team: Change la team d'un player spécifié.
  • Change Player: Change le player d'une entité (Unit) spécifiée.
  • Move Unit: Téléporte une entité à un waypoint spécifié.
    Alert.png  Déplacer une entité inexistante fera planter le jeu. 


  • Give Item to NPC: Fait passer un item au nom de code spécifié des personnages du joueur à un personnage au nom de code spécifié.
    Alert.png  Quand le joueur est trop loin, il ne se passe rien. Quand le personnage a déjà une copie de l'item, il ne se passe rien. 


  • Give Item from NPC to Human: Fait passer un item au nom de code spécifié d'un personnage au nom de code spécifié au joueur.
    Alert.png  Quand le personnage est trop loin, il ne se passe rien. Quand le joueur a déjà une copie de l'item, il ne se passe rien. 


  • Lock/Unlock Door: Barre (
     LockState 
    coché) ou débarre (
     LockState 
    décoché) une porte au nom de code spécifié.
  • Jam/Unjam Minimap: Utilisé par les scripts généraux en fonction de l'électricité disponible.
  • Ping Minimap: Marque un emplacement spécifié (nom de code d'un waypoint) dans la minicarte. Le joueur doit avoir assez d'électricité pour que ça fonctionne.
  • Add text to Debrief text list: Utilisé seulement à la fin du jeu.
  • Display Debrief window and text: Utilisé seulement à la fin du jeu.
  • Zone of death: Tue instantanément toutes les entités dans une zone spécifiée et d'une manière spécifiée (Normal, Explode, Cutinhalf, Electrify, Melt, Fire, Riddled, Bighole). En cochant
     Outside location 
    , il est possible de tuer toutes les entités à l'extérieur de la zone spécifiée.
  • Play Bink Movie: Démarre une vidéo .bik (créée avec The RAD Video Tools) et stockée dans Game/core/movie/. L'
     Archive Title Key 
    est un nom de code (ex:movie_name_intro) qui doit aussi être ajouté aux fichiers Game/core/locale/game/generic_mission.txt et Game/NousAurons/locale/game/generic_mission.txt sous "// NOM DES FILMS" de cette façon:
    movie_name_intro = {Introduction}
  • Modify RecruitPool list: Appelle une action à appliquer à la liste des compagnons disponibles au joueur, à partir d'un nom de code présent dans Game/core/campaigns/campaign.txt. Habituellement, l'action consiste à ajouter un personnage.
  • Add items to QuarterMaster list: Utilisé par les scripts généraux pour mettre des objets dans la glacière.
  • Set Mission State: Cache (
     Covered 
    ), révèle (
     UnCovered 
    ) ou indique l'emplacement (
     Visited 
    ) d'un lieu spécifié.
  • Open Mission: Utiliser plutôt
     Set Mission State 
    .
  • Mission Complete: Tourne un lieu (spécifié par son nom de code) en gris sur la carte, ce qui l'indique comme visité.
  • Set Random Encounter Enable: Active ou désactive (cochez
     Enabled to 
    ou non) une rencontre aléatoire spécifiée.
  • Brain Extraction: Inutile
  • MP - Team with the Most Wins: Nous Aurons ne fonctionne pas en mode Multiplayer.
  • MP - Team with the Least Wins: Nous Aurons ne fonctionne pas en mode Multiplayer.
  • MP - Team Meeting Condition Wins: Nous Aurons ne fonctionne pas en mode Multiplayer.
  • MP - Team Victory: Nous Aurons ne fonctionne pas en mode Multiplayer.


Bulb.png  Chaque série d'actions peut être exécutée une seule fois, ou à chaque fois que les conditions sont remplies. Pour se faire, cochez
 Preserve 
à droite de
 ✔ Conditions 
   Actions 
.