Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > [scripte] Statue tout feu tout flamme
[scripte] Statue tout feu tout flamme
Par Jaha Effect le 15/1/2003 à 18:34:18 (#3029589)
Dans le OnHeartBeat (si vous trouvez une autre solution ;) )void main()
{
int VFX_EFFECT = VFX_DUR_PARALYZED; //Quel VFX a utiliser
string eVis;
int nDamage;
int nToofar;
nDamage = 0;
float HOWFAR = 20.0;
object oPlayer = GetFirstPC();
while (oPlayer != OBJECT_INVALID)
{
if (oPlayer != OBJECT_INVALID)
{
float fDist = GetDistanceToObject(oPlayer);
if (fDist 0.0)
{
location lTarget = GetLocation(oPlayer);
effect eVis = EffectVisualEffect(VFX_EFFECT);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, OBJECT_SELF , 7.);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIRESTORM), lTarget);
ActionDoCommand( PlaySound("mummy_laugh1") );
// dégats
int iDC = 25; //Difficulte(jet de sauvegarde pour la moitier des dommages)
int iDice = 12; //Nb de dés de dommages
nDamage = d6(iDice);
nDamage = GetReflexAdjustedDamage(nDamage, oPlayer, iDC, SAVING_THROW_TYPE_FIRE);
if((nDamage > 0) && (oPlayer != OBJECT_INVALID))
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(nDamage,DAMAGE_TYPE_FIRE),oPlayer));
//fin des degats
nDamage = 0;
}
}
}
}
oPlayer = GetNextPC();
}
}
Jaha Effect :D
Par Moeri Belrem le 15/1/2003 à 19:10:40 (#3029815)
Par ruru666 le 2/2/2003 à 19:20:10 (#3156171)
Par Jaha Effect le 2/2/2003 à 21:38:54 (#3157160)
L'épreuve du feu quoi :)
Jaha Effect :D
Par Archamedes_Fr le 3/2/2003 à 4:11:25 (#3158558)
J'essai demain, enfin, après dodo, me plaît bien ton idée...
Par Azrael07 le 3/2/2003 à 6:58:49 (#3158810)
Par Jaha Effect le 3/2/2003 à 7:43:44 (#3158876)
Sinon, j'ai bien une idée mais faut que je test :)
Jaha Effect :D
Par ruru666 le 3/2/2003 à 9:44:02 (#3159240)
Par Jaha Effect le 3/2/2003 à 11:04:03 (#3159707)
Alors tout d'abord, il nous faut un très grand trigger, a savoir que la zone de portée des vagues de feu est réglée sur 20 metres donc prévoyez très large.
Dans le OnEnter du Trigger mettre :void main()
{
object oPC = GetEnteringObject();
SetLocalInt(oPC, "bGril", TRUE);
ExecuteScript("nuee_de_feu", oPC);
}
Dans le OnExit du trigger mettre:void main()
{
object oPC = GetExitingObject();
DeleteLocalInt(oPC, "bGril");
}
Puis compiler ce script sans l'assigner:/*Nom du script: nuee_de_feu */
void main()
{
int VFX_EFFECT = VFX_DUR_PARALYZED; //Quel VFX a utiliser
string eVis;
int nDamage;
int nToofar;
nDamage = 0;
float HOWFAR = 20.0;
object oPlayer = GetFirstPC();
object oStatue = GetObjectByTag ("Tag_de_la_statue");
if(GetLocalInt(oPlayer, "bGril"))
{
DelayCommand(6.0, ExecuteScript("nuee_de_feu", oPlayer));
while (oPlayer != OBJECT_INVALID)
{
if (oPlayer != OBJECT_INVALID)
{
float fDist = GetDistanceBetween(oPlayer, oStatue);
if (fDist 0.0)
{
location lTarget = GetLocation(oPlayer);
effect eVis = EffectVisualEffect(VFX_EFFECT);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oStatue, 7.);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIRESTORM), lTarget);
ActionDoCommand( PlaySound("mummy_laugh1") );
// dégats
int iDC = 25; //Difficulte(jet de sauvegarde pour la moitier des dommages)
int iDice = 12; //Nb de dés de dommages
nDamage = d6(iDice);
nDamage = GetReflexAdjustedDamage(nDamage, oPlayer, iDC, SAVING_THROW_TYPE_FIRE);
if((nDamage > 0) && (oPlayer != OBJECT_INVALID))
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(nDamage,DAMAGE_TYPE_FIRE),oPlayer));
//fin des degats
nDamage = 0;
}
}
}
}
oPlayer = GetNextPC();
}
}
}
Voilà, en oubliant pas de placer une statue et de reporter son tag dans le script ci dessus.
Vous me tenez au courant, ça doit marcher mais on sais jamais :)
Jaha Effect :D
Par Iridian le 3/2/2003 à 11:51:04 (#3160060)
pourquoi ca ? :
while (oPlayer != OBJECT_INVALID)
{
if (oPlayer != OBJECT_INVALID)
Si tu boucles tant que le PJ est valide, tu n'as pas besoin de tester s'il l'est ?!?!?
*se trouve pas clair*
En gros, normalement, d'après moi, si tu as :
Tant que mon PJ est valide
{
//plein de commande
}
ba tu peux être sur que pour toutes tes commandes le PJ est bon (puisque sinon il serai sorti de la boucle)
Enfin c'est juste pour optimiser hein :) surtout dans le onHeartBeat
Par Jaha Effect le 3/2/2003 à 16:38:06 (#3162235)
Jaha Effect :D
Par Jedaï le 3/2/2003 à 18:58:43 (#3163411)
Copyright, Copyright :rasta:
[Edit] J'avais pas remarqué mais y a des petites erreurs, Jaha, revoit ta copie sinon les joueurs vont griller un max !:D
Par Jedaï le 3/2/2003 à 19:21:35 (#3163584)
Les deux premiers scripts sont bon, mais le dernier aura pour conséquence de griller les joueurs de façon un peu exagéré (façon barbecue au kérosène quoi :D ), alors j'ai un peu pitié de ces pauvres pitits joueurs :
/*Nom du script: nuee_de_feu */
void main()
{
object oPlayer = OBJECT_SELF;
if( GetLocalInt( oPlayer, "bGril" ) )
{
DelayCommand(6.0, ExecuteScript( "nuee_de_feu", oPlayer ) );
int VFX_EFFECT = VFX_DUR_PARALYZED; //Quel VFX a utiliser
string eVis;
int nDamage = 0;
object oStatue = GetObjectByTag ( "Tag_de_la_statue" );
location lTarget = GetLocation( oPlayer );
effect eVis = EffectVisualEffect( VFX_EFFECT );
ApplyEffectToObject( DURATION_TYPE_TEMPORARY, eVis, oStatue, 7.0);
ApplyEffectAtLocation( DURATION_TYPE_INSTANT, EffectVisualEffect( VFX_FNF_FIRESTORM ), lTarget );
ActionDoCommand( PlaySound( "mummy_laugh1" ) );
// dégats
int iDC = 25; //Difficulte(jet de sauvegarde pour la moitié des dommages)
int iDice = 12; //Nb de dés de dommages
nDamage = d6( iDice );
nDamage = GetReflexAdjustedDamage( nDamage, oPlayer, iDC, SAVING_THROW_TYPE_FIRE );
if( ( nDamage > 0 ) )
{
DelayCommand( 1.0, ApplyEffectToObject( DURATION_TYPE_INSTANT,EffectDamage( nDamage,DAMAGE_TYPE_FIRE ),oPlayer ) );
//fin des degats
}
}
}
A noter qu'avec ce script, la portée de la tempête de feu est définie par la taille du trigger (je trouve ça plus simple :) ).
Par Jaha Effect le 4/2/2003 à 0:02:57 (#3165582)
Par contre j'aime pas trop le fait que l'aire d'effet soit géré avec le trigger, je préférais l'idée du rayon d'action.
A la base c'est un piège pour des joueurs de haut niveau à partir de 12, en situation, il faut courir vers la statue, prendre son contenu et partir très vite pour pas mourir grillé, une épreuve de vitesse en quelque sorte.
Jaha Effect :D
Par Jedaï le 4/2/2003 à 8:37:03 (#3166495)
/*Nom du script: nuee_de_feu */
void main()
{
object oPlayer = OBJECT_SELF;
if( GetLocalInt( oPlayer, "bGril" ) )
{
DelayCommand(6.0, ExecuteScript( "nuee_de_feu", oPlayer ) );
float HOWFAR = 20.0; //rayon d'action (en m)
object oStatue = GetObjectByTag ( "Tag_de_la_statue" );
int nDist = GetDistanceBetween( oStatue, oPlayer );
if (nDist 0.0)
{
int VFX_EFFECT = VFX_DUR_PARALYZED; //Quel VFX a utiliser
string eVis;
int nDamage = 0;
location lTarget = GetLocation( oPlayer );
effect eVis = EffectVisualEffect( VFX_EFFECT );
ApplyEffectToObject( DURATION_TYPE_TEMPORARY, eVis, oStatue, 7.0);
ApplyEffectAtLocation( DURATION_TYPE_INSTANT, EffectVisualEffect( VFX_FNF_FIRESTORM ), lTarget );
ActionDoCommand( PlaySound( "mummy_laugh1" ) );
// dégats
int iDC = 25; //Difficulte(jet de sauvegarde pour la moitié des dommages)
int iDice = 12; //Nb de dés de dommages
nDamage = d6( iDice );
nDamage = GetReflexAdjustedDamage( nDamage, oPlayer, iDC, SAVING_THROW_TYPE_FIRE );
if( ( nDamage > 0 ) )
{
DelayCommand( 1.0, ApplyEffectToObject( DURATION_TYPE_INSTANT,EffectDamage( nDamage,DAMAGE_TYPE_FIRE ),oPlayer ) );
//fin des degats
}
}
}
}
(Avec ton script Jaha, si il y avait plusieurs joueurs susceptibles d'être touchés, les dommages étaient multiplié par le nombre de ces joueurs... couic );)
Par Jaha Effect le 4/2/2003 à 9:16:39 (#3166611)
Jaha Effect :D
Par Jedaï le 4/2/2003 à 12:24:12 (#3167682)
On va dire que j'ai rien dit :D (et puis comme ça s'il y a des DMs gentils (ça existe ?;) ) dans le coin il pourront choisir...).
Par Jaha Effect le 4/2/2003 à 12:49:51 (#3167908)
Je suis un peu exaspéré des gugus qui vont vider les coffres pendant que les copains tapent sur les monstres dans mes donjons alors j'ai mis d'autres statues tout aussi dévastatrices juste pour eux ;)
Mais ça, ça sera une surprise quand vous passerez faire un tour sur mon module (si j'arrive à le finir un jour) :)
Jaha Effect :D
Par Jaha Effect le 5/2/2003 à 13:55:47 (#3175378)
Jaha Effect :D
Tu as mon soutien
Par Blam le 5/2/2003 à 13:58:17 (#3175400)
Contunue tu es dans la bonne voie
JOL Archives 1.0.1
@ JOL / JeuxOnLine