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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Comportements animaux (script)

Par Corwin Whitehorn le 29/11/2002 à 0:27:21 (#2668734)

Bon...voilà le problème...

J'ai un troupeau de cerf, avec un male dominant...

J'aimerais que les autres cerf le suivent tout le temps...


J'ai bidouillé le script suivant, mais ca marche pas des masses...

//::///////////////////////////////////////////////
//:: Custom User Defined Event
//:: FileName
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/* Script to make Deer wander and flee from Non-Druid or Ranger Class*/ ----->modifié
//:://////////////////////////////////////////////
//:: Created By: John Cook
//:: Created On: June 23, 2002
//:://////////////////////////////////////////////

void main()
{
int nUser = GetUserDefinedEventNumber();
int isFriend;
int Num;
float Distance;
location Loc;
object oPlayer;

oPlayer = GetLastPerceived();
if(nUser == 1001) //HEARTBEAT EVENT
{
Num = Random(100);
Distance = IntToFloat(Num); //Distance to walk to location
Num = Random(10);
Loc = GetLocation(OBJECT_SELF);
if(Num >= 7)
{
ActionMoveToLocation(Loc,FALSE);
}
}
else if(nUser == 1002) // PERCEIVE EVENT
//{
//isFriend = GetClassByPosition(1,oPlayer);
//if(isFriend != CLASS_TYPE_DRUID)
//if(isFriend != CLASS_TYPE_RANGER)
{
ActionMoveToObject(oPlayer,TRUE,1.0f);
//}
}
}

En fait, comme vous pouvez le voir...j'adapte et je suis pas doué...

Il faudrait qu'ils se laissent approcher par les druides et ranger, mais qu'ils suivent leur chef si il se déplace...

Merci d'avance

Par coolstar le 29/11/2002 à 0:31:39 (#2668762)

Hi!


Est-ce que par là ça ne rejoindrait pas ta question ?? :D

Par Corwin Whitehorn le 29/11/2002 à 0:37:32 (#2668797)

Euh...peut-être...mais si je peux parfois être capable de modifier des scripts, les créer, c'est autre chose...

Bref...je suis une quiche, je sais, mais si quelqu'un pouvait me pondre un script tout fait qui marche, je lui serait éternellement (enfin, presque) reconnaissant...

Par coolstar le 29/11/2002 à 0:45:58 (#2668842)

Huummm... remarque du nb que je suis et qui pédale dans le même type de semoule que toi... perso, je sais pas trop où les autres ont le temps de pondre chaque fois des Scripts pour les autres (ils doivent être sacrément doués c'est ça! :D )... moi j'y passe au moins des heures à essayer de comprendre où je vais, où ça va... je suis pas contre de te filer un coup de main, mais tu t'aiderez mieux en cherchant toi aussi de ton côté... on irait plus vite à au moins 2 (et c sans compter les autres!)...
... et en plus tu saurais chaque fois mieux te dépatouiller à force... :ange:


Le temps sacrifié maintenant, c'est du temps gagné demain... et la fierté d'être soi-même efficace... ;)

:merci:

Par Corwin Whitehorn le 29/11/2002 à 0:53:43 (#2668880)

Ben oui, mais là ca fait au moins 2 jours que je pédale...et je dois rendre le mod (ben oui, c'est pas pour moi) la semaine prochaine.

Et j'en suis seulement aux animaux....Ya encore le campement orque après...

Par coolstar le 29/11/2002 à 1:18:06 (#2669035)

T'inquiète, je regarde quand même... ;)


Mais faut que je traduise déjà en fait ce que tu viens de mettre... c'est pas très clair encore... beaucoup d'inconnus pour moi... et puis, des choses étranges aussi, comme à "Décommenter"... :D

Dis-moi ? tu le sors d'où ce Script ?? c quoi ça forme initiale ??? Eclaire-moi tout d'abord SVP! :confus:

...


;)

Par shadoh le 29/11/2002 à 1:20:58 (#2669051)

Je pense pouvoir t'aiguiller sur ce qu'il faudrait faire pour que tes autres cerfs suivent le dominant. Malheureusement, ça passe par le onHeartbeat. C'est donc une tache lourde pour le processeur.

Alors je t'explique comment je ferais personnellement :


// Perso, je poserais ce script sur le onHeartbeat d'un object invisible
// On reccupere la location du dominant via son tag unique
// On force les cerfs domines a bouger l'endroit ou se trouve le dominant en prenant bien garde que
// chaque cerfs domines aient un tag unique
// Ne surtout pas oublier de mettre un ActionRandomWalk() sur le onHeartbeat du dominant pour le faire bouger
// toutes les 6 secondes si il ne le fait pas par lui meme (je ne sais plus si ils bougent par eux meme)

void main()
{
object oDominant = GetObjectByTag("dominant");//Tag de ton cerf dominant
object oCerf1 = GetObjectByTag("Cerf1");//Tag de ton cerf domine 1
object oCerf2 = GetObjectByTag("Cerf2");//Tag de ton cerf domine 2
object oCerf3 = GetObjectByTag("Cerf3");//Tag de ton cerf domine 3

AssignCommand(oCerf1,ActionMoveToLocation(GetLocation(oDominant)));
AssignCommand(oCerf2,ActionMoveToLocation(GetLocation(oDominant)));
AssignCommand(oCerf3,ActionMoveToLocation(GetLocation(oDominant)));
}

Tu peux aussi passer par la commande ActionForceFollowObject(). Ce qui donnerait ceci :

void main()
{
object oDominant = GetObjectByTag("dominant");//Tag de ton cerf dominant
object oCerf1 = GetObjectByTag("Cerf1");//Tag de ton cerf domine 1
object oCerf2 = GetObjectByTag("Cerf2");//Tag de ton cerf domine 2
object oCerf3 = GetObjectByTag("Cerf3");//Tag de ton cerf domine 3

AssignCommand(oCerf1,ActionForceFollowObject(oDominant, x.xf));// Ou X.Xf correspond à la distance entre le suivi et le suiveur genre 1.0f met un metre de distance
AssignCommand(oCerf2,ActionForceFollowObject(oDominant, x.xf));
AssignCommand(oCerf3,ActionForceFollowObject(oDominant, X.Xf));
}


EDIT : D'ailleur je pense que la 2 ème possibilité sera la meilleure au vu de tes besoins.

Par coolstar le 29/11/2002 à 1:48:13 (#2669155)

Tu peux aussi passer par la commande ActionForceFollowObject(). Ce qui donnerait ceci :
Comme le disait coolstar, qui lui-même le tenait de jaha Effect... :ange:



EDIT
---------------------
Après vérification, je me suis rendu compte que le ActionForceFollowObject est très persistante... donc, je ne suis pas sûr qu'il soit nécessaire de le mettre dans le OnHeartBeat... juste veiller à ce que rien ne l'interrompe (comme le Fin de Dialogue!) sera très bien déjà... rassurez ?? ;)
---------------------

Par Corwin Whitehorn le 29/11/2002 à 10:19:47 (#2670329)

Ben pour répondre à la question de Coolstar, le script de base est :

//::///////////////////////////////////////////////
//:: Custom User Defined Event
//:: FileName
//:: Copyright (c) 2001 Bioware Corp. //:://////////////////////////////////////////////
/* Script to make Deer wander and flee from
Non-Druid or Ranger Class
*/
//:://////////////////////////////////////////////
//:: Created By: John Cook
//:: Created On: June 23, 2002 //:://////////////////////////////////////////////

void main()
{
int nUser = GetUserDefinedEventNumber();
int isFriend;
int Num;
float Distance;
location Loc;
object oPlayer;

oPlayer = GetLastPerceived();
if(nUser == 1001) //HEARTBEAT EVENT
{
Num = Random(50);
Distance = IntToFloat(Num); //Distance to walk from location
Num = Random(10);
Loc = GetLocation(OBJECT_SELF);
if(Num >= 7)
{
ActionMoveAwayFromLocation(Loc,FALSE,Distance);
}
}
else if(nUser == 1002) // PERCEIVE EVENT
{
isFriend = GetClassByPosition(1,oPlayer);
if(isFriend != CLASS_TYPE_DRUID)
if(isFriend != CLASS_TYPE_RANGER)
{
ActionMoveAwayFromObject(oPlayer,TRUE,50.0f);
}
}
}

avec les deux lignes

SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); //OPTIONAL
BEHAVIOR - Fire User Defined Event 1001
SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); //OPTIONAL
BEHAVIOR - Fire User Defined Event 1002

du OnSpawnEvent activées


Et merci pour le script...c'est sympa!!

Par mobidique le 29/11/2002 à 11:33:42 (#2670742)

Juste 2 mots ...

J'ai utilisé ce script de base et en fait je n'en ai pas été du tout satisfait ... Prend un cerf colle lui ce script charge ton module prend un perso standard non druide non ranger et approche toi du cerf ... il fuit ... très bien ... poursuit le ... il fuit il fuit il fuit pas ... :enerve: ... ben pourquoi ? ...

NwN à l'instar d'un logiciel de simulation procède par l'utilisation d'un échéancier, enfin, l'échéancier est une façon de faire de la simulation d'événements. L'échéancier procède par une discrétisation du temps, forcément on ne peut pas faire du continu ... Cette discrétisation elle a pour unité de base les 6 secondes du OnHeartBeat.

Le script précédent est basé sur un user defined event lancé sur la perception d'un objet dans l'environnement de la créature. Le pb provient du fait que ta créature va fuir un moment mais si tu la poursuis, sa fuite va s'arrêter sans que tu sois sorti de son champ de perception et de fait un perso va pouvoir rester dans le champ de perception de la créature parce que le joueurs n'est plus un nouvel événement dans l'environnement de la créature ...

Pour être exacte, les 2 derniers paragraphes sont plus des intuitions à la fois quand au fonctionnement du moteur NwN et de son incidence sur le script, faut pas prendre ça pour parole d'évangile ...

Un autre pb avec les animaux sauvage (ou non) non agressifs c'est qu'il appartiennent à la faction commoner, à partir de ce moment là si tu tue un cerfs quelque part toute les chauve souris de la région tout les lapins te prennent en grippe et te saute dessus ... marche sur une poule par inadvertance et le commandant du port à 10 tiles de là va te sauter à la gorge pour t'étrangler ... En particulier, à l'image de ce script, j'ai voulu en faire un autre où des sangliers, bestioles aggro par défaut, allaient attaquer tous les non-druides non-rangers .. A la rigueur ça tient plus la route que le script de fuite, puisque la bestiole alors doit attaquer les non druides non ranger et ne rien faire en présence des autres ... Pb, pour qu'il attaque pas un druide-ranger, enfin c'est l'approche que j'avais utilisé, mais c'était peut être pas la bonne j'avais passé le sanglier en faction commoner, et s'il attaquait un PJ il passait en faction hostile automatiquement. Un pb je crois c'était que si un druide lattait un sanglier, il passait tout les animaux en hostile aussi enfin ... un bordel ...

J'ai abandonné l'idée de mettre des bambis et des lapins dans mes bois, ça faisait joli mais ça n'apportait rien à mon histoire ...

Par eMRaistlin le 29/11/2002 à 11:53:56 (#2670890)

Ah... les factions... ^^


la seule solution : des nouvelles factions (une par race, ou alors des regroupements coherents.)


Pour ce qui est du onPerception qui se reset pas si l'on ne sort pas du champs, je me demande si ce serait pas interressant d'essayer un


ActionForceMoveToObject(oPC,TRUE,20.0f,10.0f);


Je me demande si Le 20.0 force la creature a bouger a 20.0 metres du oPC, ou si ca interromp l'action si la distance est inferieur a 20

Si quelqu'un pouvais tester...

[EDIT, pour ceux qui veulent tster, mais qui ne veulent pas tout se taper :

OnPerception

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

if (GetIsPC(oPC))
{
ActionForceMoveToObject(oPC,TRUE,20.0f,10.0f);
SpeakString("Le force move est lancé");
}
}

Par Mastokk le 29/11/2002 à 11:59:27 (#2670935)

Provient du message de eMRaistlin
Ah... les factions... ^^


la seule solution : des nouvelles factions (une par race, ou alors des regroupements coherents.)




Ouais c'est ce que je fais, à chaque nouvel NPC je réfléchis à sa faction est si besoin j'en crée une nouvelle... C'est long mais y a que ca pour que les réactions soient plus ou moins réalistes...

Par shadoh le 29/11/2002 à 12:45:20 (#2671299)

Bref...je suis une quiche, je sais, mais si quelqu'un pouvait me pondre un script tout fait qui marche, je lui serait éternellement (enfin, presque) reconnaissant...


Hey ! j'avais pas lu ça moi :D. Bon alors, je voudrais que tu viennes à l'agence en habit de lapin rose et que tu tues tous les commerciaux qui font rien qu'a papoter et qui me déconcentrent pendant que moi j'essaye d'avancer mon module :D.

PS : j'ai rien compris à la référence d'antériorité qui a été faite coolstar :). Je me fais vieux, je deviens sénile :D.

Par coolstar le 29/11/2002 à 12:52:42 (#2671358)

Pas Glop!

Par mobidique le 29/11/2002 à 12:57:17 (#2671407)

Provient du message de eMRaistlin
Si quelqu'un pouvais tester...
Je parie que ça marche pas si dans le OnSpawn il y a des animations par défaut, mobile ou immobile ou s'il on a affaire à une bestiole instanciée par encounter, pour lesquelles indépendemment du OnSpawn il y a une animation qui est jouée.

Par ailleurs, un autre pb de ce script c'est que l'on fait fuir la bestiole par rapport à la position du PC au moment de sa perception ... Or si le perso se déplace en poursuivant la bestiole sa position effective n'est pas la même et ta bestiole lorsqu'elle arrive à 20 mètres de l'endroit où elle a perçu le PC, en fait le PC n'a jamais quitté la zone de perception de la bestiole (et d'un) et ensuite le PC n'est pas à 20 de la bestiole (et de 2) ...

C'est chiant hein ... On voudrait en fait que cela se comporte comme des aimants ... Le PC se rapproche, la bestiole s'éloigne ... Peut être est-ce qu'on pourrait jouer sur la capacité de perception de la bestiole, augmenter le range et la sensibilité ... Plutôt que de faire fuir à 20 mètres une bestiole quand un joueur s'en approche à 3 mètres, pourquoi ne pas faire fuir sur 3 mètre une bestioles lorsque le joueur s'en approche à moins de 20 mètres ...

:eureka: ?

Par eMRaistlin le 29/11/2002 à 13:26:19 (#2671625)

Plutôt que de faire fuir à 20 mètres une bestiole quand un joueur s'en approche à 3 mètres, pourquoi ne pas faire fuir sur 3 mètre une bestioles lorsque le joueur s'en approche à moins de 20 mètres ...


Bein, surement pour la meme raison que tu as utilisé le OnPerception : Eviter les Heathbeat pour calculer ^^

[Edit : Je suis par contre sur que Bioware a fait des scripts de fuite pour les NPC... je vais rechercher...]

Par mobidique le 29/11/2002 à 14:43:48 (#2672326)

Je recase mon Faire bouger des monstres instanciés par encounter

Je suis pas sûr qu'on soit sur la même longueur d'onde là ... Le script de base de corwin fonctione sur le lancement d'un UserDefinedEvent qui lui même est lancé par le Onheartbeat ... Ca changerai kkchose si on le mettait sur le OnPerception ? Je veux dire en terme de perception effective, ça marche en continue les OnPerception ? Alors que sur le OnHeartbeat l'event n'est lancé que toute les 6 secondes ... :confus: ...

Mon idée est qu'en poussant la sensibilité et la distance de perception si c'est possible, y a un truc kkpart je suis presque sûr, tu as plus de chance sur les 20 mètre de percevoir le PC et que la bestiole se tire ... par ailleurs il serait le cas échéant possible d'augmenter la vitesse de déplacement (ça aussi y a un réglage kkpart et si y en a pas y a qu'a appliquer un effect ... ) du cerf de sorte que lorsque le cerf se tire la distance entre le PC et le cerf augmente plutôt que d'être constante, ainsi lorsque le cerf s'arrête il est bien loin du PC et lorsque ce dernier rentre à nouveau dans l'air de perception du cerf il entraine à nouveau la fuite ddu cerf ... capice ?

Par eMRaistlin le 29/11/2002 à 15:17:13 (#2672573)

sisi, ,molto molto... mais ca cree d'autre soucis :


- 1: Le OnPerception regarde en permanence, mais comme tu l'a dis, une fois flaggé percu, seul la disparition fera a nouveau reagir le OnPerception. Donc, c'est pas cool ( a moin qu'on s'en serve pour justement arreter le cerf de suivre le Pc : une fois qu'il ne voit plus le PC, il s'arrete...^^... a creuser..)

- 2 :Le heartbeat, sur des animaux de forets, ca va trop bouffer le proc, sauf si tu ne met qu'une seule créature, mais dans ces cas la, ca fait un peu foret LeaderPrice... our un animal fantastique, a la rigueur. L'avantage du Hearthbeat, c'est que du coup, l'animal se cree lui meme des events a verifier. Donc, toute les 6 sec, tu verifie qu'il n'y a pas un PC a moins de 6 sec de lui-meme (grosso-modo), si oui, il s'enfuit, si non, il retoune brouter son herbe et arrete de nous embeter sur les fora ^^

- 3 :Le probleme de pousser la vitesse de creature (c'est tout a fait faisable dans ses propriete, et en etant plus tordu, en appliquant un effet Haste temporaire.) c'est que du coup, ca fais un NPC trop rapide (visuellement bizarre, et en combat, 4 attaqu par tour ^^)

- 4 :Augmenter la perception, c'est tout a fait faisable...


Par contre, ce que je disait, justement, c'est que je ne savais pas si une creature qui percoit un objet a moins de 20 metres et qui possede un OnPerception : forcemoveto20metres va bien s'eloigner du PC.

je pense que oui. mais je suis au boulot, et ne peut par consequent tester.

Dans le cas ou ca marche, justement, je mettrai plus de 20metre, et je demandrait une perception moyenne, afin de pouvoir faire un ClearAllActions sur l'evenment OnPerception (


void main()
{
if GetIsPC(GetLastPerceived())
{
if (GetLastPerceptionVanished())
ClearAllActions();
}
}


Tu vois ce que je veux dire ?

Et du coup, plus besoin de modifier un monstre Ok, ni de calculer et recalculer en permanence la distance entre le Pc et le NPC, vu que le force move va le forcer a aller trop loin pour percevoir le PC, et que le OnPerception va l'arreter si il arrete de percevoir le Pc...

Par mobidique le 29/11/2002 à 15:51:03 (#2672861)

Pour le sujet oublié :
Ben en théorie Bioware dans son onspawn à prévu un comportement spécial pour les herbivores, pas de bol ça marche pas ...

2-> .... Ben je sais pas quels essais tu as fait ... mais perso dans trashcity2 j'avais une zone kkchose comme 16 * 24 c'est déjà assez grand quand même, ben quand t'as mis 3 cerfs 3 sanglier et 3 putois DLMQT t'as rempli ta zone ... c'est vite fait .. après parmi ceux là) y en a qui sont naturellement aggro pour lesquels il n'y a rien à faire et pour l'exemple du cerf il faut faire un cerf unique suivi comme tu l'as indiqué par d'autre cerfs ... les suiveur n'ont pas besoin de ce comportement spécial ...

Avec le spoint 1, 3 et 4 on se retrouve avec un cerf qui fuit très vite, très tôt et très loin ce qui laisse le temps sans doute à ce que le PC soit flaggué non perçu ou déflagué vu comme tu veux.

20 mètres ça fait déjà 2 tiles ... Je vois ce que tu veux dire mais j'ai jamais parlé de recalculer en permanence la distance entre le PC et la bestiole :doute: ... Haaaaa ... c'est comme ça que tu interprètes le script de base ? Beuh non ... je vois pas d'où tu sorts ça
:confus:

Par shadoh le 29/11/2002 à 16:33:03 (#2673211)

Arf, encore une heure à devoir rester à l'agence avant de pouvoir effectuer quelques tests sur cette problématique :sanglote:.

Une petite précision au fait. Lorsque tu parles d'utiliser le onPerception pour stopper la cerf, eMRaistlin, tu passes donc par l'attribution de variables pour le cas ou le PC est vu et celui ou il n'est pas vu déclenchant ainsi la fuite ou l'arrêt. Ou bien tu utiliserais juste le onPerception pour stopper le cerf tout en utilisant le onHeartbeat pour vérifier la présence d'un PC toutes les 6 secondes ?

Par eMRaistlin le 29/11/2002 à 16:55:03 (#2673398)

@mobidique : je confirme que je ne reagissait qu'au post sur la fuite, et pas sur l'integralité du topic, d'ou une certaine confusion qui s'est installée.^^; mais j'avoue qu'en plus ce n'etait qu'une proposition, afin de me debarrasser des HeartBeat (sisi, un Heartbeat qui fait un Appel d'un userdefined, meme infructueux, ca pompe ^^

DLMQT ?? (pas compris... sorry)

Pour ce qui est du nombre de zone, je peuple mes zones sur NWNRo de 50 monstres par map en moyenne, aggressif ou non, et ca rend raiment bien ^^ c'estpour ca que j'economise un max sur le OnHrtBt (deja que 50% est affuble d'un HeartBeat afin de looter les objets qui trainasseraient de trop ;))

D'ou l'utilisation du OnPerception, qui est de toute facn automatiquement calculé a chaque fois.

Avec le spoint 1, 3 et 4 on se retrouve avec un cerf qui fuit très vite, très tôt et très loin ce qui laisse le temps sans doute à ce que le PC soit flaggué non perçu ou déflagué vu comme tu veux.
Je suis d'accord, mais avec ca, tu peux pas organiser une chasse a cours, ni autre chose : le NPC ira toujours trop vite et trop loin, ce qui me semble moins naturel.
Je vois ce que tu veux dire mais j'ai jamais parlé de recalculer en permanence la distance entre le PC et la bestiole

Je sais.. ^^ je disais ca pour vendre mon bifteak (^_^)y

@Shadoh :
ni l'un ni l'autre : je pense que le OnPerception declencherait un mouvement, et qu'un autre evenement du onPerception declencherait le stop, suivant que l'evenement percu en dernier soit la vue d'un PC, ou sa disparition... Donc, aucune variable (qui ralentisse encore le mod) ou aucun heartbeat. (je pense vraiment que le heartbeat doit etre proscrit pour gerer la vie quotidiene des objet qui ne font que peupler et rendre vivant un mod. Sauf besoin specifique, of course !!)

On pourrait essayer ça

Par Jedaï le 29/11/2002 à 17:04:41 (#2673481)


*Sur le OnPerception, un script vérifie la classe du PC et s'il n'est pas druide ou rodeur, colle sur le cerf un local int "bFlee" à TRUE et lui fait démarrer sa fuite par rapport au PC qu'on mémorise dans "oFlee".
*Sur le OnHeartbeat : si "bFlee" est à TRUE, on s'éloigne de "oFlee" sinon rien (c'est pas trop lourd : un seul test en général )
*Sur le OnPerception, si le PC disparait on fait ClearAllActions() on supprime "bFlee" et "oFlee".


Il me semble que cette solution marcherait pas trop mal non ?:p

Par Jedaï le 29/11/2002 à 17:09:49 (#2673520)

Pour les allergique au OnHeartBeat : Un seul test c'est vraiment pas lourd et associé à la technique du "chef de meute" et du spawn/despawn des NPCs si des PCs sont dans l'area, ça ne posera vraiment "aucun" problème.;)

Par Corwin Whitehorn le 29/11/2002 à 19:05:23 (#2674394)

Ben je vois que le topic intéresse du monde....Merci beaucoup pour vos efforts (même si je comprends pas la moitié de ce que vous écrivez):confus:

Par Jaha Effect le 29/11/2002 à 19:16:22 (#2674483)

Provient du message de Corwin Whitehorn
Ben je vois que le topic intéresse du monde....Merci beaucoup pour vos efforts (même si je comprends pas la moitié de ce que vous écrivez):confus:


Héhéhéhé c'est le problème avec perfectionnistes qui peuplent ce forum, on part d'une question simple et on refait le monde ;)

Jaha Effect :D

Par coolstar le 30/11/2002 à 9:10:35 (#2677629)

Note...

Dommage que les Titres de nos Avatars soient fonction de la fréquentation de tous les Forums Jeux Online confondus et non fonction de la fréquentation du Forum Maskado !! on aurait au moins une meilleure idée de quels Vétérants on peut trouver par ici... :D

JOL Archives 1.0.1
@ JOL / JeuxOnLine