From fb8f3941a8859082fddacb62829f39438ac9b650 Mon Sep 17 00:00:00 2001 From: gromchek Date: Fri, 4 Apr 2025 22:44:47 +0300 Subject: [PATCH] feat(profile): CGActionBar func and label --- .../ida/batch/import_data_types.idc | 4 ++ .../ida/batch/import_symbols.idc | 36 ++++++++++++++++++ .../symbol/actionbar/func.sym | 29 ++++++++++++++ .../symbol/actionbar/label.sym | 7 ++++ profile/3.3.5a-windows-386/symbol/main.sym | 36 ++++++++++++++++++ profile/3.3.5a-windows-386/x64dbg/game.dd32 | Bin 116163 -> 117330 bytes 6 files changed, 112 insertions(+) create mode 100644 profile/3.3.5a-windows-386/symbol/actionbar/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/actionbar/label.sym diff --git a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc index 85e3e2f..371a397 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc @@ -806,6 +806,10 @@ static import_data_types() { apply_type(0x00B417D0, "int32_t"); apply_type(0x00B41850, "CDataRecycler"); apply_type(0x00B6A9DC, "MipBits*"); + apply_type(0x00C1DC98, "uint32_t[144]"); + apply_type(0x00C1DED8, "uint32_t[144]"); + apply_type(0x00C1E118, "uint32_t[144]"); + apply_type(0x00C1E358, "uint32_t[144]"); apply_type(0x00C25CD0, "int8_t"); apply_type(0x00C25DE8, "uint32_t[1024]"); apply_type(0x00C26DE8, "CURSORMODE"); diff --git a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc index dafb9d0..2098d12 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc @@ -1521,31 +1521,60 @@ static import_symbols() { set_name(0x005A6DC0, "Script_GetGuildBankTransaction"); set_name(0x005A7110, "Script_QueryGuildBankText"); set_name(0x005A7180, "Script_SetGuildBankText"); + set_name(0x005A79D0, "CGActionBar__InitializeGame"); + set_name(0x005A7A70, "CGActionBar__ShowGrid"); + set_name(0x005A7A80, "CGActionBar__HideGrid"); + set_name(0x005A7C20, "CGActionBar__SetTemporaryActionBarFlags"); set_name(0x005A7D10, "Script_GetActionCount"); set_name(0x005A7D90, "Script_GetActionText"); set_name(0x005A7E60, "Script_IsUsableAction"); set_name(0x005A7F20, "Script_GetBonusBarOffset"); set_name(0x005A7F60, "Script_ChangeActionBarPage"); set_name(0x005A7FD0, "Script_GetActionBarPage"); + set_name(0x005A8070, "CGActionBar__GetItem"); + set_name(0x005A8160, "CGActionBar__HasAction"); set_name(0x005A8220, "Script_HasAction"); set_name(0x005A8290, "Script_SetActionBarToggles"); set_name(0x005A8330, "Script_GetMultiCastTotemSpells"); + set_name(0x005A83C0, "CGActionBar__UpdateBonusBar"); + set_name(0x005A84D0, "CGActionBar__GetAttackTexture"); + set_name(0x005A85E0, "CGActionBar__GetRangedTexture"); + set_name(0x005A86B0, "CGActionBar__FindUseEnchantItemPtr"); set_name(0x005A8720, "Script_IsStackableAction"); set_name(0x005A8790, "Script_GetActionBarToggles"); set_name(0x005A8820, "Script_IsPossessBarVisible"); + set_name(0x005A88B0, "CGActionBar__IsEquippedAction"); + set_name(0x005A8A60, "CGActionBar__CalculateItemCount"); set_name(0x005A8BC0, "Script_IsEquippedAction"); + set_name(0x005A8C30, "CGActionBar__GetSpell"); + set_name(0x005A8D30, "CGActionBar__UpdateUsablePower"); + set_name(0x005A8E40, "CGActionBar__GetCooldown"); set_name(0x005A8F10, "Script_GetActionInfo"); set_name(0x005A91C0, "Script_GetActionCooldown"); set_name(0x005A9290, "Script_GetActionAutocast"); + set_name(0x005A9360, "CGActionBar__IsConsumableAction"); + set_name(0x005A95E0, "CGActionBar__ActionHasRange"); + set_name(0x005A97F0, "CGActionBar__GetTexture"); set_name(0x005A9B30, "Script_GetActionTexture"); set_name(0x005A9BA0, "Script_IsAttackAction"); set_name(0x005A9C10, "Script_IsAutoRepeatAction"); set_name(0x005A9C80, "Script_IsConsumableAction"); set_name(0x005A9CF0, "Script_ActionHasRange"); set_name(0x005A9D50, "Script_IsActionInRange"); + set_name(0x005A9E20, "CGActionBar__UpdateUsableAction"); + set_name(0x005AA240, "CGActionBar__IsCurrentAction"); + set_name(0x005AA390, "CGActionBar__SlotChanged"); + set_name(0x005AA470, "CGActionBar__UpdateUsable"); + set_name(0x005AAA90, "CGActionBar__RemoveAction"); + set_name(0x005AAB90, "CGActionBar__RemoveMacro"); set_name(0x005AAD40, "Script_IsCurrentAction"); + set_name(0x005AAE20, "CGActionBar__RemoveEquipmentSet"); + set_name(0x005AAE80, "CGActionBar__SetAction"); + set_name(0x005AB120, "CGActionBar__PutActionInSlot"); set_name(0x005AB840, "Script_PlaceAction"); set_name(0x005AB8A0, "Script_SetMultiCastSpell"); + set_name(0x005ABBC0, "CGActionBar__UseAction"); + set_name(0x005ABE70, "CGActionBar__PickupAction"); set_name(0x005AC000, "Script_UseAction"); set_name(0x005AC090, "Script_PickupAction"); set_name(0x005AC320, "Script_RegisterStaticConstants"); @@ -3481,6 +3510,13 @@ static import_symbols() { set_name(0x00BD085C, "CGGameUI__m_instanceLockComletedMask"); set_name(0x00BD0860, "CGGameUI__m_instanceLockExtending"); set_name(0x00BD086C, "CGGameUI__m_billingExpireTime"); + set_name(0x00C1DC98, "CGActionBar__m_slotNoMana"); + set_name(0x00C1DED8, "CGActionBar__m_slotUsable"); + set_name(0x00C1E118, "CGActionBar__m_slotUseCount"); + set_name(0x00C1E358, "CGActionBar__m_slotActions"); + set_name(0x00C1E598, "CGActionBar__m_currentPage"); + set_name(0x00C1E59C, "CGActionBar__m_bonusBarOffset"); + set_name(0x00C1E5A0, "CGActionBar__m_tempPageActiveFlags"); set_name(0x00C25CD0, "s_cursorFile"); set_name(0x00C25DD4, "s_cursorItemMipsWidth"); set_name(0x00C25DD8, "s_cursorItemMipsHeight"); diff --git a/profile/3.3.5a-windows-386/symbol/actionbar/func.sym b/profile/3.3.5a-windows-386/symbol/actionbar/func.sym new file mode 100644 index 0000000..d44735b --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/actionbar/func.sym @@ -0,0 +1,29 @@ +CGActionBar__InitializeGame 005A79D0 f end=005A7A36 +CGActionBar__ShowGrid 005A7A70 f end=005A7A80 +CGActionBar__HideGrid 005A7A80 f end=005A7A90 +CGActionBar__SetTemporaryActionBarFlags 005A7C20 f end=005A7C41 +CGActionBar__GetItem 005A8070 f end=005A80DB +CGActionBar__HasAction 005A8160 f end=005A821E +CGActionBar__UpdateBonusBar 005A83C0 f end=005A8467 +CGActionBar__GetAttackTexture 005A84D0 f end=005A85D3 +CGActionBar__GetRangedTexture 005A85E0 f end=005A86AD +CGActionBar__FindUseEnchantItemPtr 005A86B0 f end=005A8711 +CGActionBar__IsEquippedAction 005A88B0 f end=005A89A5 +CGActionBar__CalculateItemCount 005A8A60 f end=005A8BBB +CGActionBar__GetSpell 005A8C30 f end=005A8D22 +CGActionBar__UpdateUsablePower 005A8D30 f end=005A8E36 +CGActionBar__GetCooldown 005A8E40 f end=005A8F07 +CGActionBar__IsConsumableAction 005A9360 f end=005A946E +CGActionBar__ActionHasRange 005A95E0 f end=005A96D0 +CGActionBar__GetTexture 005A97F0 f end=005A9B0C +CGActionBar__UpdateUsableAction 005A9E20 f end=005AA23A +CGActionBar__IsCurrentAction 005AA240 f end=005AA370 +CGActionBar__SlotChanged 005AA390 f end=005AA466 +CGActionBar__UpdateUsable 005AA470 f end=005AA4D9 +CGActionBar__RemoveAction 005AAA90 f end=005AAB0D +CGActionBar__RemoveMacro 005AAB90 f end=005AABFB +CGActionBar__RemoveEquipmentSet 005AAE20 f end=005AAE71 +CGActionBar__SetAction 005AAE80 f end=005AAFCB +CGActionBar__PutActionInSlot 005AB120 f end=005AB7F4 +CGActionBar__UseAction 005ABBC0 f end=005ABE63 +CGActionBar__PickupAction 005ABE70 f end=005ABFF6 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/actionbar/label.sym b/profile/3.3.5a-windows-386/symbol/actionbar/label.sym new file mode 100644 index 0000000..6e8406a --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/actionbar/label.sym @@ -0,0 +1,7 @@ +CGActionBar__m_slotUseCount 00C1E118 l type="uint32_t[144]" +CGActionBar__m_slotUsable 00C1DED8 l type="uint32_t[144]" +CGActionBar__m_slotNoMana 00C1DC98 l type="uint32_t[144]" +CGActionBar__m_slotActions 00C1E358 l type="uint32_t[144]" +CGActionBar__m_currentPage 00C1E598 l +CGActionBar__m_bonusBarOffset 00C1E59C l +CGActionBar__m_tempPageActiveFlags 00C1E5A0 l \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/main.sym b/profile/3.3.5a-windows-386/symbol/main.sym index 0e8c68e..d41b298 100644 --- a/profile/3.3.5a-windows-386/symbol/main.sym +++ b/profile/3.3.5a-windows-386/symbol/main.sym @@ -1517,31 +1517,60 @@ Script_QueryGuildBankLog 005A6D50 f end=005A6DB9 Script_GetGuildBankTransaction 005A6DC0 f end=005A70ED Script_QueryGuildBankText 005A7110 f end=005A7179 Script_SetGuildBankText 005A7180 f end=005A7243 +CGActionBar__InitializeGame 005A79D0 f end=005A7A36 +CGActionBar__ShowGrid 005A7A70 f end=005A7A80 +CGActionBar__HideGrid 005A7A80 f end=005A7A90 +CGActionBar__SetTemporaryActionBarFlags 005A7C20 f end=005A7C41 Script_GetActionCount 005A7D10 f end=005A7D87 Script_GetActionText 005A7D90 f end=005A7E60 Script_IsUsableAction 005A7E60 f end=005A7F15 Script_GetBonusBarOffset 005A7F20 f end=005A7F54 Script_ChangeActionBarPage 005A7F60 f end=005A7FCB Script_GetActionBarPage 005A7FD0 f end=005A8011 +CGActionBar__GetItem 005A8070 f end=005A80DB +CGActionBar__HasAction 005A8160 f end=005A821E Script_HasAction 005A8220 f end=005A8290 Script_SetActionBarToggles 005A8290 f end=005A832F Script_GetMultiCastTotemSpells 005A8330 f end=005A83B1 +CGActionBar__UpdateBonusBar 005A83C0 f end=005A8467 +CGActionBar__GetAttackTexture 005A84D0 f end=005A85D3 +CGActionBar__GetRangedTexture 005A85E0 f end=005A86AD +CGActionBar__FindUseEnchantItemPtr 005A86B0 f end=005A8711 Script_IsStackableAction 005A8720 f end=005A8790 Script_GetActionBarToggles 005A8790 f end=005A8811 Script_IsPossessBarVisible 005A8820 f end=005A88A9 +CGActionBar__IsEquippedAction 005A88B0 f end=005A89A5 +CGActionBar__CalculateItemCount 005A8A60 f end=005A8BBB Script_IsEquippedAction 005A8BC0 f end=005A8C30 +CGActionBar__GetSpell 005A8C30 f end=005A8D22 +CGActionBar__UpdateUsablePower 005A8D30 f end=005A8E36 +CGActionBar__GetCooldown 005A8E40 f end=005A8F07 Script_GetActionInfo 005A8F10 f end=005A91BB Script_GetActionCooldown 005A91C0 f end=005A9288 Script_GetActionAutocast 005A9290 f end=005A9357 +CGActionBar__IsConsumableAction 005A9360 f end=005A946E +CGActionBar__ActionHasRange 005A95E0 f end=005A96D0 +CGActionBar__GetTexture 005A97F0 f end=005A9B0C Script_GetActionTexture 005A9B30 f end=005A9B99 Script_IsAttackAction 005A9BA0 f end=005A9C10 Script_IsAutoRepeatAction 005A9C10 f end=005A9C80 Script_IsConsumableAction 005A9C80 f end=005A9CF0 Script_ActionHasRange 005A9CF0 f end=005A9D4D Script_IsActionInRange 005A9D50 f end=005A9E17 +CGActionBar__UpdateUsableAction 005A9E20 f end=005AA23A +CGActionBar__IsCurrentAction 005AA240 f end=005AA370 +CGActionBar__SlotChanged 005AA390 f end=005AA466 +CGActionBar__UpdateUsable 005AA470 f end=005AA4D9 +CGActionBar__RemoveAction 005AAA90 f end=005AAB0D +CGActionBar__RemoveMacro 005AAB90 f end=005AABFB Script_IsCurrentAction 005AAD40 f end=005AADB0 +CGActionBar__RemoveEquipmentSet 005AAE20 f end=005AAE71 +CGActionBar__SetAction 005AAE80 f end=005AAFCB +CGActionBar__PutActionInSlot 005AB120 f end=005AB7F4 Script_PlaceAction 005AB840 f end=005AB896 Script_SetMultiCastSpell 005AB8A0 f end=005AB9CD +CGActionBar__UseAction 005ABBC0 f end=005ABE63 +CGActionBar__PickupAction 005ABE70 f end=005ABFF6 Script_UseAction 005AC000 f end=005AC084 Script_PickupAction 005AC090 f end=005AC0D7 Script_RegisterStaticConstants 005AC320 f end=005AC385 @@ -3477,6 +3506,13 @@ CGGameUI__m_instanceLockTime 00BD0858 l CGGameUI__m_instanceLockComletedMask 00BD085C l CGGameUI__m_instanceLockExtending 00BD0860 l CGGameUI__m_billingExpireTime 00BD086C l +CGActionBar__m_slotNoMana 00C1DC98 l type="uint32_t[144]" +CGActionBar__m_slotUsable 00C1DED8 l type="uint32_t[144]" +CGActionBar__m_slotUseCount 00C1E118 l type="uint32_t[144]" +CGActionBar__m_slotActions 00C1E358 l type="uint32_t[144]" +CGActionBar__m_currentPage 00C1E598 l +CGActionBar__m_bonusBarOffset 00C1E59C l +CGActionBar__m_tempPageActiveFlags 00C1E5A0 l s_cursorFile 00C25CD0 l type="int8_t" ; wonder why it's this type s_cursorItemMipsWidth 00C25DD4 l s_cursorItemMipsHeight 00C25DD8 l diff --git a/profile/3.3.5a-windows-386/x64dbg/game.dd32 b/profile/3.3.5a-windows-386/x64dbg/game.dd32 index 5d19e36ba3ec71fde676c2777d754faca38ddb1a..5e87aca24ac9f1356ad707a70d8a2f7c623c8b2e 100644 GIT binary patch delta 15973 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