Legends of Idleon

Ask about cheats/tables for single player games here
D4C
What is cheating?
What is cheating?
Posts: 2
Joined: Mon Jul 19, 2021 8:59 am
Reputation: 0

Re: Legends of Idleon

Post by D4C »

Is there a way to rollback your vials levels? I was using the cauldroncommand, and I accidentally went a bit too far with one vial, and now the costs are showing up as NANB. I'm pretty sure there's a way to lower a specific vial level with the console, but I don't know how to lol.

idlefencing
What is cheating?
What is cheating?
Posts: 1
Joined: Sat Jul 17, 2021 4:11 am
Reputation: 0

Re: Legends of Idleon

Post by idlefencing »

hey so i tried unpacking the app.asar, i added the consoleinject and tried to repack but now the game wont open and im not sure what ive done wrong

subjectification
What is cheating?
What is cheating?
Posts: 1
Joined: Sat Jul 31, 2021 12:15 am
Reputation: 0

Re: Legends of Idleon

Post by subjectification »

Is it possible to extract the formula for afk gains from the js file? Might be useful if you don't want to make things ultra easy but want to know how to optimise your build.

andre420
Noobzor
Noobzor
Posts: 10
Joined: Tue Jun 29, 2021 2:44 pm
Reputation: 0

Re: Legends of Idleon

Post by andre420 »

Any Infos after the Update? c:

walkerofthevalley
Noobzor
Noobzor
Posts: 7
Joined: Thu May 20, 2021 12:13 am
Reputation: 0

Re: Legends of Idleon

Post by walkerofthevalley »

Creater0822 wrote:
Tue Jul 20, 2021 9:24 pm
alocmey123 wrote:
Tue Jul 20, 2021 6:33 pm
Creater0822 wrote:
Sun Jul 18, 2021 5:54 pm


I honestly haven't tried changing it into a bigger number. I outright changed the curse into None instead, so that it doesn't tamper with the afk time at all.
I tried to follow your guy's instructions and it didn't work. What number am I supposed to change in that string of numbers? Sorry for the trouble!!!

I tried changing the number 600 to 60000 but it didn't work. Tried changing it None and it didn't work as well.
The relevant piece of code reads like this:

Code: Select all

