Pour commencer, ce code est un code de zone comme tu l'as vu, il agit dans toute l'area du combat contre Yagashura.
C'est parti pour la décomposition:
Ces trois blocs possèdent tous la même fonction: faire apparaître l'armée que tu affrontes. Mais les créatures qu'ils créent sont différentes.
Etudier les 3 blocs est inutile, le principe du premier est repris dans les suivants, seules les créatures sont différentes.
Donc prenons le premier bloc et commençons par les conditions:
Global("SpawnStart","AR5203",1)
GlobalLT("MaxSpawn","AR5203",100)
!Dead("Yaga01") // Yaga-Shura
GlobalLT("EXTRACOUNT","MYAREA",7)
ActionListEmpty()
InActiveArea(Myself)
Alors la première ligne
Global("SpawnStart","AR5203",1)
est une condition sur la variable SpawnStart qui donne le départ du combat,
en principe tu dois avoir dans le même script un bloc qui donne le départ
Donc si la variable SpawnStart est à 1, c'est que le combat contre l'armée commence,
on doit créer des soldats! On peut donc passer à la condition suivante
La 2e ligne
GlobalLT("MaxSpawn","AR5203",100)
signifie que tant que la variable MaxSpawn n'est pas à 100,
la condition est vérifiée, on peut continuer à créer des soldats!
Plus loin dans les RESPONSE on se rend compte que chaque
soldat augmente de 1 MaxSpawn, ce qui signifie que l'armée n'arrêtera
pas d'être créée tant que les joueurs n'auront pas affronté 100 soldats!
3e ligne
!Dead("Yaga01") // Yaga-Shura
! est utilisé comme un NOT ce qui signifie que si la condition
après est vrai, elle devient fausse et vice-versa:
Ici la condition est Dead("Yaga01")
Donc si Yagashura est mort, c'est vrai!
Mais tant que Yagashura est vivant l'armée doit être créée.
!Dead("Yaga01") signifie que tant que Yagashura n'est pas mort,
on peut passer à la condition suivante pour créer des soldats!
(c'est pas trop confus avec ces vrais et faux?? ^^)
4e ligne
GlobalLT("EXTRACOUNT","MYAREA",7)
C'est le fameux gros poisson du code.
Cette condition est normale, elle signifie: tant que la variable EXTRACOUNT est inférieur à 7, on passe à la condition suivante pour créer des soldats!
Or on se rend compte après la création de chaque soldat que EXTRACOUNT est augmenté de 1, cela signifie-t-il qu'on ne peut pas dépasser 7 créatures pour ce bloc!?
Oui! On ne peut pas affronter plus de 7 créatures venant de ce bloc en même temps.
Par contre si on en tue une il se trouve qu'une nouvelle créature de ce bloc viendra la remplacer.
Explication: quand on va voir les fichiers CRE de ces créatures, on se rend compte qu'elles ont un "gender" étrange. YSSOLD01 est le soldat de base de l'aramée de Yagashura. Ce bloc est celui qui s'occupe de YSSOLD01 entre autres.
Normalement "gender" correspond au sexe du cre pour des créatures de cette importance mais quand on regarde YSSOLD01 a un gender EXTRA!
Nous sommes maintenant dans le monde des suppositions je ne suis pas sûr de ce que je vais avancer ^^
Apparemment lorsque un cre avec un gender EXTRA meurt la variable EXTRACOUNT diminue de 1.
Soit il s'agit d'un script que je n'ai pas trouvé
Soit il s'agit du moteur du jeu qui est comme ça.
Idem pour les blocs 2 et 3 qui ont leur propre
GlobalLT("EXTRACOUNT2","MYAREA",4) et
GlobalLT("EXTRACOUNT3","MYAREA",1)
En fait le jeu nécessitait 3 blocs différents pour créer l'armée en proportion correcte!
2-3 géants pour 6-7 soldats
On peut vérifier, les cre de ces blocs ont des "gender" appropriés au numéro des EXTRACOUNT de leur bloc. Donc dès qu'on tue un géant un autre apparait
Dès qu'on tue un officier ou autre soldat d'élite un équivalent apparait, tout ça pour qu'on ait l'impression d'une bonne homogénéité dans l'armée.
Pour éviter de faire 10 géants à la suite puis 80 petits soldats.
Voilà pour la variable EXTRACOUNT
Important!! Ces variables semblent réutilisables partout dans le jeu
Avis aux amateurs d'armées gigantesques!
5e ligne
ActionListEmpty()
Cette condition vérifie seulement que l'area n'est pas déjà en train de faire d'autres choses. Il s'agit d'éviter les conflits de script
C'est qu'une armée, c'est dur à gérer!!
Condition suivante
6e ligne
InActiveArea(Myself)
Condition vraie tout simplement lorsque les joueurs
sont dans la zone.
Je peux me tromper mais je ne vois pas trop l'utilité...
Ensuite viennent les actions des RESPONSE
RESPONSE #100
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSSOLD01",0) // Soldat de Yaga-Shura
IncrementGlobal("EXTRACOUNT","MYAREA",1)
RESPONSE #100
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSSOLD02",0) // Soldat de Yaga-Shura
IncrementGlobal("EXTRACOUNT","MYAREA",1)
Alors pour commencer on a 2 RESPONSE à 100, ce qui signifie que chaque RESPONSE a 100/200 chances d'être utilisé soit une chance sur 2.
bref on alterne entre créer YSSOLD01 et YSSOLD02
Juste histoire de varier les plaisirs.
on va donc seulement prendre le 1er RESPONSE:
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSSOLD01",0) // Soldat de Yaga-Shura
IncrementGlobal("EXTRACOUNT","MYAREA",1)
1ere ligne
IncrementGlobal("MaxSpawn","AR5203",1)
Lorsque le soldat est créé, on confirme qu'une bestiole de
plus a été envoyée au casse-pipe et on augmente
la variable MaxSpawn d'1. Juste pour éviter de donner
de l'expérience à l'infini à un joueur qui peut déjà
en tuer 100 sans broncher.
2e ligne
CreateCreatureOffScreen("YSSOLD01",0)
Cette action est à prendre au sens propre:
On créer une créature n'importe où, juste là où le
joueur ne regarde pas avec son écran pour éviter que
l'apparitition de la créature ait l'air d'une
téléportation. Mais sa localisation est indéterminée
Simplement juste derrière le bord de l'écran
Le nombre derrière sert juste à demander de quel côté doit
être tournée la créature quand elle apparait
3e ligne
IncrementGlobal("EXTRACOUNT","MYAREA",1)
On augmente le fameux EXTRACOUNT de 1 pour éviter d'avoir
plus de 7 fois YSSOLD01 et YSSOLD02 sur le terrain en vie
en même temps.
Hé ben! J'espère que j'ai assomé personne avec ces pavés.
Voilà j'espère avoir répondu à ta question sur le fonctionnement
du script, j'en ai profité pour détailler un peu.
Tu me diras si EXTRACOUNT diminue quand on tue un "gender" EXTRA?
j'ai pas le temps de le tester
Peut-être ce week-end... en attendant, continue à poser des questions ^^
EDIT: dsl pour la mise en forme j'ai vraiment pas le temps de faire ça "correct"