Advertisement
Guest User

Untitled

a guest
Jul 24th, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.11 KB | None | 0 0
  1. /*  Hook Casas Decimal*/
  2.         JMP_NEAR(0x041D1B4, HookNaked::NKD_ItemPrice_FormatDecimal_03, 1);
  3.         JMP_NEAR(0x041CFD8, HookNaked::NKD_ItemPrice_FormatDecimal_02, 1);
  4.         JMP_NEAR(0x0421356, HookNaked::NKD_ItemPrice_FormatDecimal);
  5.  
  6. ////////////////////////////////////////////////////////////////////////
  7.  
  8. __declspec(naked) void HookNaked::NKD_ItemPrice_FormatDecimal_03()
  9. {
  10.     __asm
  11.     {
  12.         MOV EDX, DWORD PTR SS : [EBP - 011F4h]
  13.         PUSH EDX
  14.  
  15.         LEA EAX, DWORD PTR SS : [EBP - 01278h]
  16.         PUSH EAX
  17.  
  18.         CALL HKD_ItemPrice_FormatDecimal_03
  19.         ADD ESP, 08h
  20.  
  21.         MOV EAX, 0x041D1CF
  22.         JMP EAX
  23.     }
  24.  
  25. }
  26.  
  27. __declspec(naked) void HookNaked::NKD_ItemPrice_FormatDecimal_02()
  28. {
  29.     {
  30.         static int retn = 0;
  31.         __asm
  32.         {
  33.             LEA EAX, DWORD PTR SS : [EBP - 1278]
  34.             PUSH EAX
  35.  
  36.             MOV EDX, DWORD PTR SS : [EBP - 01154h]
  37.             ADD EDX, EAX
  38.             PUSH EDX
  39.  
  40.             LEA EAX, DWORD PTR SS : [EBP - 011D4h]
  41.             PUSH EAX
  42.  
  43.             CALL HKD_ItemPrice_FormatDecimal_02
  44.             ADD ESP, 08h
  45.  
  46.  
  47.             MOV EAX, 0x041CFF5
  48.             JMP EAX
  49.         }
  50.     }
  51. }
  52.  
  53. __declspec(naked) void HookNaked::NKD_ItemPrice_FormatDecimal()
  54. {
  55.     __asm
  56.     {
  57.         MOV EAX, DWORD PTR SS : [EBP - 08Ch]
  58.         MOV ECX, DWORD PTR DS : [EAX + 058Ch]
  59.         PUSH ECX
  60.  
  61.         MOV EAX, DWORD PTR SS : [EBP + 08h]
  62.         PUSH EAX
  63.  
  64.         CALL HKD_ItemPrice_FormatDecimal_AutoTrade
  65.         ADD ESP, 08h
  66.  
  67.         MOV EAX, 0x04213DA
  68.         JMP EAX
  69.     }
  70. }
  71.  
  72.  
  73. /////////////////////////////////////////////////////////////////////////
  74.  
  75. void HKD_ItemPrice_FormatDecimal_AutoTrade(char* gold, int value)
  76. {
  77.     if (value <= 1000)
  78.     {
  79.         sprintf(gold, "Item em modo demonstração");
  80.  
  81.         return;
  82.     }
  83.  
  84.     char st[32];
  85.     char result[32];
  86.     memset(result, 0, sizeof result);
  87.  
  88.     _itoa(value, st, 10);
  89.  
  90.     int len = strlen(st);
  91.     int sum = ((len - 1) / 3);
  92.  
  93.     for (int i = (len - 1), count = 0, index = (len - 1) + sum; i >= 0; i--, count++)
  94.     {
  95.         if (!(count % 3) && count != 0)
  96.         {
  97.             result[index] = ',';
  98.             index--;
  99.         }
  100.  
  101.         result[index] = st[i];
  102.  
  103.         count++;
  104.         index--;
  105.     }
  106.  
  107.     sprintf(gold, "%s Gold", result);
  108.  
  109. }
  110.  
  111. void HKD_ItemPrice_FormatDecimal_02(char* pointer, int gold)
  112. {
  113.     if (gold <= 0)
  114.     {
  115.         sprintf(pointer, "Item Gratuito");
  116.  
  117.         return;
  118.     }
  119.  
  120.     char st[32];
  121.     char result[32];
  122.     memset(result, 0, sizeof result);
  123.  
  124.     _itoa(gold, st, 10);
  125.  
  126.     int len = strlen(st);
  127.     int sum = ((len - 1) / 3);
  128.  
  129.     for (int i = (len - 1), count = 0, index = (len - 1) + sum; i >= 0; i--, count++)
  130.     {
  131.         if (!(count % 3) && count != 0)
  132.         {
  133.             result[index] = ',';
  134.             index--;
  135.         }
  136.  
  137.         result[index] = st[i];
  138.  
  139.         count++;
  140.         index--;
  141.     }
  142.  
  143.     sprintf(pointer, "Preço: %s", result);
  144.  
  145. }
  146.  
  147. void HKD_ItemPrice_FormatDecimal_03(char* pointer, int gold)
  148. {
  149.     if (gold <= 0)
  150.     {
  151.         sprintf(pointer, "Item Gratuito");
  152.  
  153.         return;
  154.     }
  155.  
  156.     char st[32];
  157.     char result[32];
  158.     memset(result, 0, sizeof result);
  159.  
  160.     _itoa(gold, st, 10);
  161.  
  162.     int len = strlen(st);
  163.     int sum = ((len - 1) / 3);
  164.  
  165.     for (int i = (len - 1), count = 0, index = (len - 1) + sum; i >= 0; i--, count++)
  166.     {
  167.         if (!(count % 3) && count != 0)
  168.         {
  169.             result[index] = ',';
  170.             index--;
  171.         }
  172.  
  173.         result[index] = st[index];
  174.  
  175.         count++;
  176.         index--;
  177.     }
  178.  
  179.  
  180.     sprintf(pointer, "Preço de venda: %s", result);
  181. }
  182.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement