Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

Encore un truc de dialogue que je n'arrive pas à faire

Répondre
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne

Encore un truc de dialogue que je n'arrive pas à faire

.

Message par deratiseur »

Soit le dialogue :

Code : Tout sélectionner

IF ~~ THEN BEGIN Explication SAY @1408
++ @1409 GOTO Altruisme
++ @14010 GOTO Proposition
++ @14011 DO ~Enemy()~ EXIT
END

IF ~~ THEN BEGIN Altruisme SAY @14012
++ DO ~SetGlobal("pxl2revn","LOCALS",1)~ EXIT
END

IF ~~ THEN BEGIN Proposition SAY @14014
++ @14015 DO ~SetGlobal("pxl2revn","LOCALS",3)~ EXIT
++ @14016 DO ~Enemy()~ EXIT
Comment faire pour 14012, que le pnj dise sa réplique, mette la valeur à jour et termine le dialogue sans que le pj puisse agir ?
(le valeur pxl2revn sert pour le script associé au pnj : avec la valeur à 1 il fait un truc, donne de l'xp puis disparait)
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Code : Tout sélectionner

IF ~~ THEN BEGIN Altruisme SAY @14012
IF ~~ THEN DO ~SetGlobal("pxl2revn","LOCALS",1)~ EXIT
END
J’utilise jamais la forme abrégée ++
D'ailleurs ça fait un bon moment que je ne l'ai pas vu dans le code source d'un mod.
Je me demande si n'est pas du old weidu.
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Alors ça c'est ballot. J'ai écris tous mes précédents dialogues avec "IF ~~ THEN DO" avant de trouver ++ dans certains mods, et je pensais que c’était le ++ "l'évolution", alors je l'ai adopté. Comme quoi "quand un système marche, il ne faut pas chercher à en changer"
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Bon, mon dialogue marche maintenant. mais j'ai un autre problème : je dois cliquer sur le npj pour lui parler, alors que son script est ceci :

Code : Tout sélectionner

IF
    HasItem("pxl2vrid",Player1) 
THEN
    RESPONSE #100
        SetGlobal("Player","LOCALS",1)
        MoveToObject(Player1)
END

IF
    Global("Player","LOCALS",1)
    Global("pxl2revntalk","GLOBAL",0)
    Range(Player1,6)
THEN
    RESPONSE #100
    SetGlobal("pxl2revntalk","GLOBAL",1)
    StartDialogNoSet(Player1)
END
Il va bien vers le pc, mais ensuite il reste là coté sans entamer le dialogue. WTF ?
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Essaye en ajoutant True() ou NumTimesTalkedTo(0)
Choisis celui qui convient à la situation.

Code : Tout sélectionner

IF ~[color=#00ff00]True()[/color]~ THEN BEGIN Explication SAY @1408

Code : Tout sélectionner

IF ~[color=#00ff00]NumTimesTalkedTo(0)[/color]~ THEN BEGIN Explication SAY @1408


Le problème avec ++ c'est qu'il est équivalant à

Code : Tout sélectionner

IF ~~ THEN [color=#ff0000]REPLY[/color]
Et c'est le REPLY qui provoquait ton premier problème.
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

J'ai essayé avec True() : pas mieux. Pourtant j'ai simplifié le code et passé les variables en GLOBAL :

Code : Tout sélectionner

IF
    HasItem("pxl2vrid",Player1) 
THEN
    RESPONSE #100
        SetGlobal("revnPlayer","GLOBAL",1)
        MoveToObject(Player1)
END

IF
    Global("revnPlayer","GLOBAL",1)
    Range(Player1,6)
THEN
    RESPONSE #100
    StartDialogNoSet(Player1)
END
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
Akadis
Adepte de Grondemarteau
Araignée éclipsante
Messages : 1224
Enregistré le : lun. 28 avr. 2003, 10:58
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par Akadis »

Tu as oublié de changer la valeur de revnPlayer avant de lancer ton StartDialogNoSet.

Dans ce genre de cas je remplace (temporairement :gign: ) le StartDialogNoSet(Player1) par un bon vieux DestroySelf() :diable:
  • Si le PNJ se suicide bel et bien : mon script et bon. Le problème vient du dialogue.
  • Si le PNJ reste en vie : c'est mon script qui est à revoir.


Sinon tu es bien sûr d'avoir bien lié ton fichier dlg au fichier cre de ton pnj ?
Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
Responsable de la maintenance du mod
Kim
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Alors j'ai changé mon script en ça :

Code : Tout sélectionner

IF
    HasItem("pxl2vrid",Player1)
THEN
    RESPONSE #100
        SetGlobal("revnPlayer","GLOBAL",1)
        MoveToObject(Player1)
END

IF
    Global("revnPlayer","GLOBAL",1)
    Range(Player1,6)
THEN
    RESPONSE #100
        SetGlobal("revnPlayer","GLOBAL",0)
        DestroySelf()
END
La créature s'approche toujours du pj1 et se colle à lui, mais ne se détruit pas.
Le dialogue est bon, si je clique sur le monstre je dialogue avec lui, jusqu'à la conclusion. Le dialogue complet :
► Afficher le texte
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
rivvers
Ours brun
Messages : 302
Enregistré le : sam. 21 janv. 2012, 14:36
Statut : Hors ligne
.

Message par rivvers »

Hello deratiseur,

Par défaut, les scripts exécutent les blocs un à un dans l'ordre, jusqu'à en trouver un qui soit valide puis s'arrête, avant de recommencer du début.
Autrement dit, tant que les conditions du bloc n°1 sont valides, il n'ira jamais voir le bloc n°2...
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Heu.... Alors comment il fait Nevin dans le cimetière pour aller voir le pc pour lui dire "au secours, mon oncle Lester se relève d'entre les mort" ? Parce qu'il coure clairement après le pc pour pouvoir lui parler, et je ne vois rien dans son script qui corresponde à ça.
En plus là j'ai un soucis, je ne peux pas généraliser cette rencontre avec [PC], ça doit être le pj qui porte l'objet. Et le bloc répété 6 fois, une fois par personne (player1-6).
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
rivvers
Ours brun
Messages : 302
Enregistré le : sam. 21 janv. 2012, 14:36
Statut : Hors ligne
.

Message par rivvers »

De la façon la plus simple qui soit :

Code : Tout sélectionner

IF
  See([PC])
  NumTimesTalkedTo(0)
THEN
  RESPONSE #100
    Dialog([PC])
END
Un Dialog impliquant une distance assez faible pour l'entamer, il se rapproche donc du joueur pour le brin de causette.
Contrainte que n'a pas à respecter un StartDialogNoSet.

Peut-être quelque chose comme ça ?

Code : Tout sélectionner

IF
    See(Player1)
    HasItem("pxl2vrid", Player1) 
    !Range(Player1, 6)
THEN
    RESPONSE #100
        MoveToObject(Player1)
END

IF
    See(Player1)
    HasItem("pxl2vrid", Player1) 
    Range(Player1, 6)
THEN
    RESPONSE #100
        SetGlobal("pxl2revntalk","GLOBAL",1)
        StartDialogNoSet(Player1)
END
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Ça marche, mais il manque un IF GLOBAL("pxl2revntalk","GLOBAL",0) dans le premier bloc. Sinon le pnj recommence son dialogue quand on l'egresse et qu'il devient ennemi.

En fait tout ce qu'il manquait dans mon script c’était un "!range".

Ok, merci :) L'interpan v8 avance.
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
rivvers
Ours brun
Messages : 302
Enregistré le : sam. 21 janv. 2012, 14:36
Statut : Hors ligne
.

Message par rivvers »

deratiseur a écrit :Ça marche, mais il manque un IF GLOBAL("pxl2revntalk","GLOBAL",0) dans le premier bloc. Sinon le pnj recommence son dialogue quand on l'egresse et qu'il devient ennemi.

En fait tout ce qu'il manquait dans mon script c’était un "!range".

Ok, merci :) L'interpan v8 avance.
Ce qu'il manquait c'était un moyen de libérer l'accès du bloc n°2.
Tu aurais pu inverser les deux blocs, ça aurait aussi fonctionné... ;)
Avatar du membre
deratiseur
Golem de fer
Messages : 3697
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

On se demande comment en étant aussi nul j'ai pu créer autant de trucs.
Le standard téléphonique est en rade : l'atelier du Deratiseur ne répondra plus à aucune demande personnalisée.
Bosse sur : Interplan v9, Derat's Kri'Binn, Todd : KOPP2.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
rivvers
Ours brun
Messages : 302
Enregistré le : sam. 21 janv. 2012, 14:36
Statut : Hors ligne
.

Message par rivvers »

deratiseur a écrit :On se demande comment en étant aussi nul j'ai pu créer autant de trucs.
Tes "autant de trucs" sont autant de preuves du contraire.
Répondre

Retourner vers « Dialogues »

Qui est en ligne

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