Affichage des résultats 1 à 20 sur 20

Discussion: [SCRIPT] Assister à un duel

  1. #1
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978

    [SCRIPT] Assister à un duel

    Le groupe du charname pourra assister à des duels.

    Dans ce cas, je désire qu'il:
    - qu'il regarde bien sagement le combat.
    - que le combat s'arrête à un certain niveau de blessure (test via HPPercentLT)
    - que le commentaire de la foule varie selon l'adversaire qui prend le dessus. ( affichage via Displaystringhead)
    - que selon l'issue du combat, l'annonce du résultat et de ses conséquences puisse varier.

    Je pensais utiliser une CUTSCENE mais je n'obtiens pas le résultat souhaité:
    - le combat se termine lorsqu'il y a un mort et ma CUTSCENE est toujours active.
    > les blocs des scripts liés au test du combat et de la santé des duellistes qu'ils soient dans le fichier baf CUTSCENE ou dans l'AREA ou des combattants n'interviennent pas pour stopper le combat.

    Je ne suis pas sur finalement que la cutscene soit la solution à utiliser.

    En plan B, je pense désactiver les PNJ via DEACTIVATE ou les mettre dans un état de paralysie sans afficher l'icone.

    Quel est votre point de vue?

  2. #2
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages
    4 209
    As-tu utilisé l'action ClearAllActions() ?

    Si oui, elle désactive les scripts des créatures...
    CARPE DIEM...
    Co-modérateur de La Forge
    Moddeur qui s'arrache les cheveux...

  3. #3
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978
    Je ne comprends pas le rapport.

    Le but est que les PNJ soient spectateurs.

  4. #4
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages
    4 209
    Citation Envoyé par Cocrane Voir le message
    Le groupe du charname pourra assister à des duels.

    Dans ce cas, je désire qu'il:
    - qu'il regarde bien sagement le combat.
    - que le combat s'arrête à un certain niveau de blessure (test via HPPercentLT)
    - que le commentaire de la foule varie selon l'adversaire qui prend le dessus. ( affichage via Displaystringhead)
    - que selon l'issue du combat, l'annonce du résultat et de ses conséquences puisse varier.

    Je pensais utiliser une CUTSCENE mais je n'obtiens pas le résultat souhaité:
    - le combat se termine lorsqu'il y a un mort et ma CUTSCENE est toujours active.
    > les blocs des scripts liés au test du combat et de la santé des duellistes qu'ils soient dans le fichier baf CUTSCENE ou dans l'AREA ou des combattants n'interviennent pas pour stopper le combat.

    Je ne suis pas sur finalement que la cutscene soit la solution à utiliser.

    En plan B, je pense désactiver les PNJ via DEACTIVATE ou les mettre dans un état de paralysie sans afficher l'icone.

    Quel est votre point de vue?
    La fonction ClearAllAction() désactive les scripts hors cutscene, d'où la possibilité de ne pas prendre en compte les tests sur les PV.
    CARPE DIEM...
    Co-modérateur de La Forge
    Moddeur qui s'arrache les cheveux...

  5. #5
    Date d'inscription
    February 2014
    Messages
    79
    As tu essayé d'arrêter la cutscene avec un dialogue? ActionOverride("credlg",StartDialogueNoSet("credlg2")) à la place de EndCutSceneMode()?
    Tu peux aussi essayé de faire plusieurs scènes en une seule, par exemple:

    IF
    True()
    THEN
    RESPONSE#100
    CutSceneID("cre1")
    Attack("cre2")
    END

    IF
    True()
    THEN
    RESPONSE#100
    CutSceneID("cre2")
    Attack("cre1")
    END

    IF
    HPPercentLT("cre1",30)
    THEN
    RESPONSE#100
    CutSceneID("cre1")
    StartCutScene("next1")

    IF
    HPPercentLT("cre2",30)
    THEN
    RESPONSE#100
    CutSceneID("cre2")
    StartCutScene("next2")

    //dans le script de la cutscene "next1"

    IF
    True()
    THEN
    RESPONSE #100
    CutSceneID("cre1")
    ActionOverride("cre2",StartDialogueNoSet("cre1"))

    //dans le script de la cutscene "next2"

    IF
    True()
    THEN
    RESPONSE #100
    CutSceneID("cre2")
    ActionOverride("cre1",StartDialogueNoSet("cre2"))

    Ce genre de passe-passe a tendance à marcher pour moi.

    Edit: il y'a aussi ce que Freddy dit sur ClearAllAction(). Personellement, j'ai tendance à ne pas m'en servir dans la cutscene elle même.
    Dernière modification par Kev ; 21/11/2015 à 17h43.

  6. #6
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978
    J'ai l'impression qu'on ne se comprend pas.

    Je veux déclencher un combat où:
    - le groupe n'intervient pas
    - la réaction de la foule varie selon le déroulement du combat
    - la fin est programmée lorsqu' un combattant atteint un certain degré de blessure.

    J'ai pensé au cutscène pour mettre le groupe de coté. Mais mon duel lorsque je le teste, se transforme en un combat à mort que je ne veux pas. Le test de blessure n'est pas pris en compte, qu'il soit dans le code du BAF de la custcène ou dans l'AREA ou le BAF d'un des deux CRE combattants.

    Donc je ne vois pas l'utilité d'un CLEARALLACTIONS.

    1-Déclenchement de la CUTSCENE via un dialogue
    IF ~~ THEN BEGIN 0
    SAY @1 /* ~Kurgan seigneur de la hache de la maison d'Ulbrock accepte le duel d'Altair d'Argol.

    Une blessure grave et le duel est remporté. Le vainqueur partira avec une hache et une épée!

    Le peuple de Baldur en est témoin. Faites place le duel va commencer!~ */

    IF ~~ THEN
    REPLY @2 /* ~(ne rien dire)~ */
    DO ~SETGLOBAL("DUEL_ALTAIR_KURGAN","GLOBAL",2)
    StartCutSceneMode()
    StartCutScene("CSALTA1")~ // Cutscene duel Altair vs Kurgan
    EXIT

    IF ~~ THEN
    REPLY @3 /* ~Je suis le Protecteur de Baldur et il n'y aura pas de duel! Dispersez vous!~ */
    GOTO 1

    IF ~~ THEN
    REPLY @4 /* ~Je suis le Protecteur de Baldur et je défie en duel le vainqueur.~ */
    DO ~SETGLOBAL("DUEL_ALTAIR_Protecteur","GLOBAL",1)
    SETGLOBAL("DUEL_ALTAIR_KURGAN","GLOBAL",2)
    StartCutSceneMode()
    StartCutScene("CSALTA1")~ // Cutscene duel Altair vs Kurgan
    EXIT
    END
    "



    2- Contenu du fichier CUSTCENE CSALTA1.BAF
    "
    IF
    True()
    THEN
    RESPONSE #100
    CutSceneId("KURGAP")
    wait(1)
    FadeTOColor([20.0],0)
    Wait(1)
    // placement de la foule et du groupe Charname
    Wait(1)
    MultiPlayerSync()
    Wait(1)
    FadeFromColor([20.0],0)

    // déclenchement du combat entre Kurgan et Altair: fin lorsqu'il y a un blessé grave
    ActionOverride("ALTAIP",Attack("KURGAP")
    ActionOverride("KURGAP",Attack("ALTAIP")
    END
    "

    3- Script testant l'état de Kurgan (par exemple)
    "
    // Si DUEL ALTAIR vs KURGAN: Duel gagné par Altair
    IF
    GLOBAL("DUEL_ALTAIR_KURGAN","GLOBAL",2) // Duel commencé
    HPPercentLT("KURGAP",50) // Points de vie inférieur à 50%
    THEN
    RESPONSE #100
    SETGLOBAL("DUEL_ALTAIR_KURGAN","GLOBAL",3) // Duel gagné par Altair

    EndCutSceneMode() // Arrêt du duel
    CLEARALLACTIONS()

    ACTIONOVERRIDE("SILVIP",StartDialogueNoSet(PROTAGONIST))
    END
    "
    Ce script n'intervient pas alors que Kurgan est blessé gravement.
    Dernière modification par Cocrane ; 22/11/2015 à 16h53.

  7. #7
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 637
    A ma connaissance, les "cutscene" coupent complètement la gestion normale des scripts. Leur forme d'écriture-même ne respecte pas la forme normale et leur prise en compte par le moteur ne respectent pas le principe général des scripts (bloc exécuté de manière séquentielle, alors qu'ils le sont en parallèle dans les cutscene). C'est pour cela que tu peux faire agir plusieurs acteurs d'un script en parallèle, alors que le bloc principal n'est pas achevé.
    Ces scènes sont toujours intégralement scriptées. Tout est réalisé par des enchainements dans le premier IF du script. La conséquence directe est que tu ne peux pas introduire le moindre test permettant de récupérer une variable t'informant que le combat est terminé et que c'est untel qui l'a remporté.
    Si tu veux introduire un élément aléatoire sur l'issue du combat, il te faudra créer deux scènes, selon qui l'emporte, et créer un troisième script, qui va lancer la scène, en faisant un tirage aléatoire pour décider qui va gagner puis lancer la scène correspondante.
    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 !

  8. #8
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978
    Oui, j'ai finalement noté que me mod custcène changeait les règles de gestion des scripts. Je pense que si je tiens à traiter des issues différentes comme le proposait Kev aussi, il va falloir lancer plusieurs cutscènes successives.

    J'ai noté des mots clés dans le IEDSP:
    "
    338 SetCutSceneLite(I:BOOL*BOOLEAN)
    338 CutAllowScripts(I:BOOL*BOOLEAN)
    338 SetCursorState(I:BOOL*BOOLEAN)
    This action starts a cutscene. Player control is removed, though all scripts keep running. Note that actions already in the action list are not cleared without an explicit call to ClearAllActions. The example script is from are0507.bcs.
    "

    Ca donne l'impression que l'on peut activer les scripts pendant une cutscène. Je n'ai pas noté d'exemples dans les mods que je t"ai téléchargé.

  9. #9
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages
    4 209
    De mémoire, j'ai utilisé 338 SetCutSceneLite(I:BOOL*BOOLEAN) dans un vieux script et ça fonctionnait parfaitement.
    Je ne l'ai pas encore retrouvé, raison pour laquelle je ne t'ai pas mentionné cette commande. Avec un exemple, c'est toujours mieux.
    CARPE DIEM...
    Co-modérateur de La Forge
    Moddeur qui s'arrache les cheveux...

  10. #10
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 637
    Citation Envoyé par Cocrane Voir le message
    Je n'ai pas noté d'exemples dans les mods que je t"ai téléchargé.
    Pas besoin de chercher des mods. Tu as des exemples dans Throne of Bhaal, en particulier, semble-t-il, dans la Tour de Garde, lorsque tu guides le guerrier dans une sorte d'aventure dont vous êtes le héros.
    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 !

  11. #11
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978
    J'ai DL tous les fichiers CUT*.BCS disponibles via BGT qui contiennent des cutscènes.

    J'ai trouvé aucun des 3 mots clés possibles. J'en déduis que leur utilisation se fait en dehors du .BAF du CUTSCENE.

    Le soucis c'est que ma dernière partie date. La tour de garde ce n'est pas l'extension BG1?

    En gros, si quelqu'un a une piste.

    Je vais essayer de faire un test sans.

  12. #12
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978
    "
    ...
    IF ~~ THEN
    REPLY @2 /* ~(ne rien dire)~ */
    DO ~SETGLOBAL("DUEL_ALTAIR_KURGAN","GLOBAL",2)
    StartCutSceneMode()
    CutAllowScripts(0)
    StartCutScene("CSALTA1")~ // Cutscene duel Altair vs Kurgan
    EXIT
    ...
    "

    Le dialogue fonctionne sans CutAllowScripts(0). Sinon j'ai un plantage à la compiliation:
    "
    [CutAllowScripts] not found in ACTION.IDS
    WARNING: cannot verify action ~SETGLOBAL("DUEL_ALTAIR_KURGAN","GLOBAL",2)
    StartCutSceneMode()
    CutAllowScripts(0)
    StartCutScene("CSALTA1")~: Parsing.Parse_error
    "

    Je suppose que mon installation BGT est incomplète.

  13. #13
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages
    4 209
    La séquence à laquelle fait référence Isaya est gérée par un dialogue qui te permet de choisir les actions de ton guerrier éthéré. Je l'ai étudié il y a très, très longtemps... Et je m'en étais inspiré pour pondre le script que j'ai mentionné.
    Je l'avais abandonné pour des raisons de scénar, mais il doit se trouver quelque part dans mes très anciennes sauvegardes. Dès que je mets la main dessus, je te le poste.


    Quant au tien, utilise SetCutSceneLite(I:BOOL*BOOLEAN), ça fonctionne. Je n'ai jamais rencontré CutAllowScripts().

    Dernière chose, vérifie que le fichier ACTION.ids contient bien la ligne SetCutSceneLite(I:BOOL*BOOLEAN).
    Dernière modification par Freddy_Gwendo ; 29/11/2015 à 03h59.
    CARPE DIEM...
    Co-modérateur de La Forge
    Moddeur qui s'arrache les cheveux...

  14. #14
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 637
    Toutes les cutscene ne se trouvent pas dans un script nommé CUTxxxx.BCS, les scripts peuvent porter d'autres noms. Il te suffit de faire une recherche de texte dans tous les fichiers BCS à partir de Near Infinity pour les identifier (Search, Text Search, BCS).
    Commence par ouvrir le fichier ACTION.IDS de ToB patché, il contient SetCursorState(I:BOOL*BOOLEAN) et SetCutSceneLite(I:BOOL*BOOLEAN) pour la valeur 338. Utilise un des deux noms pour chercher, cela suffira.
    Les scripts auxquels je faisais référence sont SCUT01.BCS et SCUT14.BCS. L'action sert aussi à l'affichage des biographies à la fin de ToB, mais je ne vois pas bien ce que cela pourrait apporter comme information pour ton usage.
    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 !

  15. #15
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978
    Le message WEIDU est cohérant. Le mot clé est manquant dans le fichier ACTION.IDS.

    De même pour SetCutSceneLite(I:BOOL*BOOLEAN). J'ai 324 mots clés dans le fichier et il se termine par:

    322 FakeEffectExpiryCheck(O:Object*,I:Ticks*)
    323 CreateCreatureImpassableAllowOverlap(S:NewObject*,P:Location*,I:Face*)
    324 SetBeenInPartyFlags()

  16. #16
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages
    4 209
    Bizarre, bizarre...
    Questions stupides :

    1. As-tu installé ToB ?
    2. As-tu installé le BG2 Fixpack ?

    Il me semble que tu as déjà eu des problèmes identiques avec des compteurs gtimes qui n'existaient pas dans ton installation.

    Sinon, rajoute ce code au début de ton tp2 :

    Code:
    APPEND ~ACTION.IDS~ ~338 SetCutSceneLite(I:BOOL*BOOLEAN)~
                 UNLESS ~338 SetCutSceneLite(I:BOOL\*BOOLEAN)~

    Édit :


    Quant à la ligne WARNING: cannot verify action ~SETGLOBAL("DUEL_ALTAIR_KURGAN","GLOBAL",2)

    Fais attention à la casse des commandes : les dialogues préfèrent SetGlobal. Utilise la bonne casse des actions, ça t'évitera des désagréments.
    Dernière modification par Freddy_Gwendo ; 29/11/2015 à 10h51.
    CARPE DIEM...
    Co-modérateur de La Forge
    Moddeur qui s'arrache les cheveux...

  17. #17
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978
    Je pense que dans ma dernière installation BGT, je n'ai pas installé le FIXPACK.

    Comment rattraper le coup de manière exhaustive sans mettre le bazar dans l'installation?

    Ok pour la casse, j'ignorai que c'était problématique pour le contenu d'un DO.

    Par contre, j'avais noté que 'do' en minuscule faisait râler WEIDU.

  18. #18
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages
    4 209
    Citation Envoyé par Cocrane Voir le message
    Je pense que dans ma dernière installation BGT, je n'ai pas installé le FIXPACK.

    Comment rattraper le coup de manière exhaustive sans mettre le bazar dans l'installation?
    Va dans le répertoire lib du Fixpack et consulte les fichiers ids_xxxx.tph et tob2soa.tph.
    Copie ceux qui t'intéressent dans un sous-répertoire lib de ton mod, puis lance le nombre de commandes INCLUDE nécessaires au début de ton tp2 :

    INCLUDE ~TonMod/lib/nom_du_fichier.tph~

    Comme ça, tu bénéficieras des fichiers ids patchés.
    CARPE DIEM...
    Co-modérateur de La Forge
    Moddeur qui s'arrache les cheveux...

  19. #19
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 637
    Citation Envoyé par Cocrane Voir le message
    Je pense que dans ma dernière installation BGT, je n'ai pas installé le FIXPACK.
    Cela n'a strictement rien à voir. Comme je l'ai déjà écrit, ces actions apparaissent dans une installation de base de ToB + patch. L'installation du fixpack ne modifie le fichier que pour ajouter plusieurs lignes à la fin (352 à 358 et une variante de 147).

    Le contenu que tu évoques (les 3 dernières lignes) correspond à un BG II sans ToB. Je dirais que tu as une installation bien pourrie dans ces conditions. Si tu as d'une façon ou d'une autre écrasé ce fichier IDS, peut-être d'autres ont-ils aussi souffert. Je pense que tu aurais plus qu'intérêt à réinstaller proprement.
    Les fichiers que Freddy te conseille d'utiliser ne corrigeront en rien ton fichier ACTION.IDS pour les actions manquantes par rapport au patch officiel, en particulier celles que tu cherches à utiliser.

    Le fixpack corrige des choses par rapport au patch officiel. Il ne corrigera pas ton installation incorrecte vis à vis du patch officiel.
    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 !

  20. #20
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    978
    Au moins les choses sont claires, j'ai une installation de merde voir un brun "pourrie" et il est urgent que je fasse une réinstallation.

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/08/2015, 20h11
  2. Réponses: 2
    Dernier message: 09/06/2015, 22h27
  3. [BG2][SOLUCE] Duel entre Mazzy et Gorf
    Par Wolfgren dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 2
    Dernier message: 22/07/2012, 18h21
  4. [Délire] PC vs Mac : le duel
    Par Smidge dans le forum Le Comptoir
    Réponses: 28
    Dernier message: 20/05/2011, 14h01
  5. [MOD] Duel entre joueurs dans une arène ?
    Par madjou dans le forum Le Bazar de l'Aventurier
    Réponses: 5
    Dernier message: 23/06/2005, 12h02

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249