Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Demande de correction de script
Demande de correction de script
Par Cassin le 9/9/2002 à 20:11:13 (#2128118)
J'ai des petits problèmes avec 2 scripts apparemment tout cons :
- le premier fait qu'un PNJ donne un anneau au joueur lorsqu'il lui parle. J'ai exactement le même script pour qu'un autre PNJ donne un diamant, la seule différence étant que j'ai supprimé la partie du script qui supprime les 2 anneaux demandés en échange du diamant de l'inventaire du joueur.void main()
{
object oAnneau = GetFirstItemInInventory(OBJECT_SELF);
while (GetIsObjectValid(oAnneau) && (GetTag(oAnneau) != "anneau2"))
oAnneau == GetNextItemInInventory(OBJECT_SELF);
if (GetIsObjectValid(oAnneau))
ActionGiveItem(oAnneau, GetPCSpeaker());
else
ActionSpeakString("Il a disparut ! Oh non !");
}
Le script se compile mais dans le jeu, j'ai le message "TOO MANY INSTRUCTION" qui s'affiche... Why ?
Le second script est sur une area transition dans le OnClick, normalement le joueur peut la passer s'il a un objet sur lui, si non, une phrase s'affiche. J'ai ça :object oClicker = GetClickingObject();
object oTarget = GetTransitionTarget(OBJECT_SELF);
location lLoc = GetLocation(oTarget);
void main()
{
if ( !(GetItemPossessedBy (oClicker, "Hache2mMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "HallebardeMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "Hache1mMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "BatardeMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "DagueMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "Epee2mMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "EpeeLMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "EpeeCMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "FleauMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "MarteauMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "MasseMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "EtoiledumatinMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "BatonMGK")== OBJECT_INVALID) ||
!(GetItemPossessedBy(oClicker, "LanceMGK")== OBJECT_INVALID) )
AssignCommand(oClicker,JumpToLocation(lLoc));
else
ActionSpeakString("Je ne peux pas retourner au Monastere les mains vide !");
}
Le script se compile idem, mais que j'ai une des armes citées ou non, l'area transition ne se déclenche pas... Au lieu des multiples if j'avais essayé de faire vérifier la variable qui se met à un lorsque je récupère l'objet, ça ne marchait pas non plus...
Où est mon erreur ? :doute:
(EDIT) : bon, plus la peine celui-là, j'ai trouvé : j'avais juste oublié de rajouter "WP_" devant le tag de mon trigger d'arrivée... :D Oups... ;)
Par Jedaï le 9/9/2002 à 20:44:19 (#2128367)
void main()
{
object oAnneau = GetItemPossessedBy(OBJECT_SELF, "anneau2");
if (GetIsObjectValid(oAnneau))
ActionGiveItem(oAnneau, GetPCSpeaker());
else
ActionSpeakString("Il a disparut ! Oh non !");
}
Pour le deuxième je ne comprend pas ce qui cloche à part que j'ai l'impression que Aurora n'apprécie pas les variables globales (pas sûr). Donc tu peux essayer ça :
void main()
{
object oClicker = GetClickingObject();
object oTarget = GetTransitionTarget(OBJECT_SELF);
location lLoc = GetLocation(oTarget);
if ( GetIsObjectValid(GetItemPossessedBy (oClicker, "Hache2mMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "HallebardeMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "Hache1mMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "BatardeMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "DagueMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "Epee2mMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "EpeeLMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "EpeeCMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "FleauMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "MarteauMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "MasseMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "EtoiledumatinMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "BatonMGK")) ||
GetIsObjectValid(GetItemPossessedBy(oClicker, "LanceMGK")) )
AssignCommand(oClicker,JumpToLocation(lLoc));
else
ActionSpeakString("Je ne peux pas retourner au Monastere les mains vide !");
}
Par Cassin le 9/9/2002 à 20:55:07 (#2128449)
Pour le deuxième, c'est bon, j'ai trouvé (voir EDIT du premier post)
THX !
Par Tyn' le 9/9/2002 à 21:01:57 (#2128489)
Par znog32 le 9/9/2002 à 21:09:43 (#2128554)
Par Cassin le 10/9/2002 à 8:37:39 (#2130257)
Merci les gars, c'est vrai que ça fait mauvais effet... ;)
JOL Archives 1.0.1
@ JOL / JeuxOnLine