What offset in the client do I change to make certain items stackable, like materials and grinders?
Where can I find Lee's patch tool? If what you say is true we could just compare the bytes to find the offset. Also if anyone is interested I can post the offset to the resolutions.I wish to know that too xD
Lee's patch tool does it, but I haven't (shamelessly) copied it to my own patcher, which has a few more things (hardcoded sranks unitxt indexes) and a few less things (resolution patch since I do it with a custom launcher, Tofuman's or my own if he allows me to use his method for widescreen which I haven't asked yet).
1x limit - 0x1D5857 10x limit - 0x1D5850 99x limit - 0x1D585E
Please note that all addresses are virtual so you'll most likely need a decent hex editor with disassembler features. Check if stackable function: Original: 0x5c503d 8B 44 24 08 mov eax, dword ptr [esp+0x8] 0x5c5041 83 F8 09 cmp eax, 0x9 0x5c5044 7D 0F jge 0x5c5055 0x5c5046 8B 44 24 08 mov eax, dword ptr [esp+0x8] 0x5c504a 83 F8 02 cmp eax, 0x2 0x5c504d 74 0F jz 0x5c505e 0x5c504f B8 01 00 00 00 mov eax, 0x1 0x5c5054 C3 ret 0x5c5055 8B 44 24 08 mov eax, dword ptr [esp+0x8] 0x5c5059 83 F8 10 cmp eax, 0x10 0x5c505c 74 F1 jz 0x5c504f 0x5c505e 33 C0 xor eax, eax 0x5c5060 C3 ret Modified: 0x5c503d 8B 44 24 08 mov eax dword ptr [esp+0x8] 0x5c5041 83 F8 02 cmp eax, 0x2 0x5c5044 74 08 je 0x5c504e 0x5c5046 8A 80 90D39700 mov al, [eax+0x97d390] // Use any free space in client for array. 0x97d390 used as an example. 0x5c504c 90 nop 0x5c504d C3 ret 0x5c504e 31 C0 xor eax, eax 0x5c5050 C3 ret 0x5c5051 B8 01000000 mov eax, 0x1 0x5c5056 C3 ret 0x5c5057 90 nop 0x5c5058 90 nop 0x5c5059 90 nop 0x5c505A 90 nop 0x5c505B 90 nop 0x5c505C 90 nop 0x5c505D 90 nop 0x5c505E 90 nop 0x5c505F 90 nop 0x5c5060 C3 ret The above function will check if its 0302XX if so item isn't stackable. Else look up against the array at 0x97d390. (to be honest I could just look up against the table but seems as techs will never be stackable there's no harm in making it impossible). Now populate your array at 0x97d390 (if you use the offset provided in the example) with either 0x00 (not stackable) or 0x01 (stackable). There will be a total of 27 entries (030000 - 031A00) Now to specify by how much are they stackable: Original 0x5D643A: 85 C0 test eax,eax 74 18 je 005D6456 0F B6 03 movzx eax,byte ptr [ebx] 83 F8 03 cmp eax,03 75 09 jne 005D644F 0F B6 73 01 movzx eax,byte ptr [ebx+01] 83 F8 10 cmp eax,10 74 0E je 005D645D B8 0A 00 00 00 mov eax,0000000A 5B pop ebx C3 ret B8 01 00 00 00 mov eax,00000001 5B pop ebx C3 ret B8 63 00 00 00 mov eax,00000063 5B pop ebx C3 ret Modified: 85 C0 test eax,eax 74 14 je 005D6452 0F B6 03 movzx eax,byte ptr [ebx] 83 F8 03 cmp eax,03 75 0C jne 005D6452 0F B6 43 01 movzx eax,byte ptr [ebx+01] 8A 80 AB D3 97 00 mov al,[eax+0097D3AB] 5B pop ebx C3 ret B8 01 00 00 00 mov eax,00000001 5B pop ebx C3 ret 90 nop 90 nop 90 nop 90 nop 90 nop 90 nop 90 nop 90 nop 90 nop 90 nop C3 ret The above checks for if not 03XXXX set stack limit to 1. Else look up on stack limit array at 0x97D3AB (again this is just an example of unused space in the client find your own if you like). Then populate the stack limits at 0x97D3AB. Again with 27 entries. 1 to 255
I forgot to update, I have been compiling the usual client patches into a patch (gui) tool.
I added this stack patch of Tofuman too.
I have to rewrite the tool because the code is ugly af, but it does work. I might post it later today.
01 01 00 01 01 01 01 01 01 00 01 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00
0A 0A 01 0A 0A 0A 0A 0A 0A 01 63 63 01 01 01 01 63 01 01 01 01 01 01 01 01 01 01
0x0A to 0x0F are not changed either, so they stay at 0.It would lead me to believe it would reside in an array value after stackable_table[0x10], or simply isn't defined here at all