Affichage des résultats 1 à 17 sur 17

Discussion: DIALOGUE et .TRA

  1. #1
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043

    DIALOGUE et .TRA

    Le fonctionnement de base est le suivant dans l'éditeur:
    - un fichier mis à jour d'origine .DLG ou .D est sauvegardé en .D.

    Je peux créer un .TRA lors de la sauvegarde du .D. Que faut il mettre dedans?

    Je vois 3 solutions:

    1- .D avec tout le texte dans le dialogue .TLK
    > on a donc des références # dans le fichier sans .TRA associé.

    2- .D avec support .TRA
    > on a donc toutes les références @ dans le fichier .D. Les références # existantes ne sont pas utilisées.

    3- Mixte, ce qui est en # reste en l'état et le reste en .TRA.

    Qu'en pensez vous?

    Cocrane

  2. #2
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 645
    Oublie les modifications des fichiers .tlk : pour une meilleure compatibilité entre mods, le plus utile, c'est la création d'un fichier .d et d'un fichier .tra associé (sans les "#" puisqu'ils sont déjà contenus dans le fichier dialog.tlk).
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  3. #3
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Ok, tu optes donc pour la solution 3.

    On met dans le .TRA (gestion @) les nouveaux textes.

    C'est noté.

    Cocrane

  4. #4
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 645
    Juste un dernier point que je ne t'ai vu évoquer nulle part et que je n'ai pas vu dans tes captures d'écrans : n'oublie pas la gestion du fichier dialogF.tlk pour les dialogues concernant la gente féminine.

    Exemple :
    @999999 = ~Tu n'es pas pressé, <CHARNAME>~ ~Tu n'es pas pressée, <CHARNAME>~

    Comme mon mod propose plus d'options pour les persos féminins, j'y suis assez sensible...
    Dernière modification par Freddy_Gwendo ; 05/10/2013 à 21h29.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  5. #5
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Oui c'est un sujet que je n'ai pas encore traité.

    C'est la version masculine qui est en 1ier puis la version féminine?

    Cocrane

  6. #6
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 645
    Le fichier dialog.tlk contient les références aux dialogues, aux scripts, aux messages et aux panneaux du jeu. En règle générale, le fichier dialogF.tlk, valable pour les langues faisant la différence entre les genres, contient ces mêmes références, modifiées uniquement lorsqu'elles concernent un perso féminin.

    Ex :

    @999 = ~Je n'en ai rien à faire.~ --> identique dans dialog et dialogF.
    @998 = ~<CHARNAME> est pressé.~ ~<CHARNAME> est pressée.~ --> premier string dans dialog, second dans dialogF.

    Ces insertions sont générées automatiquement par la commande COMPILE de WeiDU : si WeiDU rencontre un string avec deux références (comme @998), il les scinde pour modifier automatiquement les deux fichiers .tlk.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  7. #7
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 645
    Comme je te l'avais dit, je compte refaire tous mes dialogues. Donc je n'en ai pas beaucoup de dispos.

    Voici tout de même l'avant-dernière version de la première rencontre avec le perso qui lance la quête. Elle sera modifiée car elle ne me convient pas et en plus, j'ai modifié tout le background de Gwendolyne pour éviter les poncifs (celui-ci date d'il y a plus de 6 ans et je le trouve trop nul).

    Mais ce qui importe, ce sont les strings MALE/FEMALE : tu en trouveras dès le début de la rencontre.

    Je passe par ce topic pour te répondre parce que je trouvais stupide de passer par un hébergeur de fichiers pour une vingtaine de Ko !

    Dès que tu l'as téléchargé, préviens-moi pour que je supprime le lien, histoire d'alléger mon quota de pièces jointes...
    Dernière modification par Freddy_Gwendo ; 19/09/2013 à 11h53. Motif: Suppression de la pièce jointe téléchargée
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  8. #8
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Freddy,
    merci pour tes fichiers. Je confirme que c'est très intéressant de voir comment code les moddeurs par rapport aux fichiers du jeu.

    Quelques remarques:

    FICHIER .D
    "
    SAY @3900000 = @3900001
    ++ @3900002 DO ~DialogueSetGlobal("GWGwendyR1","GLOBAL",2)~ + Gwendolynette.Qui
    + ~Global("GWGwendyNO","GLOBAL",0)~ + @3900056 DO ~DialogueSetGlobal("GWGwendyOK","GLOBAL",1)~ + Gwendolynette.OK
    ...

    IF ~~ + Gwendolynette.Histoire02
    "

    Je ne connais pas l'utilisation du "+" ou du "++".


    "
    IF ~~ DO ~DialogueSetGlobal("GWGwendyNO","GLOBAL",1) SetGlobalTimer("GWRefus1","GLOBAL",7200) PlaySound("EFF_HAND")

    "
    Ces lignes n'ont pas la structure "IF ... THEN ...".


    "
    CHAIN GWGwendy Gwendolynette.Nalia1304
    @3900182
    = @3900183
    == NALIAJ @4890000
    END
    IF ~Global("GWGwendyOK","GLOBAL",1)~ EXTERN GWGwendy Gwendolynette.OK
    IF ~Global("GWGwendyOK","GLOBAL",2) Global("GWAR1402","GLOBAL",0) PartyHasItem("SCALEB")~ EXTERN GWGwendy Gwendolynette.Thaxll1402
    IF ~Global("GWGwendyOK","GLOBAL",2) Global("GWBELT10","GLOBAL",0) PartyHasItem("BELT10")~ EXTERN GWGwendy Gwendolynette.Belt10
    IF ~Global("GWGwendyOK","GLOBAL",2) Global("GWRGMAGE","GLOBAL",0) OR(2) PartyHasItem("RING08") PartyHasItem("RING40")~ EXTERN GWGwendy Gwendolynette.RgMage
    "

    Je ne connais pas cette version de structure de CHAIN IF. La 'mienne' c'est:
    CHAIN IF .... THEN
    SAY ....
    END
    IF ... THEN REPLY


    J'ai jeté un oeil sur la doc WEiDU:
    - je vois que "==" équivaut à un "EXTERN".
    -pas vu d'explication pour "+"
    - le SAY du CHAIN peut être remplacé direct par le texte ~...~

    Je suppose que Weidu interprète les "+", "++" et l'absence de "THEN". Pour le moment, ce n'es pas géré dans l'éditeur. Il faut que l'on détaille ces points.


    FICHIER .TRA

    Je ne gère pas les commentaires // ou /* ou ligne d'espace. Je vais mettre ce point en place.

    Cocrane

  9. #9
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 645
    Lorsque je me suis remis à modder, j'ai découvert qu'il avait de nouvelles manières de coder les dialogues. Comme elles sont plus rapides, j'ai essayé de les adapter à mes anciens dialogues. D'ailleurs, je t'avais prévenu, ce dialogue était en voie de modification, donc pas encore terminé.

    Donc :

    Code:
    IF ~Global("GWGwendyR1","GLOBAL",1)~ THEN BEGIN Gwendolynette.Hello
     SAY @3900000 = @3900001
      ++ @3900002 DO ~DialogueSetGlobal("GWGwendyR1","GLOBAL",2)~ + Gwendolynette.Qui
      ++ @3900003 DO ~DialogueSetGlobal("GWGwendyR1","GLOBAL",2)~ + Gwendolynette.Quoi
      ++ @3900004 DO ~DialogueSetGlobal("GWGwendyR1","GLOBAL",2)~ + Gwendolynette.Insulte
    END
    
    IF ~~ THEN BEGIN Gwendolynette.LastChance
     SAY @3900012
      ++ @3900007 + Gwendolynette.Bataille
      + ~Class(Player1,PALADIN_ALL) ~ + @3900013 + Gwendolynette.Bye1_Paladin
      + ~!Class(Player1,PALADIN_ALL)~ + @3900013 + Gwendolynette.Bye1_NonPaladin
      + ~Global("GWGwendyHist","GLOBAL",0)~ + @3900002 + Gwendolynette.Qui
      + ~Global("GWGwendyQuoi","GLOBAL",0)~ + @3900003 + Gwendolynette.Quoi
    END
    équivaut à

    Code:
    IF ~Global("GWGwendyR1","GLOBAL",1)~ THEN BEGIN Gwendolynette.Hello
     SAY @3900000 = @3900001
      IF ~~ THEN REPLY @3900002 DO ~DialogueSetGlobal("GWGwendyR1","GLOBAL",2)~ GOTO Gwendolynette.Qui
      IF ~~ THEN REPLY @3900003 DO ~DialogueSetGlobal("GWGwendyR1","GLOBAL",2)~ GOTO Gwendolynette.Quoi
      IF ~~ THEN REPLY @3900004 DO ~DialogueSetGlobal("GWGwendyR1","GLOBAL",2)~ GOTO Gwendolynette.Insulte
    END
    
    IF ~~ THEN BEGIN Gwendolynette.LastChance
     SAY @3900012
      IF ~~ THEN REPLY @3900007 GOTO Gwendolynette.Bataille
      IF ~Class(Player1,PALADIN_ALL) ~ THEN REPLY @3900013 GOTO Gwendolynette.Bye1_Paladin
      IF ~!Class(Player1,PALADIN_ALL)~ THEN REPLY @3900013 GOTO Gwendolynette.Bye1_NonPaladin
      IF ~Global("GWGwendyHist","GLOBAL",0)~ THEN REPLY @3900002 GOTO Gwendolynette.Qui
      IF ~Global("GWGwendyQuoi","GLOBAL",0)~ THEN REPLY @3900003 GOTO Gwendolynette.Quoi
    END

    donc

    ++ = IF ~~ THEN
    + Gwendolynette.Qui = GOTO Gwendolynette.Qui (ça marche aussi avec EXTERN Dialog2 Gwendolynette.Qui)
    + ~condition~ = IF ~condition~


    Par ailleurs, tu as raison, c'est effectivement
    Code:
      IF ~~ THEN DO ~DialogueSetGlobal("GWGwendyNO","GLOBAL",1) SetGlobalTimer("GWRefus1","GLOBAL",7200) PlaySound("EFF_HAND") 
      Wait(1) AddJournalEntry(@3500901,INFO) ForceSpell(Myself,DRYAD_TELEPORT)~ EXIT
    J'ai dû me mélanger les pinceaux en remplaçant les IF THEN par les ++ et comme je n'ai pas encore testé ce fichier puisque j'attendais ton éditeur pour me replonger dans les dialogues...


    Par ailleurs, le CHAIN que tu mentionnes est entre /* et */, donc ne sera pas compilé. C'est un des exemples de dysfonctionnements que je te mentionnais par MP. Le bon code est juste au dessus :

    Code:
    /* Arnisse : Torgal */
    IF ~~ THEN BEGIN Gwendolynette.Torgal1304
     SAY @3900180
      IF ~OR(2) !InParty("NALIA") StateCheck("NALIA",CD_STATE_NOTVALID)~ THEN DO ~DialogueSetGlobal("GWAR1304","GLOBAL",2) GiveItemCreate("GWTorgal",Player1,1,1,1)
    	GiveItemCreate("GWTrollS",Player1,2,1,1) AddJournalEntry(@3900181,INFO)~ + Gwendolynette.OK
      IF ~InParty("NALIA") !StateCheck("NALIA",CD_STATE_NOTVALID)~ THEN DO ~DialogueSetGlobal("GWAR1304","GLOBAL",2) GiveItemCreate("GWTorgal",Player1,1,1,1)
    	GiveItemCreate("GWTrollS",Player1,2,1,1) AddJournalEntry(@3900181,INFO)~ + Gwendolynette.Nalia1304
    END
    
    IF ~~ THEN BEGIN Gwendolynette.Nalia1304
     SAY @3900182 = @3900183
      IF ~~ EXTERN NALIAJ Torgal1304
     END
    Beaucoup plus long à écrire, ce codage old school fonctionne parfaitement, lui !

    Quant aux // et /*, ils sont très utiles en phase de développement sur les fichiers tra et d : positionnement de repères, d'indications, voire de trucs à vérifier ou à modifier tout en permettant de compiler tranquillement les fichiers. Comme dans l'exemple du CHAIN : je l'ai conservé pour être certain de le régler ultérieurement. Idem dans le fichier tra où tu as pu constater que j'ai laissé certains commentaires, notamment sur la création de fichiers sons pour certains strings (j'utilise pour l'instant des fichiers wav existants histoire de ponctuer les dialogues, mais ils devront être remplacés par d'autres voix).

    Cependant, si on créé directement les fichiers d et tra à partir de ton éditeur, ne t'inquiète pas des // et consorts puisqu'ils seront rajoutés à postériori dans ces mêmes fichiers.

    D'ailleurs, c'est un peu l'utilisation que je comptais en faire : définir rapidement la structure du dialogue dans ton édito, puis l'affiner si nécessaire dans les fichiers .d (rajouts de strings, modification des conditions, copier-coller d'actions déclenchées par une cinématique, etc...).
    Dernière modification par Freddy_Gwendo ; 19/09/2013 à 12h34.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  10. #10
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    C'est vu pour les évolutions du code de WEIDU. J'en conclu que le '+' n'est pas à gérer.

    Au sujet du fichier .TRA, je note que tu as quand même mis pas mal de commentaires. Commentaire qui me semble précieux pour aider à avoir des repères pendant la réalisation du mod.

    Ce commentaire n'est pas saisissable dans l'éditeur pour le moment mais on peut réfléchir sur ce point:
    - à l'écriture dans l'éditeur, une case à cocher 'Commentaire' peut permettre de signaler que c'est un commentaire qui est saisi.
    => à ajouter dans le fichier .TRA

    - à la lecture du .TRA, la présence de '//' signalera que c'est un commentaire et non un indice à gérer.

    Idée à creuser pour une V2.

    Cocrane

  11. #11
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 645
    C'est vrai que j'écris pas mal de commentaires. Mais c'est dû à la nature du mod : comme c'est une campagne assez longue, si je ne me repère pas dans tous mes fichiers, je vais vite être perdu !
    Mais ce n'est pas le cas de tous les mods.


    Par ailleurs m'est venue une interrogation : il serait bon de prévoir une fonction copier-coller dans ton édito (ou de gérer l'utilisation du Ctrl-C, V) pour pouvoir écrire rapidement par exemple les conditions ou les actions qui se répètent selon les réponses.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  12. #12
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Ok besoin à confirmer pour la gestion des commentaires

    Concernant le copier coller de texte:
    On n'édite pas du texte dans l'éditeur. On a une interface de saisie.

    si jamais un block de discussion (if ... then ... End) est à créer et qu'un autre block est très ressemblant, on peut effectivement prévoir une copie de block comme choix à proposer.
    Sinon on va dans le .D, on copie le block en le renommant. On charge le fichier dans l'éditeur.

    Cocrane

  13. #13
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 645
    Au sujet des "++", je suis tombé par hasard sur ce sujet sur PPG.
    C'est un vieux tuto sommaire "pour les nuls" sur la manière de rédiger rapidement un fichier .d.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  14. #14
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Je te remercie pour ton post.

    Pour le moment, je ne vais pas bosser la gestion des "++" vu que si j'ai bien compris c'est lié une version ancienne de WEIDU.

    Cocrane

  15. #15
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Les travaux de ma salle d'eau me prennent bcp de temps...

    J'avance néanmoins sur la gestion du sexe et j'ai deux questions:

    1- le fichier dialogF.tlk sert aux textes SAY, REPLY, JOURNAL etc...?

    2- Une valeur d'indice est valable correspond à la même phrase pour dialog.TLK (masculin) et dialogF.tlk (féminin).
    Si oui, j'ai un pb, je n'obtiens pas le même texte (c'est facheux! )

    Exemple avec QUAYLE
    "SAY #36747 /* ~Merci de nous avoir aidés, mon bon monsieur. Kalah était un illusionniste de talent... qui s'abusait plus que nous le soupçonnions. Vous prendrez bien soin de ma petite Aerie, hein ?~ */
    "

    Si je le lis l'indice "36747" dans dialog.tlk, j'ai:
    "
    Merci de nous avoir aidés, mon bon monsieur. Kalah était un illusionniste de talent... qui s'abusait plus que nous le soupçonnions. Vous prendrez bien soin de ma petite Aerie, hein ?
    "

    Si je le lis l'indice "36747" dans dialogF.tlk, j'ai:
    "
    ur. Demandez à William Reirrac quels sont vos ordres.Je ne comprends pas bien pourquoi vous refusez un tel honneur. Nombreux sont ceux qui travaillent des années durant pour l'obteni
    "

    Idem pour un reply etc...

    Si quelqu'un peut éclairer ma lanterne.

  16. #16
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages 
    6 827
    Citation Envoyé par Cocrane Voir le message
    Pour le moment, je ne vais pas bosser la gestion des "++" vu que si j'ai bien compris c'est lié une version ancienne de WEIDU
    Le symbole "++" est plus que jamais d'actualité. L'âge du tutoriel est tout relatif, dans le monde du modding BG, c'est même un des plus récents, au contraire. Mais comme c'est surtout une façon d'écrire les choses de façon plus compacte, il n'est pas indispensable de s'en servir : tu peux toujours écrire "IF ~~ THEN" à la place

    Citation Envoyé par Cocrane Voir le message
    2- Une valeur d'indice est valable correspond à la même phrase pour dialog.TLK (masculin) et dialogF.tlk (féminin).
    Si oui, j'ai un pb, je n'obtiens pas le même texte (c'est facheux! )

    Exemple avec QUAYLE
    "SAY #36747 /* ~Merci de nous avoir aidés, mon bon monsieur. Kalah était un illusionniste de talent... qui s'abusait plus que nous le soupçonnions. Vous prendrez bien soin de ma petite Aerie, hein ?~ */
    "

    Si je le lis l'indice "36747" dans dialog.tlk, j'ai:
    "
    Merci de nous avoir aidés, mon bon monsieur. Kalah était un illusionniste de talent... qui s'abusait plus que nous le soupçonnions. Vous prendrez bien soin de ma petite Aerie, hein ?
    "

    Si je le lis l'indice "36747" dans dialogF.tlk, j'ai:
    "
    ur. Demandez à William Reirrac quels sont vos ordres.Je ne comprends pas bien pourquoi vous refusez un tel honneur. Nombreux sont ceux qui travaillent des années durant pour l'obteni
    "
    Il n'y a aucune différence de texte entre les versions masculines et féminines pour le texte 36747, la version masculine s'applique aux deux.

    A mon avis tu fais sans doute une grosse erreur car on voit que tu pointes pour le texte féminin sur des phrases non terminées. Je soupçonne que tu accèdes dans le fichier dialogF.tlk en utilisant les mêmes offset que ceux que tu as lus dans le fichier dialog.tlk. Et c'est une une énorme erreur !!!
    En effet, si les textes diffèrent entre masculin et féminin ("content" / "contente", par exemple), on voit bien qu'un texte féminin pourra être plus long que son pendant masculin (cas typique). D'ailleurs les deux fichiers eux-mêmes n'ont pas la même taille.
    Il faut donc bien considérer que chaque fichier dialog.tlk / dialogF.tlk soit être manipulé avec ses propres offsets. Le nombre de textes est le même, donc la partie "Entries" des deux fait la même taille, mais le début d'un texte dans la partie "Strings" de chaque fichier est à un offset différent, qu'il faut déterminer à partir du bloc "Entries" qui lui correspond.

    Bonne continuation pour ce projet et pour ta salle d'eau.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  17. #17
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Ysaya tu as raison.

    Au démarrage de l'éditeur, je charge quelques données du fichier Dialog.tlk. Données que j'utilise ensuite quand je lis le fichier. J'avais complètement oublié.

    Utilisant la même fonction de lecture pour le fichier dialog.tlk et maintenant le fichier dialogF.tlk, je ne captais pas où étais le problème ... Maintenant c'est corrigé.

    Merci à toi!


    Pour la salle d'eau ça avance mais je rame vu que je suis un bricoleur du dimanche, j'y passe du coup plus de temps que prévu.

    Peut être que les requins de Freddy auront envie d'y faire un tour!

    Cocrane

Discussions similaires

  1. Le dialogue final
    Par abellio dans le forum Méga-mods : Big Picture, The Darkest Day, Shadow Over Soubar, Tortured Souls, Check The Bodies, Nev
    Réponses: 2
    Dernier message: 11/07/2007, 00h32
  2. [KIM] Bug, dialogue en boucle
    Par Raistlin dans le forum Kim
    Réponses: 5
    Dernier message: 26/10/2006, 18h33
  3. Réponses: 3
    Dernier message: 06/02/2006, 21h21
  4. Réponses: 3
    Dernier message: 14/01/2006, 11h15
  5. Réponses: 3
    Dernier message: 30/07/2005, 21h31

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256