1
"Pillars of Eternity II: Deadfire (Steam Edition)"
1
10
"Enable"
Auto Assembler Script
[ENABLE]
{$lua}
LaunchMonoDataCollector()
mono_compile_method(mono_getJitInfo(getAddress('Game.UI:UICurrencyLabel:Update')).method)
mono_compile_method(mono_getJitInfo(getAddress('Game.UI:UICharacterCreationManager:GetRemainingAttributePoints')).method)
mono_compile_method(mono_getJitInfo(getAddress('Game.UI:UICharacterExperienceSliderGetter:NotifySelectionChanged')).method)
{$asm}
aobscan(UICurrencyLabelUpdateAOB1,48 8B 04 25 ?? ?? ?? ?? 48 8B C8 48 83 EC 20 83 38 00 49 BB ?? ?? ?? ?? 00 00 00 00 41 FF D3 48 83 C4 20 48 8B C8 83 39 00 48 8B 80 80 00 00 00)
registersymbol(UICurrencyLabelUpdateAOB1)
aobscan(UICurrencyLabelUpdateAOB2,48 8B 80 80 00 00 00 48 83 C0 10 48 8B 08)
registersymbol(UICurrencyLabelUpdateAOB2)
//assert(Game.UI:UICurrencyLabel:Update+E0,48 8B 04 25 ?? ?? ?? ?? 48 8B C8 48 83 EC 20)
//assert(Game.UI:UICurrencyLabel:Update+109,48 8B 80 80 00 00 00 48 83 C0 10 48 8B 08)
alloc(newmem,1024,UICurrencyLabel:Update)
//assert(Game.UI:UICharacterCreationManager:GetRemainingAttributePoints+D4,83 39 00 48 63 40 48 2B C7 48 8D 65 E8 41 5F 5F 5E C9 C3)
aobscanregion(UICharacterCreationManagerGetRemainingAttributePointsAOB,Game.UI:UICharacterCreationManager:GetRemainingAttributePoints,Game.UI:UICharacterCreationManager:GetRemainingAttributePoints+400, 83 39 00 48 63 40 48 2B C7 48 8D 65 E8 41 5F 5F 5E C9 C3 BA BD 00 00 00)
registersymbol(UICharacterCreationManagerGetRemainingAttributePointsAOB)
alloc(newmem2,1024,Game.UI:UICharacterCreationManager:GetRemainingAttributePoints)
//assert(Game.UI:UICharacterExperienceSliderGetter:NotifySelectionChanged+1F8,48 8B 49 38 48 63 49 20 2B CF F2 0F 2A C1)
aobscanregion(UICharacterExperienceSliderGetterNotifySelectionChangedAOB,Game.UI:UICharacterExperienceSliderGetter:NotifySelectionChanged,Game.UI:UICharacterExperienceSliderGetter:NotifySelectionChanged+400, 48 8B 49 38 48 63 49 20 2B CF F2 0F 2A C1)
alloc(newmem3,1024,Game.UI:UICharacterExperienceSliderGetter:NotifySelectionChanged)
///
label(PlayerPtr)
registersymbol(PlayerPtr)
label(PlayerInventoryPtr)
registersymbol(PlayerInventoryPtr)
///
label(CharCreationPtr)
registersymbol(CharCreationPtr)
///
label(PlayerStatsPtr)
registersymbol(PlayerStatsPtr)
label(PlayerStats2Ptr)
registersymbol(PlayerStats2Ptr)
newmem:
mov [PlayerInventoryPtr],rax
mov rax,[rax+00000080]
jmp return
PlayerPtr:
readmem(UICurrencyLabelUpdateAOB1+4,4)
dd 0
PlayerInventoryPtr:
dq 0
newmem2:
mov [CharCreationPtr],rax
mov rax,dword ptr [rax+48]
sub eax,edi
jmp return2
CharCreationPtr:
dq 0
newmem3:
mov [PlayerStatsPtr],rcx
mov rcx,[rcx+38]
mov [PlayerStats2Ptr],rcx
movsxd rcx,dword ptr [rcx+20]
jmp return3
PlayerStatsPtr:
dq 0
PlayerStats2Ptr:
dq 0
UICurrencyLabelUpdateAOB2:
jmp newmem
nop
nop
return:
UICharacterCreationManagerGetRemainingAttributePointsAOB+3:
jmp newmem2
nop
return2:
UICharacterExperienceSliderGetterNotifySelectionChangedAOB:
jmp newmem3
nop
nop
nop
return3:
[DISABLE]
UICurrencyLabelUpdateAOB2:
db 48 8B 80 80 00 00 00
unregistersymbol(PlayerPtr)
unregistersymbol(PlayerInventoryPtr)
unregistersymbol(UICurrencyLabelUpdateAOB1)
unregistersymbol(UICurrencyLabelUpdateAOB2)
UICharacterCreationManagerGetRemainingAttributePointsAOB+3:
db 48 63 40 48 2B C7
unregistersymbol(CharCreationPtr)
unregistersymbol(UICharacterCreationManagerGetRemainingAttributePointsAOB)
UICharacterExperienceSliderGetterNotifySelectionChangedAOB:
db 48 8B 49 38 48 63 49 20
unregistersymbol(PlayerStatsPtr)
unregistersymbol(PlayerStats2Ptr)
unregistersymbol(UICharacterExperienceSliderGetterNotifySelectionChangedAOB)
dealloc(newmem)
dealloc(newmem2)
dealloc(newmem3)
100
"[Scripts]"
1
201
"Damage Modifier (God Mode,One Hit Kill, etc)"
Auto Assembler Script
[ENABLE]
{$lua}
mono_compile_method(mono_getJitInfo(getAddress('Game:AttackBase:CalculateDamage')).method)
{$asm}
/* This block of code calls IsActivePartyMember */
//assert(Game:AttackBase:CalculateDamage+5B2,41 BA ?? ?? ?? ?? 48 83 EC 20)
//assert(Game:AttackBase:CalculateDamage+5E7,48 83 C4 20 85 C0)
aobscanregion(AttackBaseCalculateDamageAOB1,Game:AttackBase:CalculateDamage,Game:AttackBase:CalculateDamage+B43,41 BA ?? ?? ?? ?? 48 83 EC 20 49 BB ?? ?? ?? ?? 00 00 00 00 41 FF D3 48 83 C4 20 48 8B C8 48 8B D7 48 83 EC 20)
registersymbol(AttackBaseCalculateDamageAOB1)
aobscanregion(AttackBaseCalculateDamageAOB2,Game:AttackBase:CalculateDamage,Game:AttackBase:CalculateDamage+B43,48 83 C4 20 85 C0 0F 84 ?? ?? 00 00 48 83 EC 20)
registersymbol(AttackBaseCalculateDamageAOB2)
/* End of this block of code calls IsActivePartyMember */
alloc(newmem2,1024,Game:AttackBase:CalculateDamage)
/* This code calls SetBaseValue */
//assert(Game:AttackBase:CalculateDamage+38A,F3 0F 5A C0 F2 0F 5A E8 F3 0F 11 6D C4)
aobscanregion(AttackBaseCalculateDamageAOB3,Game:AttackBase:CalculateDamage,Game:AttackBase:CalculateDamage+B43,F3 0F 5A C0 F2 0F 5A E8 F3 0F 11 6D C4 83 3E 00 48 8D 86 88 00 00 00)
/* End of this code calls SetBaseValue */
alloc(newmem,2048,Game:AttackBase:CalculateDamage)
///
label(MyCallIsActivePartyMember)
label(GodMode)
registersymbol(GodMode)
label(OneHitKill)
registersymbol(OneHitKill)
label(fEnemyDamageMult)
registersymbol(fEnemyDamageMult)
label(fHeroDamageMult)
registersymbol(fHeroDamageMult)
newmem:
mov [MyCallIsActivePartyMember],1
push rax
push r10
push rdx
jmp AttackBaseCalculateDamageAOB1
ReturnFromMyCallIsActivePartyMember:
mov [MyCallIsActivePartyMember],0
pop rdx
pop r10
test eax,eax
pop rax
je EnemyHit
HeroHit:
cmp [GodMode],1
jne SkipGodMode
xorps xmm0,xmm0
jmp originalcode
SkipGodMode:
cmp [fHeroDamageMult],(float)0.0
je originalcode
movss xmm5,[fHeroDamageMult]
mulss xmm0,xmm5
jmp originalcode
EnemyHit:
cmp [OneHitKill],1
jne SkipOneHitKill
movss xmm0,[OneHitKillDamage]
jmp originalcode
SkipOneHitKill:
cmp [fEnemyDamageMult],(float)0.0
je originalcode
movss xmm5,[fEnemyDamageMult]
mulss xmm0,xmm5
originalcode:
cvtss2sd xmm0,xmm0
cvtsd2ss xmm5,xmm0
jmp return
MyCallIsActivePartyMember:
dq 0
OneHitKillDamage:
dq (float)999.0
GodMode:
dq 1
fHeroDamageMult:
dq (float)0.5
fEnemyDamageMult:
dq (float)2.0
OneHitKill:
dq 0
newmem2:
add rsp,20
cmp [MyCallIsActivePartyMember],1
je ReturnFromMyCallIsActivePartyMember
test eax,eax
jmp return2
AttackBaseCalculateDamageAOB3:
jmp newmem
nop
nop
nop
return:
AttackBaseCalculateDamageAOB2:
jmp newmem2
nop
return2:
[DISABLE]
AttackBaseCalculateDamageAOB3:
db F3 0F 5A C0 F2 0F 5A E8
unregistersymbol(PartyMemberAIPtr)
unregistersymbol(GodMode)
unregistersymbol(fHeroDamageMult)
unregistersymbol(fEnemyDamageMult)
unregistersymbol(OneHitKill)
unregistersymbol(AttackBaseCalculateDamageAOB3)
AttackBaseCalculateDamageAOB2:
db 48 83 C4 20 85 C0
unregistersymbol(AttackBaseCalculateDamageAOB2)
unregistersymbol(AttackBaseCalculateDamageAOB1)
dealloc(newmem)
dealloc(newmem2)
201
"God Mode"
0:Off
1:On
4 Bytes
GodMode
202
"Hero Damage Multiplier (Set to 0.0 = Off; Otherwise multiplier so 0.5 is half damage to hero party)"
Float
fHeroDamageMult
205
"One Hit Kill"
0:Off
1:On
4 Bytes
OneHitKill
206
"Enemy Damage Multiplier (Set to Zero = Off; Otherwise multiplier to damage you deal to enemies)"
Float
fEnemyDamageMult
210
"No Ability Cooldown or Resources Used"
Auto Assembler Script
[ENABLE]
assert(Game:GenericAbility:ConsumeResources+37,85 C0 0F 84 B8 06 00 00 0F B6 86 80 00 00 00)
assert(Game:GenericAbility:StartCooldown+B,F3 0F 11 4C 24 10 F3 0F 10 44 24 10)
alloc(newmem,1024,Game:GenericAbility:StartCooldown)
newmem:
xorps xmm1,xmm1
movss [rsp+10],xmm1
jmp return
Game:GenericAbility:ConsumeResources+39:
db E9 B9 06 00 00 90
Game:GenericAbility:StartCooldown+B:
jmp newmem
nop
return:
[DISABLE]
Game:GenericAbility:ConsumeResources+39:
db 0F 84 B8 06 00 00
Game:GenericAbility:StartCooldown+B:
db F3 0F 11 4C 24 10
215
"Clone Item By Dragging(Move An Item Before Enabling)"
Auto Assembler Script
[ENABLE]
assert(Game:Item:SplitStack+60,85 C0 0F 84 08 00 00 00 48 8B C6)
assert(Game:Item:SplitStack+C3,41 FF D3 48 83 C4 40 48 8B CE)
assert(Game:Item:SplitStack+EF,41 FF D3 48 83 C4 30 48 8B CE)
luaCall(lua_aobscan("BeginDragAOB","","85 C0 0F 84 25 00 00 00 49 8B CE 48 83 EC 20 41 83 3E 00 49 BB ?? ?? ?? ?? 00 00 00 00 41 FF D3 48 83 C4 20 49 89 47 70",1))
//aobscan(BeginDrag,85 C0 0F 84 25 00 00 00 49 8B CE 48 83 EC 20)
Game:Item:SplitStack+62:
db E9 09 00 00 00 90
Game:Item:SplitStack+C3:
db 90 90 90
Game:Item:SplitStack+EF:
db 90 90 90
BeginDragAOB+2:
db E9 26 00 00 00 90
[DISABLE]
Game:Item:SplitStack+62:
db 0F 84 08 00 00 00
Game:Item:SplitStack+C3:
db 41 FF D3
Game:Item:SplitStack+EF:
db 41 FF D3
BeginDragAOB+2:
db 0F 84 25 00 00 00
225
"Change Ability Points On Level Up"
Auto Assembler Script
[ENABLE]
{$lua}
mono_compile_method(mono_getJitInfo(getAddress('Game.UI:UICharacterCreationManager:BeginLevelUp')).method)
{$asm}
aobscanregion(UICharacterCreationManagerBeginLevelUpAOB,Game.UI:UICharacterCreationManager:BeginLevelUp,Game.UI:UICharacterCreationManager:BeginLevelUp+148, 48 89 45 B8 48 8B 86 30 01 00 00 48 8B C8)
registersymbol(UICharacterCreationManagerBeginLevelUpAOB)
alloc(newmem,1024,Game.UI:UICharacterCreationManager:AbilitySelectionState:.ctor)
label(CharacterCreationCharacterPtr)
registersymbol(CharacterCreationCharacterPtr)
newmem:
mov rax,[rsi+00000130]
mov [CharacterCreationCharacterPtr],rax
jmp return
CharacterCreationCharacterPtr:
dq 0
UICharacterCreationManagerBeginLevelUpAOB+4:
jmp newmem
nop
nop
return:
[DISABLE]
UICharacterCreationManagerBeginLevelUpAOB+4:
db 48 8B 86 30 01 00 00
unregistersymbol(UICharacterCreationManagerBeginLevelUpAOB)
unregistersymbol(CharacterCreationCharacterPtr)
dealloc(newmem)
226
"Ability Points 1"
4 Bytes
CharacterCreationCharacterPtr
30
20
10
98
227
"Ability Points 2"
4 Bytes
CharacterCreationCharacterPtr
30
28
10
98
228
"Ability Points 3"
4 Bytes
CharacterCreationCharacterPtr
30
30
10
98
230
"Keep Achievements Enabled When Using Console Commands (IRoll20s To Update Pointer)"
Auto Assembler Script
[ENABLE]
{$lua}
mono_compile_method(mono_getJitInfo(getAddress('Game:CommandLine:IRoll20s')).method)
{$asm}
aobscanregion(CommandLineIRoll20sAOB,Game:CommandLine:IRoll20s,Game:CommandLine:IRoll20s+1F6, 48 8B C8 BA 01 00 00 00 48 83 EC 20)
registersymbol(CommandLineIRoll20sAOB)
alloc(newmem,1024,Game:CommandLine:IRoll20s)
label(AchievementTrackerPtr)
registersymbol(AchievementTrackerPtr)
newmem:
mov rcx,rax
mov [AchievementTrackerPtr],rax
xor rdx,rdx
jmp return
AchievementTrackerPtr:
dq 0
CommandLineIRoll20sAOB:
jmp newmem
nop
nop
nop
return:
[DISABLE]
CommandLineIRoll20sAOB:
db 48 8B C8 BA 01 00 00 00
unregistersymbol(CommandLineIRoll20sAOB)
unregistersymbol(AchievementTrackerPtr)
dealloc(newmem)
231
"Disable Achievements Flag"
0:Off
1:On
4 Bytes
AchievementTrackerPtr
38
38
235
"Maximum Power Level"
Auto Assembler Script
[ENABLE]
{$lua}
mono_compile_method(mono_getJitInfo(getAddress('Game.GameData:CharacterProgressionGameData:GetClassPowerLevel')).method)
{$asm}
//aobscanregion(CharacterProgressionGameDataGetClassPowerLevelAOB,Game.GameData:CharacterProgressionGameData:GetClassPowerLevel,Game.GameData:CharacterProgressionGameData:GetClassPowerLevel+493, 0F B6 45 98 85 C0 0F 84 20 02 00 00 49 8B 47 30)
aobscanregion(CharacterProgressionGameDataGetClassPowerLevelAOB,Game.GameData:CharacterProgressionGameData:GetClassPowerLevel,Game.GameData:CharacterProgressionGameData:GetClassPowerLevel+493, 48 8D 65 E8 41 5F 41 5E 5E C9 C3 00 00)
registersymbol(CharacterProgressionGameDataGetClassPowerLevelAOB)
alloc(newmem,1024,Game.GameData:CharacterProgressionGameData:GetClassPowerLevel)
newmem:
mov rax,#9
lea rsp,[rbp-18]
pop r15
jmp return
CharacterProgressionGameDataGetClassPowerLevelAOB:
jmp newmem
nop
return:
[DISABLE]
CharacterProgressionGameDataGetClassPowerLevelAOB:
db 48 8D 65 E8 41 5F
unregistersymbol(CharacterProgressionGameDataGetClassPowerLevelAOB)
dealloc(newmem)
250
"100% Crew Injury Prevention"
Auto Assembler Script
[ENABLE]
{$lua}
mono_compile_method(mono_getJitInfo(getAddress('Game:ShipState:RollInjuryPrevention')).method)
{$asm}
aobscanregion(ShipStateRollInjuryPreventionAOB,Game:ShipState:RollInjuryPrevention,Game:ShipState:RollInjuryPrevention+98, 83 F8 0A 0F 85 79 00 00 00 48 83 EC 20)
registersymbol(ShipStateRollInjuryPreventionAOB)
ShipStateRollInjuryPreventionAOB+3:
db E9 73 00 00 00 90
[DISABLE]
ShipStateRollInjuryPreventionAOB+3:
db 0F 85 79 00 00 00
unregistersymbol(ShipStateRollInjuryPreventionAOB)
260
"Unlock All Achievements (Use ClearAchievements Console Command After Enabling)"
Auto Assembler Script
[ENABLE]
{$lua}
mono_compile_method(mono_getJitInfo(getAddress('Game:CommandLine:ClearAchievements')).method)
mono_compile_method(mono_getJitInfo(getAddress('Game:AchievementTracker:SetAchievement')).method)
WriteInteger(getAddress('Game:CommandLine:ClearAchievements')+0xE9,getAddress('Game:AchievementTracker:SetAchievement'))
{$asm}
[DISABLE]
2000
"Reputation Manager (View Reputations Sheet To Update Pointer)"
Auto Assembler Script
[ENABLE]
{$lua}
mono_compile_method(mono_getJitInfo(getAddress('Game:ReputationManager:GetReputation')).method)
{$asm}
aobscanregion(ReputationManagerGetReputationAOB,Game:ReputationManager:GetReputation,Game:ReputationManager:GetReputation+86, 48 8B F2 48 C7 45 F0 00 00 00 00 48 8B CE)
registersymbol(ReputationManagerGetReputationAOB)
alloc(newmem,1024,Game:CommandLine:IRoll20s)
label(ReputationManagerPtr)
registersymbol(ReputationManagerPtr)
newmem:
mov [rbp-10],00000000
mov [ReputationManagerPtr],rcx
jmp return
ReputationManagerPtr:
dq 0
ReputationManagerGetReputationAOB+3:
jmp newmem
nop
nop
nop
return:
[DISABLE]
ReputationManagerGetReputationAOB:
db 48 C7 45 F0 00 00 00 00
unregistersymbol(ReputationManagerGetReputationAOB)
unregistersymbol(ReputationManagerPtr)
dealloc(newmem)
2050
"Faction Reputations (Positive)"
1
2051
"Faction #1 Positive"
4 Bytes
ReputationManagerPtr
10
10
20
28
40
2052
"Faction #2 Positive"
4 Bytes
ReputationManagerPtr
10
10
28
28
40
2053
"Faction #3 Positive"
4 Bytes
ReputationManagerPtr
10
10
30
28
40
2054
"Faction #4 Positive"
4 Bytes
ReputationManagerPtr
10
10
38
28
40
2055
"Faction #5 Positive"
4 Bytes
ReputationManagerPtr
10
10
40
28
40
2056
"Faction #6 Positive"
4 Bytes
ReputationManagerPtr
10
10
48
28
40
2057
"Faction #7 Positive"
4 Bytes
ReputationManagerPtr
10
10
50
28
40
2058
"Faction #8 Positive"
4 Bytes
ReputationManagerPtr
10
10
58
28
40
2059
"Faction #9 Positive"
4 Bytes
ReputationManagerPtr
10
10
60
28
40
2060
"Faction #10 Positive"
4 Bytes
ReputationManagerPtr
10
10
68
28
40
2061
"Faction #11 Positive"
4 Bytes
ReputationManagerPtr
10
10
70
28
40
2062
"Faction #12 Positive"
4 Bytes
ReputationManagerPtr
10
10
78
28
40
2063
"Faction #13 Positive"
4 Bytes
ReputationManagerPtr
10
10
80
28
40
2100
"Faction Reputations (Negative)"
1
2101
"Faction #1 Negative"
4 Bytes
ReputationManagerPtr
14
10
20
28
40
2102
"Faction #2 Negative"
4 Bytes
ReputationManagerPtr
14
10
28
28
40
2103
"Faction #3 Negative"
4 Bytes
ReputationManagerPtr
14
10
30
28
40
2104
"Faction #4 Negative"
4 Bytes
ReputationManagerPtr
14
10
38
28
40
2105
"Faction #5 Negative"
4 Bytes
ReputationManagerPtr
14
10
40
28
40
2106
"Faction #6 Negative"
4 Bytes
ReputationManagerPtr
14
10
48
28
40
2107
"Faction #7 Negative"
4 Bytes
ReputationManagerPtr
14
10
50
28
40
2108
"Faction #8 Negative"
4 Bytes
ReputationManagerPtr
14
10
58
28
40
2109
"Faction #9 Negative"
4 Bytes
ReputationManagerPtr
14
10
60
28
40
2110
"Faction #10 Negative"
4 Bytes
ReputationManagerPtr
14
10
68
28
40
2111
"Faction #11 Negative"
4 Bytes
ReputationManagerPtr
14
10
70
28
40
2112
"Faction #12 Negative"
4 Bytes
ReputationManagerPtr
14
10
78
28
40
2113
"Faction #13 Negative"
4 Bytes
ReputationManagerPtr
14
10
80
28
40
2001
"Dispositions"
1
2010
"Aggressive"
4 Bytes
ReputationManagerPtr
20
28
18
20
38
2011
"Benevolent"
4 Bytes
ReputationManagerPtr
24
28
18
20
38
2012
"Clever"
4 Bytes
ReputationManagerPtr
28
28
18
20
38
2013
"Cruel"
4 Bytes
ReputationManagerPtr
2C
28
18
20
38
2014
"Diplomatic"
4 Bytes
ReputationManagerPtr
30
28
18
20
38
2015
"Honest"
4 Bytes
ReputationManagerPtr
34
28
18
20
38
2016
"Passionate"
4 Bytes
ReputationManagerPtr
38
28
18
20
38
2017
"Rational"
4 Bytes
ReputationManagerPtr
3C
28
18
20
38
2018
"Shady"
4 Bytes
ReputationManagerPtr
40
28
18
20
38
2019
"Stoic"
4 Bytes
ReputationManagerPtr
44
28
18
20
38
4000
"Pointers"
1
4001
"Character Creation Attribute Points"
4 Bytes
CharCreationPtr
48
4002
"Character Creation Stat Hard Maximum"
4 Bytes
CharCreationPtr
54
4005
"Money"
4 Bytes
PlayerInventoryPtr
14
80
5000
"Character Editor (View Character Sheet to Update Pointer)"
1
5001
"Experience"
4 Bytes
PlayerStatsPtr
20
38
5002
"Level"
4 Bytes
PlayerStatsPtr
24
38
5003
"Notified Level"
4 Bytes
PlayerStatsPtr
28
38
5004
"Current Health"
Float
PlayerStatsPtr
18
38
1F8
5005
"Invulnerable Flag"
Byte
PlayerStatsPtr
C3
1F8
5010
"Attributes"
1
5011
"Base Dexterity"
4 Bytes
PlayerStatsPtr
60
2A0
5012
"Base Might"
4 Bytes
PlayerStatsPtr
64
2A0
5013
"Base Resolve"
4 Bytes
PlayerStatsPtr
68
2A0
5014
"Base Intellect"
4 Bytes
PlayerStatsPtr
6C
2A0
5015
"Base Perception"
4 Bytes
PlayerStatsPtr
70
2A0
5016
"Base Constitution"
4 Bytes
PlayerStatsPtr
74
2A0
5020
"Skills"
1
5021
"Alchemy"
4 Bytes
PlayerStatsPtr
20
28
30
2A0
5022
"Arcana"
4 Bytes
PlayerStatsPtr
24
28
30
2A0
5023
"Athletics"
4 Bytes
PlayerStatsPtr
28
28
30
2A0
5024
"Bluff"
4 Bytes
PlayerStatsPtr
2C
28
30
2A0
5025
"Diplomacy"
4 Bytes
PlayerStatsPtr
30
28
30
2A0
5026
"Explosives"
4 Bytes
PlayerStatsPtr
34
28
30
2A0
5027
"History"
4 Bytes
PlayerStatsPtr
38
28
30
2A0
5028
"Insight"
4 Bytes
PlayerStatsPtr
3C
28
30
2A0
5029
"Intimidate"
4 Bytes
PlayerStatsPtr
40
28
30
2A0
5030
"Mechanics"
4 Bytes
PlayerStatsPtr
44
28
30
2A0
5031
"Metaphysics"
4 Bytes
PlayerStatsPtr
48
28
30
2A0
5032
"Religion"
4 Bytes
PlayerStatsPtr
4C
28
30
2A0
5033
"Sleight of Hand"
4 Bytes
PlayerStatsPtr
50
28
30
2A0
5034
"Stealth"
4 Bytes
PlayerStatsPtr
54
28
30
2A0
5035
"Streetwise"
4 Bytes
PlayerStatsPtr
58
28
30
2A0
5036
"Survival"
4 Bytes
PlayerStatsPtr
5C
28
30
2A0
function lua_aobscan(name,module,bytes,index)
index = index - 1
if(module == "") then
local resultSet = AOBScan(bytes)
if(resultSet == nil) then
unregisterSymbol(name)
print(name.." not found")
else
unregisterSymbol(name)
registerSymbol(name,resultSet[index])
resultSet.destroy()
end
else
if(getModuleSize(module) == nil) then
print("Module "..module.." not found")
else
local memScanner = createMemScan()
local memFoundList = createFoundList(memScanner)
memScanner.firstScan(
soExactValue,vtByteArray,rtRounded,bytes,nil,
getAddress(module),(getAddress(module)+getModuleSize(module)),"",
fsmNotAligned,"",true,false,false,false)
memScanner.waitTillDone()
memFoundList.initialize()
if(memFoundList.Count == 0) then
unregisterSymbol(name)
print(name.." in module "..module.." not found")
else
unregisterSymbol(name)
registerSymbol(name,memFoundList.Address[index])
end
memScanner.destroy()
memFoundList.destroy()
end
end
end