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] Ma Cutscene ne fonctionne pas...

Répondre
Anury
Statut : Hors ligne

[SCRIPT] Ma Cutscene ne fonctionne pas...

.

Message 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
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 »

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.
:!: 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 !
Anury
Statut : Hors ligne
.

Message 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
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 »

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.
:!: 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 !
Anury
Statut : Hors ligne
.

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

Retourner vers « Scripts »

Qui est en ligne

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