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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[aide respawn]Besoin d'aide pour un pb de respawn

Par shadoh le 15/10/2002 à 23:22:22 (#2342682)

Bonjour,

Je me permet de soliciter votre aide pour un probleme de respawn de monstres. J'ai deja réalisé une 40 aine de zones pour mon module et il ne me reste plus qu'a régler quelques details avant de pouvoir finaliser le module. Mon probleme c est qu avec le script que je vous ai copié plus bas, les monstres qui sont tués une premiere fois ne respawn qu"une fois. Si je les retue une seconde fois, ils ne respawneront plus. Je ne sais pas trop quoi faire alors j'espere que vous pourrez m'aider afin de résoudre mon probleme. Merci d'avance :).

SCRIPT UTILISE : (en l'occurence pour le respawn d'un loup)

#include "NW_I0_GENERIC"

void VoidCreateObject(string sTemplate, location lLoc, int bUseAppearAnimation=TRUE);
void main()
{


location lLoca = GetLocation(GetObjectByTag ("wploup1"));
float fSeconds = 60.0; //temps en secondes pour le respawn
string sTemplate = "nw_wolf";

if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
{
SignalEvent(OBJECT_SELF, EventUserDefined(1007));
}


{
SetIsDestroyable(FALSE);
AssignCommand(OBJECT_SELF, DelayCommand(fSeconds, VoidCreateObject(sTemplate,lLoca, TRUE)));
}

}

void VoidCreateObject(string sTemplate, location lLoca, int bUseAppearAnimation=TRUE)
{
CreateObject(OBJECT_TYPE_CREATURE, sTemplate,lLoca,TRUE);
SetIsDestroyable(TRUE);
}

Par Tyn' le 15/10/2002 à 23:51:20 (#2342810)

Utilise les Encourters (Rencontre) en francais. C'est une zone polygonale avec aparission aléatoire des créatures de ton choix en fonction du niveau du joueur le déclanchant.

C'est mieux et beaucoup plus simple que tout ce qu'on pourrait faire en scripts :)

Par shadoh le 16/10/2002 à 0:26:58 (#2342981)

Merci du conseil :) mais j utilise deja ce type de declancheurs pour faire spawner des mobs. Le PB c est que pour les mobs de quete, il est obligatoir que celui ci soit visible avant que le PJ ne passe sur un déclancheur. Et évidement, il faut qu apres qu un PJ ai tué le mob de quete en question celui ci respawn quelques minutes apres afin qu un autre PJ puisse accomplir la quete en question lui aussi :).

Donc mon pb c est que ce script de respawn ne fasse pas respawn le mob qu une seule fois.

Par miriandel le 16/10/2002 à 0:53:32 (#2343079)

Provient du message de shadoh
Merci du conseil :) mais j utilise deja ce type de declancheurs pour faire spawner des mobs. Le PB c est que pour les mobs de quete, il est obligatoir que celui ci soit visible avant que le PJ ne passe sur un déclancheur. Et évidement, il faut qu apres qu un PJ ai tué le mob de quete en question celui ci respawn quelques minutes apres afin qu un autre PJ puisse accomplir la quete en question lui aussi :).

Donc mon pb c est que ce script de respawn ne fasse pas respawn le mob qu une seule fois.


La solution à ton problème est fort simple.
Si tu veux qu'un spawn soit visible d'emblée, avant que quiconque passe sur le déclencheur, tu places ton déclencheur à l'endroit d'arrivée des PJs dans la zone, et tu clic-droit sur le polygone créé et demande "add spawnpoint". Tu peux ensuite déplacer ce spawnpoint aussi loin que tu le veux dans la zone.
Tu peux même en créer plusieurs pour les spawns continus.
Le plygone de spawn peut même couvrir la zone entière. Ce qui donne parfois de jolis bugs, recommandé pour la bonne humeur !

Ce qui répond à ta seconde question.
Tu peux spécifier dans l'écran de configuration d'une rencontre que le spawn doit être "continuous" et dans l'onglet "advanced" préciser le nombre de fois qu'il doit respawner, jusqu'à l'infini, avec un intervalle en secondea à ta discrétion.

Par Tyn' le 16/10/2002 à 0:55:47 (#2343092)

L'idéal reste de faire une grande zone avec spawn central :) M'enfin tu veux du script, alors faisons du script.

Sur OnDeath du boss :

void main()
{
SignalEvent(GetArea(OBJECT_SELF),EventUserDefined(2000));
}
Et sur le OnUserDefined de ta zone :
void SpawnCreature(string sResRef, location lLocation, int bUseAppearAnimation=TRUE);

void main()
{
int nEvent = GetUserDefinedEventNumber();
switch(nEvent)
{
case 2000:
//Le boss a ete tue
float fRespawnTime = 60.0f;
location lLocation = GetLocation(GetObjectByTag ("wploup1"));
string sResRef = "nw_wolf";
DelayCommand(fRespawnTime,SpawnCreature(sResRef,lLocation));
break;
}
}

void SpawnCreature(string sResRef, location lLocation, int bUseAppearAnimation=TRUE)
{
object oCreature = CreateObject(OBJECT_TYPE_CREATURE,sResRef,lLocation,bUseAppearAnimation);
SetIsDestroyable(TRUE);
}

Par shadoh le 16/10/2002 à 0:59:25 (#2343105)

Vi merci :). Mais le pb c est aussi que le mob de quete en question a un dialogue et que je ne peux pas le selectionner dans la liste des mobs à faire spawn :( . Si jamais j'enregistre le mob de quete dans la palette, pourrais je le selectionner dans la catégorie autre de la liste des mobs à faire spawn ?

PS : merci pour vos propositions à tout ceux qui ont posté :)

EDIT : Tyn' à posté pendant que je tappais ma réponse
:D (je l'en remerci d'ailleur).

Par shadoh le 16/10/2002 à 1:34:04 (#2343216)

Merci bcp pour le coup de main tout le monde :). J'ai trouvé comment résoudre mon probléme en exploitant les pistes que vous m'avez soumise.

Une petite chose encore. Je me demande si il est possible de faire spawn un groupe de créature d'une classe spécifiée (morts vivants par exemple) qui s'adapteraient automatiquement au niveau du joueur qui est passé sur le declancheur de spawn.

En tout cas, merci encore pour votre aide.

Par miriandel le 16/10/2002 à 10:01:46 (#2344028)

C'est la base du système de spawn.
Dans la liste de tes créatures doivent se trouver les déclinaisons en diverses puissances, et le jeu sémectionnera un échantillon en arpport avec la force du groupe.

JOL Archives 1.0.1
@ JOL / JeuxOnLine