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:00:12
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 |
Yan the salor Seigneur Messages: 151 |
Voilà pour le sort résuerction, je voudrais que le PJ possède un élément de sort:
Le script compile mais ne demande rien et le sort est jeté normalement. NWScript : void main(){ object opc = OBJECT_SELF; object oComposant=GetItemPossessedBy(opc,"NW_IT_MSMLMISC08"); if (oComposant != OBJECT_INVALID) /* Spellcast Hook Code Added 2003-06-20 by Georg If you want to make changes to all spells, check x2_inc_spellhook.nss to find out more */ if (!X2PreSpellCastCode()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } // End of Spell Cast Hook //Get the spell target object oTarget = GetSpellTargetObject(); //Check to make sure the target is dead first //Fire cast spell at event for the specified target if (GetIsObjectValid(oTarget)) { SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RESURRECTION, FALSE)); if (GetIsDead(oTarget)) { //Declare major variables int nHealed = GetMaxHitPoints(oTarget); effect eRaise = EffectResurrection(); effect eHeal = EffectHeal(nHealed + 10); effect eVis = EffectVisualEffect(VFX_IMP_RAISE_DEAD); //Apply the heal, raise dead and VFX impact effect ApplyEffectToObject(DURATION_TYPE_INSTANT, eRaise, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget)); } else { if (GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE) { int nStrRef = GetLocalInt(oTarget,"X2_L_RESURRECT_SPELL_MSG_RESREF"); if (nStrRef == 0) { nStrRef = 83861; } if (nStrRef != -1) { FloatingTextStrRefOnCreature(nStrRef,OBJECT_SELF); } } } } } |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Au risque de radoter à mort, le SPELL HOOKING te permettra de régler ce problème en 3 lignes de script.
NWScript :
if(nSpell == SPELL_RESURRECTION) { if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "TAG_DU_COMPOSANT"))) { SetModuleOverrideSpellScriptFinished(); SendMessageToPC(OBJECT_SELF, ""); } } Décidément, le spell hooking est sur tous les fronts en ce moment _________________ » 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 | |
Yan the salor Seigneur Messages: 151 |
Oki je veux bien mais il me met ça:
sort_alternatif.nss(33): ERREUR : UNDEFINED IDENTIFIER (SetModuleOverrideSpellScriptFinished) En plus dans (variable) si tu pouvais explier comment on met ce que tu demande avec précision pour el novice que je suis STP. Merci d'avances. |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
1 - Placer sur le module la variable suivante (Editer -> Propriétés du module -> Avancées -> Variables [...]) :
Citation : X2_S_UD_SPELLSCRIPT - string - sort_alternatif 2 - Créer un script nommé "sort_alternatif".
3 - Dans le script "sort_alternatif" : NWScript : #include "x2_inc_switches" void main() { int nSpell = GetSpellId(); // BESOIN D'UN COMPOSANT POUR LE SORT DE RESURRECTION if(nSpell == SPELL_RESURRECTION) { if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "TAG_DU_COMPOSANT"))) { SetModuleOverrideSpellScriptFinished(); SendMessageToPC(OBJECT_SELF, ""); } } } _________________ » 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 | |
Yan the salor Seigneur Messages: 151 |
C'est super gentil.
Sans vouloir abuser, puisque tu sembles bien maîtriser l'outil, je cherche à sélectionner l'ensemble des sorts et faire un test d20 et sur un "1" créer un "hiatus", un effet pervers quoi. Si tu pouvais me montrer comment faire. Te remercie d'avance |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
NWScript :
#include "x2_inc_switches" void main() { int nSpell = GetSpellId(); if(d20() == 1) { SetModuleOverrideSpellScriptFinished(); // Met fin au sort SendMessageToPC(OBJECT_SELF, ""); ////////////////////////////// ///////////////// // Placer ici le code pour "l'effet pervers" // ////////////////////////////// ///////////////// } // SINON, LE SORT FONCTIONNE else { if(nSpell == SPELL_RESURRECTION) { if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "TAG_DU_COMPOSANT"))) { SetModuleOverrideSpellScriptFinished(); // Met fin au sort SendMessageToPC(OBJECT_SELF, ""); } } } } Eh voilà ! Pour "l'effet pervers", je pense qu'un truc à base de switch ferait entièrement l'affaire, à toi de trouver différents effets aléatoires, plus ou moins gênants _________________ » 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 | |
Djezebel Héros Messages: 252 |
Juste pour ajouter une autre astuce au sujet des hooking et du fonctionnement des sorts :
Si vous voulez que l'ingrédient soit détruit au moment où vous lancez le sort : NWScript : if(nSpell == SPELL_RAY_OF_FROST) { if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "COMPO_ROF"))) { SetModuleOverrideSpellScriptFinished(); SendMessageToPC(OBJECT_SELF, ""); } else { DestroyObject(GetItemPossessedBy(OBJECT_SELF, "COMPO_ROF")); } } |
Revenir en haut | |
Yan the salor Seigneur Messages: 151 |
J'ai voulu créé un effet pervers mais ça refuse
NWScript :
if(d2() == 1) { SetModuleOverrideSpellScriptFinished(); // Met fin au sort SendMessageToPC(OBJECT_SELF, ""); object oCaster = GetLastSpellCaster(); ActionCastSpellAtObject (SPELL_CONFUSION, ocaster, 0); } Variable definited without type sur la dernière ligne |
Revenir en haut | |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
si tu as fais un copier coller tu as oublié la majuscule à oCaster
|
Revenir en haut | |
Yan the salor Seigneur Messages: 151 |
*Splatch* le c... merci beaucoup...
Cependant ça ne fonctionne pas. Le script compile, mais en cas d'échec ça marque juste ma phrase sans que la confusion ne soir lancée... MAIS POURQUOI?... CA pourrait venir du "0" dans mon script, après le sort je ne comprend pas ce qu'il faut mettre... |
Revenir en haut | |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
essaye ça :
NWScript : if(d2() == 1) { SetModuleOverrideSpellScriptFinished(); // Met fin au sort SendMessageToPC(OBJECT_SELF, ""); object oCaster = GetLastSpellCaster(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectConfused(),oCaster, 10.0); } |
Revenir en haut | |
Yan the salor Seigneur Messages: 151 |
Super ça marche...
Par contre je cherche à modifier le siort sanctuaire suprème, et on ne trouve que sanctuaire dans la liste des scripts de sorts. Si tu savais où trouver ça... Merci encore |
Revenir en haut | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Je sais pas si c'est voulue mais dans ton test c'est une chance sur 2 de rater et non sur 20.
Sinon le sort Santcuaire suprême c'est Etherealness et le nom de son scrit c'est x0_s0_ether. Voilà... _________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Yan the salor Seigneur Messages: 151 |
Oui merci de ta remarque sur le "2", et oui c'est fait exprès car je teste en ce moment, et c'est mieux 1 chance sur 2 pour cela (héhé).
Merci aussi pour le nom du sort. |
Revenir en haut | |
Yan the salor Seigneur Messages: 151 |
NWScript :
if(nSpell == SPELL_RESURRECTION) { if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "TAG_DU_COMPOSANT"))) { SetModuleOverrideSpellScriptFinished(); SendMessageToPC(OBJECT_SELF, ""); } } J'ai testé ce script mais ça ne marche pas, le sort focntionne sans demander l'objet en question. Si quelqu'un pouvait y regarder ce serait gentil |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
As-tu bien lu en entier le tutorial sur le spell hooking ? Il ne suffit pas de mettre ce script pour modifier le sort, il y a aussi une variable à placer sur le module.
_________________ » 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 | |
Yan the salor Seigneur Messages: 151 |
Oui oui j'ai bien mis cette variable, j'ai d'ailleusr utilisé un système de hiatus qui fonctionne, mais celui là non...
|
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Es-tu sûr que c'est bien le bon sort qui est concerné ? Résurrection ? Et non pas rappel à la vie ?
Edit : et je me souviens aussi d'autre chose : pour que le spell hooking fonctionne sur les PJ en plus des PNJ, il faut ajouter une variable sur les ZONES et non sur le module... regarde le tuto, j'avais ajouté qqchose à ce sujet. _________________ » 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 | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Ah, non, au temps pour moi, je viens de revérifier, c'est pour les PNJ qu'il faut ajouter une variable spéciale sur chaque zone.
_________________ » 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 | |
Ivellios Légende vivante Messages: 447 Localisation: Poitiers |
Ta condition est-elle bien placée sur ton script d'ensemble ?
_________________ Scripts, systèmes, fonctions,... c'est par ici... Pyjama pour castor, une vocation, un avenir sûr |
Revenir en haut | |
Daemon Chevalier Messages: 74 |
Yan the salor a écrit : NWScript :
if(nSpell == SPELL_RESURRECTION) { if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "TAG_DU_COMPOSANT"))) { SetModuleOverrideSpellScriptFinished(); SendMessageToPC(OBJECT_SELF, ""); } } J'ai testé ce script mais ça ne marche pas, le sort focntionne sans demander l'objet en question. Si quelqu'un pouvait y regarder ce serait gentil Voila j'ai le même problème. J'ai bien mis la ligne: nom: X2_S_UD_SPELLSCRIPT type: string valeur: spell_hooking et créer un script du nom spell_hooking NWScript :
#include "x2_inc_switches" void main() { int nSpell = GetSpellId(); // retourne le niveau du lanceur int nLevel = GetCasterLevel(OBJECT_SELF); // retourne la classe du lanceur int nClass = GetLastSpellCastClass(); int nSpellDC = GetSpellSaveDC(); location lLoc = GetSpellTargetLocation(); object oCible = GetSpellTargetObject(); // si un objet lance le sort, cette fonction retourne l'objet en question object oItemUsed = GetSpellCastItem(); if(nSpell == SPELL_LIGHT) { if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "COMPO_LIGHT"))) // tag de l'objet { SetModuleOverrideSpellScriptFinished(); SendMessageToPC(OBJECT_SELF, ""); } } } En final, le mage lance le sort lumiere même si il n'as pas le composant... |
Revenir en haut | |
Daemon Chevalier Messages: 74 |
Un petit UP.
|
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Ben si tu as vraiment fait comme c'est dit, ça devrait fonctionner, c'est donc que tu as dû oublier qqchose à un moment. Relis le tuto et refais-le pas à pas, tu devrais trouver l'erreur.
_________________ » 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 | |
omega Grand Chevalier Messages: 116 |
Juste un truc, j'ai esseyer avec une boule de feu, ca marche nikel, mais.... car faut un mais.
Il lance le sort quand même, on voit le perso incanter, la boule partir, mais ne pas exploser, et il dit : "vous n'avez pas les composants requis pour ce sort". Y aurait un moyen de bloquer l'animation de l'incantation ? |
Revenir en haut | |
lylver Héros Messages: 274 |
malheureusement non, le script ne gère que l'effet final.
|
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