Page 1 sur 1

[CARTES] Comment assigner un script à une carte existante du jeu qui n'en a pas ?

Posté : sam. 25 oct. 2003, 01:00
par Grenouillebleue
Voilà mon problème.
Je souhaiterais créer Kim dans la zone AR0306, qui est celle de Renal Bloodscalp (1er étage des Voleurs de l'Ombre).

Malheureusement, cette zone n'a pas de script (le fichier AR0306.bcs n'existe pas), donc je ne peux pas utiliser EXTEND_BOTTOM pour mettre mon script de création.

Comment puis-je faire dans ce cas ? J'ai essayé de créer un script AR0306.bcs et de le copier dans l'override, mais je ne connais pas la commande qui permet de l'associer à la zone en question...

Merci d 'avance :notme2:

Posté : sam. 25 oct. 2003, 01:06
par Silk
Sans sortir du WeiDu, je ne sais pas :sad:

Posté : sam. 25 oct. 2003, 09:32
par Grenouillebleue
Pas grave, je vais contourner la difficulté en mettant le script dans celui de Renal

Posté : sam. 25 oct. 2003, 09:50
par Grenouillebleue
OK, je ne comprends pas...

J'ai créé le fichier kimar0306.bcs suivant:

Code : Tout sélectionner

IF
  Global("KIMExists","LOCALS",0)
THEN
  RESPONSE #100
    SetGlobal("KIMExists","LOCALS",1)
    CreateCreature("KIM",[592.787],8)
END
Puis j'ai mis dans le TP2:

Code : Tout sélectionner

EXTEND_TOP ~INITRG06.bcs~ ~KIMNPC\kimar0306.bcs~
(Initrg06 est le script de Renal).

Ca MARCHE (donc les lignes sont bien rajoutées). Par contre, lorsque je rentre dans la pièce où se trouve Renal, le jeu plante. Est-ce que quelqu'un aurait une explication ?

Posté : sam. 25 oct. 2003, 10:07
par Ael'Zanna
Désolé moi m'y connait pas vraiment :sad:

Posté : sam. 25 oct. 2003, 10:11
par Grenouillebleue
Bon, je craque.
J'ai essayé autre chose, à savoir ce script:

Code : Tout sélectionner

IF
  Global("KIMExists","Ar0300",0)
THEN
  RESPONSE #100
    SetGlobal("KIMExists","Ar0300",1)
    CreateCreature("KIM",[1886.3052],8)* // ~Kim~
    ActionOverride("KIM",MoveBetweenAreas("AR0306",[586.737],8))
END
Et rajouté à la zone Ar0300.

Mais ça me fait planter la zone au chargement :8:
Je ne comprends pas l'erreur que j'ai pu faire ?

EDIT: même en enlevant le MoveBetweenAreas, ça plante... donc c'est dans le début du script que ça foire... AU SECOUUURS :snif:

EDITBIS: en remplaçant la variable area par une variable globale, ça ne donne pas de meilleurs résultats...

Code : Tout sélectionner

IF
  G("KIMExists",0)
THEN
  RESPONSE #100
    SG("KIMExists",1)
    CreateCreature("KIM",[1886.3052],8)* // ~Kim~
END
JE NE COMPRENDS PAS !

Posté : sam. 25 oct. 2003, 11:52
par Grenouillebleue
Problème réglé par une réinstallation de BGII... Bizarre, bizarre :heu:

Posté : sam. 25 oct. 2003, 12:06
par Silk
Ton programme ou toi avez du supprimer le fichier .bcs ce qui fait planter la zone (elle avait peut-être un .bcs spécial, ou ta méthode était mauvaise...)...

Posté : sam. 25 oct. 2003, 12:11
par Lamnis Valnon
Le bcs a déjà dû être customisé, et vu que tu l'as effacé, je pense que le jeu essayer de le prendre dans le biff, mais vu que certaines ressources manquaient... PAF !

Posté : sam. 25 oct. 2003, 12:19
par Grenouillebleue
Non, non, en fait je viens de comprendre, c'était lié à mon fichier .cre qui, à cause d'une erreur dans le TP2, lui associait un script de vampire.

Mais tout est réglé :diable:

Posté : mar. 28 oct. 2003, 19:13
par Isaya
Originally posted by Grenouillebleue@samedi 25 octobre 2003, 01:02
Comment puis-je faire dans ce cas ? J'ai essayé de créer un script AR0306.bcs et de le copier dans l'override, mais je ne connais pas la commande qui permet de l'associer à la zone en question...
A titre d'info, puisque tu as trouvé une autre solution : le script associé à la zone est défini dans le fichier .ARE. Il se trouve à partir de la position 0x94 (hexa) et occupe 8 caractères (omettre l'extension .bcs automatique).
Tu peux l'éditer avec Near Infinity ou DLTCEP ou IETME pour le tester chez toi. Dans un fichier d'installation WeiDU, tu dois pouvoir utiliser l'instruction WRITE_ASCII en précisant l'offset.

Edit: j'ai trouvé ce sujet sur les forums de Forgotten Wars qui te donnera tous les détails en bien plus précis.

Posté : lun. 22 mars 2004, 21:41
par Walar
Oui, c'est ça, je l'ai essayé moi-même dans quelques tests. (Au fait merci Isaya pour ta réponse sur les forums FWS)

Pour allouer un script a une aera qui n'en possède pas :

