Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > bug dans script de prison!! help!
bug dans script de prison!! help!
Par Elmo le 10/1/2003 à 2:09:12 (#2986041)
#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)
Il ne dis pas que l'objet est defini plusieurs fois ?
Par Elmo le 10/1/2003 à 2:13:34 (#2986061)
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)
Par coolstar le 10/1/2003 à 4:49:46 (#2986443)
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)
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)
Par Elmo le 10/1/2003 à 5:31:49 (#2986482)
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)
question a la noix
Par Lest@t le 11/1/2003 à 9:47:13 (#2994689)
Par eMRaistlin le 11/1/2003 à 10:18:27 (#2994772)
/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)
Et a ma question eMR? T'y réponds pas à ma question?? :(
Par eMRaistlin le 11/1/2003 à 12:23:06 (#2995353)
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)
Par eMRaistlin le 11/1/2003 à 18:15:17 (#2997752)
JOL Archives 1.0.1
@ JOL / JeuxOnLine