Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Demande d'aide sur 2 scripts...
Demande d'aide sur 2 scripts...
Par Un Loup Blanc le 19/10/2002 à 22:10:07 (#2365871)
J'ai essayé plusieurs trucs du gen JumpToLocation etc etc mais pas moyen d'y arriver..
Si quelqu'un m'aider je le remercie :)
Second probleme :
Jai fait un peu toutes les pages du fofo et je trouve ce post :
http://forums.jeuxonline.info/showthread.php?s=&threadid=127100
Je le trouve bien et donc je le prend mais au moment d'enregistrer
A la ligne if (GetIsPC(oPlayer))
il refuse la compilation en indiquant ERREUR : INVALID DECLARATION TYPE
Si quelqu'un pouvait encore me corriger ce probleme :)
Bonne soirée :)
*en attende d'une reconnection de GameSpy*
Par sounéva le 19/10/2002 à 22:45:35 (#2366027)
object oPC = GetLastAttacker();
if (GetIsPC(oPlayer))
j'ai regarder le script et (oPlayer) n'est pas définit
éssaye if (GetIsPC(oPC))
ca devrai marcher.
vu qu'avant y déclare "object oPC=......"
et qu'il n'y a aucune déclaration de (oPlayer) dans tout le script
c'est normale que ca retourne INVALID DECLARATION TYPE
voila
dit le si ca marche comme ca on poste qu'il a une erreur sur le trhead du script.
et pis c'est vrai que gamespy n'assure pas ce soir.......
Par Azrael07 le 19/10/2002 à 22:46:52 (#2366030)
A la ligne if (GetIsPC(oPlayer))
il refuse la compilation en indiquant ERREUR : INVALID DECLARATION TYPE
vraiment très étrange ce truc, la j'avoue je trouve pas, je n'ai vraiment aucune idée d'ou ca peut venir
if (GetIsPC(oPlayer))
dites tout le monde en koi cette ligne fait une erreur de type INVALID DECLARATION TYPE ?????????????,
c vraiment chelou.
pour l'autre truc, tu met
AssignCommand(oCreature, ActionJumpToObject(oObject));
et y'a pas de raison ke ca marche pas
EDIT :
Ben non justement c pas ca, l'object est bel et bien mal définis, mais le redéfinir correctement ne change rien, on a tjrs la meme erreur. Ou je suis aveugle, ou c truc est vraiment très étrange
Par Un Loup Blanc le 19/10/2002 à 22:52:39 (#2366049)
Provient du message de sounéva
j'ai regarder le script et (oPlayer) n'est pas définit
éssaye if (GetIsPC(oPC))
ca devrai marcher.
vu qu'avant y déclare "object oPC=......"
et qu'il n'y a aucune déclaration de (oPlayer) dans tout le script
c'est normale que ca retourne INVALID DECLARATION TYPE
voila
dit le si ca marche comme ca on poste qu'il a une erreur sur le trhead du script.
et pis c'est vrai que gamespy n'assure pas ce soir.......
Donc je suis me balade pour trouver des scripts et jen ai vu un pour se téléporter et j'ai vu cette commande, apres changement ca fait la même erreur à la même ligne... :(
*test l'autre solution*
Provient du message de Azrael07
EDIT :
Ben non justement c pas ca, l'object est bel et bien mal définis, mais le redéfinir correctement ne change rien, on a tjrs la meme erreur. Ou je suis aveugle, ou c truc est vraiment très étrange
Ben tu sembles pas aveugle alors ca doit être étrange :doute:
Par eMRaistlin le 19/10/2002 à 23:31:50 (#2366192)
saurez-vous la retrouver ?
bon, allez, un petit indice :
#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=GetLastAttacker(OBJECT_SELF);
if (GetIsPC(oPC))
{
SpeakString ("Allez hop, en taule !");
object oTarget = GetWaypointByTag ("wp_taule1");
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(5.0, AssignCommand( oPC, JumpToObject( oTarget)));
}
}
:mdr: :mdr:
Par Azrael07 le 20/10/2002 à 0:21:36 (#2366424)
y'en av vraiment bcp g pas compté, mais je m'attendais vraiment pas a une erreur de ce type pour une accolade manquante, mais qd on y repense c logique
ben voila, merci a toi eMRaistlin
Par Un Loup Blanc le 20/10/2002 à 0:45:47 (#2366538)
Heu sinon m'sieu, zavez regardé comment j'peut faire pour ka la mort d'un joueur il se retrouve téléporter dans une autre zone ?
Par eMRaistlin le 20/10/2002 à 1:27:31 (#2366751)
soit, tu fais un waypoint qqpart dans ton module qui s'appele :
"NW_DEATH_TEMPLE"
et tu affecte le script : "nw_o0_respawn" a ton OnPlayerRespawn du module.
Soit tu fais un jump a l'objet de ton choix... mais sur le OnPlayerRespawn... (je te conseille aussi la solution de copier/coller le nw_o0_respawn et de l'enregistrer sous un autre nom, puis de remplacer toutes les occurences de NW_DEATH_TEMPLE par le tag que tu souhhaite ^^)
Ok ? (je suis pas sur d'avoir été clair...oO)
PS : Merci beaucoup mais yavais aussi l'objet mal défini.
Vi, je sais, mais c'etait pas ca la cause de l'erreur "bizarre" . ca, je l'ai changé histoire de pas avoir a faire un deuxieme post ^^
Par Un Loup Blanc le 20/10/2002 à 4:25:00 (#2367256)
C'est tres simple : y'a 2 moyen d'y arrvier...
soit, tu fais un waypoint qqpart dans ton module qui s'appele :
"NW_DEATH_TEMPLE"
Ca j'ai compris :ange:
et tu affecte le script : "nw_o0_respawn" a ton OnPlayerRespawn du module.
Ca aussi :ange:
Soit tu fais un jump a l'objet de ton choix... mais sur le OnPlayerRespawn... (je te conseille aussi la solution de copier/coller le nw_o0_respawn et de l'enregistrer sous un autre nom, puis de remplacer toutes les occurences de NW_DEATH_TEMPLE par le tag que tu souhhaite ^^)
La j'ai rien compris et d'ailleur j'vais dodo :maboule:
On verra d'main et merci pour tous :)
JOL Archives 1.0.1
@ JOL / JeuxOnLine