Elden-Ring-CT-TGA icon indicating copy to clipboard operation
Elden-Ring-CT-TGA copied to clipboard

[Script]: Sharing a "Quick Create SL125/150 Char" script, that automates common tasks

Open GavinRay97 opened this issue 2 years ago • 11 comments

This script is meant for automating the things you'd probably want to do when setting up a new SL125/150 character.

It includes:

  • Unlock Graces/Whetblades/Cookbooks/Maps/Gestures
  • Give you the souls you need to reach level 125/150
  • Give all Great Runes
  • Give all crystal tears (requires a MassItemGib script called Give all crystal tears, I think Inu said it'll be added to table)
  • Give all armor, accessories, sorceries/incants
    • NOTE: Does NOT give any weapons
  • Give consumables
  • Allows you to customize the items and quantities you want easily by modifications to the table variables

I am posting this here in case someone else finds this useful. It also shows how to do some common things from Lua (spawn items, give runes)

Thank you to Inu and other folks from Discord for helping me with this, I wouldn't have figured it out solo.

Enjoy!

----------------------------------------------
-- DATA
----------------------------------------------
local selected_items = {
    ["Duelist's Furled Finger"] = { id = 0x40000065, qty = 1 },
    ["Taunter's Tongue"] = { id = 0x4000006C, qty = 1 },
    ["Recusant Finger"] = { id = 0x40000070, qty = 1 },
    ["Godrick's Great Rune"] = { id = 0x400000BF, qty = 1 },
    ["Radahn's Great Rune"] = { id = 0x400000C0, qty = 1 },
    ["Morgott's Great Rune"] = { id = 0x400000C1, qty = 1 },
    ["Rykard's Great Rune"] = { id = 0x400000C2, qty = 1 },
    ["Mohg's Great Rune"] = { id = 0x400000C3, qty = 1 },
    ["Malenia's Great Rune"] = { id = 0x400000C4, qty = 1 },
    ["Flask of Wondrous Physick"] = { id = 0x400000FA, qty = 1 },
    ["Cracked Pot"] = { id = 0x4000251C, qty = 20 },
    ["Ritual Pot"] = { id = 0x4000251D, qty = 10 },
    ["Perfume Bottle"] = { id = 0x40002526, qty = 10 },
    ["Golden Seed"] = { id = 0x4000271A, qty = 30 },
    ["Sacred Tear"] = { id = 0x40002724, qty = 15 },
    ["Memory Stone"] = { id = 0x4000272E, qty = 8 },
    ["Talisman Pouch"] = { id = 0x40002738, qty = 3 },
    ["Lost Ashes of War"] = { id = 0x40002756, qty = 10 },
    ["Crafting Kit"] = { id = 0x40002134, qty = 1 },
    ["Whetstone Knife"] = { id = 0x4000218E, qty = 1 },
}

local affinities = {
    ["Normal"] = 0,
}

local ashes_of_war = {
    ["Default"] = 0xFFFFFFFF
}

local runes_needed_for_level = {
    [125] = 4000000,
    [150] = 7110000,
}

----------------------------------------------
-- SCRIPT
----------------------------------------------
local addressList = getAddressList()

local actions = {
      -- Event Flags
      "Unlock all Graces",
      "Unlock all Whetblades",
      "Unlock all Cookbooks",
      "Unlock all Maps",
      -- Scripts -> Build Creation
      "Unlock All Regular Gestures",
      -- Scripts -> Build Creation -> ItemGib -> MassItemGib
      "Give all protectors",
      "Give all accessories",
      "Give all ashes of war",
      "Give misc consumables x99",
      "Give all limited quantity craftables x99",
      "Give all crystal tears",
      "Give all bell bearings",
      "Give all spirit ashes",
      "Give all sorceries",
      "Give all incantations",
}

local function add_runes(amount)
    local script = [[
        AddSoulData:
        dd #{amount}
        createthread(AddSoul)
    ]]
    autoAssemble(script:gsub("{amount}", amount))
end

-- NOTE: For reinforce_level, 1 = "Auto"
local function give_item(item_id, quantity, affinity, reinforce_level, ash_of_war)
    local script = [[
        ItemGibArray:
        dd {item_id}
        dd {quantity}
        dw {affinity}
        dw {reinforce_level}
        dd {ash_of_war}
        // ID        Quantity    Upgrade          AshOfWar
        dd 00000000  00000000   00000000          FFFFFFFF
        createthread(ItemGib)
    ]]
    local processed = script
        :gsub("{item_id}", string.format("%08x", item_id))
        :gsub("{quantity}", string.format("%04x", quantity))
        :gsub("{affinity}", string.format("%04x", affinity))
        :gsub("{reinforce_level}", string.format("%08x", reinforce_level))
        :gsub("{ash_of_war}", string.format("%08x", ash_of_war))
    print(processed)
    autoAssemble(processed)
end

local function perform_boolean_actions()
    -- Perform all pre-created boolean actions
    for idx, action in ipairs(actions) do
        local memrec = addressList.getMemoryRecordByDescription(action)
        if memrec ~= nil then
            memrec.Active = true
        end
    end
end

local function give_selected_items()
    for item_name, entry in pairs(selected_items) do
        give_item(entry.id, entry.qty, affinities["Normal"], 0, ashes_of_war["Default"])
    end
end

local function main()
    local TARGET_LEVEL = 125
    local RUNE_AMOUNT = runes_needed_for_level[TARGET_LEVEL]
    perform_boolean_actions()
    add_runes(RUNE_AMOUNT)
    give_selected_items()
end

main()

GavinRay97 avatar Jun 26 '22 20:06 GavinRay97

If I run these scripts to get everything and go to NG+, and than connect the server, will FromSoftware know I cheated and ban me?

vczh avatar Jun 28 '22 07:06 vczh

Hypothetically, no ;^)

