Re: [COMPLETED] [Request] Rune Factory 5
Posted: Thu Jul 21, 2022 7:08 pm
I think it's 40 max for each dragon since the upgrades allow you to have up to 20 monsters in both barns.
Community Cheat Tables of Cheat Engine
https://fearlessrevolution.com/
i curious about since ur table can edit lazy pointer, did that mean we can edit some event flag to make doug n magarret appear?Cake-san wrote: ↑Thu Jul 14, 2022 8:19 am[Options]
- Pointers
- AddItemToRucksack
- Plant Instant Growth
- etc
///
Update 1
- All Item Max Level (Except Equipment) (Might crash the game)
- Soil Watered&Cultivated
- Set Max Soil Stat
- DoShipping
- Save Anywhere
- Disable Furniture Collision
- Easy Tame Monster
- Easy Catch Monster
Note: If dev decided to update the game you can activate "Update_Symbol" script locate inside hidden/blank description group record & then save the table....
if you still have issues
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>39731</ID>
<Description>"Multipliers"</Description>
<Options moHideChildren="1"/>
<LastState Value="" RealAddress="00000000"/>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>39727</ID>
<Description>"Skill Exp Multiplier"</Description>
<Options moHideChildren="1"/>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Rune Factory 5.exe
Version:
Date : 2022-07-22
Author : Algester
This script does blah blah blah
}
[ENABLE]
aobscanmodule(SkillExpMultiplier,GameAssembly.dll,89 43 10 40 32 ED) // should be unique
alloc(newmem,$1000,SkillExpMultiplier)
label(code)
label(return EXPMult)
registersymbol(SkillExpMultiplier EXPMult)
newmem:
code:
push ecx
mov ecx,[rbx+10]
sub eax,ecx
imul eax,[EXPMult]
add eax,ecx
pop ecx
mov [rbx+10],eax
xor bpl,bpl
jmp return
EXPMult:
dd #10
SkillExpMultiplier:
jmp newmem
nop
return:
[DISABLE]
SkillExpMultiplier:
db 89 43 10 40 32 ED
unregistersymbol(SkillExpMultiplier EXPMult)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+DBF31B
GameAssembly.dll+DBF2F3: F6 81 2F 01 00 00 02 - test byte ptr [rcx+0000012F],02
GameAssembly.dll+DBF2FA: 74 0E - je GameAssembly.dll+DBF30A
GameAssembly.dll+DBF2FC: 83 B9 E0 00 00 00 00 - cmp dword ptr [rcx+000000E0],00
GameAssembly.dll+DBF303: 75 05 - jne GameAssembly.dll+DBF30A
GameAssembly.dll+DBF305: E8 06 7B 32 FF - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+DBF30A: 43 8D 0C 3E - lea ecx,[r14+r15]
GameAssembly.dll+DBF30E: 45 33 C9 - xor r9d,r9d
GameAssembly.dll+DBF311: 44 8B C5 - mov r8d,ebp
GameAssembly.dll+DBF314: 33 D2 - xor edx,edx
GameAssembly.dll+DBF316: E8 E5 37 CA 00 - call UnityEngine:Mathf:Clamp2
// ---------- INJECTING HERE ----------
GameAssembly.dll+DBF31B: 89 43 10 - mov [rbx+10],eax
// ---------- DONE INJECTING ----------
GameAssembly.dll+DBF31E: 40 32 ED - xor bpl,bpl
GameAssembly.dll+DBF321: 8B 43 10 - mov eax,[rbx+10]
GameAssembly.dll+DBF324: 3B C7 - cmp eax,edi
GameAssembly.dll+DBF326: 7C 73 - jl GameAssembly.dll+DBF39B
GameAssembly.dll+DBF328: 2B C7 - sub eax,edi
GameAssembly.dll+DBF32A: 89 43 10 - mov [rbx+10],eax
GameAssembly.dll+DBF32D: FF 43 14 - inc [rbx+14]
GameAssembly.dll+DBF330: 48 8B 0D E9 B2 29 02 - mov rcx,[GameAssembly.dll+305A620]
GameAssembly.dll+DBF337: F6 81 2F 01 00 00 02 - test byte ptr [rcx+0000012F],02
GameAssembly.dll+DBF33E: 74 0E - je GameAssembly.dll+DBF34E
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>39728</ID>
<Description>"Multiply by"</Description>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>EXPMult</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>39729</ID>
<Description>"Stone Stored x10"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Rune Factory 5.exe
Version:
Date : 2022-07-22
Author : Algester
This script does blah blah blah
}
[ENABLE]
aobscanmodule(StoneAdd,GameAssembly.dll,89 43 38 48 8B 5C 24 30 48 83 C4 20 5F C3 E8 5E) // should be unique
alloc(newmem,$1000,StoneAdd)
label(code)
label(return skip)
newmem:
code:
cmp eax,[rbx+38]
jl skip
push ecx
mov ecx,[rbx+38]
sub eax,ecx
imul eax,#30
add eax,ecx
pop ecx
skip:
mov [rbx+38],eax
mov rbx,[rsp+30]
jmp return
StoneAdd:
jmp newmem
nop 3
return:
registersymbol(StoneAdd)
[DISABLE]
StoneAdd:
db 89 43 38 48 8B 5C 24 30
unregistersymbol(StoneAdd skip)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+12CD81F
GameAssembly.dll+12CD7FA: 83 B9 E0 00 00 00 00 - cmp dword ptr [rcx+000000E0],00
GameAssembly.dll+12CD801: 75 05 - jne GameAssembly.dll+12CD808
GameAssembly.dll+12CD803: E8 08 96 E1 FE - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+12CD808: 45 33 C9 - xor r9d,r9d
GameAssembly.dll+12CD80B: 33 D2 - xor edx,edx
GameAssembly.dll+12CD80D: 41 B8 50 C3 00 00 - mov r8d,0000C350
GameAssembly.dll+12CD813: 8B CF - mov ecx,edi
GameAssembly.dll+12CD815: E8 E6 52 79 00 - call UnityEngine:Mathf:Clamp2
GameAssembly.dll+12CD81A: 48 85 DB - test rbx,rbx
GameAssembly.dll+12CD81D: 74 0E - je GameAssembly.dll+12CD82D
// ---------- INJECTING HERE ----------
GameAssembly.dll+12CD81F: 89 43 38 - mov [rbx+38],eax
// ---------- DONE INJECTING ----------
GameAssembly.dll+12CD822: 48 8B 5C 24 30 - mov rbx,[rsp+30]
GameAssembly.dll+12CD827: 48 83 C4 20 - add rsp,20
GameAssembly.dll+12CD82B: 5F - pop rdi
GameAssembly.dll+12CD82C: C3 - ret
GameAssembly.dll+12CD82D: E8 5E 30 E9 FE - call GameAssembly.dll+160890
GameAssembly.dll+12CD832: CC - int 3
GameAssembly.dll+12CD833: CC - int 3
GameAssembly.dll+12CD834: CC - int 3
GameAssembly.dll+12CD835: CC - int 3
GameAssembly.dll+12CD836: CC - int 3
}
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>39730</ID>
<Description>"Wood Store x10"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Rune Factory 5.exe
Version:
Date : 2022-07-22
Author : Algester
This script does blah blah blah
}
[ENABLE]
aobscanmodule(WoodAdd,GameAssembly.dll,89 43 3C 48 8B 5C 24 30 48 83 C4 20 5F C3 E8 1E) // should be unique
alloc(newmem,$1000,WoodAdd)
label(code)
label(return skip)
registersymbol(WoodAdd)
newmem:
code:
//check
cmp eax,[rbx+3C]
jl skip
//multiply
push ecx
mov ecx,[rbx+3C]
sub eax,ecx
imul eax,#30
add eax,ecx
pop ecx
//end
skip:
mov [rbx+3C],eax
mov rbx,[rsp+30]
jmp return
WoodAdd:
jmp newmem
nop 3
return:
[DISABLE]
WoodAdd:
db 89 43 3C 48 8B 5C 24 30
unregistersymbol(WoodAdd skip)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+12CD55F
GameAssembly.dll+12CD53A: 83 B9 E0 00 00 00 00 - cmp dword ptr [rcx+000000E0],00
GameAssembly.dll+12CD541: 75 05 - jne GameAssembly.dll+12CD548
GameAssembly.dll+12CD543: E8 C8 98 E1 FE - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+12CD548: 45 33 C9 - xor r9d,r9d
GameAssembly.dll+12CD54B: 33 D2 - xor edx,edx
GameAssembly.dll+12CD54D: 41 B8 50 C3 00 00 - mov r8d,0000C350
GameAssembly.dll+12CD553: 8B CF - mov ecx,edi
GameAssembly.dll+12CD555: E8 A6 55 79 00 - call UnityEngine:Mathf:Clamp2
GameAssembly.dll+12CD55A: 48 85 DB - test rbx,rbx
GameAssembly.dll+12CD55D: 74 0E - je GameAssembly.dll+12CD56D
// ---------- INJECTING HERE ----------
GameAssembly.dll+12CD55F: 89 43 3C - mov [rbx+3C],eax
// ---------- DONE INJECTING ----------
GameAssembly.dll+12CD562: 48 8B 5C 24 30 - mov rbx,[rsp+30]
GameAssembly.dll+12CD567: 48 83 C4 20 - add rsp,20
GameAssembly.dll+12CD56B: 5F - pop rdi
GameAssembly.dll+12CD56C: C3 - ret
GameAssembly.dll+12CD56D: E8 1E 33 E9 FE - call GameAssembly.dll+160890
GameAssembly.dll+12CD572: CC - int 3
GameAssembly.dll+12CD573: CC - int 3
GameAssembly.dll+12CD574: CC - int 3
GameAssembly.dll+12CD575: CC - int 3
GameAssembly.dll+12CD576: CC - int 3
}
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>39737</ID>
<Description>"Adjust Game Difficulty"</Description>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : Rune Factory 5.exe
Version:
Date : 2022-07-22
Author : Algester
This script does blah blah blah
}
[ENABLE]
aobscanmodule(WorldDifficulty,GameAssembly.dll,0F B6 48 10 85 C9) // should be unique
alloc(newmem,$1000,WorldDifficulty)
label(code difficulty)
label(return)
newmem:
code:
movzx ecx,byte ptr [rax+10]
mov [difficulty],rax
test ecx,ecx
jmp return
difficulty:
dd #1
WorldDifficulty:
jmp newmem
nop
return:
registersymbol(WorldDifficulty difficulty)
[DISABLE]
WorldDifficulty:
db 0F B6 48 10 85 C9
unregistersymbol(WorldDifficulty difficulty)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+D87DC5
GameAssembly.dll+D87D95: E8 86 89 3D FF - call GameAssembly.dll+160720
GameAssembly.dll+D87D9A: C6 05 07 99 22 02 01 - mov byte ptr [GameAssembly.dll+2FB16A8],01
GameAssembly.dll+D87DA1: 48 8B 1D 70 5F 2C 02 - mov rbx,[GameAssembly.dll+304DD18]
GameAssembly.dll+D87DA8: 33 C9 - xor ecx,ecx
GameAssembly.dll+D87DAA: E8 81 72 56 00 - call GameAssembly.dll+12EF030
GameAssembly.dll+D87DAF: 48 85 C0 - test rax,rax
GameAssembly.dll+D87DB2: 0F 84 1A 01 00 00 - je GameAssembly.dll+D87ED2
GameAssembly.dll+D87DB8: 48 8B 40 18 - mov rax,[rax+18]
GameAssembly.dll+D87DBC: 48 85 C0 - test rax,rax
GameAssembly.dll+D87DBF: 0F 84 0D 01 00 00 - je GameAssembly.dll+D87ED2
// ---------- INJECTING HERE ----------
GameAssembly.dll+D87DC5: 0F B6 48 10 - movzx ecx,byte ptr [rax+10]
// ---------- DONE INJECTING ----------
GameAssembly.dll+D87DC9: 85 C9 - test ecx,ecx
GameAssembly.dll+D87DCB: 0F 84 B7 00 00 00 - je GameAssembly.dll+D87E88
GameAssembly.dll+D87DD1: 83 E9 01 - sub ecx,01
GameAssembly.dll+D87DD4: 74 7F - je GameAssembly.dll+D87E55
GameAssembly.dll+D87DD6: 83 E9 01 - sub ecx,01
GameAssembly.dll+D87DD9: 74 43 - je GameAssembly.dll+D87E1E
GameAssembly.dll+D87DDB: 83 F9 01 - cmp ecx,01
GameAssembly.dll+D87DDE: 0F 85 E5 00 00 00 - jne GameAssembly.dll+D87EC9
GameAssembly.dll+D87DE4: 48 8B 0D FD 17 2D 02 - mov rcx,[GameAssembly.dll+30595E8]
GameAssembly.dll+D87DEB: F6 81 2F 01 00 00 02 - test byte ptr [rcx+0000012F],02
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>39738</ID>
<Description>"Current Difficulty"</Description>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Easy
1:Normal
2:Hard
3:Hell
</DropDownList>
<LastState Value="1" RealAddress="7FFBDBB40015"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>4 Bytes</VariableType>
<Address>difficulty</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Code: Select all
Error:[string "local syntaxcheck,memrec=...
..."]:1687: attempt to index a nil value (global 'U_Member')
Error:C:\Program Files\Cheat Engine 7.4\autorun\monoscript.lua:749: attempt to index a nil value (global 'monoSymbolList')
Code: Select all
Error:[string "local syntaxcheck,memrec=...
..."]:1687: attempt to index a nil value (global 'U_Member')
Trying to figure out how to do what you explained, but uh, im pretty clueless about these constants. I found the constants in your list that you mentioned, but i dont know what numbers i would need to set them to to guarantee drops? they're 70/40 100/20 150/30 in the order you mentioned right now, without me messing with them (though I do havey our drop bonuses code enabled). Do I need to set them all to a certain number, or something? Can you explain the drop system more in-depth, and how those constants work?fardriel wrote: ↑Mon Jul 18, 2022 10:31 pmTossing up my own contribution.
- Skill XP Multiplier
- Always have the drop bonuses from Rare Can, Four Leaf Clover, etc.
- Constant finders
- Update 1: Soil XP Multiplier
The constant finders hold a bunch of game variables that you can change on the fly. For example, you can use the drop bonuses script along with EquipSubAttribute_LuckyDrop1_Param1 and 2, LuckyDrop2_Param1 and 2, and RareDrop_Param1 and 2 to give yourself guaranteed drops. WalkSkillCount determines how many steps you need to take to get 1 walking XP. Things like that.
I put in all of the constants, even though a lot of them probably aren't especially useful for players.
Update 1: Added Soil XP Multiplier
Jesus, the entire code base for the free farm system is dumber than hell. Probably necessary back in RF4, but they really should've redone it for RF5, rather than reuse code made to run on a 3DS...
Code: Select all
Error in native thread called Unnamed::[string "local syntaxcheck,memrec=...
..."]:189: bad argument #1 to 'pairs' (table expected, got nil)
Error in native thread called Unnamed::C:\Program Files\Cheat Engine 7.4\autorun\monoscript.lua:1827: attempt to index a nil value (global 'monopipe')
Error in native thread called Unnamed::[string "local syntaxcheck,memrec=...
..."]:189: bad argument #1 to 'pairs' (table expected, got nil)
Error in native thread called Unnamed::[string "local syntaxcheck,memrec=...
..."]:189: bad argument #1 to 'pairs' (table expected, got nil)
Error in native thread called Unnamed::C:\Program Files\Cheat Engine 7.4\autorun\monoscript.lua:1822: attempt to index a nil value (global 'monopipe')
Error in native thread called Unnamed::[string "local syntaxcheck,memrec=...
..."]:189: bad argument #1 to 'pairs' (table expected, got nil)