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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[scripte] Statue tout feu tout flamme

Par Jaha Effect le 15/1/2003 à 18:34:18 (#3029589)

Voilà, à la demande de Moeri, je met le script d'un des gardiens statue qui peuplent une de mes crypte.
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)

Merci beaucoup :merci:

Par ruru666 le 2/2/2003 à 19:20:10 (#3156171)

ca sert a koi ???

Par Jaha Effect le 2/2/2003 à 21:38:54 (#3157160)

Ca détecte la présence d'un PJ dans un certain rayon et lui déverses le feu divin dessus :)
L'épreuve du feu quoi :)

Jaha Effect :D

Par Archamedes_Fr le 3/2/2003 à 4:11:25 (#3158558)

Et en le combinant avec l'émulation OHB proposé par Azrael ? ici

J'essai demain, enfin, après dodo, me plaît bien ton idée...

Par Azrael07 le 3/2/2003 à 6:58:49 (#3158810)

non ce script (d'émulation) marche pas bien, et n'est pas forcement d'une grande utilité, mais sinon le OnPerseive ca marche pas ???

Par Jaha Effect le 3/2/2003 à 7:43:44 (#3158876)

Pas de OnPerception sur une statue, et je suis pas vraiment chaud pour un pnj invisible.
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)

ok j attends ca m interresse de plus en plus ca :)

Par Jaha Effect le 3/2/2003 à 11:04:03 (#3159707)

Bon alors j'ai une solution, je l'ai pas testé mais ça doit marcher sans prob :)
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)

Just a question :

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)

Justement j'y suis plus dans le OnHeartBeat, j'ai pas testé cette version, ça donne quoi?

Jaha Effect :D

Par Jedaï le 3/2/2003 à 18:58:43 (#3163411)

Mmmm... j'ai l'impression de reconnaitre cette structure...;)

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)

Bon allez, finalement je suis fainéant mais je vais comme même corriger ça, pour sauver les joueurs d'un anéantissement inévitable !:p

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)

Oui oui c'est ta structure que j'ai utilisé, Je la trouve géniale et je la met à toute les sauces parce qu'elle à beaucoup plus d'avantage que le OnHeartBeat standard car on peux gérer la durée entre chaque relancement et quelle consomme rien quand on est pas dans le trigger :)
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)

OK, je rétablis le rayon d'action (mais faut quand même que le trigger soit très grand ou alors en faire deux, enfin ruser quoi...) :


/*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)

Oui d'ailleurs ça m'amusait beaucoup et c'était pas innocent :)

Jaha Effect :D

Par Jedaï le 4/2/2003 à 12:24:12 (#3167682)

Oh le vil :o Il incite ses joueurs à l'individualisme !:rolleyes:

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 dois reconnaitre que ce piège est assez sadique mais c'est très loin d'être le pire que j'ai fais.
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)

En tout cas je suis assez content de moi car c'était le seul OnHeartBeat qu'il y avait sur mon module et le problème est réglé ;)

Jaha Effect :D

Tu as mon soutien

Par Blam le 5/2/2003 à 13:58:17 (#3175400)

Entre MJ sadiques, faut s'entraider

Contunue tu es dans la bonne voie

JOL Archives 1.0.1
@ JOL / JeuxOnLine