
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 01/05/2025 05:59:22
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 |
Fedorya Novice Messages: 6 |
Bonjour, je suis nouveau sur se forum, et je viens demander votre aide ^^
Voila j'éxplique mon probleme : Je tente de faire un script qui fait que quand on utilise un objet, celui ci fait automatiquement lancer au joueur trois fois le sort Boule de feu sur la cible que le joueur aura selectionnée. Le script se déroulera donc dans OnActivateItem du module Mais j'ai un probleme sur le script, je n'arrive pas a dire au script que le joueur peut cibler les OBJETS, NPC, JOUEURS ET le SOL Quand j'execute mon script, le script lance les sorts sur les Portes, chaises, monstres et joueurs mais quand je cible le sol, rien ne se passe. Voila mon probleme en somme, je voudrais que le sort soit lancable sur tout type de cible^^ Je vous serai reconnaissant si vous pouviez m'aider ^^ Merci d'avance ! |
Revenir en haut | ![]() ![]() ![]() |
Yoyo Seigneur ![]() Messages: 223 |
Alors je me suis un peu penché sur le probleme (pas trop car sinon j'aurait pu tomber
![]() A mettre dans le OnActivateItem : NWScript :
void main() { object oItem = GetItemActivated(); location lLoc = GetItemActivatedTargetLocation(); object oPC = GetItemActivator(); if (GetTag(oItem) == "Trucdefeu") //Remplace "Trucdefeu" par le tag de ton objet { AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc)); DelayCommand(1.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc))); DelayCommand(2.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc))); } } Dans ce script le PJ va lancer le sort boule de feu 3x de suite avec 1seconde d'intervalle (tu peu modifier la durée avec le DelayCommand) sur la Loc de ton choix (que sa soit un NPC, un point sur le sol, une porte, le PJ lui même... (ouille ![]() _________________ BOUH! (je vous ai fait peur ??) désolé Vive moi Pas vive Securom |
Revenir en haut | ![]() ![]() ![]() |
Fedorya Novice Messages: 6 |
Salut, merci beaucoup de m'aider ^^
Mais j'ai un soucis, avec le script que tu as mis, quand je le met tel quel dans le on activateitem, il ne marche pas ![]() Enfin je vais essayer de regarder si c est pas moi qui ai fait une erreure C'est deja bien que tu accepte de m'aider alors je vais pas me plaindre ![]() |
Revenir en haut | ![]() ![]() ![]() |
Yoyo Seigneur ![]() Messages: 223 |
P'tite question, tu as bien crée un objet avec le bon tag?
et n'oublie pas : dans les propriétés magiques de ton objet, n'oublie pas de mettre "pouvoir" en propriétés magique. (tu peux mettre pouvoir unique/illimité/X fois par jour/X charges par utilisation) Un fois cela fait lorsque tu prendras l'objet tu fait clik droit dessus et "pouvoir unique/illimité/X fois par jour/X charges par utilisation" et tu clik sur la cible de ton choix. _________________ BOUH! (je vous ai fait peur ??) désolé Vive moi Pas vive Securom |
Revenir en haut | ![]() ![]() ![]() |
Fedorya Novice Messages: 6 |
Voila j'ai réglé le probleme, en fait dans le script il fallait ajouter des lignes pour dire que le joueur n'avait pas besoin de connaitre le sort pour qu il se lance ^^
En tout cas merci de ton aide Yoyo ! Mais un deuxieme probleme viens d'apparaitre, J'ai dans mon OnActivateItem le script vu plus haut sur ce post, mais j'ai également mis un script totalement different en dessous (un script de teleportation avec quand il est mis en fonction un effet visuel sur le joueur et la cible du script) mais le probleme est que les deux scripts entres en conflit, je m'explique : Quand j utilise le script de teleportation tout baigne, mais une fois utiliser, si je ramasse un objet a terre, n'importe lequel, le script de teleportation se réactive sans qu'on lui ai rien demandé O_o Une petite idée pour isoler efficacement plusieurs scripts dans le OnActivateItem ? |
Revenir en haut | ![]() ![]() ![]() |
Djezebel Héros ![]() Messages: 252 |
J'avais ce problème là mais ça s'est arrangé avec ça il me semble :
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. |
Revenir en haut | ![]() ![]() ![]() |
Fedorya Novice Messages: 6 |
Désolé je ne comprends pas bien ce que tu veux dire Djezebel
![]() Je vais poster mes deux scripts que je veux mettres dans Onactivateitem mais qu'ils soient séparés l'un de l'autre : NWScript :
void main() { object oItem = GetItemActivated(); if (GetTag(oItem) == "fed_jutsu_pdf") { location lLoc = GetItemActivatedTargetLocation(); object oPC = GetItemActivator(); AssignCommand(oPC, ActionSpeakString("")); AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); DelayCommand(2.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); } if (GetTag(oItem) == "fed_jutsu_bdf") { object oPC = GetItemActivator(); object oCibleStase = GetItemActivatedTarget(); location lLoc = GetItemActivatedTargetLocation(); AssignCommand(oPC, PlayAnimation(ANIMATION_FIREFORGET_VICTORY2)); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DUST_EXPLOSION),oPC); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DUST_EXPLOSION),lLoc); DelayCommand(2.0,AssignCommand (oPC, ActionJumpToLocation(lLoc))); } } Voila donc je souhaite isolé les deux codes présent dans se script, mais je n'y parviens pas PS : Si vous voyez des erreures vous genez surtout pas pour les corriger ^^ |
Revenir en haut | ![]() ![]() ![]() |
Djezebel Héros ![]() Messages: 252 |
Ca devrait donner quelque chose de ce genre :
NWScript : #include "x2_inc_switches" void main() { object oItem = GetItemActivated(); if (GetTag(oItem) == "fed_jutsu_pdf") { location lLoc = GetItemActivatedTargetLocation(); object oPC = GetItemActivator(); AssignCommand(oPC, ActionSpeakString("")); AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); DelayCommand(2.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); } if (GetTag(oItem) == "fed_jutsu_bdf") { switch(GetUserDefinedItemEventNumber()) { case X2_ITEM_EVENT_ACTIVATE : object oPC = GetItemActivator(); object oCibleStase = GetItemActivatedTarget(); location lLoc = GetItemActivatedTargetLocation(); AssignCommand(oPC, PlayAnimation(ANIMATION_FIREFORGET_VICTORY2)); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DUST_EXPLOSION),oPC); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DUST_EXPLOSION),lLoc); DelayCommand(2.0,AssignCommand (oPC, ActionJumpToLocation(lLoc))); break; } } } |
Revenir en haut | ![]() ![]() ![]() |
Fedorya Novice Messages: 6 |
Oki merci, je vais essayer tout ça !
|
Revenir en haut | ![]() ![]() ![]() |
Seth de Sombrelune Seigneur Messages: 156 |
Le plus simple est de créer un script par item, par exemple tu a 3 item : item1, item2, item3, chaque objet a son propre tag (pour l'exemple le tag est le nom), il suffit de créer 3 scripts item1, item2, item3. Depuis peu, je crois que nwn par defaut, recherche un script qui a pour nom le tag de l'objet et l'exécute. Ainsi tu pourra créer autant de pouvoir d'item que tu le souhaite sans changer à chaque fois le script du OnActivedItem.
|
Revenir en haut | ![]() ![]() ![]() |
Black Knight Grand Maître Chanteur du Conseil ![]() Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Voila un script je les teste mais le probleme c'est que tu devra regle les TIMES car sinon le mec ne faira pas l'action du sort... Ca c'est le probleme avec les objet. Aussi j'ai mis en vert les degats donc enleve les " // " pour pouvoir faire des degats (change les degats car il font 100)
NWScript : void main() { object oPC = GetItemActivator(); object oItem = GetItemActivated(); object oTarget = GetItemActivatedTarget(); location lLoc = GetItemActivatedTargetLocation(); string sTag = GetTag(oItem); if(sTag == "TagDeLItem") { if(GetIsObjectValid(oTarget) == TRUE) { AssignCommand(oPC, ActionCastSpellAtObject(SPELL_FIREBALL, oTarget, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget)); //Enleve sa si Tu veut faire des DEGATS //DelayCommand(1.0, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), oPC)); DelayCommand(3.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_FIREBALL, oTarget, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); DelayCommand(4.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget)); //Enleve sa si Tu veut faire des DEGATS //DelayCommand(4.5, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), oPC)); DelayCommand(7.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_FIREBALL, oTarget, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); DelayCommand(8.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget)); //Enleve sa si Tu veut faire des DEGATS //DelayCommand(8.0, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), oPC)); } else { AssignCommand(oPC,ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); DelayCommand(1.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), lLoc)); //Enleve sa si Tu veut faire des DEGATS //DelayCommand(1.0, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), GetLocation(lLoc))); DelayCommand(3.5, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); DelayCommand(4.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), lLoc)); //Enleve sa si Tu veut faire des DEGATS //DelayCommand(4.5, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), GetLocation(lLoc))); DelayCommand(7.0, AssignCommand(oPC, ActionCastSpellAtLocation(SPELL_FIREBALL, lLoc, METAMAGIC_ANY, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE))); DelayCommand(8.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), lLoc)); //Enleve sa si Tu veut faire des DEGATS //DelayCommand(8.0, ApplyEffectToObject(DURATION_T YPE_INSTANT, EffectDamage(100, DAMAGE_TYPE_FIRE), GetLocation(lLoc))); } } } |
Revenir en haut | ![]() ![]() ![]() |


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