any-other-guy / LostArk-Endless-Chaos

💎Lost Ark Chaos Dungeon Farming Bot💎失落的方舟无限刷混沌地牢脚本
79 stars 48 forks source link

Support for more than 9 characters #33

Open BoredCoder95 opened 1 year ago

BoredCoder95 commented 1 year ago

Readme says this only works for 9 characters. Not sure if that was intended, or simply due to not programming in the scrolling function to be able to swap to characters past the first page on the "Switch Characters" menu. The attached was my take on making it support up to 24 characters. Granted I'm not very experienced with Python, so it's likely not optimized, but I have tested the function and it was able to log into 13 characters without a hitch, so I'm reasonably confident this would work.

Basically just uses the x,y of the 9 characters on the first page, then for characters 10-24, it hits the scroll down button just enough times to make the row of "index" visible as the bottom row, and uses the x,y for positions 7-9 to select them.

def switchtocharacter.txt config.txt

any-other-guy commented 1 year ago

Hi, late response excuse me. Now it supports up to 18 characters. Technically it can do the max character number (24?), but some lines need to be changed in switchToCharacter().

Thanks for the recommendation!

BoredCoder95 commented 1 year ago

I edited my copy to be able to run up to the full 24 characters

in "config.py", add to the end of the config ={}

    "SwitchCharactersX": 540,
    "SwitchCharactersY": 682,
    # Scroll Up
    "CharacterScrollUpX": 1260,
    "CharacterScrollUpY": 392,
    # Scroll Down
    "CharacterScrollDownX": 1260,
    "CharacterScrollDownY": 639,
    # Switch Characters Connect
    "CharacterConnectX": 1022,
    "CharacterConnectY": 684,
    "CharacterConnectOkX": 915,
    "CharacterConnectOkY": 583,
    # row 1
    "Character0X": 760,
    "Character0Y": 435,
    "Character1X": 970,
    "Character1Y": 435,
    "Character2X": 1150,
    "Character2Y": 435,
    # row 2
    "Character3X": 760,
    "Character3Y": 525,
    "Character4X": 970,
    "Character4Y": 525,
    "Character5X": 1150,
    "Character5Y": 525,
    # row 3
    "Character6X": 760,
    "Character6Y": 615,
    "Character7X": 970,
    "Character7Y": 615,
    "Character8X": 1150,
    "Character8Y": 615,

in "bot.py", define a new switch character function, I put this right under the original so as to ensure its defined prior to being referenced

def switchToCharacterNew(index):
    sleep(1500, 1600)
    print("switching to {}".format(index))
    pyautogui.press('esc')
    sleep(1500, 1600)
    pydirectinput.click(x=config["SwitchCharactersX"], y=config["SwitchCharactersY"], button="left")
    sleep(500, 600)
    pydirectinput.click(x=config["CharacterScrollUpX"], y=config["CharacterScrollUpY"], button="left")
    sleep(500, 600)
    pydirectinput.click(x=config["CharacterScrollUpX"], y=config["CharacterScrollUpY"], button="left")
    sleep(500, 600)
    pydirectinput.click(x=config["CharacterScrollUpX"], y=config["CharacterScrollUpY"], button="left")
    sleep(500, 600)
    pydirectinput.click(x=config["CharacterScrollUpX"], y=config["CharacterScrollUpY"], button="left")
    sleep(500, 600)
    pydirectinput.click(x=config["CharacterScrollUpX"], y=config["CharacterScrollUpY"], button="left")
    sleep(500, 600)
    pydirectinput.click(x=config["CharacterScrollUpX"], y=config["CharacterScrollUpY"], button="left")
    sleep(500, 600)
    pydirectinput.click(x=config["CharacterScrollUpX"], y=config["CharacterScrollUpY"], button="left")
    sleep(1500, 1600)
    # Rows 1-3
    if index==0:
        pydirectinput.click(x=config["Character0X"], y=config["Character0Y"], button="left")
    elif index==1:
        pydirectinput.click(x=config["Character1X"], y=config["Character1Y"], button="left")
    elif index==2:
        pydirectinput.click(x=config["Character2X"], y=config["Character2Y"], button="left")
    elif index==3:
        pydirectinput.click(x=config["Character3X"], y=config["Character3Y"], button="left")
    elif index==4:
        pydirectinput.click(x=config["Character4X"], y=config["Character4Y"], button="left")
    elif index==5:
        pydirectinput.click(x=config["Character5X"], y=config["Character5Y"], button="left")
    elif index==6:
        pydirectinput.click(x=config["Character6X"], y=config["Character6Y"], button="left")
    elif index==7:
        pydirectinput.click(x=config["Character7X"], y=config["Character7Y"], button="left")
    elif index==8:
        pydirectinput.click(x=config["Character8X"], y=config["Character8Y"], button="left")
    # Row 4
    elif index==9:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character6X"], y=config["Character6Y"], button="left")
    elif index==10:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character7X"], y=config["Character7Y"], button="left")
    elif index==11:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character8X"], y=config["Character8Y"], button="left")
    # Row 5
    elif index==12:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character6X"], y=config["Character6Y"], button="left")
    elif index==13:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character7X"], y=config["Character7Y"], button="left")
    elif index==14:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character8X"], y=config["Character8Y"], button="left")
    # Row 6
    elif index==15:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character6X"], y=config["Character6Y"], button="left")
    elif index==16:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character7X"], y=config["Character7Y"], button="left")
    elif index==17:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character8X"], y=config["Character8Y"], button="left")
    # Row 7
    elif index==18:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character6X"], y=config["Character6Y"], button="left")
    elif index==19:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character7X"], y=config["Character7Y"], button="left")
    elif index==20:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character8X"], y=config["Character8Y"], button="left")
    # Row 8
    elif index==21:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character6X"], y=config["Character6Y"], button="left")
    elif index==22:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character7X"], y=config["Character7Y"], button="left")
    elif index==23:
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["CharacterScrollDownX"], y=config["CharacterScrollDownY"], button="left")
        sleep(200, 300)
        pydirectinput.click(x=config["Character8X"], y=config["Character8Y"], button="left")
    sleep(1500, 1600)
    pydirectinput.click(x=config["CharacterConnectX"], y=config["CharacterConnectY"], button="left")
    sleep(1500, 1600)
    pydirectinput.click(x=config["CharacterConnectOkX"], y=config["CharacterConnectOkY"], button="left")
    sleep(25000, 26000)

    states["currentCharacter"] = index
    states["abilityScreenshots"] = []
    sleep(10000, 12000)
    if config["GFN"] == True:
        sleep(8000, 9000)

Comment out any functions calls to the original switch character function, and call the new one instead

#switchToCharacter(config["mainCharacter"])
switchToCharacterNew(config["mainCharacter"])