Page 1 sur 1

[SCRIPT] Problème de compilation de script avec DLTCEP et WeiDU

Posté : dim. 03 juil. 2005, 23:39
par QDI
J'ai un fichier .baf à compiler en .bcs et je n'y arrive pas ! DLTC me demande de "set up" weidu, mais même si je l'ai lancé ça ne marche pas.
Si j'essaye directement sur weidu, il ignore mes commandes (sans doute mal tapées), que faire ?

j'ai bien regardé le readme, mais rien... :snif:

Posté : lun. 04 juil. 2005, 00:11
par Angelus Crow
Je n'ai jamais tenté la compilation de script avec DLTC et avec WeiDU, j'utilise un TP2. Cependant, quelles sont les commandes que tu as utilisé ?

Tant que j'y suis, comment comptes-tu te servir de ton script ?

Est-ce un ajout à un script existant ? Dans ce cas ce serait à compiler avec un EXTEND_BOTTOM ou EXTEND_TOP.
Est-ce un script pour une créature ou une zone qui n'en comprend pas à la base ? Dans ce cas un COMPILE suffit.

Posté : lun. 04 juil. 2005, 07:44
par QDI
En fait, je tente un truc peut-être ambitieux : faire pleuvoir à volonté. Or, il existe un script nommé "areatest" qui détermine il me semble le temps pour chaque zone. Je voudrais rajouté quelques lignes supplémentaires :

IF
HasItem("******",Myself)
THEN
RESPONSE #100
Weather(Rain)

Ca devrait marché, il suffit que ******* soit un objet que j'invente, puis que je crée un sort qui le crée.
J'ai retapé out le script AREATEST, avec mes lignes en plus, mais DLTC neveut pas le compiler, je me retrouve vec un fichier .baf

Pourrais-tu préciser ces commande Extend_BOTTOM et EXTEND_TOP (oùon les tapes...)

Moi, j'ai cru faire comme dan le readme en indiquant juste le chemin (C:\....) jusqu'à mon fichier.baf

Je vais essayer avec le tp2

Merci

Edit : Merci ! Ca marche avec le .tp2 et mes lignes de script apparaissent quand je lis AREATEST avec InfExp, seulement dans le jeu, ça ne marche pas, quelqun pourrait-il corriger mon script ?

Posté : lun. 04 juil. 2005, 12:46
par Sous Nain
Un composant du mod D0Tweak fait en sorte que lorsque le joueur équipe furie céleste, il se met à pleuvoir.
J'imagine que tu peux t'en inspirer.

En tout cas, ce mod ajoute les nouveaux scripts à la suite du baldur.bcs (script qui est executé en permanence) plutot qu'à areatest (que je ne connais pas).

A part ça, il est peut-être préférable de passer par autre chose que la création d'un objet dans l'inventaire.
Si un sort est le déclencheur, alors tu peux faire un effet de sort qui modifie une variable globale.
Le test serait alors du genre :
G("nom de la variable", valeur).

Bien sûr ça complique un peu plus (il faut penser à remettre la variable à sa vlaeur initiale), mais au moins il n'y a pas d'objet fantôme qui vient encombrer l'inventaire, voire faire lacher quelquechose au sol, etc.

Posté : lun. 04 juil. 2005, 16:04
par QDI
merci de te pencher sur la question, mais je n'arrive pas à trouver le mode DOTweak, même au bazar de l'aventurier.

Quand dans DLTC, après avoir écrit mes lignes de scripts, je colle le reste du script BALDUR que j'ai copié grâce à InfExp, c'est plein d'"erreurs" selon DLTC.

Exemple : DisplayStringHead(Player1,'Your thieves have returned from their missions.')

Not an integer. ca le fait surout (ou seulement ?) avec la command display string.

Quand je compare au script que je lis sur infexp, c'est bien le même.

Est-ce parce que le mien est au format .baf (DLTC ne veut pas enregistrer au format bcs, comme je l'ai expliqué.) ?

je suis vraiment pas un pro de informatique, si quelqu'un pouvait me faire ce script (ya trois lignes à rajouter) et me l'envoyer, il aurait ma gratitude éternelle.


Pour l'Histoire des variables, je ne sais pas du tout comment ça fonctionne, pour l'instant, je vais me contenter de créer un objet qui déclenchera le script (à moins que la bonne âme ne soit un saint, mais je n'en demande vraiment pas autant).

Merci d'avance

Posté : lun. 04 juil. 2005, 16:41
par Sous Nain
Bon voilà le code qui est ajouté avec D0Tweak.
Grosso-modo, 3 situations :

1) Le joueur vient d'équiper furie céleste dans une zone où il peut pleuvoir, et donc le script fait pleuvoir, et active un timer.
2) Le joueur a déjà équipé furie céleste, et le timer est expiré -> on le remet en route.
3) Le joueur n'a plus furie céleste (et le timer est expiré) -> on change la variable afin de savoir que c'est fini.

