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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 14/06/2006 00:35:59 Sujet du message : Boucle pour trouver un effet, besoin d'aide

Bonsoir,

j'ai essayé, pour faire un test, de créer une boucle qui chercherait un effet sur un PJ.
Le probleme est que j'ai du mal, il semble que je n'ai pas très bien compris comment les utiliser.

J'ai passé pas mal de temps à chercher mon erreur et, meme si j'arrive à obtenir des resultats presque concluant, je ne parviens pas à la faire fonctionner comme je le voudrais.

Voilà le code :

NWScript :
void main()
{
object oPJ = GetLastUsedBy();
effect eEffect = EffectInvisibility(EFFECT_TYPE_INVISIBILITY
                                    ||EFFECT_TYPE_IMPROVEDINVISIBILITY
                                    ||EFFECT_TYPE_SANCTUARY);

eEffect = GetFirstEffect(oPJ);
int vu = 1;//Si vu reste a 1, alors le pj n'est pas invisible
  while(GetIsEffectValid(eEffect) && vu == 1)
    {
    if(!GetEffectType(eEffect))//Si aucun des effets n'est valide, on passe vu a 0
      {
      vu = 0;
      }
    eEffect = GetNextEffect(oPJ);
    }
  if(vu == 1)
    FloatingTextStringOnCreature("Tu es invisible", oPJ);
  else
    FloatingTextStringOnCreature("Tu n'es pas invisible", oPJ);
}
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 but ; Si oPJ est sous l'effet de eEffect (invis, invis sup ou sanctuaire), un message "Tu es invisible" apparait,
sinon, "tu n'es pas invisible".

Plutot que de continuer à faire moultes modifications desquelles je ne suis pas sur de tirer de conclusions, je m'en remets za vous Smile

Aussi j'aurai voulu que quelqu'un m'explique ou est mon erreur.

Merci d'avance.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 14/06/2006 01:47:48 Sujet du message :

Ta boucle est bonne, c'est le test sur l'effet qui ne l'est pas.

Essaye ça ça doit marcher :

NWScript :

void main()
{
object oPC = GetLastUsedBy();
int bVisible = TRUE;
effect eEffect = GetFirstEffect(oPC);
int nType;
while (GetIsEffectValid(eEffect))
{
    nType = GetEffectType(eEffect);
    if (nType == EFFECT_TYPE_INVISIBILITY
        || nType == EFFECT_TYPE_IMPROVEDINVISIBILITY
        || nType == EFFECT_TYPE_SANCTUARY)
    {
        bVisible = FALSE;
        break;
    }
    eEffect = GetNextEffect(oPC);
}
if (bVisible) FloatingTextStringOnCreature("Tu n'es pas invisible", oPC);
else FloatingTextStringOnCreature("Tu es invisible", oPC);
}
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 ne peux pas vraiment comparer des effets, juste travailler sur des effets actifs en passant par le type d'effet.

un truc comme :
NWScript :

effect eInvis = EffectInvisibility(INVISIBILITY_TYPE_IMPROVED);
if (GetFirstEffect(oPC) == eInvis) blablabla
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.


ne marche pas, car ça n'est pas une comparaison de type, mais de l'effet proprement dit, or l'un c'est celui qui est sur le joueur et l'autre est tout à fait virtuel.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Aladar
Chevalier
Inscrit le: 15 Déc 2004
Messages: 96
Localisation: Tours
Répondre en citant
Posté le : 14/06/2006 05:28:33 Sujet du message :

Ah d'accord Embarassed

Le pire, c'est que je le savais...

J'etais tellement persuadé que le probleme venait de la boucle que j'ai absolument pas fait gaffe à ca.
Forcement, ca marche beaucoup mieux ainsi !

Grand merci Smile
 
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 53.054ms