La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 22:24:31


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Le Blaireau
Chevalier
Inscrit le: 17 Jan 2005
Messages: 71
Répondre en citant
Posté le : 07/07/2005 07:07:21 Sujet du message : Porte ton casque sinon passe ton chemin

Salut à tous..
Cette fois j'ai besoin de votre aide pour une condition d'exécution d'un dialogue.
J'aimerais qu'un PNJ ne me parle que si, j'ai un casque spécifique sur la tête.
Si je n'ai pas le casque ou si le casque dans mon inventaire mais que je ne le porte pas sur ma tête, il me dit un truc du genre... Je ne vous connais pas...

Voilà et merci encore
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 07/07/2005 08:54:20 Sujet du message :

voici deux piste pour resoudre ton probleme, l'une avec un seul script, l'autre avec trois :

Piste 1 : dans ton script de condition, tu verifie que le slot casque est occupé par un item de tag bien definit (pas aurora sous les yeux, donc pas de ligne de commande dans l'immédiat).
Avantage : un seul script
Inconvegnent : plutot complexe comme script

Piste 2 :
Dans le "onEquipItem" du module, tu definit une variable local (locale pour un module solo, Campagne pour un multijoueur persistant) lorsque le joueur s'equipe du casque
Dans le "OnUnEquipItem" tu suprime ta variable (local ou campagne) lorsqu'il se desequipe du casque

Enfin, tu crrer une simple verification de variable dans la condition d'execution de ton script.
Avantage : tres simple à réaliser
Inconvegnents : plusieurs scripts - necessite de metre en place une base de donnée si on doit gerer un module persistant (avec reboot frequent).

La seconde solution est assez simple à realiser.


Edit :
Moi j'opte pour la seconde solution. voici le set de scripts que j'utilise sur mon module afin de pas melanger les scripts : Dans les évenements du modules :
OnPlayerEquipItem :
NWScript :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.

OnPlayerUnEquipItem :
NWScript :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 nomme les scripts de l'EquipItem ainsi : eq_nomduscript
Et ceux du UnEquipItem ainsi : uq_nomduscript

ensuite tu créé le script du port du casque :eq_tagducasque
NWScript :
//:Confused///////////////////////// /////////////////////
//:: Name eq_tagducasque
//:Confused///////////////////////// ////////////////////
/*
  place une variable locale sur le PJ losqu'il porte le casque
*/

//:Confused///////////////////////// ////////////////////
//:: Created By:
//:: Created On:
//:Confused///////////////////////// ////////////////////

void main()
{
    object oItem = GetPCItemLastEquipped();
    object oPC = GetPCItemLastEquippedBy();

    if(GetTag(oItem)=="tagducasque")
    {
        SetLocalInt(oPC,"casque",1);
    }
}
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.


Tu crée le script : uq_tagducasque
NWScript :
//:Confused///////////////////////// /////////////////////
//:: Name uq_tagducasque
//:Confused///////////////////////// ////////////////////
/*
    place une variable locale au retrait du casque
*/

//:Confused///////////////////////// ////////////////////
//:: Created By:
//:: Created On:
//:Confused///////////////////////// ////////////////////
void main()
{
    object oItem = GetPCItemLastUnequipped();
    object oPC = GetPCItemLastUnequippedBy();

    if(GetTag(oItem)=="tagducasque")
    {
        SetLocalInt(oPC,"casque",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.


pour ta conversation, un script conditionnel ou tu verifie que la variable local "casque est bien à 1 ( je nomme mes script de condition avec en debut t_ ainsi je sait à quoi servent mes scripts Very Happy:

NWScript :
//:Confused///////////////////////// /////////////////////
//:: FileName t_casque
//:Confused///////////////////////// ////////////////////
//:Confused///////////////////////// ////////////////////
//:: Created By: Script Wizard
//:: Created On: 07/07/2005 10:57:06
//:Confused///////////////////////// ////////////////////
int StartingConditional()
{

    // Inspecter variables locales
    if(!(GetLocalInt(GetPCSpeaker(), "casque") == 1))
        return FALSE;

    return TRUE;
}
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, ça c'est valable pour une version solo où il n'y a pas de reboot (qui memet automatiquement les variables locales à zéro !).
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 07/07/2005 10:13:15 Sujet du message :

Pour le tag du casque sa donnerai une ligne de test comme sa
NWScript :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.

après je sais pas se que sa retourne quand c'est vide mais bon.
_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Le Blaireau
Chevalier
Inscrit le: 17 Jan 2005
Messages: 71
Répondre en citant
Posté le : 08/07/2005 02:39:16 Sujet du message :

Surprised Oh la la !
Tout ça pour un seul PNJ???.
J'ai trouvé un script à placer dans la condition d'exécution du dialogue qui fait l'inverse. Si le joueur porte son casque ou à une arme à la main, le PNJ refuse de lui parler...
Voici ce script. Y a t'il un moyen de le modifier pour qu'il fasse l'inverse, donc ne pas adresser la parole si le joueur ne porte pas un certain casque?
NWScript :
int StartingConditional()
{
object item;
object oPC = GetPCSpeaker();
    // Add the gender restrictions
    if((item = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC))!=OBJECT_INVALID)
        return FALSE;
    if((item = GetItemInSlot(INVENTORY_SLOT_HEAD,oPC))!=OBJECT_INVALID)
        return FALSE;

    return TRUE;
}
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é Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 08/07/2005 02:49:55 Sujet du message :

Remplacer les TRUE par des FALSE, et les FALSE par des TRUE, tout simplement Cool
_________________
» 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
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 08/07/2005 05:47:41 Sujet du message :

Oui en effet, j'avoue que j'ai tendence à tuer les moustiques avec un bazzoka...Embarassed

Essaye avec ceci, c'est le script conditionel pour ouvrir le dialogue, change le TAG_CASQUE par celui de ton casque, il fonctionne.

NWScript :
int StartingConditional()
{
object item;
object oPC = GetPCSpeaker();
    // Add the gender restrictions
    if(GetTag(GetItemInSlot(INVENTORY_SLOT_HEAD, GetPCSpeaker())) == "TAG_CASQUE") return TRUE;

    return FALSE;
}
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é Ignorer l'utilisateur
 
Le Blaireau
Chevalier
Inscrit le: 17 Jan 2005
Messages: 71
Répondre en citant
Posté le : 09/07/2005 03:32:22 Sujet du message :

Le petit dernier fonctionne parfaitement
Merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 69.472ms