GavinRay97 avatar Jun 28 '22 15:06 GavinRay97

how do i run these script? sorry im kinda new to this

Ompolar avatar Jul 09 '22 11:07 Ompolar

@Ompolar no worries :smile:

Do the normal process to attach CE to the game, then follow these three steps:

  • Step 1: Make sure to activate TGA scripts by checking the box so the code has the functions available
  • Step 2: From the toolbar at the top of CE, press the button that says Table, then select Show Cheat Table Lua Script (or you can just press Ctrl + Alt + L)
  • Step 3: Copy-paste the entire code from my comment in the text box, and press EXECUTE SCRIPT

You should get all items, runes, unlocks, etc after executing it.

image

image

GavinRay97 avatar Jul 09 '22 20:07 GavinRay97

Thank you for putting this out there. I didn't know there was a Unlock all Grace / Unlock All Maps / Whetstones, ect already in there.

Lil-Sassy avatar Jul 10 '22 19:07 Lil-Sassy

I got banned for this somehow :'( it said "Inappropriate Activity Detected" and i cannot get rid of this even trying to re-install the game

Ompolar avatar Aug 06 '22 06:08 Ompolar

"Inappropriate Activity Detected" only means EasyAntiCheat is not running.

inuNorii avatar Aug 06 '22 06:08 inuNorii

"Inappropriate Activity Detected" only means EasyAntiCheat is not running.

How do i fix the EasyAntiCheat?, I have tried to open the easyanticheat_eos_setup.exe from Elden Ring installation Folder but only CMD window opened then disappear quickly

Ompolar avatar Aug 06 '22 06:08 Ompolar

Assuming you haven't modified anything, run the game via Steam or launch_protected_game.exe.

inuNorii avatar Aug 06 '22 06:08 inuNorii

Assuming you haven't modified anything, run the game via Steam or launch_protected_game.exe.

Nevermind, its my country problem (Indonesia, our goverment is blocking any website including steam). Problem fixed with running the game with Cloudflare software.

Ompolar avatar Aug 06 '22 07:08 Ompolar

"Inappropriate Activity Detected" only means EasyAntiCheat is not running.

How do i fix the EasyAntiCheat?, I have tried to open the easyanticheat_eos_setup.exe from Elden Ring installation Folder but only CMD window opened then disappear quickly

Find eldenring.exe, create steam_appid.txt in the same folder with content 1245620. Double click eldenring.exe to run the game instead of launching it in steam.

And then inside the game, turn off all multiplayer options (3 options IIRC).

Exit to the desktop and enter the game again, the warning should disappear.

vczh avatar Aug 06 '22 07:08 vczh