La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 06:41:22
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
parrain Chevalier Messages: 97 Localisation: Creteil |
Lut all!...
Jourd'hui j'ai besoin d'un peut d'aide j'ai fait ce script ci dessu: void main() { object oPC = GetLastUsedBy(); if (!GetIsPC(oPC)) return; ExploreAreaForPlayer(GetArea(oPC), oPC); } ...il sert à réveler la carte à partir d'un placeable dans le onUsed. Mais se que je vousdrais aussi c'est que ce script soit utilisable à partir d'un objet exemple une carte, j'ai essayer de le faire mais je sais pas comment attribuer un script a un objet pour que celui ci soit activer a l'utilisation de l'objet pour donc donner le mem effet qu'avec les placeable sil vous plait aider moi merci d'avence... parrain VS scripts: |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Le mieu c'est de le mettre dans le OnEnter de l'area avec un test de tag voir si la carte correspond a la map (dans ce cas la oPC = GetEnteringObject()).
Et pour activer soit OnActivatedItem soit TagBase de Hotu... _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
parrain Chevalier Messages: 97 Localisation: Creteil |
Bah ce qui m'aiderai le plus c'est d'avoir le script directemnet pliz...
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Si j'ai bien compris, tu veux utiliser un objet (type épée, torche, carte) pour révéler la zone.... 1. Tu crées un objet magique avec l'assistant. 2. Tu choisis catégorie parchemin. 3. Tag "CarteTest" 4. Dans ses propriétés, tu fais le ménage et tu places pouvoir unique sur soi 5. Penses à l'identifier en cochant la case... C'est tout pour la carte, passons au script 6. Propriétés du module 7. Évènements --> OnActiveItem, tu places le script suivant: NWScript :
//:///////////////////////// ///////////////////// //:: Example XP2 OnActivate Script Script //:: x2_mod_def_act //:: (c) 2003 Bioware Corp. //:///////////////////////// //////////////////// /* Put into: OnItemActivate Event */ //:///////////////////////// //////////////////// //:: Created By: Georg Zoeller //:: Created On: 2003-07-16 //:///////////////////////// //////////////////// #include "x2_inc_switches" void main() { object oItem = GetItemActivated(); object oPC = GetItemActivator(); // * Generic Item Script Execution Code // * If MODULE_SWITCH_EXECUTE_TAGBASED _SCRIPTS is set to TRUE on the module, // * it will execute a script that has the same name as the item's tag // * inside this script you can manage scripts for all events by checking against // * GetUserDefinedItemEventNumber( ). See x2_it_example.nss if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS) == TRUE) { SetUserDefinedItemEventNumber(X2_ITEM_EVENT_ACTIVATE); int nRet = ExecuteScriptAndReturnInt(GetUserDefinedItemEventScriptName(oItem),OBJECT_SELF); if (nRet == X2_EXECUTE_SCRIPT_END) { return; } } else if (GetTag(oItem) == "CarteTest") { ClearAllActions(); AssignCommand (oPC,PlayAnimation(ANIMATION_FIREFORGET_READ)); ExploreAreaForPlayer(GetArea(oPC), oPC); } } Voila bon courage _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
parrain Chevalier Messages: 97 Localisation: Creteil |
Merci beaucoup...
|
Revenir en haut | |
parrain Chevalier Messages: 97 Localisation: Creteil |
:oops:EU oué dsl j'ai oublé de préciser je voudrais que chaque objet eèvle une zone en particulier...
Ansi le rp peut se dévelloper lègerement mais c'est toujour un coup de pouce aide moi encore pliz... Parrain VS script: |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Tu donne a tes cartes le tag des zones a dévooiler et tu replace cette ligne (du sctip plus haut)
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. Par 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.
Voila... _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Tu changes les termes du contrat... Bon, l'idée d'Ivellios me parait tout à fait pertinente. 1. Tu crées un objet (magique ou non, on s'en fiche) dont le TAG est rigoureusement le même que le Tag de la zone qui correspond ==> Exemple: Tag d'une Zone: "Plaine", Tag de la carte correspondante: "Plaine" 2. Tu places le script suivant dans le OnEnter de la Zone à tester NWScript :
void main() { object oPC = GetEnteringObject(); if (GetIsPC(oPC) == TRUE) { // test sur les objets de l'inventaire object oTest = GetFirstItemInInventory(oPC); while(GetIsObjectValid(oTest)==TRUE) { if(GetTag(GetArea(oPC)) == GetTag(oTest)) { ExploreAreaForPlayer(OBJECT_SELF, oPC); // SendMessageToPC(oPC, "debbugg"); } oTest = GetNextItemInInventory(oPC); } } } 3. Tu refais la même manip pour les autres zones (tag de la zone = tag de la carte) en réimplantant à chaque fois le script dans le OnEnter de la zone. Rq: si le fait de donner le même tag à la zone et à la carte te pose problème... On peux complexifier la chose avec des GetSubString Voila bon courage. _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Ne vaudrait-il pas un GetItemPossessedBy plutot qu'une boucle (plus couteuse dans ce cas) et ainsi permettre de voir direct si il a ou non la carte... ?
_________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
C'est une possibilité, mais je te laisse faire le script... _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Longbow a écrit : Hum, hum...
Bah oki ^^
C'est une possibilité, mais je te laisse faire le script... NWScript : void main() { object oPC = GetEnteringObject(); if(GetIsPC(oPC)) { if(GetItemPossessedBy(oPC, GetTag(GetArea(oPC))) != OBJECT_INVALID) { ExploreAreaForPlayer(OBJECT_SELF, oPC); } } } _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
parrain Chevalier Messages: 97 Localisation: Creteil |
Bon merci pour vos script mais je voudrais savoir comment procéder pour rajouter un script dans le OnActvItem de mon module car quand je fais un copier coller du script cela m'affiche ceci:
DUPLICATE FUNCTION IMPLEMENTATION (main) j'y comprend rien si vous pouvuez m'aider sa serais cool mici d'avence... |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum... voir plus bas
Dernière édition par Longbow le 10/03/2005 17:24:02; édité 3 fois
|
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum... reprenons les bases
NWScript :
void main() { // Une seule fois GetItemActivator et une seule fois GetItemActivated object oPC = GetItemActivator(); // Puis quel objet... object oItem = GetItemActivated(); if(GetTag(oItem) == "TeleportSystem") { ClearAllActions(); DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON), oPC)); DelayCommand(1.5, AssignCommand (oPC, ActionJumpToObject(GetWaypointByTag("WP_Passerelle")))); } // fin des commandes si le Tag de l'objet est TeleportSystem if (GetTag(oItem) == "TrackingKit") { ExecuteScript("ranger_tracking", oPC); return; } // Ainsi de suite avec autant de test que tu veux } Voila, bon courage _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
parrain Chevalier Messages: 97 Localisation: Creteil |
Eu merci à toi mais je vois pas a quoi cela pourrais me servir...
|
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
DUPLICATE FUNCTION IMPLEMENTATION (main) veut dire que tu as 2 fonctions main dans ton script. Remplace le script que tu as par celui de Longbow et ca devrait compiler.
_________________ ... |
Revenir en haut | |
parrain Chevalier Messages: 97 Localisation: Creteil |
Oui mais, scusez moi encore mais je vois pas trop ce que je voudrais faire c'est compilé le script de sac à cadavre qui va dans le OnActivItem mais quand j'essiae de mettre le sript que vous m'avez donner cela m'affiche ceci: DUPLICATE FUNCTION IMPLEMENTATION (main) en faite la je voudrais que vous me donnier la technique pour rajouter à l'infini des script les un dans les autres car des script de OnActivItem j'en ai plein donc je voudrais les rassembler...
Merci d'avence et dsl pour l'acharnement...:oops: |
Revenir en haut | |
Yeziliclick Seigneur Messages: 235 |
tu mets le corps du programme qu'il y a dans le main du scripot spécifique dans le main du script que tru veux modifier. Mais il faut faire attention a ce que tu n'ai pas des nom de variables similaires et qui ne se rapporte pas à la même chose.
Mais je te conseille vivement de faire deux tutoriaux : celui que tu trouves sur le site de bioware et celui qu'a fait Baldurien il y a un sacré moment. tutorial de Baldurien et celui de bioware traduit en francais tutorial traduit. Ca ne t'explique pas tout et pas vraiment les script, mais le peu qu'il y a aide pas mal. Et sinon tu fais une recherche avec un motuer de recherche tutorial nwn ou didactitiel nwn. Ca marche très bien aussi. |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Citation : je voudrais que vous me donnier la technique pour rajouter à l'infini des script les un dans les autres C'est exactement ce que j'ai fait dans le script mis plus haut... Tu repères les tests qui commencent par if (ou else if)... suivis d'un { , des commandes et un }... Tu copies/colles le tout dans ton script de base..._________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
parrain Chevalier Messages: 97 Localisation: Creteil |
Bien mersi de vous être creuser la tête pour moi...
|
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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