Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Script d

Par Elmo le 11/12/2002 à 20:09:39 (#2763776)

voila j'ai un tit probleme vous voyez j'ai fait un script qui compile bien et tout, mais voila mon probleme j'aimerai que le bonus de stat soit temporaire mais déjà il s'applique pas(j'allais le couper via delay command), ensuit le speakstring apparait pas, y'a que le burning object qui s'execute bien :(

void BurningObject(object oPC)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FLAME_M),oPC);
DelayCommand(0.5,BurningObject(OBJECT_SELF));
}

void main()
{
object oPC = GetLastUsedBy();

effect eEffect1 = EffectAbilityIncrease(ABILITY_CONSTITUTION,1);
effect eEffect2 = EffectAbilityIncrease(ABILITY_STRENGTH,1);
effect eEffect3 = EffectAbilityIncrease(ABILITY_DEXTERITY,1);
int nDurationType = DURATION_TYPE_TEMPORARY;


ApplyEffectToObject(nDurationType,EffectVisualEffect(VFX_DUR_LIGHT_RED_10),oPC);
DelayCommand(0.5,AssignCommand(oPC, SpeakString("PAR KOSSUTH!", TALKVOLUME_TALK)));
DelayCommand(1.0,BurningObject(oPC));
DelayCommand(1.1,ApplyEffectToObject (nDurationType, eEffect1, oPC));
DelayCommand(1.2,ApplyEffectToObject (nDurationType, eEffect2, oPC));
DelayCommand(1.3,ApplyEffectToObject (nDurationType, eEffect3, oPC));

}


donc en un mot comme en cent: help

edit: si un modo pouvait rectifier le titre SVP...

Par Tynril le 11/12/2002 à 20:22:02 (#2763890)

void BurningObject(object oPC) {
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FLAME_M),oPC);
DelayCommand(0.5,BurningObject(OBJECT_SELF));
}

void main() {
object oPC = GetLastUsedBy();

effect eEffect1 = EffectAbilityIncrease(ABILITY_CONSTITUTION,1);
effect eEffect2 = EffectAbilityIncrease(ABILITY_STRENGTH,1);
effect eEffect3 = EffectAbilityIncrease(ABILITY_DEXTERITY,1);
int nDurationType = DURATION_TYPE_TEMPORARY;
float fDuration = 30.0f; //La durée que tu souhaites pour tes effets, elle est a spécifier si le type de durée est DURATION_TYPE_TEMPORARY, ce qui est ton cas.


ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_DUR_LIGHT_RED_10),oPC); //Les effets visuels sont toujours (ou presque) en "instant".
DelayCommand(0.5,AssignCommand(oPC, ActionSpeakString("PAR KOSSUTH!", TALKVOLUME_TALK))); //Préfère ActionSpeakString sur les AssignCommand.
DelayCommand(1.0,BurningObject(oPC));
DelayCommand(1.1,ApplyEffectToObject (nDurationType, eEffect1, oPC,fDuration));
DelayCommand(1.2,ApplyEffectToObject (nDurationType, eEffect2, oPC,fDuration));
DelayCommand(1.3,ApplyEffectToObject (nDurationType, eEffect3, oPC,fDuration));
}
:)

Par Jedaï le 11/12/2002 à 20:26:32 (#2763926)

Edit : Tyn' m'as doublé(il tire plus vite que son ombre lui ! ;) ), mais j'ai comme même une autre remarque à faire, de plus je m'inscris en faux contre lui, il faut privilégier SpeakString() à ActionSpeakString() à moins de mettre un ClearAllActions() avant, parce que ActionSpeakString() sera presque certainement annulé par le PC sans même qu'il s'en rende compte alors que SpeakString() devrait normalement être exécuté immédiatement. :)


void BurningObject(object oPJ);

void main()
{
object oPC = GetLastUsedBy();

effect eEffect1 = EffectAbilityIncrease(ABILITY_CONSTITUTION,1);
effect eEffect2 = EffectAbilityIncrease(ABILITY_STRENGTH,1);
effect eEffect3 = EffectAbilityIncrease(ABILITY_DEXTERITY,1);
int nDurationType = DURATION_TYPE_TEMPORARY;
//Donnez une durée temporaire aux effets c'est bien mais leur
//donner une durée tout court c'est mieux :-D
float fDuration = 10.0;


ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_DUR_LIGHT_RED_10),oPC);
//inutile de mettre TALKVOLUME_TALK c'est le paramètre par défaut
//par ailleurs, il est préférable d'utiliser Assign(Delay) plutôt que l'inverse
AssignCommand(oPC, DelayCommand(0.5, SpeakString("PAR KOSSUTH!")));
DelayCommand(1.0,BurningObject(oPC));
DelayCommand(1.1,ApplyEffectToObject (nDurationType, eEffect1, oPC, fDuration));
DelayCommand(1.2,ApplyEffectToObject (nDurationType, eEffect2, oPC, fDuration));
DelayCommand(1.3,ApplyEffectToObject (nDurationType, eEffect3, oPC, fDuration));
}

//J'ai changé oPC pour oPJ, pour mieux distinguer de la variable
//utilisé dans la fonction main
void BurningObject(object oPJ)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FLAME_M),oPJ);
DelayCommand(0.5,BurningObject(OBJECT_SELF));
}



Pas sûr du tout que ça règle tes problèmes, mais essaie quand même !:D

Par ailleurs, si ton objet est détruit, il est normal que ça ne marche pas (sauf que BurningObject() ne devrait pas se répéter dans ce cas :confus: ).
Autre problème : tu écris :

DelayCommand(0.5,BurningObject(OBJECT_SELF));

ne voulais tu pas plutôt écrire :

DelayCommand(0.5,BurningObject(oPJ));

JOL Archives 1.0.1
@ JOL / JeuxOnLine