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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Script pour Respawn MMORPG ( petit problème )

Par Tzarman le 31/1/2003 à 13:23:48 (#3141067)

Bonjour :)

Voila ce petit script qui suis est très sympa pour les respawn mais il y a un petit problème : les corps des créatures tuées ne disparaissent ( pour laisser place à leurs droops ) qu'une fois leur respawn effectué .
Ce qui est assez gênant pour le joueur qui doit attendre le respawn pour pouvoir espérer drooper un object ( en plus si le respawn est long ).

Voila le script en question :

#include "NW_I0_GENERIC"

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


location lLoca = GetLocation(GetObjectByTag ("Tag_du_waypoint"));
float fSeconds = 10.0; //temps en secondes pour le respawn
string sTemplate = "BLUEPRINT_de_votre_monstre";

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);
}


J'aimerais bien-sure que les créatures disparaissent instantanément après leur mort, mais je ne sais pas comment le modifier :confus:



:aide: :aide: :aide: :aide: Merci d'avance :ange:

Par Jedaï le 1/2/2003 à 0:28:18 (#3145840)

J'ai l'impression d'avoir déjà vu ça quelque part.....:D

C'est très simple, ce script repose sur un principe idiot : si on détruit un objet, celui-ci ne peut plus rien faire (logique !), donc pour un respawn différé, ce script fait en sorte que le cadavre ne disparaisse pas, pour qu'il puisse se réinvoquer. (Passons sur le AssignCommand(OBJECT_SELF,...); totalement inutile, mais bon...)

Pour éviter ce problème, il suffit juste de faire en sorte que ce soit un autre objet qui respawn le monstre, ainsi on peut détruire le cadavre qui n'as plus rien à faire dans l'affaire (parce que ça allège le moteur et aussi parce qu'un cadavre ça pue, surtout quand ça a eu le temps de sécher ;) )

Ce script devrait faire ce qu'il faut :


#include "NW_I0_GENERIC"

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

void main()
{
location lLoca = GetLocation(GetObjectByTag ("Tag_du_waypoint"));
float fSeconds = 10.0; //temps en secondes pour le respawn
string sTemplate = "BLUEPRINT_de_votre_monstre";

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

AssignCommand(GetModule(), DelayCommand(fSeconds, VoidCreateObject(sTemplate,lLoca, TRUE)));
}

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


:cool:

Par Tzarman le 1/2/2003 à 1:19:42 (#3146126)

Un GRAND merci a toi :merci: :merci: :merci: :merci:

C'est parfait :D :D :D

NON

Par Blam le 1/2/2003 à 13:26:53 (#3147940)

DEUX grands merci a toi
Jedaï.




Pom pom pom pom et j'ai cherché dans tous les msg des 100 derniers jours.................

Par Hreidmarr le 1/2/2003 à 16:48:35 (#3149012)

-Et ce script se met où je vous prie ?

Par Jedaï le 1/2/2003 à 20:25:37 (#3150261)

OnDeath du monstre à respawn. :)

Par Hreidmarr le 1/2/2003 à 22:27:56 (#3151105)

-J'te remercie !

Par Hreidmarr le 2/2/2003 à 4:10:25 (#3152516)

-J'aurais une dernière question, toujours à ce sujet. J'applique le script sur le OnDeath du monstre, mais celui-ci ne réapparait qu'une seule fois. Il m'a semblé qu'il fallait faire quelque chose pour y remédier, mais je ne parviens pas à mettre le doigt dessus.

Merci.

Par Jedaï le 2/2/2003 à 11:57:32 (#3153479)

celui-ci ne réapparait qu'une seule fois


Ca c'est symptomatique :D

En fait il faut créer une nouvelle créature dans la palette et lui mettre le script dans le OnDeath dans les propriétés du prototype (dans la palette custom), parce que sinon, si tu modifie juste les propriétés d'une créature sur la map, la créature qui est respawné a le script par défaut dans son OnDeath, pas le script de respawn. :p

(Je sais pas si j'ai été clair :confus: )

Par Tzarman le 2/2/2003 à 14:38:39 (#3154455)

Il faut bien-sure que tu places un "way point" et que tu intègre le Tag de celui-ci dans le script.

Mais bon je pense que tu l'as deja fait :doute:

JOL Archives 1.0.1
@ JOL / JeuxOnLine