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 01/11/2024 11:42:39
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 |
Macadam Grand Chevalier Messages: 132 |
Posté le : 19/04/2006 18:33:50 Sujet du message : Fonctions de positions d'objets par rapport à d'autre
ces fonctions permettent de vous faire gagner du temps en calcul en tous genre pour positionner par exemple, un objet par rapport à un autre, faire aller un PNJ à un endroit precis en rapport à tel objet, positionner deux placeables etc.
On peut aussi encore améliorer pour pouvoir jouer indépendamment sur l'un des deux axes x et y. Ainsi on pourrait placer une lampe sur un bureau etc via script n'importe ou sur une meme map. Excusez moi par contre, il s'agit des versions non commentées. 1 - pour placer un objet en face d'un autre à une certaine distance ex : je m'en sert pour placer la cible (waypoint) d'une arme de siege On peut meme envisager de faire pivoter l'objet par rapport à l'autre (alpha). Code : location DirectVersObjet (object oObjet, float nDistance , float nHauteur, float alpha) { vector v = GetPosition (oObjet); float angle = GetFacing(oObjet); float sinA = sin(angle); float cosA = cos(angle); if (nHauteur == 0.0 && v.z != 0.0) nHauteur = v.z+0.1; vector v0 = Vector(v.x*cosA,v.y*sinA, nHauteur); v0 = VectorNormalize(v0); vector v1 = Vector(v0.x+v.x, v0.y+v.y,nHauteur); vector vF = Vector(nDistance*cosA+v1.x,nDistance*sinA+v1.y,nHauteur); float beta = angle + alpha; if (beta>360.0) beta-360.0; location lLocObjet = Location(GetArea(oObjet), vF, beta); return lLocObjet; } Remarque : veuillez noter lla ligne : Code : if (nHauteur == 0.0 && v.z != 0.0)
nHauteur = v.z+0.1; ce passage est un debug pour les tilsets qui ont une hauteur de plus de zero au sol^^. ça marche très bien et ça permet de faire apparaitre un placeable sur un rempart. 2 - meme chose mais par rapport à un lieu (peut servir lorsqu'on se sert d'un item qui pointe un endroit precis et pas un objet) Code : ////////////////////////////////////////////////////// location DirectVersLieu (location lTarget, float nDistance , float nHauteur, float alpha) { vector v = GetPositionFromLocation(lTarget); float angle = GetFacingFromLocation(lTarget); float sinA = sin(angle); float cosA = cos(angle); if (nHauteur == 0.0 && v.z != 0.0) nHauteur = v.z+0.1; vector v0 = Vector(v.x*cosA,v.y*sinA, nHauteur); v0 = VectorNormalize(v0); vector v1 = Vector(v0.x+v.x, v0.y+v.y,nHauteur); vector vF = Vector(nDistance*cosA+v1.x,nDistance*sinA+v1.y,nHauteur); float beta = angle + alpha; if (beta>360.0) beta-360.0; location lLocObjet = Location(GetAreaFromLocation(lTarget), vF, beta); return lLocObjet; } 3 - là c'est lorsque l'on veut amener un objet à se deplacer vers un autre (PJ et PNJ) Parfois il faut faire objetA, objetB parfois le contraire pour que ça marche Mais après test ça marche très bien^^ Code : //////////////////////////////////////////////////////// location ObjetaVersObjetb (object ObjetA, object ObjetB, float nDistance) { vector vObjetA = GetPosition(ObjetA); vector vObjetB = GetPosition(ObjetB); vector vDelta = (vObjetA - vObjetB); float Delta = VectorToAngle(vDelta); if(Delta > 360.0) Delta -= 360.0; if(Delta < 0.0) Delta += 360.0; vector vPos = GetPosition(ObjetA); vPos.x =vPos.x + nDistance * cos(Delta); vPos.y =vPos.y + nDistance * sin(Delta); location lLocA = Location(GetArea(ObjetA), vPos,GetFacing(ObjetB)); return lLocA; } voilà à noter que j'ai été fortement inspiré par des choses que j'ai vu dans les trajectoires d'armes de siège (me rappelle plus qui l'a fait mais je vous promet de regarder et d'editer) ainsi que par Azmathiel (c peut etre lui aussi d'ailleurs lol) voir aussi ce topic sur JOL : [http] |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Salut !
Ces scripts sont très intéressants ! Je me permets juste une suggestion : Il y a un message de L'érudit qui s'appelle : " Fonctions utiles" Il serait peut-être bien de regrouper celles-ci avec celles-là ! Ainsi, on pourrait faciliter la recherche ^^ Mais bon, si j'ai un peu de temps, je vais essayer de faire un message en forme de sommaire, afin d'avoir une liste de "scripts types" de façon organisées. A bientôt ! |
Revenir en haut | |
Macadam Grand Chevalier Messages: 132 |
je sais mais bon c'est un peu le souk ce regroupement je trouve pour s'y retrouver, alors qu'un post par script ou fonction comme ça se fait ailleurs c'est quand meme plus simple.
Il faudrait en fait un forum pour les scripts et fonctions à poster et un autre pour les questions. Là un seul topic de regroupage ça sature vite. J'y ai fait un tour et g vite abandonné personnellement:oops: |
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