private static string GetUserId(string nick) { string id; if (NameToId.TryGetValue(nick, out id)) { return(id); } var encnick = HelperConverters.NickEncode(nick); var url = $"http://www.neverlands.ru/modules/api/getid.cgi?{encnick}"; var data = GetInfo(url); if (string.IsNullOrEmpty(data)) { return(null); } var spar = data.Split('|'); if (spar.Length != 2) { return(null); } id = spar[0]; var name = spar[1]; try { NameToIdLock.AcquireWriterLock(1000); try { if (NameToId.ContainsKey(name)) { NameToId[name] = id; } else { NameToId.Add(name, id); } } finally { NameToIdLock.ReleaseWriterLock(); } } catch (ApplicationException) { } return(id); }
private void ShowAndClearStat() { var sb = new StringBuilder("Статистика за "); sb.Append(HelperConverters.TimeIntervalToNow(AppVars.Profile.Stat.LastReset)); sb.AppendLine(":"); sb.AppendLine(menuitemStatItem0.Text); sb.AppendLine(menuitemStatItem1.Text); sb.AppendLine(menuitemStatItem2.Text); sb.AppendLine(menuitemStatItem3.Text); sb.AppendLine(menuitemStatItem4.Text); if (AppVars.Profile.Stat.ItemDrop.Count == 0) { sb.Append("Вещей не найдено"); } else { sb.AppendLine("Найдены вещи:"); for (var index = 0; index < AppVars.Profile.Stat.ItemDrop.Count; index++) { sb.Append(AppVars.Profile.Stat.ItemDrop[index].Name); if (AppVars.Profile.Stat.ItemDrop[index].Count > 1) { sb.AppendFormat(" ({0} шт.)", AppVars.Profile.Stat.ItemDrop[index].Count); } sb.AppendLine(); } } using (var ff = new FormStatEdit(sb.ToString())) { if (ff.ShowDialog() != DialogResult.OK) { return; } StatReset(); UpdateStat(); } }
private static FilterProcRoomResult FilterProcRoom(string html) { var resultFilterProcRoom = new FilterProcRoomResult(); var arg = HelperStrings.SubString(html, "new Array(", ");"); if (string.IsNullOrEmpty(arg)) { return(resultFilterProcRoom); } var par = arg.Split(new[] { @"""," }, StringSplitOptions.RemoveEmptyEntries); if (par.Length == 0) { return(resultFilterProcRoom); } var pvlist = new List <ToolStripMenuItem>(); var trlist = new List <ToolStripMenuItem>(); var sbtx = new StringBuilder(); var sbtt = new StringBuilder[4]; for (var i = 0; i < 4; i++) { sbtt[i] = new StringBuilder(); } var enemyAttack = new List <string>(); var sbt = new StringBuilder(); var nt = new int[4]; MyLocation.Clear(); for (var i = 0; i < par.Length; i++) { // "виннипух:винниПУх:16:myst.gif;Mystery Orden;нервоиспытатель:0:0:0:0:sumers.gif;Дети Сумерек", // "revolted:Revolted:16:myst.gif;Mystery Orden;Со вступом:0:0:0:0:sumers.gif;Дети Сумерек", var pars = par[i].Split(':'); if (pars.Length < 8) { continue; } // Сохранение данных об игроке var userName = pars[1].Replace("<i>", string.Empty).Replace("</i>", string.Empty); var userLevel = pars[2]; var userSign = string.Empty; var userStatus = string.Empty; var userSklSign = string.Empty; var userSklStatus = string.Empty; if (!string.IsNullOrEmpty(pars[3])) { var splpar = pars[3].Split(';'); if (splpar.Length == 3) { userSign = splpar[0]; userStatus = splpar[1] + ", " + splpar[2]; } } if ((pars.Length > 8) && !string.IsNullOrEmpty(pars[8])) { var splpar = pars[8].Split(';'); if (splpar.Length == 2) { userSklSign = splpar[0]; userSklStatus = splpar[1]; } } MyLocation.Add(userName); if (AppVars.DoSelfNevid && !AppVars.SelfNevidNeed && pars[1].Equals(AppVars.Profile.UserNick, StringComparison.CurrentCultureIgnoreCase)) { AppVars.SelfNevidNeed = true; AppVars.SelfNevidSkl = userSklStatus; AppVars.SelfNevidStage = 0; FormMain.ReloadMainFrame(); } if (AppVars.Profile.DoChatLevels) { ChatUsersManager.AddUser(new ChatUser(userName, userLevel, userSign, userStatus)); } if (ContactsManager.GetClassIdOfContact(userName) == 1) { enemyAttack.Add(userName); } if (pars[3].StartsWith("pv", StringComparison.OrdinalIgnoreCase)) { var pos = pars[3].LastIndexOf(';'); if (pos == -1) { continue; } var tsmi = new ToolStripMenuItem(userName) { Image = Properties.Resources._16x16_private, ToolTipText = pars[3].Substring(pos + 1), AutoToolTip = true }; if (AppVars.MainForm != null) { tsmi.Click += AppVars.MainForm.OnPvFastToolStripMenuItemClick; } pvlist.Add(tsmi); } if (string.IsNullOrEmpty(pars[6]) || pars[6].Equals("0", StringComparison.Ordinal)) { continue; } var ntr = new int[4]; var str = new[] { "легкая", "средняя", "тяжелая", "боевая" }; var travmtime = new int[4]; var tr = pars[6].Split(new [] { ", " }, StringSplitOptions.RemoveEmptyEntries); for (var t = 0; t < tr.Length; t++) { var ttt = tr[t]; for (var j = 0; j < 4; j++) { if (!AppVars.Profile.CureEnabled[j]) { continue; } if (ttt.IndexOf(str[j], StringComparison.OrdinalIgnoreCase) == -1) { continue; } int ttime; int min; int hour; var tan = ttt.Split(' '); switch (tan.Length) { case 4: if (!int.TryParse(tan[2], out min)) { min = 0; } if (tan[3].Equals("ч", StringComparison.OrdinalIgnoreCase)) { ttime = min * 60; } else { ttime = min; } break; case 5: if (!int.TryParse(tan[3], out min)) { min = 0; } if (tan[4].Equals("ч", StringComparison.OrdinalIgnoreCase)) { ttime = min * 60; } else { ttime = min; } break; case 6: if (!int.TryParse(tan[4], out min)) { min = 0; } if (tan[5].Equals("ч", StringComparison.OrdinalIgnoreCase)) { ttime = min * 60; } else { if (!int.TryParse(tan[2], out hour)) { hour = 0; } ttime = (hour * 60) + min; } break; case 7: if (!int.TryParse(tan[3], out hour)) { hour = 0; } if (!int.TryParse(tan[5], out min)) { min = 0; } ttime = (hour * 60) + min; break; case 8: if (!int.TryParse(tan[4], out hour)) { hour = 0; } if (!int.TryParse(tan[6], out min)) { min = 0; } ttime = (hour * 60) + min; break; default: ttime = 0; break; } if (travmtime[j] < ttime) { travmtime[j] = ttime; } ntr[j]++; } } if ((ntr[0] + ntr[1] + ntr[2] + ntr[3]) <= 0) { continue; } var sb = new StringBuilder(); sb.Append(userName); sb.Append(" ["); sb.Append(userLevel); sb.Append("]: "); if (ntr[0] > 0 && ((ntr[1] + ntr[2] + ntr[3]) == 0)) { if (ntr[0] == 1) { sb.Append("легкая"); } else { sb.Append(ntr[0]); sb.Append(" легких"); } sb.Append(' '); sb.Append(HelperConverters.MinsToStr(travmtime[0])); } else { if (ntr[1] > 0 && ((ntr[0] + ntr[2] + ntr[3]) == 0)) { if (ntr[1] == 1) { sb.Append("средняя"); } else { sb.Append(ntr[1]); sb.Append(" средних"); } sb.Append(' '); sb.Append(HelperConverters.MinsToStr(travmtime[1])); } else { if (ntr[2] > 0 && ((ntr[0] + ntr[1] + ntr[3]) == 0)) { if (ntr[2] == 1) { sb.Append("тяжелая"); } else { sb.Append(ntr[2]); sb.Append(" тяжелых"); } sb.Append(' '); sb.Append(HelperConverters.MinsToStr(travmtime[2])); } else { if (ntr[3] > 0 && ((ntr[0] + ntr[1] + ntr[2]) == 0)) { if (ntr[3] == 1) { sb.Append("боевая"); } else { sb.Append(ntr[3]); sb.Append(" боевых"); } sb.Append(' '); sb.Append(HelperConverters.MinsToStr(travmtime[3])); } else { for (var j = 0; j < 4; j++) { if (ntr[j] == 0) { sb.Append('-'); } else { sb.Append(ntr[j]); } if (j < 3) { sb.Append('/'); } } var travmmax = 0; for (var j = 3; j >= 0; j--) { if (travmtime[j] == 0) { continue; } travmmax = travmtime[j]; break; } sb.Append(' '); sb.Append(HelperConverters.MinsToStr(travmmax)); } } } } if (sbtx.Length > 0) { sbtx.Append(':'); } sbtx.Append(userName); var trmi = new ToolStripMenuItem(sb.ToString()) { Image = (ntr[3] > 0 ? Properties.Resources._15x12_tr4 : (ntr[2] > 0 ? Properties.Resources._15x12_tr3 : (ntr[1] > 0 ? Properties.Resources._15x12_tr2 : Properties.Resources._15x12_tr1))), ImageScaling = ToolStripItemImageScaling.None }; if (AppVars.Profile.CureDisabledLowLevels && (pars[2].Equals("0", StringComparison.Ordinal) || pars[2].Equals("1", StringComparison.Ordinal) || pars[2].Equals("2", StringComparison.Ordinal) || pars[2].Equals("3", StringComparison.Ordinal) || pars[2].Equals("4", StringComparison.Ordinal))) { trmi.Enabled = false; } else { var travmtype = -1; if (ntr[3] > 0) { nt[3]++; travmtype = 3; } else { if (ntr[2] > 0) { nt[2]++; if (travmtype == -1) { travmtype = 2; } } else { if (ntr[1] > 0) { nt[1]++; if (travmtype == -1) { travmtype = 1; } } else { nt[0]++; if (travmtype == -1) { travmtype = 0; } } } } var nametr = new[] { "легкую", "среднюю", "тяжелую", "боевую" }; if (travmtype != -1) { if (sbtt[travmtype].Length > 0) { sbtt[travmtype].Append(':'); } sbtt[travmtype].Append(userName); } sb.Length = 0; sb.Append(userName); sb.Append(" ["); sb.Append(userLevel); sb.Append(']'); var trmi1 = new ToolStripMenuItem(sb.ToString()) { Image = Properties.Resources._16x16_private, Tag = userName }; if (AppVars.MainForm != null) { trmi1.Click += AppVars.MainForm.OnTravmFastToolStripMenuItemClick; } trmi.DropDownItems.Add(trmi1); var trmi3 = new ToolStripMenuItem("Открыть инфу") { Image = Properties.Resources._16x16_info, Tag = userName }; if (AppVars.MainForm != null) { trmi3.Click += AppVars.MainForm.OnTravmInfoToolStripMenuItemClick; } trmi.DropDownItems.Add(trmi3); trmi.DropDownItems.Add(new ToolStripSeparator()); var icontr = new[] { Properties.Resources._15x12_tr1, Properties.Resources._15x12_tr2, Properties.Resources._15x12_tr3, Properties.Resources._15x12_tr4 }; for (var t = 0; t < 4; t++) { if (ntr[t] <= 0) { continue; } var tst = new ToolStripMenuItem("Лечить " + nametr[t] + " травму") { Image = icontr[t], ImageScaling = ToolStripItemImageScaling.None, Tag = userName + ":" + (t + 1) }; if (AppVars.MainForm != null) { tst.Click += FormMain.OnTravmCureToolStripMenuItemClick; } trmi.DropDownItems.Add(tst); } trmi.DropDownItems.Add(new ToolStripSeparator()); var trmi2 = new ToolStripMenuItem("Отправить рекламу") { Tag = userName }; if (AppVars.MainForm != null) { trmi2.Click += FormMain.OnTravmAdvToolStripMenuItemClick; } trmi.DropDownItems.Add(trmi2); } trlist.Add(trmi); } if (trlist.Count > 0) { sbt.Append(trlist.Count); sbt.Append(": "); for (var j = 0; j < 4; j++) { if (nt[j] == 0) { sbt.Append('-'); } else { sbt.Append(nt[j]); } if (j < 3) { sbt.Append('/'); } } var trek = new ToolStripMenuItem("Реклама") { Image = Properties.Resources._16x16_private, }; var namett = new[] { "легкие", "средние", "тяжелые", "боевые" }; for (var i = 0; i < 4; i++) { if (sbtt[i].Length <= 0) { continue; } var tt = new ToolStripMenuItem("Реклама тем, у кого " + namett[i]) { Image = Properties.Resources._16x16_private, Tag = (i + 1) + ":" + sbtt[i] }; if (AppVars.MainForm != null) { tt.Click += FormMain.OnTravmAskToolStripMenuItemClick; } trek.DropDownItems.Add(tt); } var trall = new ToolStripMenuItem("Реклама всем травмированным") { Image = Properties.Resources._16x16_private, Tag = sbtx.ToString() }; if (AppVars.MainForm != null) { trall.Click += FormMain.OnTravmAdvAllToolStripMenuItemClick; } trek.DropDownItems.Add(trall); var trallchat = new ToolStripMenuItem("Реклама в общий чат"); if (AppVars.MainForm != null) { trallchat.Click += FormMain.OnTravmChatToolStripMenuItemClick; } trek.DropDownItems.Add(trallchat); trlist.Add(trek); } try { if (AppVars.MainForm != null) { AppVars.MainForm.BeginInvoke( new UpdateRoomDelegate(AppVars.MainForm.UpdateRoom), new object[] { pvlist.ToArray(), sbt.ToString(), trlist.ToArray() }); } } catch (InvalidOperationException) { } resultFilterProcRoom.NumCharsInRoom = par.Length; if (enemyAttack.Count > 0) { var filtredenemyAttack = new List <string>(); foreach (var nick in filtredenemyAttack) { if (IsCharInBlackList(nick)) { continue; } filtredenemyAttack.Add(nick); } resultFilterProcRoom.EnemyAttack = filtredenemyAttack.Count > 0 ? enemyAttack[Dice.Make(filtredenemyAttack.Count)] : enemyAttack[Dice.Make(enemyAttack.Count)]; } return(resultFilterProcRoom); }
public static string GetFlog(string flog) { var url = HelperConverters.AddressEncode(string.Concat("http://neverlands.ru/logs.fcg?fid=", flog)); return(GetInfo(url)); }
public static string GetPInfo(string nick) { var url = HelperConverters.AddressEncode(string.Concat("http://neverlands.ru/pinfo.cgi?", nick)); return(GetInfo(url)); }
private void TimerCrap() { if (AppVars.MustReload || (DateTime.Now > AppVars.NextCheckNoConnection)) { AppVars.MustReload = false; LogOn(); return; } if (AppVars.Profile.SkinAuto && DateTime.Now.Subtract(AppVars.AutoSkinLastChecked).TotalMinutes > 1.0) { AppVars.AutoSkinLastChecked = DateTime.Now; AppVars.AutoSkinCheckKnife = true; } // Таймеры UpdateTimers(); // После лечения if (!string.IsNullOrEmpty(AppVars.CureNickDone)) { if (browserGame.Document != null) { if (!string.IsNullOrEmpty(AppVars.Profile.CureAfter)) { Chat.AddAnswer("%<" + AppVars.CureNickDone + "> " + AppVars.Profile.CureAfter); } } AppVars.CureNickDone = string.Empty; } else { if (!string.IsNullOrEmpty(AppVars.CureNickBoi)) { if (browserGame.Document != null) { if (!string.IsNullOrEmpty(AppVars.CureNickBoi)) { Chat.AddAnswer("%<" + AppVars.CureNickBoi + "> " + AppVars.Profile.CureBoi); } } AppVars.CureNickBoi = string.Empty; } } // Реклама if (AppVars.AdvActive) { if (DateTime.Now > AppVars.LastAdv) { statuslabelAutoAdv.Text = @"0:00"; AppVars.LastAdv = DateTime.Now.AddSeconds(AppVars.Profile.AutoAdv.Sec); if (AppVars.AdvArray == null) { AppVars.AdvArray = HelperStrings.RandomArray(AppVars.Profile.AutoAdv.Phraz); AppVars.AdvIndex = 0; } if (AppVars.AdvArray != null) { if (AppVars.AdvIndex < AppVars.AdvArray.Length) { Chat.AddAnswer(AppVars.AdvArray[AppVars.AdvIndex]); } AppVars.AdvIndex++; if (AppVars.AdvIndex >= AppVars.AdvArray.Length) { AppVars.AdvArray = null; } } } else { var advdiff = AppVars.LastAdv.Subtract(DateTime.Now); statuslabelAutoAdv.Text = advdiff.Minutes + @":" + advdiff.Seconds.ToString("00"); } } // Реклама автоторга if (AppVars.Profile.TorgActive) { if (DateTime.Now > AppVars.LastTorgAdv) { statuslabelTorgAdv.Text = "0:00"; AppVars.LastTorgAdv = DateTime.Now.AddMinutes(AppVars.Profile.TorgAdvTime); Chat.AddAnswer(AppVars.Profile.TorgMessageAdv.Replace("{таблица}", AppVars.Profile.TorgTabl)); } else { var advdiff = AppVars.LastTorgAdv.Subtract(DateTime.Now); statuslabelTorgAdv.Text = advdiff.Minutes + ":" + advdiff.Seconds.ToString("00"); } } if (DateTime.Now.Subtract(AppVars.LastTied).TotalSeconds > 200) { UpdateCheckTied(); } // ChangeAutoboiState(AppVars.Profile.Autoboi.Active ? AutoboiState.AutoboiOn : AutoboiState.AutoboiOff); ChangeAutoboiState(AppVars.Autoboi); // Можно вывести в чат результат разделки? if (DateTime.Now > AppVars.RazdelkaTime) { if (AppVars.Profile.RazdChatReport) { var sb = new StringBuilder(); //sb.Append(AppVars.AppVersion.ProductShortVersion); //sb.Append(": "); sb.Append("Результат разделки: "); for (var i = 0; i < AppVars.RazdelkaResultList.Count; i++) { sb.Append('«'); sb.Append(AppVars.RazdelkaResultList[i]); sb.Append('»'); if (AppVars.RazdelkaResultList.Count > 1 && i < (AppVars.RazdelkaResultList.Count - 1)) { sb.Append(", "); } } sb.Append('.'); if (AppVars.RazdelkaLevelUp > 0) { sb.Append(" Умение «Охота» повысилось на "); sb.Append(AppVars.RazdelkaLevelUp); sb.Append('!'); } Chat.AddAnswer(sb.ToString()); } AppVars.RazdelkaResultList.Clear(); AppVars.RazdelkaLevelUp = 0; AppVars.RazdelkaTime = DateTime.MaxValue; } // Работает ли пауза? if (DateTime.Now.Ticks < AppVars.Profile.Pers.Ready) { if (AppVars.Autoboi == AutoboiState.Timeout) { if (!string.IsNullOrEmpty(AppVars.AccountError)) { AppVars.DoPromptExit = false; Close(); } else { if (DateTime.Now.Subtract(AppVars.LastMainPhp).TotalSeconds > 28) { try { if (AppVars.MainForm != null) { AppVars.MainForm.BeginInvoke( new ReloadMainPhpInvokeDelegate(AppVars.MainForm.ReloadMainPhpInvoke), new object[] { }); } } catch (InvalidOperationException) { } var expected = HelperConverters.TimeSpanToString( new TimeSpan(AppVars.Profile.Pers.Ready - DateTime.Now.Ticks)); WriteChatMsg(string.Format(CultureInfo.InvariantCulture, "До таймаута боя: <b>{0}</b>", expected)); } } } return; } // Оглядываемся... /* * if (AppVars.DoHerbAutoCut) * { * // ["ogl","Оглядеться","e108c4be017325666d1744fd977189f4", * if (PressOgl()) * { * } * } */ // Обновление списка людей на клетке /* * if (AppVars.DoShowWalkers) * { * var diffc = DateTime.Now.Subtract(AppVars.LastChList); * if (diffc.TotalSeconds > 1) * { * AppVars.LastChList = DateTime.Now; * ReloadChlistFrame(); * } * } */ if (AppVars.FishNoCaptchaReady) { AppVars.FishNoCaptchaReady = false; UpdateTexLog("Завершение рыбалки без капчи"); EnterFishCode(string.Empty); return; } if (string.IsNullOrEmpty(AppVars.FightLink)) { if (DateTime.Now.Subtract(AppVars.IdleTimer).TotalMinutes > 4) { AppVars.IdleTimer = DateTime.Now; ReloadMainPhpInvoke(); } return; } // Если нераспознанной капчи нет if (AppVars.FightLink.IndexOf("????", StringComparison.Ordinal) == -1) { if (AppVars.Profile.LezDoAutoboi) { AppVars.Profile.Pers.Ready = 0; if (AppVars.FightLink.Length > 5) { UpdateTexLog("Завершение боя"); if (AppVars.FightLink != null) { if (AppVars.FightLink.IndexOf("=00000&", StringComparison.Ordinal) == -1) { SetMainTopInvoke(AppVars.FightLink); } } } else { UpdateTexLog("Завершение рыбалки"); EnterFishCode(AppVars.FightLink); } if (AppVars.Profile.ShowTrayBaloons && trayIcon.Visible) { try { LockBaloon.AcquireWriterLock(5000); try { trayIcon.Visible = false; trayIcon.Visible = true; } finally { LockBaloon.ReleaseWriterLock(); } } catch (ApplicationException) { } } AppVars.FightLink = string.Empty; ChangeAutoboiState(AppVars.Profile.LezDoAutoboi ? AutoboiState.AutoboiOn : AutoboiState.AutoboiOff); } return; } // Все дальнейшие операции - только если включен гуамод if (!AppVars.Profile.DoGuamod) { if (DateTime.Now.Subtract(AppVars.IdleTimer).TotalMinutes > 4) { AppVars.IdleTimer = DateTime.Now; ReloadMainPhpInvoke(); } return; } if (AppVars.Autoboi == AutoboiState.Guamod) { // Уже идет распознавание ChangeAutoboiState(AutoboiState.Guamod); } else { // Запуск гуамода if (string.IsNullOrEmpty(AppVars.CodeAddress)) { try { if (AppVars.MainForm != null) { AppVars.MainForm.BeginInvoke( new ReloadMainPhpInvokeDelegate(AppVars.MainForm.ReloadMainPhpInvoke), new object[] { }); } } catch (InvalidOperationException) { } return; } AppVars.GuamodCode = "?????"; ChangeAutoboiState(AutoboiState.Guamod); Recognizer.Perform(); } }
private void InitGameTab() { if (tabControlLeft == null) { return; } if (tabControlLeft.TabPages.Count == 0) { return; } var tabPage = tabControlLeft.TabPages[0]; tabPage.Text = AppVars.Profile.UserNick; TabClass tabClass; if (tabPage.Tag == null) { tabClass = new TabClass { MyType = TabType.Game, WB = browserGame }; tabPage.Tag = tabClass; } browserGame.BeforeNewWindow -= wbTab_BeforeNewWindow; browserGame.BeforeNavigate -= browserGame_BeforeNavigate; browserGame.DocumentCompleted -= browserGame_DocumentCompleted; panelGame.Controls.Remove(browserGame); browserGame.Dispose(); browserGame = null; CookiesManager.ClearGame(); browserGame = new ExtendedWebBrowser { Dock = DockStyle.Fill, Name = "browserGame", ScriptErrorsSuppressed = true, TabIndex = 0, ObjectForScripting = new ScriptManager() }; browserGame.BeforeNewWindow += wbTab_BeforeNewWindow; browserGame.BeforeNavigate += browserGame_BeforeNavigate; browserGame.DocumentCompleted += browserGame_DocumentCompleted; panelGame.Controls.Add(browserGame); tabClass = (TabClass)tabPage.Tag; tabClass.WB = browserGame; tabPage.Tag = tabClass; buttonGameScreen.Tag = browserGame; var url = HelperConverters.AddressEncode(string.Concat("http://www.neverlands.ru/pinfo.cgi?", "Мастер Создатель")); browserGame.Navigate(url); while (browserGame != null && !browserGame.IsDisposed && browserGame.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); } if (browserGame != null && !browserGame.IsDisposed) { browserGame.Navigate(Resources.AddressNeverlands); while (browserGame != null && !browserGame.IsDisposed && browserGame.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); } if (browserGame != null && !browserGame.IsDisposed) { browserGame.Navigate(Resources.AddressNeverlands); } } }
private void CreateNewTab(TabType tt, string tourl, bool delayed) { if (!string.IsNullOrEmpty(tourl)) { for (var index = 1; index < tabControlLeft.TabPages.Count; index++) { if (!tourl.Equals(TabGetUrl(index), StringComparison.OrdinalIgnoreCase)) { continue; } if (!delayed) { tabControlLeft.SelectedIndex = index; } return; } } var tabc = new TabClass { MyType = tt, Address = tourl, AddressInit = tourl, Delayed = delayed }; var tabpage = new TabPage(); ExtendedWebBrowser browser = null; TextBox textbox = null; if (tabc.MyType != TabType.Notepad) { browser = new ExtendedWebBrowser { Dock = DockStyle.Fill, ScriptErrorsSuppressed = true, ObjectForScripting = new ScriptManager() }; // !!! browser.BeforeNewWindow += wbTab_BeforeNewWindow; tabc.WB = browser; } else { textbox = new TextBox { BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, Font = new Font("Courier New", 9F, FontStyle.Regular, GraphicsUnit.Point, 204), Multiline = true, ScrollBars = ScrollBars.Both, }; textbox.Leave += (sender, e) => AppVars.Profile.Notepad = ((TextBox)sender).Text; textbox.Text = AppVars.Profile.Notepad; textbox.SelectionStart = textbox.Text.Length; textbox.SelectionLength = 1; tabc.Note = textbox; } // panel var panel = new Panel(); if (browser != null) { panel.Controls.Add(browser); } else { panel.Controls.Add(textbox); } panel.Dock = DockStyle.Fill; panel.Location = new Point(3, 28); panel.Name = Guid.NewGuid().ToString(); panel.Padding = new Padding(0, 3, 0, 0); panel.Size = new Size(666, 461); // buttonback ToolStripButton buttonback = null; if (tabc.MyType == TabType.Forum || tabc.MyType == TabType.Log || tabc.MyType == TabType.Other) { buttonback = new ToolStripButton { Image = Resources._16x16_back, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(58, 22), Text = "Назад", ToolTipText = "Возврат на предыдущую страницу", Tag = browser }; buttonback.Click += buttonForumBack_Click; } // buttonrefresh ToolStripButton buttonrefresh = null; if ((tabc.MyType != TabType.Notepad) && (tabc.MyType != TabType.TodayChat)) { buttonrefresh = new ToolStripButton { Image = Resources._16x16_refresh, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(77, 22), Text = "Обновить", ToolTipText = "Обновление текущей страницы", Tag = browser }; buttonrefresh.Click += buttonForumRefresh_Click; } // buttonreload ToolStripButton buttonreload = null; if (tabc.MyType == TabType.TodayChat) { buttonreload = new ToolStripButton { Image = Resources._16x16_refresh, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(77, 22), Text = "Перечитать", ToolTipText = "Обновление сегодняшнего чата", Tag = browser }; buttonreload.Click += buttonReload_Click; } // buttonclose var buttonclose = new ToolStripButton { Image = Resources._16x16_close, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(71, 22), Text = "Закрыть", ToolTipText = "Закрытие этой закладки", Tag = tabpage }; buttonclose.Click += buttonForumClose_Click; // toolstripseparator1 ToolStripSeparator toolstripseparator1 = null; if (tabc.MyType != TabType.Notepad) { toolstripseparator1 = new ToolStripSeparator { Name = Guid.NewGuid().ToString(), Size = new Size(6, 25) }; } // buttoncompas ToolStripButton buttoncompas = null; if (tabc.MyType == TabType.PInfo || tabc.MyType == TabType.PName) { if (!string.IsNullOrEmpty(tourl)) { var nick = tabc.MyType == TabType.PInfo ? HelperConverters.NickDecode(tourl.Substring(Resources.AddressPInfo.Length)) : HelperConverters.NickDecode(tourl.Substring(Resources.AddressPName.Length)); buttoncompas = new ToolStripButton { Image = Resources._16x16_compas, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(64, 22), Text = "Компас", ToolTipText = "Поиск точного положения на природе", Tag = nick, Enabled = true }; buttoncompas.Click += buttonCompas_Click; } } // buttonprivate ToolStripButton buttonprivate = null; if (tabc.MyType == TabType.PInfo || tabc.MyType == TabType.PName) { if (!string.IsNullOrEmpty(tourl)) { var nick = tabc.MyType == TabType.PInfo ? HelperConverters.NickDecode(tourl.Substring(Resources.AddressPInfo.Length)) : HelperConverters.NickDecode(tourl.Substring(Resources.AddressPName.Length)); buttonprivate = new ToolStripButton { Image = Resources._16x16_private, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(64, 22), Text = "Приват", ToolTipText = "Обратиться в приват", Tag = nick }; buttonprivate.Click += buttonPrivate_Click; } } // buttoncontact ToolStripButton buttoncontact = null; if (tabc.MyType == TabType.PInfo || tabc.MyType == TabType.PName) { if (!string.IsNullOrEmpty(tourl)) { var nick = tabc.MyType == TabType.PInfo ? HelperConverters.NickDecode(tourl.Substring(Resources.AddressPInfo.Length)) : HelperConverters.NickDecode(tourl.Substring(Resources.AddressPName.Length)); buttoncontact = new ToolStripButton { Image = Resources._16x16_person, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(64, 22), Text = "В контакты", ToolTipText = "Добавить в контакты", Tag = nick }; buttoncontact.Click += buttonContact_Click; } } // buttonaddclan ToolStripButton buttonAddClan = null; if (tabc.MyType == TabType.PInfo || tabc.MyType == TabType.PName) { if (!string.IsNullOrEmpty(tourl)) { var nick = tabc.MyType == TabType.PInfo ? HelperConverters.NickDecode(tourl.Substring(Resources.AddressPInfo.Length)) : HelperConverters.NickDecode(tourl.Substring(Resources.AddressPName.Length)); buttonAddClan = new ToolStripButton { Image = Resources._16x16_person, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(64, 22), Text = @"Весь клан", ToolTipText = @"Добавление всего клана в контакты", Tag = nick, Enabled = true }; buttonAddClan.Click += buttonAddClan_Click; } } // buttonscreen ToolStripButton buttonscreen = null; if ((tabc.MyType != TabType.Notepad) && (tabc.MyType != TabType.TodayChat)) { buttonscreen = new ToolStripButton { Image = Resources._16x16_camera, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(64, 22), Text = "Снимок", ToolTipText = "Снимок текущей закладки", Tag = browser }; buttonscreen.Click += buttonForumScreen_Click; } // separator ToolStripSeparator toolstripseparator2 = null; if ((tabc.MyType != TabType.Notepad) && (tabc.MyType != TabType.TodayChat)) { toolstripseparator2 = new ToolStripSeparator { Name = Guid.NewGuid().ToString(), Size = new Size(6, 25) }; } // buttonaddress ToolStripButton buttonaddress = null; if ((tabc.MyType != TabType.Notepad) && (tabc.MyType != TabType.TodayChat)) { buttonaddress = new ToolStripButton { DisplayStyle = ToolStripItemDisplayStyle.Image, Image = Resources._16x16_copyurl, ImageTransparentColor = Color.Magenta, Name = Guid.NewGuid().ToString(), Size = new Size(23, 22), ToolTipText = "Копировать адрес в клипборд" }; buttonaddress.Click += buttonForumCopyAddress_Click; } // labeladdress ToolStripStatusLabel labeladdress = null; if ((tabc.MyType != TabType.Notepad) && (tabc.MyType != TabType.TodayChat)) { labeladdress = new ToolStripStatusLabel { Enabled = false, Name = Guid.NewGuid().ToString(), Size = new Size(65, 22), Text = tabc.AddressInit, TextAlign = ContentAlignment.MiddleLeft, DisplayStyle = ToolStripItemDisplayStyle.Text }; } if (browser != null) { browser.Tag = labeladdress; browser.DocumentCompleted += wbTab_DocumentCompleted; } // // toolstrip // var toolstrip = new ToolStrip(); switch (tabc.MyType) { case TabType.Other: case TabType.Log: case TabType.Forum: toolstrip.Items.AddRange(new ToolStripItem[] { buttonback, buttonrefresh, buttonclose, toolstripseparator1, buttonscreen, toolstripseparator2, buttonaddress, labeladdress }); break; case TabType.PBots: case TabType.Room: toolstrip.Items.AddRange(new ToolStripItem[] { buttonrefresh, buttonclose, toolstripseparator1, buttonscreen, toolstripseparator2, buttonaddress, labeladdress }); break; case TabType.PInfo: case TabType.PName: toolstrip.Items.AddRange(new ToolStripItem[] { buttonrefresh, buttonclose, toolstripseparator1, buttoncompas, buttonprivate, buttoncontact, buttonAddClan, buttonscreen, toolstripseparator2, buttonaddress, labeladdress }); break; case TabType.Notepad: toolstrip.Items.AddRange(new ToolStripItem[] { buttonclose }); break; case TabType.TodayChat: toolstrip.Items.AddRange(new ToolStripItem[] { buttonreload, buttonclose }); break; } toolstrip.Location = new Point(3, 3); toolstrip.Name = Guid.NewGuid().ToString(); toolstrip.Size = new Size(666, 25); tabpage.Controls.Add(panel); tabpage.Controls.Add(toolstrip); tabpage.Name = Guid.NewGuid().ToString(); tabpage.Location = new Point(4, 23); tabpage.Size = new Size(672, 492); tabpage.Padding = new Padding(3); tabpage.UseVisualStyleBackColor = true; switch (tt) { case TabType.Forum: tabpage.Text = "Форум"; break; case TabType.PInfo: if (tourl != null) { tabpage.Text = HelperConverters.NickDecode(tourl.Substring(Resources.AddressPInfo.Length)); tourl = HelperConverters.AddressEncode(Resources.AddressPInfo + tabpage.Text); } tabpage.ImageIndex = 0; break; case TabType.PName: if (tourl != null) { tabpage.Text = HelperConverters.NickDecode(tourl.Substring(Resources.AddressPName.Length)); tourl = HelperConverters.AddressEncode(Resources.AddressPName + tabpage.Text); } tabpage.ImageIndex = 0; break; case TabType.PBots: if (tourl != null) { tabpage.Text = "Бот " + tourl.Substring(Resources.AddressPBots.Length); } tabpage.ImageIndex = 0; break; case TabType.Log: if (tourl != null) { var slog = tourl.Substring(Resources.AddressFightLog.Length); var pos = slog.IndexOf('&'); if (pos != -1) { slog = slog.Substring(0, pos); } tabpage.Text = "Бой " + slog; } break; case TabType.Room: if (tourl != null) { tabpage.Text = "Комната " + tourl.Substring("http://www.neverlands.ru/ch.php?lo=1&r=".Length); } break; case TabType.Notepad: tabpage.Text = "Блокнот"; tabpage.ImageIndex = 1; break; case TabType.TodayChat: tabpage.Text = "Сегодняшний чат"; break; case TabType.Other: if (tourl != null) { tabpage.Text = new Uri(tourl).DnsSafeHost; } break; } if ((tt != TabType.Game) && (tt != TabType.Notepad) && (tt != TabType.TodayChat)) { if (!delayed) { tabc.WB.Navigate(tourl); } } if (tt == TabType.TodayChat) { if (!delayed) { TabReload(buttonreload); } } tabc.Address = tourl; tabpage.Tag = tabc; if ((tt == TabType.PInfo) && (tabpage.Text.Equals(AppVars.Profile.UserNick, StringComparison.OrdinalIgnoreCase))) { tabControlLeft.TabPages.Insert(1, tabpage); } else { tabControlLeft.TabPages.Add(tabpage); } if (delayed) { return; } SaveTabs(); tabControlLeft.SelectedTab = tabpage; }