Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 30 sur 50

Discussion: [MOD] Mod Sheratan: pot-pourri de problèmes techniques

  1. #1
    Rimbaud Invités

    [MOD] Mod Sheratan: pot-pourri de problèmes techniques

    Bon. Toujours dans ma quête de l'infinie clarté, je crée un topic spécialement pour tous les problèmes techniques que je vais rencontrer pour mon mod, histoire de ne pas vous inonder avec une foule de topics inutiles.

    Grâce à Pocket Plane Group, j'ai déjà plus de facilités pour créer mon mod. Cependant, je me pose encore la question de base qui me semble capitale: comment créer mon mod pour SoA et ToB en même temps? Exemple: j'ai crée un fichier .2da pour les capacités spéciales. Les levels vont jusqu'au 40 mais est-ce que pour autant, cela signifie que mon mod va aussi sur ToB? Quelles sont les options à cocher et dans quel logiciel dois-je aller pour installer le mod à la fois sur SoA et sur ToB? Merci d'avance
    Dernière modification par Rimbaud ; 31/12/2007 à 13h57.

  2. #2
    Date d'inscription
    April 2003
    Localisation
    En migration
    Messages
    1 140

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Il semblerait que le mod que tu veux faire est un mod de Kit.

    Je ne suis pas un spécialiste mais il me semble que pour que le kit soit compatible, ToB il faut 2 choses :
    • comme tu l'as dit, les niveaux jusqu'à 40 dans le fichier CLAB
    • Rajouter un ligne tout à la fin de du ADD_KIT dans ton setup. Cette ligne donne la liste de l'équipement du PJ au début de ToB. (Elle sera ajoutée au 25STWEAP.2da)
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un MPResponsable de la maintenance du mod Kim

  3. #3
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Merci pour ta réponse, Deecy. Pour ToB, ça m'a l'air d'être ça en effet. Par contre non ce n'est pas un kit de classe, les capacités spéciales sont des innate abilities, qui dépendent de la race, et j'aimerais justement qu'elles augmentent avec les niveaux. Alors autant je sais faire ça ds le cadre d'un kit de classe, autant je sais créer des innate abilities, autant les faire augmenter avec les niveaux non ça je ne vois pas comment..Sinon tant pis, je me contenterai d'innate abilities fixes.

    En fait, je crois que je vais faire comme deratiseur m'a dit: un kit de classe d'abord que j'incluerai dans le chara. Parce que en fait, j'aurais besoin que sa classe de rôdeur puisse utiliser les armes de guerrier avec le max de ***. Vu que c'est codé en dur, je me demande justement si c'est possible.
    Dernière modification par Rimbaud ; 02/01/2008 à 12h10.

  4. #4
    Date d'inscription
    December 2007
    Messages
    1 244

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Le moyen le plus simple serait peut-être de faire un kit de classe de guerrier avec les caractéristiques du rôdeur+celles que tu veux mettre à ton kit. Comme ça, aucune restriction de départ, tu peux faire ce que tu veux
    Bio RP
    Contre le cliché "Kivan" : Coran est bien plus puissant que lui avec un arc entre les mains !!!
    La Communauté de Château-Suif -------- Légendes, modding pour Baldur's Gate

  5. #5
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    J'y ai réfléchi t'inquiète, mais il semblerait qu'un kit de guerrier exclut totalement l'icone de camouflage dans les ombres. C'est du coddage en dur, pas moyen de changer ça. :s

  6. #6
    Date d'inscription
    December 2007
    Localisation
    GAP, Hautes alpes
    Messages
    1 708

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Tu peux très bien faire un kit de rôdeur et l'autoriser à monter à 5 dans les compétence d'arme. Mais ça reste quand même bien trop bourrin. (vu qu'il a des sorts de druide et des compétences qu'un guerrier n'a pas)

    Pour les compétences qui augmentent à chaque lvl c'est très facile, c'est la même chose que d'augmenter la resistance au dégâts. Dans les effets de sort tu as "modifier la compétence ..."

    Par exemple tu fais un sort qui augmente le camouflage de 5 et tu fait appliquer ce sort tous les 2 lvls dans ton clad.2da.

    Si tu veux qu'il invoque des ombres de plus en plus puissante suivant son lvl, tu vas devoir créer chaque ombre séparément (une par lvl), et à chaque lvl tu appliques un sort innée qui :
    1. enlève l'ancienne compétence d'appel d'ombre lvl x
    2. ajoute la nouvelle compétence d'appel d'ombre "x+1"

    Si ce n'est pas de genre de chose que tu veux faire, contacte moi sur msn, j'essaierais de t'aider.

  7. #7
    Date d'inscription
    December 2007
    Messages
    511

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Ton message signifie-t'il que tu es en panne d'inspiration où que la romance ne s'enclenche pas?

  8. #8
    Date d'inscription
    October 2003
    Localisation
    Pas loin...
    Messages
    4 123
    A mon avis, son message signifie qu'elle a envoyé trop tôt et qu'elle est en train d'éditer pour finir sa phrase
    Elzen (mon blog, le Livre d'Argent). Statut : Plus ou moins dispo.
    RP : Angus Mivert, barde bricoleur (#3CB371ma fiche).
    Auteur de la Gigue des Ombres ; initiateur de feu le Projet nBg.
    Supercalifragilisticexpialidocious, Kupo !!

  9. #9
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Arf, je pensais pas avoir à le remonter avant un moment, ce topic.

    Voilà le problème: j'ai commencé à programmer la romance, et j'ai donc écrit un premier script ainsi que le .d correspondant.
    Les voici:

    #Sher.baf (extrait)

    // ROMANCE / AMITIE
    // Dialogue 1

    IF
    Global("#SherQuest1","GLOBAL",-1)
    THEN
    RESPONSE #100
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END

    IF
    GlobalTimerExpired("#SherTimer","LOCALS",ONE_DAY)
    InParty("#Sheratan")
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    THEN
    RESPONSE #100
    IncrementGlobal("#SherMatch","GLOBAL",1)
    IncrementGlobal("#SherRomanceActive","GLOBAL",1)
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    StartDialogNoSet("#SherJ",Player1)
    END


    #Sher.d (extrait, l'important est en orange)

    // Blocs communs
    IF ~~ THEN BEGIN SyvaneBenisse
    SAY @78
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)
    LeaveParty()
    EscapeArea()~ EXIT // Sheratan quitte la party et la zone.
    END
    IF ~~ THEN BEGIN Projet
    SAY @79
    IF ~~ THEN REPLY @80 GOTO MauvaiseIdee
    IF ~~ THEN REPLY @81 GOTO Ami
    END
    IF ~~ THEN BEGIN MauvaiseIdee
    SAY @82 = @84
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)~ EXIT
    END
    IF ~~ THEN BEGIN Ami
    SAY @83 = @84
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)~ EXIT
    END

    // ROMANCE/AMITIE
    // DIALOGUE 1
    IF ~Global("#SherMatch","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherLoveTlk","LOCALS",1)
    GlobalTimerExpired("#SherTimer","LOCALS",ONE_DAY)~ THEN BEGIN RomanceTalk1
    SAY @120
    IF ~~ THEN REPLY @121 GOTO Compagnons
    IF ~~ THEN REPLY @123 GOTO Compagnons
    IF ~~ THEN REPLY @122 GOTO Etroit
    END

    Avec ceci installé, Sheratan, une fois la quête accomplie (#SherQuest1","GLOBAL",-1), a du mal à avancer, c'est le seul effet que j'ai constaté.
    Je précise également que j'ai vérifié la variable avec la CLUA, et elle est bien à -1.
    Et j'ajoute pour finir que j'ai regardé dans le tutorial romance de Rasthor en plus des conseils de Deecy.
    Etant donné que je travaille dessus depuis hier avec 8 heures au compteur, sur ce seul premier dialogue, j'ai plus vraiment le choix que de demander de l'aide ici. Enfin tout ceci a eu le mérite de me faire assimiler le système de variables, c'est déjà ça de pris.
    Avec ce modèle, ça devrait aller pour la suite.

    Qu'est-ce qui cloche?

    Merci de votre aide

    EDIT: ma souris est morte, elle fait n'importe quoi. %@*!
    Dernière modification par Rimbaud ; 01/03/2008 à 21h09.

  10. #10
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Si ton personnage a du mal à avancer, c'est probablement parce que son script n'arrête pas de déclencher quelque chose en boucle.
    J'ai un suspect dans ce que tu as montré, et d'ailleurs tu ne l'avais pas mis en orange. Je serais même prêt à parier dessus.

    Tu dis que la quête a déclenché la mise à -1 de la variable de quête. Dans ton script, lorsque la variable #SherQuest1 est à -1, tu fais quelque chose, mais tu ne modifies pas la variable. Du coup, ton script va répéter sans arrêt l'action en question, la mise à jour du timer. Deux conséquences :
    1. Comme ton script n'arrête pas de répéter ça, ton personnage est fortement gêné dans ses actions (le fameux "stutter bug" en anglais)
    2. L'expiration de ton timer est sans cesse repoussée puisque le script n'arrête pas de réévaluer la variable de fin donc, à supposer que tu aies la patience d'attendre un jour avec un personnage qui réagit mal, tu ne seras pas récompensée puisqu'à chaque instant ton script repousse l'expiration d'un jour


    Solution simple : dans le premier bloc, mets la variable à autre chose que -1 une fois que tu as programmé le timer.

    Et un pas de plus de franchi dans la compréhension des variables !

    Une autre petite chose (dans le dialogue et dans le script) :

    GlobalTimerExpired s'utilise avec deux paramètres seulement. GlobalTimerExpired("#SherTimer","LOCALS") suffit puisque tu as précisé sa durée lors de la création. Dans l'autre cas, il y aurait un risque de ne pas mettre la même valeur des deux côtés et bonjour les incohérences.

  11. #11
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Merci Isaya! Je n'y serai pas arrivée seule là, impossible de savoir ce qui clochait (en même temps, je suis toujours au modeste grade d'apprentie).

    Donc, si j'ai bien suivi, ça donne ça (en rouge) ?

    #Sher.baf (extrait)

    // ROMANCE / AMITIE
    // Dialogue 1

    IF
    Global("#SherQuest1","GLOBAL",-1)
    THEN
    RESPONSE #100
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherQuest1","GLOBAL", 20)
    END

    IF
    GlobalTimerExpired("#SherTimer","LOCALS")
    Global("#SherQuest1","GLOBAL",20)
    InParty("#Sheratan")
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    THEN
    RESPONSE #100
    IncrementGlobal("#SherMatch","GLOBAL",1)
    IncrementGlobal("#SherRomanceActive","GLOBAL",1)
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    StartDialogNoSet("#SherJ",Player1)
    END


    #Sher.d (extrait, l'important est en orange)

    // Blocs communs
    IF ~~ THEN BEGIN SyvaneBenisse
    SAY @78
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)
    LeaveParty()
    EscapeArea()~ EXIT // Sheratan quitte la party et la zone.
    END
    IF ~~ THEN BEGIN Projet
    SAY @79
    IF ~~ THEN REPLY @80 GOTO MauvaiseIdee
    IF ~~ THEN REPLY @81 GOTO Ami
    END
    IF ~~ THEN BEGIN MauvaiseIdee
    SAY @82 = @84
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)~ EXIT
    END
    IF ~~ THEN BEGIN Ami
    SAY @83 = @84
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)~ EXIT
    END

    // ROMANCE/AMITIE
    // DIALOGUE 1
    IF ~Global("#SherMatch","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherLoveTlk","LOCALS",1)
    GlobalTimerExpired("#SherTimer","LOCALS")~ THEN BEGIN RomanceTalk1
    SAY @120
    IF ~~ THEN REPLY @121 GOTO Compagnons
    IF ~~ THEN REPLY @123 GOTO Compagnons
    IF ~~ THEN REPLY @122 GOTO Etroit
    END
    Dernière modification par Rimbaud ; 02/03/2008 à 01h30.

  12. #12
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Un double-post pour rendre tout cela plus clair.

    Donc le timer marche à la perfection: Sheratan se met bien à parler après un jour comme le stipule le 'ONE_DAY'.

    Cependant, il semblerait qu'il y ait un conflit avec un autre timer, voici le bloc concerné:

    #Sher.d:

    // Chapitre I - Rappel de la traque de Mekhren
    IF ~Global("#SMekhrenRemind","LOCALS",1)~ THEN BEGIN Rappel
    SAY @100
    IF ~~ THEN DO ~SetGlobalTimer("#SMekhrenTimer","LOCALS",ONE_DAY)~ EXIT
    END
    // Chapitre I - Rappel ignoré + 24h Sheraratan s'en va
    IF ~Global("#SMekhrenRemind","LOCALS",2)~THEN BEGIN PasArmure
    SAY @101
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)
    LeaveParty()
    EscapeArea()~ EXIT // Sheratan quitte la party et la zone.
    END


    #Sher.baf

    IF
    Global("#SherJoined","GLOBAL",2) // Premier engagement de Sheratan
    THEN
    RESPONSE #100
    SetGlobal("#SCimetiere", "GLOBAL", -1)
    SetGlobalTimer("#SMekhrenTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherQuest1","GLOBAL",1)
    ActionOverride("#SBlaidd", StartDialog("#SKikOut","#Sheratan")
    SetGlobal("#SherJoined","GLOBAL",1)
    END
    IF
    GlobalTimerExpired("#SMekhrenTimer","LOCALS")
    !Global("#SherQuest1","GLOBAL",-1)
    THEN
    RESPONSE #100
    IncrementGlobal("#SMekhrenRemind","LOCALS",1)
    StartDialogNoSet(Player1)
    END


    Je suis en train de me demander s'il faudrait pas remettre le compteur à zéro, ou quelque chose du même genre...En fait concrètement, au bout d'un jour après la Quête ("#SherQuest1"), Sheratan se met bien à parler mais c'est ce script qui se lance, avec la réplique @100 qui tourne en boucle. Or, ce script n'est qu'un rappel de Sheratan si la Quête n'a pas été faite (donc le "#SherQuest1"), en aucun cas il ne doit se reproduire après la réalisation de la Quête mais c'est bien la romance qui doit débuter.

    Merci d'avance, Isaya.
    Dernière modification par Rimbaud ; 02/03/2008 à 09h56.

  13. #13
    Date d'inscription
    May 2004
    Localisation
    Angers
    Messages
    1 102

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Zut, ce sont des choses que j'aurais dû remarquer pourtant ! Désolé Rip'

    *Un peu rouillé du modage*

    Pour tes derniers messages, je dirais que le timer doit se déclencher à un moment, en raison d'une variable que tu enclenches (volontairement ou involotairement).

    Or, tu as deux scripts avec des timers terminés et des variables identiques (si je ne me plante pas), et comme tu utilises la fonction StartDialogNoSet (d'ailleurs y a qu'une seule information à stipuler je crois, le "player1"), le jeu va chercher le permier dialogue qui remplit les conditions, donc pas forcément celui que tu veux.

    Peut-être qu'en rajoutant ou modifiant une variable ? Mais je laisse Isaya faire avant de dire encore des bêtises...


  14. #14
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Je viens d'éditer le message précédent, vous trouverez l'edit en mauve.

    En fait, il faudrait que j'installe une variable à cet endroit comme ceci? (en vert)

    #Sher.baf (extrait)

    // ROMANCE / AMITIE
    // Dialogue 1

    IF
    Global("#SherRomanceActive","GLOBAL",1)
    THEN
    RESPONSE #100
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END

    IF
    GlobalTimerExpired("#SherTimer","LOCALS")
    Global("#SherRomanceActive","GLOBAL",1)
    InParty("#Sheratan")
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    THEN
    RESPONSE #100
    StartDialogNoSet("#SherJ",Player1)
    END


    #Sher.d (extrait, l'important est en orange)

    // Blocs communs
    IF ~~ THEN BEGIN SyvaneBenisse
    SAY @78
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)
    LeaveParty()
    EscapeArea()~ EXIT // Sheratan quitte la party et la zone.
    END
    IF ~~ THEN BEGIN Projet
    SAY @79
    IF ~~ THEN REPLY @80 GOTO MauvaiseIdee
    IF ~~ THEN REPLY @81 GOTO Ami
    END
    IF ~~ THEN BEGIN MauvaiseIdee
    SAY @82 = @84
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)~ EXIT
    IF ~~ THEN DO ~SetGlobal("#SherRomanceActive","GLOBAL",1)~ EXIT
    END
    IF ~~ THEN BEGIN Ami
    SAY @83 = @84
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)~ EXIT
    IF ~~ THEN DO ~SetGlobal("#SherRomanceActive","GLOBAL",1)~EXIT
    END

    // ROMANCE/AMITIE
    // DIALOGUE 1
    IF ~Global("#SherRomanceActive","GLOBAL",1)
    GlobalTimerExpired("#SherTimer","LOCALS")~ THEN BEGIN RomanceTalk1
    SAY @120
    IF ~~ THEN REPLY @121 GOTO Compagnons
    IF ~~ THEN REPLY @123 GOTO Compagnons
    IF ~~ THEN REPLY @122 GOTO Etroit
    END
    EDIT: je viens de tester, ça ne marche pas du tout, on tombe toujours sur le @100 après une journée, et il y a également conflit avec ce bloc:

    #S5Flago.baf

    IF
    IsOverMe("#Sheratan")
    Global("#SFiveFlagon","AR0500",0)
    THEN
    RESPONSE #100
    ActionOverride("#Sheratan",StartDialogueNoSet(Player1))
    SetGlobal("#SFiveFlagon","AR0500",1)
    END

    IF
    IsOverMe("#Sheratan")
    InParty("#Sheratan")
    IsValidForPartyDialog("#Sheratan")
    !StateCheck("#Sheratan",STATE_SLEEPING)
    Global("#SFiveFlagon","AR0500",0)
    THEN
    RESPONSE #100
    SetGlobal("#SFiveFlagon","AR0500",1)
    ActionOverride("#Sheratan",StartDialogueNoSet(Player1))
    END
    IF
    IsOverMe("#Sheratan")
    InParty("#Sheratan")
    IsValidForPartyDialog("#Sheratan")
    !StateCheck("#Sheratan",STATE_SLEEPING)
    Global("#SherQuest1","GLOBAL",100)
    THEN
    RESPONSE #100
    ActionOverride("#Sheratan",StartDialogueNoSet(Player1))
    END

    #SherJ.d

    // A la sortie de l'auberge
    // Si Mekhren et Isabel sont morts
    IF ~Global("#SherQuest1","GLOBAL",100)
    Dead("#SMekhr")~ THEN BEGIN Succes
    SAY @75
    IF ~~ THEN REPLY @76 GOTO Projet
    IF ~~ THEN REPLY @77 GOTO SyvaneBenisse
    END

    // A la sortie de l'auberge
    // Si Mekhren et Isabel sont toujours vivants
    IF ~Global("#SherQuest1","GLOBAL",100)
    !Dead("#SMekhr")~ THEN BEGIN Succes
    SAY @85
    IF ~~ THEN REPLY @76 GOTO Projet
    IF ~~ THEN REPLY @86 GOTO SyvaneBenisse
    END

    // Blocs communs
    IF ~~ THEN BEGIN SyvaneBenisse
    SAY @78
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)
    LeaveParty()
    EscapeArea()~ EXIT // Sheratan quitte la party et la zone.
    END
    IF ~~ THEN BEGIN Projet
    SAY @79
    IF ~~ THEN REPLY @80 GOTO MauvaiseIdee
    IF ~~ THEN REPLY @81 GOTO Ami
    END
    IF ~~ THEN BEGIN MauvaiseIdee
    SAY @82 = @84
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)~ EXIT
    IF ~~ THEN DO ~SetGlobal("#SherRomanceActive","GLOBAL",1)~ EXIT
    END
    IF ~~ THEN BEGIN Ami
    SAY @83 = @84
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)~ EXIT
    IF ~~ THEN DO ~SetGlobal("#SherRomanceActive","GLOBAL",1)~EXIT
    END

    Ce bloc se déclenche en boucle à la sortie de l'auberge. J'ai réussi à retourner dans l'auberge et après une nuit, c'est le fameux @100 qui est apparu aussi.
    Honnêtement, je n'ai plus de solution là.
    Dernière modification par Rimbaud ; 02/03/2008 à 10h41.

  15. #15
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    J'ai l'impression qu'au moins une partie du problème provient du même phénomène que j'évoquais, même s'il y a peut-être une petite différence.
    Code:
    IF ~Global("#SMekhrenRemind","LOCALS",1)~ THEN BEGIN Rappel
    SAY @100
    IF ~~ THEN DO ~SetGlobalTimer("#SMekhrenTimer","LOCALS",ONE_DAY)~ EXIT
    END
    Dans ce bloc tu lances un timer sur la base d'une valeur de variable mais tu ne modifies pas la variable. Dès lors, quand tu réactives le dialogue, même si tu l'as fait à partir du script pour un autre raison, cette condition sur la variable #SMekhrenRemind est toujours vraie et tu risques donc de déclencher à nouveau cette réplique.

    Parenthèse pour explication :

    Le jeu parcourt les scripts du début jusqu'à la fin et s'arrête dès qu'une condition est vérifiée. Lorsque tu as une condition qui déclenche un événement qui doit ne doit pas se répéter, il faut t'assurer de rendre fausse définitivement, sinon tu risques soit de boucler soit de revenir dessus à un moment ou à un autre (dans le cas de combinaison avec un timer par exemple).
    Tu peux consulter ce tutorial pour bien plus de détails. Il y a beaucoup de choses sur les scripts de combat qui ne t'intéresseront pas mais il y a avant tout des explications sur la façon dont le jeu les exploite.

    Pour les dialogues, c'est un peu plus compliqué. En première approche, on peut considérer que le jeu opère de la même façon que pour les scripts en évaluant les conditions de déclenchement. Il faut donc faire attention à ce que les conditions de tes répliques soient mutuellement exclusives sinon tu risques d'avoir une réplique qui se répète et les autres ayant les mêmes conditions ne seront jamais exploitées.

    La complication, c'est une notion de "Weight" qui peut modifier l'ordre d'évaluation des conditions. Mais c'est heureusement peu utilisé et tu n'as généralement pas besoin de t'en préoccuper pour un dialogue que tu crées de A à Z. Une autre particularité, pour un PNJ recrutable, est que certains numéros d'état (c'est ainsi qu'on appelle la valeur que WeiDU affectera automatiquement à la "variable" après le IF ~~ THEN BEGIN VariableEtat) ont un usage particulier, notamment pour l'intervention des personnages à l'arbre de vie à Suldanesalar.

    Fin de la parenthèse

    Pour revenir à tes soucis, j'aimerais que tu clarifies un point. Tu as plusieurs fichiers .d mais correspondent-ils chacun à un DLG différent (BEGIN ~#Sxxx~ en début de fichier .d) ?
    Si tu as bien un fichier DLG par .d alors tu peux t'autoriser à avoir des conditions de déclenchement identiques d'un fichier à l'autre, puisque tu feras explicitement référence à un des fichiers DLG par la commande que tu utilises dans le script (StartDialogNotSet, Interact, ...). Sinon tu dois veiller à avoir des conditions bien différentes pour chaque réplique ("état").
    A ce niveau, j'ai remarqué une utilisation risqué de la variable #SherQuest1 dans un bloc de #Sher.baf
    Code:
    IF
    GlobalTimerExpired("#SMekhrenTimer","LOCALS")
    !Global("#SherQuest1","GLOBAL",-1)
    THEN
    RESPONSE #100
    IncrementGlobal("#SMekhrenRemind","LOCALS",1)
    StartDialogNoSet(Player1)
    END
    Auparavant (avant la modification à 20 de la variable au déclenchement du timer), ta variable #SherQuest1 avait deux valeurs : 0 (tant que tu ne l'avais pas affectée) puis -1. Du coup, tu pouvais écrire : si elle ne vaut pas -1, je déclenche le rappel. Maintenant que tu as aussi la valeur 20, ton test sur le fait qu'elle ne vaut pas -1 devient vrai aussi après l'accomplissement de l'action qui l'a mise à 20. Comme le test sur l'expiration du timer #SMekhrenTimer reste indéfiniment vrai une fois qu'il a expiré, tu retrouves alors les conditions pour déclencher le cas #SMekhrenRemind. Du coup, quand ça provoque le dialogue, c'est à nouveau le dialogue de rappel qui apparaît (ça suppose que "l'état" de ce rappel soit avant celui des autres réplique).

    Pour contourner le problème, il te suffirait de remplacer le test de différence de valeur par un test d'égalité sur la bonne valeur de #SherQuest1, à savoir 0 :
    Global("#SherQuest1","GLOBAL",0)

    Tu pourrais évidemment rajouter une autre variable passant à 1 pour dire "déjà fait" et que tu testerais à 0 comme condition pour déclencher ce bloc. Mais il vaut mieux éviter de multiplier les variables et exploiter plus de deux valeurs par variables :
    0 avant toute opération
    1 une fois que la condition est déclenché
    2 une fois que tu as traité le déclenchement
    Evidemment tu ne mettras jamais de test sur la valeur 2 puisqu'elle est là pour dire que tout est fini sur ce point. Si tu veux faire un traitement sur le "après" (donc la valeur 2) pour une autre réplique, il te faudra passer la variable à 3, par exemple pour éviter que ton personnage répète inlassablement "Alors heureuse ?" à CHARNAME après avoir conclu.

    Une dernière chose, sans importance : tu utilises la valeur -1 et c'est probablement la première fois que je vois ça. Il n'y probablement aucun problème avec ça mais c'est une valeur que tu risques de ne pas retrouver si tu consultes les variables dans une sauvegarde avec Near Infinity ou Shadow Keeper. Ils risquent de la faire apparaître comme une valeur positive supérieure à 4 milliard. C'est dû à la façon dont les valeurs négatives sont codées informatiquement.
    Tu aurais donc intérêt à te restreindre aux valeurs 0, 1, 2, ... Tu y gagnerais aussi sur le fait que la progression de la valeur serait plus représentative de l'avancement que la séquence 0, -1, 20.

    J'espère que cette fois-ci le problème est bien cerné.

    Bon courage pour la suite.

  16. #16
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Merci Isaya, je n'ai pas le temps aujourd'hui de creuser ce script et je pars en vacances demain, donc je donnerai des nouvelles à ce sujet après le 15 mars.

    Bonne soirée

  17. #17
    Date d'inscription
    April 2003
    Localisation
    En migration
    Messages
    1 140

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Citation Envoyé par Isaya Voir le message
    Pour contourner le problème, il te suffirait de remplacer le test de différence de valeur par un test d'égalité sur la bonne valeur de #SherQuest1, à savoir 0 :
    Ce n'est pas visible dans les extraits de code qu'à donné Ripper mais cette variable sert aussi à gérer l'évolution de la quête au cours de la quelle elle reçoit les valeurs 1, 2, 3, 4, 5, 6, 11, 12, 13, 14 et 100.
    Citation Envoyé par Isaya Voir le message
    Une dernière chose, sans importance : tu utilises la valeur -1 et c'est probablement la première fois que je vois ça. Il n'y probablement aucun problème avec ça mais c'est une valeur que tu risques de ne pas retrouver si tu consultes les variables dans une sauvegarde avec Near Infinity ou Shadow Keeper. Ils risquent de la faire apparaître comme une valeur positive supérieure à 4 milliard. C'est dû à la façon dont les valeurs négatives sont codées informatiquement.
    En réalité c'est moi qui utilise cette valeur -1. Je suis conscient qu'elle peut apparaitre dans un éditeur de variable 2^32 - 1 (le ^ signifie puissance) comme ça je suis sûr que je n'aurais pas des conflit avec d'autres valeurs possibles. Je utilise cette valeur à chaque fois une fois que je n'ai plus jamais besoin d'une variable.


    EDIT
    Citation Envoyé par Isaya Voir le message
    Tu as plusieurs fichiers .d mais correspondent-ils chacun à un DLG différent (BEGIN ~#Sxxx~ en début de fichier .d) ?
    Non il y a qu'un seul fichier dlg pour la romance, l'amitié et les quêtes.

    Après vérification NI, DLTCEP, SK et la console connaissent les valeurs signées. Donc -1 y est affiché sous cette forme. Mais il existe sans doute d'autres éditeurs qui ne comportent pas forcément de la même manière. Cependant je ai utilisé la valeur -1 dans au moins 2 de mes 3 mods et je n'ai jamais eu de problèmes donc j'en déduis que le moteur du jeu gère aussi les valeurs signées.

    Un des façons de résoudre le problème serait finalement de faire 3 choses
    Premièrement remplacer les 5 occurrences de SetGlobal("#SherQuest1","GLOBAL",-1) par SetGlobal("#SherQuest1","GLOBAL",101)
    puis de remplacer le !Global("#SherQuest1","GLOBAL",-1) par GlobalLT("#SherQuest1","GLOBAL",101)
    car dans ce cas précis la solution avec le SetGlobal("#SherQuest1","GLOBAL", 20) ne fonctionne pas

    Deuxièmement pour la lancer le premier Timer de romance,
    dans le bloc #Sher.baf remplacer le bloc
    IF
    Global("#SherRomanceActive","GLOBAL",1)THEN
    RESPONSE #100
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END
    par le bloc suivant :
    IF
    **Global("#SherQuest1","GLOBAL",101)
    **Global("#SherRomanceActive","GLOBAL",0)
    THEN
    **RESPONSE #100
    ****SetGlobal("#SherRomanceActive","GLOBAL",1)
    ****SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END
    En remplaçant les étoiles par des espaces.

    Troisièmement
    Dans le #SherJ.d
    Isaya a raison pour ce bloc
    // Chapitre I - Rappel de la traque de Mekhren
    IF ~Global("#SMekhrenRemind","LOCALS",1)~ THEN BEGIN Rappel
    SAY @100
    IF ~~ THEN DO ~SetGlobalTimer("#SMekhrenTimer","LOCALS",ONE_DAY)~ EXIT
    END
    Il faut le modifier le fichier comme ceci :
    // Chapitre I - Rappel de la traque de Mekhren
    IF ~Global("#SMekhrenRemind","LOCALS",1)~ THEN BEGIN Rappel
    SAY @100
    IF ~~ THEN DO ~SetGlobalTimer("#SMekhrenTimer","LOCALS",ONE_DAY)
    SetGlobal("#SMekhrenRemind","LOCALS",2)
    ~ EXIT
    END

    // Chapitre I - Rappel ignoré + 24h Sheraratan s'en va
    IF ~Global("#SMekhrenRemind","LOCALS",3)~THEN BEGIN PasArmure
    SAY @101
    IF ~~ THEN DO ~SetGlobal("#SherQuest1","GLOBAL",-1)
    LeaveParty()
    EscapeArea()~ EXIT // Sheratan quitte la party et la zone.
    END
    et toujours dans le #SherJ.d, effacer les instructions
    IF ~~ THEN DO SetGlobal("#SherRomanceActive","GLOBAL",1)~ EXIT
    qui de toutes façons ne sont jamais exécuter.

    @Ripper : il me semble qu'on avait déjà parler de ce problème, il faudra qu'on revoit ce point . Pour la durée et le type (Real ou non) de Timer je t'encourage à utiliser le fichier d'exemple que je t'ai envoyé.


    EDIT2
    Dans le cas présent je ne vois pas l'utilité de la variable #SherMatch, je pense qu'on peux s'en passer.
    Dernière modification par Akadis ; 03/03/2008 à 15h30.
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un MPResponsable de la maintenance du mod Kim

  18. #18
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Hello, de retour parmi vous, j'ai donc appliqué la solution née de vos efforts conjugués. Messieurs, je vous confirme qu'elle marche! *fait tourner le champagne*

    Reste cependant que le dialogue de romance tourne en boucle (je précise que je n'ai mis aucune variable à la fin du bloc dans le #SherJ.d qui se présente actuellement comme ceci:


    // ROMANCE/AMITIE
    // DIALOGUE 1
    IF ~GlobalTimerExpired("#SherTimer","LOCALS")
    Global("#SherRomanceActive","GLOBAL",1)~ THEN BEGIN RomanceTalk1
    SAY @120
    IF ~~ THEN REPLY @121 GOTO Compagnons
    IF ~~ THEN REPLY @123 GOTO Compagnons
    IF ~~ THEN REPLY @122 GOTO Etroit
    END
    IF ~~ THEN BEGIN Etroit
    SAY @129
    IF ~~ THEN EXIT
    END
    IF ~~ THEN BEGIN Compagnons
    SAY @124
    IF ~~ THEN REPLY @125 GOTO Mouton
    IF ~~ THEN REPLY @127 GOTO Mouton
    IF ~~ THEN REPLY @126 GOTO Etroit
    END
    IF ~~ THEN BEGIN Mouton
    SAY @128 = @130
    IF ~~ THEN REPLY @132 GOTO Expression
    IF ~~ THEN REPLY @131 GOTO Plaisanterie
    IF ~~ THEN REPLY @133 GOTO Expression
    IF ~~ THEN REPLY @134 GOTO Etroit
    END
    IF ~~ THEN BEGIN Plaisanterie
    SAY @137
    IF ~~ THEN EXIT
    END
    IF ~~ THEN BEGIN Expression
    SAY @135
    IF ~~ THEN REPLY @136 GOTO Illumine
    IF ~~ THEN REPLY @138 GOTO Ineptie
    IF ~~ THEN REPLY @139 GOTO Songeur
    END
    IF ~~ THEN BEGIN Illumine
    SAY @140
    IF ~~ THEN REPLY @142 GOTO Ineptie
    END
    IF ~~ THEN BEGIN Ineptie
    SAY @143
    IF ~~ THEN EXIT
    END
    IF ~~ THEN BEGIN Songeur
    SAY @141
    IF ~~ THEN EXIT
    END

    Pour empêcher que cela tourne en boucle, la solution est-elle d'inclure des variables ici?

    Deuxième question: j'ai deux soundtracks à rajouter sur ce dialogue, une musique si Charname est un homme, et une autre musique si Charname est une femme (les conditions de race, connaissant la personnalité de Sheratan, ont été abolies dans le cadre d'une romance). Il est probablement possible de changer la musique selon le sexe de Charname, non?

    Et enfin, dernière question: j'aimerais remplacer le ONE_DAY dans le .baf par une durée moins longue. Est-ce possible, par exemple TWO_HOURS? Ou HALF_DAY? (temps du jeu).

    Merci encore

  19. #19
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Damned, Ripper est déjà rentrée de vacances (elle avait pourtant dis 2 semaines, bon sang) et a repris ses questions. Finies les vacances pour nous aussi ! J'espère que tu as bien profité.

    Pour ton problème de boucle : il faut impérativement que tu ajoutes une variable de romance, en général "LoveTalk" gérée en "LOCALS" donc stockée dans le personnage et non en "GLOBAL", qui te permette de marquer la progression des dialogues. Tu dois tester les différentes valeurs de cette variable, en plus du timer et de #SherRomanceActive (à 1 ou 2 selon le degré d'avancement, 1 servant aux tous premiers échanges et passant à 2 une fois que l'intérêt est avéré). Il me semble que les autres romances testent la valeur de 2 en 2. La valeur impaire est utilisée dans le script pour déterminer ce qu'il faut faire en fonction de l'avancement (par exemple, les bandits qui menancent Jaheira, ...).

    Code:
    IF
    	RealGlobalTimerExpired("JaheiraRomance","GLOBAL")
    	!Global("JaheiraRomanceActive","GLOBAL",0)
    	!Global("JaheiraRomanceActive","GLOBAL",3)
    	Global("JaheiraMatch","GLOBAL",1)
    	!AreaType(DUNGEON)
    	See(Player1)
    	CombatCounter(0)
    	!See([ENEMY])
    	!Range([NEUTRAL],10)
    	OR(26)
    		Global("LoveTalk","LOCALS",1)
    		...
    		Global("LoveTalk","LOCALS",65)
    THEN
    	RESPONSE #100
    		IncrementGlobal("LoveTalk","LOCALS",1)
    		PlaySong(36)
    		Interact(Player1)
    END
    Ici le script teste différentes valeurs impaires de LoveTalk (mais pas toutes car il y a des actions particulières dans certains cas), que j'ai en partie cachées par ... pour raccourcir, et vérifie que le timer a expiré depuis le précédent dialogue. Il incrémente la variable (pour que le dialogue passe à l'étape suivante), lance la musique puis le dialogue.
    Remarque : ça répond à ta question sur la musique. Il te suffit d'ajouter de dupliquer ce bloc en ajoutant un test sur le sexe de CHARNAME pour avoir la possibilité d'utiliser deux musiques différentes.

    Suite au dialogue, il y a un autre bloc de script qui s'enclenche :
    Code:
    IF
    	RealGlobalTimerExpired("JaheiraRomance","GLOBAL")
    	Global("JaheiraMatch","GLOBAL",1)
    	OR(30)
    		Global("LoveTalk","LOCALS",2)
    		...
    		Global("LoveTalk","LOCALS",68)
    THEN
    	RESPONSE #100
    		RealSetGlobalTimer("JaheiraRomance","GLOBAL",1800)
    		IncrementGlobal("LoveTalk","LOCALS",1)
    END
    Après le dialogue, la variable est paire (puisqu'on l'a incrémentée avant le dialogue) donc on incrémente tout de suite pour éviter de repartir sur la même réplique. On relance donc un timer pour que le prochain dialogue mette un peu de temps à apparaître.

    Pour les timers, il n'y a pas de valeurs inférieures à un jour qui existe sous la forme HALF_DAY ou autre. Le fichier GTIMES.IDS qui indique une correspondance entre un intitulé et une valeur en unité de temps du jeu ne descend pas en dessous de la journée. Néanmoins, tu peux indiquer un nombre qui correspond à ce que tu veux. Sachant que ONE_DAY correspond à 7200, il te suffit de calculer la valeur pour une demi-journée (3600) ou moins (300 par heure) et la valeur utilisée dans le script de Jaheira correspond donc à 1/4 jour. Mais comme il y a souvent des conditions pour déclencher les dialogues (attendre de se coucher, qu'on soit hors de souterrain, pas en combat, ...), ça prend généralement bien plus de temps.

    Remarque : ces valeurs correspondent à des secondes passées dans le jeu. Deux heures (7200 s) correspondent à un jour.

    Je t'invite à consulter d'autres mods de romances, en particulier des mods récents comme la romance de Nalia, pour voir comment les moddeurs s'y prennent de nos jours. Les exemples d'origine Bioware sont toujours valables en tant qu'exemple (ils présentent l'avantage qu'on connaît le déroulement et qu'on peut voir comment les auteurs s'y sont pris pour obtenir le résultat), mais il y a peut-être, notamment dans les conditions utilisées dans les scripts ou les dialogues, des évolutions. Je pense en particulier à des choses pour simplifier le test "est disponible pour parler".

    Bonne continuation.

  20. #20
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Merci biench mes bons!

    Eh oui j'avais dit deux semaines, mais c'était en fait 10 jours, trois fois hélas pour moi aussi!

    Avec tout ça, voilà donc le .baf actuel:

    // ROMANCE / AMITIE
    // ETAPE 1
    IF
    Global("#SherQuest1","GLOBAL",101)
    Global("#SherRomanceActive","GLOBAL",0)
    THEN
    RESPONSE #100
    SetGlobal("#SherRomanceActive","GLOBAL",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherLoveTlk","LOCALS",1)
    END
    IF
    GlobalTimerExpired("#SherTimer","LOCALS")
    Global("#SherRomanceActive","GLOBAL",1)
    InParty("#Sheratan")
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    Global("#SherLoveTlk","LOCALS",1)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    StartDialogNoSet(Player1)
    END

    // ROMANCE / AMITIE
    // ETAPE 2

    IF
    GlobalTimerExpired("#SherTimer","LOCALS")
    Global("#SherRomanceActive","GLOBAL",1)
    Global("SherLoveTlk","LOCALS",2)
    THEN
    RESPONSE #100
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    IncrementGlobal("LoveTalk","LOCALS",1)
    END

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    GlobalTimerExpired("#SherLoveTimer","LOCALS")
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherLoveTlk","LOCALS",3)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    StartDialogNoSet(Player1)
    END


    Je précise que le dialogue 1 fonctionne parfaitement, reste à faire une jonction correcte avec le dialogue 2 (et là je pense que, notamment le #SherLoveTlk n'est pas au point.)

    Le .d est comme suit:

    / ROMANCE/AMITIE
    // ETAPE 1

    IF ~Global("#SherLoveTlk","LOCALS",2)~ THEN BEGIN RomanceAmitie1
    SAY @120
    IF ~~ THEN REPLY @121 GOTO Compagnons
    IF ~~ THEN REPLY @123 GOTO Compagnons
    IF ~~ THEN REPLY @122 GOTO Etroit
    END
    IF ~~ THEN BEGIN Etroit
    SAY @129
    IF ~~ THEN EXIT
    END
    IF ~~ THEN BEGIN Compagnons
    SAY @124
    .....Ect

    // ROMANCE / AMITIE
    // ETAPE 2

    IF ~Global("#SherLoveTlk","LOCALS",4)~ THEN BEGIN RomanceAmitie2
    SAY @144
    IF ~~ THEN REPLY @145 GOTO Intrigue
    IF ~~ THEN REPLY @146 EXIT
    END
    IF ~~ THEN BEGIN Intrigue
    SAY @147
    IF ~~ THEN REPLY @148 GOTO PointDeVue
    ...Ect
    Dernière modification par Rimbaud ; 14/03/2008 à 23h36.

  21. #21
    Date d'inscription
    April 2003
    Localisation
    En migration
    Messages
    1 140

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Il y a d'abord un bloc d'initialisation que tu as donné ci dessus :
    Global("#SherQuest1","GLOBAL",101)
    Global("#SherRomanceActive","GLOBAL",0)
    THEN
    RESPONSE #100
    SetGlobal("#SherRomanceActive","GLOBAL",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherLoveTlk","LOCALS",1)
    END
    Puis tous le dialogues de romance, qu'il y en ai 2 ou 40, sont gérés par 2 blocs du même script dont e t'ai donné le code.
    En tous cas, il n'y a pas un bloc par dialogue comme tu l'as fait.

    Il peut en avoir quelques variantes selon la durée des timers et les conditions de déclenchements mais la majeure partie sont gérés par ces 2 blocs c'est à dire un tous les ONE_DAY et sans triggers suppémentaires.
    Dernière modification par Akadis ; 15/03/2008 à 00h08.
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un MPResponsable de la maintenance du mod Kim

  22. #22
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Attention Spoil


     Cliquer ici pour révéler le texte

  23. #23
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Soit tu nous as donné une version simplifiée de ton script, soit il y a un gros souci là :
    Code:
    IF
    GlobalTimerExpired("#SherTimer","LOCALS")
    Global("#SherRomanceActive","GLOBAL",1)
    Global("SherLoveTlk","LOCALS",2)
    THEN
    RESPONSE #100
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    IncrementGlobal("LoveTalk","LOCALS",1)
    END
    Tu testes "SherLoveTlk" alors que tu avais un "#" au début du nom dans les blocs précédents. Et dans les actions, tu incrémentes "LoveTalk". Autant dire que ton état suivant, à 3, de "#SherLoveTlk" ne sera jamais atteint et que ton héros va rester longtemps silencieux !

  24. #24
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Tu peux oublier cette version, écrite à 1h du matin avec un décalage horaire traînant, en plus.
    ça marchait très bien avec la dernière version, mais j'ai décidé de bien distinguer la romance de l'amitié. ça donne ce script:


    // DEBUT DE LA ROMANCE (SI CHARNAME EST DE SEXE FEMININ)
    // BLOC DE LANCEMENT

    IF
    Global("#SherQuest1","GLOBAL",101)
    Global("#SherRomanceActive","GLOBAL",0)
    Gender(Protagonist,Female)
    THEN
    RESPONSE #100
    SetGlobal("#SherRomanceActive","GLOBAL",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherLoveTlk","LOCALS",1)
    END

    // ROMANCE (SI CHARNAME EST DE SEXE FEMININ)
    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    Gender(Protagonist,Female)
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(20)
    Global("#SherLoveTlk","LOCALS",1)
    Global("#SherLoveTlk","LOCALS",3)
    Global("#SherLoveTlk","LOCALS",5)
    Global("#SherLoveTlk","LOCALS",7)
    Global("#SherLoveTlk","LOCALS",9)
    Global("#SherLoveTlk","LOCALS",11)
    Global("#SherLoveTlk","LOCALS",13)
    Global("#SherLoveTlk","LOCALS",15)
    Global("#SherLoveTlk","LOCALS",17)
    Global("#SherLoveTlk","LOCALS",19)
    Global("#SherLoveTlk","LOCALS",21)
    Global("#SherLoveTlk","LOCALS",23)
    Global("#SherLoveTlk","LOCALS",25)
    Global("#SherLoveTlk","LOCALS",27)
    Global("#SherLoveTlk","LOCALS",29)
    Global("#SherLoveTlk","LOCALS",31)
    Global("#SherLoveTlk","LOCALS",33)
    Global("#SherLoveTlk","LOCALS",35)
    Global("#SherLoveTlk","LOCALS",37)
    Global("#SherLoveTlk","LOCALS",39)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    StartDialogueNoSet(Player1)
    END

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    Gender(Protagonist,Female)
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(20)
    Global("#SherLoveTlk","LOCALS",2)
    Global("#SherLoveTlk","LOCALS",4)
    Global("#SherLoveTlk","LOCALS",6)
    Global("#SherLoveTlk","LOCALS",8)
    Global("#SherLoveTlk","LOCALS",10)
    Global("#SherLoveTlk","LOCALS",12)
    Global("#SherLoveTlk","LOCALS",14)
    Global("#SherLoveTlk","LOCALS",16)
    Global("#SherLoveTlk","LOCALS",18)
    Global("#SherLoveTlk","LOCALS",20)
    Global("#SherLoveTlk","LOCALS",22)
    Global("#SherLoveTlk","LOCALS",24)
    Global("#SherLoveTlk","LOCALS",26)
    Global("#SherLoveTlk","LOCALS",28)
    Global("#SherLoveTlk","LOCALS",30)
    Global("#SherLoveTlk","LOCALS",32)
    Global("#SherLoveTlk","LOCALS",34)
    Global("#SherLoveTlk","LOCALS",36)
    Global("#SherLoveTlk","LOCALS",38)
    Global("#SherLoveTlk","LOCALS",40)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END

    // AMITIE (SI CHARNAME EST DE SEXE MASCULIN)
    // BLOC DE LANCEMENT

    IF
    Global("#SherQuest1","GLOBAL",101)
    Global("#SherRomanceActive","GLOBAL",0)
    Gender(Protagonist,Male)
    THEN
    RESPONSE #100
    SetGlobal("#SherRomanceActive","GLOBAL",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherLoveTlk","LOCALS",51)
    END

    // AMITIE (SI CHARNAME EST DE SEXE MASCULIN)

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    Gender(Protagonist,Male)
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(10)
    Global("#SherLoveTlk","LOCALS",51)
    Global("#SherLoveTlk","LOCALS",53)
    Global("#SherLoveTlk","LOCALS",55)
    Global("#SherLoveTlk","LOCALS",57)
    Global("#SherLoveTlk","LOCALS",59)
    Global("#SherLoveTlk","LOCALS",61)
    Global("#SherLoveTlk","LOCALS",63)
    Global("#SherLoveTlk","LOCALS",65)
    Global("#SherLoveTlk","LOCALS",67)
    Global("#SherLoveTlk","LOCALS",69)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    StartDialogueNoSet(Player1)
    END

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    Gender(Protagonist,Male)
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(10)
    Global("#SherLoveTlk","LOCALS",52)
    Global("#SherLoveTlk","LOCALS",54)
    Global("#SherLoveTlk","LOCALS",56)
    Global("#SherLoveTlk","LOCALS",58)
    Global("#SherLoveTlk","LOCALS",60)
    Global("#SherLoveTlk","LOCALS",62)
    Global("#SherLoveTlk","LOCALS",64)
    Global("#SherLoveTlk","LOCALS",66)
    Global("#SherLoveTlk","LOCALS",68)
    Global("#SherLoveTlk","LOCALS",70)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END


    Le .d

    / ROMANCE (SI CHARNAME EST DE SEXE FEMININ)
    // ETAPE 1
    IF ~Global("#SherLoveTlk","LOCALS",2)~ THEN BEGIN Romance1
    SAY @120
    IF ~~ THEN REPLY @121 GOTO Compagnons
    IF ~~ THEN REPLY @123 GOTO Compagnons
    IF ~~ THEN REPLY @122 GOTO Etroit
    END
    Ect...

    // ROMANCE (SI CHARNAME EST DE SEXE FEMININ)
    // ETAPE 2
    IF ~Global("#SherLoveTlk","LOCALS",4)~ THEN BEGIN Romance2
    SAY @144
    IF ~~ THEN REPLY @145 GOTO Intrigue
    IF ~~ THEN REPLY @146 EXIT
    END
    Ect...

    // AMITIE (SI CHARNAME EST DE SEXE MASCULIN)
    IF ~Global("#SherLoveTlk","LOCALS",52)~ THEN BEGIN Amitie
    SAY @171
    IF ~~ THEN EXIT
    END
    Ect...

    // AMITIE 2
    IF ~Global("#SherLoveTlk","LOCALS",54)~ THEN BEGIN Amitie2
    SAY @172
    IF ~~ THEN EXIT
    END
    Ect...



    Naturellement, ça ne marche plus maintenant avec l'ajout de la variable de genre. A mon avis, je l'ai mal placé?
    Normalement, si ce problème est résolu, je devrais plus avoir à vous enquiquiner.
    Dernière modification par Rimbaud ; 15/03/2008 à 11h27.

  25. #25
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Double-post:

    Je viens de remarquer une boulette dans ce que j'ai marqué. Je vais corriger et tester, et voir si ça marche.

    J'ai noté la mise à jour de ma boulette en orange.
    EDIT: après test avec Charname au féminin, on en revient au rappel de Sheratan qui s'impatiente car soit disant la précédente quête n'a pas été faite, alors que c'est pourtant le cas (problème de timer donc, encore). Finalement, je ne sais même pas si c'est le genre et le timer, ou juste le timer qui n'est pas bon.
    Dernière modification par Rimbaud ; 15/03/2008 à 11h37.

  26. #26
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    On croirait une débutante du forum. Tu arrives et tu dis "ça marche pas", sans penser à préciser ce qui se passe et ce que tu attends. Ah la la... *soupir*

    Je vois surtout un risque dans ton dialogue car tu n'utilises pas des préfixes ou suffixes pour les noms des blocs IF THEN BEGIN selon qu'il s'agit du cas homme ou femme. Amitie et Amitie2 pourraient aussi apparaître dans les répliques pour perso féminin et alors je ne sais pas comment WeiDU va faire le lien.

    En attendant des précisions, j'ai une remarque. Tu utilises des valeurs complètement différentes de #SherLoveTlk pour distinguer la romance masculine ou féminine. Dès lors, tu n'as besoin de la vérification du sexe que pour fixer la variable la toute première fois. Ensuite, les tests de valeurs suffiront donc tu pourrais te passer du test sur le sexe dans les tests qui impliquant la variable #SherLoveTlk.

    Tu pourrais aussi procéder différemment pour la gestion du sexe. Si tu prévois le même nombre de dialogues et des événements identiques (qui ne nécessite pas une gestion spécifique dans le script), tu pourrais te passer de plages de valeurs différentes de #SherLoveTlk. Il te suffirait d'ajouter le test du sexe en plus du test de la variable #SherLoveTlk dans les conditions de déclenchement des répliques dans le dialogue.
    Sinon tu aurais peut-être intérêt à utiliser une séparation plus élevée que 51 pour les plages de valeurs. Beaucoup de romances vont au delà de ce chiffre. Si tu veux ajouter quelque chose par la suite tu seras gênée. Tu pourrais par exemple utiliser le préfixe du numéro INSEE, 1 ou 2, en indicateur de centaine, donc 101-199 et 201-299.


    Ajout :
    Je viens de voir tes modifications successives. C'était donc le nombre de cas dans les OR(xx).

    En ce qui concerne le retour de la réplique de rappel, il y a de fortes chances que le problème vienne du fichier dialogue. Si le script découvre des conditions justifiant un dialogue mais que, dans le dialogue, tu as des conditions différentes pour faire intervenir les répliques, tu risques des problèmes. Quand je parle de conditions différentes, je fais référence aux tests de variables dans le IF THEN BEGIN du dialogue. Si aucune condition n'est vérifié pour les répliques de romance mais que par contre celles de la réplique de rappel le sont, ou encore si la réplique de rappel est testée avant les autres et que ses conditions sont vérifiées, tu auras la réplique de rappel.
    Peux-tu poster le bloc du dialogue qui déclenche la réplique que tu obtiens, s'il te plait ?
    Dernière modification par Isaya ; 15/03/2008 à 11h52.

  27. #27
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    J'avoue, pas terrible comme post, l'agacement fait que je suis plutôt expéditive.

    Pour les labels du .d je vais changer cela, je suis d'accord qu'il peut y avoir mélange. Si j'ai bien compris, le script donne cela maintenant, après application de tes conseils:

    // DEBUT DE LA ROMANCE (SI CHARNAME EST DE SEXE FEMININ)
    // BLOC DE LANCEMENT

    IF
    Global("#SherQuest1","GLOBAL",101)
    Global("#SherRomanceActive","GLOBAL",0)
    Gender(Protagonist,Female)
    THEN
    RESPONSE #100
    SetGlobal("#SherRomanceActive","GLOBAL",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherLoveTlk","LOCALS",101)
    END

    // ROMANCE (SI CHARNAME EST DE SEXE FEMININ)

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(20)
    Global("#SherLoveTlk","LOCALS",101)
    Global("#SherLoveTlk","LOCALS",103)
    Global("#SherLoveTlk","LOCALS",105)
    Global("#SherLoveTlk","LOCALS",107)
    Global("#SherLoveTlk","LOCALS",109)
    Global("#SherLoveTlk","LOCALS",111)
    Global("#SherLoveTlk","LOCALS",113)
    Global("#SherLoveTlk","LOCALS",115)
    Global("#SherLoveTlk","LOCALS",117)
    Global("#SherLoveTlk","LOCALS",119)
    Global("#SherLoveTlk","LOCALS",121)
    Global("#SherLoveTlk","LOCALS",123)
    Global("#SherLoveTlk","LOCALS",125)
    Global("#SherLoveTlk","LOCALS",127)
    Global("#SherLoveTlk","LOCALS",129)
    Global("#SherLoveTlk","LOCALS",131)
    Global("#SherLoveTlk","LOCALS",133)
    Global("#SherLoveTlk","LOCALS",135)
    Global("#SherLoveTlk","LOCALS",137)
    Global("#SherLoveTlk","LOCALS",139)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    StartDialogueNoSet(Player1)
    END

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(20)
    Global("#SherLoveTlk","LOCALS",102)
    Global("#SherLoveTlk","LOCALS",104)
    Global("#SherLoveTlk","LOCALS",106)
    Global("#SherLoveTlk","LOCALS",108)
    Global("#SherLoveTlk","LOCALS",110)
    Global("#SherLoveTlk","LOCALS",112)
    Global("#SherLoveTlk","LOCALS",114)
    Global("#SherLoveTlk","LOCALS",116)
    Global("#SherLoveTlk","LOCALS",118)
    Global("#SherLoveTlk","LOCALS",120)
    Global("#SherLoveTlk","LOCALS",122)
    Global("#SherLoveTlk","LOCALS",124)
    Global("#SherLoveTlk","LOCALS",126)
    Global("#SherLoveTlk","LOCALS",128)
    Global("#SherLoveTlk","LOCALS",130)
    Global("#SherLoveTlk","LOCALS",132)
    Global("#SherLoveTlk","LOCALS",134)
    Global("#SherLoveTlk","LOCALS",136)
    Global("#SherLoveTlk","LOCALS",138)
    Global("#SherLoveTlk","LOCALS",140)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END

    // AMITIE (SI CHARNAME EST DE SEXE MASCULIN)
    // BLOC DE LANCEMENT

    IF
    Global("#SherQuest1","GLOBAL",101)
    Global("#SherRomanceActive","GLOBAL",0)
    Gender(Protagonist,Male)
    THEN
    RESPONSE #100
    SetGlobal("#SherRomanceActive","GLOBAL",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherLoveTlk","LOCALS",201)
    END

    // AMITIE (SI CHARNAME EST DE SEXE MASCULIN)

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(10)
    Global("#SherLoveTlk","LOCALS",201)
    Global("#SherLoveTlk","LOCALS",203)
    Global("#SherLoveTlk","LOCALS",205)
    Global("#SherLoveTlk","LOCALS",207)
    Global("#SherLoveTlk","LOCALS",209)
    Global("#SherLoveTlk","LOCALS",211)
    Global("#SherLoveTlk","LOCALS",213)
    Global("#SherLoveTlk","LOCALS",215)
    Global("#SherLoveTlk","LOCALS",217)
    Global("#SherLoveTlk","LOCALS",219)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    StartDialogueNoSet(Player1)
    END

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(10)
    Global("#SherLoveTlk","LOCALS",202)
    Global("#SherLoveTlk","LOCALS",204)
    Global("#SherLoveTlk","LOCALS",206)
    Global("#SherLoveTlk","LOCALS",208)
    Global("#SherLoveTlk","LOCALS",210)
    Global("#SherLoveTlk","LOCALS",212)
    Global("#SherLoveTlk","LOCALS",214)
    Global("#SherLoveTlk","LOCALS",216)
    Global("#SherLoveTlk","LOCALS",218)
    Global("#SherLoveTlk","LOCALS",220)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END

    Pour le .d, il est modifié en conséquence:

    / ROMANCE (SI CHARNAME EST DE SEXE FEMININ)
    // ETAPE 1

    IF ~Global("#SherLoveTlk","LOCALS",102)~ THEN BEGIN Romance1
    SAY @120
    IF ~~ THEN REPLY @121 GOTO Compagnons
    IF ~~ THEN REPLY @123 GOTO Compagnons
    IF ~~ THEN REPLY @122 GOTO Etroit
    END
    Ect...

    // ROMANCE (SI CHARNAME EST DE SEXE FEMININ)
    // ETAPE 2

    IF ~Global("#SherLoveTlk","LOCALS",104)~ THEN BEGIN Romance2
    SAY @144
    IF ~~ THEN REPLY @145 GOTO Intrigue
    IF ~~ THEN REPLY @146 EXIT
    END

    Ect pareil pour Charname version masculine. On admet que les labels ont été modifiés.

    ----------------------------

    Pour l'autre solution que tu évoques, c'est cela que je comptais faire au début, sauf qu'il n'y a que 10 dialogues d'amitié, pour environ 20 dialogues de romance, et qu'ils seront franchement radicalement différents sauf au début. Je cherche en fait simplement à me faciliter à l'extrême la tâche, car écrire des dialogues avec toutes les subtilités qu'implique un flirt comparé à de l'amitié, ça me semble franchement lourd. Ce n'est pas spécialement de la paresse, j'essaye juste d'alléger le travail et de m'organiser au mieux. J'ai vraiment besoin de séparer radicalement les dialogues d'amitié et de romance.

    Donc, j'ai testé avec Charname au féminin, comme écrit dans le double-post précédent, et ça renvoie à l'impatience de Sheratan qui se produit si on ne fait pas la quête précédente.
    Dernière modification par Rimbaud ; 15/03/2008 à 12h04.

  28. #28
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Par rapport à ma suggestion (et non conseil, je suis pointilleux), tu as inversé les chiffres. La dernière fois que j'ai vérifié, mon numéro INSEE (aussi appelée sécurité sociale) commençait pas un 1 et je suis un homme !

    Tu n'as pas posté le bloc du dialogue qui déclenche la réplique de rappel de la quête... un effet de l'agacement, peut-être ? Je soupçonne que ton problème vient des conditions permettant de choisir les répliques dans le dialogue, même si le problème peut aussi provenir du script. Mais puisque tu testes #SherQuest1 pour activer la romance dans le script et que ça doit correspondre à la fin de la quête (j'ai la flemme de vérifier les anciens messages pour vérifier), le dialogue paraît plus probable.

    Je ne sais pas ce que tu entends par la séparation amitié-romance. Tu peux réduire la taille des fichiers .D en mettant les dialogues d'amitié dans un et ceux de romance dans un autre. La contrainte est alors de commencer un par "BEGIN B#SHER" et l'autre par "APPEND B#SHER", où B#SHER est le nom du fichier DLG que crée ou complète WeiDU. Il te faut alors veiller dans ton fichier TP2 à compiler en premier celui qui contient "BEGIN B#SHER". De même tu peux séparer dans deux fichiers .D les répliques pour les versions féminines et masculines.
    Attention à l'ordre de compilation des fichiers D dans ce cas, car il conditionne l'ordre d'évaluation des conditions des répliques dans le jeu. Le plus simple est de conserver l'ordre existant au moment où tu fais le découpage.
    Je ne sais pas si ça répond à ton objectif.

  29. #29
    Date d'inscription
    December 2007
    Messages
    511

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Préviens-nous quand la version beta sera prête;j'ai hâte de l'essayer.

  30. #30
    Rimbaud Invités

    Re : Mod Sheratan: pot-pourris de problèmes techniques

    Je serai vraiment très brève, car je m'absente a priori tout ce week end, dans une petite demi-heure, donc désolée Isaya, j'ai vraiment survolé ce que tu m'as dit

    Isaya, Deecy et moi et moi on a décidé de creer une nouvelle variable pour l'amitié, #SherFriend, tout simplement. Ce sera donc indépendant de la romance donc j'ai repris le script pour la romance, je n'aurais qu'à y ajouter le GENDER(Protagonist,Female). Cependant, impossible de remettre la main sur le bon script, qui marchait (à savoir, le dialogue 1 et 2 qui s'enchaînent sans aucun problème), que j'ai pu faire grâce aux corrections de Deecy sur le topic (voir page 1).

    // DEBUT DE LA ROMANCE
    IF
    Global("#SherQuest1","GLOBAL",101)
    Global("#SherRomanceActive","GLOBAL",0)
    THEN
    RESPONSE #100
    SetGlobal("#SherRomanceActive","GLOBAL",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    SetGlobal("#SherLoveTlk","LOCALS",1)
    END

    IF
    InParty("#Sheratan")
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(14)
    Global("#SherLoveTlk","LOCALS",1)
    Global("#SherLoveTlk","LOCALS",3)
    Global("#SherLoveTlk","LOCALS",5)
    Global("#SherLoveTlk","LOCALS",7)
    Global("#SherLoveTlk","LOCALS",9)
    Global("#SherLoveTlk","LOCALS",11)
    Global("#SherLoveTlk","LOCALS",13)
    Global("#SherLoveTlk","LOCALS",15)
    Global("#SherLoveTlk","LOCALS",17)
    Global("#SherLoveTlk","LOCALS",19)
    Global("#SherLoveTlk","LOCALS",21)
    Global("#SherLoveTlk","LOCALS",23)
    Global("#SherLoveTlk","LOCALS",25)
    Global("#SherLoveTlk","LOCALS",27)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    StartDialogueNoSet(Player1)
    END

    IF
    InParty("#Sheratan")
    Detect(Player1)
    !StateCheck(Player1,STATE_SLEEPING)
    !Detect([ENEMY])
    GlobalTimerExpired("#SherTimer","LOCALS")
    OR(2)
    Global("#SherRomanceActive","GLOBAL",1)
    Global("#SherRomanceActive","GLOBAL",2)
    OR(14)
    Global("#SherLoveTlk","LOCALS",2)
    Global("#SherLoveTlk","LOCALS",4)
    Global("#SherLoveTlk","LOCALS",5)
    Global("#SherLoveTlk","LOCALS",6)
    Global("#SherLoveTlk","LOCALS",8)
    Global("#SherLoveTlk","LOCALS",10)
    Global("#SherLoveTlk","LOCALS",12)
    Global("#SherLoveTlk","LOCALS",14)
    Global("#SherLoveTlk","LOCALS",16)
    Global("#SherLoveTlk","LOCALS",18)
    Global("#SherLoveTlk","LOCALS",20)
    Global("#SherLoveTlk","LOCALS",22)
    Global("#SherLoveTlk","LOCALS",24)
    Global("#SherLoveTlk","LOCALS",26)
    THEN
    RESPONSE #100
    IncrementGlobal("#SherLoveTlk","LOCALS",1)
    SetGlobalTimer("#SherTimer","LOCALS",ONE_DAY)
    END


    ça fait deux bonnes heures que je m'escrime à chercher la solution, en procédant par éliminations, ect et impossible...Et là je n'ai plus le temps d'y travailler, en plus d'être saturée. Je pense que vous n'aurez pas de problème à dénicher la boulette qui s'y cache, et je rappelle que non seulement je n'ai pas encore inclu le test de genre, mais que donc l'amitié sera complètement indépendante de ce script.
    En fait, tout ce que j'aimerais ds ce script, c'est que le second dialogue de romance s'enclenche après un jour, ce qui n'est pas le cas actuellement. Seul le dialogue 1 se lance comme prévu.

    Voilà, je file et à lundi
    Merci d'avance

    P.S: Magnus, ça dépend de quelle bêta tu parles...En ce moment, c'est la 1.5, c'est à dire le Chapitre 1 de Sheratan qui est en cours, bêta réservée aux inscrits par ailleurs. Consulte le forum dans la Forge, tu y trouveras tous les renseignements nécessaires.
    Dernière modification par Rimbaud ; 15/03/2008 à 14h54.

Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [IWD2][MOD] Questions techniques
    Par Ellminsterr dans le forum Le Monastère du Corbeau Noir (Icewind Dale 2)
    Réponses: 0
    Dernier message: 31/05/2015, 21h41
  2. [OBSOLÈTE] [IE] Index Des Problèmes Techniques
    Par Armand dans le forum [ARCHIVES] Outils de la préhistoire
    Réponses: 0
    Dernier message: 20/10/2012, 20h37
  3. Quel est le personnage le plus pourri?
    Par Wookiee dans le forum Le Comptoir d'Amn
    Réponses: 815
    Dernier message: 29/11/2005, 15h10
  4. [OBSOLÈTE] Index des Problèmes Techniques
    Par Walar dans le forum [ARCHIVES] Outils de la préhistoire
    Réponses: 0
    Dernier message: 22/03/2004, 16h14

Les tags pour cette discussion

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