Page about Rage of Mages

[ru] [en]  
[0] [1] [2]

 
  

Moving 10 or 100 items at a time

Author: Vladimir Chebotarev aka ex-lend
Categories: RoM 2, Technical

.text:004AB2A8                 cmp     dword_62C9A4, 0
.text:004AB2AF                 jz      short loc_4AB2CB
.text:004AB2B1                 mov     eax, [ebp+var_10]
.text:004AB2B4                 push    eax
.text:004AB2B5                 mov     ecx, [ebp+var_2C]
.text:004AB2B8                 mov     ecx, [ecx+84h]
.text:004AB2BE                 call    sub_4738D0
.text:004AB2C3                 mov     edx, [eax+10h]
.text:004AB2C6                 mov     [ebp+var_1C], edx
.text:004AB2C9                 jmp     short loc_4AB2D2
.text:004AB2CB ; ---------------------------------------------------------------------------
.text:004AB2CB
.text:004AB2CB loc_4AB2CB:                             ; CODE XREF: sub_4AB19D+112
.text:004AB2CB                 mov     [ebp+var_1C], 1
.text:004AB2D2
.text:004AB2D2 loc_4AB2D2:                             ; CODE XREF: sub_4AB19D:loc_4AB2A6
.text:004AB2D2                                         ; sub_4AB19D+12Callods2j
.text:004AB2D2                 mov     eax, [ebp+var_10]
.text:004AB2D5                 push    eax
.text:004AB2D6                 mov     ecx, [ebp+var_2C]
.text:004AB2D9                 mov     ecx, [ecx+84h]
.text:004AB2DF                 call    sub_4738D0
По адресу 62C9A4 находится флаг, соответствующий нажатию Shift, таким образом, если Shift зажат, игра получает количество предметов в данной ячейке (4AB2BE), иначе использует 1. Нетрудно переделать это место, чтобы можно было выкладывать по 10 и 100 (или вообще по произвольному количеству) предметов при удерживании Alt и Ctrl (62C9A0 и 62C9A8).

