JeuxOnLineForumsPlusConnectés : 221 (sites) | 528 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > pb avec execute script RSS
   
Répondre
Partager Outils Rechercher
astre
Roi
 

pb avec execute script

Voila, je cherche a faire exectuer un script toutes les 12 secondes donc j'utilise un DelayCommand(12.0, ExecuteScript("script", oJoueur))

oJoueur étant un Joueur défini en objet

malheureusement, j'arrive pas a garder mon objet cible.

pourtant en lancant ExecuteScript, je donne bien un objet, mais après pas moyen de le récupérer. j'ai essayer object_self mais ca marche pas

quelqu'un aurais une idée?
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Citation:
j'ai essayer object_self mais ca marche pas
Ca marche très bien à priori, je n'ai jamais eu de problème avec ça... Mets donc tes scripts ici qu'on te dise ce qui pose problème.
Lien direct vers le message - Vieux
astre
Roi
 
bon ok voila le 1er:
c'est une partie du on_activate_item:

Citation:
if (GetStringLeft(sItemTag,13) == "bottesdevites")
{
int iPow = StringToInt(GetSubString(sItemTag, 13, GetStringLength(sItemTag)-13));
int iPower = iPow * 2;
object objetpied = GetItemInSlot(INVENTORY_SLOT_BOOTS, oActivator) ;
if (objetpied == oItem)
{
SignalEvent(oActivator, EventSpellCastAt(oActivator, SPELL_HASTE, FALSE));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectHaste(), oActivator, RoundsToSeconds(iPower));
DelayCommand(12.0, ExecuteScript("test_botte", oActivator));
SetLocalInt(oActivator,"tempbotte",iPow);
}
else
{
SignalEvent(oActivator, EventSpellCastAt(oActivator, SPELL_SLOW, FALSE));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSlow(), oActivator, RoundsToSeconds(iPower/2));
}
}
le second qui boucle est le suivant:

Citation:
void main()
{
if (GetIsPC(OBJECT_SELF))
{
if (GetStringLeft(GetTag(GetItemInSlot(INVENTORY_SLOT_BOOTS, OBJECT_SELF)),13) != "bottesdevites")
{
RemoveEffect ( OBJECT_SELF , EffectHaste() );
DeleteLocalInt (OBJECT_SELF,"tempbotte");
}
else
{
int temps = GetLocalInt (OBJECT_SELF,"tempbotte")-1;
if (temps >= 1)
{
SetLocalInt(OBJECT_SELF,"tempbotte",temps);
DelayCommand(12.0, ExecuteScript("test_botte", OBJECT_SELF));
}
else DeleteLocalInt (OBJECT_SELF,"tempbotte");
}
}
}
le principe c'est d'avoir des bottes de vitesse raisonables qui sont tésté toute les 12 secondes si elle sont toujours aux pied.
voila vous avez tout.

pourquoi l'effet part pas quand je retire les bottes
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
c'est a cause du remove effect : tu doit d'abord identifier un effet pour le retirer.

Il te faut donc faire une boucle GetFisrt/GetNextEffect, et si eFX == EffetHaste, tu remove.



En gros...

Je te laisse taper, on corrige apres ?
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
C'est à cause du RemoveEffect(), ça se retire pas comme ça un effet, là tu crée un nouvel effet, qui n'as rien à voir avec l'effect haste déjà sur le PJ, donc l'effet sur le PJ n'est pas enlevé (je suis clair là ? ).

Pour retirer un effet, en fait faut faire une boucle parmi les effect actif sur l'objet, vérifier leur type et retirer celui qu'on veut, exemple au hasard :
Code PHP:
void main()
{
   
effect eEffect GetFirstEffect(GetFirstPC());

   while(
GetIsEffectValid(eEffect))
   {
      
      if(
GetEffectType(eEffect) == EFFECT_TYPE_HASTE)
          
RemoveEffectGetFirstPC(), eEffect );  

      
eEffect GetNextEffect(GetFirstPC());
   }


[EDIT] Ah eM avait déjà répondu...
Lien direct vers le message - Vieux
astre
Roi
 
merci merci.
J'aurai du y penser, j 'ai deja manipulé ce type de structure sur les effets

c'est vrai que des fois, je suis pas doué. m'enfin, je fais des effort.

un jour j'y arriverai.
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Citation:
J'aurai du y penser, j 'ai deja manipulé ce type de structure sur les effets
Rassure toi, on est tous tombé dans celle la : faut dire que c'est pas 100% intuitif, par rapport au reste de la gestion des objets ^^
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > pb avec execute script
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 07h12.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite