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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Dégats dus à des flammes

Par Mastokk le 3/1/2003 à 20:15:22 (#2937996)

En général, lorsqu'on veut que des flammes brûlent, on met un script sur le OnUsed des flammes. Perso j'aime pas ça (je ne vois pas quel idiot irait cliquer sur des flammes...), je préfère utiliser une zone de dégâts, représentée par un trigger. J'ai mis ce script sur le OnEnter du Trigger (et un autre sur le OnExit qui change la valeur de la variable locale) mais la boucle ne se déclenche pas:


void main()
{
object oPC = GetEnteringObject();
SetLocalInt(oPC, "bFIRE", 1);
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(),DAMAGE_TYPE_FIRE), oPC);
if(GetLocalInt(oPC, "bFIRE")==1)
{
DelayCommand(1.0, ExecuteScript("be_dommages_flam", oPC));
}
}


Quelqu'un peut-il me dire ce qui cloche ?

Par Jedaï le 3/1/2003 à 20:38:09 (#2938166)


DelayCommand(1.0, ExecuteScript("be_dommages_flam", oPC));


et


object oPC = GetEnteringObject();


Demande toi ce qu'est oPC à la seconde (et pas deuxième) itération du script.... :mdr:

Je pense que tu as vu non ? :D

C'est fou ce qu'on peut-être distrait parfois. :(

Par Mastokk le 4/1/2003 à 0:40:03 (#2939565)

erf oki quand je lui demande de réitérer le script en fait c'est plus un EnteringObject.... je vais remédier à cela ! Merci :)

Par Mastokk le 4/1/2003 à 14:48:43 (#2942916)

Hum je dois dire que je sèche pour créer la boucle... j'ai essayé les while et autre choses de ce genre utilisant des compteurs mais ça fait s'exécuter toutes les commandes (les dégâts donc) d'un seul coup... pas top (en plus ça donne un TOO MANY INSTRUCTIONS).

J'ai cherché mais je n'ai pas trouvé de fonction permettant de récupérer le dernier PJ qui a subit des dégâts... :aide:

Par Zariel le 4/1/2003 à 17:31:23 (#2943949)

Désolé du flood, c'était juste pour dire que c'est une super bonne idée de script qui pourra servir trés souvent :)

Par Mastokk le 6/1/2003 à 1:47:27 (#2953716)

personne n'a d'idée ? :(
Il faut forcément utiliser le OnHeartBeat où en émuler un ?

Par coolstar le 6/1/2003 à 2:58:55 (#2953935)

Que nenni très cher Mastokk! :D



Il suffit juste de Repérer le PC concerné en lui affectant une Variable personnalisé, de type :

SetLocalObject(oPC, "Flamme", oPC);


Et tu n'as plus ensuite qu'à renvoyer le Script non pas bien sur oPC, mais sur :
GetLocalObject(oPC, "Flamme")


;)

Par eMRaistlin le 6/1/2003 à 10:33:57 (#2954977)

A noter qu'avec cette solution, il devient imperatif de mettre une remise a zero de la variable "bFire", car sinon, peu importe sa position, il y a forte a parier que le PC se meurt doucement, mais surement...

Sur le onExit, par exemple...

Par coolstar le 6/1/2003 à 10:47:42 (#2955032)

Ca semblait aller de soi, non?? (sur le 'OnExit' du Trigger par exemple!) Sans quoi, perso, j'aurais proposé une Soluce plus complète si j'avais eu le temps... :D

Par Mastokk le 6/1/2003 à 17:49:37 (#2957792)

Merci, je ne connaissais aps le Set/GetLocalObject. Cependant, j'ai testé plusieurs choses mais je n'arrive pas à activer cett fichue boucle. Ca compile, ça compile, mais pas de boucle. Si vous aviez un exemple d'utilisation...

Par Jedaï le 6/1/2003 à 20:17:13 (#2959040)

Voilà un exemple en trois scripts qui devrait griller légèrement tes joueurs qui veulent jouer avec le feu mais sans les transformer en cendres style vampire qui bronze :


//OnEnter du trigger autour des flammes :

void main()
{
object oPC = GetEnteringObject();
SetLocalInt(oPC, "bGril", TRUE);
ExecuteScript("be_gril_pc_vite", oPC)
}



//OnExit du trigger autour des flammes :

void main()
{
object oPC = GetExitingObject();
DeleteLocalInt(oPC, "bGril");
}



//script "be_gril_pc_vite" :

void main()
{
object oPC = OBJECT_SELF;
if(GetLocalInt(oPC, "bGril"))
{
DelayCommand(1.0, ExecuteScript("be_gril_pc_vite", oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(),DAMAGE_TYPE_FIRE), oPC);
}

}


Permet moi de dire qu'avec 1d4 de dommage toutes les secondes, tu te révèle un DM sadique. Si telle est ton intention, tant mieux :D , sinon modifie les délais dans "be_gril_pc_vite".;)

[EDIT] J'ai modifié le nom du script : il était trop long.;)

Par coolstar le 7/1/2003 à 1:16:41 (#2961515)

Tiens? c toi qui proposes des Scripts complets maintenant Jedaï?? :D

Par Mastokk le 7/1/2003 à 1:36:36 (#2961636)

Provient du message de Jedaï

Permet moi de dire qu'avec 1d4 de dommage toutes les secondes, tu te révèle un DM sadique. Si telle est ton intention, tant mieux :D , sinon modifie les délais dans "be_gril_pc_express".;)


Oui oui je sais je suis sadique :D. Mais je vais augmenter le temps entre les dégâts. Merci de votre aide. :).

Par Mastokk le 7/1/2003 à 1:59:10 (#2961757)

Ca Griiiiiiiiiille ca grille ca grille ca grillheuuuuuuuuu mouhahaha :D merci merci, moi je me prenais la tête à faire un seul script alors que c'était si simple comme ça :).

Pour ceux qui voudront l'utiliser tel quel, enlevez les 2 s du nom du script parce qu'il est trop long.

Par coolstar le 7/1/2003 à 3:37:42 (#2962108)

C bien qu'est-ce que je... :rolleyes:

Par Gorgam le 7/1/2003 à 11:53:58 (#2963595)


//script "be_gril_pc_express" :

void main()
{
object oPC = OBJECT_SELF;
if(GetLocalInt(oPC, "bGril"))
{
DelayCommand(1.0, ExecuteScript("be_gril_pc_express", oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(),DAMAGE_TYPE_FIRE), oPC);
}

}



En faite comme je comprend rien aux scriptes moi, je voulais juste savoir ou le me met celui la? [Edit by eM : c'est pas le genre de la maison, rassure toi] - Merci d'avance :)

Par coolstar le 7/1/2003 à 13:37:38 (#2964387)

C'était pour quoi ton EDIT eMR?? :confus:



PS Gorgam: Le Script est lancé par le celui du 'OnEnter' du Trigger concerné... ;)

Par Mastokk le 7/1/2003 à 16:09:20 (#2965627)

Provient du message de Gorgam


//script "be_gril_pc_express" :

void main()
{
object oPC = OBJECT_SELF;
if(GetLocalInt(oPC, "bGril"))
{
DelayCommand(1.0, ExecuteScript("be_gril_pc_express", oPC));
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(),DAMAGE_TYPE_FIRE), oPC);
}

}



En faite comme je comprend rien aux scriptes moi, je voulais juste savoir ou le me met celui la? [Edit by eM : c'est pas le genre de la maison, rassure toi] - Merci d'avance :)



Celui-là tu le mets nul part, tu le crées simplement avec l'éditeur de script et le sauvegarde. Le script du Onenter s'occuppera de l'appeler :).

Fais bien attention à modifier le nom du script en be_gril_pc_expre, sinon il est trop long.

Par coolstar le 7/1/2003 à 18:33:10 (#2966823)

Ben alors Mastokk?? :doute:

Provient du message de coolstar
PS Gorgam: Le Script est lancé par le celui du 'OnEnter' du Trigger concerné... ;)

Par Jaha Effect le 7/1/2003 à 21:47:43 (#2968370)

Gorgam ??? quel Gorgam??? Mon Gorgam de T4C???

Jaha Effect :D

Par Mastokk le 7/1/2003 à 23:54:55 (#2969176)

Désolé coolstar, j'avais pas vu ton PS. Et pis de toute façon ma réponse la complète en lui indiquant où le mettre comme il le demandait :p ;).

Par coolstar le 8/1/2003 à 0:26:32 (#2969363)

:mdr:

JOL Archives 1.0.1
@ JOL / JeuxOnLine