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







La date/heure actuelle est 30/04/2025 19:59:31
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 |
Gribouille Acolyte Messages: 35 |
Voilà salut à tous,
J'ai un placeable de tag "qqch" qui lance un sort sur un autre placeable de tag "c1"; jusqu'ici tout va bien. Si je copie "c1" plusieurs fois dans ma zone, "qqch" va ne lancer le sort que sur le dernier "c1" créé. J'aimerais qu'il lance le sort sur tous. Je suis obligé de créé un tag different à chaque fois? Merci d'avance |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
Peux tu poster ton script s'il te plait, je peux le corriger mais faut que je le vois.
_________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Gribouille Acolyte Messages: 35 |
NWScript :
void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; object oCaster; oCaster = GetObjectByTag("qqch"); object oTarget; oTarget = GetObjectByTag("c1"); AssignCommand(oCaster, ActionCastSpellAtObject(SPELL_DARKNESS, oTarget, METAMAGIC_ANY, TRUE, 50, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); } edit : au fait c'est quoi le "domain lvl", qui est de 50 ici? j'ai mis cette valeur au pif. |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
Bon voila la correction, normalement ca doit marcher
NWScript : void main() { object oPC = GetEnteringObject(); if ( GetIsPC ( oPC ) ) { object oCaster = GetObjectByTag("qqch"); object oTarget = GetFirstObjectInArea(); int i = 0; //10 correspond au nombre de "c1" while ( ( GetIsObjectValid( oTarget ) == TRUE ) && ( i < 10 ) ) { if ( oTarget == GetObjectByTag("c1") ) { AssignCommand(oCaster, ActionCastSpellAtObject(SPELL_DARKNESS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); i += 1; } oTarget = GetNextObjectInArea(); } } } _________________ ... Dernière édition par Klemmth le 05/07/2004 13:48:01; édité 1 fois
|
Revenir en haut | ![]() ![]() ![]() |
Gribouille Acolyte Messages: 35 |
Merci
J'ai rectifié un peu ton script en initialisant i à 0, mais bon c'est pas le problème. ![]() Le compilateur me dit qu'il y a une erreur (ERROR: PARSING VARIABLE LIST) à la ligne du while. ![]() |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
oups désolé, j'ai oublié un ";" en recopiant
![]() correction: 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. Normalement ca marche. (En tout ca moi ca marche ![]() _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Gribouille Acolyte Messages: 35 |
Ah ok lol je m'en étais même pas rendu compte !
![]() Merci bien edit: erf ça a pas l'air de marcher, il envoie toujours le sort que sur le dernier c1 créé... ![]() |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
Au pire, si vraiment ca marche pas, tu change le tag de tout tes "c" en mettant par exemple "c1", "c2", "c3",...
Et tu mets ce script: _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
Au pire, si vraiment ca marche pas, tu change le tag de tout tes "c" en mettant par exemple "c1", "c2", "c3",...
Et tu mets ce script: NWScript : void main() { object oPC = GetEnteringObject(); if ( GetIsPC ( oPC ) ) { object oCaster = GetObjectByTag("qqch"); object oTarget = GetFirstObjectInArea(); int i = 0; //10 correspond au nombre de "c1" while ( ( GetIsObjectValid( oTarget ) == TRUE ) && ( i < 10 ) ) { if ( GetSubString( GetTag( oTarget ), 0, 1 ) == "c" ) { AssignCommand(oCaster, ActionCastSpellAtObject(SPELL_DARKNESS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); i += 1; } oTarget = GetNextObjectInArea(); } } } _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Gribouille Acolyte Messages: 35 |
Merci cette solution fonctionne; il y aurait moyen de faire en sorte que ces sorts ne se dissipe jamais ? C'est à dire que leur durée soit infinie? Ou alors les relancer dès qu'ils sont terminés ?
|
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
Je ne sais pas si on peut faire en sorte que le sort ne dissipe jamais, par contre il y a plusieurs solutions, tu peux faire en sorte que le sort ne soit lancé qu'une fois, mais que son effet soit permanent, ou alors, tu regardes combien de temps dure le sort et tu utilises un DelayCommand du genre:
DelayCommand( Durée_du_sort, ActionCastSpellAtObject(SPELL_DARKNESS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE) ); Ou alors, tu modifie carrément le sort et tu change la durée (ce qui n'est peut-être pas la solution conseillée ![]() _________________ ... |
Revenir en haut | ![]() ![]() ![]() |
Gribouille Acolyte Messages: 35 |
Bein en fait je veux que le sort Tenebre (Darkness) soit lancé lorsqu'un PJ marche sur un trigger, et qu'ensuite il fasse toujours noir, que le pj soit pas obliger de retourner sur le trigger
![]() Je pourrais placer plusieurs trigger mais si le pj reste immobile ça se dissipera au bout d'un moment et de plus à force de marcher sur les trigger, ça va faire lagger vu que les sorts seront sans arret lancés. Je sais pas quoi faire ![]() |
Revenir en haut | ![]() ![]() ![]() |
Klemmth Seigneur Messages: 176 Localisation: france |
Essaye comme ca:
NWScript : void main() { object oPC = GetEnteringObject(); if ( GetIsPC ( oPC ) ) { object oCaster = GetObjectByTag("qqch"); object oTarget = GetFirstObjectInArea(); int i = 0; //10 correspond au nombre de "c1" while ( ( GetIsObjectValid( oTarget ) == TRUE ) && ( i < 10 ) ) { if ( GetSubString( GetTag( oTarget ), 0, 1 ) == "c" ) { AssignCommand(oCaster, ActionCastSpellAtObject(SPELL_DARKNESS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); ApplyEffectToObject( DURATION_TYPE_PERMANENT, EffectDarkness(), GetArea( OBJECT_SELF ) ); i += 1; } oTarget = GetNextObjectInArea(); } } } _________________ ... |
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