La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/05/2025 12:11:16


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Kris
Ecuyer
Inscrit le: 29 Avr 2005
Messages: 69
Répondre en citant
Posté le : 03/03/2006 01:30:50 Sujet du message : Script pour dormir

je cherche un script pour donner la capacité a un objet de permettre a son proprietaire de dormir dans un dongeon ou un endroit ou c est interdit normalement un certain nombre de fois.

si qqun a ca en stock ou pourrais m aiguiller , merci.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 03/03/2006 14:57:27 Sujet du message :

Bonjour bonjour,

Pour cela, je ne vois qu'une solution pour le moment (c'est pas vrai j'en vois deux mais l'autre necessite un grand changement).

En fait il faut que tu alloue une variable local au pj avec un delaycommand pour la supprimmer ensuite. Dans le OnRest tu dit que si la variable est vrai (TRUE) tu fais ForceRest() sur le PJ en lui allouant si necessaire l'animation assis par terre.

Voila je suis pas sur que ca marche éssaie.

Sinon si quelqu'un d'autre à une solution à mon avis ca n'intéresse pas que Kris.
_________________
La mort n'est rien seul le fait de mourir est terrible
Henry Fielding 1745

Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 03/03/2006 15:11:10 Sujet du message :

Ca va pas marcher comme ça, si la zone est définie comme "repos interdit" le script OnRest ne se lance même pas, c'est bloqué avant. Donc soit mettre le ForceRest() sur le script de l'objet dans le OnItemActivated soit (je pense que c'était ta 2ème solution) :

-laisser toutes les zones en repos autorisé
-mettre une variable sur les zones ou le repos est interdit
-Quand on active l'objet faire donc une variable locale temporaire (l'effacer avec un DelayCommand())
-Dans le OnRest vérifier : si la zone est interdite au repos
si oui : si la variable est présente sur le PJ : autoriser le repos
sinon : l'empecher (avec un ClearAllActions)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 03/03/2006 17:19:00 Sujet du message :

C'était bien la deuxieme solution^^.
_________________
La mort n'est rien seul le fait de mourir est terrible
Henry Fielding 1745

Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Kris
Ecuyer
Inscrit le: 29 Avr 2005
Messages: 69
Répondre en citant
Posté le : 05/03/2006 01:22:49 Sujet du message :

y a pas d autres soltions avec un script sur un objet? tout simple?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 05/03/2006 12:04:18 Sujet du message :

Non, et cela pour deux raisons:
l'option qui empeche de dormir est sur une zone et non sur les joueurs, donc pour les faire dormir faudrait desactiver cette option mais alors tous les joueurs dans la zone pourrait dormir.
Et que en plus il est impossible de desactiver cette option par script (il me semble).
_________________
La mort n'est rien seul le fait de mourir est terrible
Henry Fielding 1745

Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 25/03/2006 02:08:50 Sujet du message :

Salut Kris ^^

Je supose que tu voulais reproduire le systeme d'anneau de repos d'Arka I pour ton mod ^^

J'ai fais un petit code, qui fonctionne pour une fois, alors je le post meme si souneva t'as surement deja aidé Razz

Il faut creer un anneau de tag "REPOS_OK" avec un pouvoir unique utilisable uniquement sur soi.

Dans le OnRest faut rajouter ca
NWScript :
object oPJ = GetLastPCRested();

void main()
{
  if(GetTag(GetArea(oPJ)) == "zoneA" || GetTag(GetArea(oPJ)) == "zoneB" || GetTag(GetArea(oPJ)) == "zoneC")//etc
  {
    if(GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED)
      {
      //si DODO_OK == TRUE on autorise le repos et on passe la variable a FALSE
      if(GetLocalInt(oPJ, "DODO_OK") == TRUE)
        {
        SendMessageToPC(oPJ, "Le pouvoir protecteur de l'anneau te permet de te reposer sans danger...");
        SetLocalInt(oPJ, "DODO_OK", FALSE);
        }
      //Sinon on le stop
      else
        {
        SendMessageToPC(oPJ, "L'endroit est trop dangereux pour se reposer...");
        AssignCommand (oPJ,ClearAllActions());
        }
      }
  }
}
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.

Dans la ligne
if(GetTag(GetArea(oPJ)) == "zoneA" || GetTag(GetArea(oPJ)) == "zoneB" || GetTag(GetArea(oPJ)) == "zoneC")//etc
il te suffit de rajouter || GetTag(GetArea(oPJ)) == "tag_de_la_zone" pour chaque zone dans laquelle tu veux bloquer le repos.

Et dans le OnActivateItem, il faut rajouter ca
NWScript :
if(GetTag(GetItemActivated()) == "REPOS_OK")
    {
    SetLocalInt(oActivator, "DODO_OK", 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.


Si un pj se trouve dans une des zone designée dans la ligne ci dessus et qu'il n'a pas activé un anneau, le repos est bloqué.

Je trouve que la ligne
if(GetTag(GetArea(oPJ)) == "zoneA" || GetTag(GetArea(oPJ)) == "zoneB" || GetTag(GetArea(oPJ)) == "zoneC")//etc
n'est pas très propre... mais c'est le seul moyen que j'ai trouvé pour que ca compile et fonctionne comme voulu, donc...
 
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 29.827ms