Below you can find my updated offset list.
I tested the (dark) green highlighted offsets while for those without a color I was to lazy so far.
However, I struggle a lot to get the red marked offsets be course the awesome by denzjh
is not working anymore for me
Does anyone know why it is not working anymore? Maybe it is also just a mistake on my side.
---------------
global realBaseAddress := 0xE4BAB0
global SendPacketAddress := 0x875D70
global AutoPathAddress := 0x4596D0
global ADDRESS_ACTION1 := 0x4CF440
global ADDRESS_ACTION2 := 0x4D59C0
global ADDRESS_ACTION3 := 0x4CFA50
global ADDRESS_GATHER := 0x4C4CA0
global CastAddress := 0x4BC950
global ADDRESS_FOLLOW := 0x0070BD00
global partyInviteOffset := 0xF06C60
global UnfreezOffset := 0x4F0
global chatBase_offset := 0xDAA3D8
global baseOffset:= 0x1C
global ListOffset := 0x1C
global XposOffset := 0x3C
global YposOffset := 0x44
global ZposOffset := 0x40
;~ #--------- Player ------------#
global PlayerListOffset := 0x1C
global sortedPlayerListOffset := 0x98
global PlayerCounterOffset := 0x18
global playerOffSet := 0x34
global playerNameOffset := 0x750
global playerIDOffset := 0x4B8
global PlayerHPOffset := 0x4CC
global PlayerHPmaxOffset := 0x520
global PlayerMPOffset := 0x4D0
global PlayerMPmaxOffset := 0x524
global playerLvlOffset := 0x4F8
global PlayerChiOffset := 0x4E0
global PlayerCoins_Offset := 0x5A8
global PlayerClass_Offset := 0x754
global PlayerTarget_Offset := 0x5A4
global PlayerEarningTime_Offset := 0x1730
global PlayerParty_Offset := 0x7D0
global PlayerEventGold := 0x1608
global PlayerNpcWindow := 0xF62
;~ #-------- NPC ----------------#
global NpcListOffset := 0x20
global sortedNpcListOffset := 0x5c
global NpcCounterOffset := 0x18
global NpcUIDOffset := 0x114
global NpcIDOffset := 0x118
global NpcNameOffset := 0x260
global NpcLVLOffset := 0x120
global NpcHPOffset := 0x128
global NpcHPmaxOffset := 0x17C
global NpcSpecialOffset := 0x24C
;~ #-------- Item ---------------#
global ItemListOffset := 0x24
global sortedItemListOffset := 0x1C
global ItemCounterOffset := 0x14
global ItemNameOffset := 0x168
global ItemUIDOffset := 0x110
global ItemIDOffset := 0x114
;~ #----- Inventory -------------#
global InventoryListOffset := 0x1160
global sortedInventoryListOffset := 0xC
global InventorySizeOffset := 0x10
global InvName_Offset := 0x4C
global InvID_Offset := 0xC
global InvStackAmount_Offset := 0x14
global InvMAXStackAmount_Offset := 0x18
global InvDurability_Offset := 0x74
global InvMaxDurability_Offset := 0x78
global refineLevelOffset := 0x90
global InvSellPrice_Offset := 0x1C
global FlyerID_Offset := 0x5F8
;~ #---------- actions ----------#
global MoveMode_Offset := 0x760
global playerActionStructOffset := 0x15C4
global SkillsBase_Offset := 0x15F0
global SkillsCount_Offset := 0x15F4
Since many of us use different names, here the old list for comparison:
global realBaseAddress := 0xEF8344
global SendPacketAddress := 0x875D70
global AutoPathAddress := 0x4596D0
global ADDRESS_ACTION1 := 0x4CF440
global ADDRESS_ACTION2 := 0x4D59C0
global ADDRESS_ACTION3 := 0x4CFA50
global ADDRESS_GATHER := 0x4C4CA0
global CastAddress := 0x4BC950
global ADDRESS_FOLLOW := 0x0070BD00
global partyInviteOffset := 0xF06C60
global UnfreezOffset := 0x4F0
global chatBase_offset := 0xDAA3D8
global baseOffset:= 0x1C
global ListOffset := 0x1C
global XposOffset := 0x3C
global YposOffset := 0x44
global ZposOffset := 0x40
;~ #--------- Player ------------#
global PlayerListOffset := 0x1C
global sortedPlayerListOffset := 0x98
global PlayerCounterOffset := 0x18
global playerOffSet := 0x34
global playerNameOffset := 0x700
global playerIDOffset := 0x4B8
global PlayerHPOffset := 0x4CC
global PlayerHPmaxOffset := 0x520
global PlayerMPOffset := 0x4D0
global PlayerMPmaxOffset := 0x524
global playerLvlOffset := 0x4F8
global PlayerChiOffset := 0x4E0
global PlayerCoins_Offset := 0x5A8
global PlayerClass_Offset := 0x704
global PlayerTarget_Offset := 0x5A4
global PlayerEarningTime_Offset := 0x1730
global PlayerParty_Offset := 0x7D0
global PlayerEventGold := 0x1608
global PlayerNpcWindow := 0xEEE
;~ #-------- NPC ----------------#
global NpcListOffset := 0x20
global sortedNpcListOffset := 0x5c
global NpcCounterOffset := 0x18
global NpcUIDOffset := 0x114
global NpcIDOffset := 0x118
global NpcNameOffset := 0x260
global NpcLVLOffset := 0x120
global NpcHPOffset := 0x128
global NpcHPmaxOffset := 0x17C
global NpcSpecialOffset := 0x24C
;~ #-------- Item ---------------#
global ItemListOffset := 0x24
global sortedItemListOffset := 0x1C
global ItemCounterOffset := 0x14
global ItemNameOffset := 0x168
global ItemUIDOffset := 0x110
global ItemIDOffset := 0x114
;~ #----- Inventory -------------#
global InventoryListOffset := 0x10EC
global sortedInventoryListOffset := 0xC
global InventorySizeOffset := 0x10
global InvName_Offset := 0x4C
global InvID_Offset := 0xC
global InvStackAmount_Offset := 0x14
global InvMAXStackAmount_Offset := 0x18
global InvDurability_Offset := 0x74
global InvMaxDurability_Offset := 0x78
global refineLevelOffset := 0x90
global InvSellPrice_Offset := 0x1C
global FlyerID_Offset := 0x5E0
;~ #---------- actions ----------#
global MoveMode_Offset := 0x710
global playerActionStructOffset := 0x154C
global SkillsBase_Offset := 0x1578
global SkillsCount_Offset := 0x157C
Thanks for this. My python Address Retriever script also stopped working. Every single **** regex broke. It still works fine on the PWCN client of this expansion. They must have changed compilers I guess?
So the red addresses are broken right? I don't know how to breakpoint that so I'm lost without a decent regex for the basic things. Anyone got a clue?
Actually I think sendpacket is pretty easy to get if you put a breakpoint in WS_32.dll>send or something. The others I dunno.
EDIT: OK I think I have a debug strategy for the action stuff. You should be able to breakpoint on any update to the action flag which is actually in the player struct. From there you can examine up the call stack until you see parameters that resemble what happens in our inject code. From there you can examine the calling function to see the other function addresses. Will try this later.
Global $ADDRESS_BASE = 0xE4BAB0
Global $ADDRESS_SENDPACKET = 0x7edb30
Global $ADDRESS_CASTSKILL = 0x4E07A0
Global $OFFSET_ACTIONBASE = 0x15c4
Global $ADDRESS_GATHER = 0x4D19B0
Global $ADDRESS_REGATTACK = 0x4CCE80
I'm struggling hard with figuring out the walk / autopath stuff they might have changed it up I think.
I can set a breakpoint fine by setting a breakpoint condition on when it writes a 1 to the action flag in the player struct. Then I examine the full stack trace to find the call (the return address on the stack points to the instruction after the call) but I think maybe the parameters are different?
Global $ADDRESS_AUTOPATH = ???
Global $ADDRESS_ACTION1 = ???
Global $ADDRESS_ACTION2 = ???
Global $ADDRESS_ACTION3 = ???
Like this is me trying to do autopath:
Maybe there are are more parameters now?
I wonder why I couldnt find it... How about Move? The current version we are using is broken into ACTION1-ACTION3 but it seems silly that Autopath has a simple function to call directly but move doesn't. If it was one address it would be easier to maintain.
So I searched in olly for the line OFFSET_ACTIONBASE (8B8F C4150000) MOV ECX,DWORD PTR DS:[EDI+15C4]
Sort the functions in which also [EXA+1C] and [ESP+1C] are contained.
One of the following addresses would probably have the main moveto function:
004C1AF0 /$ 6A FF PUSH -1
004CCE80 /$ 55 PUSH EBP
004D19B0 /$ 55 PUSH EBP
004D6CB0 /$ 81EC F0010000 SUB ESP,1F0
004E02C0 /$ 57 PUSH EDI
006AC480 /$ 81EC A4000000 SUB ESP,0A4
00930A90 /$ 6A 08 PUSH 8
Actually only breakpoint and look if they are triggered if one clicks in the client, if you can take the action addresses from it.
I'm almost sure that action 3 0xA41E00 is and action 1 maybe 0xAB28F0, Action 2 could be anywhere at 0xA4DEA0.
I have unfortunately not so much time and can only later search.
So I searched in olly for the line OFFSET_ACTIONBASE (8B8F C4150000) MOV ECX,DWORD PTR DS:[EDI+15C4]
Sort the functions in which also [EXA+1C] and [ESP+1C] are contained.
One of the following addresses would probably have the main moveto function:
004C1AF0 /$ 6A FF PUSH -1
004CCE80 /$ 55 PUSH EBP
004D19B0 /$ 55 PUSH EBP
004D6CB0 /$ 81EC F0010000 SUB ESP,1F0
004E02C0 /$ 57 PUSH EDI
006AC480 /$ 81EC A4000000 SUB ESP,0A4
00930A90 /$ 6A 08 PUSH 8
Actually only breakpoint and look if they are triggered if one clicks in the client, if you can take the action addresses from it.
I'm almost sure that action 3 0xA41E00 is and action 1 maybe 0xAB28F0, Action 2 could be anywhere at 0xA4DEA0.
I have unfortunately not so much time and can only later search.
I tried all of those but none triggered specifically on click (though one was triggered constantly on idle).
This is what I think the candidates might be but I'm not really proficient enough in this area to make progress.
These are the candidates:
4E3070
4E3120
4E24D0
4ECCA0
4ECB60
4E35F0
I've got a good feeling 4E35F0 is ACTION3 because that push 0,edi,1 pattern is familiar but I'm not too sure about ACTION1 and ACTION2. 4E3070 might be ACTION1 since I see it near the beginning of a few functions that use the action struct offset. That leaves a lot of other calls in the middle for ACTION2...
i believed they provided a working offset.. now you just need to find a way to convert it so denzjh program can read it.. i do not know how.. but good luck
i believed they provided a working offset.. now you just need to find a way to convert it so denzjh program can read it.. i do not know how.. but good luck
My first post does not include the missing offsets (red highlighted) but you can find these in the posts of jasty and kruger.
To get this other bot to work simply compare the old offsets (check the end of my first post) with those of that other bot and replace them with the new offsets.