Immortal Troop seems to be making my enemy's units instead of my own units. I ride in first, get hit, activate immortal troop, put normal health on immortal, go ingame, enemies immortal, my units die. Am I doing something wrong?
No its not your fault, is my fault
Don't know if you're still doing unlimited troop health, but if you want to take part of my script for it, you're welcome to. The code it injects into is loaded in the loading screen before the first battle after you boot up the game, so you don't actually have to take damage for it to work.
It's commented so you can pick it apart however you want to. The structs for the player character are all incredibly cyclical - almost all of them will refer to each other or to themselves multiple times, so it's really easy to get player character parameters from almost anywhere.
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>44</ID>
<Description>"Inf HP Player Team"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
// If CE is loaded after entering battle the first time
// Can also be fixed by running the lua function reinitializeSymbolhandler()
assert(TaleWorlds.MountAndBlade.Agent::set_Health+7F,C4 E1 78 2E C8)
alloc(newmem,$1000,TaleWorlds.MountAndBlade.Agent::set_Health+7F)
label(INJECTTEAMHP)
// If CE is loaded before entering battle the first time
//aobscan(INJECTTEAMHP,C4 E1 78 2E C8) // should be unique
//alloc(newmem,$1000,INJECTTEAMHP)
label(code)
label(return)
registersymbol(INJECTTEAMHP)
alloc(leaderteam,8)
registersymbol(leaderteam)
newmem:
push rax
mov rax,[rsi+000000A8] // _currentAgent:Team
cmp rax,#0 // null pointer exception
je code
mov rax,[rax+A8] // _currentAgent:Team:MBTeam
cmp rax,#0 // null pointer exception
je code
mov rax,[rax+C8] // _mainAgent (stored in _currentAgent:Team:MBTeam)
mov rax,[rax+A8] // _mainAgent:Team
mov rax,[rax+90] // _mainAgent:Team:Side
mov [leaderteam],rax // store _mainAgent:Team:Side
mov rax,[rsi+000000A8] // _currentAgent:Team
mov rax,[rax+90] // _currentAgent:Side
cmp [leaderteam],rax //if _mainAgent:Team:Side == _currentAgent:Team:Side
jne code
vmovss xmm0,[rsi+0000016C] // 168 is _health (current HP)
vmovss xmm2,[rsi+0000016C] // 16C is <HealthLimit> (maximum HP)
vmovss xmm3,[rsi+0000016C] // 168 crashes at start of battle if left on all the time. 16C doesn't
code:
pop rax
vucomiss xmm1,xmm0
jmp return
leaderteam:
dq 0
TaleWorlds.MountAndBlade.Agent::set_Health+7F: //comment out if CE loaded early
INJECTTEAMHP:
jmp newmem
return:
[DISABLE]
INJECTTEAMHP:
db C4 E1 78 2E C8
unregistersymbol(INJECTTEAMHP)
unregistersymbol(leaderteam)
dealloc(newmem)
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>
Thanks fardriel the script works for me so far, and thank you rysefox for the table
Don't know if you're still doing unlimited troop health, but if you want to take part of my script for it, you're welcome to. The code it injects into is loaded in the loading screen before the first battle after you boot up the game, so you don't actually have to take damage for it to work.
It's commented so you can pick it apart however you want to. The structs for the player character are all incredibly cyclical - almost all of them will refer to each other or to themselves multiple times, so it's really easy to get player character parameters from almost anywhere.
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>44</ID>
<Description>"Inf HP Player Team"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
// If CE is loaded after entering battle the first time
// Can also be fixed by running the lua function reinitializeSymbolhandler()
assert(TaleWorlds.MountAndBlade.Agent::set_Health+7F,C4 E1 78 2E C8)
alloc(newmem,$1000,TaleWorlds.MountAndBlade.Agent::set_Health+7F)
label(INJECTTEAMHP)
// If CE is loaded before entering battle the first time
//aobscan(INJECTTEAMHP,C4 E1 78 2E C8) // should be unique
//alloc(newmem,$1000,INJECTTEAMHP)
label(code)
label(return)
registersymbol(INJECTTEAMHP)
alloc(leaderteam,8)
registersymbol(leaderteam)
newmem:
push rax
mov rax,[rsi+000000A8] // _currentAgent:Team
cmp rax,#0 // null pointer exception
je code
mov rax,[rax+A8] // _currentAgent:Team:MBTeam
cmp rax,#0 // null pointer exception
je code
mov rax,[rax+C8] // _mainAgent (stored in _currentAgent:Team:MBTeam)
mov rax,[rax+A8] // _mainAgent:Team
mov rax,[rax+90] // _mainAgent:Team:Side
mov [leaderteam],rax // store _mainAgent:Team:Side
mov rax,[rsi+000000A8] // _currentAgent:Team
mov rax,[rax+90] // _currentAgent:Side
cmp [leaderteam],rax //if _mainAgent:Team:Side == _currentAgent:Team:Side
jne code
vmovss xmm0,[rsi+0000016C] // 168 is _health (current HP)
vmovss xmm2,[rsi+0000016C] // 16C is <HealthLimit> (maximum HP)
vmovss xmm3,[rsi+0000016C] // 168 crashes at start of battle if left on all the time. 16C doesn't
code:
pop rax
vucomiss xmm1,xmm0
jmp return
leaderteam:
dq 0
TaleWorlds.MountAndBlade.Agent::set_Health+7F: //comment out if CE loaded early
INJECTTEAMHP:
jmp newmem
return:
[DISABLE]
INJECTTEAMHP:
db C4 E1 78 2E C8
unregistersymbol(INJECTTEAMHP)
unregistersymbol(leaderteam)
dealloc(newmem)
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>
Thanks fardriel the script works for me so far, and thank you rysefox for the table
thanks for the updates! on other matters... i downloaded the 14 update but none of the options work :s am i doing something wrong?
For Inventory shit you need to be on the map.
For Renown you need to open Clan window first
For Machine stats you need to be in a siege and select a machine