La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 19:06:50


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Lisan Anthelus
Chevalier
Inscrit le: 31 Mai 2004
Messages: 73
Localisation: Lyon (FRANCE)
Répondre en citant
Posté le : 04/04/2005 03:48:33 Sujet du message : Appeler un script avec passage de paramètres

Bonjour,

je cherche à appeler un script depuis un autre script.
De plus je voudrais l'appeler avec passage de paramètres.
J'ai commencé à triturer Aurora mais je ne trouve pas.
Je me demande maintenant si c'est possible.
Merci d'avance Smile
_________________
Un cerveau... c'est fait pour agir.
La pensée n'est là que pour rendre plus efficace l'action
.

H. Laborit

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Vallav
Novice
Inscrit le: 23 Jan 2005
Messages: 12
Répondre en citant
Posté le : 04/04/2005 07:38:43 Sujet du message :

salut
tu peux preciser un peu?
 
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 : 04/04/2005 09:22:05 Sujet du message :

Pour appeler un script à partir d'un autre il y a la fonction ExecuteScript(). Pour ce qui est de passer des paramètres, il te faut utiliser des variables locales stockées sur l'appelant par exemple.

Ex :

NWScript :
void main()
{
  if(condition)
  {
    // bloc d'instructions
    /* ..... */

   
    SetLocalInt(OBJECT_SELF, "nom_de_la_variable", 1);
  }
  else
  {
    // bloc d'instructions
    /* ..... */

   
    SetLocalInt(OBJECT_SELF, "autre_variable", "");
  }

  ExecuteScript("nom_du_script");
}
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.

(exemples totalement bidons et fictifs, bien entendu)

Ensuite, dans le script appelé, ici "nom_du_script", on récupère les variables pour s'en servir :

NWScript :
void main()
{
 
  if(GetLocalInt(OBJECT_SELF, "nom_de_la_variable") == 1)
  {
    // bloc d'instructions
    /* ..... */
  }
  else
  {
    // bloc d'instructions
    /* ..... */

   
    string sPhrase = GetLocalString(OBJECT_SELF, "autre_variable");
  }
}
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.

_________________
» 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
 
Lisan Anthelus
Chevalier
Inscrit le: 31 Mai 2004
Messages: 73
Localisation: Lyon (FRANCE)
Répondre en citant
Posté le : 04/04/2005 17:03:25 Sujet du message :

Merci, c'est très clair Very Happy
_________________
Un cerveau... c'est fait pour agir.
La pensée n'est là que pour rendre plus efficace l'action
.

H. Laborit

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Daemon
Chevalier
Inscrit le: 15 Mar 2005
Messages: 74
Répondre en citant
Posté le : 04/04/2005 20:34:55 Sujet du message :

Dans le même genre d'idée:
Supposons que l'on ai un objet de type contenant.
Le pj a dans son inventaire deux objet sur lui X et Y.

Est-il possible de:
1.mettre un script en "veille" donc inactif sur les objets X et Y? Petite précision, les scripts mis sur les objets sont quasi les mêmes mais avec des variables différentes.
2.Activer le script de l'objet X ou Y en le mettant dans le contenant c-a-d activer le script mis en veille par un script générale placé dans le contenant. La difficulté est ici d'avoir un script générale qui lance le script inactif que se soit l'objet X ou Y.

J'espère mes propos sont claires.
 
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 : 04/04/2005 22:52:53 Sujet du message :

Pas tellement lol... Au lieu de préciser ta demander de façon générale, donne une description concrète, ce sera plus simple 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
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 04/04/2005 23:00:36 Sujet du message :

Hum, hum...

Il me semble que ton script général devrait être dans le OnClose de ton contenant. Ainsi quand il est fermé, son OnClose vérifie quel objet est déposé... et déclenche la partie de script adéquate... Du coup, un seul script.. non ?
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Daemon
Chevalier
Inscrit le: 15 Mar 2005
Messages: 74
Répondre en citant
Posté le : 05/04/2005 09:47:30 Sujet du message :

Pour de plus ample informations, je suis en train de penser un nouveau système d'artisanat: Le S.A.R. (système d'artisanat par recettes)

Je m'explique:

Le pj pour pouvoir crafter doit choisir la classe de prestiges artisans et choisir les donc correspondants que j'ai créer(craft armures, armes, scribe etc...)

