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 06:30:57


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 07/09/2005 18:08:47 Sujet du message : Composants de sorts

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);
                }
            }
        }
    }
}
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.
 
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 : 07/09/2005 18:59:41 Sujet du message :

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, "");
    }
  }
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.


Décidément, le spell hooking est sur tous les fronts en ce moment Very Happy
_________________
» 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
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 08/09/2005 17:01:55 Sujet du message :

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 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 : 08/09/2005 17:08:05 Sujet du message :

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, "");
    }
  }
}
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
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 10/09/2005 16:40:15 Sujet du message :

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 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 : 10/09/2005 18:47:48 Sujet du message :

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, "");
      }
    }
  }
}
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.


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 Very Happy
_________________
» 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
 
Djezebel
Héros
Inscrit le: 29 Sep 2005
Messages: 252
Répondre en citant
Posté le : 30/09/2005 17:53:47 Sujet du message :

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"));
    }
  }

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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 08/10/2005 16:20:04 Sujet du message :

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);
  }
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.


Variable definited without type sur la dernière ligne
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ailesnoires
Grand Chevalier
Inscrit le: 21 Oct 2004
Messages: 110
Localisation: Vendée
Répondre en citant
Posté le : 08/10/2005 16:27:39 Sujet du message :

si tu as fais un copier coller tu as oublié la majuscule à oCaster
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 08/10/2005 16:29:16 Sujet du message :

*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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ailesnoires
Grand Chevalier
Inscrit le: 21 Oct 2004
Messages: 110
Localisation: Vendée
Répondre en citant
Posté le : 08/10/2005 16:58:41 Sujet du message :

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);
  }
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 08/10/2005 17:19:04 Sujet du message :

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 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 : 08/10/2005 17:25:36 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 08/10/2005 17:37:34 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 13/10/2005 20:36:25 Sujet du message :

NWScript :
if(nSpell == SPELL_RESURRECTION)
  {
    if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "TAG_DU_COMPOSANT")))
    {
      SetModuleOverrideSpellScriptFinished();
      SendMessageToPC(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.


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 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 : 14/10/2005 13:26:15 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 14/10/2005 15:22:25 Sujet du message :

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 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 : 14/10/2005 16:25:00 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 15/10/2005 16:51:56 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 15/10/2005 17:28:50 Sujet du message :

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 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 : 26/11/2005 20:23:09 Sujet du message :


Yan the salor a écrit :
NWScript :
if(nSpell == SPELL_RESURRECTION)
  {
    if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "TAG_DU_COMPOSANT")))
    {
      SetModuleOverrideSpellScriptFinished();
      SendMessageToPC(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.


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
Salut à tous.

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, "");
            }
    }
}
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.


En final, le mage lance le sort lumiere même si il n'as pas le composant...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Daemon
Chevalier
Inscrit le: 15 Mar 2005
Messages: 74
Répondre en citant
Posté le : 27/11/2005 12:05:23 Sujet du message :

Un petit UP.Very Happy
 
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 : 27/11/2005 14:46:29 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
omega
Grand Chevalier
Inscrit le: 09 Jan 2004
Messages: 116
Répondre en citant
Posté le : 09/05/2006 03:01:13 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 09/05/2006 11:43:16 Sujet du message :

malheureusement non, le script ne gère que l'effet final.
 
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 67.435ms