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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Script serveuse venant à notre chaise, + demande d'aide

Par Shelzard le 27/6/2002 à 3:12:27 (#1717251)

Voilà, j'ai fait un script de serveuse qui vient vous voir quand vous vous asseyez à une chaise dans une taverne.

Vous avez besoin pour ceci, d'une chaise, d'une serveuse, et d'un waypoint nommé WP_Return_xx , où xx est le tag de la serveuse.

Tout d'abord, le script pour la chaise à mettre en OnUsed :

void main()
{
object oPlayer = GetLastUsedBy();
object oChair;
object oNPC = GetObjectByTag ("TAGdelaserveuse",0);
if (GetIsPC(oPlayer))
{
oChair = GetNearestObjectByTag("TAGdelachaise", oPlayer, 0);
if (GetIsObjectValid(oChair) && !GetIsObjectValid (GetSittingCreature (oChair)))
{
if (oNum != 1) {

AssignCommand(oNPC,ClearAllActions());
AssignCommand(oNPC,ActionMoveToObject(oPlayer));
AssignCommand(oNPC,ActionStartConversation(oPlayer));
int oNum = 1;
}
else {
int oNum = 1;
}
AssignCommand(oPlayer, ActionSit(oChair));
}
}
}


Développez une conversation de type marchand ou comme vous sentez avec la serveuse, et mettez ce script dans le End Conversation pour End et Aborted :

void main()
{
ActionMoveToObject(GetNearestObjectByTag("WP_Return_" + GetTag(OBJECT_SELF)));
}



Maintenant voici l'aide que je cherche, il y a un problême, pas dans le script lui même, mais dans NWN. Quand la serveuse vient quand on s'assoit, elle nous fait nous relever, et donc à chaque fois qu'on se rassoit, elle revient, et c'est sans fin...
Je cherche une solution pour que le PJ se rassoit de lui même une fois la conversation finie, ET/OU quand on s'assoit pour la 2e ou millieme fois de la journée que la serveuse ne vienne plus nous parler.

Shelzard

Par tonton le grognon le 27/6/2002 à 8:07:29 (#1717602)

le probleme vient de ta variable oNUM qui devrait faire sauter l'appel à la serveuse au bout de la deuxieme fois... peut-etre que ca passerait mieux en utilisant une variable globale ?


ou peut-etre en utilisant un user-event qui declancherait le "onperceive" de la serveur pour qu'elle vienne au lieu que ce soit la chaise qui "appelle" la serveuse...


je vais tester ca ce soir quand je rentrerais du boulot :)

Par ZeDuckMaster le 27/6/2002 à 9:21:07 (#1717767)

bin deja moi ya un truc qui me chiffone d'un point de vue semantique :
a quoi il sert ton


else {
int oNum = 1;
}

puisque ton test de condition c'est "if (oNum != 1)", donc si la condition n'est pas verifiée oNum==1, et donc je vois pas l'interet de le raffecter ....

sinon je vois le pb de le facon suivante :
le but c'est que la chaise se souvienne que la serveuse est venue (d'ou ton oNum) et se souvienne du joueur qui est venu s'asseoir.
donc si le joueur qui s'assoie est different du joueur precedent qui s'est assis, oNum=0, et donc la serveuse repart ....
d'un certain coté ca peut ne pas etre logique (surtout si un joueur revient a la meme place apres un cours laps de temps)
ce que tu peut aussi faire, en plus de garder le precedent joueur qui s'est assis, c'est de remettre oNum a 0 au cours d'un certain laps de temps (tu stocke en local le moment auquel ca s'est passé et tu compare a chaque utilisation), c'est ce qui me parait le plus realiste ...

sinon encore, si il existe un tag/fonction qui permet de detecter quand le joueur quitte la table (peut etre si la chaise n'est plus le nearest object) tu remet oNum a 0 a ce moment la ...

JOL Archives 1.0.1
@ JOL / JeuxOnLine