Page 1 sur 1

DisplayStringHead coupe les actions en jeu, est-ce-normal ?

Posté : mer. 13 avr. 2022, 17:49
par deratiseur
Si je veux créer un berserker qui chante des psaume de la bible lorsqu'il est en mode bersek, "DisplayStringHead @x" dans son script lui fait arrêter d'attaquer.
Si je veux créer un barde dont je veux afficher les paroles de la chanson quand il chante, "DisplayStringHead @x" dans son script lui fait arrêter de chanter.

Est-ce normal ?

Note, le script est comme ceci :

Code : Tout sélectionner

IF
    ModalState(BATTLESONG)
THEN
    RESPONSE #100
        DisplayStringHead(Myself,@80691491)
        Wait(3)
        DisplayStringHead(Myself,@80691492)
        Wait(3)
        DisplayStringHead(Myself,@80691493)    
        Wait(3)
        DisplayStringHead(Myself,@80691494)
END

Posté : mer. 13 avr. 2022, 18:24
par Cocrane
Salut Dérat,

je pense que oui. Tu annonces une action à la créature. Elle prend le pas sur celle d'avant.

Si tu veux juste, afficher un texte et que le PNJ reprenne son combat aussitot (du coup transparant), je pense qu'il faut couper ton code en 3 tests avec un timer pour lancer le suivant au bou de quelques secondes. Le dernier texte pouvant boucler avec le premier si tu gères une variables à chaque étape.

Posté : mer. 13 avr. 2022, 18:46
par deratiseur
Problème avec le chant de barde -> quand il est lancé, il faut attendre un round avant de voir ses premiers effets. je ne peux donc pas le faire chanter/afficher/chanter/afficher/chanter/afficher -> c'est mort :(

Posté : mer. 13 avr. 2022, 19:03
par Cocrane
OK pour le cas du barde.

Est ce qu'avec l'effet Chanson, on peut associer un texte?

Posté : mer. 13 avr. 2022, 20:23
par deratiseur
Probablement, mais de toute façon l'effet de la chanson est répété en boucle, donc non évolutif -> une seule phrase, répétée, répétée, répétée.....

Posté : mer. 13 avr. 2022, 20:52
par Cocrane
Et si tu enchaînes 3 effets à la suite. ;)

Posté : ven. 15 avr. 2022, 20:26
par Freddy_Gwendo
Sinon, je n'ai jamais essayé DisplayStringNoName(O:Object*,I:StrRef*). À tester, car s'il ne prend pas en compte le perso, il en est peut-être de même avec sa liste d'actions.

Posté : mar. 09 août 2022, 17:41
par deratiseur
Après avoir testé StringNoName et vu que ça ne me convenait pas (la chanson dans le log c'est moyen), et qu'en plus ça coupe aussi les actions, j'ai été déçu.

Mais j'ai trouvé la solution :) Wait() n'est pas considéré comme une action, alors :

Code : Tout sélectionner

IF
    ActionListEmpty()
    !ModalState(BATTLESONG)
THEN
    RESPONSE #100
        IncrementGlobal("pxl2mickchant","LOCALS",1)
        BattleSong()
END

IF
    ModalState(BATTLESONG)
    Global("pxl2mickchant","LOCALS",0)
THEN
    RESPONSE #100
            Wait(4)
        DisplayStringHead(Myself,@72212)
END

IF
    ModalState(BATTLESONG)
    Global("pxl2mickchant","LOCALS",1)
THEN
    RESPONSE #100
            Wait(4)
        DisplayStringHead(Myself,@72213)
END    

IF
    ModalState(BATTLESONG)
    Global("pxl2mickchant","LOCALS",2)
THEN
    RESPONSE #100
            Wait(4)
        DisplayStringHead(Myself,@72214)
END    

IF
    ModalState(BATTLESONG)
    Global("pxl2mickchant","LOCALS",3)
THEN
    RESPONSE #100
            Wait(4)
        DisplayStringHead(Myself,@72216)
END    

IF
    ModalState(BATTLESONG)
    Global("pxl2mickchant","LOCALS",4)
THEN
    RESPONSE #100
            Wait(4)
        DisplayStringHead(Myself,@72218)
        SetGlobal("pxl2mickchant","LOCALS",0)
END
Laisse mon bonhomme chanter 4 secondes, puis il dit son texte, puis il repasse en chanson pour 4 secondes, puis il dit son texte, puis il repasse en chanson pour 4 secondes.... etc.
Ça marche pour Mickael Klaxon, il invoque les zombies moins vite que en mode "chanson sans parole" mais il en invoque assez pour être utile, tout en chantant "C'est presque minuit" " Le mal menace dans l'ombre"....