La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 22:56:07
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Orkamungus Acolyte Messages: 36 |
Posté le : 10/12/2006 14:52:40 Sujet du message : S'assoir sur un banc en tenant compte de la position du pc
Bonjour à tous et toutes.
Voila, je suis en train de cherche un script pour s'assoir sur un banc peu basique. En fait, ce que je voudrais, c'est que quand le PC arrive par devant, il s'assoie devant, s'il arrive par derrière, il s'assoie derrière. En fait ce serait de 89° à 170°, il s'assoie devant. de 90° à 171°, il s'assoie derrière. Je veux pas un script tout fait mais juste les fonctions à utiliser si quelqu'un à une idée. Merci, @ bientot. Orkamungus. Dernière édition par Orkamungus le 13/12/2006 12:49:57; édité 1 fois
|
Revenir en haut | |
AZAZEL11 Seigneur Messages: 156 |
hmmmm, sans être un pro je te dirais que la seule facon de faire serait de mettre 2 WP (avant et arrière) et d'y mettre la condition du WP le plus proche du pj, ce qui déterminerait l'orientation du pj lorsqu'il s'assit.
Cependant, je ne dit pas qu'il n'y a pas d'autres facons, mais celle là en est une, enfin je crois. _________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
Revenir en haut | |
Orkamungus Acolyte Messages: 36 |
Salut et merci pour ta réponse.
Oui, ca semble être une option, j'essayer de faire avec des vectors mais je me suis cassé la tête dessus. Je vais voir pour cette option et je mettrai des commentaires pour dire l'avancée du script. Merci, @+ Orkamungus |
Revenir en haut | |
Orkamungus Acolyte Messages: 36 |
Bon j'ai fait ca, et ca marche.
Donc en fait il faut faire un objet invisible ayant la possition INVERSE au sens du banc avec comme tag "ARRIERE". script a mettre dans le OnClik. NWScript :
void main() { object oPC = GetPlaceableLastClickedBy(); object oFace = OBJECT_SELF; object oDos = GetNearestObjectByTag ("ARRIERE"); if(GetDistanceBetween(oPC, oFace)<GetDistanceBetween(oPC, oDos) && GetSittingCreature(oFace)==OBJECT_INVALID) { AssignCommand(oPC,ActionSit(oFace)); } if(GetDistanceBetween(oPC, oDos)<GetDistanceBetween(oPC, oFace) && GetSittingCreature(oDos)==OBJECT_INVALID) { AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC,ActionSit(oDos)); } } Voila, j'apporterai des modifs pour améliorer le script pour qu'il n'y ait pas besoin de mettre d'objet en plus que le banc, cependant est ce que tu sais comment faire pour faire pivoter un objet ? Merci pour ton aide et à bientôt. Orkamungus. |
Revenir en haut | |
AZAZEL11 Seigneur Messages: 156 |
voici le void du set du dmfi, la partie qui concerne les placeable qu'on peut faire pivoter
attention, le placeable ne doit pas être statique!!! NWScript : void RotateMe(object oTarget, int Amount, object oUser) { location lLocation = GetLocation (oTarget); if (GetObjectType(oTarget) != OBJECT_TYPE_PLACEABLE) { oTarget = GetNearestObject(OBJECT_TYPE_PLACEABLE, oUser); FloatingTextStringOnCreature("c'est un placeable static ou pas de placeables disponibles " ,oUser ); } if (Amount == -2) { AssignCommand(oTarget, SetFacing(90.0));/// return; } if (Amount == -1) { AssignCommand(oTarget, SetFacing(0.0)); return; } if (GetIsObjectValid(oTarget)) AssignCommand(oTarget, SetFacing(GetFacing(oTarget)+Amount)); } _________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
Revenir en haut | |
Orkamungus Acolyte Messages: 36 |
Salut;
J'ai fait un deuxième script pour qu'il n'y ait besoin de placer que le banc. L'objet apparaît bien (celui qui serat dans la dirrection opposée au banc), seul bémol : le pc ne s'assoie ni d'un côté, ni de l'autre. Je continue à chercher la solution mais elle n'arrive pas. -C'est bon, j'ai trouvé. pour le script voir poste suivant.- Je poste le script pour voir si tu as une idée d'où ca pourrait provenir et je continue mon travail. NWScript :
void main() { object oPC = GetPlaceableLastClickedBy(); object oFace = OBJECT_SELF; object oDos = GetLocalObject(OBJECT_SELF,"ARRIERE"); if(oDos==OBJECT_INVALID) { object oArea = GetArea(OBJECT_SELF); vector vBanc = GetPosition(OBJECT_SELF); float fOrient = GetFacing(OBJECT_SELF); oDos = CreateObject(OBJECT_TYPE_PLACEABLE, "arriere_sit",Location(oArea,vBanc, fOrient), FALSE); SetLocalObject(OBJECT_SELF,"ARRIERE",oDos); AssignCommand (oDos, SetFacing(fOrient+180)); } else if(GetDistanceBetween(oPC, oFace)<GetDistanceBetween(oPC, oDos) && GetSittingCreature(oFace)==OBJECT_INVALID) { AssignCommand(oPC,ActionSit(oFace)); } else if(GetDistanceBetween(oPC, oDos)<GetDistanceBetween(oPC, oFace) && GetSittingCreature(oDos)==OBJECT_INVALID) { AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC,ActionSit(oDos)); } } Merci encore pour ton aide et à bientôt. Orkamungus EDIT : J'ai pas utilisé le void que tu as posté, j'ai trouvé le moyen de faire pivoter l'objet. Dernière édition par Orkamungus le 13/12/2006 12:44:39; édité 1 fois
|
Revenir en haut | |
Orkamungus Acolyte Messages: 36 |
Les deux places étant au même endroit, le pc n'arrive pas à se décider !
Donc voici le script. J'en ai profité pour l'améliorer car si il y a déjà quelqu'un d'assis si le pc clique sur le banc, il a moyen de s'assoir de l'autre côté, et ca fait très bizard... Donc j'ai corrigé ça et tout marche à merveille. Voici le script, à placer dans le OnClick du banc. NWScript :
void main() { object oPC = GetPlaceableLastClickedBy(); object oFace = OBJECT_SELF; object oDos = GetLocalObject(OBJECT_SELF,"ARRIERE"); if(oDos==OBJECT_INVALID) { object oArea = GetArea(OBJECT_SELF); vector vBanc = GetPosition(OBJECT_SELF); float fOrient = GetFacing(OBJECT_SELF); oDos = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_invisobj",Location(oArea,vBanc + AngleToVector(fOrient+1.0f)/10.0f,fOrient),FALSE); SetLocalObject(OBJECT_SELF,"ARRIERE",oDos); AssignCommand (oDos, SetFacing(fOrient+180)); } if(GetIsObjectValid(GetSittingCreature(oFace))) { AssignCommand(oPC, ClearAllActions()); } if(GetIsObjectValid(GetSittingCreature(oDos))) { AssignCommand(oPC, ClearAllActions()); } if(GetDistanceBetween(oPC, oFace)<GetDistanceBetween(oPC, oDos) && GetSittingCreature(oFace)==OBJECT_INVALID && GetSittingCreature(oDos) == OBJECT_INVALID) { AssignCommand(oPC,ActionSit(oFace)); } if(GetDistanceBetween(oPC, oDos)<GetDistanceBetween(oPC, oFace) && GetSittingCreature(oDos)==OBJECT_INVALID && GetSittingCreature(oFace) == OBJECT_INVALID) { AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC,ActionSit(oDos)); } } Voila, @+. Orkamungus |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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