La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/05/2024 22:32:28


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 18/12/2006 23:33:23 Sujet du message : Condition variable int dans une conversation

Coucou et oui moi aussi je builde un ch'ti module avec nwn2... (si je vous dit Dragon Noir ?...)

Voici mon souci :

Je fais une conversation avec trois racines.
La première se lance sans condition.
La seconde se lance lorsque la variable int itoto est égale à 10
La troisième so lance lorsque la variable int itoto est égale à 15
La variable itoto est rataché à l'objet module GetModule().

Sous NWN premier du nom je n'ai jamais eu de problème oui mais voila. Lorsque ma varaible s'initialise au détour d'une conversation ou même en entrant dans un déclancheur, ça ne marche pas... Sad

Pour le test j'utilise le script : gc_local_int

Avec comme paramètre dans le Rafraîchir :
sVaraiable (String) : itoto
sCheck (String) : =15
sTarget (String) : DNir (qui et le Tag de mon module...)

ou est ce que je me plante ?

voici le script qui initialise ma variable dans une conversation :
NWScript :

// Demetra se joint au pj
// npc_demetra_dni
// int itoto = 10
void main()
{
object oModule = GetModule();
object oPC = GetPCSpeaker();
object oNPC1 = GetObjectByTag("npc_demetra_dni",0);
int itoto;

//if(GetLocalInt(oModule," ;itoto")<15)
//  {
  SetLocalInt(oModule,"itoto",15);
//  AddHenchman(oPC,oNPC1);
//  }

}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Voila soit le "SetLocalInt(oModule,"idemetrajoint",15);" ne marche pas. Soit c est la condition dans la conversation.

Voici le script que j'ai mis dans le onenter d'un trigger et ça ne marche pas mieux :

NWScript :
// Arrivee en foret
// Demetra veux aller au chateau
// npc_demetra_dni
// int itoto= 15
void main()
{
object oModule = GetModule();
//object oNPC1 = GetObjectByTag("npc_demet ra_dni",0);
SetLocalInt(oModule,"itoto",15);

}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Je dois être un peu rouiller en script ou alors il y a quelque chose qui m'échappe...



Edit : DNir pour Dragon Noir - Interlude : Résistance.
_________________
Le site du Module Dragon Noir
Le groupe du Module L5A - L'ombre et la Lumière
Crimson Skies
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 19/12/2006 00:41:02 Sujet du message :

N'oublie pas de mettre tes racines de dialogue en sens inverse des conditions qui les lancent : si ta première racine se lance sans condition, alors le programme n'ira pas vérifier plus bas qu'une autre racine correspond mieux aux conditions souhaitées. Faut toujours mettre la racine qui se lance sans condition en dernier dans ton dialogue.

