calcule de la mapid

Inscrit
28 Mai 2016
Messages
34
Reactions
1
#1
hey ! voila j'ai un problème je ne comprend pas le calcule que fait ces codes la pour trouver la position X et Y d'une map par rapport au Mapid si qq pourrait éclairer ma lanterne

Code:
   public int X
        {
            get
            {
                m_x = (Id & 0x3FE00) >> 9; // 9 higher bits
                if ((m_x & 0x100) == 0x100) // 9th bit is the sign. 1 means it's minus
                {
                    m_x = -(X & 0xFF); // just take the 8 first bits and take the opposite number
                }
                return m_x.Value;
            }
        }

        public int Y
        {
            get
            {
                m_y = Id & 0x01FF; // 9 lower bits
                if ((m_y & 0x100) == 0x100) // 9th bit is the sign. 1 means it's minus
                {
                    m_y = -(X & 0xFF); // just take the 8 first bits and take the opposite number
                }
                return m_y.Value;
            }
        }
 
Inscrit
28 Mai 2016
Messages
34
Reactions
1
#3
nan j'arrive pas a comprendre ces lignes

Code:
m_x = (Id & 0x3FE00) >> 9; // 9 higher bits
                if ((m_x & 0x100) == 0x100) // 9th bit is the sign. 1 means it's minus
                {
                    m_x = -(X & 0xFF); // just take the 8 first bits and take the opposite number
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#4
Avec les commentaires c'est difficile de faire mieux.
 
Inscrit
28 Mai 2016
Messages
34
Reactions
1
#5
oui mais genre avec un id au pif 84608476 il va renvoyer quoi a la fin ? et dans se code le "X" est égale a quoi ?
C#:
m_x = -(X & 0xFF);
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#6
Je ne peux pas te donner de valeur de retour mais X correspond à la variable qui englobe la propriété que tu traite.
C#:
public int X
 
Inscrit
28 Mai 2016
Messages
34
Reactions
1
#7
ok ok :D et qq sait comment traduire le code du sujet en AutoIT ?
 
Inscrit
28 Mai 2016
Messages
34
Reactions
1
#8
Je crois que je commence a comprendre un peu pres le code mais a la fin il renvoit quoi ? True, False ou un int ? Et que veut dire le .value a la fin ? Désolé je suit un noob dans ce language
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#9
Il renvoi un entier forcément puisque X est un entier... Value renvoi la valeur de l objet, ici m_x.

Bon serieusement on va pas vulgariser a chaque fois, ca tombe sous le sens de plus tu as la doc pour t'aider
 
Inscrit
4 Aout 2016
Messages
166
Reactions
0
#10
Hum si tu décide de te lancer dans ce genre de "projets" laisse tombé autoit :)
 
Inscrit
28 Mai 2016
Messages
34
Reactions
1
#11
Il renvoi un entier forcément puisque X est un entier... Value renvoi la valeur de l objet, ici m_x.

Bon serieusement on va pas vulgariser a chaque fois, ca tombe sous le sens de plus tu as la doc pour t'aider
Désolé mais comme j'ai dit je suis un noob et je suis la pour apprendre de plus je n'arriver pas a comprendre la doc entièrement ^^ mais je vais laisser tomber le calcule je vais pas vous embêter plus
Hum si tu décide de te lancer dans ce genre de "projets" laisse tombé autoit :)
nan je laisserait pas tomber autoit ^^ mais tkt je laisse tomber le calcule et je vais faire un référencement automatique du X,Y par rapport au mapid
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#12
Tu devrais pas abandonner pour si peut, en autoit si je me souviens bien tu n´a pas directement d´opérateur sur les byte ( "<<" , "&") il faut utiliser les fonctions BitAND et BitSHIFT sa fais tellement longtemps que j´ais pas toucher autoit je te ferais pas un exemple mais franchement rien de plus simple
 
Inscrit
4 Aout 2016
Messages
166
Reactions
0
#13
Mais ouais, sinon tu fait un enum qui associe chaque coords à une mapId
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#14
... C´est une idée a la c** sa va prendre une blinde de ram pour rien
 
Inscrit
28 Mai 2016
Messages
34
Reactions
1
#16
Tu devrais pas abandonner pour si peut, en autoit si je me souviens bien tu n´a pas directement d´opérateur sur les byte ( "<<" , "&") il faut utiliser les fonctions BitAND et BitSHIFT sa fais tellement longtemps que j´ais pas toucher autoit je te ferais pas un exemple mais franchement rien de plus simple
merci ! du coup grâce a toi j'ai résolut une partie mais je bloque pour le Y
la map est 84805126 = -3 -16
Il me renvoit bien -3 en X
mais 6 en Y why ?
Code:
#include <MsgBoxConstants.au3>
$m_x = 0
X()
Func X()



                $m_x = BitAND(84805126 , 0x3FE00); // 9 higher bits
                $m_x = BitShift($m_x,9)

                if BitAND($m_x, 0x100) == 0x100 Then  ;9th bit is the sign. 1 means its minus

                    $m_x = -BitAND( $m_x,0xFF); // just take the 8 first bits and take the opposite number

Return $m_x
                EndIf


EndFunc


$m_y = 0
Y()
Func Y()



                $m_y = BitAND(84805126 , 0x01FF); // 9 higher bits

                if BitAND($m_y, 0x100) == 0x100 Then  ;9th bit is the sign. 1 means its minus

                    $m_y = -BitAND( $m_y,0xFF); // just take the 8 first bits and take the opposite number

Return $m_y
                EndIf

EndFunc
MsgBox($MB_SYSTEMMODAL, "Title", $m_x & "   " & $m_y, 10)
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#18
... un emu? ( lol )

merci ! du coup grâce a toi j'ai résolut une partie mais je bloque pour le Y
la map est 84805126 = -3 -16
Il me renvoit bien -3 en X
mais 6 en Y why ?
Code:
#include <MsgBoxConstants.au3>
$m_x = 0
X()
Func X()



                $m_x = BitAND(84805126 , 0x3FE00); // 9 higher bits
                $m_x = BitShift($m_x,9)

                if BitAND($m_x, 0x100) == 0x100 Then  ;9th bit is the sign. 1 means its minus

                    $m_x = -BitAND( $m_x,0xFF); // just take the 8 first bits and take the opposite number

Return $m_x
                EndIf


EndFunc


$m_y = 0
Y()
Func Y()



                $m_y = BitAND(84805126 , 0x01FF); // 9 higher bits

                if BitAND($m_y, 0x100) == 0x100 Then  ;9th bit is the sign. 1 means its minus

                    $m_y = -BitAND( $m_y,0xFF); // just take the 8 first bits and take the opposite number

Return $m_y
                EndIf

EndFunc
MsgBox($MB_SYSTEMMODAL, "Title", $m_x & "   " & $m_y, 10)
montre le code originale du y mais bon tu a compris l´idée je pense que tu peut trouver tout seule
 
Inscrit
28 Mai 2016
Messages
34
Reactions
1
#19
Nan mais enfin.. Pas complètement l'inverse mais je fait un bot non socket ou mitm ou détection de pixel
Sa fait 1h je cherche je trouve pas pourtant tout a l'air bon..

public int Y
{
get
{
m_y = Id & 0x01FF; // 9 lower bits
if ((m_y & 0x100) == 0x100) // 9th bit is the sign. 1 means it's minus
{
m_y = -(X & 0xFF); // just take the 8 first bits and take the opposite number
}
return m_y.Value;
}
}
 
Haut Bas