Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Prob ...
Probleme de script pour une porte a acces privé
Par Elminf le 26/7/2002 à 2:24:20 (#1860523)
// par Lumina
// 26 juillet 2002
// version 0.2 #2
void main()
{
string sFullName = "Lumina Rêve Cur";
string sName = "Lumina";
object oPC = GetLastUsedBy();
if (GetIsPC(oPC) && (GetName(oPC) == sFullName))
{
object oDoor = OBJECT_SELF;
if (GetLocalInt(oDoor, "IsInside") == TRUE)
{
SpeakString("tu entres ..");
AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetWaypointByTag("out_"+sName))));
SetLocalInt(oDoor, "IsInside", FALSE);
}
else
{
SpeakString("tu sorts ..");
AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetWaypointByTag("in_"+sName))));
SetLocalInt(oDoor, "IsInside", TRUE);
}
}
}
Alors si quelqu'un pouvait me dire ce qui cloche ? pke kan le gars arrive bin la porte elle est "locked" normal mais ya pas de teleportation de l'autre cote .... G mis des waypoint avec in_Lumina et out_Lumina de chaqyue cote de la porte ....
Alors est ce que c le script qui apparement ne s'applique pas ou quelque chose que j'ai oublier / enlever /pas mis ...
Merci de me renseigner.... et si mes explication ne sont pas claires ( qui a dit jamais ? :doute: ... :D ) regarder juste le scripts merci
Par Lumina le 26/7/2002 à 2:29:08 (#1860531)
2) il manque l'entete du script, là ou je marque : "version alpha non testée" ;)
En tout cas, ce qui semble se passer, c'est que le script ne se lance pas puisque les messages "vous entrez" et "vous sortez" ne s'affichent pas tu me dis ... donc pour résoudre le problème, c'est de savoir où placer le script ? Ici, je pensais qu'il fallait le mettre dans OnUse, mais il faut peut-etre le mettre ailleurs ...
ps : je n'ai pas testé moi-meme ce script malheureusement
Par Kemay le 26/7/2002 à 2:36:35 (#1860548)
string sName = "Lumina";
un peu plus loin...
AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetWaypointByTag("out_"+sName))));
etAssignCommand(oPC, ActionJumpToLocation(GetLocation(GetWaypointByTag("in_"+sName))));
et pour finir.... G mis des waypoint avec in_Elminf et out_Elminf de chaqyue cote de la porte ....
Peut être qu'en renommant les tags de tes waypoints in_Lumina
et out_Lumina... ;)
Par Elminf le 26/7/2002 à 2:39:09 (#1860555)
Par Lumina le 26/7/2002 à 2:40:22 (#1860559)
"Lumina" c'est juste pour l'exemple. :)
En fait, on cherche un testeur/correcteur pour aider Elminf puisque moi je ne peux pas effectuer les tests.
Par Kemay le 26/7/2002 à 2:44:09 (#1860576)
if (GetIsPC(oPC) && GetName(oPC)==sName)
[EDIT]Bah à taper trop vite...[/EDIT]
Par Kemay le 26/7/2002 à 2:59:56 (#1860617)
Par Elminf le 26/7/2002 à 3:06:24 (#1860635)
Edit : essai demain apres taf la trop crever merci kan meme j'espere que chez moi ca marchera lol :D
Par Kemay le 26/7/2002 à 3:13:30 (#1860652)
Cela dit j'ai testé avec un placeable, pas avec une porte. Je viens de remarquer que ca peut poser un problème.
je réessaie avec une porte
Par Kemay le 26/7/2002 à 3:33:26 (#1860705)
Ok finalement ça marche. Alors premier truc, une porte n'a pas d'event onUsed, il faut ici utiliser l'event onFailedToOpen.
A propos de GetName() j'avais tort, cela renvoie le Nom complet du perso "prénom nom_de_famille". (*tousse*Comme un blaireau j'avais testé avec un perso qui avait pas de nom de famille*tousse*)
On obtient l'objet qui a lancé le script par la fonction GetClickingObject().
Donc le script au final ://A placer dans l'event onFailedToOpen de la porte
void main()
{
string sFullName = "Lumina Rêve Cur";
string sName = "Lumina";
object oPC = GetClickingObject();
if ( GetIsPC(oPC) && GetName(oPC)==sFullName )
{
object oDoor = OBJECT_SELF;
if (GetLocalInt(oDoor, "IsInside") == TRUE)
{
AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetWaypointByTag("out_"+sName))));
SetLocalInt(oDoor, "IsInside", FALSE);
}
else
{
AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetWaypointByTag("in_"+sName))));
SetLocalInt(oDoor, "IsInside", TRUE);
}
}
}
[/EDIT]
Par Lumina le 26/7/2002 à 3:49:07 (#1860733)
Et sinon, c'est bizarre cet evenement "onFailToOpen", il n'est pas documenté la dessus :
http://vnfiles.ign.com/nwn/other/Gazzar08NWN_Script_Events_Ref.pdf
Je me demande aussi pourquoi le OnUse ne fonctionne pas sur une porte ! Ca doit etre un bug encore .. mais as-tu essayé "GetClickingObject()" eventuellement ?
[edit]
arf ... tu as édité toutes tes erreurs juste avant ;)
merci pour tout. :)
Par Elminf le 26/7/2002 à 22:34:24 (#1865347)
Par Elminf le 28/7/2002 à 2:03:00 (#1868775)
Si je lock la porte bin le gars me dit que la porte est locked... si la lock pas sa me fait une transition normale et va dans la piece meme si c pas le perso avec le nom qui est donner dans le script .... Alors si kelkun veut bien m'aider ... veut bien filer le mod pour travailler sur du concret et voir là où il y a faute pleaz help me :D
Par Kemay le 28/7/2002 à 3:09:35 (#1868969)
Il faut juste que tu édites les choses suivantes dans le mode pour que ca marche.
dans le script door :
- remplacer string sFullName; par string sFullName = "Prénom Nom";
-remplacer string sName; par string sName = "Prénom"
Remplacer les tags des waypoints in_ et out_ par in_Prénom et out_prénom
Voilà je t'envoie le module par e-mail
[EDIT]mmmmh c'est quoi ton e-mail ? :p[/EDIT]
Par Elminf le 28/7/2002 à 3:59:01 (#1869146)
florian_flex@yahoo.fr
Elmfin@netscape.net
Voili voila et merci d'avance ...:p :merci:
Vec un _ entre flo et flex.... dsl gt entrain de bosser sur le module de didiou de didiou ... :p
Sinon autre question j'essai de faire un signpost cacher kom pour les trap et les porte ... pour celle la g recuperer les scripts sur le site de Bioware mais le signpost j'essai de bidouiller et je trouve pas ...
Par Kemay le 28/7/2002 à 20:52:05 (#1869354)
Je t'envoie ça tout de suite.
JOL Archives 1.0.1
@ JOL / JeuxOnLine