Code : Tout sélectionner

COMPILE ~XXX\V#AR0043.baf~
  COPY ~XXX\V#AR0043.are~ ~override\V#AR0043.are~
  WRITE_ASCII ~0x94~ ~V#AR0043
Cela alloue le script V#AR0043 à la zone V#AR0043.are qui n'a pas de script défini à la base.

Sinon j'ai une petite question, quelle est la différence entre cette commande et le fait d'uploader le fichier baldur.bcs ?
J'ai un doute, en fait les petites zones du jeu sont régies par le fichier baldur.bcs (car j'ai simplement utilisé la méthode de rajouter un script à baldur.bcs pour rajouter un ennemi dans une maison du district du pont, sans avoir à faire tout cela) ? Et donc à la base elles auraient déjà un script tout de même ? Ou bien je divague la ? :heu:

Posté : lun. 29 mars 2004, 16:20
par Walar
Personne pour m'expliquer cette différence ? ;)

Posté : lun. 29 mars 2004, 22:23
par Isaya
Si ton fichier ARE est nouveau, le plus simple est d'y indiquer directement le nom de ton script quand tu crées le fichier ARE. Comme tu sais le nom que le script aura une fois compilé, tu peux anticiper. C'est la même chose que pour les scripts que tu attribues à un personnage dans le fichier CRE. Cette méthode de patch avec WeiDU sert surtout quand tu veux ajouter un script à une zone existante qui n'en possédait pas.

Modifier le fichier baldur.bcs, c'est l'artillerie lourde et c'est franchement déconseillé. C'est la solution ultime quand aucune autre solution ne fonctionne. Bioware n'y a mis que ce qui ne pouvait pas être ailleurs (script de zone, de personnage, ...). Ce script tourne en permanence dans le jeu (où que tu sois) et plus il est gros, plus ton jeu ralentit. C'est notamment une des raisons pour lesquelles des gros mods comme TDD qui le surchargent sont plus lents que le jeu d'origine.
Pour rajouter quelqu'un à un endroit, il faut vraiment utiliser le script de la zone, quitte à devoir créer un script pour la zone s'il n'existait pas, avec la méthode indiquée plus haut.

Posté : lun. 29 mars 2004, 22:30
par Walar
Ah d'accord. Je crois que le simple fait de changer le script d'une zone de cette façon m'aurait éviter de passer plusieurs jours à trouver le moyen d'éliminer 2 roturiers, enfin je reverrais ça demain pfff... ;) J'avais très mal saisi la fonction du fichier baldur.bcs... Merci beaucoup.

:notme2:
Si ton fichier ARE est nouveau, le plus simple est d'y indiquer directement le nom de ton script quand tu crées le fichier ARE. Comme tu sais le nom que le script aura une fois compilé, tu peux anticiper. C'est la même chose que pour les scripts que tu attribues à un personnage dans le fichier CRE. Cette méthode de patch avec WeiDU sert surtout quand tu veux ajouter un script à une zone existante qui n'en possédait pas.

Euh, où est avec quel programme indique-t-on le script à la zone ? Je n'ai pas vu ce type de champ quand j'ai ouvert des fichiers *.are avec Map Editor.

Posté : mar. 30 mars 2004, 21:14
par Isaya
Tu y accèdes en cliquant sur le bouton "Area properties".
Near Infinity et DLTCEP sauront très remplir cette fonction également.

Cest utile pour tester directement dans le jeu. Pour l'installation avec WeiDU il te faudra utiliser le petit bout de script.

Posté : lun. 28 mars 2005, 18:31
par Angelus Crow
J'arrive un an après tout ça, mais bon... Il se trouve que j'ai eu besoin de rajouter un script à une zone du jeu qui n'en possédais pas, et qu'il y a une petite erreur (de syntaxe) dans le script de Walar :timide: .

Voici le code que j'ai utilisé :

Code : Tout sélectionner

COMPILE ~emplacement du script/script.baf~
COPY_EXISTING ~ARXXXX.ARE~* * * * * *  ~override/ARXXXX.ARE~
    WRITE_ASCII 0x94 ~script~
Je ne pense pas que le COMPILE ait besoin d'explication, il faut simplement veiller à ne pas dépasser 8 caractères pour le nom (sans l'extension).

Le COPY_EXISTING est utilisé parce que j'ai copié une zone déjà présente dans le jeu. Dans le cas d'une zone rajouté par vos soins, un COPY fait l'affaire, veiller toute fois à indiquer le chemin.

Le WRITE ASCII, enfin, était la cause de ma reprise. Il n'y a pas les tildes (~) autour de l'offset, mais autour du nom du script.

Vu que je me suis posé la question, j'ai pensé que ça pourrait servir à d'autres :) .

Posté : lun. 28 mars 2005, 18:59
par Walar
@Angelus Crow : l'offset peut en tout cas être entouré de ~, ça fonctionne également, mais c'est clair que si ça marche sans, il vaut mieux ne pas les mettre.

Par contre, j'avais effectivement oublié de mettre un ~ à la fin du script. ^^

Code : Tout sélectionner

COMPILE ~XXX\V#AR0043.baf~
COPY ~XXX\V#AR0043.are~ ~override\V#AR0043.are~
    WRITE_ASCII [color=gray]~[/color]0x94[color=gray]~[/color] ~V#AR0043[color=red]~[/color]