Vers l'Infinity et Baldur's Gate
 
AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  

Partagez | 
 

 comprehension d'un script de génération de creatures

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
DrAzTiK
Pom-pom Girl Officielle


Nombre de messages : 84
Age : 32
Date d'inscription : 12/03/2009

MessageSujet: comprehension d'un script de génération de creatures   Mer 26 Jan 2011 - 4:41

Salut Zranoff

Il ya un script que je ne comprends pas trop comment il marche exactement. C'est la map AR5203, une grosse boucherie vs Yagashura avec ascension :

IF
Global("SpawnStart","AR5203",1)
GlobalLT("MaxSpawn","AR5203",100)
!Dead("Yaga01") // Yaga-Shura
GlobalLT("EXTRACOUNT","MYAREA",7)
ActionListEmpty()
InActiveArea(Myself)
THEN
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)
END

IF
Global("SpawnStart","AR5203",1)
GlobalLT("MaxSpawn","AR5203",100)
!Dead("Yaga01") // Yaga-Shura
GlobalLT("EXTRACOUNT2","MYAREA",4)
ActionListEmpty()
InActiveArea(Myself)
THEN
RESPONSE #100
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSSOLD03",0) // Officier de Yaga-Shura
IncrementGlobal("EXTRACOUNT2","MYAREA",1)
RESPONSE #100
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSMAGE01",0) // Mage de Yaga-Shura
IncrementGlobal("EXTRACOUNT2","MYAREA",1)
RESPONSE #100
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSCLER01",0) // Clerc de Talos
IncrementGlobal("EXTRACOUNT2","MYAREA",1)
RESPONSE #100
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSFIRE01",0) // Géant du feu
IncrementGlobal("EXTRACOUNT2","MYAREA",1)
END

IF
Global("SpawnStart","AR5203",1)
GlobalLT("MaxSpawn","AR5203",100)
!Dead("Yaga01") // Yaga-Shura
GlobalLT("EXTRACOUNT3","MYAREA",1)
ActionListEmpty()
InActiveArea(Myself)
THEN
RESPONSE #100
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSSOLD04",0) // Soldat d'élite de Yaga-Shura
IncrementGlobal("EXTRACOUNT3","MYAREA",1)
RESPONSE #100
IncrementGlobal("MaxSpawn","AR5203",1)
CreateCreatureOffScreen("YSFIRE02",0) // Géant du feu
IncrementGlobal("EXTRACOUNT3","MYAREA",1)
END


Je comprends pas trop comment marche la variable EXTRACOUNT en fait. Notemment :

IF
GlobalLT("EXTRACOUNT3","MYAREA",1)
=> le dernier chiffre influe sur quoi ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zranoff
Prétendant Cargoliste
avatar

Nombre de messages : 147
Age : 26
Localisation : Arles
Date d'inscription : 14/02/2009

MessageSujet: Re: comprehension d'un script de génération de creatures   Mer 26 Jan 2011 - 20:48

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 Wink
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 Wink
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"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Cocrane
Fils de Weimer


Nombre de messages : 277
Age : 42
Localisation : Paris
Date d'inscription : 25/03/2010

MessageSujet: Re: comprehension d'un script de génération de creatures   Jeu 27 Jan 2011 - 19:47

Zranoff, commentateur de code BG officiel des Légendes. Razz Razz Razz

Explication très intéressante et je pense assez claire pour faire des tests soit même. En tout cas, je pense au moins avoir compris ton explication.

Ca tombe bien que ce sujet soit lancé car j'avais besoin de 'remplacement' des morts au combat pour mon mod. On pourrait même être sadique. Pour un tué, deux ennemis apparaissent. ^^

Coco
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zranoff
Prétendant Cargoliste
avatar

Nombre de messages : 147
Age : 26
Localisation : Arles
Date d'inscription : 14/02/2009

MessageSujet: Re: comprehension d'un script de génération de creatures   Jeu 27 Jan 2011 - 20:34

Bien sûr on peut faire apparaître 2 ennemis à chaque mort
Mais je ne connais que
GlobalsLT(Var1,Var2) à la place de
GlobalLT("EXTRACOUNT","MYAREA",7) qui soit efficace.

La variable Var1 est la variable qui compte le nombre de soldats en vie sur le champ de bataille. On l'augmente à chaque soldat créé, mais ici, pas besoin de soustraire les soldats morts car ils sont déjà pris en compte dans le calcul.
La variable Var2 est la variable du nombre de soldats vivants ou morts.

Avant Var2 était fixé à 7. Maintenant, on peut le choisir comme on veut.
Il suffit qu'à la mort de chaque soldat, on augmente le nombre de combattants possibles de 2. Comme ça à chaque mort, on fait apparaître 2 nouvelles recrues.
Pour ce faire, je conseille de doter chaque combattant d'un script qui fait incrementer Var2 de 2 lorsqu'ils meurent.

