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 27/11/2024 17:17:42
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 |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Salut tout le monde.
Dites, vous savez pas si y a une fonction qui donne la taille d'une area ? C'est pour générer un vecteur aléatoire : je voudrais connaître la taille de la zone pour ne pas que mes vecteurs dépassent cette taille en question _________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Voici une solution que j'ai imaginé dont je ne peux malheureusement garantir le fonctionnement absolu. Car après observation, il semble bien que la valeur 519 renvoyée par GetTileSourceLight1 lorsqu'on se trouve aux dela des coordonnées limites d'une zone soit une constante. Mais ce n'est qu'une observation et non une démonstration. Donc, il faudra sans doute le tester pour différent Tilseset et réglage pour être sur.
A noter que la taille retournée est en Tile (32x32 étant le maximum) et ne tient nullement compte de l'occupation. Voici deux fonctions, l'une pour la taille en X et l'autre pour la taille en Y. Si on veux avoir la taille de la zone en unité de mesure des vecteurs de "location", il suffit de multiplier par 10. Code : int GetAreaXDim(object oArea) { int nX; int nEnd; location lLoc; vector vPos; nEnd=FALSE; while ((nX<=31) && (!nEnd)) { vPos=Vector(IntToFloat(nX), 0.0, 0.0); lLoc=Location(oArea, vPos, 0.0); int nCol=GetTileSourceLight1Color(lLoc); if (nCol==519) { nEnd=TRUE; nX--; } else { nX++; } } return nX+1; } int GetAreaYDim(object oArea) { int nY; int nEnd; location lLoc; vector vPos; nEnd=FALSE; while ((nY<=31) && (!nEnd)) { vPos=Vector(0.0, IntToFloat(nY), 0.0); lLoc=Location(oArea, vPos, 0.0); int nCol=GetTileSourceLight1Color(lLoc); if (nCol==519) { nEnd=TRUE; nY--; } else { nY++; } } return nY+1; } Merci de me rapporter le moindre problème. Comme j'en fais usage, je suis forcément intéressé _________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
C'est bonnard, ça fonctionne impeccable. Bravo à toi, c'était plutôt futé de penser à cette astuce pour calculer la taille de l'area
Je te tiens au courant si je constate de possibles aménagements. _________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
DarkWolf(Pg) Acolyte Messages: 33 |
Je cherche aussi à connaitre la taille de la zone pour générer un verteur aléatoire. Comme d'habitude j'ai bidouiller un truc puis cherche à l'améliorer (ou refaire intégralement) via l'expérience de d'autre personne.
Tu dis : "Si on veux avoir la taille de la zone en unité de mesure des vecteurs de "location", il suffit de multiplier par 10.", est ce que tu pourrasi me dire pourquoi ? Je vais essayer d'améliorer ma sauce en multipliant par 10 (si jamais ça marche ça ne rameras pas du tout, et posterait ici mon astuce). |
Revenir en haut | |
DarkWolf(Pg) Acolyte Messages: 33 |
En fait j'ai trouvé comment faire mes vecteurs aléatoire sans ramer (celà dit l'astuce est beaucoup moins belle et universelle que le script de landraste).
En fait je cré un objet de tag "Centre" (genre les papillons c'est petits et discret) que je place au centre de la zone, je récupère sa position et double les coordonnées en abscisse et ordonné (vu qu'il est au centre, la carte est 2 fois plus grande). Code : void main(){ object oCentre= GetObjectByTag("Centre"); object oArea= GetArea(oPlayer); vector vCentre= GetPosition(oCentre); float x= IntToFloat(Random(FloatToInt(2.0 * vCentre.x))); float y= IntToFloat(Random(FloatToInt(2.0 * vCentre.y))); vector vRand= Vector(x, y, vCentre.z); P.S. Si j'en ai besoin pour plusieurs zone de même tag, un seul objet centre suffit, sinon avec quelques test entre l'aire courrante et celle de l'objet devrait suffire à trouver le "bon centre" |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
DarkWolf(Pg) a écrit : Tu dis : "Si on veux avoir la taille de la zone en unité de mesure des vecteurs de "location", il suffit de multiplier par 10.", est ce que tu pourrasi me dire pourquoi ? Tout simplement parce que mon système rapporte la taille en Tile composant la zone et qu'un Tile fait 10 x 10. Pour le vérifier, il suffit de balader ton curseur sur une zone en conception dans l'éditeur et suivre les indications de la barre de statut. Tu y verras défiler à la fois les coordonnées de location et les coordonnées de Tile (exprimées en rang et en colonne). Plus qu'une observation empirique, cette information figure aussi dans le Lexicon, mais je ne sais plus où._________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
DarkWolf(Pg) Acolyte Messages: 33 |
Ok merci :>>
|
Revenir en haut | |
Daermon Légende vivante Messages: 356 Localisation: Près de 4-1 |
Si il y avait un titre de meilleur scripteur du mois, Lendraste y serait tout le temps !
_________________ "Dans la vie, chacun prend son propre chemin. Mais en fin de compte, on se retrouve tous au même endroit..." |
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