Перенос охапкой по 10 или 100 предметов

Author: Vladimir Chebotarev aka ex-lend

.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