"Unending_Energy +{%_Class_and_Skill_EXP Max_AFK_time_is_now_10_hours._Use_this_prayer_sparingly. 30 10 1 600 51 0".split(" "),
As seen, this singular string is split into an Array of strings by a single whitespace " ", which is how we distinguish the parameters. As we can see, the first element is the Prayer's name, followed by the second element being its bonus. The third element is the curse, e.g. Max_AFK_time_is_now_10_hours._Use_this_prayer_sparingly.. This is the string segment that you'd like to change into None._Even_curses_need_time_off_every_now_and_then.
Is this still working? Tried to re-apply after update and its limiting my afk time to 10 hours now :(

User avatar
salmon85
Expert Cheater
Expert Cheater
Posts: 116
Joined: Wed Jun 09, 2021 8:29 am
Reputation: 26

Re: Legends of Idleon

Post by salmon85 »

Looks like Lavaflames banning people from discord now.


You were banned from Legends of IdleOn! | verified loser

He's a tad slow at getting around to it, not played the game in weeks.

chrisdab
What is cheating?
What is cheating?
Posts: 1
Joined: Wed Jul 28, 2021 5:06 pm
Reputation: 0

Re: Legends of Idleon

Post by chrisdab »

I have been trying out the tools from iBelg and Creater0822. I have a request that is not really a cheat, but Lavaflame hasn't added a hotkey for auto-combat. He has hotkeys for inventory, map, talents and others, but I have a need to micromanage my colosseum combat and having to mouse click to turn on and off auto-combat isn't working for me. I this an option that can be added?

User avatar
Creater0822
Expert Cheater
Expert Cheater
Posts: 229
Joined: Sat Nov 18, 2017 12:02 am
Reputation: 122

Re: Legends of Idleon

Post by Creater0822 »

Hell yeah everybody, I'm semi-back with a brand new cheat that is currently unfinished yet.
So some of you may remember the first generation Idleon console, which was in-game through the keybind `.

Through a similar fashion I've come up with this following piece of code that needs to be added to Z.js similarly:

Code: Select all

this.addAnyKeyPressedListener((function(e, t) {
    if (e.keyCode === 65 && b.engine.getGameAttribute("MenuType") === 6) { // Key A
        const EquipOrd = b.engine.getGameAttribute("displayData").h["PlayerEquipmentOrder"][0];
        EquipOrd[1] = "EquipmentSword3";
    }
})), this.addAnyKeyPressedListener((function(e, t) {
    if (e.keyCode === 83 && b.engine.getGameAttribute("MenuType") === 6) { // Key S
        const EquipOrd = b.engine.getGameAttribute("displayData").h["PlayerEquipmentOrder"][0];
        EquipOrd[1] = "EquipmentBows8";
    }
})), this.addAnyKeyPressedListener((function(e, t) {
    if (e.keyCode === 68 && b.engine.getGameAttribute("MenuType") === 6) { // Key D
        const EquipOrd = b.engine.getGameAttribute("displayData").h["PlayerEquipmentOrder"][0];
        EquipOrd[1] = "EquipmentWands7";
    }
}))
With this code added to Z.js you can perform instant weapon switching with the keys A, S and D (respectively Scythe, Bow, Staff), if your action bar is visible, hence MenuType equals 6. And yes, this does work mid-combat.

But indeed, this methodology is both unfinished and imperfect, and here are the reasons why:
  1. As you can see, I'm directly modifying the equipped weapon id, which does not change item-specific properties such as upgrade stone stats etc.. So that may indeed cause a bug associated to the methodology. Therefore, this honestly does not equal a True item switcher, such as for instance switching with any real item inside inventory slot 1 on key pressing, it ain't that...
  2. This method requires pre-editing Z.js and I have not yet found a way to dynamically add keybinds into the game from the external-console.
And so... Here are my long-term goals/ambitions, which I may not necessarily want to complete (depending on how much time it takes me)
  • A True item switcher: For instance by having let's say the first three inventory slots reserved for weapons: And upon pressing the right key, the weapon along with all of its item properties are switched correctly.
  • A dynamic syntax compatible with the external console, here's an ambitious example: One cheat command that initializes reading the config.json file. And in that json file, the user can write down the keycode for the keyboard button thathe/she wants to keybind, along with a weapon Id (obviously through a syntax imagined by me). And so it's then dynamically registered into the already-running game upon running the command.
How can you help me & what needs to be researched?
So far I know these things:
  • The keybind code resides in ["scripts.ActorEvents_93"], and I have not found a way to add/register a new key into the running game through the external console.
  • Idk if there's even a way in JavaScript to write that I want to execute a addAnyKeyPressedListener() within that object, and/or explicitly adding code to a function without altering anything else (e.g. assuming everything else a 100% black-box), through a Proxy handler.
  • I also still don't know the exact location to find the code for item switching yet, so I cannot do things fully vanilla-properly yet. One way I could still manage a True item switcher, is by statically swapping the item Id and item properties of both the weapon slot and a pre-chosen inventory slot. This should theoretically work as long as I carefully program it through the usage of JSON.parse(JSON.stringify()) which creates deep copies, but if I can make use of the game's native methodology I'd much rather pick that.
Either way... If anybody knows something about these specific things, please do let me know :D

User avatar
Creater0822
Expert Cheater
Expert Cheater
Posts: 229
Joined: Sat Nov 18, 2017 12:02 am
Reputation: 122

Re: Legends of Idleon

Post by Creater0822 »

Quick update release: Imperfect key-bound item switcher

How to:
  1. Traditionally extract Z.js and beautify with VS Code (or any other beautifer)
  2. Search for u["scripts.ActorEvents_93"] and scroll a bit down to where you see init: function (). Between the brackets of this init function is where you paste the following code:

    Code: Select all

    this.addAnyKeyPressedListener((function(e, t) {
        if ( (e.keyCode === 65 || e.keyCode === 83 || e.keyCode === 68) && b.engine.getGameAttribute("MenuType") === 6) { // Key A
            let index;
            const EquipOrd = b.engine.getGameAttribute("EquipmentOrder")[0];
            const EquipMap = b.engine.getGameAttribute("EquipmentMap")[0];
    
            switch(e.keyCode) {
    			case 65: index = 0; break;
    			case 83: index = 1; break;
    			case 68: index = 2; break;
    			default: break;
    		}
            EquipOrd[1] = b.engine.getGameAttribute("InventoryOrder")[index];
            EquipMap[1] = b.engine.getGameAttribute("ItemMap")[index];
        }
    }))
    
  3. Careful that you copy/paste it correctly and don't forget to add a comma between these function calls. But that's it!!
Yes, this is the exact same method as integrating iBelg's original in-game console (which some people might remember).

What it does:
When your ability bar is visible (e.g. the bottom interface with combat abilities you can press) the keys A, S and D become hotkeys that allow you to change weapons with whatever are on your first, second and third inventory slots (even works mid-combat). For example have Deuscythe in slot 1, Blackhole Bow in slot 2 and Grey Gatsby in slot 3 (it's highly recommended to lock these inventory slots). Finally it's recommended to have NOTHING equipped on your weapon slot, because it will be overwritten.

When you press these keybinds A, S or D, the code internally overwrites your weapon slot with the item id and properties in those inventory slots (it doesn't truly swap to that physical item). This way you're basically creating a clone of the actual weapons that are still in your inventory.

Warning:
I have not programmed a dummy proof mechanic to prevent the switching in case you have a non-weapon item in one of those inventory slots, in which case it'll most likely crash (haven't tried that out myself, and likely never will xD).

Update 1:
Yeah yeah!! My code has improved: I've combined the three keybinds into a singular addAnyKeyPressedListener, ez-game!!

Even more: I've got a true switch simulation code working, which actually allows you to switch item between inventory and weapon slot, and here's the code:

Code: Select all

// True switch simulation
this.addAnyKeyPressedListener((function(e, t) {
    if ( (e.keyCode === 65 || e.keyCode === 83 || e.keyCode === 68) && b.engine.getGameAttribute("MenuType") === 6) { // Key A
        let index;
        // Shallow copy
        const EquipOrd = b.engine.getGameAttribute("EquipmentOrder")[0];
        const EquipMap = b.engine.getGameAttribute("EquipmentMap")[0];
        // Deep copy
        const InvOrd = z.deepCopyList(b.engine.getGameAttribute("InventoryOrder"));
        const InvMap = z.deepCopyList(b.engine.getGameAttribute("ItemMap"));

        switch(e.keyCode) {
			case 65: index = 0; break;
			case 83: index = 1; break;
			case 68: index = 2; break;
			default: break;
		}
        b.engine.getGameAttribute("InventoryOrder")[index] = EquipOrd[1];
        b.engine.getGameAttribute("ItemMap")[index] = EquipMap[1];

        EquipOrd[1] = InvOrd[index];
        EquipMap[1] = InvMap[index];
    }
}))
But here's the deal:
First off this obviously ain't accomplished through the native game methodology, but still just some simple object re-writing. However once I've nailed the code I immediately realized that yeah... I have made just that. But when you're item switching, the actual weapons will obviously not stay on the same slot (which in contrary was the case with the shallow weapon copy method).
TLDR: Now I'm actually starting to like the shallow weapon copy much more than actually weapon switching.

All that remains now:
  1. I obviously want to have a way to have these keybind extensions addable from the external console.
  2. Then I'd go my way designing a nice syntax for my config.json to further extend the fun of custom keybinding.
  3. And of course I'd then dummy-proof it so that non-weapons cannot be written to the weapon slot.

Gibsonsg
Noobzor
Noobzor
Posts: 9
Joined: Tue Jun 29, 2021 2:50 pm
Reputation: 0

Re: Legends of Idleon

Post by Gibsonsg »

I'm only knowledgeable in js, so I dunno, but why can't the injection process modify the Z.js? Why do we need to supply a modified version for the shadowban and now keybinds? I'd assume you can still access the code from Z.js? You could just inject your edits on the fly?

User avatar
Creater0822
Expert Cheater
Expert Cheater
Posts: 229
Joined: Sat Nov 18, 2017 12:02 am
Reputation: 122

Re: Legends of Idleon

Post by Creater0822 »

Gibsonsg wrote:
Wed Aug 04, 2021 1:33 am
I'm only knowledgeable in js, so I dunno, but why can't the injection process modify the Z.js? Why do we need to supply a modified version for the shadowban and now keybinds? I'd assume you can still access the code from Z.js? You could just inject your edits on the fly?
That's a good question, I'll start things off with the generalized state of where we currently are.

The first thing to understand is how iBelg's tool functions with the game:
So this game Idleon is basically a web-based game that loads and runs a webpage full of javascripts, including ofc Z.js. With that said, LegendsOfIdleon.exe is actually just a small user agent built from Electron.

And so, iBelg's injector basically executes this user agent whilst at the same time HTTP intercepting the Z.js file. Upon interception, whatever is inside cheats.js is then added to this live-version of Z.js. The exact location within Z.js is obviously pinpointed through Regex, so that cheats.js is added to the correct line where it should work.

Now back to the topic, I'm honestly not sure if I fully understand your question, but I'm assuming that you're asking whether you can dynamically inject code at any time while the game's already running. (Feel free to correct me if I misinterpreted it)
So assuming that to be the question, the answer is: No you cannot do that. The code from cheats.js has to be added to Z.js prior to the game being fully loaded.

Due to this nature, iBelg's tool has to be rebuild with the addition of more replacements, in case you'd like to use his tool instead of making raw changes to the Z.js code inside app.asar. Thanks to the variety of cheating capabilities given by the external console, we often don't need raw editing anymore (as long as we have the JavaScript skills to back it up).

The unban methodology is different however, as we'd absolutely want the source code to already-never flip the shadowing variables before the game's been loaded. That's why for this particular thing we do have to perform a raw edit. So since this particular cheat requires raw editing, I opted for the expansion to InjectCheatsF2, which indeed lets iBelg's tool replace the code for us (just to skip the hassle of manually editing every new patch). Moreover, the injection process has a larger likelihood to failure against a beautified Z.js.

Lastly about unbanning came my choice to expand the tool with config.json, where my reason is the very-slim chance that the unban modifications can potentially yield some harm. So I've included the non-unban option as default for anybody that aims to safely cheat without ever being shadow banned, as my shadow-unban does not truly unban the account (just un-hides).

Alright, long story already, but here's the final topic e.g. keybinds:
The reason that I'm doing raw editing for the keybind cheats, is simply because I lack the skills to code the same thing as a console cheat yet.

IntoTheRuins
What is cheating?
What is cheating?
Posts: 2
Joined: Tue Dec 10, 2019 5:07 am
Reputation: 2

Re: Legends of Idleon

Post by IntoTheRuins »

Hey guys,

I'm interested in making a script for the fishing minigame.
The script would simply need to know the length (start and end) of where the fish can spawn, and then you hover your mouse over the fish you want to catch and run a calculation where it determines the amount of power required to reach that location.
Unfortunately, I run into an two issues: the formula I have for determining the time to click and hold the mouse button to raise the power gauge is screen size-dependent and when I click on the fish location to run the script, it always overshoots by a constant value.
Have any of you guys attempted a script for the fishing minigame? What was your approach to the time_click and fish distance issue?

Python code below

import keyboard
import pyautogui as gui
import time


def getMouseX():
return gui.position()[0]

def click():
gui.click()

def getStartAndEnd():
while(True):
key=keyboard.read_key()
if(key == 'a'):
x=getMouseX()
elif(key == 'd'):
y=getMouseX()
else:
break
return x,y

def getFishPosition():
key=keyboard.read_key()
if(key == 's'):
return getMouseX()
else:
return None


def calculateClickTime(fishDist):
return ((3*pow(10,-6)*pow(fishDist,3))+(1.6391*fishDist)-(1*pow(10,-9)*pow(fishDist,4))-(.0026*pow(fishDist,2))+246.06)
# ((-1*10**-9)*(fishDist**4))+((3*10**-6)*(fishDist**3))-((0.0026)*(fishDist**2))+(1.6391*fishDist)+246.06
# (-.0004*(fishDist)**2)+(1.0094*fishDist)+288.21

if __name__=='__main__':
start,end=getStartAndEnd()
tot=end-start

# PLAY GAME
while(True):
# STEP 1: Press 's' for fish location
fishDist=getFishPosition()
if fishDist is None:
break
else:
fishDist=abs(fishDist-tot)
print(fishDist)

# STEP 2: Calculate fish distance
clickTime = calculateClickTime(fishDist)/1000
print(clickTime)

# STEP 3: RUN CLICK FUNCTION
#gui.click(duration=clickTime)
gui.mouseDown()
time.sleep(clickTime)
gui.mouseUp()

User avatar
Creater0822
Expert Cheater
Expert Cheater
Posts: 229
Joined: Sat Nov 18, 2017 12:02 am
Reputation: 122

Re: Legends of Idleon

Post by Creater0822 »

IntoTheRuins wrote:
Sat Aug 07, 2021 3:58 pm
Hey guys,

I'm interested in making a script for the fishing minigame.
The script would simply need to know the length (start and end) of where the fish can spawn, and then you hover your mouse over the fish you want to catch and run a calculation where it determines the amount of power required to reach that location.
Unfortunately, I run into an two issues: the formula I have for determining the time to click and hold the mouse button to raise the power gauge is screen size-dependent and when I click on the fish location to run the script, it always overshoots by a constant value.
Have any of you guys attempted a script for the fishing minigame? What was your approach to the time_click and fish distance issue?

Python code below

Code: Select all

import keyboard
import pyautogui as gui
import time


def getMouseX():
    return gui.position()[0]
   
def click():
    gui.click()

def getStartAndEnd():
    while(True):
        key=keyboard.read_key()
        if(key == 'a'):
            x=getMouseX()
        elif(key == 'd'):
            y=getMouseX()
        else:
            break
    return x,y

def getFishPosition():
    key=keyboard.read_key()
    if(key == 's'):
        return getMouseX()
    else:
        return None
    

def calculateClickTime(fishDist):
    return ((3*pow(10,-6)*pow(fishDist,3))+(1.6391*fishDist)-(1*pow(10,-9)*pow(fishDist,4))-(.0026*pow(fishDist,2))+246.06)
# ((-1*10**-9)*(fishDist**4))+((3*10**-6)*(fishDist**3))-((0.0026)*(fishDist**2))+(1.6391*fishDist)+246.06
    # (-.0004*(fishDist)**2)+(1.0094*fishDist)+288.21

if __name__=='__main__':
    start,end=getStartAndEnd()
    tot=end-start
    
    # PLAY GAME
    while(True):
        # STEP 1: Press 's' for fish location
        fishDist=getFishPosition()
        if fishDist is None:
            break
        else:    
            fishDist=abs(fishDist-tot)
        print(fishDist)
        
        # STEP 2: Calculate fish distance
        clickTime = calculateClickTime(fishDist)/1000
        print(clickTime)
        
        # STEP 3: RUN CLICK FUNCTION
        #gui.click(duration=clickTime)
        gui.mouseDown()
        time.sleep(clickTime)
        gui.mouseUp()
Interesting Python script (nice to quick-discover packages this way :D ), but yeah... If you're aiming to use external scripts, you'll probably require some shape or form of image recognition. Or at least I for one as Noob in the botting departion would think so, yeah yeah!! Either way, this one's quite interesting despite that I'm most likely not going to grind out a fishing cheat.

Edit: I changed your code highlight into a coed block in my quote, just so that this thread page is less scrolly :D

Shiwo
What is cheating?
What is cheating?
Posts: 2
Joined: Thu Jan 14, 2021 8:14 pm
Reputation: 0

Re: Legends of Idleon

Post by Shiwo »

does this still work?? i cant seem to find the app file and the zjs file at all

edit:nvm i am just blind
Last edited by Shiwo on Mon Aug 09, 2021 6:49 pm, edited 1 time in total.

QwertyQWOP
Noobzor
Noobzor
Posts: 6
Joined: Thu Jun 17, 2021 2:47 pm
Reputation: 0

Re: Legends of Idleon

Post by QwertyQWOP »

I'm using ibelg's/creator's console and I'm trying to drop, specifically, event cards, is there a specific place I need to use the search command to find the id names for cards?

Post Reply

Who is online

Users browsing this forum: akira_esp, Czikumbaa, Google [Bot], houselannister