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 17:58:49
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 |
AZAZEL11 Seigneur Messages: 156 |
salut ne tappez pas mais j'ai cherché mais en vain, comment fait on une suppression rapide de TOUS les effets (sorts et items) sur l'entrée d'un trigger
autrement dit, je fais une zone d'anti-Magie, et pour l'instant je suis en train de prendre le chemin le plus long a mon avis (ci dessous) j'aimerais bien que quelqu'un puisse prendre la peine de m'indiquer la bonne ligne de commande svp!!! NWScript : #include "nw_i0_spells" void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; { effect eEffect = GetFirstEffect(oPC);//on check les effets des PJs while(GetIsEffectValid(eEffect)) if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS || GetEffectType(eBad) == EFFECT_TYPE_DEAF || GetEffectType(eBad) == EFFECT_TYPE_PARALYZE || GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL) if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_AC_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_ATTACK_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_INCREASE|| GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_REDUCTION|| GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_SKILL_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_SANCTUARY || GetEffectType(eBad) == EFFECT_TYPE_DEAF || GetEffectType(eBad) == EFFECT_TYPE_PARALYZE || GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL) RemoveEffect (oPC,eEffect);//on applique effet } eEffect= GetNextEffect (oPC); effect eAntimagic; //effet de anti magie en question SendMessageToPC(oPC, ""); eAntimagic = EffectSpellFailure(100, SPELL_SCHOOL_GENERAL); eAntimagic = SupernaturalEffect(eAntimagic); //pour etre sur que on ne parle pas de petit effet... ApplyEffectToObject (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_DISPEL_GREATER), oPC); DelayCommand(0.1, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAntimagic, oPC)); } }/* suspect block end found !*/ _________________ L'imagination est plus importante que le savoir. (Albert Einstein) Dernière édition par AZAZEL11 le 29/09/2006 04:00:14; édité 1 fois
|
Revenir en haut | |
Macadam Grand Chevalier Messages: 132 |
[edit après relecture script]
t'es pas obligé de passer les effet en revue si tu le fait déjà dans la boucle avec un GetNextEffect je vois pas à quoi ça sert l'errreur est là tu as mis eEffet et tu te sers d' eBad |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Voici une fonction qui pourra peut-être t'aider !
http://www.system-tek.com/nwinter/phpbb2/viewtopic.php?p=121542#p121542 A bientôt ! |
Revenir en haut | |
Macadam Grand Chevalier Messages: 132 |
voilà c'est ce que je disais tout ça :
Citation : if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
ça sert à rien
GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE || GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS || GetEffectType(eBad) == EFFECT_TYPE_DEAF || GetEffectType(eBad) == EFFECT_TYPE_PARALYZE || GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL) if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_AC_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_ATTACK_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_INCREASE|| GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_REDUCTION|| GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_SKILL_INCREASE || GetEffectType(eBad) == EFFECT_TYPE_SANCTUARY || GetEffectType(eBad) == EFFECT_TYPE_DEAF || GetEffectType(eBad) == EFFECT_TYPE_PARALYZE || GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL) il manque une "{" après le while d'ailleurs tu peux prendre la fonction d'Enki pour repérer les erreurs de syntaxe de ton script pour la première partie |
Revenir en haut | |
AZAZEL11 Seigneur Messages: 156 |
oui merci, en fait ce script est un brouillon 100% (meme pas vérifié si ca compilait lol)
je me suis arreté avant de le corriger car je savais que je ne m'y prenais pas de la bonne facon. D'autres paramètres entrent en ligne de compte, je dois aussi annuler TOUT effets magiques de TOUS les items que le PJ peut se servir ou porter EN bref une zone d'anti magie, toute magie dissipée (équipements portés ou non) à la sortie de la zone, tout redevient à la normale... Ca il me semble que je commence à entrer sur la cour des grands, vous n,avez pas un conseil ou deux maitres scripteurs??? _________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
Revenir en haut | |
Macadam Grand Chevalier Messages: 132 |
bon j'ai toujours pas aurora sous les yeux mais une voie à exploiter serait sans doute de remplacer les items de l'inventaire par des items normaux tout en les tagant de manière à pouvoir rendre les vrais objets plus tard (avec le meme tag donc grace à la fction CreateObject qui permet de le faire je crois)
par contre ça me parait un peu lourd voir beaucoup mais pas impossible à faire. Une autre piste consisterait à utiliser le script général des sorts en le modifiant de tel façon que dans la zone qui porte tel tag, aucun sort ne puisse marcher j'aurais nos scripts sous les yeux je pourrais t'ecrire ça mais pour l'instant c'est impossible mais si tu connais c'est pas forcément dur à faire. c'est avec la fonction SPELLOVERIDESCRIPTFINISHED ou un truc comme ça à mettre dans le onmodule load qui remplace le script par défaut lorsqu'un sort est lancé. La deuxième solution si toutefois elle marche devrait être et de loin la meilleure car elle peut également stopper l'utilisation d'items magiques me semble til |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
La solution c'est le... tin tsiiiin : SPELL-HOOKING. (ici un tutorial : [http]
Dans le cas présent, il faudrait lancer cela par une variable locale au passage de ton déclencheur, du genre (sur le onEnter) : 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. Puis, dans le script de Spell-Hooking : NWScript :
if(GetLocalInt(GetArea(OBJECT_SELF), "ANTIMAGIE") == 1) { SetModuleOverrideSpellScriptFinished(); SendMessageToPC(OBJECT_SELF, "La magie ne semble pas exister dans cet endroit..."); } Ceci empêchera tous les sorts de fonctionner. Par contre, il faudra quand même ajouter une boucle pour supprimer tous les effets qui sont déjà sur le joueur. _________________ » 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 oui, et ne pas oublier d'ajouter la variable suivante sur le module, sans quoi le spell-hooking ne fonctionne pas :
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. _________________ » 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 | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
Pour les propriétés sur les objets, et pour le reste aussi, ça peut être pas mal de voir comment Bioware à géré tout ça pour sa zone d'anti-magie. Je sais plus dans quel chapitre c'est, mais c'est assez bien foutu honnetement, toutes les propriétés magiques des items disparaissent...
C'est assez barbare, ils copient les items sur un WP, enfin ça bricole sec, mais ça marche, à mon avis ça peut t'aider. Les scripts d'entrée et de sortie de la zone en question c'est : q5c_area_oe et q5c_area_ox (HotU chapitre 2) _________________ L'île perdue - Module RP - Hard Core Ruled - En construction |
Revenir en haut | |
AZAZEL11 Seigneur Messages: 156 |
oui merci Sith, en fait c'était la solution la plus efficace et la plus rapide après tout^^ Je ne vois pas pourquoi j'aurais du faire le scriptage quand il y en a déja un tout chaud tout frais!!!
_________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
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