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 04:25:49


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Gribouille
Acolyte
Inscrit le: 29 Déc 2003
Messages: 35
Répondre en citant
Posté le : 05/07/2004 11:00:03 Sujet du message : lancer un sort sur plusieurs objets de même tag

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 05/07/2004 11:03:39 Sujet du message :

Peux tu poster ton script s'il te plait, je peux le corriger mais faut que je le vois.
_________________
...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gribouille
Acolyte
Inscrit le: 29 Déc 2003
Messages: 35
Répondre en citant
Posté le : 05/07/2004 11:25:37 Sujet du message :

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));

}
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.


edit : au fait c'est quoi le "domain lvl", qui est de 50 ici? j'ai mis cette valeur au pif.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 05/07/2004 12:48:54 Sujet du message :

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();
  }
}

}
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.

_________________
...
Dernière édition par Klemmth le 05/07/2004 13:48:01; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gribouille
Acolyte
Inscrit le: 29 Déc 2003
Messages: 35
Répondre en citant
Posté le : 05/07/2004 13:24:36 Sujet du message :

Merci

J'ai rectifié un peu ton script en initialisant i à 0, mais bon c'est pas le problème.Embarassed

Le compilateur me dit qu'il y a une erreur (ERROR: PARSING VARIABLE LIST) à la ligne du while. Sad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 05/07/2004 13:44:10 Sujet du message :

oups désolé, j'ai oublié un ";" en recopiant Embarassed

correction:
NWScript :
int i = 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.


Normalement ca marche. (En tout ca moi ca marche Smile )
_________________
...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gribouille
Acolyte
Inscrit le: 29 Déc 2003
Messages: 35
Répondre en citant
Posté le : 05/07/2004 13:48:26 Sujet du message :

Ah ok lol je m'en étais même pas rendu compte ! Embarassed

Merci bien

edit: erf ça a pas l'air de marcher, il envoie toujours le sort que sur le dernier c1 créé...Confused
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 05/07/2004 14:11:12 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 05/07/2004 14:12:25 Sujet du message :

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();
}
}

}
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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gribouille
Acolyte
Inscrit le: 29 Déc 2003
Messages: 35
Répondre en citant
Posté le : 05/07/2004 14:34:31 Sujet du message :

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 Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 05/07/2004 17:37:57 Sujet du message :

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 Very Happy ).
_________________
...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gribouille
Acolyte
Inscrit le: 29 Déc 2003
Messages: 35
Répondre en citant
Posté le : 05/07/2004 19:45:59 Sujet du message :

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 Very Happy

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 Confused
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 06/07/2004 08:39:02 Sujet du message :

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();
}
}

}
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 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 79.303ms