Page 1 sur 1

[SCRIPT] Ma Cutscene ne fonctionne pas...

Posté : dim. 13 juin 2004, 18:41
par Anury

Code : Tout sélectionner

IF
  InParty("K'niyl")
  Global("Harperso","GLOBAL",0)
THEN
  RESPONSE #100
    SetGlobal("Harperso","GLOBAL",1)
    StartCutSceneMode()
    CutSceneId("K'niyl")
    GiveItem("Ring39","K'niyl")
    FadeToColor([5.0],0)
    CreateCreature("ARNGRL01",[2535.1246],0)
    Face(6)
    ActionOverride("ARNGRL01",ChangeAnimation("CLERIC_FEMALE_ELF"))
    FadeFromColor([5.0],0)
    MoveViewPoint([2535.1246],INSTANT)
    ActionOverride("ARNGRL01",DisplayStringHead(Myself,79208))
    Wait(5)
    MoveToPoint([2542.316])
    MoveViewPoint([2542.316],INSTANT)
    DisplayStringHead(Myself,79209)
    MoveToPoint([2603.814])
    DisplayStringHead(Myself,79210)
    Wait(3)
    MoveViewPoint([2535.1246],INSTANT)
    CutSceneId("ARNGRL01")
    DisplayStringHead(Myself,79211)
    Face(12)
    SmallWait(8)
    MoveToPoint([2392.1011])
    DisplayStringHead(Myself,79212)
    SmallWait(5)
    MoveToPoint([2527.301])
    CutSceneId("K'niyl")
    DisplayStringHead(Myself,79213)
    Wait(3)
    ActionOverride("ARNGRL01",DisplayStringHead(Myself,79214))
    Wait(3)
    DisplayStringHead(Myself,79215)
    Wait(3)
    ActionOverride("ARNGRL01",DisplayStringHead(Myself,79216))
    Wait(3)
    DisplayStringHead(Myself,79217)
    Wait(3)
* ActionOverride("ARNGRL01",DisplayStringHead(Myself,79218))
* Wait(2)
* ActionOverride("ARNGRL01",DisplayStringHead(Myself,79219))
* Wait(3)
* DisplayStringHead(Myself,79220)
    Wait(3)
    ActionOverride("ARNGRL01",DisplayStringHead(Myself,79221))
    Wait(2)
    ActionOverride("ARNGRL01",DisplayStringHead(Myself,79222))
    Wait(3)
    DisplayStringHead(Myself,79223)
    Wait(3)
    ActionOverride("ARNGRL01",DisplayStringHead(Myself,79224))
    ActionOverride("ARNGRL01",MoveToPointNoInterrupt([2760.967]))
    DisplayStringHead(Myself,79225)
    ActionOverride("ARNGRL01",DisplayStringHead(Myself,79226))
    ActionOverride("ARNGRL01",ForceSpellPoint([2760.967],WIZARD_DIMENSION_DOOR))
    ActionOverride("ARNGRL01",DestroySelf())
    DisplayStringHead("K'niyl",79227)
    EndCutSceneMode()
END
Voilà mon script. Il utilise des fonctions simples dont j'ai vérifié les fonctions grâce à IESDP et NI.
Seulement, il ne marche pas et je n'arrive pas à comprendre pourquoi.

Plusieurs éléments pouvant aider ceux qui pourraient éclairer ma lanterne :