Donc si je SetGlobal Var1 à 0 et Var2 à 3
3 soldats apparaitront puis chaque tué augmentera var2 de 2 ce qui signifie que le premier mort va faire monter Var2 à 5
Mais comme on ne soustrait pas les morts à Var1, le nombre de soldat sur le champ de bataille sera le nombre de soldats morts et vivants donc il n'apparaitra que 2 nouveaux soldats: 4 soldats vivants et 1 mort, ça fera les 5 de Var2
Au mort suivant, on aura 5 soldats vivants et 2 morts, ce qui fera 7
etc...

J'ai pas donné les détails techniques mais plutot le raisonnement.
Si vous avez des questions allez-y ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
DrAzTiK
Pom-pom Girl Officielle


Nombre de messages : 84
Age : 32
Date d'inscription : 12/03/2009

MessageSujet: Re: comprehension d'un script de génération de creatures   Ven 28 Jan 2011 - 6:54

J'ai testé en mettant un gender male et effectivement la génération de créature ne marche plus.

C'est donc effectivement ce Gender EXTRA qui diminue la variable de 1. Je serai passé à coté de ça toute ma vie lol


Effectivement si on aime les grosses boucheries, il y a de quoi s'amuser avec tout ça :p


Merçi beaucoup pour l'explication simple et détaillé Zranoff, c'est exactement ce que j'aime ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zranoff
Prétendant Cargoliste
avatar

Nombre de messages : 147
Age : 26
Localisation : Arles
Date d'inscription : 14/02/2009

MessageSujet: Re: comprehension d'un script de génération de creatures   Sam 29 Jan 2011 - 17:53

Merci à toi pour la question sans toi je serais mort bêtement aussi ^^

Si tu as d'autres questions à propos de ce script si tu veux vérifier un script en rapport avec celui là ou quoi que ce soit, je suis à ta disposition Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Armand
Mexicanos Muy Bien
avatar

Nombre de messages : 622
Age : 31
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

MessageSujet: Re: comprehension d'un script de génération de creatures   Dim 30 Jan 2011 - 14:18

Impressionnant zranoff et merci à draztik d'avoir soulevé le problème ! C'est bluffant de voir ce qu'on est capable de faire avec de simples scripts (dans la mesure où on arrive à ne pas s’emmêler les pinceaux^^). Et le truc d'EXTRACOUNT est vraiment bluffant. Maintenant la question à 100000 $ est la suivante :

Y aurai t-il des utilisation dérivé avec EXTRA1, EXTRA2, EXTRA3... ?

A tester en tout cas. Le modding y'a aps à chier on fini jamais d'apprendre. geek

_________________
J'ai oublié la rancoeur. Je ne connais plus que l'amour, le bonheur... Bordel je baisse ! C'est pas bon ça, pas bon.....

Armand dit :
*t'a vu bat est d'accord avec moi !
*àa prouve bien que...
*ça
*putain mais avec ces conneries mon area a planté
*je dosi tout refaire Neutral
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zranoff
Prétendant Cargoliste
avatar

Nombre de messages : 147
Age : 26
Localisation : Arles
Date d'inscription : 14/02/2009

MessageSujet: Re: comprehension d'un script de génération de creatures   Dim 30 Jan 2011 - 16:08

Aucune idée, il faudrait faire des expériences avec EXTRACOUNTX
Mais je pense que la seule chose de spéciale avec cette variable est de diminuer lorsque meurt une cre de gender EXTRAX
De là tu peux faire bcp de choses à toi d'en avoir l'imagination.
J'ai vraiment pas le temps de faire plus d'expérience sur cette variable
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
DrAzTiK
Pom-pom Girl Officielle


Nombre de messages : 84
Age : 32
Date d'inscription : 12/03/2009

MessageSujet: Re: comprehension d'un script de génération de creatures   Lun 31 Jan 2011 - 7:25

Code:
Mais je pense que la seule chose de spéciale avec cette variable est de diminuer lorsque meurt une cre de gender EXTRAX

Oui oui ç'est ça. POur un chaque EXTRACOUNTX dans le script est associé a un gender EXTRAX.

Pour EXTRACOUNT2 c'est le gender EXTRA2
pour EXTRACOUNT3 le gender EXTRA3

etc..
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: comprehension d'un script de génération de creatures   

Revenir en haut Aller en bas
 
comprehension d'un script de génération de creatures
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» script menu catégories d'items
» [Salon] Génération 80 2eme édition 28 et 29 mai 2011.
» Logiciel/script multijoueur [résolu]
» Ambassade de la Confédération du Rhin
» NabazParis : le script des lapins de Paris

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LEGENDES :: LE MONDE DU MODDING :: Entraide :: Les scripts et le weidu : Zranoff-
Sauter vers: