diff --git a/RBX Alt Manager/Account.cs b/RBX Alt Manager/Account.cs index 8147eb4..0fc7004 100644 --- a/RBX Alt Manager/Account.cs +++ b/RBX Alt Manager/Account.cs @@ -76,10 +76,10 @@ public string JoinServer(long PlaceID, string JobID = "", bool FollowUser = fals if (result != null) Token = (string)result.Value; else - return "ERROR: Account Session Expired, right click the account and press re-auth. (1)"; + return "ERROR: Account Session Expired, right click the account and press re-auth or try again. (1)"; if (string.IsNullOrEmpty(Token) || result == null) - return "ERROR: Account Session Expired, right click the account and press re-auth. (2)"; + return "ERROR: Account Session Expired, right click the account and press re-auth or try again. (2)"; request = new RestRequest("/v1/authentication-ticket/", Method.POST); request.AddCookie(".ROBLOSECURITY", SecurityToken); diff --git a/RBX Alt Manager/AccountAdder.cs b/RBX Alt Manager/AccountAdder.cs index b2fd588..e4e19e8 100644 --- a/RBX Alt Manager/AccountAdder.cs +++ b/RBX Alt Manager/AccountAdder.cs @@ -13,6 +13,8 @@ public partial class AccountAdder : Form { private delegate void SafeCallDelegate(); private string SecurityToken; + public bool BrowserMode = false; + public string SetUsername = ""; public AccountAdder() { @@ -72,6 +74,12 @@ public void ClearData() private async void OnPageLoaded(object sender, FrameLoadEndEventArgs args) { + if (!string.IsNullOrEmpty(SetUsername)) + { + chromeBrowser.ExecuteScriptAsyncWhenPageLoaded($"document.getElementById('login-username').value='{SetUsername}'"); + SetUsername = ""; + } + if (args.Url.Contains("my/account/json")) { string src = await args.Frame.GetSourceAsync(); @@ -86,7 +94,7 @@ private async void OnNavigated(object sender, AddressChangedEventArgs args) { string url = args.Address; - if (url.Contains("/home")) + if (!BrowserMode && url.Contains("/home")) { var cookieManager = Cef.GetGlobalCookieManager(); diff --git a/RBX Alt Manager/AccountManager.Designer.cs b/RBX Alt Manager/AccountManager.Designer.cs index 6227e53..511bdc0 100644 --- a/RBX Alt Manager/AccountManager.Designer.cs +++ b/RBX Alt Manager/AccountManager.Designer.cs @@ -56,6 +56,8 @@ private void InitializeComponent() this.HideUsernamesCheckbox = new System.Windows.Forms.CheckBox(); this.InviteLinks = new System.Windows.Forms.ComboBox(); this.RobloxProcessTimer = new System.Windows.Forms.Timer(this.components); + this.BrowserButton = new System.Windows.Forms.Button(); + this.reAuthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.AccountsStrip.SuspendLayout(); this.SuspendLayout(); // @@ -103,7 +105,7 @@ private void InitializeComponent() this.Add.Location = new System.Drawing.Point(13, 266); this.Add.Name = "Add"; this.Add.Size = new System.Drawing.Size(95, 23); - this.Add.TabIndex = 11; + this.Add.TabIndex = 12; this.Add.Text = "Add Account"; this.Add.UseVisualStyleBackColor = true; this.Add.Click += new System.EventHandler(this.Add_Click); @@ -135,7 +137,7 @@ private void InitializeComponent() this.SetDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.SetDescription.Location = new System.Drawing.Point(503, 264); this.SetDescription.Name = "SetDescription"; - this.SetDescription.Size = new System.Drawing.Size(267, 23); + this.SetDescription.Size = new System.Drawing.Size(133, 23); this.SetDescription.TabIndex = 10; this.SetDescription.Text = "Set Description"; this.SetDescription.UseVisualStyleBackColor = true; @@ -232,7 +234,7 @@ private void InitializeComponent() this.AccountsView.MultiSelect = false; this.AccountsView.Name = "AccountsView"; this.AccountsView.Size = new System.Drawing.Size(484, 247); - this.AccountsView.TabIndex = 17; + this.AccountsView.TabIndex = 16; this.AccountsView.UseCompatibleStateImageBehavior = false; this.AccountsView.View = System.Windows.Forms.View.Details; this.AccountsView.SelectedIndexChanged += new System.EventHandler(this.AccountsView_SelectedIndexChanged); @@ -258,28 +260,29 @@ private void InitializeComponent() this.AccountsStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.addAccountsToolStripMenuItem, this.removeAccountToolStripMenuItem, + this.reAuthToolStripMenuItem, this.infoToolStripMenuItem}); this.AccountsStrip.Name = "contextMenuStrip1"; - this.AccountsStrip.Size = new System.Drawing.Size(166, 70); + this.AccountsStrip.Size = new System.Drawing.Size(181, 114); // // addAccountsToolStripMenuItem // this.addAccountsToolStripMenuItem.Name = "addAccountsToolStripMenuItem"; - this.addAccountsToolStripMenuItem.Size = new System.Drawing.Size(165, 22); + this.addAccountsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.addAccountsToolStripMenuItem.Text = "Add Account"; this.addAccountsToolStripMenuItem.Click += new System.EventHandler(this.addAccountsToolStripMenuItem_Click); // // removeAccountToolStripMenuItem // this.removeAccountToolStripMenuItem.Name = "removeAccountToolStripMenuItem"; - this.removeAccountToolStripMenuItem.Size = new System.Drawing.Size(165, 22); + this.removeAccountToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.removeAccountToolStripMenuItem.Text = "Remove Account"; this.removeAccountToolStripMenuItem.Click += new System.EventHandler(this.removeAccountToolStripMenuItem_Click); // // infoToolStripMenuItem // this.infoToolStripMenuItem.Name = "infoToolStripMenuItem"; - this.infoToolStripMenuItem.Size = new System.Drawing.Size(165, 22); + this.infoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.infoToolStripMenuItem.Text = "Info"; this.infoToolStripMenuItem.Click += new System.EventHandler(this.infoToolStripMenuItem_Click); // @@ -290,7 +293,7 @@ private void InitializeComponent() this.HideUsernamesCheckbox.Location = new System.Drawing.Point(215, 270); this.HideUsernamesCheckbox.Name = "HideUsernamesCheckbox"; this.HideUsernamesCheckbox.Size = new System.Drawing.Size(104, 17); - this.HideUsernamesCheckbox.TabIndex = 18; + this.HideUsernamesCheckbox.TabIndex = 14; this.HideUsernamesCheckbox.Text = "Hide Usernames"; this.HideUsernamesCheckbox.UseVisualStyleBackColor = true; this.HideUsernamesCheckbox.CheckedChanged += new System.EventHandler(this.HideUsernamesCheckbox_CheckedChanged); @@ -303,7 +306,7 @@ private void InitializeComponent() this.InviteLinks.Location = new System.Drawing.Point(325, 267); this.InviteLinks.Name = "InviteLinks"; this.InviteLinks.Size = new System.Drawing.Size(172, 21); - this.InviteLinks.TabIndex = 14; + this.InviteLinks.TabIndex = 15; this.InviteLinks.Text = "Copy Invite Link"; this.InviteLinks.SelectedIndexChanged += new System.EventHandler(this.InviteLinks_SelectedIndexChanged); this.InviteLinks.TextUpdate += new System.EventHandler(this.InviteLinks_TextUpdate); @@ -313,11 +316,30 @@ private void InitializeComponent() this.RobloxProcessTimer.Interval = 2500; this.RobloxProcessTimer.Tick += new System.EventHandler(this.RobloxProcessTimer_Tick); // + // BrowserButton + // + this.BrowserButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.BrowserButton.Location = new System.Drawing.Point(638, 264); + this.BrowserButton.Name = "BrowserButton"; + this.BrowserButton.Size = new System.Drawing.Size(133, 23); + this.BrowserButton.TabIndex = 11; + this.BrowserButton.Text = "Open Browser"; + this.BrowserButton.UseVisualStyleBackColor = true; + this.BrowserButton.Click += new System.EventHandler(this.BrowserButton_Click); + // + // reAuthToolStripMenuItem + // + this.reAuthToolStripMenuItem.Name = "reAuthToolStripMenuItem"; + this.reAuthToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.reAuthToolStripMenuItem.Text = "Re-Auth"; + this.reAuthToolStripMenuItem.Click += new System.EventHandler(this.reAuthToolStripMenuItem_Click); + // // AccountManager // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(783, 301); + this.Controls.Add(this.BrowserButton); this.Controls.Add(this.InviteLinks); this.Controls.Add(this.HideUsernamesCheckbox); this.Controls.Add(this.AccountsView); @@ -377,5 +399,7 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox HideUsernamesCheckbox; private System.Windows.Forms.ComboBox InviteLinks; private System.Windows.Forms.Timer RobloxProcessTimer; + private System.Windows.Forms.Button BrowserButton; + private System.Windows.Forms.ToolStripMenuItem reAuthToolStripMenuItem; } } \ No newline at end of file diff --git a/RBX Alt Manager/AccountManager.cs b/RBX Alt Manager/AccountManager.cs index 2e0a221..ee59e82 100644 --- a/RBX Alt Manager/AccountManager.cs +++ b/RBX Alt Manager/AccountManager.cs @@ -119,12 +119,18 @@ public void AddAccountToList(Account account) public static void AddAccount(string SecurityToken, string UserData) { Account account = new Account(); - + string res = account.Validate(SecurityToken, UserData); if (res == "Success") { - AccountsList.Add(account); + Account exists = AccountsList.FirstOrDefault(acc => acc.UserID == account.UserID); + + if (exists != null) + exists.SecurityToken = account.SecurityToken; + else + AccountsList.Add(account); + Program.MainForm.AddAccountToList(account); SaveAccounts(); } @@ -230,6 +236,7 @@ private void Add_Click(object sender, EventArgs e) if (aaform != null && aaform.Visible) aaform.HideForm(); + aaform.BrowserMode = false; aaform.ShowForm(); } @@ -572,5 +579,34 @@ private void AccountManager_FormClosed(object sender, FormClosedEventArgs e) { ManagerKey.SetValue("SavedPlaceId", PlaceID.Text); } + + private void BrowserButton_Click(object sender, EventArgs e) + { + if (SelectedAccount == null) return; + + if (aaform != null && aaform.Visible) + aaform.HideForm(); + + aaform.ShowForm(); + aaform.BrowserMode = true; + CefSharp.Cookie ck = new CefSharp.Cookie(); + ck.Name = ".ROBLOSECURITY"; + ck.Value = SelectedAccount.SecurityToken; + CefSharp.Cef.GetGlobalCookieManager().SetCookie("https://www.roblox.com", ck); + aaform.chromeBrowser.Load("https://www.roblox.com/home"); + } + + private void reAuthToolStripMenuItem_Click(object sender, EventArgs e) + { + if (SelectedAccount == null) return; + + if (aaform != null && aaform.Visible) + aaform.HideForm(); + + aaform.BrowserMode = false; + aaform.ShowForm(); + + aaform.SetUsername = SelectedAccount.Username; + } } } \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2d71698 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# Roblox Account Manager +Application that allows you to add multiple accounts into one application allowing you to easily play on alt accounts without having to change accounts + +Useful for games that require grinding off other players, or storage accounts that hold in game items or currency, or just to have multiple accounts that you can easily find and use. + +You are welcome to edit the code and create pull requests if it'll benefit this project. + +Report bugs to the issues section or direct message me via discord @ ic3#0001 + +# Download +To install this, head over to the [Releases](https://github.com/ic3w0lf22/Roblox-Account-Manager/releases) section and download the rar file at the very top, once downloaded, extract the files into a folder on your desktop and run RBX Alt Manager.exe. + +To use rbx-join, make sure to run RegisterRbxJoinProtocol.exe first and if you haven't accepted the handle EULA, run handle.exe and it'll automatically close after clicking accept. + +# TO DO +- [ ] Add privateServerLinkCode to the VIP server functionality +- [x] Fix rbx-join not working with hide usernames on +- [x] Save the PlaceId content +- [ ] Add the games section +- [ ] Add Re-auth option to accounts context menu + +# Preview +![github-large](Images/Image1.png) \ No newline at end of file diff --git a/rbx-join/rbx-join.cs b/rbx-join/rbx-join.cs index 3544a89..3312f64 100644 --- a/rbx-join/rbx-join.cs +++ b/rbx-join/rbx-join.cs @@ -118,7 +118,7 @@ private void AccountsView_MouseDoubleClick(object sender, MouseEventArgs e) pipe.Connect(5000); pipe.ReadMode = PipeTransmissionMode.Message; - string Account = self.Text.Contains(":") ? self.Text.Substring(0, self.Text.IndexOf(":")) : self.Text; + // string Account = self.Text.Contains(":") ? self.Text.Substring(0, self.Text.IndexOf(":")) : self.Text; byte[] bytes = Encoding.Default.GetBytes("play-" + self.Name + "-" + PlaceId + (!string.IsNullOrEmpty(JobId) ? "-" + JobId : "")); pipe.Write(bytes, 0, bytes.Length);