Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Script d
Script d
Par Elmo le 11/12/2002 à 20:09:39 (#2763776)
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)
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