Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

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

Répondre
Avatar du membre
QDI
Araignée géante
Messages : 433
Enregistré le : mar. 28 juin 2005, 20:58
Localisation : Paris
Contact :
Statut : Hors ligne

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

.

Message 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:
Angelus Crow
Statut : Hors ligne
.

Message 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.
Avatar du membre
QDI
Araignée géante
Messages : 433
Enregistré le : mar. 28 juin 2005, 20:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message 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 ?
Sous Nain
Statut : Hors ligne
.

Message 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.
Avatar du membre
QDI
Araignée géante
Messages : 433
Enregistré le : mar. 28 juin 2005, 20:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message 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
Sous Nain
Statut : Hors ligne
.

Message 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.
Avatar du membre
QDI
Araignée géante
Messages : 433
Enregistré le : mar. 28 juin 2005, 20:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message 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 !
Sous Nain
Statut : Hors ligne
.

Message 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.
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message 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.
:!: 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 !
Avatar du membre
QDI
Araignée géante
Messages : 433
Enregistré le : mar. 28 juin 2005, 20:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message 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...
Angelus Crow
Statut : Hors ligne
.

Message 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~
Avatar du membre
QDI
Araignée géante
Messages : 433
Enregistré le : mar. 28 juin 2005, 20:58
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message 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
Répondre

Retourner vers « Scripts »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité