La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 24/04/2024 00:10:35


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 12/04/2005 18:39:48 Sujet du message : [Tutorial] Le Spell-Hooking

Le Spell Hooking est un outil formidable permettant de modifier les sorts de façon systématique ou conditionnelle, à votre goût et avec une simplicité déconcertante, sans aller modifier directement le script du sort. Le tutorial en anglais sur le spell hooking se trouve ici : [http]


1 - Placer sur le module la variable suivante (Editer -> Propriétés du module -> Avancées -> Variables [...]) :

Citation :
X2_S_UD_SPELLSCRIPT - string - spellhooking
2 - Créer un script qui servira pour tous les sorts "modifiés", qui se nommera donc "spellhooking" dans notre exemple. Ce script sera ensuite toujours le même, quel que soit le sort que l'on désire modifier.

3 - Différents exemples de ce qu'il est possible de faire avec ce script :

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_FIREBALL)
  {
    if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "COMPO_BDF")))
    {
      SetModuleOverrideSpellScriptFinished();
      SendMessageToPC(OBJECT_SELF, "");
    }
  }


 
  if(GetTag(GetArea(OBJECT_SELF)) == "ZONE_ANTIMAGIE")
  {
    SetModuleOverrideSpellScriptFinished();
    SendMessageToPC(OBJECT_SELF, "La magie ne semble pas exister dans cet endroit...");
  }


 
  if(nSpell == SPELL_HEAL)
  {
    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oCible);
  }
}
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
Dernière édition par finipe le 29/09/2006 13:12:26; édité 1 fois
 
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 : 12/09/2005 22:10:45 Sujet du message :

Pour que le spell hooking fonctionne également sur les PNJ, il faut ajouter une variable supplémentaire :

Citation :
X2_L_WILD_MAGIC - int - TRUE
Seulement, il ne faut pas l'ajouter sur le module, mais sur chaque zone du module dans laquelle le spell hooking doit s'appliquer aux PNJ.

Il est également recommandé de mettre le script de spell hooking en cache, tout particulièrement si on l'utilise pour les PJ et les PNJ.
_________________
» 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
 
ballestolive
Ecuyer
Inscrit le: 15 Nov 2005
Messages: 64
Localisation: A 35 KM Sud de Paris.
Répondre en citant
Posté le : 09/07/2007 11:19:34 Sujet du message :

Le lien vers le tuto et le spell hooking est mort !!!

Quelqu'un serait-il ou on peux trouver ces deux éléments ??

Merci à tous.
_________________
Coordinateur du projet LanceDragon VF un module pour NWN2. [http]
 
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 : 09/07/2007 20:41:56 Sujet du message :

Le tuto sur le spellhooking suffit de télécharger le lexicon sur la vault et d'aller voir dans la partie tuto (sinon il y a [ce lien] mais les parties code ne sont pas encadrées).

PS : Ce serait bien de changer l'adresse dans les balises code "nwnlexicon.com" par "nwn1.nwn2lexicon.com" pour que les liens sur fonctions soit valides.
_________________
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
 
ballestolive
Ecuyer
Inscrit le: 15 Nov 2005
Messages: 64
Localisation: A 35 KM Sud de Paris.
Répondre en citant
Posté le : 10/07/2007 05:41:17 Sujet du message :

Merci à toi, Ivellios.

Je pensai que c'était un système de scripts beaucoup plus comséquent !!! Surprised

Je plonge là dedans.

Merci encore Very Happy
_________________
Coordinateur du projet LanceDragon VF un module pour NWN2. [http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
zogzog59
Grand Chevalier
Inscrit le: 16 Jan 2005
Messages: 123
Répondre en citant
Posté le : 26/08/2008 18:51:39 Sujet du message :

bonjour je n'arrive pas a interdire le sort enveloppe acide en appliquant le spell hooking pourtant je met bien la variable "X2_S_UD_SPELLSCRIPT" ensuite type " string" et la valeur " le nom du script" et je met le scrip suivant :

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_MESTILS_ACID_SHEATH)
  {
    if(!GetIsObjectValid(GetItemPossessedBy(OBJECT_SELF, "COMPO_BDF")))
    {
      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.


si une aimable personne pourrai m'aider ???

en vous remerciant
_________________
Les vaux module rp
 
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 29.162ms