Par la suite pour crafter, il doit connaitre la "recette" de l'objet.

Donc de manière concréte, comment je pense faire cela:

Le pj a la recette d'une épée courte par exemple.(Je vous laisse imaginer les situations RP que cela peut engendrer vole de recettes, négociations) Donc il a un item "recette" dans son inventaire.
On suppose dans l'exemple ici qu'il possède les matériaux pour crafter.

1. il met son item recette dans le contenant. le contenant, ici la forge, vérifie si le PJ possède le don correspondant ainsi que ici le marteau pour forger. Si oui il enclenche le script "mis en veille" sur l'item "recette".
3. Le script de la recette s'enclenche. Vérifie si les matériaux sont présents. Si oui, fait un jet de dés par rapport à un Jet de difficultés de l'objet à créer avec le bonus de niveau de l'artisan.

A noter que les recettes générales pourront être échangées. Par contre les recettes de "prestiges" ne pourront être utilisée par que le joueur qui aura découvert la recette.
 
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 : 05/04/2005 13:03:54 Sujet du message :

Ah ok, mais alors, dernière précision : ton contenant, ici la forge en l'occurrence, c'est un objet appartenant au joueur (de type sac), ou c'est un plaçable utilisable inventaire ?
_________________
» 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
 
Daemon
Chevalier
Inscrit le: 15 Mar 2005
Messages: 74
Répondre en citant
Posté le : 05/04/2005 13:59:02 Sujet du message :


finipe a écrit :
Ah ok, mais alors, dernière précision : ton contenant, ici la forge en l'occurrence, c'est un objet appartenant au joueur (de type sac), ou c'est un plaçable utilisable inventaire ?
Un placeable avec inventaire que l'on peut voir partout dans les systèmes d'artisanat.
 
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 : 05/04/2005 18:00:08 Sujet du message :


Citation :
Le pj a la recette d'une épée courte par exemple. Donc il a un item "recette" dans son inventaire. On suppose dans l'exemple ici qu'il possède les matériaux pour crafter.

1. Il met son item recette dans le contenant. Le contenant, ici la forge, vérifie si le PJ possède le don correspondant ainsi que ici le marteau pour forger. Si oui il enclenche le script "mis en veille" sur l'item "recette".

2. Le script de la recette s'enclenche. Vérifie si les matériaux sont présents. Si oui, fait un jet de dés par rapport à un Jet de difficultés de l'objet à créer avec le bonus de niveau de l'artisan.

A noter que les recettes générales pourront être échangées. Par contre les recettes de "prestiges" ne pourront être utilisée par que le joueur qui aura découvert la recette.
Pas besoin de faire des "mises en veille" comme tu dis... Alors, en gros ça peut se faire de la façon suivante :

1. Recette placée dans le contenant : script de vérification des matériaux, des outils, des compétences, des dons, etc. placé sur le onDisturb du plaçable.

2. Si conditions du 1. non valides, rien ne se passe. Sinon on lance le script de fabrication de la recette. On récupère le tag de l'objet recette (qui devra donc être unique), et en fonction de ce dernier, on effectue telle ou telle suite de script, par l'intermédiaire de ExecuteScript éventuellement.
_________________
» 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
 
sinquem
Ecuyer
Inscrit le: 28 Jan 2004
Messages: 68
Répondre en citant
Posté le : 07/04/2005 16:49:05 Sujet du message :

J'ai fais ce genre de chose déjà, mais ce n'est pas encore en ligne ...

J'ai pour ma part mis le script le OnActivate du module, car vieux module Embarassed, mais la solution marche trés bien aussi en passant par le MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS et donc sur le contenant lui-même.

La solution de l'activate est à mon sens un bon choix car elle resulte réellement d'une volonter du joueur de tenter la création.

L'idée ensuite est de lister via un tableau l'ensemble des ingrédients sur l'objet Module.

1- Lors de l'activation de vérifier que les objets placés dedans font partie des composants possibles.

2- Si (1) rechercher leur numéro d'ordre dans le tableau des ingrédients.

3- Trier les numéros, et les mettres sous forme de chaine de caractere.

4- Verifier que la chaine de caractere correspond à une des recettes possibles.

5- si 4 alors créer l'objet resultant et supprimer les ingrédients si réussite ou plus vache dans tout les cas Laughing
 
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 35.361ms