nonpoluant
Inscrit le: 05 Oct 2006
Messages: 14
Posté le: 8/11/2006 18:48 Sujet du message: GetObjectSelf
Salut
Ceux qui connaissaient le script sous NWN1, connaissaient la fonction GetObjectSelf, qui etait tres pratique (pour moi en tout cas)
Je n'arrive pas à la trouver dans NWN2... elle n'existe pu? Par quoi est-elle remplacé??
Sans ça, comment je pourait faire pour résoudre le probleme suivant: J'ai une salle dans laquelle j'ai plein de chaise. Et je veux que chaque chaise possede un scripte qui ordonne à celui qui a cliqué de s'assoir dessus.
Il faut donc que je désigne le mec qui a cliqué: GetLastUsedBy
Il faut aussi que je designe la chaise sur laquelle s'assoir: GetObjectSelf (l'object même qui possede le script) Mais sans cette fonction comment faire???
Tao
Animateur
Inscrit le: 25 Avr 2006
Messages: 184
Localisation: Quelque part en yhgdrazil
Posté le: 9/11/2006 0:36 Sujet du message:
Tu mets ça là où tu énonce tes variables
object oChaise = OBJECT_SELF();
GetObjectSelf ça n'as jamais éxisté :p Mais je te préviens que l'ActionSit déconne pour le moment
Aerandir
Inscrit le: 07 Nov 2005
Messages: 43
Posté le: 9/11/2006 8:45 Sujet du message:
Sinon de souvenir tu peux mettre un même tag à toutes tes chaises et désigner les chaises par un GetObjectByTag.
Bon après je sais pas si c'est très propre de mettre le même tag à toutes les chaises, mais bon du moment que le resref est différent, ça doit pas poser de problème, si ?
-MeteZ-
Inscrit le: 19 Nov 2005
Messages: 85
Localisation: Région Parisienne
Posté le: 9/11/2006 21:26 Sujet du message:
Aerandir -> Si il y a 241 chaises dans le module, tu vas mettre 241 scripts différents ?
On peut mettre un script pour désigner toutes les chaises comme sur nwn1, par contre, Tao à l'air de dire que ActionSit à l'air de mal marcher. J'ai pas vérifié ...
Mars
Inscrit le: 22 Mai 2005
Messages: 218
Localisation: Sur une galaxie lointaine, très lointaine
Posté le: 10/11/2006 0:10 Sujet du message:
non si elles portent toutes le même tag un seul script suffira, par contre il vaudrait mieux utiliser un GetNearestObjectBYTag plutot qu'un GetObjectByTag sinon il ne va pas savoir quelle chaise choisir
Mais bon la solution de Tao est bien plus propre, il faut juste attendre que ActionSit arrete de bugger.
-MeteZ-
Inscrit le: 19 Nov 2005
Messages: 85
Localisation: Région Parisienne
Posté le: 10/11/2006 21:11 Sujet du message:
Bah de toute façon dans cet exemple, ni GetObjectByTag ni GetNearestObjectByTag n'est approprié puisque OBJECT_SELF désignera la chaise.
Tao
Animateur
Inscrit le: 25 Avr 2006
Messages: 184
Localisation: Quelque part en yhgdrazil
Posté le: 10/11/2006 22:50 Sujet du message:
Exactement metez, c'est propre, c'est court, c'est simple, et un script suffit pour tous les placeables :p
nonpoluant
Inscrit le: 05 Oct 2006
Messages: 14
Posté le: 11/11/2006 12:07 Sujet du message:
le probleme, c'est que je le trouve pas dans la liste, votre OBJECT_SELF ...
il y a deux listes, à droite: la liste des fonctions, et la liste appelé "general" dans laquelle tous les noms sont ecrit en majuscules. je trouves des choses du type: OBJECT_TYPE_LIGHT ou OBJECT_TYPE_ENCOUNTER, mais votre OBJECT_SELF je le vois nul part!!
merci de m'eclairer
Mithrandir
Inscrit le: 26 Aoû 2005
Messages: 68
Posté le: 11/11/2006 12:24 Sujet du message:
OBJECT_SELF renvoie l'objet sur lequel le script est placé. Pas besoin de t'embêter à chercher dans la liste à droite, fais comme ils t'ont dis de faire
A savoir
Code: |
void main()
{
object oChaise = OBJECT_SELF;
blablabla
} |
Tao
Animateur
Inscrit le: 25 Avr 2006
Messages: 184
Localisation: Quelque part en yhgdrazil
Posté le: 11/11/2006 13:22 Sujet du message:
Merci Mithr :p en fait OBJECT_SELF n'est ni une fonction ni une constante, c'est pour ca que tu ne le trouve pas, c'est comme if, else, else if, et autres :p
nonpoluant
Inscrit le: 05 Oct 2006
Messages: 14
Posté le: 11/11/2006 14:53 Sujet du message:
ok... faut l'savoir quand meme!
Je vous assure que dans le premier neverwinter, il y avait la fonction: GetObjectSelf(), je l'utilisais tout le temps!
Sularix
Inscrit le: 16 Avr 2006
Messages: 185
Posté le: 11/11/2006 16:12 Sujet du message:
cette function n existe pas cherchez dans le lexicon si vous l avez telecharge (le lien est mort)
void main()
{
object oPlayer = GetLastUsedBy();
object oChair = OBJECT_SELF;
if (GetIsPC(oPlayer))
{
if (GetIsObjectValid(oChair) && !GetIsObjectValid (GetSittingCreature(oChair)))
{
AssignCommand(oPlayer, ActionSit(oChair));
}
}
}
Mithrandir dit vrai ^^.
Tao
Animateur
Inscrit le: 25 Avr 2006
Messages: 184
Localisation: Quelque part en yhgdrazil
Posté le: 11/11/2006 16:29 Sujet du message:
Voui sauf que en fait, ton script est bon sul, mais la fonction actionsit déconne, donc en jeu ca ne marchera pas ... la seule magouille qui semble fonctionner ( car les animations aussi sont foireuses ) est de téléporter le joueur dans le placeable, de le faire s'orienter dans le meme sens que le placeable et de forcer le modele a jouer l'animation assise ( trouvable dans les 2das ) en boucle, esperons que la 1.03 corrige ça parce que c'est assez folklo la :p