La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 28/04/2024 12:21:19


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 03/05/2005 02:18:43 Sujet du message : Lancer un script à partir d'un item

Etant toujours aussi nulle en script, je m'en remet une fois de plus à vous :

J'ai trouvé ce script :
NWScript :
// Put this script in the module's onActivateItem event

void main()
{
    // Image Map vfx test
    string sItem = GetTag(GetItemActivated());
    if (sItem == "item_01")
    {
    ExecuteScript("VFX_effect01", OBJECT_SELF);
    }
}
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.


il permet de lancer le scipt VFX_effect01 lorsqu'on utilise un item. Mais ce script est à placer dans le onActivateItem du module.
Est-il possible de lancer un script à partir d'un item sans passer par le onActivateItem ?

Autre chose : je compte réaliser plusieurs items lançant des scripts différents. Comment faire ?
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sam Lam
Grand Chevalier
Inscrit le: 31 Mar 2005
Messages: 126
Répondre en citant
Posté le : 03/05/2005 06:35:08 Sujet du message :

Sans étudier trop la question, je me dis que la façon la plus simple (mais peut-être la moins élégante), c'est de faire, dans le onActivateItem, une boucle de test sur le tag ou le ResRef de l'item activé pour savoir quel script exécuté. Le problème, c'est que si tu as beaucoup d'objets de ce genre, ça risque de devenir rapidement illisible et qu'en prime le temps de réaction ne soit pas optimal.
_________________
Nécromancien du Forum Niv.3 dès le premier post.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
PinMaster
Ecuyer
Inscrit le: 30 Sep 2004
Messages: 49
Localisation: Non loin de Marseille...
Répondre en citant
Posté le : 03/05/2005 09:23:58 Sujet du message :

Que répondre... TAGBASE_SCRIPTING Very Happy

Cette option est très utile car on associe le Tag d'un Item (ou plusieurs Item de même tag) à un script ayant le même nom que le Tag. Elle est activé par défaut depuis HOTU, le module ayant été conçus avant doivent avoir une ligne d'initialisation dans le OnModuleLoad.

Bref, je ne vais pas tout t'expliquer sur le sujet car il existe sur JoL-Masako.
Alors voici le lien : A propos du Enable Tagbase

Tu verras c'est très utile.
_________________
Module en développement : Pandorn Nouvel Age
Système de Pandorn diffusé : Cliquez-ici
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 03/05/2005 10:08:49 Sujet du message :


Citation :
Le problème, c'est que si tu as beaucoup d'objets de ce genre, ça risque de devenir rapidement illisible et qu'en prime le temps de réaction ne soit pas optimal.
Non, il n'y aura que 4 ou 5 objets de ce type



Citation :
Cette option est très utile car on associe le Tag d'un Item (ou plusieurs Item de même tag) à un script ayant le même nom que le Tag. Elle est activé par défaut depuis HOTU, le module ayant été conçus avant doivent avoir une ligne d'initialisation dans le OnModuleLoad.
Effectivement j'ai écrasé ce script avec le mien, ne sachant à quoi il sert... Donc si je comprends bien, tout est prévue au départ ! Inutile de rajouter quoi que ce soit, il suffit d'associer un script portant le tag de l'item est le tour est joué !?
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 03/05/2005 10:48:44 Sujet du message :

mais ça marche pas... Crying or Very sad
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
PinMaster
Ecuyer
Inscrit le: 30 Sep 2004
Messages: 49
Localisation: Non loin de Marseille...
Répondre en citant
Posté le : 03/05/2005 10:50:05 Sujet du message :

Oui c'est tout à fait ça pour faire simple, mais saches qu'il faud suivre une certaine structure pour le script en plus de la correcpondance NomScript <-> TagItem

Dont voici la structure de base :
NWScript :
#include "x2_inc_switches"

void main()
{
    int nEvent = GetUserDefinedItemEventNumber();
    object oPC;
    object oItem;
    object oSpellOrigin;
    object oSpellTarget;
    int iSpell;


    switch (nEvent)
    {
        case X2_ITEM_EVENT_ONHITCAST:
        {
            oItem = GetSpellCastItem();
            oPC = OBJECT_SELF;
            oSpellOrigin = OBJECT_SELF ;
            oSpellTarget = GetSpellTargetObject();

            // Mettre le code correspondant.

            break;
        }
        case X2_ITEM_EVENT_ACTIVATE: // Sur Activation de l'item
        {
            oPC = GetItemActivator();
            oItem = GetItemActivated();
            // Mettre le code correspondant.

            break;
        }
        case X2_ITEM_EVENT_EQUIP: // Sur Equipement
        {
            oPC = GetPCItemLastEquippedBy();
            oItem = GetPCItemLastEquipped();

            // Mettre le code correspondant.

            break;
        }
        case X2_ITEM_EVENT_UNEQUIP:
        {
            oPC = GetPCItemLastUnequippedBy();
            oItem = GetPCItemLastUnequipped();

            // Mettre le code correspondant.

            break;
        }
        case X2_ITEM_EVENT_ACQUIRE:
        {
            oPC = GetModuleItemAcquiredBy();
            oItem = GetModuleItemAcquired();

            // Mettre le code correspondant.

            break;
        }
        case X2_ITEM_EVENT_UNACQUIRE:
        {
            oPC = GetModuleItemLostBy();
            oItem = GetModuleItemLost();

            // Mettre le code correspondant.

            break;
        }
        case X2_ITEM_EVENT_SPELLCAST_AT: // Sur lancer de sort, il me semble
        {
            oPC = OBJECT_SELF;
            oItem = GetSpellTargetObject();
            iSpell = GetSpellId();

            // Mettre le code correspondant.

            break;
        }
    }
}
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à en gros la structure, comme tu peux le constater on peut gérer plusieurs type d'évènement sur un Item. En règle général on a pas besoin de tous les cas... donc faudra supprimer les "case" de trop.Cool
_________________
Module en développement : Pandorn Nouvel Age
Système de Pandorn diffusé : Cliquez-ici
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 03/05/2005 11:59:22 Sujet du message :

Qu'est ce que tu entends par "Mettre le code correspondant" ?

Je suis asser nulle en script et là je vois vraiment pas...
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
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 : 03/05/2005 13:13:15 Sujet du message :

Bah par là je pense qu'il veut dire met le code correspondant ^^
Par exemple tu vas pas mettre le même script dans le OnAcquire/OnUnacquireItem, dans le OnEquip/UnequipItem, etc
Chaques évènements ne servent pas à la même chose donc il faut le code approprier.
_________________
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
 
PinMaster
Ecuyer
Inscrit le: 30 Sep 2004
Messages: 49
Localisation: Non loin de Marseille...
Répondre en citant
Posté le : 03/05/2005 15:50:27 Sujet du message :

OK... et bien comme l'a confirmé Ivellios.

Bref pour ton cas, une version simplifiée :
NWScript :
#include "x2_inc_switches"

void main()
{
    int nEvent = GetUserDefinedItemEventNumber();

    if (nEvent == X2_ITEM_EVENT_ACTIVATE)
    {
            object oPC = GetItemActivator();
            object oItem = GetItemActivated();

           
            ExecuteScript("VFX_effect01", OBJECT_SELF);
    }
}
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.

_________________
Module en développement : Pandorn Nouvel Age
Système de Pandorn diffusé : Cliquez-ici
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger 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 31.229ms