La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 28/04/2025 23:32:42


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Ombremort
Novice
Inscrit le: 22 Mai 2003
Messages: 13
Répondre en citant
Posté le : 05/12/2003 10:22:17 Sujet du message : Serrure spéciale et passage secret.

Voilà, je voudrais réalisé deux choses mais je suis nul en script, quelqu'un pourrait-il m'aider:

- Tout d'abord je voudrais qu'un porte vérouillée, avec l'option clef unique, vérifie que le personnage possède dans son inventaire un objet parmis un certain nombre d'objets autorisés (4 dans mon cas) et que si le personnage en possède un la porte se dévérouille.

-Ensuite, je voudrais que lorsque le personnage clique sur une statue utilisable, celle-ci vérifie que le joueur est autorisé (une liste des persos autorisés dans le script c'est fesable? il m'en faudrait 4)et le téléporte dans une pièce en affichant une conversation du genre: "vous appuyez sur l'oeil de la statue, un orifice s'ouvre dans le mur. Vous entrez dans le passage et celui ci se referme derrière vous".


Merci d'avance.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Ombremort
Novice
Inscrit le: 22 Mai 2003
Messages: 13
Répondre en citant
Posté le : 08/12/2003 08:05:50 Sujet du message :

C'est toujours agréable de n'avoir aucune réponse........

Bouh, c'est pas juste, je demande pas grand chose pourtant mais j'ai l'impression que ça interesse personne Crying or Very sad

ps: si les modérateurs pense que c'est du flood, il peuvent supprimmer mais c'est dommage de n'avoir aucune réponse.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 08/12/2003 08:13:38 Sujet du message :


Ombremort a écrit :
C'est toujours agréable de n'avoir aucune réponse........

Bouh, c'est pas juste, je demande pas grand chose pourtant mais j'ai l'impression que ça interesse personne Crying or Very sad

ps: si les modérateurs pense que c'est du flood, il peuvent supprimmer mais c'est dommage de n'avoir aucune réponse.
C'est-à-dire qu'il y a du remue-menage ailleurs sur le forum... Ca monopolise un peu les esprits Mr. Green
Et puis c'était le week-end, maintenant les gens se remettent à travailler sur NWN Wink
Je vais étudier tes deux questions quand j'aurai un peu de temps. Je tâche de te fournir une réponse ce soir si personne ne répond avant.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 08/12/2003 22:38:36 Sujet du message :

Pour ton premier cas, il faudrait que ta porte soit fermée à clé mais que tu ne précise pas de TAG de clé pour l'ouvrir. En effet, si tu fournis une clé valide et que le personnage en possède une, la porte s'ouvrira sans tenir compte de ta condition supplémentaire. Alors que si elle est fermée par une clé inconnue, elle ne s'ouvrira que grâce à un script. En l'occurrence, tu peux placer le script qui suit sur l'évènement OnFailToOpen de ta porte.
NWScript :

