<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://t4ctech.hyperion-roleplay.com/index.php?action=history&amp;feed=atom&amp;title=Algorithme_du_sanctuaire</id>
	<title>Algorithme du sanctuaire - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://t4ctech.hyperion-roleplay.com/index.php?action=history&amp;feed=atom&amp;title=Algorithme_du_sanctuaire"/>
	<link rel="alternate" type="text/html" href="https://t4ctech.hyperion-roleplay.com/index.php?title=Algorithme_du_sanctuaire&amp;action=history"/>
	<updated>2026-07-10T05:45:58Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://t4ctech.hyperion-roleplay.com/index.php?title=Algorithme_du_sanctuaire&amp;diff=48&amp;oldid=prev</id>
		<title>FunJp : Page créée avec « = Calcul du sanctuaire en fonction des coordonnées et vis-versa = Cette page vous expose l&#039;algorithmes de calcul du sanctuaire en fonction des coordonnées et de la récu... »</title>
		<link rel="alternate" type="text/html" href="https://t4ctech.hyperion-roleplay.com/index.php?title=Algorithme_du_sanctuaire&amp;diff=48&amp;oldid=prev"/>
		<updated>2017-04-23T19:48:17Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « = Calcul du sanctuaire en fonction des coordonnées et vis-versa = Cette page vous expose l&amp;#039;algorithmes de calcul du sanctuaire en fonction des coordonnées et de la récu... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Calcul du sanctuaire en fonction des coordonnées et vis-versa =&lt;br /&gt;
Cette page vous expose l&amp;#039;algorithmes de calcul du sanctuaire en fonction des coordonnées et de la récupération des coordonnées en fonction du sanctuaire.&lt;br /&gt;
&lt;br /&gt;
= Reverse =&lt;br /&gt;
Pour la recherche assembleur j&amp;#039;ai effectué une simple recherche sur la valeur 20020 (4E34h) qui est l&amp;#039;identifiant du flag sanctuaire d&amp;#039;un personnage.&lt;br /&gt;
 .text:0041C5BC loc_41C5BC:                             ; CODE XREF: Character::Death(_ATTACK_STRUCTURE *,Unit *)+1279�j&lt;br /&gt;
 .text:0041C5BC                                         ; Character::Death(_ATTACK_STRUCTURE *,Unit *)+1366�j&lt;br /&gt;
 .text:0041C5BC                 mov     edx, [esi]&lt;br /&gt;
 .text:0041C5BE                 push    ebx&lt;br /&gt;
 .text:0041C5BF                 push    4E34h           ; Id du flag sanctuaire (20020 en décimale)&lt;br /&gt;
 .text:0041C5C4                 mov     ecx, esi&lt;br /&gt;
 .text:0041C5C6                 mov     [ebp+var_30], ebx&lt;br /&gt;
 .text:0041C5C9                 call    dword ptr [edx+0Ch] ; Lecture de la valeur contenue dans le flag 20020&lt;br /&gt;
 .text:0041C5CC                 cmp     eax, ebx&lt;br /&gt;
 .text:0041C5CE                 jz      short loc_41C617&lt;br /&gt;
 .text:0041C5D0                 mov     edi, eax&lt;br /&gt;
 .text:0041C5D2                 mov     ebx, eax&lt;br /&gt;
 .text:0041C5D4                 and     eax, 0FFh       ; 255 en décimal&lt;br /&gt;
 .text:0041C5D9                 shr     edi, 14h        ; Decalage des bits vers la droite de 20&lt;br /&gt;
 .text:0041C5DC                 shr     ebx, 8          ; Décalage des bits vers la droite de 8&lt;br /&gt;
 .text:0041C5DF                 push    eax&lt;br /&gt;
 .text:0041C5E0                 and     edi, 0FFFh      ; 4095 en décimal&lt;br /&gt;
 .text:0041C5E6                 and     ebx, 0FFFh      ; 4095 en décimal&lt;br /&gt;
 .text:0041C5EC                 mov     [ebp+var_80], eax&lt;br /&gt;
 .text:0041C5EF                 call    ?GetWorld@TFCMAIN@@SAPAVWorldMap@@G@Z ; TFCMAIN::GetWorld(ushort)&lt;br /&gt;
 .text:0041C5F4                 add     esp, 4&lt;br /&gt;
 .text:0041C5F7                 test    eax, eax&lt;br /&gt;
 .text:0041C5F9                 jz      short loc_41C617&lt;br /&gt;
 .text:0041C5FB                 xor     ecx, ecx&lt;br /&gt;
 .text:0041C5FD                 mov     cx, [eax+2Ch]&lt;br /&gt;
 .text:0041C601                 cmp     edi, ecx&lt;br /&gt;
 .text:0041C603                 jge     short loc_41C617&lt;br /&gt;
 .text:0041C605                 xor     edx, edx&lt;br /&gt;
 .text:0041C607                 mov     dx, [eax+2Eh]&lt;br /&gt;
 .text:0041C60B                 cmp     ebx, edx&lt;br /&gt;
 .text:0041C60D                 jge     short loc_41C617&lt;br /&gt;
 .text:0041C60F                 test    edi, edi&lt;br /&gt;
 .text:0041C611                 jl      short loc_41C617&lt;br /&gt;
 .text:0041C613                 test    ebx, ebx&lt;br /&gt;
 .text:0041C615                 jge     short loc_41C62B&lt;br /&gt;
 .text:0041C617&lt;br /&gt;
Dans notre cas, vu que le calcul du sanctuaire est relativement simple, nous ne chercherons pas dans le désassembleur la fonction inverse de celui-ci, une simple reécriture inverse de notre algorithmes suffira pour en avoir l&amp;#039;evers.&lt;br /&gt;
&lt;br /&gt;
= Algorithme du calcul du sanctuaire =&lt;br /&gt;
 #include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
     int x = 1400, y = 400, w = 0;&lt;br /&gt;
     __int64 sanctuary = 0;&lt;br /&gt;
     &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Start coordinates : &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot;,&amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;,&amp;quot; &amp;lt;&amp;lt; w &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
     &lt;br /&gt;
     sanctuary = ((short)x &amp;lt;&amp;lt; 20) +  ((short)y &amp;lt;&amp;lt; 8) + (short)w; // (x * 1048576) + (y * 256) + w;&lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Sanctuary : &amp;quot; &amp;lt;&amp;lt; sanctuary &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
     x = ((short)(sanctuary &amp;gt;&amp;gt; 20) &amp;amp; 0x0FFF);&lt;br /&gt;
     y = ((short)(sanctuary &amp;gt;&amp;gt; 8) &amp;amp; 0x0FFF);&lt;br /&gt;
     w = sanctuary &amp;amp; 0x0FF;&lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot;Calculates the coordinates : &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot;,&amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;,&amp;quot; &amp;lt;&amp;lt; w &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
     system(&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
     return EXIT_SUCCESS;&lt;br /&gt;
 }&lt;br /&gt;
--Mestoph 16 mars 2008 à 17:51 (MSK)&lt;/div&gt;</summary>
		<author><name>FunJp</name></author>
	</entry>
</feed>