- Ce script se place à la fin de AR1000.bcs. Que je modifie ce dernier grâce à NI ou WeiDU (par le biais d'un TP2) ne change rien à mon problème.

- Les seules lignes de codes que le jeu a l'air de comprendre sont :

Code : Tout sélectionner

       Global("Harperso","GLOBAL",0)
       SetGlobal("Harperso","GLOBAL",1)
       StartCutSceneMode()
       EndCutSceneMode()
       Et toutes les lignes de mouvement de caméra
Ainsi donc si je garde IF InParty("K'niyl") ... la cutscene ne se lance pas mais si je supprime la ligne ou si je la remplace par IF InParty(Player1), ça marche

- J'ai donc pensé que le script tournerais mieux si je remplaçait tous les "K'niyl" par Player1. Et bien non.

- Les stringref correspondent à des phrases que j'ai ajouté grâce à WeiDU et lorsque j'ouvre le script avec NI, il les reconnais. Seulement je n'ai pas réussit à faire un script comportant des fonctions DisplayStringHead() qui fonctionnent. Et, chose plus étrange à mon goût, si je met 2811 comme stringref, on entends le son inhérent à cette phrase.

Donc voilà, je sucite l'aide de chacun afin de m'aider à faire un script qui marche, c'est a dire qui déclenche une animation si K'niyl et lui seul (cas d'une partie multi) entre dans le district du gouvernement (Area1000) et qu'il reçoive un objet. Pour le moment, l'objet et les phrases affichées m’importent peu, étant donné que ce ne sont que de vulgaires détails facilement réglables.

Je serais reconnaissant envers ceux qui m'aideront à trouver où se situe l'erreur et m'aideront donc à poursuivre la programmation sous BG2



Anury, bouffonne aux connaissances limitées

Posté : lun. 14 juin 2004, 23:51
par Isaya
Je crois qu'en général, les scènes ainsi scriptées sont mises dans un fichier script à part dont la seule condition de déclenchement dans le IF est une condition toujours vraie telle que True(). C'est en tout cas ce que j'ai pu constater dans les scènes similaires de TDD.
Peut-être pourrais-tu essayer de faire la même chose ici, en mettant tout ce que tu avais entre StartCutSceneMode() et EndCutSceneMode() dans un script que tu appelles avec la commande StartCutScene("Nom du script").
Des commandes telles que ClearAllActions() avant de lancer la scène sont aussi utiles pour s'assurer qu'aucune action en cours ne vienne perturber la scène.

Comme toujours, l'observation de ce qui est utilisé dans le jeu ou dans les mods est souvent une bonne inspiration, à défaut de comprendre tous les mécanismes mis en jeu.

Posté : mar. 15 juin 2004, 21:30
par Anury
C'est ce que j'avais fait au début, j'avais créé un .bcs à part mais quand j'ai vu qu'il y avait des problèmes (le script se lançait pas parcequ'il ne reconnais pas K'niyl) j'ai tout mis dans le même pour éviter de me perdre dans les fichiers. Sinon, merci pour le ClearAllAction(), il est vrai que je n'avais pas pensé à utiliser cette comande.

Sinon, une information de plus que j'avais oublié de donner.
Au début, j'ai essayé de faire le script avec InfinityScriptEditor (mais j'ai arrété, il me fout la selle dans le TLK) et lorsque je voulais compiler, il me mettais une erreur pour toutes les lignes d'actions (après le RESPONSE #100) en disant qu'il avait pas trouvé la fonction dans trigger.ids :S

EDIT : :snif: malheureusement, l'utilisation de ClearAllAction() ne résoud en rien mes problèmes

Posté : mar. 15 juin 2004, 22:37
par Isaya
Dans les scripts, il ne faut pas utiliser le nom du personnage mais sa "death variable" qui identifie un personnage de façon unique dans les scripts (certains comme Near Infinity l'appellent aussi "script name"). Il faut donc que tu utilises le nom que tu as affecté à la "death variable" de ton personnage lorsque tu utilises InParty().
La "death variable" n'est pas nécessairement le nom du personnage. Vérifie la valeur que tu as indiquée quand tu as créé le fichier CRE de ton personnage et utilise ce nom plutôt.

Posté : mer. 16 juin 2004, 21:38
par Anury
Et comment faire pour connaitre la death variable d'un perso créé par l'option "nouveau jeu" ? C'est le nom que l'on voit dans NI lorsqu'on ouvre Baldur.gam (zone : Player Character) ou ça n'a rien à voir ?



Anury, qui comprends maintenant pourquoi ça marche pas