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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

bug dans script de prison!! help!

Par Elmo le 10/1/2003 à 2:09:12 (#2986041)

étant un utilisateur du script de prison proposé ici je m'aperçut que j'étais toujours téléporté au waypoint 1 j'en ai trouvé la cause: (lire le commentaire)


#include "NW_I0_GENERIC"

void main()
{
if (!GetFleeToExit())
{
if (!GetSpawnInCondition (NW_FLAG_SET_WARNINGS))
{
if (!GetIsObjectValid (GetAttemptedAttackTarget ()) && (!GetIsObjectValid (GetAttemptedSpellTarget ())))
{
if (GetBehaviorState (NW_FLAG_BEHAVIOR_SPECIAL))
{
DetermineSpecialBehavior (GetLastDamager ());
}
else if (GetIsObjectValid (GetLastDamager ()))
{
DetermineCombatRound ();
if (!GetIsFighting (OBJECT_SELF))
{
object oTarget = GetLastDamager();
if (!GetObjectSeen(oTarget) && GetArea (OBJECT_SELF) == GetArea(oTarget))
{
ActionMoveToLocation (GetLocation (oTarget), TRUE);
ActionDoCommand (DetermineCombatRound ());
}
}
}
}
else if (!GetIsObjectValid (GetAttemptedSpellTarget ()))
{
object oTarget = GetAttackTarget();
object oAttacker = GetLastHostileActor();
if (GetIsObjectValid(oAttacker) && oTarget != oAttacker && GetIsEnemy(oAttacker) &&(GetTotalDamageDealt() > (GetMaxHitPoints(OBJECT_SELF) / 4) ||(GetHitDice(oAttacker) - 2) > GetHitDice(oTarget) ) )
{
DetermineCombatRound (oAttacker);
}
}
}
}
if (GetSpawnInCondition (NW_FLAG_DAMAGED_EVENT))
{
SignalEvent (OBJECT_SELF, EventUserDefined (1006));
}


object oPC=GetLastDamager();
if (GetIsPC(oPC))
{
SpeakString ("Allez hop, en Prison!");
object oTarget = GetWaypointByTag ("wp_taule1");// c'est ici que ça merdouille oTarget est déjà défini à "wp_taule1" ce qui fait que le random plus bas est inutile
int iRandom = Random(4);
if (iRandom==1)
{
object oTarget = GetWaypointByTag ("wp_taule1");
}
else if (iRandom==2)
{
object oTarget = GetWaypointByTag ("wp_taule2");
}
else if (iRandom==3)
{
object oTarget = GetWaypointByTag ("wp_taule3");
}
else
{
object oTarget = GetWaypointByTag ("wp_taule4");
}
DelayCommand(2.0, AssignCommand( oPC, JumpToObject( oTarget)));
}
}


si quelqu'un à une idée...

Par eMRaistlin le 10/1/2003 à 2:12:09 (#2986055)

dis, je suis surpris que ca compile :

Il ne dis pas que l'objet est defini plusieurs fois ?

Par Elmo le 10/1/2003 à 2:13:34 (#2986061)

il compile bien et en enlevant la ligne commentée ça compile pas

Par eMRaistlin le 10/1/2003 à 2:21:28 (#2986089)


object oPC=GetLastDamager();
if (GetIsPC(oPC))
{
SpeakString ("Allez hop, en Prison!");
object oTarget = GetWaypointByTag ("wp_taule1");// c'est ici que ça merdouille oTarget est déjà défini à "wp_taule1" ce qui fait que le random plus bas est inutile
int iRandom = Random(4);
if (iRandom==1)
{
oTarget = GetWaypointByTag ("wp_taule1");
}
else if (iRandom==2)
{
oTarget = GetWaypointByTag ("wp_taule2");
}
else if (iRandom==3)
{
oTarget = GetWaypointByTag ("wp_taule3");
}
else
{
oTarget = GetWaypointByTag ("wp_taule4");
}
DelayCommand(2.0, AssignCommand( oPC, JumpToObject( oTarget)));
}


essaye celui du dessus, ou mieux encore : celui ci :

object oPC=GetLastDamager();
if (GetIsPC(oPC))
{
SpeakString ("Allez hop, en Prison!");
object oTarget;
string sTagWP;
int iRandom = Random(4);
if (iRandom==1)
{
sTagWP = "wp_taule1";
}
if (iRandom==2)
{
sTagWP = "wp_taule2";
}
if (iRandom==3)
{
sTagWP = "wp_taule3";
}
if (iRandom==0)
{
sTagWP = "wp_taule4";
}
oTarget = GetObjectByTag(sTagWP);
DelayCommand(2.0, AssignCommand( oPC, JumpToObject( oTarget)));
}

Par Elmo le 10/1/2003 à 2:33:49 (#2986143)

génat le second marche à fond, allez hop! tous dans l'panier à salade controle alcootest, les nains sont foutus!

Par coolstar le 10/1/2003 à 4:49:46 (#2986443)

Des fois tu me laisses perplexe eMR?? :doute:


J'avais lu encore récemment que c'était plus propre de préconiser le Switch que le else if dans ce type de figure... alors pourquoi te contentes-tu de corriger tel quel, au lieu d'inviter Elmo à prendre aussi ce fait en compte?? genre... :monstre:


object oPC = GetLastDamager();
int iPC = GetIsPC(oPC);
if (iPC)
{
string sTagWP;
int iRandom = Random(4);

switch (iRandom)
{
case 0: sTagWP = "wp_taule1"; break;
case 1: sTagWP = "wp_taule2"; break;
case 2: sTagWP = "wp_taule3"; break;
case 3: sTagWP = "wp_taule4"; break;
}
object oTarget = GetObjectByTag(sTagWP);

SpeakString("Allez hop, en Prison!");
DelayCommand(2.0, AssignCommand(oPC, JumpToObject(oTarget)));
}



;)

Par Elmo le 10/1/2003 à 5:01:25 (#2986460)

ça compile pas:

ERREUR : MISMATCHED TYPES

dans cette ligne:

object oPC = GetIsPC(GetLastDamager());


et aussi la:

object oTarget = GetObjectByTag(sTagWP);

avec ce message: VARIABLE DEFINED WITHOUT TYPE

Par coolstar le 10/1/2003 à 5:04:54 (#2986463)

C moi qui suis un âne Elmo... J'ai pas compilé pour vérifier et il en plus y avait une info croisée qui pouvait pas passer à l'état... mais, bon, c Edité maintenant... Et pis, de toute façon, ça n'empêche pas que la solution de eMR marche très bien... :D

Par Elmo le 10/1/2003 à 5:31:49 (#2986482)

on va mettre ça sur le compte de l'heure ;)

le script de eMR me convient parfaitement mais pour un autre module que je fait pour un pote le tien convient mieux car il y a plusieurs prisons avec un nombre de cellules différentes donc pour bidouiller c'est plus rapide et plus clair :D

Par coolstar le 10/1/2003 à 5:45:42 (#2986494)

c fait pour! ;)

question a la noix

Par Lest@t le 11/1/2003 à 9:47:13 (#2994689)

heu ... ce genre de script ce place où ?

Par eMRaistlin le 11/1/2003 à 10:18:27 (#2994772)

tie,s; vilain...

/me sort sa baguette et tape !!


Cela n'a pas vraiment été dans ce post, mais plutt dans le post originel, je crois...

Vu qu'il y a un GetLastDamager(), j'en deduis que ce script ne peut que se mettre sur le OnDamage Event des NPC :)

Par coolstar le 11/1/2003 à 12:08:48 (#2995254)

(/me se sent Calimerot)


Et a ma question eMR? T'y réponds pas à ma question?? :(

Par eMRaistlin le 11/1/2003 à 12:23:06 (#2995353)

euh...

quelle question ?

Celle la ?

alors pourquoi te contentes-tu de corriger tel quel, au lieu d'inviter Elmo à prendre aussi ce fait en compte??


Reponse : Je viens sur le forum entre 2 reunions, ou entre 2 sorties clients... Donc, je ne prend pas le temps de faire de la réécriture. J'essaye juste de proposer un script qui fonctionne. :merci:

Par coolstar le 11/1/2003 à 15:39:19 (#2996767)

Désolé si je t'ai chagriné très cher eMR... je voulais juste savoir ce que tu en pensais et non pas critiquer la nature généreuse de tes interventions... :D

Par eMRaistlin le 11/1/2003 à 18:15:17 (#2997752)

euh... pas chagriné du tout ^^;) :) :D

H-S

Par coolstar le 11/1/2003 à 18:18:51 (#2997781)

:ange:

JOL Archives 1.0.1
@ JOL / JeuxOnLine