What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

can you add option to log back in as last character used?

imdivesmaintank

New Member
Joined
Oct 30, 2013
Messages
342
Reaction score
0
I know long long long ago there was a bug in POE where it wouldn't select the right character (the one you were just playing as) when you logged out, but that was resolved many moons ago. Could you add an option to the bot to just log back in without changing the selected character so I can stop changing the character name each time I want to bot a different one? I thought maybe unchecking "autoselect character" would do it, but that basically just leaves me at the character selection screen.
 
Ahm, this funtion already is included in the bot.
It works for every of my chars.
 
ah sorry ^^

Set up different Profiles. You can set them, when you start the Programm (Bot). You can just write in a new name and you can set it up.
 
I'm not going to add this specific feature, because it goes against the new design of Exilebuddy.

The old version used a system where you had to attach Exilebuddy once you were in game. It didn't support auto-relogging or auto-character selection. Quite often, settings would get messed up since it stored them via League and the Character name. This caused issues when not in game, since there was no way to get the league or character name, so there was no way to handle loading character specific settings other than having globally shared settings, which made a mess of things.

For the new design, I fixed all the previous issues by implementing a configuration system so all your settings, in game and out, are stored in one place. In essence, you want one configuration per character, so you have one consistent set of settings for all your plugins, routines, and bots. This allows users who maintain a lot of accounts and characters to have a much more organized, consistent setup that helps avoid issues when trying to use only one set of settings for multiple characters (which is what you're trying to do).

The Exilebuddy User's Guide goes over this new system and how you can take advantage of the new features to make life easier than before.

Basically what you're really asking is: "how can I make the current character I'm using be used for character selection without changing it in the GUI myself".

With this new system, that's really easily done. All you have to do is execute the code:
Code:
            if (LokiPoe.IsInGame)
            {
                if (LoginSettings.Instance.Character != LokiPoe.Me.Name)
                {
                    LoginSettings.Instance.Character = LokiPoe.Me.Name;
                }
            }

and your Login settings are now updated to use the last character used. You can add this to a plugin or the ExampleRoutine in Tick and your settings will be updated. You'll need "using Loki.Bot.Settings;" to access LoginSettings.

All the new settings are setup this way, so you can change anything in any settings for your current configuration the same way though code. The GUI just provides easy access to changing it, but the design is still very much code driven.

I would still recommend making configurations for each character, but you're free to juggle around settings if you have a bunch of characters that are mirror copies of each other.
 
Basically what you're really asking is: "how can I make the current character I'm using be used for character selection without changing it in the GUI myself".
really what my problem is is that i have like 20 characters, and the way it finds the character right now means that it goes up and down the list one character at a time, which actually adds quite a bit of time to logins. so my question was really about saving time after chickens/stucks than about not wanting to change the character name each time.
 
really what my problem is is that i have like 20 characters, and the way it finds the character right now means that it goes up and down the list one character at a time, which actually adds quite a bit of time to logins. so my question was really about saving time after chickens/stucks than about not wanting to change the character name each time.

That's a totally different issue that you should have mentioned instead. :)

The reason for that process taking longer, is because character selection, like everything else now, has to be done though input emulated actions, and a whole bunch of GUI reading stuff. The bot can't just call a client function to select a character, or send the select character packet. It has to quite literally go though your entire character list to figure out the character entry you want to select, and then clicks Play once it has been selected if it's detected that you can login with it.

It's annoying, I know, but that's just how botting in PoE has to be to work now. The API function for character selection requires a character name, so that's not going to change either, for the reasons mentioned in my previous post. You can't really optimize every aspect of the botting process in this game, because the technical implementation of how the API has to work gets in the way. As with the other things that are now also slower, like inventory stuff and stashing, as long as it's working, that's ultimately what matters the most.
 
That's a totally different issue that you should have mentioned instead. :)

The reason for that process taking longer, is because character selection, like everything else now, has to be done though input emulated actions, and a whole bunch of GUI reading stuff. The bot can't just call a client function to select a character, or send the select character packet. It has to quite literally go though your entire character list to figure out the character entry you want to select, and then clicks Play once it has been selected if it's detected that you can login with it.

It's annoying, I know, but that's just how botting in PoE has to be to work now. The API function for character selection requires a character name, so that's not going to change either, for the reasons mentioned in my previous post. You can't really optimize every aspect of the botting process in this game, because the technical implementation of how the API has to work gets in the way. As with the other things that are now also slower, like inventory stuff and stashing, as long as it's working, that's ultimately what matters the most.
alright. any chance you can tell me what part of the code to modify to just suppress the "character selection" step? i can just make myself a note to change it whenever a new version comes out.
 
alright. any chance you can tell me what part of the code to modify to just suppress the "character selection" step? i can just make myself a note to change it whenever a new version comes out.

The bot will not perform character selection unless you have Login->AutoSelectCharacter enabled. Unchecking that setting will make the bot stop at character selection with the CannotAutoSelectCharacter error.
 
sorry, I meant are the 2 steps in the routine split up so that one line of code scrolls through the list and picks the right one and then another line hits "enter" or something? if they're split up, i can just comment out the first step. if they're combined, then I guess I am SoL.
 
sorry, I meant are the 2 steps in the routine split up so that one line of code scrolls through the list and picks the right one and then another line hits "enter" or something? if they're split up, i can just comment out the first step. if they're combined, then I guess I am SoL.

Correct, there's one API function for selecting a character that does all the low level GUI stuff required for selecting a character. There is an actual coroutine that handles character selection logic, and it is tied into using LoginSettings (Coroutines.AutoSelectCharacter). The actual feature for character selection is a part of the BasicGrindBot implementation, so there's no way for users to change that or do other things, since there's just one process of selecting a character.

If you take a look at ExampleBot, you'll see code that is pretty much the same as BasicGrindBot's for that:
Code:
                else if (LokiPoe.IsInCharacterSelectionScreen)
                {
                    // Reset state.
                    LoginSettings.Instance.SelectCharacterAttempts = 0;
                    LoginSettings.Instance.LoginAttempts = 0;

                    var res = await Coroutines.AutoSelectCharacter();

                    Log.DebugFormat("[MainCoroutine] AutoSelectCharacter returned {0}.", res);

                    if (res != Coroutines.AutoSelectCharacterError.None &&
                        res != Coroutines.AutoSelectCharacterError.NotOnCharacterSelectionScreen)
                    {
                        BotManager.Stop();
                        await Coroutine.Yield();
                    }
                }
 
Back
Top