LEGENDES
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Vers l'Infinity et Baldur's Gate
 
AccueilAccueil  PortailPortail  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  ConnexionConnexion  
Le Deal du moment : -50%
-50% Baskets Nike Air Huarache Runner
Voir le deal
69.99 €

 

 Condition horaire/surprendre un dialogue

Aller en bas 
3 participants
AuteurMessage
Armand
Mexicanos Muy Bien
Armand


Nombre de messages : 622
Age : 38
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

Condition horaire/surprendre un dialogue Empty
MessageSujet: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Lun 24 Nov 2008 - 19:32

Coucou tout le monde!

Comme promis je viens infester la section apprentissage.

Mon premier problème (eh oui y'en a plusieurs!) concerne une apparition conditionnelle.
En fait je voudrais qu'un personnage apparaisse à coté de mon pj pendant la nuit.
Concrètement ça devrait donner ça:

Code:
IF
  TimeGT("18")
  TimeLT("5")
THEN
  RESPONSE #100
    Wait(1)
    CreateCreature("#VMonk2",[1441.1458],12)
END

En fait ici j'ai pas su trouver la commande pour faire apparaitre "#VMonk2" à coté de PJ et il ne semble pas comprendre les conditions impliqué par mon IF. pale

Mon deuxième problème est un tantinet plus important. Il s'agit tout simplement d'initier un dialogue entre des personnages qui ne sont pas dans l'équipe :

Code:
BEGIN ~#VMonk1~

IF ~G~ THEN BEGIN MONKDO
SAY @10
IF ~~ THEN EXTERN ~#VMonk2~ MONKDID
END

APPEND ~#VMonk2~

IF ~~ THEN BEGIN MONKDID
SAY @11
IF ~~ THEN REPLY @13 EXTERN ~#VMonk1~ MONKJERK
END
END

Ici donc j'ai #VMonk1 qui parle à #VMonk2 tout se passe dans fichier .d de #VMonk1 et j'ai crée un fichier .d vide pour #VMonk2. Au final j'ai droit à un parsing error dans le fichier .d de #VMonk1.

Voila, j'espére avoir été clair...
Revenir en haut Aller en bas
Invité
Invité




Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Lun 24 Nov 2008 - 23:30

SaLut Armand, pour le premier problème: tes conditions en effet ne seront jamais vrai avec ce code, je ne sais pas si tu veux que le temps soit compris entre 5 et 18 ou bien inférieur à 5 et supérieur à 18. Là ton code veut dire que les conditions seront vrai si Time est superieur à 18 et inférieur à 5 en même temps: ce qui est impossible.

Si tu veux vraiment que que cette créature apparaisse quand Time est inférieur à 5 et supérieur à 18 il faut créer deux IF END différent pour chaques conditions de temps, une pour TimeGT("5") et une pour TimeLT("18"), comme ceci:

IF
TimeLT("5")
THEN
RESPONSE #100
Wait(1)
CreateCreature("#VMonk2",[1441.1458],12)
END

IF
TimeGT("18")
THEN
RESPONSE #100
Wait(1)
CreateCreature("#VMonk2",[1441.1458],12)
END


SI en fait tu voulais que Time soit compris entre 5 et 18, il faut inverser les arguments pour donner une possibilité de réponse: VRAI

IF
TimeGT("5")
TimeLT("18")
THEN
RESPONSE #100
Wait(1)
CreateCreature("#VMonk2",[1441.1458],12)
END


Si tu n'y arrives pas avec les Triggers essaye en posant une variable.


Pour le deuxième problème je ne comprend pas ce qu'est le ~G~ et il te manque le label MONKJERK qui devrais être au dessus de l'APPEND (mais tu ne l'as peut être pas mis dans ton exemple).
Revenir en haut Aller en bas
Armand
Mexicanos Muy Bien
Armand


Nombre de messages : 622
Age : 38
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Mar 25 Nov 2008 - 7:40

Oui pour les time LT/GT c'est ta premiére proposition qui est la bonne. Je sais pas pourquoi je pensais que ça faisais une boucle de 24 heures (18,19,20,21,22,23,24,01,02...) cyclops
Donc voila ça c'est réglé.

Le "G" est un oubli (un global que j'avais pas entiérement effacé). Pour le détail de mon APPEND j'éditerais plus tard mon message car j'ai pas mon matos sous la main et puis techniquement je suis en train de bosser, alors...

EDIT 1 : Au fait existe t-il une commande pour faire apparaitre ma créature à coté de <CHARNAME>? Du genre les soldats amniens quand la réput est trop basse ou quand on se fait repérer dans la cité drow.
Revenir en haut Aller en bas
Pépé Malin
Pépé Pizza
Pépé Pizza
Pépé Malin


Nombre de messages : 333
Age : 36
Date d'inscription : 29/05/2008

Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Mar 25 Nov 2008 - 10:01

Salut Armand, bienvenue dans cette section !

La solution de Rigel est un bon début mais il pose problème car les deux blocs peuvent devenir successivement vrais ce qui aura pour conséquence de créer deux fois #VMonk2.

Le mieux est de regrouper TimeGT("18") et TimeLT("5") dans un seul bloc de script et de placer un OR(2) au dessus comme suit :

Code:
IF
  OR(2)
    TimeGT("18")
    TimeLT("5")
THEN
  RESPONSE #100
    Wait(1)
    CreateCreature("#VMonk2",[1441.1458],12)
END

Le OR a pour rôle de rendre le bloc de script effectif si :
- soit il est plus de 18h,
- soit il est moins de 5h.

Ensuite il y a un gros défaut dans ce bloc de script : il n'y a pas assez de conditions de déclenchement, et surtout il n'y a pas de conditions qui vont venir bloquer ce script : il suffit qu'il soit plus de 18h ou moins de 5h pour que ce bloc se répète indéfiniment dans le temps et donc créé une quantité infinie de #VMonk2. Il faut donc placer une variable en IF et l'augmenter d'un point en THEN pour que les conditions de déclenchement de scripts ne soient plus vraies.

Je te propose le bloc suivant :

Code:
IF
  OR(2)
    TimeGT("18")
    TimeLT("5")
    Global("#VMonk2Exists","GLOBAL",0)
THEN
  RESPONSE #100
    Wait(1)
    CreateCreature("#VMonk2",[1441.1458],12)
    SetGlobal("#VMonk2Exists","GLOBAL",1)
END

Ainsi, quand #VMonk2 sera créé, la variable #VMonk2Exists ne sera plus à 0 mais à 1, donc le bloc ne s'exécutera qu'une seule fois.
Pour finir, la commande permettant de faire apparaître une créature à côté d'une autre créature est la commande CreateCreatureObject("NomdelaCréature","CréatureCiblée").
Dans ton cas la créature créée est #VMonk2 et la créature cible est Player1 donc ça donnera en définitive :

Code:
IF
  OR(2)
    TimeGT("18")
    TimeLT("5")
    Global("#VMonk2Exists","GLOBAL",0)
THEN
  RESPONSE #100
    Wait(1)
    CreateCreatureObject("#VMonk2",Player1)
    SetGlobal("#VMonk2Exists","GLOBAL",1)
END

Voilà, avec ce script, ton moine apparaître une fois entre 18h et 5h à côté de Charname.

Concernant le dialogue, juste quelques rappels :
- les fichiers .d ne déclenchent pas les dialogues, ces fichiers contiennent la façon dont sont codés les dialogues, la façon dont les répliques et les réponses s'enchaînent, ni plus ni moins.
- le déclenchement des dialogues se fait avec la commande StartDialogueNoSet() dans un fichier SCRIPT ou bien en cliquant sur le PNJ si le dialogue doit être déclenché par le joueur.

Donc il faudra que quelque part dans tes scripts, tu places un bloc qui déclenchera le dialogue entre tes personnages. Si j'ai bien compris, c'est #VMonk1 qui débute le dialogue avec #VMonk2 donc dans les scripts de #VMonk1, il faudra faire un bloc comprenant un StartDialogueNoSet("#VMonk2").

Pour finir, il faut que tu mettes dans le #VMonk2.d :
BEGIN ~#VMonk2~
pour que ton mod s'installe correctement et puisse coder et installer le dialogue.
Revenir en haut Aller en bas
Armand
Mexicanos Muy Bien
Armand


Nombre de messages : 622
Age : 38
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Mar 25 Nov 2008 - 12:27

Ok j'y vois un peu plus clair. J'avais bien vu la fonction "OR" dans le mod kim mais j'avais mis des "!" devant et c'est ça qui devait bloquer.

Pour la variable global j'avais déjà utilisé ce système pour initier de nouveaux disloque avec le même perso. Je l'avais pas mis pour pas trop charger mais c'est vrai que pour que les autre comprenne c'est pas très pratique! No

Donc pour le script du dialogue que l'on surprend je vais être un peu plus exhaustif.

Code:
IF
  Range(Player1,28)
  NumTimesTalkedTo(0)
THEN
RESPONSE #100
  StartDialogueNoSet("#VMonk2")
END

Ici donc à partir d'une certaine distance on surprend un dialogue il me semblait que le StartDialogueNoSet ne fonctionnait pas mais c'est peut être parce que j'avais mis l'objet entre crochet...

Ensuite pour le dialogue j'inscris ceci dans mon .d :

Code:
BEGIN ~#VMonk1~

IF ~~ THEN BEGIN MONKDO
SAY @10
IF ~~ THEN EXTERN ~#VMonk2~ MONKDID
END

APPEND ~#VMonk2~

IF ~~ THEN BEGIN MONKDID
SAY @11
IF ~~ THEN REPLY @13 EXTERN ~#VMonk1~
END
END

J'avais mal découpé mon fichier tout à l'heure( le vrai code est beaucoup trop long et imbuvable). Quand je parlais de fichier vide pour V#Monk2, c'étais bien comme tu l'entendais (avec juste le begin).
Enfin bon il faudrait d'abord que je teste les corrections. C'est encore un peu embrouillé dans ma tête et je pourrais certainement mieux expliquer mon probléme une fois que j'aurais tester in game (le week end quand j'ai accés à mon install de BG2).

P.S : Excusez pour l'écriture mais j'ai un clavier et une souris qui me font un peu penser à la vieille pédale d'embrayage de ma rover. Evil or Very Mad
Revenir en haut Aller en bas
Invité
Invité




Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Mar 25 Nov 2008 - 13:24

Si je comprend bien tu veux que #VMonk1 interpelle #VMonk2 qui se trouvera à côté de Player1 à l'entrée en zone suivant tes conditions de temps; pour donner l'impression que charname surprend la conversation. Je pense qu'avec les conseils de phoeunix tu devrais y arriver sans trop te prendre la tête.
Revenir en haut Aller en bas
Administration Générale
Fils de Weimer
Administration Générale


Nombre de messages : 666
Date d'inscription : 28/05/2008

Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Mar 25 Nov 2008 - 16:27

S'il faut, comme proposé, je testerai ton mod et corrigerai en "direct live" tes bugs si besoin, mais à partir du 1er décembre je serai entièrement consacrée à la correction des bugs sur Severian.
Revenir en haut Aller en bas
Armand
Mexicanos Muy Bien
Armand


Nombre de messages : 622
Age : 38
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Mar 25 Nov 2008 - 18:23

Ok ça marche je t'envoie ça dans le week end. Mais pour l'instant j'ai rien fait de compliqué alors ça devrait aller.

J'ai surtout perdu beaucoup de temps sur IE tileset map editor qui est archi buggée et qui m'a valu quelques crises de nerf devant mon pc. Enfin j'ai à peu prés réussi à fabriquer la map que je voulais malgré les restrictions.
Revenir en haut Aller en bas
Administration Générale
Fils de Weimer
Administration Générale


Nombre de messages : 666
Date d'inscription : 28/05/2008

Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1Jeu 27 Nov 2008 - 23:11

Wow, bien joué si tu sais créer des maps, je ne m'y suis jamais essayé pour ma part, ça me semble un peu trop laborieux et pas indispensable pour ce que je veux faire.
Bon courage pour ton mod, en espérant bientôt pouvoir t'ouvrir un forum particulier. cheers
Revenir en haut Aller en bas
Contenu sponsorisé





Condition horaire/surprendre un dialogue Empty
MessageSujet: Re: Condition horaire/surprendre un dialogue   Condition horaire/surprendre un dialogue Icon_minitime1

Revenir en haut Aller en bas
 
Condition horaire/surprendre un dialogue
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mettre une condition dans une action de tp2
» Tuto NPC dialogue
» Aide sur dialogue
» Une CHAIN dans un dialogue [RESOLU]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LEGENDES :: LE MONDE DU MODDING :: Maîtrise :: Apprentissage-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser