Пример #1
0
        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);
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        public static string GetFlog(string flog)
        {
            var url = HelperConverters.AddressEncode(string.Concat("http://neverlands.ru/logs.fcg?fid=", flog));

            return(GetInfo(url));
        }
Пример #5
0
        public static string GetPInfo(string nick)
        {
            var url = HelperConverters.AddressEncode(string.Concat("http://neverlands.ru/pinfo.cgi?", nick));

            return(GetInfo(url));
        }
Пример #6
0
        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();
            }
        }
Пример #7
0
        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);
                }
            }
        }
Пример #8
0
        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;
        }