private void btnRemove_Click(object sender, EventArgs e) { if (selAcct != null) { if (selAcct.GetFlag(0x0001)) { --numBans; } foreach (SlotObject mSlot in selAcct.CharSlots) { if (mSlot.Serial != 0xFFFFFFFF) { --numPlayers; } } --numAccts; if (selAcct.Number == (nextAcct - 1)) { --nextAcct; } int index = listAccounts.SelectedIndex; accountList.Remove(selAcct.Name); listAccounts.Items.RemoveAt(index); if (index > 0) { listAccounts.SelectedIndex = index - 1; } else if (listAccounts.Items.Count > 0) { listAccounts.SelectedIndex = 0; } UpdateStats(); } }
private void btnBrowse_Click(object sender, EventArgs e) { fldrAccounts.Description = "Please Select the UOX3 Accounts Directory to Load."; if (fldrAccounts.ShowDialog() == DialogResult.OK) { string dirPath = fldrAccounts.SelectedPath + "\\accounts.adm"; accountList.Clear(); listAccounts.Items.Clear(); if (myForm.Visible) { myForm.Clear(); } txtAccountsDir.Text = fldrAccounts.SelectedPath; listAccounts.Update(); txtAccountsDir.Update(); progressBar.Minimum = 0; if (File.Exists(dirPath)) { progressBar.Value = 1; UOXData.Script.AccountScript mScript = new UOXData.Script.AccountScript(dirPath); progressBar.Maximum = mScript.Sections.Count; foreach (UOXData.Script.AccountSection mSect in mScript.Sections) { ushort acctNum = UOXData.Conversion.ToUInt16(mSect.SectionName); if (acctNum >= nextAcct) { nextAcct = acctNum + 1; } AccountObject toAdd = new AccountObject(acctNum); foreach (UOXData.Script.TagDataPair mPair in mSect.TagDataPairs) { string mTag = mPair.Tag.ToUpper(); string mData = mPair.Data; switch (mTag) { case "NAME": toAdd.Name = mData; break; case "PASS": toAdd.Pass = mData; break; case "FLAGS": toAdd.Flags = UOXData.Conversion.ToUInt16(mData); break; case "PATH": toAdd.Path = mData; break; case "CONTACT": toAdd.Contact = mData; break; case "TIMEBAN": toAdd.TimeBan = UOXData.Conversion.ToUInt32(mData); break; case "CHARACTER-1": case "CHARACTER-2": case "CHARACTER-3": case "CHARACTER-4": case "CHARACTER-5": case "CHARACTER-6": string [] tagSplit = mTag.Split('-'); byte charNum = (byte)(UOXData.Conversion.ToUInt08(tagSplit[1]) - 1); SlotObject mSlot = toAdd.CharSlots[charNum]; string[] dataSplit = mData.Split(' '); mSlot.Serial = UOXData.Conversion.ToUInt32(dataSplit[0]); if (dataSplit[1].Length > 0) { mSlot.Name = dataSplit[1].Substring(1, dataSplit[1].Length - 2); } if (mSlot.Serial != 0xFFFFFFFF) { ++numPlayers; } break; default: break; } } if (toAdd.GetFlag(0x0001)) { ++numBans; } accountList.Add(toAdd.Name, toAdd); ++numAccts; listAccounts.Items.Add(toAdd.Name + " (" + mSect.SectionName + ")"); progressBar.PerformStep(); } LoadOrphans(); UpdateStats(); if (listAccounts.Items.Count > 0) { listAccounts.SelectedIndex = 0; } else { listAccounts.Items.Add("No Accounts to Display"); } } else { MessageBox.Show("Accounts.adm not found, please select a valid directory", "File Not Found"); } } }
private void listAccounts_SelectedIndexChanged(object sender, EventArgs e) { selAcct = null; cbPublic.Checked = false; rdBanned.Checked = false; rdSuspended.Checked = false; rdPlayer.Checked = true; if (listAccounts.SelectedIndex == -1) { txtName.Clear(); txtPass.Clear(); txtPath.Clear(); txtContact.Clear(); txtTimeban.Clear(); if (myForm.Visible) { myForm.Clear(); } return; } AccountObject tmpAcct = accountList[listAccounts.SelectedItem.ToString().Split(' ')[0]]; txtName.Text = tmpAcct.Name; txtPass.Text = tmpAcct.Pass; txtPath.Text = tmpAcct.Path; txtContact.Text = tmpAcct.Contact; txtTimeban.Text = tmpAcct.TimeBan.ToString(); if (tmpAcct.GetFlag(0x0004)) { cbPublic.Checked = true; } if (tmpAcct.GetFlag(0x8000)) { rdGM.Checked = true; } else if (tmpAcct.GetFlag(0x4000)) { rdCns.Checked = true; } else if (tmpAcct.GetFlag(0x2000)) { rdSeer.Checked = true; } if (tmpAcct.GetFlag(0x0001)) { rdBanned.Checked = true; } else if (tmpAcct.GetFlag(0x0002)) { rdSuspended.Checked = true; } if (myForm.Visible) { myForm.UpdateList(tmpAcct); } selAcct = tmpAcct; }