Re: Horizon Forbidden West [Engine:Decima]
Posted: Sat Mar 23, 2024 9:36 pm
Hey, amazing table, thank you! Someone mentioned teleport to waypoint already, just wanted to add a +1 to this if it's possible.
Community Cheat Tables of Cheat Engine
https://fearlessrevolution.com/
tytyBigBear743 wrote: ↑Fri Mar 22, 2024 11:52 pmI thought I made a useless option but glad that somebody have the same idea with me , the table below has a few script that I'm working on, you might wanna change some of the graphic options to achieve better result, I'm currently using FOV = 2 and it look greatTonytotheB82 wrote: ↑Fri Mar 22, 2024 8:11 pmI like the option for sure and the way it's implemented. But I'd like more. I have a large widescreen monitor.Uhuru N'Uru wrote: ↑Fri Mar 22, 2024 6:16 pm
Game already has an FOV slider built in to the setings menu.
Really like the way opening the settings in game still show you the currently paused screen to see the in game effect of each graphics setting.
========================
Table #2 has the instant trial completion. Make sure you follow the step noted in the table, a little bit inconvenience while waiting for Sunbeam's masterpiece
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>256828</ID>
<Description>"Item Quantity Checker (Read <script> notes)"</Description>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : HorizonForbiddenWest.exe
Author : Anon-9
This script attempts to scan for item Quantity. Will cycle through 5 addresses
because some items may scan an extra 4 items.
}
[ENABLE]
aobscanmodule(funItemQtyFinderLocator,HorizonForbiddenWest.exe,6C 4C 8B D1 49 C1 E0 05 4A 8B 4C 01 10) // should be unique
alloc(newmem,$1000,funItemQtyFinderLocator)
label(code)
label(ptrItemQty1 ptrItemQty2 ptrItemQty3 ptrItemQty4 ptrItemQty5)
label(return varItemQtyCounter funItemQtyFinder counterInc)
newmem:
code:
mov rcx,[rcx+r8+10]
cmp byte ptr [varItemQtyCounter],00
jne @f
cmp [ptrItemQty5],rcx
je return
mov [ptrItemQty1],rcx
jmp counterInc
@@:
cmp byte ptr [varItemQtyCounter],01
jne @f
cmp [ptrItemQty1],rcx
je return
mov [ptrItemQty2],rcx
jmp counterInc
@@:
cmp byte ptr [varItemQtyCounter],02
jne @f
cmp [ptrItemQty2],rcx
je return
mov [ptrItemQty3],rcx
jmp counterInc
@@:
cmp byte ptr [varItemQtyCounter],03
jne @f
cmp [ptrItemQty3],rcx
je return
mov [ptrItemQty4],rcx
jmp counterInc
@@:
cmp [ptrItemQty4],rcx
je return
mov [ptrItemQty5],rcx
mov byte ptr [varItemQtyCounter],00
jmp return
@@:
counterInc:
inc [varItemQtyCounter]
jmp return
jmp return
varItemQtyCounter:
dq 0
ptrItemQty1:
dq 0
ptrItemQty2:
dq 0
ptrItemQty3:
dq 0
ptrItemQty4:
dq 0
ptrItemQty5:
dq 0
funItemQtyFinderLocator+08:
funItemQtyFinder:
jmp newmem
return:
registersymbol(funItemQtyFinder)
registersymbol(ptrItemQty1 ptrItemQty2 ptrItemQty3 ptrItemQty4 ptrItemQty5)
[DISABLE]
funItemQtyFinder:
db 4A 8B 4C 01 10
unregistersymbol(funItemQtyFinder)
unregistersymbol(ptrItemQty1 ptrItemQty2 ptrItemQty3 ptrItemQty4 ptrItemQty5)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: HorizonForbiddenWest.exe+11FD0B4
HorizonForbiddenWest.exe+11FD0B0: 49 C1 E0 05 - shl r8,05
// ---------- INJECTING HERE ----------
HorizonForbiddenWest.exe+11FD0B4: 4A 8B 4C 01 10 - mov rcx,[rcx+r8+10]
// ---------- DONE INJECTING ----------
funItemQtyLocation: 03 79 50 - add edi,[rcx+50]
HorizonForbiddenWest.exe+11FD0BC: 8D 48 01 - lea ecx,[rax+01]
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>256829</ID>
<Description>"Qty"</Description>
<LastState Value="50" RealAddress="1ECAD890110"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>ptrItemQty1</Address>
<Offsets>
<Offset>50</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>256830</ID>
<Description>"Qty 2"</Description>
<LastState Value="8" RealAddress="1EED9DB2210"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>ptrItemQty2</Address>
<Offsets>
<Offset>50</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>256831</ID>
<Description>"Qty 3"</Description>
<LastState Value="15" RealAddress="1ECB15A1910"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>ptrItemQty3</Address>
<Offsets>
<Offset>50</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>256832</ID>
<Description>"Qty 4"</Description>
<LastState Value="30" RealAddress="1ECB15A1550"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>ptrItemQty4</Address>
<Offsets>
<Offset>50</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>256833</ID>
<Description>"Qty 5"</Description>
<LastState Value="1" RealAddress="1ED2B6C28D0"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>ptrItemQty5</Address>
<Offsets>
<Offset>50</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
sadly this can't modify coil , but still a great code nice workanon9 wrote: ↑Sun Mar 24, 2024 3:18 amDon't know if this already exists or if this will be helpful to anyone, but I made a script to help find item quantities. Note that this one is for inventory items. Stash items are different.
It will cycle through the last 5 items since some items will proc multiple times. I do have an alternate version that does extra checking, but tries to keep everything in the same order instead of cycling.
Code: Select all
<?xml version="1.0" encoding="utf-8"?> <CheatTable> <CheatEntries> <CheatEntry> <ID>256828</ID> <Description>"Item Quantity Checker (Read <script> notes)"</Description> <LastState Activated="1"/> <VariableType>Auto Assembler Script</VariableType> <AssemblerScript>{ Game : HorizonForbiddenWest.exe Author : Anon-9 This script attempts to scan for item Quantity. Will cycle through 5 addresses because some items may scan an extra 4 items. } [ENABLE] aobscanmodule(funItemQtyFinderLocator,HorizonForbiddenWest.exe,6C 4C 8B D1 49 C1 E0 05 4A 8B 4C 01 10) // should be unique alloc(newmem,$1000,funItemQtyFinderLocator) label(code) label(ptrItemQty1 ptrItemQty2 ptrItemQty3 ptrItemQty4 ptrItemQty5) label(return varItemQtyCounter funItemQtyFinder counterInc) newmem: code: mov rcx,[rcx+r8+10] cmp byte ptr [varItemQtyCounter],00 jne @f cmp [ptrItemQty5],rcx je return mov [ptrItemQty1],rcx jmp counterInc @@: cmp byte ptr [varItemQtyCounter],01 jne @f cmp [ptrItemQty1],rcx je return mov [ptrItemQty2],rcx jmp counterInc @@: cmp byte ptr [varItemQtyCounter],02 jne @f cmp [ptrItemQty2],rcx je return mov [ptrItemQty3],rcx jmp counterInc @@: cmp byte ptr [varItemQtyCounter],03 jne @f cmp [ptrItemQty3],rcx je return mov [ptrItemQty4],rcx jmp counterInc @@: cmp [ptrItemQty4],rcx je return mov [ptrItemQty5],rcx mov byte ptr [varItemQtyCounter],00 jmp return @@: counterInc: inc [varItemQtyCounter] jmp return jmp return varItemQtyCounter: dq 0 ptrItemQty1: dq 0 ptrItemQty2: dq 0 ptrItemQty3: dq 0 ptrItemQty4: dq 0 ptrItemQty5: dq 0 funItemQtyFinderLocator+08: funItemQtyFinder: jmp newmem return: registersymbol(funItemQtyFinder) registersymbol(ptrItemQty1 ptrItemQty2 ptrItemQty3 ptrItemQty4 ptrItemQty5) [DISABLE] funItemQtyFinder: db 4A 8B 4C 01 10 unregistersymbol(funItemQtyFinder) unregistersymbol(ptrItemQty1 ptrItemQty2 ptrItemQty3 ptrItemQty4 ptrItemQty5) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: HorizonForbiddenWest.exe+11FD0B4 HorizonForbiddenWest.exe+11FD0B0: 49 C1 E0 05 - shl r8,05 // ---------- INJECTING HERE ---------- HorizonForbiddenWest.exe+11FD0B4: 4A 8B 4C 01 10 - mov rcx,[rcx+r8+10] // ---------- DONE INJECTING ---------- funItemQtyLocation: 03 79 50 - add edi,[rcx+50] HorizonForbiddenWest.exe+11FD0BC: 8D 48 01 - lea ecx,[rax+01] } </AssemblerScript> <CheatEntries> <CheatEntry> <ID>256829</ID> <Description>"Qty"</Description> <LastState Value="50" RealAddress="1ECAD890110"/> <ShowAsSigned>0</ShowAsSigned> <VariableType>4 Bytes</VariableType> <Address>ptrItemQty1</Address> <Offsets> <Offset>50</Offset> </Offsets> </CheatEntry> <CheatEntry> <ID>256830</ID> <Description>"Qty 2"</Description> <LastState Value="8" RealAddress="1EED9DB2210"/> <ShowAsSigned>0</ShowAsSigned> <VariableType>4 Bytes</VariableType> <Address>ptrItemQty2</Address> <Offsets> <Offset>50</Offset> </Offsets> </CheatEntry> <CheatEntry> <ID>256831</ID> <Description>"Qty 3"</Description> <LastState Value="15" RealAddress="1ECB15A1910"/> <ShowAsSigned>0</ShowAsSigned> <VariableType>4 Bytes</VariableType> <Address>ptrItemQty3</Address> <Offsets> <Offset>50</Offset> </Offsets> </CheatEntry> <CheatEntry> <ID>256832</ID> <Description>"Qty 4"</Description> <LastState Value="30" RealAddress="1ECB15A1550"/> <ShowAsSigned>0</ShowAsSigned> <VariableType>4 Bytes</VariableType> <Address>ptrItemQty4</Address> <Offsets> <Offset>50</Offset> </Offsets> </CheatEntry> <CheatEntry> <ID>256833</ID> <Description>"Qty 5"</Description> <LastState Value="1" RealAddress="1ED2B6C28D0"/> <ShowAsSigned>0</ShowAsSigned> <VariableType>4 Bytes</VariableType> <Address>ptrItemQty5</Address> <Offsets> <Offset>50</Offset> </Offsets> </CheatEntry> </CheatEntries> </CheatEntry> </CheatEntries> </CheatTable>
There are certain options that are available on other modes that are not available on Ultra Hard such as enemy health bars, the range at which enemies detect you, etc.
Aim Assist is also disabled on Ultra Hard. Actually, having those disabled featured available on Ultra Hard would be nice.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>256823</ID>
<Description>"enable"</Description>
<Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
<LastState Activated="1"/>
<Color>808000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
define(slowmokey1default,06)
define(slowmospeed1default,(float)0.25)
define(slowmokey2default,05)
define(slowmospeed2default,(float)0.5)
aobscanmodule(currentArrowReadAOB,HorizonForbiddenWest.exe,8B ** ** 48 ** ** ** 83 ** ** 00 74 ** 48 ** ** ** 00 75)
registersymbol(currentArrowReadAOB)
label(pCArrows)
registersymbol(pCArrows)
alloc(newmem,2048,currentArrowReadAOB) //"HorizonForbiddenWest.exe"+129942D)
label(returnhere)
label(originalcode_currentArrowReadAOB)
registersymbol(originalcode_currentArrowReadAOB)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
push rdx
mov rdx,pCArrows
mov [rdx],rax
pop rdx
originalcode_currentArrowReadAOB:
readmem(currentArrowReadAOB,7)
//mov ebx,[rax+28]
//mov rax,[rdi+30]
exit:
jmp returnhere
///
pCArrows:
///
currentArrowReadAOB: //"HorizonForbiddenWest.exe"+129942D:
jmp newmem
nop 2
returnhere:
///**************************************///
aobscanmodule(gameSpeedCWriteAOB,HorizonForbiddenWest.exe,C5 FA * * * * 00 00 C5 * * * 33 * C5 * * * C5 * * * * * * * * * * * * * * * * * * * * * * * * * C3)
registersymbol(gameSpeedCWriteAOB)
label(pGameSpeed)
registersymbol(pGameSpeed)
label(dCustGameSpeed)
registersymbol(dCustGameSpeed)
label(dSlowMoKey1ID)
registersymbol(dSlowMoKey1ID)
label(bSlowMoKey1Pressed)
registersymbol(bSlowMoKey1Pressed)
label(dCustGameSpeed1)
registersymbol(dCustGameSpeed1)
label(dSlowMoKey2ID)
registersymbol(dSlowMoKey2ID)
label(bSlowMoKey2Pressed)
registersymbol(bSlowMoKey2Pressed)
label(dCustGameSpeed2)
registersymbol(dCustGameSpeed2)
alloc(newmem2,2048,gameSpeedCWriteAOB) //"HorizonForbiddenWest.exe"+D5B252)
label(returnhere2)
label(originalcode2_gameSpeedCWriteAOB)
registersymbol(originalcode2_gameSpeedCWriteAOB)
label(exit2)
newmem2: //this is allocated memory, you have read,write,execute access
//place your code here
push rax
db 48 8D
readmem(gameSpeedCWriteAOB+3,5)
//lea rax,[rcx+80]
push rax
mov rax,pGameSpeed
pop [rax]
mov rax,dCustGameSpeed
mulss xmm0,[rax]
mov rax,bSlowMoKey1Pressed
cmp byte ptr [rax],1
je @f
mov rax,bSlowMoKey2Pressed
cmp byte ptr [rax],1
je @f
jmp end2
@@:
mulss xmm0,[rax+4]
end2:
pop rax
originalcode2_gameSpeedCWriteAOB:
readmem(gameSpeedCWriteAOB,8)
//vmovss [rcx+00000080],xmm0
exit2:
jmp returnhere2
///
pGameSpeed:
dq 0
dCustGameSpeed:
dd (float)1
dSlowMoKey1ID:
dd slowmokey1default
bSlowMoKey1Pressed:
dd 0
dCustGameSpeed1:
dd slowmospeed1default
dSlowMoKey2ID:
dd slowmokey2default
bSlowMoKey2Pressed:
dd 0
dCustGameSpeed2:
dd slowmospeed2default
///
gameSpeedCWriteAOB: //"HorizonForbiddenWest.exe"+D5B252:
jmp newmem2
nop 3
returnhere2:
///**************************************///
aobscanmodule(playerBaseRead2AOB,$process,48 * * * * 00 00 48 * * FF * * 84 C0 0F 85 * * * * 48 * * * * 00 00 48 * * FF * * 84 C0 0F 85)
registersymbol(playerBaseRead2AOB)
label(pPlayerBase)
registersymbol(pPlayerBase)
alloc(newmem3,2048,playerBaseRead2AOB) //"HorizonForbiddenWest.exe"+1419B91)
label(returnhere3)
label(originalcode3_playerBaseRead2AOB)
registersymbol(originalcode3_playerBaseRead2AOB)
label(exit3)
newmem3: //this is allocated memory, you have read,write,execute access
//place your code here
readmem(playerBaseRead2AOB,2)
db 81
readmem(playerBaseRead2AOB+3,4)
//mov rax,[rcx+00000400]
push rax
mov rax,pPlayerBase
pop [rax]
originalcode3_playerBaseRead2AOB:
readmem(playerBaseRead2AOB,7)
//mov rcx,[rcx+00000400]
exit3:
jmp returnhere3
///
pPlayerBase:
///
playerBaseRead2AOB: //"HorizonForbiddenWest.exe"+1419B91:
jmp newmem3
nop 2
returnhere3:
///**************************************///
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
currentArrowReadAOB: //"HorizonForbiddenWest.exe"+129942D:
readmem(originalcode_currentArrowReadAOB,7)
//db 8B 58 28 48 8B 47 30
//mov ebx,[rax+28]
//mov rax,[rdi+30]
unregistersymbol(originalcode_currentArrowReadAOB)
unregistersymbol(pCArrows)
///**************************************///
dealloc(newmem2)
gameSpeedCWriteAOB: //"HorizonForbiddenWest.exe"+D5B252:
readmem(originalcode2_gameSpeedCWriteAOB,8)
//db C5 FA 11 81 80 00 00 00
//vmovss [rcx+00000080],xmm0
unregistersymbol(originalcode2_gameSpeedCWriteAOB)
unregistersymbol(pGameSpeed)
unregistersymbol(dCustGameSpeed)
unregistersymbol(dSlowMoKey1ID)
unregistersymbol(dSlowMoKey2ID)
unregistersymbol(bSlowMoKey1Pressed)
unregistersymbol(dCustGameSpeed1)
unregistersymbol(bSlowMoKey2Pressed)
unregistersymbol(dCustGameSpeed2)
///**************************************///
dealloc(newmem3)
playerBaseRead2AOB: //"HorizonForbiddenWest.exe"+1419B91:
readmem(originalcode3_playerBaseRead2AOB,7)
//db 48 8B 89 00 04 00 00
//mov rcx,[rcx+00000400]
unregistersymbol(originalcode3_playerBaseRead2AOB)
unregistersymbol(pPlayerBase)
///**************************************///
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>256829</ID>
<Description>"undead"</Description>
<Options moAlwaysHideChildren="1" moAllowManualCollapseAndExpand="1"/>
<LastState Activated="1"/>
<Color>808000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(healthReadOnHitAOB,$process,FF * * 48 * * 74 * 48 * * * * 00 00 48 * * 74 * C5 * * * * C5 * * * * * * * 76)
registersymbol(healthReadOnHitAOB)
label(dMinHealth)
registersymbol(dMinHealth)
alloc(newmem,2048,healthReadOnHitAOB+14) //"HorizonForbiddenWest.exe"+11C62C3)
label(returnhere)
label(originalcode_healthReadOnHitAOB)
registersymbol(originalcode_healthReadOnHitAOB)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
push rdx
mov rdx,pPlayerBase
mov rdx,[rdx]
test rdx,rdx
jz @f
cmp [rdx+48],rbx
jne @f
mov rdx,dMinHealth
vmovss xmm0,[rdx]
addss xmm0,xmm2
maxss xmm0,[rax+74]
vmovss [rax+74],xmm0
end:
pop rdx
originalcode_healthReadOnHitAOB:
readmem(healthReadOnHitAOB+14,5)
//vmovss xmm0,[rax+74]
exit:
jmp returnhere
///
dMinHealth:
dd (Float)1
///
healthReadOnHitAOB+14: //"HorizonForbiddenWest.exe"+11C62C3:
jmp newmem
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
healthReadOnHitAOB+14: //"HorizonForbiddenWest.exe"+11C62C3:
readmem(originalcode_healthReadOnHitAOB,5)
//db C5 FA 10 40 74
//vmovss xmm0,[rax+74]
unregistersymbol(originalcode_healthReadOnHitAOB)
unregistersymbol(dMinHealth)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>256830</ID>
<Description>"dMinHealth"</Description>
<LastState Value="1" RealAddress="7FF75E040048"/>
<ShowAsSigned>0</ShowAsSigned>
<Color>008000</Color>
<VariableType>Float</VariableType>
<Address>dMinHealth</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>16757</ID>
<Description>"inf. arrows / bombs / traps"</Description>
<LastState Activated="1"/>
<Color>808000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(arrowsReadOnFireAOB,HorizonForbiddenWest.exe,44 * * * 85 * 75 * 41 * * 41)
registersymbol(arrowsReadOnFireAOB)
alloc(newmem,2048,arrowsReadOnFireAOB) //"HorizonForbiddenWest.exe"+11FC702)
label(returnhere)
label(originalcode_arrowsReadOnFireAOB)
registersymbol(originalcode_arrowsReadOnFireAOB)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov r14,pCArrows
mov r14,[r14]
lea r14,[r14-28]
cmp r14,rdi
jne @f
mov r14d,ebx
inc r14d
cmp [rdi+50],r14d
jge @f
mov [rdi+50],r14d
originalcode_arrowsReadOnFireAOB:
readmem(arrowsReadOnFireAOB,6)
//mov r14d,[rdi+50]
//test ebx,ebx
exit:
jmp returnhere
arrowsReadOnFireAOB: //"HorizonForbiddenWest.exe"+11FC702:
jmp newmem
nop
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
arrowsReadOnFireAOB: //"HorizonForbiddenWest.exe"+11FC702:
readmem(originalcode_arrowsReadOnFireAOB,6)
//db 44 8B 77 50 85 DB
//mov r14d,[rdi+50]
//test ebx,ebx
unregistersymbol(originalcode_arrowsReadOnFireAOB)
///
//"HorizonForbiddenWest.exe"+D4E11B
///
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>256845</ID>
<Description>"ignore crafting materials"</Description>
<LastState Activated="1"/>
<Color>808000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(individualMaterialSufficientChkOnCraftAccessCallerAOB,$process,FF * * 33 * 40 * * * 84 C0 0F)
registersymbol(individualMaterialSufficientChkOnCraftAccessCallerAOB)
alloc(newmem,2048,individualMaterialSufficientChkOnCraftAccessCallerAOB+3) //"HorizonForbiddenWest.exe"+12058AF)
label(returnhere)
label(originalcode_individualMaterialSufficientChkOnCraftAccessCallerAOB)
registersymbol(originalcode_individualMaterialSufficientChkOnCraftAccessCallerAOB)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov al,1
originalcode_individualMaterialSufficientChkOnCraftAccessCallerAOB:
readmem(individualMaterialSufficientChkOnCraftAccessCallerAOB+3,6)
//xor edx,edx
//movzx ecx,dil
exit:
jmp returnhere
///
individualMaterialSufficientChkOnCraftAccessCallerAOB+3: //"HorizonForbiddenWest.exe"+12058AF:
jmp newmem
nop
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
individualMaterialSufficientChkOnCraftAccessCallerAOB+3: //"HorizonForbiddenWest.exe"+12058AF:
readmem(originalcode_individualMaterialSufficientChkOnCraftAccessCallerAOB,6)
//db 33 D2 40 0F B6 CF
//xor edx,edx
//movzx ecx,dil
unregistersymbol(originalcode_individualMaterialSufficientChkOnCraftAccessCallerAOB)
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>16635</ID>
<Description>"game speed mod"</Description>
<Options moHideChildren="1"/>
<LastState Activated="1"/>
<Color>808000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript Async="1">[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
define(slowmokey1default,12)
define(slowmospeed1default,(float)0.35)
define(slowmokey2default,06)
define(slowmospeed2default,(float)0.5)
///
dCustGameSpeed:
dd (float)1
dSlowMoKey1ID:
dd slowmokey1default
bSlowMoKey1Pressed:
dd 0
dCustGameSpeed1:
dd slowmospeed1default
dSlowMoKey2ID:
dd slowmokey2default
bSlowMoKey2Pressed:
dd 0
dCustGameSpeed2:
dd slowmospeed2default
///
///********************************************///
//modified from ShyTwig16's lua keylistener script
//http://fearlessrevolution.com/viewtopic.php?f=4&t=6041&start=60#p62657
{$lua}
local function slowMoKeysLuaThread(threadr2)
while SlowMoKeysLuaThreadLoop do
sleep(100)
addrr2 = getAddressSafe('bSlowMoKey1Pressed')
addrr3 = getAddressSafe('bSlowMoKey2Pressed')
addrr4 = getAddressSafe('dSlowMoKey1ID')
addrr5 = getAddressSafe('dSlowMoKey2ID')
if addrr2 and addrr4 then
if ( isKeyPressed( readInteger(addrr4) ) ) then
writeBytes(addrr2, 1)
else
writeBytes(addrr2, 0)
end
end
if addrr3 and addrr5 then
if ( isKeyPressed( readInteger(addrr5) ) ) then
writeBytes(addrr3, 1)
else
writeBytes(addrr3, 0)
end
end
end
threadr2.terminate()
end
----------------------------------
if syntaxcheck then return end
SlowMoKeysLuaThreadLoop = true
createThread(slowMoKeysLuaThread)
{$asm}
///********************************************///
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
{$lua}
if syntaxcheck then return end
SlowMoKeysLuaThreadLoop = false
{$asm}
///********************************************///
dCustGameSpeed:
dd (float)1
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>16755</ID>
<Description>"custom game speed multiplier"</Description>
<LastState Value="1" RealAddress="7FF75E070069"/>
<Color>008000</Color>
<VariableType>Float</VariableType>
<Address>dCustGameSpeed</Address>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>20</Key>
<Key>111</Key>
</Keys>
<Value>0.2</Value>
<ID>0</ID>
</Hotkey>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>20</Key>
<Key>106</Key>
</Keys>
<Value>0.4</Value>
<ID>1</ID>
</Hotkey>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>20</Key>
<Key>109</Key>
</Keys>
<Value>0.6</Value>
<ID>2</ID>
</Hotkey>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>20</Key>
<Key>107</Key>
</Keys>
<Value>0.8</Value>
<ID>3</ID>
</Hotkey>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>20</Key>
<Key>110</Key>
</Keys>
<Value>1</Value>
<ID>4</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<ID>16641</ID>
<Description>"mod key1's speed override mod key2's speed"</Description>
<LastState Value="" RealAddress="00000000"/>
<Color>808080</Color>
<GroupHeader>1</GroupHeader>
</CheatEntry>
<CheatEntry>
<ID>16637</ID>
<Description>"mod key1"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">10:SHIFT key
11:CTRL key
12:ALT key
14:CAPS LOCK key
02:Right Mouse Button
04:Middle Mouse Button
05:X1 Mouse Button
06:X2 Moust Button
09:TAB key
</DropDownList>
<LastState Value="12" RealAddress="7FF75E07006D"/>
<ShowAsHex>1</ShowAsHex>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>dSlowMoKey1ID</Address>
<CheatEntries>
<CheatEntry>
<ID>16638</ID>
<Description>"speed multiplier"</Description>
<LastState Value="0.349999994" RealAddress="7FF75E070075"/>
<Color>008000</Color>
<VariableType>Float</VariableType>
<Address>+8</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>16639</ID>
<Description>"mod key2"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">10:SHIFT key
11:CTRL key
12:ALT key
14:CAPS LOCK key
02:Right Mouse Button
04:Middle Mouse Button
05:X1 Mouse Button
06:X2 Moust Button
09:TAB key
</DropDownList>
<LastState Value="06" RealAddress="7FF75E070079"/>
<ShowAsHex>1</ShowAsHex>
<Color>008000</Color>
<VariableType>Byte</VariableType>
<Address>dSlowMoKey2ID</Address>
<CheatEntries>
<CheatEntry>
<ID>16640</ID>
<Description>"speed multiplier"</Description>
<LastState Value="0.5" RealAddress="7FF75E070081"/>
<Color>008000</Color>
<VariableType>Float</VariableType>
<Address>+8</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Thanks a lot!
I'am in the same boatLydiaUnchained wrote: ↑Sun Mar 24, 2024 12:36 pmHas anyone found the values for the timers? (I'm looking for something to stop the timer in the fighting pits challenges)
Thanks! The second option is what I was looking for. You nailed it on the head with the OCD thing lol. Appreciate the help and looking forward to everything else you come up with.SunBeam wrote: ↑Fri Mar 22, 2024 6:18 pmSure. If you have the "[Player] Infinite Clip / Infinite Ammo / Fast Fire" script active, disable it first. Then open the script by right-clicking it, and Change script. Everywhere you see 0x30 change it to 0x28 (lines 12 and 16). Click OK to close script editing, then activate the script. Your bow ammo will now stay at 2, will decrease just 1 time as you shoot and automatically refill back to 2 after the shot's done. But no more rapid fire. There you go, if you can live without seeing the entire ammo stockpiled at the bottom-right of the screen, that should do it
EDIT: And if your OCD is too powerful, then, for THIS version of the game:
Copy and paste the above into CE's GUI. A new entry will be created, called "Infinite Ammo / Bow Clip". Now use the new script instead of the other one.Code: Select all
<?xml version="1.0" encoding="utf-8"?> <CheatTable> <CheatEntries> <CheatEntry> <ID>0</ID> <Description>"Infinite Ammo / Bow Clip"</Description> <LastState/> <VariableType>Auto Assembler Script</VariableType> <AssemblerScript>[ENABLE] HorizonForbiddenWest.exe+129A606: xor edi,edi nop 1 [DISABLE] HorizonForbiddenWest.exe+129A606: cmovne edi,esi </AssemblerScript> </CheatEntry> </CheatEntries> </CheatTable>