(désolé si je te rabache un truc que tu savais déjà, mais c'est le genre d'inattention qu'on a souvent Smile)
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 19/12/2006 08:39:17 Sujet du message :

Non c'est pas ça. J'ai bien fait gaffe à ça...

Et j'ai même testé dans les deux sens par précaution.
Non je ne sais pas si ça vient de l'initalisation de la variable ou du test de la condition...
_________________
Le site du Module Dragon Noir
Le groupe du Module L5A - L'ombre et la Lumière
Crimson Skies
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 19/12/2006 15:07:52 Sujet du message :


Citation :
voici le script qui initialise ma variable dans une conversation :
Konrad> c'est bien d'initialiser tes variables , mais les contrôles tu sur les noeuds ou elles doivent être utilisées pour qu'elles soient reconnues ?

J'ai réussi a utiliser ce nouveau systéme , et j'ai pu le faire fonctionner sur mon module , faudrais que j'essaye ce soir d'adapter tes scripts pour trouver ou ça foire.

L4intêret du nouveau systéme c'est qu'avec un seul script global de reconnaissance de variables , tu peut gérer toutes les situations.

Par contre je ne me rapelle pas t'avoir vu poster ton script global de reconaissance de variables .... ! Surprised
Tu peux le poster stp ?

PS : Je n'ai pas réussi a réutiliser les methodes 'Bioware' de NWN1 pour les sélections de noeuds de dials , j'ai dû passer par les nouvelles methodes 'Obsidian NWN2'.
_________________
Adresse du forum de mon module : Quetes et Legendes
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 19/12/2006 19:49:13 Sujet du message :

J'utilise le script standard obsidian "gc_local_int" et je passe les variables de condition en paramètre sur le neud correspondant.
Mais je crois que je vais retapper entrierement le script façon NWN1 pour débuger ça.

NWScript :
// gc_local_int(string sVariable, string sCheck, string sTarget)
/* This script checks a local int variable's value.

  Parameters:
    string sVariable  = The name of the variable
    string sCheck    = The operation to check on the value of the variable.
                        Default is ==, but you can also specify <, >, or !
                        e.g. sCheck of "<50" returns TRUE if sVariable's value is <50
                        a sCheck of "9" or "=9" returns TRUE if sVariable's value is equal to 9
                        and a sCheck of "!0" returns TRUE if sVariable's value is not equal to 0.
    string sTarget    = Tag or identifier of Target. If blank then use dialog OWNER.
*/

// FAB 10/4
// EPF 4/12/05 changing variable names and implementation,
//    adding != functionality, moving common things to ginc_var_check
// ChazM 4/15 change implementation, added PrintString
// BMA 4/27/05 new description, added GetTarget()
// BMA 7/19/05 added object invalid printstring

#include "ginc_var_ops"
#include "ginc_param_const"

int StartingConditional(string sVariable, string sCheck, string sTarget)
{
    object oTarg = GetTarget(sTarget, TARGET_OBJECT_SELF);
  if (GetIsObjectValid(oTarg) == FALSE) PrintString("gc_local_int: " + sTarget + " is invalid");

    int nValue = GetLocalInt(oTarg, sVariable);
    int iRet = CompareInts(nValue, sCheck);

    PrintString ("gc_local_int: nValue = " + IntToString(nValue) + ", sCheck = " + sCheck + " -- return val: " + IntToString(iRet));
    return (iRet);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Enfin je trouve étrange que je suis le seul a avoir ce problème. Je suis le seul a faire des conversations qui évolue en fonction d'une variable ?
_________________
Le site du Module Dragon Noir
Le groupe du Module L5A - L'ombre et la Lumière
Crimson Skies
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 19/12/2006 20:01:11 Sujet du message :

moi j'utilise ça :

NWScript :
/* Script global de " condition " pour les dialogues , permet de pouvoir */

#include "ginc_var_ops"

// Will return 0 if no quest.
int StartingConditional(string valeur_droit_passage , string valeur_sur_pj)
{
  object oPC = GetPCSpeaker();
    int int_valeur_sur_pj = GetLocalInt(oPC,valeur_sur_pj);
  return (CompareInts(int_valeur_sur_pj,valeur_droit_passage));
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

_________________
Adresse du forum de mon module : Quetes et Legendes
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Konrad
Grand Maître Chanteur du Conseil
Inscrit le: 30 Sep 2002
Messages: 1258
Localisation: Empire d'Halöven
Répondre en citant
Posté le : 19/12/2006 20:09:35 Sujet du message :

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 24/12/2006 13:22:26 Sujet du message :

NWScript :
Valeurs spéciales pour viser autre chose que le TAG :
   "$OBJECT_SELF" // OBJECT_SELF, celui qui execute le script
    "$OWNER"
   "$OWNED_CHAR" // GetOwnedCharacter, le personnage qui controle le hench s'il y a
   "$PC" // PCSpeaker, le PJ qui parle
   "$PC_LEADER" // Le leader de la faction du premier PJ(ne pas utiliser pour monde persistant)
   "$PC_NEAREST" // NearestPC (owned and alive)
   "$PC_SPEAKER" // PCSpeaker
   "$MODULE" // Le module
   "$LASTSPEAKER"
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Informations constituée après consultation de ginc_param_const.

Je me suis fais mes propres fonctions personnelement.

Ha oui et évite le tag du module voici les commentaires du GetObjectByTag :
NWScript :
// Get the nNth object with the specified tag.
// - sTag
// - nNth: the nth object with this tag may be requested
// * Returns OBJECT_INVALID if the object cannot be found.
// Note: The module cannot be retrieved by GetObjectByTag(), use GetModule() instead.
object GetObjectByTag(string sTag, int nNth=0);
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 32.376ms