Для перетаскивания вещей не только на карте, но и в магазине, такие же изменения потребуется внести и по следующему адресу:
.text:004BA637                 cmp     dword_62C9A4, 0
.text:004BA63E                 jz      short loc_4BA660
.text:004BA640                 mov     ecx, [ebp+var_4]
.text:004BA643                 mov     edx, [ecx+410h]
.text:004BA649                 push    edx
.text:004BA64A                 mov     eax, [ebp+var_C]
.text:004BA64D                 mov     ecx, [eax+84h]
.text:004BA653                 call    sub_4738D0
.text:004BA658                 mov     ecx, [eax+10h]
.text:004BA65B                 mov     [ebp+var_8], ecx
.text:004BA65E                 jmp     short loc_4BA667
.text:004BA660 ; ---------------------------------------------------------------------------
.text:004BA660
.text:004BA660 loc_4BA660:                             ; CODE XREF: sub_4BA58D+B1
.text:004BA660                 mov     [ebp+var_8], 1
.text:004BA667
.text:004BA667 loc_4BA667:                             ; CODE XREF: sub_4BA58D+D1
.text:004BA667                 mov     edx, [ebp+var_4]
.text:004BA66A                 mov     eax, [edx+410h]
.text:004BA670                 push    eax
.text:004BA671                 mov     ecx, [ebp+var_C]
.text:004BA674                 mov     ecx, [ecx+84h]
.text:004BA67A                 call    sub_4738D0
Патч 1: перетаскивание вещей на карте
allods2.exe 1.07
[EXE] [CRK] [XCK] [TXT]
allods2.exe
000AA6A7: 2A 4B
000AA6A8: 83 8B
000AA6A9: 3D 45
000AA6AA: A4 F0
000AA6AB: C9 50
000AA6AC: 62 8B
000AA6AD: 00 4D
000AA6AE: 00 D4
000AA6AF: 74 8B
000AA6B0: 1A 89
000AA6B1: 8B 84
000AA6B2: 45 00
000AA6B3: F0 00
000AA6B4: 50 00
000AA6B5: 8B E8
000AA6B6: 4D 16
000AA6B7: D4 86
000AA6B8: 8B FC
000AA6B9: 89 FF
000AA6BA: 84 31
000AA6BB: 00 D2
000AA6BC: 00 8B
000AA6BD: 00 40
000AA6BE: E8 10
000AA6BF: 0D B9
000AA6C0: 86 A0
000AA6C1: FC C9
000AA6C2: FF 62
000AA6C3: 8B 00
000AA6C4: 50 83
000AA6C5: 10 79
000AA6C6: 89 04
000AA6C7: 55 00
000AA6C8: E4 75
000AA6C9: EB 26
000AA6CA: 07 83
000AA6CB: C7 39
000AA6CC: 45 00
000AA6CD: E4 74
000AA6CE: 01 0A
000AA6CF: 00 B2
000AA6D0: 00 0A
000AA6D1: 00 39
000AA6D2: 8B D0
000AA6D3: 45 7E
000AA6D4: F0 1B
000AA6D5: 50 89
000AA6D6: 8B D0
000AA6D7: 4D EB
000AA6D8: D4 17
000AA6D9: 8B 83
000AA6DA: 89 79
000AA6DB: 84 08
000AA6DD: 00 74
000AA6DE: 00 0C
000AA6DF: E8 31
000AA6E0: EC D2
000AA6E1: 85 B2
000AA6E2: FC 64
000AA6E3: FF 39
000AA6E4: 8B D0
000AA6E5: C8 7E
000AA6E6: E8 09
000AA6E7: F8 89
000AA6E8: 15 D0
000AA6E9: F9 EB
000AA6EA: FF 05
000AA6EB: 85 B8
000AA6EC: C0 01
000AA6ED: 0F 00
000AA6EE: 85 00
000AA6EF: 46 00
000AA6F0: 01 89
000AA6F1: 00 45
000AA6F2: 00 E4
000AA6F3: 8B FF
000AA6F4: 55 75
000AA6F5: E4 F0
000AA6F6: 52 8B
000AA6F7: 8B 4D
000AA6F8: 45 D4
000AA6F9: F0 8B
000AA6FA: 50 89
000AA6FB: 8B 84
000AA6FC: 4D 00
000AA6FD: D4 00
000AA6FE: 8B 00
000AA6FF: 11 E8
000AA700: 8B CC
000AA701: 4D 85
000AA702: D4 FC
000AA704: 92 89
000AA705: A0 C1
000AA706: 00 E8
000AA707: 00 D8
000AA708: 00 15
000AA709: 85 F9
000AA70A: C0 FF
000AA70B: 0F 85
000AA70C: 84 C0
000AA70D: 28 0F
000AA70E: 01 85
000AA70F: 00 26
000AA710: 00 01
000AA711: 8B 00
000AA712: 45 00
000AA713: EC FF
000AA714: 8B 75
000AA715: 88 E4
000AA716: 0C FF
000AA717: 04 75
000AA718: 00 F0
000AA719: 00 8B
000AA71A: E8 4D
000AA71B: 11 D4
000AA71C: 56 8B
000AA71D: F7 11
000AA71F: 85 92
000AA720: C0 A0
000AA721: 74 00
000AA722: 60 00
000AA723: 8B 00
000AA724: 4D 85
000AA725: EC C0
000AA726: 8B 0F
000AA727: 91 84
000AA728: D0 0D
000AA729: 00 01
000AA72D: 82 45
000AA72E: CC EC
000AA72F: 09 8B
000AA730: 00 88
000AA731: 00 0C
000AA732: 8B 04
000AA733: 4D 00
000AA734: EC 00
000AA735: 8B E8
000AA736: 91 F6
000AA737: 0C 55
000AA738: 04 F7
000AA739: 00 FF
000AA73A: 00 85
000AA73B: 8B C0
000AA73C: 40 74
000AA73D: 10 45
000AA73E: 2B 8B
000AA73F: 42 4D
000AA740: 10 EC
000AA742: 4D 91
000AA743: EC D0
000AA744: 8B 00
000AA745: 91 00
000AA746: D0 00
000AA747: 00 8B
000AA748: 00 92
000AA749: 00 CC
000AA74A: 8B 09
000AA74B: 8A 00
000AA74C: CC 00
000AA74D: 09 8B
000AA74E: 00 42
000AA74F: 00 10
000AA750: 89 8B
000AA751: 41 89
000AA752: 10 0C
000AA753: 8B 04
000AA754: 55 00
000AA755: EC 00
000AA756: 8B 2B
000AA757: 82 41
000AA758: 14 10
000AA759: 04 89
000AA75A: 00 42
000AA75B: 00 10
000AA75C: 50 8B
000AA75D: 68 4D
000AA75E: AC EC
000AA75F: EE 8B
000AA760: 5F 81
000AA761: 00 14
000AA762: 8B 04
000AA763: 4D 00
000AA764: EC 00
000AA765: 8B 50
000AA766: 91 68
000AA767: 10 AC
000AA768: 04 EE
000AA769: 00 5F
000AA76B: 52 8B
000AA76C: 8B 91
000AA76D: 45 10
000AA76E: EC 04
000AA76F: 8B 00
000AA770: 88 00
000AA771: 0C 52
000AA772: 04 8B
000AA773: 00 81
000AA774: 00 0C
000AA775: 51 04
000AA776: 8B 00
000AA777: 4D 00
000AA778: EC 50
Патч 2: перетаскивание вещей также и в магазине
(требует добавления дополнительного сегмента так, что подпрограмма 21A5D0 будет иметь RVA 6E21D0).
allods2.exe 1.07 + доп.сегмент
[EXE] [CRK] [XCK] [TXT]
allods2.exe
000AA6A8: 83 90
000AA6A9: 3D 90
000AA6AA: A4 90
000AA6AB: C9 90
000AA6AC: 62 90
000AA6AD: 00 90
000AA6AE: 00 90
000AA6AF: 74 90
000AA6B0: 1A 90
000AA6C3: 8B FF
000AA6C4: 50 70
000AA6C6: 89 E8
000AA6C7: 55 05
000AA6C8: E4 6F
000AA6C9: EB 23
000AA6CA: 07 00
000AA6CB: C7 89
000AA6CE: 01 90
000AA6CF: 00 90
000AA6D0: 00 90
000AA6D1: 00 90
000B9A37: 83 90
000B9A38: 3D 90
000B9A39: A4 90
000B9A3A: C9 90
000B9A3B: 62 90
000B9A3C: 00 90
000B9A3D: 00 90
000B9A3E: 74 90
000B9A3F: 20 90
000B9A58: 8B FF
000B9A59: 48 70
000B9A5B: 89 E8
000B9A5C: 4D 70
000B9A5D: F8 7B
000B9A5E: EB 22
000B9A5F: 07 00
000B9A60: C7 89
000B9A63: 01 90
000B9A64: 00 90
000B9A65: 00 90
000B9A66: 00 90
0021A5D0: 00 55
0021A5D1: 00 89
0021A5D2: 00 E5
0021A5D3: 00 8D
0021A5D4: 00 0C
0021A5D5: 00 25
0021A5D6: 00 A0
0021A5D7: 00 C9
0021A5D8: 00 62
0021A5DA: 00 8B
0021A5DB: 00 45
0021A5DC: 00 08
0021A5DD: 00 83
0021A5DE: 00 79
0021A5DF: 00 04
0021A5E1: 00 75
0021A5E2: 00 2C
0021A5E3: 00 83
0021A5E4: 00 79
0021A5E5: 00 08
0021A5E7: 00 74
0021A5E8: 00 0E
0021A5E9: 00 3D
0021A5EA: 00 64
0021A5EE: 00 7E
0021A5EF: 00 1F
0021A5F0: 00 B8
0021A5F1: 00 64
0021A5F5: 00 EB
0021A5F6: 00 18
0021A5F7: 00 83
0021A5F8: 00 39
0021A5FA: 00 74
0021A5FB: 00 0E
0021A5FC: 00 3D
0021A5FD: 00 0A
0021A601: 00 7E
0021A602: 00 0C
0021A603: 00 B8
0021A604: 00 0A
0021A608: 00 EB
0021A609: 00 05
0021A60A: 00 B8
0021A60B: 00 01
0021A60F: 00 89
0021A610: 00 EC
0021A611: 00 5D
0021A612: 00 C3

Discussion (0)