Code : Tout sélectionner

IF
  OR(12)
       HasItemEquipedReal("sw1h51",Player1)
       HasItemEquipedReal("sw1h51",Player2)
       HasItemEquipedReal("sw1h51",Player3)
       HasItemEquipedReal("sw1h51",Player4)
       HasItemEquipedReal("sw1h51",Player5)
       HasItemEquipedReal("sw1h51",Player6)
       HasItemEquipedReal("c2sw1h02",Player1)
       HasItemEquipedReal("c2sw1h02",Player2)
       HasItemEquipedReal("c2sw1h02",Player3)
       HasItemEquipedReal("c2sw1h02",Player4)
       HasItemEquipedReal("c2sw1h02",Player5)
       HasItemEquipedReal("c2sw1h02",Player6)
  AreaType(WEATHER)
  Global("D0CFEquipped","GLOBAL",0)
THEN
    RESPONSE #100
             SetGlobal("D0CFEquipped","GLOBAL",1)
             SetGlobalTimer("D0CFRain","GLOBAL",300)
             Weather(RAIN)
             Continue()
END

IF
  OR(12)
       HasItemEquipedReal("sw1h51",Player1)
       HasItemEquipedReal("sw1h51",Player2)
       HasItemEquipedReal("sw1h51",Player3)
       HasItemEquipedReal("sw1h51",Player4)
       HasItemEquipedReal("sw1h51",Player5)
       HasItemEquipedReal("sw1h51",Player6)
       HasItemEquipedReal("c2sw1h02",Player1)
       HasItemEquipedReal("c2sw1h02",Player2)
       HasItemEquipedReal("c2sw1h02",Player3)
       HasItemEquipedReal("c2sw1h02",Player4)
       HasItemEquipedReal("c2sw1h02",Player5)
       HasItemEquipedReal("c2sw1h02",Player6)
  AreaType(WEATHER)
  Global("D0CFEquipped","GLOBAL",1)
  !GlobalTimerNotExpired("D0CFRain","GLOBAL")
THEN
    RESPONSE #100
             SetGlobalTimer("D0CFRain","GLOBAL",300)
             Weather(RAIN)
             Continue()
END

IF
  OR(2)
    !HasItemEquipedReal("sw1h51",Player1)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("sw1h51",Player2)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("sw1h51",Player3)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("sw1h51",Player4)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("sw1h51",Player5)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("sw1h51",Player6)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("c2sw1h02",Player1)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("c2sw1h02",Player2)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("c2sw1h02",Player3)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("c2sw1h02",Player4)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("c2sw1h02",Player5)
    !AreaType(WEATHER)
  OR(2)
    !HasItemEquipedReal("c2sw1h02",Player6)
    !AreaType(WEATHER)
  Global("D0CFEquipped","GLOBAL",1)
THEN
    RESPONSE #100
             SetGlobal("D0CFEquipped","GLOBAL",0)
             Continue()
END

D'autre part, je te conseille vraiment de compiler via un .tp2, c'est plus simple :
- dans ton dossier bg2 : tu met ton fichier .baf dans un dossier disons "test", et une copie de "WeiDU.exe" que tu renomme en Setup-Test.exe (à la racine du dossier cette fois).
- dans ton dossier "test", tu créer un dossier "backup" (vide), ainsi qu'un dossier "compile" où tu met tes scripts.
- toujours dans le dossier bg2, tu crée un fichier texte Setup-Test.tp2
A l'intérieur, tu tape :

Code : Tout sélectionner

BACKUP ~test/backup~
AUTHOR ~~

ALLOW_MISSING ~test/setup.tra~
LANGUAGE ~French~ ~test~ ~test/setup.tra~

BEGIN ~test~

COMPILE ~test/compile~
Ensuite, il te suffit de lancer Setup-Test, et d'installer le composant pour que ça te compile tes scripts en .bcs, que tu trouveras dans le dossier override de bg2.

Posté : lun. 04 juil. 2005, 17:05
par QDI
Merci beaucoup !

Malheureusement, il y a toujours le problème des "erreurs" que cntiendrait le script baldur.baf que j'ai crée, bien qu'il provienne directement d'un copier coller comme je l'ai expliqué.

