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 05:56:41


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Miksimus
Voyageur
Inscrit le: 18 Oct 2005
Messages: 4
Répondre en citant
Posté le : 18/10/2005 15:30:15 Sujet du message : Pierre de rappel ne fonctionnant que dans une seule zone

Bonjour à tous,

Je cherche à créer une sorte de pierre de rappel qui ne fonctionnerai que dans une seule zone (ou quelques zones).
Dois-je placer un script dans le OnUserDefined de la zone concernée ou non ?

Sinon pour la pierre de rappel, j'ai récupéré ce que j'avais trouvé sur le forum :
NWScript :
void main()
{
    //enregistre dans oActivated le dernier objet utilise
    object oActivated=GetItemActivated();
    // si l'objet est la pierre de retour on prend l'utilisateur et on le teleporte au portail
    if (GetTag(oActivated)=="Pierrederetour")
    {
        // enregistre dans oUser l'utilisateur de l'objet
        object oUser=GetItemActivator();
        // On verifie que l'utilisateur est un PJ
        if (GetIsPC(oUser))
        {
            AssignCommand(oUser, JumpToObject(GetObjectByTag("PortailDeRappel")));
        }
    }
}
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.


Voilà, je vous remercie de votre aide... Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Dangon
Acolyte
Inscrit le: 18 Oct 2005
Messages: 21
Répondre en citant
Posté le : 18/10/2005 15:47:38 Sujet du message :

Salut Smile

Il suffit de vérifier le tag de la zone de l'activateur de la pierre.

NWScript :

void main()
{
    //enregistre dans oActivated le dernier objet utilise
    object oActivated=GetItemActivated();
    // enregistre dans oUser l'utilisateur de l'objet
    object oUser=GetItemActivator();
    // si l'objet est la pierre de retour et que son utilisateur se situe dans la bonne zone
    // on prend l'utilisateur et on le teleporte au portail
    if (GetTag(oActivated)=="Pierrederetour" && GetTag(GetArea(oUser))=="Tag_De_La_Zone")
    {

        // On verifie que l'utilisateur est un PJ
        if (GetIsPC(oUser))
        {
            AssignCommand(oUser, JumpToObject(GetObjectByTag("PortailDeRappel")));
        }
    }
}
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
 
Miksimus
Voyageur
Inscrit le: 18 Oct 2005
Messages: 4
Répondre en citant
Posté le : 18/10/2005 16:00:41 Sujet du message :

Excellent ! Merci en fait ça n'était pas si compliqué que ce que je ne le pensais...

Et du coup inversement qi je souhaite que dans cette zone une autre pierre de rappel ne fonctionne pas j'inclus le test :

NWScript :
&& GetTag(GetArea(oUser))!="Tag_De_La_Zone")/* suspect parenthesis end found !*/
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.



Merci beaucoup !! Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Dangon
Acolyte
Inscrit le: 18 Oct 2005
Messages: 21
Répondre en citant
Posté le : 18/10/2005 16:06:23 Sujet du message :

T'as tout compris Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Miksimus
Voyageur
Inscrit le: 18 Oct 2005
Messages: 4
Répondre en citant
Posté le : 18/10/2005 16:14:51 Sujet du message :

Merci bien !

Voici donc le script final qui définie une pierre de rappel PR1 qui ne fonctionnne que dans la zone Zone1 et une autre pierre de rappel PR2 qui fonctionne de partout sauf dans la zone Zone1 :
NWScript :
void main()
{
    // enregistre dans oUser l'utilisateur de l'objet
    object oUser=GetItemActivator();
    //enregistre dans oActivated le dernier objet utilise
    object oActivated=GetItemActivated();
    // si l'objet est la pierre de retour on prend l'utilisateur et on le teleporte au portail
    if (GetTag(oActivated)=="PR2" && GetTag(GetArea(oUser))!="Zone1")
    {
        // On verifie que l'utilisateur est un PJ
        if (GetIsPC(oUser))
        {
            AssignCommand(oUser, JumpToObject(GetObjectByTag("PortailDeRappel")));
        }
    }
    if (GetTag(oActivated)=="PR1" && GetTag(GetArea(oUser))=="Zone1")
    {
        // On verifie que l'utilisateur est un PJ
        if (GetIsPC(oUser))
        {
            AssignCommand(oUser, JumpToObject(GetObjectByTag("PortailDeRappel")));
        }
    }
}
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.


Voilà, merci encore Dangon ! Very Happy
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Dangon
Acolyte
Inscrit le: 18 Oct 2005
Messages: 21
Répondre en citant
Posté le : 18/10/2005 16:21:33 Sujet du message :

On va certainement me trainter de pointilleux, mais tu devrai mettre un ELSE IF. Sur un exemple aussi simple cela n'a pas beaucoup d'importance, mais à force cela peut économiser de la ressource. Une bonne habitude à prendre en tout cas Smile

NWScript :

void main()
{
    // enregistre dans oUser l'utilisateur de l'objet
    object oUser=GetItemActivator();
    //enregistre dans oActivated le dernier objet utilise
    object oActivated=GetItemActivated();
    // si l'objet est la pierre de retour on prend l'utilisateur et on le teleporte au portail
    if (GetTag(oActivated)=="PR2" && GetTag(GetArea(oUser))!="Zone1")
    {
        // On verifie que l'utilisateur est un PJ
        if (GetIsPC(oUser))
        {
            AssignCommand(oUser, JumpToObject(GetObjectByTag("PortailDeRappel")));
        }
    }
    else if (GetTag(oActivated)=="PR1" && GetTag(GetArea(oUser))=="Zone1")
    {
        // On verifie que l'utilisateur est un PJ
        if (GetIsPC(oUser))
        {
            AssignCommand(oUser, JumpToObject(GetObjectByTag("PortailDeRappel")));
        }
    }
}
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
 
Miksimus
Voyageur
Inscrit le: 18 Oct 2005
Messages: 4
Répondre en citant
Posté le : 18/10/2005 17:35:48 Sujet du message :

ok merci pour le tuyau !
 
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 57.542ms