La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/09/2024 13:10:59


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Asmo
Voyageur
Inscrit le: 29 Oct 2003
Messages: 3
Répondre en citant
Posté le : 31/03/2004 10:55:58 Sujet du message : Limiter l'usage de la magie...

Bonjour je souhaite creer un module sur la base de la BD "Landfeust de Troy". Hors dans cet univers l'usage de la magie n'est possible qu'a proximité d'un sage d'Eckmul. Ma question est donc la suivante : est'il possible de n'autoriser l'usage de la magie qu'a proximitée d'un pnj (ici un sage d'Eckmul) et si oui comment?

De plus j'aurais souhaité que les joueurs puisse jouer un sage d'Eckmul comment faire? Question
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 31/03/2004 15:23:01 Sujet du message :

Hum, hum...

Limiter l'usage de la magie n'est pas une chose aisée...
Les éléments de scripts sont disponibles... mais ce qui m'ennuie, c'est où placer ce script...

Il y a la solution du Heart Beat Module... mais cela n'est guère performant...
Il faudrait créer des sages avec tous le même début de Tag (ex Mago_1, Mago_Test, Mago_Fylangre ...)
avec ceci dans le Heart Beat:
NWScript :
void main()
{
object oLanceur =GetLastSpellCaster();
effect eSort = EffectSpellFailure(100);
string sLanceurTag = GetTag(oLanceur);
string sMago = GetSubString(sLanceurTag,0,4);


if (sLanceurTag != "Mago" ||GetDistanceToObject(oLanceur) >= 10.0 )
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eSort,GetLastSpellCaster(), 6.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.


Encore une fois, je ne suis guère satisfait... en fait c'est la proximité qui d'un sage qui me pose problème... Faire une zone antimagie est relativamant simple... mais les sages d'Eckmul même s'ils ne sont pas très remuants, ils bougent quand même
_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 31/03/2004 15:40:23 Sujet du message :


Longbow a écrit :
Limiter l'usage de la magie n'est pas une chose aisée...
Les éléments de scripts sont disponibles... mais ce qui m'ennuie, c'est où placer ce script...
Le patch 1.62 nous offre cette possibilité, puisque tous les scripts de sorts sont maintenant "interruptibles". De mémoire, je ne me souviens pas de la méthode exacte, mais l'idée est qu'un script générique est appelé par tous les scripts de sort de telle sorte que ce script générique puisse produire une condition d'annulation du sort ou n'importe quel effets supplémentaires et spécifique.

Pour le test en lui-même, je pense qu'il va falloir faire un parcours systématiques de toutes les créatures dans un rayon défini autour du lanceur de sort, dans la mesure ou on doit pouvoir détecter un Sage PNJ ou PJ indifféremment. Je n'ai que des pistes à offrir pour le moment car je n'ai pas le temps ni les moyens de faire mieux à l'instant.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
Age
Novice
Inscrit le: 23 Jan 2004
Messages: 14
Répondre en citant
Posté le : 31/03/2004 16:58:36 Sujet du message :

La commande pour definir le script qui va etre executé a chaque sort lancé est :
NWScript :
//---------------------------- ------------------------------ --------------------
// Allows the module creator to specify a script that will be run before any spellscript is run
// You can call SetModuleOverrideSpellscript() at the end of the script specified by
// sScriptName. If you call this function this will prevent the original spellscript
// (and all craft item code) from being executed.
// If you do not add this line, the original spellscript and/or crafting code will
// run in addition to your script
//---------------------------- ------------------------------ --------------------
void SetModuleOverrideSpellscript(string sScriptName)
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.


Tu trouves cette foncton dans la librairie "x2_inc_spellhook"

Dans ton script ,si tu executes la fonction :
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.
,
alors le sort ne va pas s'executer.
A partir de ça tu peux faire un systeme permettant de tester la presence d'un Sage.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Asmo77
Voyageur
Inscrit le: 23 Mar 2004
Messages: 1
Répondre en citant
Posté le : 31/03/2004 17:27:21 Sujet du message :

Franchement je ne m'attendais pas a ce que l'on me reponde si rapidement. Rien que pour cela je vous remercie. En ce qui concerne les scripts je vais tester cela et vous tenir au courant de mes progrets ou de mes déboires.
_________________
Heureux celui qui connaitra le contact de ma lame car sa mort sera rapide.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
jetrod
Novice
Inscrit le: 06 Avr 2004
Messages: 8
Répondre en citant
Posté le : 06/04/2004 04:26:11 Sujet du message :

Bonjour,
Sur le même thème j'aimerai simplement (vite dit ca) interdire l'usage de la magie grâce à un objet comme un anneau que le porteur ne pourrait enlever sans une intervention divine (ou md à défault).
Tout simplement pour faire en sorte qu'un prêtre aillant trahi ou décu son dieu ne puisse plus faire usage de la magie (ou un mage ou encore un sorcier aillant pour une raison X ou Y perdu ses pouvoirs).
Je me doute que ca ne doit pas etre simple mais je ferai un effort pour essayer de comprendre (ou je donnerai les réponses a mon scripteur Razz )
Merci d'avance

Jetrod de Giamo
_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Longbow
Grand Sage du Conseil
Inscrit le: 10 Déc 2003
Messages: 638
Localisation: Orléans
Répondre en citant
Posté le : 06/04/2004 10:28:03 Sujet du message :

Hum, hum...

Avant de pouvoir limiter l'usage de la magie par cet anneau, il faut empêcher le prêtre de retirer l'anneau... Dès que le joueur veut déposer l'anneau... Il trinque et l'anneau revient à son doigt !!

Je pense que cela devrait t'aider...
1. Créer un anneau avec "AnoMaudit" comme Tag et "anomaudit" comme ResRef pour la palette
2. un script
NWScript :
// A PLACER Dans le UnAcquireItem
void main()
{
object oTest = GetModuleItemLost();
object oPossesseur = GetModuleItemLostBy();

if (GetTag(oTest) == "AnoMaudit")
    {
    DestroyObject(oTest);
    object oNew = CreateItemOnObject("anomaudit",oPossesseur);
    if (GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPossesseur) != OBJECT_INVALID)
        {
        object oAno = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPossesseur);
        AssignCommand(oPossesseur, ActionUnequipItem(oAno));
        }
  AssignCommand(oPossesseur, ActionEquipItem(oNew,INVENTORY_SLOT_RIGHTRING));
  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SOUND_BURST),oPossesseur);
  SendMessageToPC(oPossesseur, "Vous ne pouvez retirer cet anneau sans subir la colere de votre Dieu...");
  ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(20, DAMAGE_TYPE_DIVINE), oPossesseur);
  }

// pour d'eventuels autres objets...
// else if (GetTag(oTest) == "????")
//    { }
}
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.

_________________
Rex illeteratus
Quasi Asinus Coronatus
Jean de Salisbury
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 35.773ms