Quand je lance l'installation avec le setup-xxx, il s'arrête et me dit baldur.baf contient des erreurs ligne 560, comme DLTC, mais je ne sais comment corriger ces erreurs.

Sinon, peut-être est-ce que je peux créer un script avec juste mes lignes,puis trouver un moyen de les faire ajouter à baldur.bcs.

Merci à tout ceux qui peuvent se pencher sur mon problème !

Posté : lun. 04 juil. 2005, 18:15
par Sous Nain
Oh... autant pour moi.

Dans ton cas, tu ne veux pas seulement compiler ton script, mais aussi l'ajouter à la fin du baldur.bcs
Donc en fait il ne faut pas utiliser la commande COMPILE mais plutot EXTEND_BOTTOM comme te l'avait conseillé Angelus Crow.

Donc au lieu du COMPILE ~test/compile~ tu met :

Code : Tout sélectionner

EXTEND_BOTTOM ~baldur.bcs~ ~test/nom_du_script.baf~
en ayant bien sûr pris soin de mettre ton script dans le dossier test.

Donc du coup, tu as juste besoin de mettre les lignes à rajouter dans ton script.


Ensuite, s'il te reste des erreurs, poste aussi le passage où ça bug pour qu'on puisse t'aider.

Posté : lun. 04 juil. 2005, 20:28
par Isaya
Pour configurer WeiDU dans DLTCEP, c'est très simple. Tu vas dans la fenêtre de Settings et tu cliques sur le bouton WeiDU. Il ne te reste plus qu'à pointer l'endroit où tu as installé WeiDU.
Il ne faut jamais recopier un script ! Les programmes comme Infinity Explorer décodent les scripts et remplacent les renvois vers le fichier dialog.tlk par les textes en question. Du coup, le script n'est plus compilable. L'outil d'affichage est pratique pour la lisibilité mais pas fait pour le copier coller. Utilise plutôt DLTCEP (une fois WeiDU configuré) pour lire des scripts existants.

Les solutions à base de fichier TP2 marchent évidemment bien. Mais pour de simples tests, c'est un peu fastidieux, alors n'hésite pas à utiliser DLTCEP même s'il te faudra au final passer par un fichier TP2 pour que le mod soit diffusable.

Posté : lun. 04 juil. 2005, 21:21
par QDI
Merci beaucoup à tous les trois, je vois ça immédiatement !

Edit : bon, j'ai bien réussi à ajouter mon script à baldur.bcs, mais aucun effet (note, j'ai commencé une nouvelle partie, et hop un coup de CLUA pour les envoyer sur la promenade de waukyne).

Voilà les lignes que j'ai rajouté, en m'inspirant du truc de DOTweak

IF
AreaType(WEATHER)
PartyHasItem("POTN08") // ~Potion de soins~
THEN
RESPONSE #100
Weather(RAIN)
SetGlobalTimer("DOCFRAIN","GLOBAL",300)
Continue()
END

Peut-être les lignes
Global("D0CFEquipped","GLOBAL",0)
SetGlobal("D0CFEquipped","GLOBAL",1)


sont-elles obligatoires... je n'y connais rien.

RE-Edit : je m'inquiètes un peu, j'ai ajoté le script exect de DOTweak que m'a passé sous nain : il ne pleut toujours pas quand j'équipes un personnage avec furie céleste !

Comprend pas...

Posté : lun. 04 juil. 2005, 23:12
par Angelus Crow
Une question peut-être un peu bête, mais bon... Ton fichier baldur.bcs modifié est-il bien dans le dossier override du jeu ?

J'en profite pour modifier un peu la ligne donnée par Sous Nain (je n'ai pas testé, la copie se fait peut-être d'office mais bon... on est jamais trop prudent ^^ ).
COPY_EXISTING ~baldur.bcs~ ~override~
EXTEND_BOTTOM ~baldur.bcs~ ~emplacement_de_ton_script/tonscript.baf~

Posté : lun. 04 juil. 2005, 23:39
par QDI
Oui, oui ! le fichier y est.
D'ailleurs, quand j'ouvre baldur dans script (pas avec load external files, directement) avec infexp, les lignes du DOTweak apparaissent.
merci pour ta commande rectifiée, parce que cela ne se produisait pas avant.

Ca marche !!! En copiant d'un peu plus près le script de DOTweak (j'espère qu'il y a pas de droits d'auteurs ;) ), je parviens à faire pleuvoir sur commande !!
merci à tous !

Edit : bon, je pars demain (aujourd'hui) en vacances, je reprendrai tout cela à mon retour dans quinze jours, merci beaucoup