La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 18:23:52


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Orkamungus
Acolyte
Inscrit le: 11 Nov 2006
Messages: 36
Répondre en citant
Posté le : 23/11/2006 18:56:31 Sujet du message : Problème avec un script de Taverne

Bonjour à tous et toutes.

Voila, je viens ici pour vous demander de l'aide sur un script de chaise dans une taverne que j'ai fait. En fait je veux que quand le pc s'assied sur une table, une serveuse viens le voir pour lui demander ce qu'il veut. En fait j'ai fait que pour une serveuse, mais je ferais après pour plusieurs serveuses.

En fait mon problème vient que, quand le pc s'assied la serveuse vient mais le dialogue ne se déclanche pas du fait que le pj est assis. Je ne sais pas comment faire pour que le dialogue se déclanche quand même. Si quelqu'un à une idée, je lui serais reconnaisant de me la faire parvenir.

Donc voici le script :

NWScript :
void main()
{
    object oPC = GetLastUsedBy ();
    object oChair = OBJECT_SELF;

    AssignCommand(oPC, ClearAllActions());

    if (GetIsObjectValid(oChair))
        {
        AssignCommand(oPC, ActionSit(oChair));
        }
            object oServ = GetNearestObjectByTag ("Serveuse");
            if (IsInConversation(oServ))
            {
                }
                else
                {
                AssignCommand (oServ, ActionMoveToObject(oPC));
                DelayCommand (1.0, AssignCommand (oPC, ActionStartConversation (oServ, "aub_dial", FALSE, TRUE)));
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Merci et a bientôt
Orkamungus.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Orkamungus
Acolyte
Inscrit le: 11 Nov 2006
Messages: 36
Répondre en citant
Posté le : 25/11/2006 12:53:23 Sujet du message :

Bonjour.

Voila, n'ayant eu de réponse, j'ai essayer de résoudre mon problème seul. Maintenant, le dialogue s'enclenche, seulement le pj se lève. Donc j'ai essayer de le faire rassoir. le problème est qu'il s'assoie n'importe comment. Au début il est normalement assis, ensuite il s'assoie sur le côté de la chaise.

voici le script modifié

NWScript :
void main()
{
    object oPC = GetLastUsedBy ();
    object oChair = OBJECT_SELF;

    AssignCommand(oPC, ClearAllActions());

    if (GetIsObjectValid(oChair))
        {
        AssignCommand(oPC, ActionSit(oChair));
        }
            object oServ = GetNearestObjectByTag ("Serveuse");
            string sChair = GetTag (oChair);
            if (IsInConversation(oServ))
            {
                }
                else
                {
                AssignCommand (oServ, ActionMoveToObject(oPC));
                DelayCommand (1.0, AssignCommand (oServ, ActionStartConversation (oPC, "aub_dial", FALSE, TRUE)));
                DelayCommand (2.0, AssignCommand (oPC, ActionSit (oChair)));
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Voila, merci d'avance pour vos aides.
Orkamungus
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
PsyCalimero
Ecuyer
Inscrit le: 17 Jan 2006
Messages: 44
Répondre en citant
Posté le : 25/11/2006 12:59:19 Sujet du message :

Côté NWN2 j'ai trouvé ça :


Djezebel a écrit :
Et le voici :

NWScript :
void main() {
  object oChair = OBJECT_SELF; // "moi la chaise"
  object oPC = GetLastUsedBy(); //"celui qui m'utilise s'appelle "oPC" "

  location lLoc = Location(GetArea(oChair),
      GetPosition(oChair), GetFacing(oChair) + 180); // on fait en sorte que le dossier soit bien dans le dos

  AssignCommand(oPC,JumpToLocation(lLoc));
  PlayCustomAnimation(oPC,"sitidle",1);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
Vois si ca marche... Enfin ajoute le a ton script.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Orkamungus
Acolyte
Inscrit le: 11 Nov 2006
Messages: 36
Répondre en citant
Posté le : 25/11/2006 14:02:21 Sujet du message :

Merci pour ta réponse.

En fait, le script ne marche toujours pas, se lève mais ne se rassier pas (j'ai du enlever la dernière ligne qui ne compilait pas).

le script donnant ca :

NWScript :
void main()
{
    object oPC = GetLastUsedBy ();
    object oChair = OBJECT_SELF;

    if (GetIsObjectValid(oChair))
        {
        AssignCommand(oPC, ActionSit(oChair));
        }
            object oServ = GetNearestObjectByTag ("Serveuse");
            if (IsInConversation(oServ))
            {
                }
                else
                {
                DelayCommand (1.0, AssignCommand (oServ, ActionMoveToObject(oPC)));
                AssignCommand (oServ, ActionStartConversation (oPC, "aub_dial", FALSE, TRUE));
                location lLoc = Location(GetArea(oChair),
                GetPosition(oChair), GetFacing(oChair) + 180); // on fait en sorte que le dossier soit bien dans le dos

                AssignCommand(oPC,JumpToLocation(lLoc));
                AssignCommand(oPC, ActionSit(oChair));
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



Voila, j'ai aussi essayer en changeant cette ligne :

NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


par :

NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Et aussi en rajoutant des "DelayCommand".

Le script donne donc ca :

NWScript :
void main()
{
    object oPC = GetLastUsedBy ();
    object oChair = OBJECT_SELF;

    if (GetIsObjectValid(oChair))
        {
        AssignCommand(oPC, ActionSit(oChair));
        }
            object oServ = GetNearestObjectByTag ("Serveuse");
            if (IsInConversation(oServ))
            {
                }
                else
                {
                DelayCommand (1.0, AssignCommand (oServ, ActionMoveToObject(oPC)));
                AssignCommand (oServ, ActionStartConversation (oPC, "aub_dial", FALSE, TRUE));
                location lLoc = Location(GetArea(oChair),
                GetPosition(oChair), GetFacing(oChair) + 180); // on fait en sorte que le dossier soit bien dans le dos

                DelayCommand (4.0, AssignCommand(oPC,ActionMoveToObject (oChair)));
                DelayCommand (5.0, AssignCommand(oPC, ActionSit(oChair)));
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Seulement, j'ai mit la serveuse plus loin que dans les autres tests. En fait, si la serveuse n'est pas arrivé avant 4 secondes, c'est raté, le pc ne s'assiera pas.

Donc je sais pas si vous avez une idée ?

merci d'avance.
Orkamungus
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
PsyCalimero
Ecuyer
Inscrit le: 17 Jan 2006
Messages: 44
Répondre en citant
Posté le : 25/11/2006 14:26:00 Sujet du message :

NWScript :
object oServ = GetNearestObjectByTag ("Serveuse");
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Nearest signifie en anglais : le plus proche. Quand tu places ta serveuses à plus de 4 sc il y a un tag différent plus proche... Mais ya rien qui s'approche? une chaise ou un truc comme ca?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Orkamungus
Acolyte
Inscrit le: 11 Nov 2006
Messages: 36
Répondre en citant
Posté le : 25/11/2006 14:33:07 Sujet du message :

Non, juste la serveuse qui arrive en courant pour me demander ce que je veut boire, le problème est que après le pj ne s'assoie pas.

Orkamungus.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
PsyCalimero
Ecuyer
Inscrit le: 17 Jan 2006
Messages: 44
Répondre en citant
Posté le : 25/11/2006 18:22:31 Sujet du message :

Voici un script qui fonctionne :

NWScript :
void main()
{
object oPC = GetLastUsedBy ();
object oChair = OBJECT_SELF;

object oServ = GetNearestObjectByTag ("Serveuse");
if (IsInConversation(oServ))
{
}
else
{
DelayCommand (0.0, AssignCommand (oServ, ActionMoveToObject(oPC)));
AssignCommand(oServ, ActionStartConversation(oPC, "tondialogue"));
DelayCommand (10.0, AssignCommand(oPC, ActionSit(oChair)));

}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Change simplement le délai dans
NWScript :
DelayCommand (10.0, AssignCommand(oPC, ActionSit(oChair)));
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
De mannière à ce qu'il soit supérieur au temps que met la serveuse à venir te parler. Une seconde devrait suffire, mais après... c'est à calculer.
Sinon là part défaut, la serveuse va venir, et au bout de 10sc le pj s'assoit...
A modifier donc !
Bon courage
Dernière édition par PsyCalimero le 25/11/2006 20:24:11; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Orkamungus
Acolyte
Inscrit le: 11 Nov 2006
Messages: 36
Répondre en citant
Posté le : 25/11/2006 19:29:31 Sujet du message :

Salut

J'ai essayer en mettant un "SetLocalString" sur un objet que la serveuse possède. et ensuite en mettant dans la dernière phrase du dialogue un deuxième script ou le pc va s'assoir sur la chaise par rapport a ce LocalString, mais le pc ne va toujours pas s'assoir.
Voici les scripts :

Celui dans le OnUsed de la chaise :

NWScript :
void main()
{
    object oPC = GetLastUsedBy ();
    object oChair = OBJECT_SELF;
    string sChair = GetTag (oChair);
    if (GetIsObjectValid(oChair))
        {
        AssignCommand(oPC, ActionSit(oChair));
        }
            object oServ = GetNearestObjectByTag ("Serveuse");
            object oChairPC = GetItemPossessedBy (oServ, "chaise_pj");
            if (IsInConversation(oServ))
            {
                }
                else
                {
                SetLocalString(oChairPC, sChair, "Chair_PC");
                DelayCommand (2.0, AssignCommand (oServ, ActionMoveToObject(oPC)));
                DelayCommand (3.0, AssignCommand (oServ, ActionStartConversation (oPC, "aub_dial", FALSE, TRUE)));

}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Celui dans l'action conséquente du dialogue :

NWScript :
void main()
{
object oPC = GetPCSpeaker();
object oServ = GetNearestObjectByTag ("Serveuse");
object oChairPC = GetItemPossessedBy (oServ, "chaise_pj");
string sChair = GetLocalString(GetObjectByTag ("chaise_pj"), "Chair_PC");
object oChair = GetNearestObjectByTag (sChair);
AssignCommand(oPC, ActionSit(oChair));
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Voila, je ne vois pas d'erreur, mais pourtant il y en a une. Quelqu'un la voit ?

Merci d'avance.
Orkamungus
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 20/01/2007 04:17:19 Sujet du message :

sur ton deuxième script, sans être un pro je peux te dire que tu identifie mal tes variables.


essai avec ca comme conséquence du dialogue^^


NWScript :
void main()
{
object oPC = GetPCSpeaker();
object oServ = GetNearestObjectByTag ("Serveuse");
//object oChairPC = GetItemPossessedBy (oServ, "chaise_pj");
//string sChair = GetLocalString(GetObjectByTag ("chaise_pj");
object oChair = GetNearestObjectByTag ("chaise_pj");
AssignCommand(oPC, ActionSit(oChair));
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 70.884ms