R3V0L wrote: ↑Tue Mar 23, 2021 8:08 pm
StinVec wrote: ↑Mon Oct 12, 2020 11:21 pm
aureliano17 wrote: ↑Sun Oct 11, 2020 9:04 am
Is there any option for easy crafting? I like to try out mods and the amount of relics and weapons that you can/need to craft, plus the requirements, is absolutely overwhelming.
Free Crafting
(Tested on Steam-based v1.1.8.0/v1.1.8.1 x64 only)
Here is an option I just did real quick. Let me know if it works ok for you.
The main option enables all sub-options and makes the amount of each component needed in each slot requirement to be zero.
You can enable only the slots you want to be set to zero quantity needed based on how you want to play.
Having all of the slots/requirements separate like this can allow someone to only disable the requirements they don't want to have to have on hand in order to craft something.
e.g.
- Someone can enable only the Main item slot if they don't want to need the specific chest item to craft a chest, but the lesser components can still be left as being required.
- Or if someone only wants to remove the Iron cost from crafting they can only enable the Iron Cost option to set the required Iron amount to zero.
The option could be made a lot more efficiently and also remove the per-slot configuration of it if someone else wants to do it, but this works and I like offering options so people can adjust it to their preference for their needs and how they play.
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagentBaseQuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotMain,Game.dll,8B 81 94 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BC70)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000B94]
mov eax,0
jmp return
FreeCraftSlotMain:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotMain)
[DISABLE]
FreeCraftSlotMain:
db 8B 81 94 0B 00 00
unregistersymbol(FreeCraftSlotMain)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent1QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotOne,Game.dll,8B 81 98 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BC80)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000B98]
mov eax,0
jmp return
FreeCraftSlotOne:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotOne)
[DISABLE]
FreeCraftSlotOne:
db 8B 81 98 0B 00 00
unregistersymbol(FreeCraftSlotOne)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent2QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotTwo,Game.dll,8B 81 9C 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BC90)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000B9C]
mov eax,0
jmp return
FreeCraftSlotTwo:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotTwo)
[DISABLE]
FreeCraftSlotTwo:
db 8B 81 9C 0B 00 00
unregistersymbol(FreeCraftSlotTwo)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent3QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotThree,Game.dll,8B 81 A0 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BCA0)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000BA0]
mov eax,0
jmp return
FreeCraftSlotThree:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotThree)
[DISABLE]
FreeCraftSlotThree:
db 8B 81 A0 0B 00 00
unregistersymbol(FreeCraftSlotThree)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent4QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotFour,Game.dll,8B 81 A4 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BCB0)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000BA4]
mov eax,0
jmp return
FreeCraftSlotFour:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotFour)
[DISABLE]
FreeCraftSlotFour:
db 8B 81 A4 0B 00 00
unregistersymbol(FreeCraftSlotFour)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent5QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotFive,Game.dll,8B 81 A8 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BCC0)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000BA8]
mov eax,0
jmp return
FreeCraftSlotFive:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotFive)
[DISABLE]
FreeCraftSlotFive:
db 8B 81 A8 0B 00 00
unregistersymbol(FreeCraftSlotFive)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetReagent6QuantityForFormula
[ENABLE]
aobscanmodule(FreeCraftSlotSix,Game.dll,8B 81 AC 0B 00 00 C3 CC) // should be unique
alloc(newmem,$1000,"Game.dll"+26BCD0)
label(code)
label(return)
newmem:
code:
// mov eax,[rcx+00000BAC]
mov eax,0
jmp return
FreeCraftSlotSix:
jmp newmem
nop
return:
registersymbol(FreeCraftSlotSix)
[DISABLE]
FreeCraftSlotSix:
db 8B 81 AC 0B 00 00
unregistersymbol(FreeCraftSlotSix)
dealloc(newmem)
Code: Select all
// Game.GAME::ItemArtifactFormula::GetCreationCost+4
[ENABLE]
aobscanmodule(FreeCraftSlotIron,Game.dll,4C 8B 81 98 0E 00 00) // should be unique
alloc(newmem,$1000,"Game.dll"+26E434)
label(code)
label(return)
newmem:
code:
// mov r8,[rcx+00000E98]
mov r8,0
jmp return
FreeCraftSlotIron:
jmp newmem
nop 2
return:
registersymbol(FreeCraftSlotIron)
[DISABLE]
FreeCraftSlotIron:
db 4C 8B 81 98 0E 00 00
unregistersymbol(FreeCraftSlotIron)
dealloc(newmem)
Also attaching the options in table format for quickly copying the option and pasting it into fantomas's table, or fantomas's options can be copied over into this table if the option sorting framework in it is of use.
Can it be adapted to 32bit version somehow?
Hey, R3V0L. I just adjusted it for the x32 game version and also reconfigured the script.
Here is the code for the split options for the x32 game version and then also for a single combined option:
x32 Separated/Split options
[ENABLE]
//MAIN Slot
Game.GAME::ItemArtifactFormula::GetReagentBaseQuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 4C 08 00 00
[DISABLE]
//MAIN Slot
Game.GAME::ItemArtifactFormula::GetReagentBaseQuantityForFormula:
db 8B 81 4C 08 00 00
[ENABLE]
//SLOT 1 Upper Left
Game.GAME::ItemArtifactFormula::GetReagent1QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 50 08 00 00
[DISABLE]
//SLOT 1 Upper Left
Game.GAME::ItemArtifactFormula::GetReagent1QuantityForFormula:
db 8B 81 50 08 00 00
[ENABLE]
//SLOT 2 Upper Right
Game.GAME::ItemArtifactFormula::GetReagent2QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 54 08 00 00
[DISABLE]
//SLOT 2 Upper Right
Game.GAME::ItemArtifactFormula::GetReagent2QuantityForFormula:
db 8B 81 54 08 00 00
[ENABLE]
//SLOT 3 Middle Left
Game.GAME::ItemArtifactFormula::GetReagent3QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 58 08 00 00
[DISABLE]
//SLOT 3 Middle Left
Game.GAME::ItemArtifactFormula::GetReagent3QuantityForFormula:
db 8B 81 58 08 00 00
[ENABLE]
//SLOT 4 Middle Right
Game.GAME::ItemArtifactFormula::GetReagent4QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 5C 08 00 00
[DISABLE]
//SLOT 4 Middle Right
Game.GAME::ItemArtifactFormula::GetReagent4QuantityForFormula:
db 8B 81 5C 08 00 00
[ENABLE]
//SLOT 5 Bottom Left
Game.GAME::ItemArtifactFormula::GetReagent5QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 60 08 00 00
[DISABLE]
//SLOT 5 Bottom Left
Game.GAME::ItemArtifactFormula::GetReagent5QuantityForFormula:
db 8B 81 60 08 00 00
[ENABLE]
//SLOT 6 Bottom Right
Game.GAME::ItemArtifactFormula::GetReagent6QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 64 08 00 00
[DISABLE]
//SLOT 6 Bottom Right
Game.GAME::ItemArtifactFormula::GetReagent6QuantityForFormula:
db 8B 81 64 08 00 00
[ENABLE]
//SCRAP
Game.GAME::ItemArtifactFormula::GetCreationCost+12:
db B8 00 00 00 00 90
// 8B 81 98 0A 00 00
[DISABLE]
//SCRAP
Game.GAME::ItemArtifactFormula::GetCreationCost+12:
db 8B 81 98 0A 00 00
I also reconfigured the codes and combined them all into a single option for both x32 and x64.
Here is the x32 Single Option version:
[ENABLE]
//MAIN Slot
Game.GAME::ItemArtifactFormula::GetReagentBaseQuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 4C 08 00 00
//mov eax,[rcx+00000B94]
//SLOT 1 Upper Left
Game.GAME::ItemArtifactFormula::GetReagent1QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 50 08 00 00
//SLOT 2 Upper Right
Game.GAME::ItemArtifactFormula::GetReagent2QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 54 08 00 00
//SLOT 3 Middle Left
Game.GAME::ItemArtifactFormula::GetReagent3QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 58 08 00 00
//SLOT 4 Middle Right
Game.GAME::ItemArtifactFormula::GetReagent4QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 5C 08 00 00
//SLOT 5 Bottom Left
Game.GAME::ItemArtifactFormula::GetReagent5QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 60 08 00 00
//SLOT 6 Bottom Right
Game.GAME::ItemArtifactFormula::GetReagent6QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 64 08 00 00
//SCRAP
Game.GAME::ItemArtifactFormula::GetCreationCost+12:
db B8 00 00 00 00 90
// 8B 81 98 0A 00 00
[DISABLE]
//MAIN Slot
Game.GAME::ItemArtifactFormula::GetReagentBaseQuantityForFormula:
db 8B 81 4C 08 00 00
//SLOT 1 Upper Left
Game.GAME::ItemArtifactFormula::GetReagent1QuantityForFormula:
db 8B 81 50 08 00 00
//SLOT 2 Upper Right
Game.GAME::ItemArtifactFormula::GetReagent2QuantityForFormula:
db 8B 81 54 08 00 00
//SLOT 3 Middle Left
Game.GAME::ItemArtifactFormula::GetReagent3QuantityForFormula:
db 8B 81 58 08 00 00
//SLOT 4 Middle Right
Game.GAME::ItemArtifactFormula::GetReagent4QuantityForFormula:
db 8B 81 5C 08 00 00
//SLOT 5 Bottom Left
Game.GAME::ItemArtifactFormula::GetReagent5QuantityForFormula:
db 8B 81 60 08 00 00
//SLOT 6 Bottom Right
Game.GAME::ItemArtifactFormula::GetReagent6QuantityForFormula:
db 8B 81 64 08 00 00
//SCRAP
Game.GAME::ItemArtifactFormula::GetCreationCost+12:
db 8B 81 98 0A 00 00
Here is the x64 Single Option version:
[ENABLE]
//MAIN Slot
Game.GAME::ItemArtifactFormula::GetReagentBaseQuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 94 0B 00 00
//mov eax,[rcx+00000B94]
//SLOT 1 Upper Left
Game.GAME::ItemArtifactFormula::GetReagent1QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 98 0B 00 00
//SLOT 2 Upper Right
Game.GAME::ItemArtifactFormula::GetReagent2QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 9C 0B 00 00
//SLOT 3 Middle Left
Game.GAME::ItemArtifactFormula::GetReagent3QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 A0 0B 00 00
//SLOT 4 Middle Right
Game.GAME::ItemArtifactFormula::GetReagent4QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 A4 0B 00 00
//SLOT 5 Bottom Left
Game.GAME::ItemArtifactFormula::GetReagent5QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 A8 0B 00 00
//SLOT 6 Bottom Right
Game.GAME::ItemArtifactFormula::GetReagent6QuantityForFormula:
db B8 00 00 00 00 90
// 8B 81 AC 0B 00 00
//SCRAP
aobscanmodule(FreeCraftSlotIron,Game.dll,4C 8B 81 98 0E 00 00) // should be unique
alloc(newmem,$1000,"Game.dll"+26E434)
label(code)
label(return)
newmem:
code:
// mov r8,[rcx+00000E98]
mov r8,0
jmp return
FreeCraftSlotIron:
jmp newmem
nop 2
return:
registersymbol(FreeCraftSlotIron)
[DISABLE]
//MAIN Slot
Game.GAME::ItemArtifactFormula::GetReagentBaseQuantityForFormula:
db 8B 81 94 0B 00 00
//SLOT 1 Upper Left
Game.GAME::ItemArtifactFormula::GetReagent1QuantityForFormula:
db 8B 81 98 0B 00 00
//SLOT 2 Upper Right
Game.GAME::ItemArtifactFormula::GetReagent2QuantityForFormula:
db 8B 81 9C 0B 00 00
//SLOT 3 Middle Left
Game.GAME::ItemArtifactFormula::GetReagent3QuantityForFormula:
db 8B 81 A0 0B 00 00
//SLOT 4 Middle Right
Game.GAME::ItemArtifactFormula::GetReagent4QuantityForFormula:
db 8B 81 A4 0B 00 00
//SLOT 5 Bottom Left
Game.GAME::ItemArtifactFormula::GetReagent5QuantityForFormula:
db 8B 81 A8 0B 00 00
//SLOT 6 Bottom Right
Game.GAME::ItemArtifactFormula::GetReagent6QuantityForFormula:
db 8B 81 AC 0B 00 00
//SCRAP
FreeCraftSlotIron:
db 4C 8B 81 98 0E 00 00
unregistersymbol(FreeCraftSlotIron)
dealloc(newmem)
Attached are two tables:
- The x32 version that contains both the separated/split free crafting options and the single/combined option
- And the x64 free crafting option of mine that you quoted, but as a single/combined option instead of split/separated
If you have an issue of it not working, please let me know.