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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[script] Probleme avec un script de spawn

Par shadoh le 16/11/2002 à 15:00:05 (#2575102)

Bonjour,

J'ai récemment essayé de creer un script de spawn pour les besoins de mon module mais le probleme suivant se pose :

Lorsque j'enregistre mon script, j ai le message suivant :

16/11/02 14:56:05 : Erreur. 'spawn_loup_hiver' n’est pas compilé.
spawn_loup_hiver.nss(16): ERREUR : DECLARATION DOES NOT MATCH PARAMETERS

// Spawn de loups personnalises aux WP definis
///////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
int nRandom = Random(3);
int nObjectType = OBJECT_TYPE_CREATURE;
int bUseAppearAnimation = TRUE;
object oActionSubject = GetObjectByTag("InvisibleObject");
string sTemplate = "louphivernal";
location lLocation1 = GetLocation(GetWaypointByTag("wp_loup1"));
location lLocation2 = GetLocation(GetWaypointByTag("wp_loup2"));
location lLocation3 = GetLocation(GetWaypointByTag("wp_loup3"));
//////////////////////////////////////////////////////////////////////////////////////////////////
if (nRandom == 1)
{
AssignCommand(oActionSubject, CreateObject(nObjectType,sTemplate,lLocation1,bUseAppearAnimation));
}
else if (nRandom == 2)
{
AssignCommand(oActionSubject, CreateObject(nObjectType,sTemplate,lLocation2,bUseAppearAnimation));
}
else
{
AssignCommand(oActionSubject, CreateObject(nObjectType,sTemplate,lLocation3,bUseAppearAnimation));
}
}

____________________________________________________

Ce script se declancherait sur le on Death d'un loup que j'ai créé. Il assignerait la commande de creation d'un loup avec le resref "louphivernal" à un objet invisible que j'ai posé sur mon area. Mais malheureusement impossible de le compiler. Alors si quelqu'un pouvait m'expliquer ce qui ne fonctionne pas ça serait sympa.

Merci d'avance.

Par Stan Kley le 16/11/2002 à 15:58:29 (#2575407)

Quand il met sa d'habitude c'est qu'il manque une paranthèse quelque part, avant ton if peut-être..., (juste après la liste de location...)

Par Tynril le 16/11/2002 à 16:10:35 (#2575466)

AssignCommand demande en 2ème paramètre une fonction VOID. CreateObject est une fonction OBJECT.

Il te faut créer une nouvelle fonction qui copie CreateObject mais sans retour :)

// Spawn de loups personnalises aux WP definis
///////////////////////////////////////////////////////////////////////////////////////////////////

void VoidCreateObject(nObjectType,sTemplate,lLocation,bUseAppearAnimation) {
CreateObject(nObjectType,sTemplate,lLocation3,bUseAppearAnimation);
}

void main()
{
int nRandom = Random(3);
int nObjectType = OBJECT_TYPE_CREATURE;
int bUseAppearAnimation = TRUE;
object oActionSubject = GetObjectByTag("InvisibleObject");
string sTemplate = "louphivernal";
location lLocation1 = GetLocation(GetWaypointByTag("wp_loup1"));
location lLocation2 = GetLocation(GetWaypointByTag("wp_loup2"));
location lLocation3 = GetLocation(GetWaypointByTag("wp_loup3"));
//////////////////////////////////////////////////////////////////////////////////////////////////
if (nRandom == 1)
{
AssignCommand(oActionSubject, VoidCreateObject(nObjectType,sTemplate,lLocation1,bUseAppearAnimation));
}
else if (nRandom == 2)
{
AssignCommand(oActionSubject, VoidCreateObject(nObjectType,sTemplate,lLocation2,bUseAppearAnimation));
}
else
{
AssignCommand(oActionSubject, VoidCreateObject(nObjectType,sTemplate,lLocation3,bUseAppearAnimation));
}
}

Par shadoh le 16/11/2002 à 17:50:43 (#2575980)

Merci beaucoup pour votre aide :).

Néanmoins j'ai toujours une erreure qui me dit ceci :

16/11/02 18:00:47 : Erreur. 'spawn_loup_hiver' n’est pas compilé.
spawn_loup_hiver.nss(4): ERREUR : INVALID DECLARATION TYPE

____________________________________________________

EDIT : j'ai re-écrit le script comme ceci :

// Spawn de loups personnalises aux WP definis
////////////////////////////////////////////////////////////////////////////////////

void VoidCreateObject()
{
int nRandom = Random(3);
int nObjectType = OBJECT_TYPE_CREATURE;
int bUseAppearAnimation = TRUE;
string sTemplate = "louphivernal";
location lLocation1 = GetLocation(GetWaypointByTag("wp_loup1"));
location lLocation2 = GetLocation(GetWaypointByTag("wp_loup2"));
location lLocation3 = GetLocation(GetWaypointByTag("wp_loup3"));
if (nRandom == 1)
{
CreateObject(nObjectType,sTemplate,lLocation1,bUseAppearAnimation);
}
else if (nRandom == 2)
{
CreateObject(nObjectType,sTemplate,lLocation2,bUseAppearAnimation);
}
else
{
CreateObject(nObjectType,sTemplate,lLocation3,bUseAppearAnimation);
}
}
////////////////////////////////////////////////////////////////////////////////////
void main()
{
object oActionSubject = GetObjectByTag("InvisibleObject");

AssignCommand(oActionSubject, VoidCreateObject());
}

Ca s'enregistre correctement. Pourriez vous me dire si cela fonctionnera ?

Par Jedaï le 16/11/2002 à 20:57:52 (#2576952)

Normalement, ça devrait marcher, en fait il est toujours préférable de faire un seul AssignCommand() avec une seule fonction personnalisée au lieu de plusieurs Assign..() mais avec des fonctions génériques, ceci pour des raisons d'occupation CPU (il paraît que les XCommand() copient toutes les variables actives dans le script à chaque fois qu'elle sont appelées ?).:cool:

Néanmoins, j'ai récemment eu le cas de quelqu'un chez qui une commande comparable mais avec ActionDoCommand() plantait, alors...:maboule:

Par shadoh le 16/11/2002 à 21:03:39 (#2576977)

Ok c'est noté :). Je viens justede poster la version finale du script. Et celui ci marche parfaitement bien :). Ca m'evitera d'avoir a utiliser des déclancheurs que je trouve assez peut adapté à la création d'un module de type permanent.

Merci encore pour vos précieux conseils :).

JOL Archives 1.0.1
@ JOL / JeuxOnLine