| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670 |
- using CustomFormControl;
- using Server.Account;
- using Server.Database;
- using Server.MirDatabase;
- using Server.MirEnvir;
- using Server.MirForms.Systems;
- using Server.MirObjects;
- using Server.Systems;
- using System.Collections;
- namespace Server
- {
- public partial class SMain : Form
- {
- public static Envir Envir => Envir.Main;
- public static Envir EditEnvir => Envir.Edit;
- protected static MessageQueue MessageQueue => MessageQueue.Instance;
- public SMain()
- {
- InitializeComponent();
- AutoResize();
- }
- private void AutoResize()
- {
- int columnCount = PlayersOnlineListView.Columns.Count;
- foreach (ColumnHeader column in PlayersOnlineListView.Columns)
- {
- column.Width = PlayersOnlineListView.Width / (columnCount - 1) - 1;
- }
- indexHeader.Width = 2;
- }
- public class ListViewItemComparer : IComparer // For Players Online tab level sorting
- {
- private int col;
- private SortOrder order;
- public ListViewItemComparer(int column, SortOrder order)
- {
- col = column;
- this.order = order;
- }
- public int Compare(object x, object y)
- {
- ListViewItem itemX = x as ListViewItem;
- ListViewItem itemY = y as ListViewItem;
- string stringX = itemX?.SubItems[col].Text ?? "";
- string stringY = itemY?.SubItems[col].Text ?? "";
- int result;
- if (col == 2)
- {
- int intX = 0, intY = 0;
- int.TryParse(stringX, out intX);
- int.TryParse(stringY, out intY);
- result = intX.CompareTo(intY);
- }
- else
- {
- result = String.Compare(stringX, stringY);
- }
- if (order == SortOrder.Descending)
- result = -result;
- return result;
- }
- }
- public static void Enqueue(Exception ex)
- {
- MessageQueue.Enqueue(ex);
- }
- public static void EnqueueDebugging(string msg)
- {
- MessageQueue.EnqueueDebugging(msg);
- }
- public static void EnqueueChat(string msg)
- {
- MessageQueue.EnqueueChat(msg);
- }
- public static void Enqueue(string msg)
- {
- MessageQueue.Enqueue(msg);
- }
- private void configToolStripMenuItem_Click(object sender, EventArgs e)
- {
- }
- private void InterfaceTimer_Tick(object sender, EventArgs e)
- {
- try
- {
- Text = $"Total: {Envir.LastCount}, Real: {Envir.LastRealCount}";
- PlayersLabel.Text = $"Players: {Envir.Players.Count}";
- MonsterLabel.Text = $"Monsters: {Envir.MonsterCount}";
- ConnectionsLabel.Text = $"Connections: {Envir.Connections.Count}";
- BlockedIPsLabel.Text = $"Blocked IPs: {Envir.IPBlocks.Count(x => x.Value > Envir.Now)}";
- UpTimeLabel.Text = $"Uptime: {Envir.Stopwatch.ElapsedMilliseconds / 1000 / 60 / 60 / 24}d:{Envir.Stopwatch.ElapsedMilliseconds / 1000 / 60 / 60 % 24}h:{Envir.Stopwatch.ElapsedMilliseconds / 1000 / 60 % 60}m:{Envir.Stopwatch.ElapsedMilliseconds / 1000 % 60}s";
- if (Settings.Multithreaded && (Envir.MobThreads != null))
- {
- CycleDelayLabel.Text = $"CycleDelays: {Envir.LastRunTime:0000}";
- for (int i = 0; i < Envir.MobThreads.Length; i++)
- {
- if (Envir.MobThreads[i] == null) break;
- CycleDelayLabel.Text = CycleDelayLabel.Text + $"|{Envir.MobThreads[i].LastRunTime:0000}";
- }
- }
- else
- CycleDelayLabel.Text = $"CycleDelay: {Envir.LastRunTime}";
- while (!MessageQueue.MessageLog.IsEmpty)
- {
- string message;
- if (!MessageQueue.MessageLog.TryDequeue(out message)) continue;
- LogTextBox.AppendText(message);
- }
- while (!MessageQueue.DebugLog.IsEmpty)
- {
- string message;
- if (!MessageQueue.DebugLog.TryDequeue(out message)) continue;
- DebugLogTextBox.AppendText(message);
- }
- while (!MessageQueue.ChatLog.IsEmpty)
- {
- string message;
- if (!MessageQueue.ChatLog.TryDequeue(out message)) continue;
- ChatLogTextBox.AppendText(message);
- }
- ProcessPlayersOnlineTab(false);
- ProcessGuildViewTab(false);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.ToString());
- }
- }
- private ListViewItem CreateListView(CharacterInfo character)
- {
- ListViewItem ListItem = new ListViewItem(character.Index.ToString()) { Tag = character };
- ListItem.SubItems.Add(character.Name);
- ListItem.SubItems.Add(character.Level.ToString());
- ListItem.SubItems.Add(character.Class.ToString());
- ListItem.SubItems.Add(character.Gender.ToString());
- string mapName = MapInfo.GetMapTitleByIndex(character.CurrentMapIndex);
- ListItem.SubItems.Add($"{mapName}");
- return ListItem;
- }
- private void ProcessPlayersOnlineTab(bool forced = false)
- {
- if (PlayersOnlineListView.Items.Count != Envir.Players.Count || forced == true)
- {
- PlayersOnlineListView.Items.Clear();
- for (int i = PlayersOnlineListView.Items.Count; i < Envir.Players.Count; i++)
- {
- CharacterInfo character = Envir.Players[i].Info;
- ListViewItem tempItem = CreateListView(character);
- PlayersOnlineListView.Items.Add(tempItem);
- }
- }
- }
- private void startServerToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Envir.Start();
- }
- private void stopServerToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Envir.Stop();
- Envir.MonsterCount = 0;
- }
- private void SMain_FormClosing(object sender, FormClosingEventArgs e)
- {
- Envir.Stop();
- }
- private void closeServerToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Close();
- }
- private void itemInfoToolStripMenuItem_Click(object sender, EventArgs e)
- {
- ItemInfoForm form = new ItemInfoForm();
- form.ShowDialog();
- }
- private void monsterInfoToolStripMenuItem_Click(object sender, EventArgs e)
- {
- MonsterInfoForm form = new MonsterInfoForm();
- form.ShowDialog();
- }
- private void nPCInfoToolStripMenuItem_Click(object sender, EventArgs e)
- {
- NPCInfoForm form = new NPCInfoForm();
- form.ShowDialog();
- }
- private void balanceConfigToolStripMenuItem_Click(object sender, EventArgs e)
- {
- BalanceConfigForm form = new BalanceConfigForm();
- form.ShowDialog();
- }
- private void questInfoToolStripMenuItem_Click(object sender, EventArgs e)
- {
- QuestInfoForm form = new QuestInfoForm();
- form.ShowDialog();
- }
- private void serverToolStripMenuItem_Click(object sender, EventArgs e)
- {
- ConfigForm form = new ConfigForm();
- form.ShowDialog();
- }
- private void balanceToolStripMenuItem_Click(object sender, EventArgs e)
- {
- BalanceConfigForm form = new BalanceConfigForm();
- form.ShowDialog();
- }
- private void accountToolStripMenuItem_Click(object sender, EventArgs e)
- {
- AccountInfoForm form = new AccountInfoForm();
- form.ShowDialog();
- }
- private void mapInfoToolStripMenuItem_Click(object sender, EventArgs e)
- {
- MapInfoForm form = new MapInfoForm();
- form.ShowDialog();
- }
- private void itemInfoToolStripMenuItem_Click_1(object sender, EventArgs e)
- {
- ItemInfoForm form = new ItemInfoForm();
- form.ShowDialog();
- }
- private void monsterInfoToolStripMenuItem_Click_1(object sender, EventArgs e)
- {
- MonsterInfoForm form = new MonsterInfoForm();
- form.ShowDialog();
- }
- private void nPCInfoToolStripMenuItem_Click_1(object sender, EventArgs e)
- {
- NPCInfoForm form = new NPCInfoForm();
- form.ShowDialog();
- }
- private void questInfoToolStripMenuItem_Click_1(object sender, EventArgs e)
- {
- QuestInfoForm form = new QuestInfoForm();
- form.ShowDialog();
- }
- private void dragonSystemToolStripMenuItem_Click(object sender, EventArgs e)
- {
- DragonInfoForm form = new DragonInfoForm();
- form.ShowDialog();
- }
- private void miningToolStripMenuItem_Click(object sender, EventArgs e)
- {
- MiningInfoForm form = new MiningInfoForm();
- form.ShowDialog();
- }
- private void guildsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- GuildInfoForm form = new GuildInfoForm();
- form.ShowDialog();
- }
- private void fishingToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(0);
- form.ShowDialog();
- }
- private void GlobalMessageButton_Click(object sender, EventArgs e)
- {
- if (GlobalMessageTextBox.Text.Length < 1) return;
- foreach (var player in Envir.Players)
- {
- player.ReceiveChat(GlobalMessageTextBox.Text, ChatType.Announcement);
- }
- EnqueueChat(GlobalMessageTextBox.Text);
- GlobalMessageTextBox.Text = string.Empty;
- }
- private void PlayersOnlineListView_DoubleClick(object sender, EventArgs e)
- {
- CustomFormControl.ListViewNF list = (CustomFormControl.ListViewNF)sender;
- if (list.SelectedItems.Count > 0)
- {
- ListViewItem item = list.SelectedItems[0];
- string index = item.SubItems[0].Text;
- PlayerInfoForm form = new PlayerInfoForm(Convert.ToUInt32(index));
- form.ShowDialog();
- }
- }
- private void PlayersOnlineListView_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
- {
- e.Cancel = true;
- e.NewWidth = PlayersOnlineListView.Columns[e.ColumnIndex].Width;
- }
- private void mailToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(1);
- form.ShowDialog();
- }
- private void goodsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(2);
- form.ShowDialog();
- }
- private void relationshipToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(4);
- form.ShowDialog();
- }
- private void refiningToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(3);
- form.ShowDialog();
- }
- private void mentorToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(5);
- form.ShowDialog();
- }
- private void magicInfoToolStripMenuItem_Click(object sender, EventArgs e)
- {
- MagicInfoForm form = new MagicInfoForm();
- form.ShowDialog();
- }
- private void SMain_Load(object sender, EventArgs e)
- {
- var loaded = EditEnvir.LoadDB();
- if (loaded)
- {
- Envir.Start();
- }
- AutoResize();
- }
- private void gemToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(6);
- form.ShowDialog();
- }
- private void conquestToolStripMenuItem_Click(object sender, EventArgs e)
- {
- ConquestInfoForm form = new ConquestInfoForm();
- form.ShowDialog();
- }
- private void rebootServerToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Envir.Reboot();
- }
- private void respawnsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(7);
- form.ShowDialog();
- }
- private void monsterTunerToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (!SMain.Envir.Running)
- {
- MessageBox.Show("Server must be running to tune monsters", "Notice",
- MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
- return;
- }
- MonsterTunerForm form = new MonsterTunerForm();
- form.ShowDialog();
- }
- private void gameshopToolStripMenuItem_Click(object sender, EventArgs e)
- {
- GameShop form = new GameShop();
- form.ShowDialog();
- }
- private void itemNEWToolStripMenuItem_Click(object sender, EventArgs e)
- {
- ItemInfoFormNew form = new ItemInfoFormNew();
- form.ShowDialog();
- }
- private void monsterExperimentalToolStripMenuItem_Click(object sender, EventArgs e)
- {
- MonsterInfoFormNew form = new MonsterInfoFormNew();
- form.ShowDialog();
- }
- private void dropBuilderToolStripMenuItem_Click(object sender, EventArgs e)
- {
- MirForms.DropBuilder.DropGenForm GenForm = new MirForms.DropBuilder.DropGenForm();
- GenForm.ShowDialog();
- }
- private void clearBlockedIPsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Envir.IPBlocks.Clear();
- }
- private void nPCsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Envir.ReloadNPCs();
- }
- private void dropsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Envir.ReloadDrops();
- }
- private void lineMessageToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Envir.ReloadLineMessages();
- }
- #region Guild View Tab
- public void ProcessGuildViewTab(bool forced = false)
- {
- if (GuildListView.Items.Count != Envir.GuildList.Count || forced == true)
- {
- GuildListView.Items.Clear();
- foreach (GuildInfo guild in Envir.GuildList)
- {
- ListViewItem tempItem = new ListViewItem(guild.GuildIndex.ToString()) { Tag = this };
- tempItem.SubItems.Add(guild.Name);
- if (guild.Ranks.Count > 0 && guild.Ranks[0].Members.Count > 0)
- {
- tempItem.SubItems.Add(guild.Ranks[0].Members[0].Name);
- }
- else
- {
- tempItem.SubItems.Add("DELETED");
- tempItem.ForeColor = Color.Red;
- }
- tempItem.SubItems.Add($"{guild.Membercount}/{guild.MemberCap}");
- tempItem.SubItems.Add(guild.Level.ToString());
- tempItem.SubItems.Add($"{guild.Gold}");
- tempItem.SubItems.Add(guild.HasGT ? guild.GTRent.ToString() : "None");
- GuildListView.Items.Add(tempItem);
- }
- }
- }
- private void GuildListView_DoubleClick(object sender, EventArgs e)
- {
- ListViewNF list = (ListViewNF)sender;
- if (list.SelectedItems.Count <= 0) return;
- ListViewItem item = list.SelectedItems[0];
- int index = Int32.Parse(item.Text);
- GuildObject Guild = Envir.GetGuild(index);
- GuildItemForm form = new GuildItemForm
- {
- GuildName = Guild.Name,
- Guild = Guild,
- main = this,
- };
- form.SetMemberCount(Guild.Info.Membercount, Guild.Info.MemberCap);
- form.SetGuildNotice(Guild.Info.Notice);
- form.SetBuffList(Guild.Info.BuffList, Settings.Guild_BuffList);
- form.SetGuildPoints(Guild.Info.SparePoints);
- form.SetGuildExperience(Guild.Info.Experience);
- if (Guild == null) return;
- foreach (var i in Guild.StoredItems)
- {
- if (i == null) continue;
- ListViewItem tempItem = new ListViewItem(i.Item.UniqueID.ToString()) { Tag = this };
- CharacterInfo character = Envir.GetCharacterInfo((int)i.UserId);
- if (character != null)
- tempItem.SubItems.Add(character.Name);
- else if (i.UserId == -1)
- tempItem.SubItems.Add("Server");
- else
- tempItem.SubItems.Add("Unknown");
- tempItem.SubItems.Add(i.Item.FriendlyName);
- tempItem.SubItems.Add(i.Item.Count.ToString());
- tempItem.SubItems.Add(i.Item.CurrentDura + "/" + i.Item.MaxDura);
- form.GuildItemListView.Items.Add(tempItem);
- }
- foreach (var r in Guild.Ranks)
- foreach (var m in r.Members)
- {
- ListViewItem tempItem = new ListViewItem(m.Name) { Tag = this };
- tempItem.SubItems.Add(r.Name);
- form.MemberListView.Items.Add(tempItem);
- }
- form.SetGuildRanks(Guild.Ranks);
- form.ShowDialog();
- }
- #endregion
- private void MainTabs_SelectedIndexChanged(object sender, EventArgs e)
- {
- ProcessPlayersOnlineTab(true);
- ProcessGuildViewTab(true);
- }
- private void heroesToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SystemInfoForm form = new SystemInfoForm(8);
- form.ShowDialog();
- }
- private void CharacterToolStripMenuItem_Click(object sender, EventArgs e)
- {
- CharacterInfoForm form = new CharacterInfoForm();
- form.ShowDialog();
- }
- private void recipeToolStripMenuItem_Click(object sender, EventArgs e)
- {
- RecipeInfoForm form = new RecipeInfoForm();
- form.ShowDialog();
- }
- private void accountsToolStripMenuItem1_Click(object sender, EventArgs e)
- {
- AccountInfoForm form = new AccountInfoForm();
- form.ShowDialog();
- }
- private void marketToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Market form = new Market();
- form.ShowDialog();
- }
- private void namelistsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Namelists form = new Namelists();
- form.ShowDialog();
- }
- private int sortColumn = -1;
- private void PlayersOnlineListView_ColumnClick(object sender, ColumnClickEventArgs e)
- {
- if (e.Column != sortColumn)
- {
- sortColumn = e.Column;
- PlayersOnlineListView.Sorting = SortOrder.Ascending;
- }
- else
- {
- PlayersOnlineListView.Sorting =
- PlayersOnlineListView.Sorting == SortOrder.Ascending ? SortOrder.Descending : SortOrder.Ascending;
- }
- PlayersOnlineListView.ListViewItemSorter = new ListViewItemComparer(sortColumn, PlayersOnlineListView.Sorting);
- PlayersOnlineListView.Sort();
- }
- }
- }
|