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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Probleme de script pour une porte a acces privé

Par Elminf le 26/7/2002 à 2:24:20 (#1860523)

// porte a acces prive
// par Lumina
// 26 juillet 2002
// version 0.2 #2


void main()
{
string sFullName = "Lumina Rêve Cœur";
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)

1) le titre n'est pas clair
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))));

et
AssignCommand(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)

non c quant fait la j'ai retranscrit le scripts de lumina puis sur mon module j'ai essayer avec un perso a moi Elminf et g changer ds les lignes avant ... mais bon la jai editer ... dsl :D

Par Lumina le 26/7/2002 à 2:40:22 (#1860559)

Oui, en fait, il a mis partout le nom d'Elminf pour que ça corresponde a son personnage :)
"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)

Je sais pas si GetName renvoie le "full name". Tu as essayé avec la condition

if (GetIsPC(oPC) && GetName(oPC)==sName)

[EDIT]Bah à taper trop vite...[/EDIT]

Par Kemay le 26/7/2002 à 2:59:56 (#1860617)

Je viens de tester, ça marche. La fonction GetName() retourne juste le prénom pas le nom complet.

Par Elminf le 26/7/2002 à 3:06:24 (#1860635)

Donc il y a teleportation du perso ? avec la ligne que tu a changer ?

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)

oui le script ne s'exécutait pas avec ta version parceque la condition if GetName(oPC) == sFullName était toujours fausse.

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)

[EDIT]
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 Cœur";
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)

Arf, si le GetName ne verifie que le prenom (c'est bizarre :doute: )

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)

:merci: :merci: :merci: Men vai lessayer ds pas longtemps encore :merci: de la QUICHE SUPREME !!! :D

Par Elminf le 28/7/2002 à 2:03:00 (#1868775)

Bin j'y arrive toujours pas .... J'ai mis les waypoint ... g mis le scripts ds le onFailedToOpen ...
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)

ok je t'envoie un module de base avec deux pièce reliés par une porte que seul un personnage ayant pour nom le nom que tu choisis peut franchir.

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)

Je t'ai mis un MP mais bon si tu l'as pas eu mes mails sont
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)

oups désolé, j'ai eu des problèmes de connections :(
Je t'envoie ça tout de suite.

JOL Archives 1.0.1
@ JOL / JeuxOnLine