#include "nw_i0_plot"
void main()
{
  string sTagKey="TAG_DE_LA_CLE";
  string sTagList="TAG_OBJET1;TAG_OBJET2;TAG_OBJET3;TAG_OBJET4"; // Liste des tags des objets permettant l'ouverture

  object oKey;

  object oCreature=GetClickingObject();
  if (GetIsPC(oCreature))
  {
   
   
    oKey=GetItemPossessedBy(oCreature, sTagKey);
    if (GetIsObjectValid(oKey))
    {
     
      // Parcours des Tags d'objet valide pour autoriser l'ouverture.
      string sTmp;
      int nPos=FindSubString(sTagList, ";"); // Recherche du premier ;
      int nCount=0;
      while (nPos!=-1) // Tant qu'on trouve un ;
      {
        sTmp=GetSubString(sTagList, 0, nPos);
        sTagList=GetSubString(sTagList, nPos+1, GetStringLength(sTagList)-nPos-1);
        if (HasItem(oCreature, sTmp))
        {
          nCount++; // on le compte
        }
        nPos=FindSubString(sTagList, ";"); // Recherche du ; suivant
      }
     
      if (nCount>0)
      {
       
        SetLocked(OBJECT_SELF, 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.

C'est une possibilité pour résoudre ton problème (note que je n'ai pas eu le temps de tester le script, si tu as des problèmes n'hésite pas à le dire). Les Tag et liste de Tag du début du script sont bien sur à personnaliser en fonction des objets que tu créés.

Pour le second problème le script peut être plus simple. Dans le OnUsed de ton plaçable tu peux ecrire ceci :
NWScript :

void main()
{
  string sNameList="Nom du personnage 1;Nom du personnage 2;Nom du personnage 3;Nom du personnage 4";
  object oCreature=GetLastUsedBy();
  if (GetIsPC(oCreature))
  {
   
    if (FindSubString(";" + sNameList + ";", ";" + GetName(oCreature) + ";")!=-1)
    {
      // Le nom du personnage est dans la liste
      SendMessageToPC("");
      object oWP=GetObjectByTag("TAG_DE_LA_DESTINATION");
      AssignCommand(oCreature, ClearAllActions()); // Vide la queue d'action du personnage
      AssignCommand(oCreature, ActionJumpToLocation(GetLocation(oWP)));
    }
  }
}
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.

Pareil pour ce script, veille à personnaliser le TAG de ton point de passage et les noms que tu veux tester. Il y a moyen d'améliorer un peu si tu n'es pas sure de la casse de caractère des noms en utilisant GetStringUpperCase ou GetStringLowerCase
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
Dernière édition par lendraste le 08/12/2003 23:11:51; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Ombremort
Novice
Inscrit le: 22 Mai 2003
Messages: 13
Répondre en citant
Posté le : 08/12/2003 22:46:12 Sujet du message :

Je n'ai pas encore tester mais le premier ne correspond pas à ce que je veux, je veux que la clef dont tu parles fasse partit des objets possibles pour le dévérouillage. Je suppose donc qu'il suffit de supprimer la partie vérifiant la présence de la clef et mettre le tag de la clef dans la liste des objets?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 08/12/2003 23:15:48 Sujet du message :


Ombremort a écrit :
Je n'ai pas encore tester mais le premier ne correspond pas à ce que je veux, je veux que la clef dont tu parles fasse partit des objets possibles pour le dévérouillage. Je suppose donc qu'il suffit de supprimer la partie vérifiant la présence de la clef et mettre le tag de la clef dans la liste des objets?
En effet. Essaye ça :

NWScript :

#include "nw_i0_plot"
void main()
{
  string sTagList="TAG_OBJET1;TAG_OBJET2;TAG_OBJET3;TAG_OBJET4"; // Liste des tags des objets permettant l'ouverture

  object oCreature=GetClickingObject();
  if (GetIsPC(oCreature))
  {
   
    // Parcours des Tags d'objet valide pour autoriser l'ouverture.
    string sTmp;
    int nPos=FindSubString(sTagList, ";"); // Recherche du premier ;
    int nCount=0;
    while (nPos!=-1) // Tant qu'on trouve un ;
    {
      sTmp=GetSubString(sTagList, 0, nPos);
      sTagList=GetSubString(sTagList, nPos+1, GetStringLength(sTagList)-nPos-1);
      if (HasItem(oCreature, sTmp))
      {
        nCount++; // on le compte
      }
      nPos=FindSubString(sTagList, ";"); // Recherche du ; suivant
    }
   
    if (nCount>0)
    {
     
      SetLocked(OBJECT_SELF, 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.

_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Ombremort
Novice
Inscrit le: 22 Mai 2003
Messages: 13
Répondre en citant
Posté le : 09/12/2003 07:41:25 Sujet du message :

Oups petit problème sur le deuxième, la ligne

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.


Ne se compile pas

Sinon je teste l'autre Very Happy

Et merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 09/12/2003 10:09:15 Sujet du message :


Ombremort a écrit :
Oups petit problème sur le deuxième, la ligne

Code :
SendMessageToPC("vous appuyez sur l'oeil de la statue, un orifice s'ouvre dans le mur. Vous entrez dans le passage et celui ci se referme derrière vous");


Ne se compile pas

Sinon je teste l'autre Very Happy

Et merci
Excuses-moi j'ai oublié un paramètre :
NWScript :

SendMessageToPC(oCreature, "");
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.

_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ 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 83.948ms