• 05 Juillet 2025, 18:59:32


Auteur Sujet: [Demande Aide] Ushort  (Lu 1550 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
[Demande Aide] Ushort
« le: 16 Février 2014, 11:49:38 »
Bonjour :) Je recréé un topic afin que les personnes puisse tombés sur le sujet spécifique à ma question qui je pense devrais intéressés pas mal de scripteurs confirmés :)

J'ai regardé les sources de mapandreas afin d'en connaitre un peu plus sur le classement de données, et j'ai vu que les données ne contiennent en réalités que les positions Z codés grâce à l'utilisation de ushort

pour être plus concrés, les données sont stockés ainsi 

X+3000;
(Y-3000)*-1;
data = (Y*6000) + X;


En utilisant cet outils existe-t-il une faille au niveau des valeurs ? des limites ?

Ainsi le plugin MapAndreas ne peut ressortir que la valeur Z en fonction de X et Y mais pourrait on par exemple ressortir la position X et Y en fonction de ce chiffrages ?


[Ce topic est en relation avec mon premier topic concernant la programmation d'une IA.]


A+, Sam.
:cheers:

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Ushort
« Réponse #1 le: 16 Février 2014, 14:08:25 »
J'ai pas très bien compris ce que tu voulais, mais je vais quand même essayer de t'expliquer le fonctionnement de MapAndreas.

Alors, MapAndreas stock toute les coordonnées Z dans un tableau à une dimension, de 72000000 octets (~68.6 méga octets).

Donc, la normalement si on connait un peu le plugin MapAndreas, on va se dire mais comment un tableau à une dimension peut servir à stocker la position Z selon X et Y.
Le plus logique serai d'utiliser un tableau à deux dimension.
Oui, mais on peut quand même utiliser un tableau à une dimension pour cela car au niveau mémoire, ces deux lignes sont exactement les mêmes.

Code: (c) [Sélectionner]
unsigned short m_pPointData[6000][6000];
unsigned short m_pPointData[6000*6000];

La seule différence est la façon d'accéder aux données, par exemple pour accéder à X, Y.

Code: (c) [Sélectionner]
m_pPointData[X][Y];
m_pPointData[X * 6000 + Y]; // (Par contre Kye, a inversé X et Y) c'est pour cela qu'il multiplie Y par 6000

Il n'existe pas de faille au niveau des valeurs (si tu parle de sortir de la limite du tableau) car, juste avant il vérifie que les valeurs sont bonnes.

Code: (c) [Sélectionner]
if(X < -3000.0f || X > 3000.0f || Y > 3000.0f || Y < -3000.0f) return 0.0f;
Et ensuite ces calculs la

Code: (c) [Sélectionner]
int iGridX = ((int)X) + 3000;
int iGridY = (((int)Y) - 3000) * -1;

ne servent qu'à faire en sorte que X et Y commencent à 0 car elles peuvent être négative et permettent d'arrondir à l'inférieur, pour qu'ensuite on puisse accéder à la bonne valeur de Z dans le tableau.

Par exemple :

X = -2999.7894, sera transformé en 0
X = 1500.897, sera transformé en 4500

Y = -2.549, sera transformé en 3002.
Y = 3000, sera transformé en 0.


J'espère que j'aurai répondu à quelques une de tes question car je suis pas sûr que ce soit ce que tu ai demandé.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Ushort
« Réponse #2 le: 16 Février 2014, 14:33:02 »
Salut,

Merci pour ta réponse, oui c'est déjà un peu claire, surtout sur le fonctionnement, parce qu'entre le 3000 et 6000 etc.. c'est le delire x)

mais en utilisant ce principe on ne pourrait pas ressortir le X et Y ?

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Ushort
« Réponse #3 le: 16 Février 2014, 14:44:59 »
Le truc c'est qu'il y a plusieurs solution de X et Y pour un Z.
Donc on pourrai ressortir toute les positions ayant un Z particulier mais pas un seul (sauf s'il est unique)



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog