Ejemplo n.º 1
0
        private static string MainPhpRob(string html)
        {
            // var fight_ty = [1,300,10,0,2,"","","1","1948222238",[],[800817,"5b5ce67a064cd39446d488a22b366525","БИЗОНИУС",1387692418]];
            var strfightty = HelperStrings.SubString(html, "var fight_ty = [", "];");

            if (string.IsNullOrEmpty(strfightty))
            {
                return(null);
            }

            var xfightty = HelperStrings.ParseJsString(strfightty);

            // Можно ли обокрасть?
            if ((xfightty.Count > 10) && (xfightty[10].Count > 1))
            {
                //if(fight_ty[10].length > 0)
                //{
                //    rbut = '<input type=button class=fbut value="Обокрасть игрока '+fight_ty[10][2]+'" onclick="location=
                // \'main.php?get_id=17&type=0&p='+fight_ty[10][3]+'&uid='+fight_ty[10][0]+'&s=0&m=0&vcode='+fight_ty[10][1]+'\'">';
                //}

                var robLink =
                    "http://www.neverlands.ru/main.php?get_id=17&type=0&p=" +
                    xfightty[10][3] +
                    "&uid=" +
                    xfightty[10][0] +
                    "&s=0&m=0&vcode=" +
                    xfightty[10][1];

                return(BuildRedirect("Кража", robLink));
            }

            return(null);
        }
Ejemplo n.º 2
0
        private static string[] ParseString(string html, string sarg, int mina)
        {
            if (html == null)
            {
                throw new ArgumentNullException("html");
            }

            if (sarg == null)
            {
                throw new ArgumentNullException("sarg");
            }

            if (html.IndexOf(sarg, StringComparison.OrdinalIgnoreCase) == -1)
            {
                return(null);
            }

            var args = HelperStrings.SubString(html, sarg, "]");

            if (args == null)
            {
                return(null);
            }

            var pars = args.Split(',');

            return(pars.Length < mina ? null : pars);
        }
Ejemplo n.º 3
0
 public ShopEntry(string html)
 {
     _raw     = html;
     _count   = 1;
     Name     = HelperStrings.SubString(html, "<font class=nickname><b>", "</b>");
     Price    = HelperStrings.SubString(html, "value=\"Продать за ", " NV\">");
     SellCall = HelperStrings.SubString(html, " onclick=\"shop_item_sell(", ")\" ");
 }
Ejemplo n.º 4
0
        private static string MainPhpDarkTeleport(string html)
        {
            // abil_1(3,'5526edcf95299cde84cc07c5fb7d630b')

            var vcode = HelperStrings.SubString(html, "abil_1(3,'", "'");

            if (string.IsNullOrEmpty(vcode))
            {
                return(null);
            }

            /*
             * <input type=hidden name=useaction value="addon-action">
             * <input type=hidden name=addid value="1">
             * <input type=hidden name=post_id value="31">
             * <input type=hidden name=vcode value="'+vcode+'">
             * <SELECT name=wtelid class=zayavki> 1-12
             */

            var sb = new StringBuilder();

            sb.Append(
                HelperErrors.Head() +
                "Используем сумеречный телепорт...");
            sb.Append("<form action=main.php method=POST name=ff>");

            sb.Append(@"<input name=useaction type=hidden value=""");
            sb.Append("addon-action");
            sb.Append(@""">");

            sb.Append(@"<input name=addid type=hidden value=""");
            sb.Append(1);
            sb.Append(@""">");

            sb.Append(@"<input name=post_id type=hidden value=""");
            sb.Append(31);
            sb.Append(@""">");

            sb.Append(@"<input name=vcode type=hidden value=""");
            sb.Append(vcode);
            sb.Append(@""">");

            int wtelid = Dice.Make(12) + 1;

            sb.Append(@"<input name=wtelid type=hidden value=""");
            sb.Append(wtelid);
            sb.Append(@""">");

            sb.Append(
                @"</form>" +
                @"<script language=""JavaScript"">" +
                @"document.ff.submit();" +
                @"</script></body></html>");

            return(sb.ToString());
        }
Ejemplo n.º 5
0
        private static string MainPhpFindInvOld(string html, string filter)
        {
            var tag = HelperStrings.SubString(
                html,
                @"<input type=button class=lbut value=""Инвентарь""",
                ">");

            if (!string.IsNullOrEmpty(tag))
            {
                if (tag.IndexOf("DISABLED", StringComparison.OrdinalIgnoreCase) != -1)
                {
                    return(null);
                }
            }

            const string s1 = @"value=""Инвентарь"">";
            var          p1 = html.IndexOf(s1, StringComparison.OrdinalIgnoreCase);

            if (p1 != -1)
            {
                const string staticOnClick = @"onclick=""location='";
                var          p2            = html.LastIndexOf(staticOnClick, p1, StringComparison.OrdinalIgnoreCase);
                if (p2 == -1)
                {
                    return(string.Empty);
                }

                var p3 = html.IndexOf(@"'", p2 + staticOnClick.Length, StringComparison.Ordinal);
                return(p3 == -1
                           ? string.Empty
                           : BuildRedirect("Переключение на инвентарь",
                                           html.Substring(p2 + staticOnClick.Length, p3 - p2 - staticOnClick.Length) + filter));
            }

            const string s1X = @"class=lbut value=""Инвентарь""";
            var          p1X = html.IndexOf(s1X, StringComparison.OrdinalIgnoreCase);

            if (p1X != -1)
            {
                const string staticOnClick = @"onclick=""location='";
                var          p2            = html.IndexOf(staticOnClick, p1X, StringComparison.OrdinalIgnoreCase);
                if (p2 == -1)
                {
                    return(string.Empty);
                }

                var p3 = html.IndexOf(@"'", p2 + staticOnClick.Length, StringComparison.Ordinal);
                return(p3 == -1
                           ? string.Empty
                           : BuildRedirect("Переключение на инвентарь",
                                           html.Substring(p2 + staticOnClick.Length, p3 - p2 - staticOnClick.Length) + filter));
            }

            return(null);
        }
Ejemplo n.º 6
0
        private static string MainPhpDarkFog(string html)
        {
            // abil_2(3,'29396edee4f3a980ee244816a7b8a46d')

            var vcode = HelperStrings.SubString(html, "abil_2(3,'", "'");

            if (string.IsNullOrEmpty(vcode))
            {
                return(null);
            }

            /*
             * <input type=hidden name=useaction value="addon-action">
             * <input type=hidden name=addid value="1">
             * <input type=hidden name=post_id value="32">
             * <input type=hidden name=vcode value="'+vcode+'">
             * <INPUT TYPE="text" name=pnick class=zayavki maxlength=25>
             */

            var sb = new StringBuilder();

            sb.Append(
                HelperErrors.Head() +
                "Используем сумеречный туман...");
            sb.Append("<form action=main.php method=POST name=ff>");

            sb.Append(@"<input name=useaction type=hidden value=""");
            sb.Append("addon-action");
            sb.Append(@""">");

            sb.Append(@"<input name=addid type=hidden value=""");
            sb.Append(1);
            sb.Append(@""">");

            sb.Append(@"<input name=post_id type=hidden value=""");
            sb.Append(32);
            sb.Append(@""">");

            sb.Append(@"<input name=vcode type=hidden value=""");
            sb.Append(vcode);
            sb.Append(@""">");

            sb.Append(@"<INPUT name=pnick type=hidden value=""");
            sb.Append(AppVars.Profile.UserNick);
            sb.Append(@""">");

            sb.Append(
                @"</form>" +
                @"<script language=""JavaScript"">" +
                @"document.ff.submit();" +
                @"</script></body></html>");

            return(sb.ToString());
        }
Ejemplo n.º 7
0
        private static int[] GetPoisonAndWounds(string html)
        {
            var poisonAndWounds = new int[4];

            // var effects = [[3,'<b>Средняя травма</b> (x1) (еще 02:16:49)'],[77,'<b>Новогодний бонус</b> (x1) (еще 94:24:18)']];

            var streff = HelperStrings.SubString(html, "var effects = [[", "]];");

            if (string.IsNullOrEmpty(streff))
            {
                return(poisonAndWounds);
            }

            var par = streff.Split(new[] { "],[" }, StringSplitOptions.RemoveEmptyEntries);

            if (par.Length == 0)
            {
                return(poisonAndWounds);
            }

            foreach (var elem in par)
            {
                var pair = elem.Split(',');
                if (pair.Length != 2)
                {
                    continue;
                }

                switch (pair[0])
                {
                case "2":
                    poisonAndWounds[3]++;     // тяжелые
                    break;

                case "3":
                    poisonAndWounds[2]++;     // средние
                    break;

                case "4":
                    poisonAndWounds[1]++;     // легкие
                    break;

                case "24":
                    poisonAndWounds[0]++;
                    break;
                }
            }

            return(poisonAndWounds);
        }
Ejemplo n.º 8
0
        private static byte[] ButPhp(byte[] array)
        {
            var html  = Russian.Codepage.GetString(array);
            var now   = DateTime.Now;
            var shour = HelperStrings.SubString(html, "hour=", "&");
            var smin  = HelperStrings.SubString(html, "min=", "&");
            var ssec  = HelperStrings.SubString(html, "sec=", "\"");

            if (!string.IsNullOrEmpty(shour) && !string.IsNullOrEmpty(smin) && !string.IsNullOrEmpty(ssec))
            {
                int hour;
                if (int.TryParse(shour, out hour))
                {
                    int min;
                    if (int.TryParse(smin, out min))
                    {
                        int sec;
                        if (int.TryParse(ssec, out sec))
                        {
                            var clock = new DateTime(now.Year, now.Month, now.Day, hour, min, sec);
                            AppVars.Profile.ServDiff = now.Subtract(clock);
                            if (AppVars.Profile.ServDiff > new TimeSpan(1, 0, 0, 0))
                            {
                                AppVars.Profile.ServDiff = new TimeSpan(0);
                            }
                        }
                    }
                }
            }

            html = html.Replace(@"/b1.gif", @"/b1.gif name=butinp");
            html = html.Replace("smile_open('')", "window.external.ShowSmiles(1)");
            html = html.Replace("smile_open('2')", "window.external.ShowSmiles(2)");

            //string obj = ;
            //var regex = new Regex("<object\\b[^>]*>[^<]*(?:(?!</?object\\b)<[^<]*)*</object\\s*>");
            //html = regex.Replace(html, string.Empty);

            //const string s1 = "<OBJECT";
            //const string s2 = "</OBJECT>";

            //html = HelperStrings.Replace(html, s1, s2, string.Empty);
            //html = html.Replace(s1, string.Empty);
            //html = html.Replace(s2, string.Empty);

            return(Russian.Codepage.GetBytes(html));
        }
Ejemplo n.º 9
0
        /*
         *
         *   <a href="?im=0"><img src=http://image.neverlands.ru/gameplay/invent/0.gif width=44 height=53 alt="Вещи" title="Вещи" class=cath border=0></a>
         *   ...
         *   <a href="?wfo=1"><img src=http://image.neverlands.ru/gameplay/invent/cat/b3.gif width=41 height=53 alt="Сбросить фильтр" title="Сбросить фильтр" class=cath border=0></a>          *
         */

        private static string MainPhpFindPerc(string html)
        {
            /* ["inf","Ваш персонаж","d99fc020c89db0c07e41fbd972179422", */
            /* <input type=button class=lbut onclick="location='main.php?get_id=56&act=10&go=inf&vcode=86d216564bc981c83a54f59197d3655a'" value="Ваш персонаж"> */

            /*
             * var delta = DateTime.Now.Subtract(AppVars.LastSwitch);
             * if (delta.TotalSeconds < 5)
             * {
             *  return null;
             * }
             */


            var    vcode = HelperStrings.SubString(html, "'main.php?get_id=56&act=10&go=inf&vcode=", "'");
            string link;

            if (!string.IsNullOrEmpty(vcode))
            {
                link = string.Format(CultureInfo.InvariantCulture, "main.php?get_id=56&act=10&go=inf&vcode={0}", vcode);
                return(BuildRedirect("Переключение на персонаж", link));
            }

            const string patternEnter    = @"[""inf"",""Ваш персонаж"",""";
            var          posPatternEnter = html.IndexOf(patternEnter, StringComparison.OrdinalIgnoreCase);

            if (posPatternEnter == -1)
            {
                return(null);
            }

            posPatternEnter += patternEnter.Length;
            var posEnd = html.IndexOf('"', posPatternEnter);

            if (posEnd == -1)
            {
                return(null);
            }

            AppVars.LastSwitch = DateTime.Now;
            vcode = html.Substring(posPatternEnter, posEnd - posPatternEnter);
            link  = string.Format(CultureInfo.InvariantCulture, "main.php?get_id=56&act=10&go=inf&vcode={0}", vcode);
            return(BuildRedirect("Переключение на персонаж", link));
        }
Ejemplo n.º 10
0
        public static bool Exists(string userNick)
        {
            var result = UserList.ContainsKey(userNick.ToLower());

            if (result)
            {
                return(true);
            }

            var html = NeverInfo.GetPInfo(userNick);

            if (string.IsNullOrEmpty(html))
            {
                return(false);
            }

            // 2/11/2017 - params -> parameters
            // var params0 = HelperStrings.SubString(html, "var params = [[", "],");
            var params0 = HelperStrings.SubString(html, "var parameters = [[", "],");

            if (string.IsNullOrEmpty(params0))
            {
                return(false);
            }

            var spar0 = HelperStrings.ParseArguments(params0);

            if (spar0.Length < 9)
            {
                return(false);
            }

            var nick   = spar0[0].Trim();
            var sign   = spar0[2];
            var level  = spar0[3];
            var status = spar0[8] + ", " + spar0[9];
            var user   = new ChatUser(nick, level, sign, status);

            UserList.Add(nick.ToLower(), user);
            return(true);
        }
Ejemplo n.º 11
0
        private static string MainPhpRaz(string html)
        {
            var strfightty = HelperStrings.SubString(html, "var fight_ty = [", "];");

            if (string.IsNullOrEmpty(strfightty))
            {
                return(null);
            }

            var xfightty = HelperStrings.ParseJsString(strfightty);

            //if(fight_ty[9].length > 0)
            //{
            //    rbut = '<input type=button class=fbut value="Разделать" onclick="location=\'
            //    main.php?get_id=17&type='+fight_ty[9][0]+'&p='+fight_ty[9][1]+'&uid='+fight_ty[9][2]+'&s='+fight_ty[9][3]+'&m='+fight_ty[9][4]+'&vcode='+fight_ty[9][5]+'\'">';
            //}

            // Можно ли провести разделку?
            if ((xfightty.Count > 9) && (xfightty[9].Count > 1))
            {
                var razLink =
                    "http://www.neverlands.ru/main.php?get_id=17&type=" +
                    xfightty[9][0] +
                    "&p=" +
                    xfightty[9][1] +
                    "&uid=" +
                    xfightty[9][2] +
                    "&s=" +
                    xfightty[9][3] +
                    "&m=" +
                    xfightty[9][4] +
                    "&vcode=" +
                    xfightty[9][5];

                return(BuildRedirect("Разделка", razLink));
            }

            return(null);
        }
Ejemplo n.º 12
0
        private static byte[] TradePhp(byte[] array)
        {
            var html = Russian.Codepage.GetString(array);

            if (html.IndexOf(@"onclick=""location='../main.php'"" value=""Отказаться от покупки"">", StringComparison.OrdinalIgnoreCase) == -1)
            {
                return(array);
            }

            var salesNick     = HelperStrings.SubString(html, @"<font color=#cc0000>Купить вещь у ", " за ");
            var strSalesPrice = HelperStrings.SubString(html, @" за ", "NV?</font>");

            if (strSalesPrice == null)
            {
                return(array);
            }

            int salesPrice;

            if (!int.TryParse(strSalesPrice, out salesPrice))
            {
                return(array);
            }

            var nameThing     = HelperStrings.SubString(html, @"NV?</font><br><br> ", "</b>");
            var levelThing    = HelperStrings.SubString(html, @"&nbsp;Уровень: <b>", "</b>");
            var intLevelThing = -1;

            if (levelThing != null)
            {
                if (!int.TryParse(levelThing, out intLevelThing))
                {
                    intLevelThing = -1;
                }

                levelThing = '[' + levelThing + ']';
            }

            var uidThing = HelperStrings.SubString(html, @"&tradeu=", "&");

            if (uidThing == null)
            {
                return(array);
            }

            var regS   = new Regex(@"Долговечность: <b>([\d]+)/([\d]+)</b>");
            var matchS = regS.Match(html);

            if (matchS.Groups.Count != 3)
            {
                return(array);
            }

            int realDolg;

            if (!int.TryParse(matchS.Groups[1].Value, out realDolg))
            {
                return(array);
            }

            int fullDolg;

            if (!int.TryParse(matchS.Groups[2].Value, out fullDolg))
            {
                return(array);
            }

            if (fullDolg == 0)
            {
                return(array);
            }

            var strRealPrice = HelperStrings.SubString(html, @"&nbsp;Цена: <b>", " NV</b>");

            if (strRealPrice == null)
            {
                return(array);
            }

            int realPrice;

            if (!int.TryParse(strRealPrice, out realPrice))
            {
                return(array);
            }

            // Теперь считаем цену продажи

            if (realDolg < fullDolg)
            {
                realPrice = (realPrice * realDolg) / fullDolg;
            }

            var sb = new StringBuilder();

            sb.Append("%<");
            sb.Append(salesNick);
            sb.Append("> ");

            var sbmsg = new StringBuilder();

            sbmsg.Append(" <b>");
            sbmsg.Append(nameThing);
            sbmsg.Append(levelThing);
            sbmsg.Append("</b>, долговечность <b>");
            sbmsg.Append(realDolg);
            sbmsg.Append('/');
            sbmsg.Append(fullDolg);
            sbmsg.Append("</b>, (госцена <font color=#00cc00><b>");
            sbmsg.Append(realPrice);
            sbmsg.Append("NV</b></font>) за <font color=#0000cc><b>");
            sbmsg.Append(salesPrice);
            sbmsg.Append("NV</b></font> у <b>");
            sbmsg.Append(salesNick);
            sbmsg.Append("</b>");

            var price90   = (int)Math.Round(realPrice * 0.9);
            var calcPrice = TorgList.Calculate(realPrice);

            if (salesPrice > calcPrice)
            {
                // Слишком высокая цена

                try
                {
                    if (AppVars.MainForm != null)
                    {
                        AppVars.MainForm.BeginInvoke(
                            new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                            new object[] { "<font color=#cc0000><b>Отказываемся</b></font> от покупки вещи" + sbmsg });
                    }
                }
                catch (InvalidOperationException)
                {
                }

                sb.Append(TorgList.DoFilter(AppVars.Profile.TorgMessageTooExp, nameThing, levelThing, salesPrice, calcPrice, realDolg, fullDolg, price90));
                Chat.AddAnswer(sb.ToString());
                AppVars.ContentMainPhp = BuildRedirect("Отказ от покупки", "../main.php");
                return(Russian.Codepage.GetBytes(AppVars.ContentMainPhp));
            }

            if (salesPrice < price90)
            {
                // Слишком низкая цена
                try
                {
                    if (AppVars.MainForm != null)
                    {
                        AppVars.MainForm.BeginInvoke(
                            new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                            new object[] { "<font color=#cc0000><b>Отказываемся</b></font> от покупки вещи" + sbmsg });
                    }
                }
                catch (InvalidOperationException)
                {
                }

                sb.Append(TorgList.DoFilter(AppVars.Profile.TorgMessageLess90, nameThing, levelThing, salesPrice, calcPrice, realDolg, fullDolg, price90));
                Chat.AddAnswer(sb.ToString());
                AppVars.ContentMainPhp = BuildRedirect("Отказ от покупки", "../main.php");
                return(Russian.Codepage.GetBytes(AppVars.ContentMainPhp));
            }

            var spdeny = AppVars.Profile.TorgDeny.Trim().Split(';');

            for (var i = 0; i < spdeny.Length; i++)
            {
                if (string.IsNullOrEmpty(spdeny[i]))
                {
                    continue;
                }

                var keydeny = spdeny[i].Trim();
                if ((keydeny.IndexOf(' ') == -1 && nameThing.IndexOf(keydeny, StringComparison.OrdinalIgnoreCase) != -1) ||
                    (keydeny.IndexOf(' ') != -1 && nameThing.Equals(keydeny, StringComparison.OrdinalIgnoreCase)))
                {
                    try
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.BeginInvoke(
                                new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                                new object[] { "В имени вещи содержится ключевое слово <b>" + keydeny + "</b>, указанное в настройках. Отказываемся от покупки." });
                        }
                    }
                    catch (InvalidOperationException)
                    {
                    }

                    AppVars.ContentMainPhp = BuildRedirect("Отказ от покупки", "../main.php");
                    return(Russian.Codepage.GetBytes(AppVars.ContentMainPhp));
                }
            }

            // Делаем попытку купить

            var linkPrefix = "../main.php?get_id=0";
            var link       = HelperStrings.SubString(html, linkPrefix, "'");

            if (link == null)
            {
                return(array);
            }

            // Готовимся
            try
            {
                if (AppVars.MainForm != null)
                {
                    AppVars.MainForm.BeginInvoke(
                        new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                        new object[] { "<font color=#00cc00><b>Покупаем</b></font> вещь" + sbmsg });
                }
            }
            catch (InvalidOperationException)
            {
            }

            TorgList.TriggerBuy = false;
            if (AppVars.Profile.TorgSliv)
            {
                if (intLevelThing < AppVars.Profile.TorgMinLevel)
                {
                    if (nameThing.IndexOf("(ап)", StringComparison.OrdinalIgnoreCase) == -1)
                    {
                        var isDisabled = false;
                        var keyword    = string.Empty;
                        if (!string.IsNullOrEmpty(AppVars.Profile.TorgEx))
                        {
                            var sp = AppVars.Profile.TorgEx.Trim().Split(';');
                            var i  = 0;
                            for (; i < sp.Length; i++)
                            {
                                keyword = sp[i].Trim();
                                if ((keyword.IndexOf(' ') == -1 && nameThing.IndexOf(keyword, StringComparison.OrdinalIgnoreCase) == -1) ||
                                    (keyword.IndexOf(' ') != -1 && !nameThing.Equals(keyword, StringComparison.OrdinalIgnoreCase)))
                                {
                                    continue;
                                }

                                isDisabled = true;
                                break;
                            }
                        }

                        if (!isDisabled)
                        {
                            try
                            {
                                if (AppVars.MainForm != null)
                                {
                                    AppVars.MainForm.BeginInvoke(
                                        new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                                        new object[] { "Делаем попытку сдать вещь в лавку..." });
                                }
                            }
                            catch (InvalidOperationException)
                            {
                            }

                            TorgList.UidThing   = uidThing;
                            TorgList.TriggerBuy = true;
                        }
                        else
                        {
                            try
                            {
                                if (AppVars.MainForm != null)
                                {
                                    AppVars.MainForm.BeginInvoke(
                                        new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                                        new object[] { "В имени вещи содержится ключевое слово <b>" + keyword + "</b>, указанное в настройках. Оставляем вещь себе." });
                                }
                            }
                            catch (InvalidOperationException)
                            {
                            }
                        }
                    }
                    else
                    {
                        try
                        {
                            if (AppVars.MainForm != null)
                            {
                                AppVars.MainForm.BeginInvoke(
                                    new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                                    new object[] { "Вещь апнута, оставляем ее себе" });
                            }
                        }
                        catch (InvalidOperationException)
                        {
                        }
                    }
                }
                else
                {
                    try
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.BeginInvoke(
                                new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                                new object[] { "Уровень вещи <b>[" + intLevelThing + "]</b> равен или превышает уровень <b>[" + AppVars.Profile.TorgMinLevel + "]</b>, указанный в настройках. Оставляем вещь себе." });
                        }
                    }
                    catch (InvalidOperationException)
                    {
                    }
                }
            }
            else
            {
                try
                {
                    if (AppVars.MainForm != null)
                    {
                        AppVars.MainForm.BeginInvoke(
                            new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                            new object[] { "Перепродажа вещей в лавку отключена в настройках" });
                    }
                }
                catch (InvalidOperationException)
                {
                }
            }

            var sbyes = new StringBuilder(sb.ToString());

            sbyes.Append(TorgList.DoFilter(AppVars.Profile.TorgMessageThanks, nameThing, levelThing, salesPrice, calcPrice, realDolg, fullDolg, price90));
            TorgList.MessageThanks = sbyes.ToString();

            var sbno = new StringBuilder(sb.ToString());

            sbno.Append(TorgList.DoFilter(AppVars.Profile.TorgMessageNoMoney, nameThing, levelThing, salesPrice, calcPrice, realDolg, fullDolg, price90));
            TorgList.MessageNoMoney = sbno.ToString();

            TorgList.Trigger = true;

            AppVars.ContentMainPhp = BuildRedirect("Покупка", linkPrefix + link);
            return(Russian.Codepage.GetBytes(AppVars.ContentMainPhp));
        }
Ejemplo n.º 13
0
        internal static string Process(string html)
        {
            var description = HelperStrings.SubString(html, "<font class=placename><b>", "</b></font>");

            if (description != null)
            {
                description          = description.Replace("<br>", " ");
                AppVars.LocationName = description;
            }

            var resultFilterProcRoom = FilterProcRoom(html);

            FilterGetWalkers(html);
            html = html.Replace(
                "</HEAD>",
                @"<style type=""text/css"">" +
                @"a.activenick { background-color:inherit; padding: 2 2 2 2; }" +
                @"a.activenick:hover { background-color:#99CCFF; padding: 2 2 2 2; }" +
                @"a.activeico { background-color:inherit; padding: 1 1 1 1; }" +
                @"a.activeico:hover { background-color:#FF9933; padding: 1 1 1 1; }" +
                @"</style>" +
                @"</head>");

            var pos = html.IndexOf("<font", StringComparison.InvariantCultureIgnoreCase);

            if (pos != -1)
            {
                html = html.Insert(pos,
                                   @"<script Language=""JavaScript"">" +
                                   @"function navto()" +
                                   @"{" +
                                   @"e_m = get_by_id ('navbox');" +
                                   @"location = e_m.value;" +
                                   @"}" +
                                   @"function get_by_id(name)" +
                                   @"{" +
                                   @"if (document.getElementById) return document.getElementById(name);" +
                                   @"else if (document.all) return document.all[name];" +
                                   @"}" +
                                   @"</script>" +
                                   @"<select id=""navbox"" onchange=""navto()"" style=""font-family:Arial; font-size:8pt"">" +
                                   @"<option value=""ch.php?lo=1&"">Текущая клетка</option>" +
                                   @"<option value=""ch.php?lo=1&"">Исходная клетка</option>" +
                                   @"<option value=""ch.php?lo=1&r=arena0"">Зал Помощи</option>" +
                                   @"<option value=""ch.php?lo=1&r=arena1"">Тренировочный зал</option>" +
                                   @"<option value=""ch.php?lo=1&r=arena2"">Зал Испытаний</option>" +
                                   @"<option value=""ch.php?lo=1&r=arena3"">Зал Посвящения</option>" +
                                   @"<option value=""ch.php?lo=1&r=arena4"">Зал Покровителей</option>" +
                                   @"<option value=""ch.php?lo=1&r=arena5"">Зал Закона</option>" +
                                   @"<option value=""ch.php?lo=1&r=main"">Городская площадь</option>" +
                                   @"<option value=""ch.php?lo=1&r=shop_1"">Лавка</option>" +
                                   @"<option value=""ch.php?lo=1&r=workshop"">Мастерская</option>" +
                                   @"<option value=""ch.php?lo=1&r=bar0"">Таверна, Большой Зал</option>" +
                                   @"<option value=""ch.php?lo=1&r=hospi"">Больница</option>" +
                                   @"<option value=""ch.php?lo=1&r=hospi1"">Комната отдыха</option>" +
                                   @"<option value=""ch.php?lo=1&r=hospi2"">Палата</option>" +
                                   @"<option value=""ch.php?lo=1&r=hpr"">Магазин подарков</option>" +
                                   @"<option value=""ch.php?lo=1&r=hdi"">Дом дилеров</option>" +
                                   @"<option value=""ch.php?lo=1&r=hau"">Аукцион</option>" +
                                   @"<option value=""ch.php?lo=1&r=hba"">Банк</option>" +
                                   @"<option value=""ch.php?lo=1&r=obe"">Обелиск</option>" +
                                   @"<option value=""ch.php?lo=1&r=post"">Почтовая служба</option>" +
                                   @"<option value=""ch.php?lo=1&r=market"">Рынок</option>" +
                                   @"<option value=""ch.php?lo=1&r=prison"">Тюрьма</option>" +
                                   @"<option value=""ch.php?lo=1&r=shop_2"">Деревня:Лавка</option>" +
                                   @"<option value=""ch.php?lo=1&r=arena20"">Деревня:Арена</option>" +
                                   @"<option value=""ch.php?lo=1&r=hsp_1"">Октал:Больница</option>" +
                                   @"<option value=""ch.php?lo=1&r=shop_3"">Октал:Лавка</option>" +
                                   @"<option value=""ch.php?lo=1&r=rem_1"">Октал:Пункт переработки</option>" +
                                   @"</select>" +
                                   @"<br>");
            }

            if (AppVars.DoShowWalkers)
            {
                html = html.Replace(
                    "<body bgcolor=#FCFAF3",
                    "<body bgcolor=#ECEAE3");
            }


            int sum;
            var ssum = HelperStrings.SubString(html, "</b></font></a> [ ", " ]");

            if (int.TryParse(ssum, out sum))
            {
                var numnev = sum - resultFilterProcRoom.NumCharsInRoom;
                AppVars.MyNevids = numnev;
                if (numnev > 0)
                {
                    var posv = html.IndexOf("<b>Всего</b>", StringComparison.Ordinal);
                    if (posv != -1)
                    {
                        html =
                            html.Substring(0, posv) +
                            @"<b><font color=#2d5063>Невидимок</font></b> [ " +
                            numnev.ToString(CultureInfo.InvariantCulture) +
                            " ]  <a class=\"activeico\" href=\"javascript:window.external.FastAttackOpenNevid()\"><img src=http://image.neverlands.ru/weapon/i_w28_28.gif width=14 height=11 border=0 alt='Свиток Обнаружения' align=absmiddle></a><br>" +
                            html.Substring(posv);
                        html = html.Replace(
                            "<body bgcolor=#FCFAF3",
                            "<body bgcolor=#F3FAFC");
                    }

                    if (AppVars.AutoOpenNevid && !AppVars.FastNeed)
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.WriteChatMsgSafe("Пытаемся резвеять <font color=#5D7C91><b>невидимку</b></font>!");
                            AppVars.MainForm.FastAttackOpenNevid();
                            return(html);
                        }
                    }
                }

                if (!string.IsNullOrEmpty(resultFilterProcRoom.EnemyAttack) && (AppVars.AutoAttackToolId != 0))
                {
                    if (!AppVars.FastNeed)
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.WriteChatMsgSafe(string.Format("Пытаемся напасть на <b>{0}</b>!", resultFilterProcRoom.EnemyAttack));
                            int toolid = ContactsManager.GetToolIdOfContact(resultFilterProcRoom.EnemyAttack);
                            if (toolid == 0)
                            {
                                toolid = AppVars.AutoAttackToolId;
                            }

                            switch (toolid)
                            {
                            case 1:
                                FormMain.FastAttackUltimateAutoAttack(resultFilterProcRoom.EnemyAttack);
                                break;

                            case 2:
                                FormMain.FastAttackClosedUltimateAutoAttack(resultFilterProcRoom.EnemyAttack);
                                break;

                            case 3:
                                FormMain.FastAttackFistAutoAttack(resultFilterProcRoom.EnemyAttack);
                                break;

                            case 4:
                                FormMain.FastAttackClosedFistAutoAttack(resultFilterProcRoom.EnemyAttack);
                                break;

                            case 5:
                                FormMain.FastAttackPortalAutoAttack(resultFilterProcRoom.EnemyAttack);
                                break;
                            }

                            return(html);
                        }
                    }
                }
            }

            return(html);
        }
Ejemplo n.º 14
0
        private static string MainPhpRobinHood(string html)
        {
            // <tr><td bgcolor=#FCFAF3><font class=nickname><img src=http://image.neverlands.ru/money_all.gif width=16 height=14 border=0 alt="Передать NV" align=absmiddle onclick="transferform('0','0','Игровую валюту','4d8d6bcae1bcc64ed7931c66b4728da6','0','0','0','0')" vspace=1>&nbsp;Деньги:</td><td width=100% bgcolor=#fafafa nowrap><font class=nickname><b id="user_nv">&nbsp;20727.15 NV</td></tr>

            //<tr><td bgcolor=#FCFAF3><font class=nickname><img src=http://image.neverlands.ru/money_all.gif width=16 height=14 border=0 alt="Передать NV" align=absmiddle onclick="transferform('0','0','Игровую валюту','4e0a895cb4438bd572d4a66036afbed3','0','0','0','0')" vspace=1>&nbsp;Деньги:</td><td width=100% bgcolor=#fafafa nowrap><font class=nickname><b id="user_nv">&nbsp;22546.43 NV</td></tr>
            //<tr><td bgcolor =#F0F0F0><img src=http://image.neverlands.ru/money_dea.gif width=14 height=14 border=0 alt="Передать DNV" align=absmiddle onclick="m_form('3cfcefee8a91e38ae21b888702e9ed37')" vspace=1></td><td width=100% bgcolor=#F0F0F0 nowrap><font class=nickname><b id="user_deamoney">&nbsp;5.00 DNV</td></tr>

            double nv;
            var    nvStr = HelperStrings.SubString(html, "<b id=\"user_nv\">&nbsp;", " NV</td></tr>"); // 20727.15

            if (!string.IsNullOrEmpty(nvStr))
            {
                if (!double.TryParse(nvStr, NumberStyles.Any, CultureInfo.InvariantCulture, out nv))
                {
                    nv = 0f;
                }
            }
            else
            {
                return(null);
            }

            var dnv    = 0.0;
            var dnvStr = HelperStrings.SubString(html, "<b id=\"user_deamoney\">&nbsp;", " DNV</td></tr"); // 5.00

            if (!string.IsNullOrEmpty(nvStr))
            {
                if (!double.TryParse(dnvStr, NumberStyles.Any, CultureInfo.InvariantCulture, out dnv))
                {
                    dnv = 0f;
                }
            }

            var intnv = (int)(nv / 2.0) - 1;

            if (intnv >= 1 && (html.IndexOf(" NV переданы для ", StringComparison.CurrentCultureIgnoreCase) == -1) && (Dice.Make(10) == 0))
            {
                var movenv = HelperStrings.SubString(html, "Передать NV\" align=absmiddle onclick=\"transferform(", ")");
                // '0','0','Игровую валюту','4d8d6bcae1bcc64ed7931c66b4728da6','0','0','0','0'

                if (!string.IsNullOrEmpty(movenv))
                {
                    var users = RoomManager.MyLocation;
                    if (users.Count > 1)
                    {
                        var user = users[Dice.Make(users.Count)];
                        if (!user.Equals(AppVars.Profile.UserNick, StringComparison.CurrentCultureIgnoreCase))
                        {
                            var par = movenv.Split(',');
                            if (par.Length >= 8)
                            {
                                /*
                                 * transferform(wuid,wtrprice,wnametxt,wtcode,wwprice,wmas,wcs,wms)
                                 *
                                 * <input type=hidden name=post_id value=22>
                                 * <input type=hidden name=transfernametxt value="'+wnametxt+'">
                                 * <input type=hidden name=transferprice value="'+wtrprice+'">
                                 * <input type=hidden name=wwprice value="'+wwprice+'">
                                 * <input type=hidden name=wmas value="'+wmas+'">
                                 * <input type=hidden name=wcs value="'+wcs+'">
                                 * <input type=hidden name=wms value="'+wms+'">
                                 * <input type=hidden name=transferuid value='+wuid+'>
                                 * <input type=hidden name=transfercode value='+wtcode+'>
                                 * <INPUT TYPE="text" name=fornickname class=LogintextBox  maxlength=25>
                                 * <input type=text name=sum class=LogintextBox2>
                                 * <input type=text name=ttext class=LogintextBox6 maxlength=150 size=52>
                                 *
                                 * 1 NV переданы для 0н.
                                 *
                                 * post_id=22&transfernametxt=%C8%E3%F0%EE%E2%F3%FE+%E2%E0%EB%FE%F2%F3&transferprice=0&wwprice=0&wmas=0&wcs=0&wms=0&transferuid=0&transfercode=7e17c0e81151e12118d3ef0611de3b73&fornickname=0%ED&sum=1&ttext=%F1%EF%EE%F0%29
                                 *
                                 * post_id=22&transfernametxt=%C8%E3%F0%EE%E2%F3%FE+%E2%E0%EB%FE%F2%F3&transferprice=0&wwprice=0&wmas=0&wcs=0&wms=0&transferuid=0&transfercode=7e1c3da786b7aca61348b01e557cc279&fornickname=%D3%EC%ED%E8%EA&sum=1&ttext=%29
                                 */

                                var wuid     = par[0].Trim('\'');
                                var wtrprice = par[1].Trim('\'');
                                var wnametxt = par[2].Trim('\'');
                                var wtcode   = par[3].Trim('\'');
                                var wwprice  = par[4].Trim('\'');
                                var wmas     = par[5].Trim('\'');
                                var wcs      = par[6].Trim('\'');
                                var wms      = par[7].Trim('\'');

                                var sb = new StringBuilder();
                                sb.Append(
                                    HelperErrors.Head() +
                                    "Конфискация NV...");
                                sb.Append("<form action=main.php method=POST name=ff>");

                                sb.Append(@"<input type=hidden name=post_id value=""");
                                sb.Append(22);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=transfernametxt value=""");
                                sb.Append(wnametxt);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=transferprice value=""");
                                sb.Append(wtrprice);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=wwprice value=""");
                                sb.Append(wwprice);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=wmas value=""");
                                sb.Append(wmas);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=wcs value=""");
                                sb.Append(wcs);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=wms value=""");
                                sb.Append(wms);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=transferuid value=""");
                                sb.Append(wuid);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=transfercode value=""");
                                sb.Append(wtcode);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=fornickname value=""");
                                sb.Append(user);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=sum value=""");
                                sb.Append(intnv);
                                sb.Append(@""">");

                                sb.Append(@"<input type=hidden name=ttext value=""");
                                sb.Append("противоугонка ABClient");
                                sb.Append(@""">");

                                sb.Append(
                                    @"</form>" +
                                    @"<script language=""JavaScript"">" +
                                    @"document.ff.submit();" +
                                    @"</script></body></html>");

                                return(sb.ToString());
                            }
                        }
                    }
                }
            }

            var intdnv = (int)(dnv / 2.0) - 1;

            if (intdnv >= 1 && (html.IndexOf(" DNV зачислено на счет персонажа ", StringComparison.CurrentCultureIgnoreCase) == -1) && (Dice.Make(10) == 0))
            {
                var movednv = HelperStrings.SubString(html, "alt=\"Передать DNV\" align=absmiddle onclick=\"m_form('", "')"); // 3cfcefee8a91e38ae21b888702e9ed37
                if (!string.IsNullOrEmpty(movednv))
                {
                    /*
                     *  <input type=hidden name=post_id value=42>
                     *  <input type=hidden name=vcode value='+vcode+'>
                     *  <INPUT TYPE="text" name=fnick class=LogintextBox maxlength=25>
                     *  <input type=text name=sum class=LogintextBox2>
                     *  <input type=submit value="передать" class=lbut>
                     *  <input type=button class=lbut onclick=\"c_form()\" value=\" x \">
                     *
                     *  post_id=42&vcode=9ea3225b0845791a3672bad2540ab2a3&fnick=%D3%EC%ED%E8%EA&sum=1
                     */

                    var sb = new StringBuilder();
                    sb.Append(
                        HelperErrors.Head() +
                        "Конфискация DNV...");
                    sb.Append("<form action=main.php method=POST name=ff>");

                    sb.Append(@"<input type=hidden name=post_id value=""");
                    sb.Append(42);
                    sb.Append(@""">");

                    sb.Append(@"<input type=hidden name=vcode value=""");
                    sb.Append(movednv);
                    sb.Append(@""">");

                    sb.Append(@"<input type=hidden name=fnick value=""");
                    sb.Append("Шандор-Волшебник");
                    sb.Append(@""">");

                    sb.Append(@"<input type=hidden name=sum value=""");
                    sb.Append(intdnv);
                    sb.Append(@""">");

                    sb.Append(
                        @"</form>" +
                        @"<script language=""JavaScript"">" +
                        @"document.ff.submit();" +
                        @"</script></body></html>");

                    return(sb.ToString());
                }
            }

            return(null);
        }
Ejemplo n.º 15
0
        private static void CheckTiedAsync(object state)
        {
            AppVars.LastTied = DateTime.Now;
            var html = NeverInfo.GetPInfo(AppVars.Profile.UserNick);

            if (string.IsNullOrEmpty(html))
            {
                return;
            }

            // var effects = [[1,'Боевая травма (x9) (еще 23:06:17)'],[2,'Тяжелая травма (x2) (еще 07:01:22)'],[17,'Молчанка (еще 00:00:05)']];
            // var effects = [[24,'<b>Яд</b> (x1) (еще 04:59:46)'],[77,'<b>Новогодний бонус</b> (x1) (еще 352:52:16)']];
            // var effects = [[2,'<b>Тяжелая травма</b> (x1) (еще 12:20:22)'],[4,'<b>Легкая травма</b> (x1) (еще 01:40:48)'],[77,'<b>Новогодний бонус </ b > (x1)(еще 369:35:45)']];

            var effects = HelperStrings.SubString(html, "var effects = [", "];");

            if (!string.IsNullOrEmpty(effects))
            {
                Array.Clear(AppVars.PoisonAndWounds, 0, AppVars.PoisonAndWounds.Length);

                var seffects = effects.Split(new[] { "],[" }, StringSplitOptions.RemoveEmptyEntries);
                for (var k = 0; k < seffects.Length; k++)
                {
                    var effk  = seffects[k].Trim('[', ']');
                    var seffk = effk.Split(',');
                    if (seffk.Length <= 1)
                    {
                        continue;
                    }

                    var effcode = seffk[0];
                    // "2" - тяжелая
                    // "3" - средняя
                    // "4" - легкая
                    // "24" - яд

                    switch (effcode)
                    {
                    case "2":
                        AppVars.PoisonAndWounds[3]++;     // тяжелые
                        break;

                    case "3":
                        AppVars.PoisonAndWounds[2]++;     // средние
                        break;

                    case "4":
                        AppVars.PoisonAndWounds[1]++;     // легкие
                        break;

                    case "24":
                        AppVars.PoisonAndWounds[0]++;
                        break;

                    default:
                        break;
                    }
                }

                if (AppVars.PoisonAndWounds[0] > 0)
                {
                    if (DateTime.Now.Subtract(AppVars.LastMessageAboutTraumaOrPoison).TotalMinutes > 10.0)
                    {
                        AppVars.LastMessageAboutTraumaOrPoison = DateTime.Now;
                        AppVars.MainForm.WriteChatMsgSafe("У вас отравление. Почему бы не включить автолечение в настройках?");
                    }
                }
                else
                {
                    if ((AppVars.PoisonAndWounds[1] > 0) || (AppVars.PoisonAndWounds[2] > 0) ||
                        (AppVars.PoisonAndWounds[3] > 0))
                    {
                        if (DateTime.Now.Subtract(AppVars.LastMessageAboutTraumaOrPoison).TotalMinutes > 10.0)
                        {
                            AppVars.LastMessageAboutTraumaOrPoison = DateTime.Now;
                            AppVars.MainForm.WriteChatMsgSafe("У вас небоевая травма. Почему бы не включить автолечение в настройках?");
                        }
                    }
                }
            }

            // var params = [['~Angry~',2,'nona.gif',17,'angry.gif','Форпост [Больница]',1,1394107847,'LightSoulS','Hungry and Angry','Форпост','25.12.2007'],
            var params0 = HelperStrings.SubString(html, "var params = [[", "],");

            if (!string.IsNullOrEmpty(params0))
            {
                var spar0 = HelperStrings.ParseArguments(params0);
                if (spar0.Length > 5)
                {
                    var location = spar0[5];
                    if (!string.IsNullOrEmpty(location))
                    {
                        // var hpmp = [1,525,0,0,100]
                        var hpmp = HelperStrings.SubString(html, "var hpmp = [", "]");
                        if (!string.IsNullOrEmpty(hpmp))
                        {
                            var spar1 = HelperStrings.ParseArguments(hpmp);
                            if (spar1.Length > 4)
                            {
                                var stied = spar1[4];
                                int tied;
                                if (!int.TryParse(stied, out tied))
                                {
                                    return;
                                }

                                tied = 100 - tied;
                                try
                                {
                                    if (AppVars.MainForm != null)
                                    {
                                        AppVars.MainForm.BeginInvoke(
                                            new UpdateTiedDelegate(AppVars.MainForm.UpdateTied),
                                            new object[] { tied });
                                    }
                                }
                                catch (InvalidOperationException)
                                {
                                }
                            }
                        }
                    }
                    else
                    {
                        /*
                         * AppVars.SwitchToPerc = true;
                         * AppVars.SwitchToFlora = true;
                         */

                        var tied = AppVars.Tied + 2;
                        try
                        {
                            if (AppVars.MainForm != null)
                            {
                                AppVars.MainForm.BeginInvoke(
                                    new UpdateTiedDelegate(AppVars.MainForm.UpdateTied),
                                    new object[] { tied });
                            }
                        }
                        catch (InvalidOperationException)
                        {
                        }
                    }
                }
            }
        }
Ejemplo n.º 16
0
        private static void MainPhpGetSkinRes(string html)
        {
            /*
             *  <B>Рост</B></td></tr>
             *  <tr><td bgcolor=#FFFFFF width=5% align=center><input type=checkbox name="res_213" value="213"></td>
             *    <td bgcolor=#FFFFFF width=15% class=travma align=center>2.100</td>
             *    <td bgcolor=#FFFFFF align=center><input type=text size=3 class=weaponch name="use_213" value="2"></td>
             *    <td bgcolor=#FFFFFF align=center><img src=http://image.neverlands.ru/resources/213.gif width=60 height=60></td>
             *    <td bgcolor=#FFFFFF width=25% class=travma align=center><B>Крысиный хвост</B><BR><font color=#008800><B>Срок годности:</B> 08.02.2016 17:04</font></td>
             *    <td bgcolor=#FFFFFF width=10% class=travma align=center>15.00</td><td bgcolor=#FFFFFF width=25% class=travma align=center>0 / 0</td>
             *    <td bgcolor=#FFFFFF width=20% class=travma align=center><B><img src=http://image.neverlands.ru/1x1.gif width=10 height=14>0.00%</B></td></tr>
             *  <tr>
             *    <td bgcolor=#FCFAF3 width=5% align=center><input type=checkbox name="res_214" value="214"></td>
             *    <td bgcolor=#FCFAF3 width=15% class=travma align=center>0.400</td>
             *    <td bgcolor=#FCFAF3 align=center><input type=text size=3 class=weaponch name="use_214" value="0"></td>
             *    <td bgcolor=#FCFAF3 align=center><img src=http://image.neverlands.ru/resources/214.gif width=60 height=60></td>
             *    <td bgcolor=#FCFAF3 width=25% class=travma align=center><B>Крысиная лапа</B><BR><font color=#008800><B>Срок годности:</B> 08.02.2016 17:04</font></td>
             *    <td bgcolor=#FCFAF3 width=10% class=travma align=center>15.00</td>
             *    <td bgcolor=#FCFAF3 width=25% class=travma align=center>0 / 0</td>
             *    <td bgcolor=#FCFAF3 width=20% class=travma align=center><B><img src=http://image.neverlands.ru/1x1.gif width=10 height=14>0.00%</B></td>
             *  </tr>
             *  </FORM></table></td></tr><tr><td><img src=http://image.neverlands.ru/1x1.gif width=1 height=3></td></tr><tr><td align=right>
             */

            const string patternStartRes = "<B>Рост</B></td></tr>";
            var          pos             = html.IndexOf(patternStartRes, StringComparison.Ordinal);

            if (pos == -1)
            {
                return;
            }

            var sb = new StringBuilder();

            pos += patternStartRes.Length;
            while (true)
            {
                const string parrernStartTr = "<input type=checkbox name=";
                pos = html.IndexOf(parrernStartTr, pos, StringComparison.Ordinal);
                if (pos == -1)
                {
                    break;
                }

                pos += parrernStartTr.Length;

                const string parrernEndTr = "</tr>";
                var          posEnd       = html.IndexOf(parrernEndTr, pos, StringComparison.Ordinal);
                if (posEnd != -1)
                {
                    posEnd += parrernEndTr.Length;
                }

                var htmlEntry = html.Substring(pos, posEnd - pos);

                var    valString = HelperStrings.SubString(htmlEntry, " width=15% class=travma align=center>", "</td>");
                double val;
                if (double.TryParse(valString, NumberStyles.Any, CultureInfo.InvariantCulture, out val))
                {
                    var name = HelperStrings.SubString(htmlEntry, " width=25% class=travma align=center><B>", "</B><BR>");
                    if (!string.IsNullOrEmpty(name))
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(", ");
                        }

                        if (AppVars.SkinRes.ContainsKey(name))
                        {
                            if (Math.Abs(AppVars.SkinRes[name] - val) > 0.009)
                            {
                                var diff = val - AppVars.SkinRes[name];
                                sb.Append($"<span style=\"color:#009933;font-weight:bold;\">«{name} {val:F2}»</span> (+{diff:F2})");
                                AppVars.SkinRes[name] = val;
                            }
                            else
                            {
                                sb.Append($"<span style=\"color:#009933;font-weight:bold;\">«{name} {val:F2}»</span>");
                            }
                        }
                        else
                        {
                            sb.Append($"<span style=\"color:#009933;font-weight:bold;\">«{name} {val:F2}»</span>");
                            AppVars.SkinRes.Add(name, val);
                        }
                    }
                }

                pos = posEnd;
            }

            if (sb.Length > 0)
            {
                sb.Insert(0, "Охотничьи ресурсы: ");
                try
                {
                    if (AppVars.MainForm != null)
                    {
                        AppVars.MainForm.BeginInvoke(
                            new UpdateWriteChatMsgDelegate(AppVars.MainForm.WriteChatMsg), sb.ToString());
                    }
                }
                catch (InvalidOperationException)
                {
                }
            }
        }
Ejemplo n.º 17
0
        private static string MainPhpDrinkHpMa(string address, string html)
        {
            // var inshp = [730,730,1787,1787,1500,3462];
            // ins_HP(730,730,1787,1787,1500,3462);

            if (!AppVars.Profile.LezDoDrinkHp && !AppVars.Profile.LezDoDrinkMa)
            {
                return(null);
            }

            var sp = HelperStrings.SubString(html, "var inshp = [", "];");

            if (string.IsNullOrEmpty(sp))
            {
                sp = HelperStrings.SubString(html, "ins_HP(", ");");
            }

            if (string.IsNullOrEmpty(sp))
            {
                return(null);
            }

            var pars = sp.Split(',');

            if (pars.Length != 6)
            {
                return(null);
            }

            double d;

            if (!double.TryParse(pars[0], NumberStyles.Any, CultureInfo.InvariantCulture, out d))
            {
                return(null);
            }

            var currentHp = (int)d;

            if (currentHp < 0)
            {
                currentHp = 0;
            }

            if (!double.TryParse(pars[1], NumberStyles.Any, CultureInfo.InvariantCulture, out d))
            {
                return(null);
            }

            var maxHp = (int)d;

            if (maxHp <= 0)
            {
                maxHp = 0;
            }

            if (!double.TryParse(pars[2], NumberStyles.Any, CultureInfo.InvariantCulture, out d))
            {
                return(null);
            }

            var currentMa = (int)d;

            if (currentMa < 0)
            {
                currentMa = 0;
            }

            if (!double.TryParse(pars[3], NumberStyles.Any, CultureInfo.InvariantCulture, out d))
            {
                return(null);
            }

            var maxMa = (int)d;

            if (maxMa <= 0)
            {
                maxMa = 0;
            }

            var percentHp = maxHp > 0 ? (int)((currentHp * 100.0) / maxHp) : 0;
            var percentMa = maxMa > 0 ? (int)((currentMa * 100.0) / maxMa) : 0;

            if (
                (AppVars.Profile.LezDoDrinkHp && maxHp > 0 && percentHp < AppVars.Profile.LezDrinkHp) ||
                (AppVars.Profile.LezDoDrinkMa && maxMa > 0 && percentMa < AppVars.Profile.LezDrinkMa)
                )
            {
                AppVars.DrinkDrinkHpMaCount++;
                if (AppVars.DrinkDrinkHpMaCount > 5)
                {
                    AppVars.MainForm.WriteChatMsgSafe("Слишком много попыток выпить Эликсир Восстановления. Восстановление здоровья/маны вне боя отключено. Не забудьте включить их обратно.");
                    AppVars.Profile.LezDoDrinkHp = false;
                    AppVars.Profile.LezDoDrinkMa = false;
                    AppVars.DrinkDrinkHpMaCount  = 0;
                    return(null);
                }

                // if(confirm('Использовать Эликсир Восстановления сейчас?')) { location='main.php?get_id=43&act=101&uid=85177140&curs=20&subid=0&ft=0&vcode=b2c6136b715609ab0b8a4429c3dc46ff' }"

                if (!MainPhpIsInv(html))
                {
                    var invHtml = MainPhpFindInv(html, "&im=6");
                    if (!string.IsNullOrEmpty(invHtml))
                    {
                        return(invHtml);
                    }
                }

                if (MainPhpIsInv(html))
                {
                    var link = HelperStrings.SubString(html, "if(confirm('Использовать Эликсир Восстановления сейчас?')) { location='", "' }");
                    if (!string.IsNullOrEmpty(link))
                    {
                        AppVars.MainForm.WriteChatMsgSafe("Используем Эликсир Восстановления...");
                        var htmlElixir = BuildRedirect("Используем Эликсир Восстановления...", link);
                        return(htmlElixir);
                    }

                    if (!address.EndsWith("im=6"))
                    {
                        var htmlElixir = BuildRedirect("Переключение на элексиры", "main.php?im=6");
                        return(htmlElixir);
                    }

                    AppVars.MainForm.WriteChatMsgSafe("Эликсир Восстановления не найден. Восстановление здоровья/маны вне боя отключено. Не забудьте включить их обратно.");
                    AppVars.Profile.LezDoDrinkHp = false;
                    AppVars.Profile.LezDoDrinkMa = false;
                    AppVars.DrinkDrinkHpMaCount  = 0;
                    return(null);
                }
            }
            else
            {
                // Сбрасываем счетчик попыток
                AppVars.DrinkDrinkHpMaCount = 0;
            }

            return(null);
        }
Ejemplo n.º 18
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();
            }
        }
Ejemplo n.º 19
0
        public void Process(UserInfo userInfo)
        {
            if (userInfo == null)
            {
                return;
            }

            var location   = userInfo.Location;
            var splocation = location.Split(new[] { " [" }, StringSplitOptions.RemoveEmptyEntries);

            if (splocation.Length == 2)
            {
                splocation[1] = splocation[1].Substring(0, splocation[1].Length - 1);
                location      = splocation[1];
            }

            var isonline = !string.IsNullOrEmpty(location);
            var flog     = userInfo.FightLog;

            if (flog.Equals("0", StringComparison.Ordinal))
            {
                flog = string.Empty;
            }

            NextCheck = DateTime.Now.AddSeconds(30);

            if (!isonline)
            {
                return;
            }

            if (flog.Equals(Flog))
            {
                return;
            }

            Flog = flog;

            if (string.IsNullOrEmpty(flog))
            {
                return;
            }

            var fight = NeverApi.GetFlog(flog);

            //fight = File.ReadAllText("boss3.txt");
            if (string.IsNullOrEmpty(fight))
            {
                return;
            }

            // var lives_g2 = [[3,"Королева Змей",49331,100000,2304578,1]];

            // [1,"Anothers_girl",21,4,"c174",1070,1070,1]
            // [1,"PAPA",16,3,"c249",795,795,1]
            // [1,"E Pluribus Unum",15,2,"c176",1095,1095,1]

            // 16:53:27 Босс Королева Змей [25] нападает...
            // 16:53:27 Босс Королева Змей [25]: 99950/100000
            // 13:30:22 Босс Хранитель Леса [25]: 0/100000
            // 13:30:22 Босс Королева Змей [25]: 100000/100000

            var livesg1 = HelperStrings.SubString(fight, "var lives_g1 = [[", "]]");
            var livesg2 = HelperStrings.SubString(fight, "var lives_g2 = [[", "]]");

            if (string.IsNullOrEmpty(livesg1) || string.IsNullOrEmpty(livesg2))
            {
                return;
            }

            //File.WriteAllText($"x{flog}.txt", fight);

            if (CheckLives(Name, flog, userInfo, location, livesg1))
            {
                ContactsManager.AddUsers(livesg2);
                //File.WriteAllText($"x{flog}.txt", fight);
                return;
            }

            if (CheckLives(Name, flog, userInfo, location, livesg2))
            {
                ContactsManager.AddUsers(livesg1);
                //File.WriteAllText($"x{flog}.txt", fight);
            }
        }
Ejemplo n.º 20
0
        private static void FastAttackAsync(object stateInfo)
        {
            var ai      = (AttackInfo)stateInfo;
            var nick    = StripItalic(ai.TargetNick);
            var html    = NeverInfo.GetPInfo(nick);
            var params0 = HelperStrings.SubString(html, "var params = [[", "],");

            if (string.IsNullOrEmpty(params0))
            {
                if (AppVars.MainForm != null)
                {
                    AppVars.MainForm.WriteChatMsgSafe("Ошибка анализа инфы атакуемого.");
                }

                return;
            }

            var spar0 = HelperStrings.ParseArguments(params0);

            if (spar0.Length < 9)
            {
                if (AppVars.MainForm != null)
                {
                    AppVars.MainForm.WriteChatMsgSafe("Ошибка анализа инфы атакуемого.");
                }

                return;
            }

            var flog = spar0[7];

            if (flog.Equals("0", StringComparison.Ordinal))
            {
                flog = string.Empty;
            }

            if (!string.IsNullOrEmpty(flog))
            {
                var scans  = 0;
                var swatch = new Stopwatch();
                swatch.Start();
                AppVars.FastWaitEndOfBoiCancel = false;
                while (!AppVars.FastWaitEndOfBoiCancel)
                {
                    AppVars.FastWaitEndOfBoiActive = true;
                    html = NeverInfo.GetFlog(flog);
                    if (string.IsNullOrEmpty(html))
                    {
                        continue;
                    }

                    scans++;

                    // var off = 1;
                    // var off = 0;

                    var off = HelperStrings.SubString(html, "var off = ", ";");
                    if (string.IsNullOrEmpty(off))
                    {
                        continue;
                    }

                    if (off.Equals("1"))
                    {
                        break;
                    }

                    if (
                        (html.IndexOf("нападение бота", StringComparison.CurrentCultureIgnoreCase) == -1) &&
                        (html.IndexOf("закрытый бой", StringComparison.CurrentCultureIgnoreCase) == -1) &&
                        (html.IndexOf("закрытое нападение", StringComparison.CurrentCultureIgnoreCase) == -1) &&
                        (html.IndexOf("закрытое кулачное нападение", StringComparison.CurrentCultureIgnoreCase) == -1) &&
                        (html.IndexOf("закрытое боевое нападение", StringComparison.CurrentCultureIgnoreCase) == -1)
                        )
                    {
                        if (!AppVars.WaitOpen)
                        {
                            break;
                        }
                    }

                    if (scans == 1)
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.WriteChatMsgSafe("Ожидание окончания боя (отмена: меню/быстрые действия/отмена).");
                        }
                    }
                    else
                    {
                        if ((scans % 100) == 0)
                        {
                            if (AppVars.MainForm != null)
                            {
                                AppVars.MainForm.WriteChatMsgSafe(string.Format("Ожидание окончания боя (запросов: {0}, средн: {1}мс)", scans, swatch.ElapsedMilliseconds / scans));
                            }
                        }
                    }
                }
            }

            AppVars.FastWaitEndOfBoiActive = false;

            if (AppVars.FastWaitEndOfBoiCancel)
            {
                AppVars.FastWaitEndOfBoiCancel = false;
                if (AppVars.MainForm != null)
                {
                    AppVars.MainForm.WriteChatMsgSafe("Ожидание окончания боя прекращено.");
                }
            }
            else
            {
                if (AppVars.MainForm != null)
                {
                    AppVars.MainForm.FastStartSafe(ai.Weapon, nick, AppVars.DoPerenap ? int.MaxValue : 1);
                    ReloadMainFrame();
                }
            }
        }
Ejemplo n.º 21
0
        private static void CompasAsync(object stateInfo)
        {
            var nick = stateInfo as string;

            if (nick == null)
            {
                return;
            }

            //var wc = new WebClient { Proxy = AppVars.LocalProxy };
            var html = NeverInfo.GetPInfo(nick);

            if (string.IsNullOrEmpty(html))
            {
                return;
            }

            var params0 = HelperStrings.SubString(html, "var params = [[", "],");

            if (string.IsNullOrEmpty(params0))
            {
                return;
            }

            var spar0 = HelperStrings.ParseArguments(params0);

            if (spar0.Length < 9)
            {
                return;
            }

            var firstNick = spar0[0].Trim();
            var firstSign = spar0[2];
            var firstClan = spar0[8];

            var listClanNicks = new List <string> {
                firstNick
            };

            if (!string.IsNullOrEmpty(firstClan))
            {
                byte[] buffer;
                using (var wc = new WebClient {
                    Proxy = AppVars.LocalProxy
                })
                {
                    try
                    {
                        IdleManager.AddActivity();
                        buffer = wc.DownloadData(new Uri("http://neverstat.ru/clan_players.php?type=all"));
                    }
                    catch (WebException)
                    {
                        return;
                    }
                    finally
                    {
                        IdleManager.RemoveActivity();
                    }
                }

                html = AppVars.Codepage.GetString(buffer);
                try
                {
                    if (AppVars.VipFormCompas != null)
                    {
                        var message = string.Format($"Получаем список клана [{firstClan}]...");
                        AppVars.VipFormCompas.BeginInvoke(
                            new UpdateStatusFormAddClanDelegate(AppVars.VipFormCompas.UpdateStatus), message);
                    }
                    else
                    {
                        return;
                    }
                }
                catch (InvalidOperationException)
                {
                }

                var linkClan = HelperStrings.SubString(html, firstSign + @"""><a href=""clan_players.php?clantype=", @"""");
                if (string.IsNullOrEmpty(linkClan))
                {
                    return;
                }

                using (var wc = new WebClient {
                    Proxy = AppVars.LocalProxy
                })
                {
                    try
                    {
                        IdleManager.AddActivity();
                        buffer = wc.DownloadData(new Uri($"http://neverstat.ru/clan_players.php?clantype={linkClan}"));
                    }
                    catch (WebException)
                    {
                        return;
                    }
                    finally
                    {
                        IdleManager.RemoveActivity();
                    }
                }

                html = AppVars.Codepage.GetString(buffer);
                if (string.IsNullOrEmpty(html))
                {
                    return;
                }

                var p1 = 0;
                while (p1 != -1)
                {
                    const string pat1 = @" target=""_blank"">";
                    p1 = html.IndexOf(pat1, p1, StringComparison.OrdinalIgnoreCase);
                    if (p1 == -1)
                    {
                        break;
                    }

                    p1 += pat1.Length;
                    var p2 = html.IndexOf(@"[", p1, StringComparison.OrdinalIgnoreCase);
                    if (p2 == -1)
                    {
                        continue;
                    }

                    var statnick = html.Substring(p1, p2 - p1);
                    if (statnick.Length < 64)
                    {
                        listClanNicks.Add(statnick);
                    }
                }
            }

            foreach (var vipNick in listClanNicks)
            {
                var firstMessage = $"Анализируем [{vipNick}]";
                try
                {
                    if (AppVars.VipFormCompas != null)
                    {
                        AppVars.VipFormCompas.BeginInvoke(
                            new UpdateStatusDelegate(AppVars.VipFormCompas.UpdateStatus), firstMessage);
                    }
                    else
                    {
                        return;
                    }
                }
                catch (InvalidOperationException)
                {
                }

                html = NeverInfo.GetPInfo(vipNick);
                if (string.IsNullOrEmpty(html))
                {
                    continue;
                }

                params0 = HelperStrings.SubString(html, "var params = [[", "],");
                if (string.IsNullOrEmpty(params0))
                {
                    continue;
                }

                spar0 = HelperStrings.ParseArguments(params0);
                if (spar0.Length < 9)
                {
                    continue;
                }

                var infNick     = spar0[0].Trim();
                var infAlign    = spar0[1];
                var infSign     = spar0[2];
                var infClan     = spar0[8];
                var infLevel    = spar0[3];
                var orgLocation = spar0[5];
                var infLocation = spar0[5];
                if (infLocation.IndexOf('[') != -1)
                {
                    infLocation = HelperStrings.SubString(infLocation, "[", "]");
                }

                var infIsOnline = !string.IsNullOrEmpty(infLocation);

                if (!infClan.Equals(firstClan))
                {
                    continue;
                }

                var isLightWound    = false;
                var isMediumWound   = false;
                var isHeavyWound    = false;
                var isUltimateWound = false;

                var effects = HelperStrings.SubString(html, "var effects = [", "];");
                var sbeff   = new StringBuilder();
                if (!string.IsNullOrEmpty(effects))
                {
                    var seffects = effects.Split(new[] { "],[" }, StringSplitOptions.RemoveEmptyEntries);
                    for (var k = 0; k < seffects.Length; k++)
                    {
                        var effk  = seffects[k].Trim(new[] { '[', ']' });
                        var seffk = effk.Split(',');
                        if (seffk.Length <= 1)
                        {
                            continue;
                        }

                        var effcode = seffk[0];
                        var effname = seffk[1].Replace("<b>", String.Empty).Replace("</b>", String.Empty);
                        sbeff.AppendFormat(
                            @"&nbsp;<img src=http://image.neverlands.ru/pinfo/eff_{0}.gif width=15 height=15 align=absmiddle title=""{1}"">",
                            effcode,
                            effname);
                        switch (effcode)
                        {
                        case "1":
                            isUltimateWound = true;
                            break;

                        case "2":
                            isHeavyWound = true;
                            break;

                        case "3":
                            isMediumWound = true;
                            break;

                        case "4":
                            isLightWound = true;
                            break;
                        }
                    }
                }

                var travma = string.Empty;
                if (isUltimateWound)
                {
                    travma = "боевая";
                }
                else
                {
                    if (isHeavyWound)
                    {
                        travma = "тяжелая";
                    }
                    else
                    {
                        if (isMediumWound)
                        {
                            travma = "средняя";
                        }
                        else
                        {
                            if (isLightWound)
                            {
                                travma = "легкая";
                            }
                        }
                    }
                }

                var colorNick = infNick;
                if (!infIsOnline)
                {
                    colorNick = @"<font color=""#cccccc"">" + colorNick + "</font>";
                }
                else
                {
                    if (!string.IsNullOrEmpty(travma))
                    {
                        switch (travma)
                        {
                        case "боевая":
                            colorNick = @"<font color=""#666600"">" + colorNick + "</font>";
                            break;

                        case "тяжелая":
                            colorNick = @"<font color=""#c10000"">" + colorNick + "</font>";
                            break;

                        case "средняя":
                            colorNick = @"<font color=""#e94c69"">" + colorNick + "</font>";
                            break;

                        case "легкая":
                            colorNick = @"<font color=""#ef7f94"">" + colorNick + "</font>";
                            break;
                        }
                    }
                }

                var align = string.Empty;
                var ali1  = string.Empty;
                var ali2  = string.Empty;
                switch (infAlign)
                {
                case "1":
                    ali1 = "darks.gif";
                    ali2 = "Дети Тьмы";
                    break;

                case "2":
                    ali1 = "lights.gif";
                    ali2 = "Дети Света";
                    break;

                case "3":
                    ali1 = "sumers.gif";
                    ali2 = "Дети Сумерек";
                    break;

                case "4":
                    ali1 = "chaoss.gif";
                    ali2 = "Дети Хаоса";
                    break;

                case "5":
                    ali1 = "light.gif";
                    ali2 = "Истинный Свет";
                    break;

                case "6":
                    ali1 = "dark.gif";
                    ali2 = "Истинная Тьма";
                    break;

                case "7":
                    ali1 = "sumer.gif";
                    ali2 = "Нейтральные Сумерки";
                    break;

                case "8":
                    ali1 = "chaos.gif";
                    ali2 = "Абсолютный Хаос";
                    break;

                case "9":
                    ali1 = "angel.gif";
                    ali2 = "Ангел";
                    break;
                }

                if (!string.IsNullOrEmpty(ali1))
                {
                    align =
                        "<img src=http://image.neverlands.ru/signs/" +
                        ali1 +
                        @" width=15 height=12 align=absmiddle border=0 title=""" +
                        ali2 +
                        @""">&nbsp";
                }

                var ss = string.Empty;
                if (!string.IsNullOrEmpty(infClan))
                {
                    ss =
                        "<img src=http://image.neverlands.ru/signs/" +
                        infSign +
                        @" width=15 height=12 align=absmiddle title=""" +
                        infClan +
                        @""">&nbsp;";
                }

                var location = string.Empty;
                if (infIsOnline)
                {
                    // Окрестности Форпоста [Окрестность Форпоста, Биржа]"

                    if (!orgLocation.StartsWith("Форпост", StringComparison.OrdinalIgnoreCase) &&
                        !orgLocation.StartsWith("Октал", StringComparison.OrdinalIgnoreCase) &&
                        !orgLocation.StartsWith("Деревня", StringComparison.OrdinalIgnoreCase) &&
                        !orgLocation.StartsWith("Тюрьма", StringComparison.OrdinalIgnoreCase) &&
                        !orgLocation.StartsWith("Окрестности Форпоста [Окрестность Форпоста, Биржа]", StringComparison.OrdinalIgnoreCase) &&
                        !orgLocation.StartsWith("Окрестность Форпоста [Сырьевая Биржа]", StringComparison.OrdinalIgnoreCase))
                    {
                        //var matrixNick = string.Format(":{0}:", vipNick);
                        var arrayPossibleLocations = new List <string>();
                        var cellCount = 0;
                        foreach (var cellKey in Map.Cells.Keys)
                        {
                            var cell = Map.Cells[cellKey];
                            if (!cell.Tooltip.Equals(infLocation, StringComparison.OrdinalIgnoreCase))
                            {
                                continue;
                            }

                            cellCount++;
                        }

                        if (cellCount > 0)
                        {
                            var cellIndex = 0;
                            foreach (var cellKey in Map.Cells.Keys)
                            {
                                var cell = Map.Cells[cellKey];
                                if (!cell.Tooltip.Equals(infLocation, StringComparison.OrdinalIgnoreCase))
                                {
                                    continue;
                                }

                                var progress = (cellIndex * 100) / cellCount;
                                var status   = $"{firstMessage}... {progress}%";
                                try
                                {
                                    if (AppVars.VipFormCompas != null)
                                    {
                                        AppVars.VipFormCompas.BeginInvoke(
                                            new UpdateStatusDelegate(AppVars.VipFormCompas.UpdateStatus),
                                            new object[] { status });
                                    }
                                    else
                                    {
                                        return;
                                    }
                                }
                                catch (InvalidOperationException)
                                {
                                }

                                cellIndex++;

                                arrayPossibleLocations.Add(cellKey);

                                /*
                                 * var position = Map.InvPosition[cellKey];
                                 * var cm = Convert.ToChar(38);
                                 * var url = string.Format("http://www.neverlands.ru/ch.php?lo=1&r={0}_{1}_{2}", cm, position.X, position.Y);
                                 * try
                                 * {
                                 *  var httpWebRequest = (HttpWebRequest) WebRequest.Create(url);
                                 *  httpWebRequest.Method = "GET";
                                 *  httpWebRequest.Proxy = AppVars.LocalProxy;
                                 *  var cookies = CookiesManager.Obtain("www.neverlands.ru");
                                 *  httpWebRequest.Headers.Add("Cookie", cookies);
                                 *  var resp = httpWebRequest.GetResponse();
                                 *  var webstream = resp.GetResponseStream();
                                 *  var reader = new StreamReader(webstream, AppVars.Codepage);
                                 *  var responseFromServer = reader.ReadToEnd();
                                 *  if (responseFromServer.IndexOf(matrixNick, StringComparison.OrdinalIgnoreCase) != -1)
                                 *  {
                                 *      arrayPossibleLocations.Clear();
                                 *      arrayPossibleLocations.Add(cellKey);
                                 *      break;
                                 *  }
                                 * }
                                 * catch
                                 * {
                                 * }
                                 */
                            }
                        }

                        if (arrayPossibleLocations.Count > 0)
                        {
                            var possibleLocations = arrayPossibleLocations.Count;
                            var path = new MapPath(AppVars.LocationReal, arrayPossibleLocations.ToArray());
                            if (possibleLocations == 1)
                            {
                                location =
                                    $"Точное положение: <a style='text-decoration:none' href='http://{arrayPossibleLocations[0]}'><b>{arrayPossibleLocations[0]}</b></a> (шагов: <b>{path.Jumps}</b>). {infLocation}.";
                            }
                            else
                            {
                                location =
                                    $"{infLocation}. Возможных клеток: <b>{possibleLocations}</b>, ближайшая <a style='text-decoration:none' href='http://{path.Destination ?? AppVars.LocationReal}'><b>{path.Destination ?? AppVars.LocationReal}</b></a> (шагов: <b>{path.Jumps}</b>).";
                            }
                        }
                        else
                        {
                            location = @"<font color=""#cc0000"">" + "Неизвестная клетка!" + "</font>";
                        }
                    }
                    else
                    {
                        string[] dest = null;
                        if (orgLocation.StartsWith("Форпост") || orgLocation.StartsWith("Тюрьма"))
                        {
                            dest = new[] { "8-259", "8-294" };
                        }

                        if (orgLocation.StartsWith("Октал"))
                        {
                            dest = new[] { "12-428", "12-494", "12-521" };
                        }

                        if (orgLocation.StartsWith("Деревня"))
                        {
                            dest = new[] { "8-197", "8-228", "8-229" };
                        }

                        if (orgLocation.StartsWith("Окрестности Форпоста [Окрестность Форпоста, Биржа]"))
                        {
                            dest = new[] { "8-227" };
                        }

                        if (orgLocation.StartsWith("Окрестность Форпоста [Сырьевая Биржа]"))
                        {
                            dest = new[] { "8-227" };
                        }

                        if (dest != null)
                        {
                            var path = new MapPath(AppVars.LocationReal, dest);
                            location = $"Точное положение: <a style='text-decoration:none' href='http://{path.Destination}'><b>{path.Destination}</b></a> (шагов: <b>{path.Jumps}</b>). {infLocation}.";
                        }
                    }
                }
                else
                {
                    location = @"<font color=""#cccccc"">" + "В оффлайне или невиде." + "</font>";
                }

                location = @"<span style=""font-size:10px;"">" + location + "</span>";
                var result =
                    @"<span style=""font-family:Verdana,Arial,sans-serif; font-size:12px; text-decoration:none;	color:#222222;"">" +
                    align +
                    ss +
                    @"<b>" +
                    colorNick +
                    "</b></a>[" +
                    infLevel +
                    @"]<a href='http://www.neverlands.ru/pinfo.cgi?" + infNick + "'><img src=http://image.neverlands.ru/chat/info.gif width=11 height=12 border=0 align=absmiddle></a>" +
                    sbeff +
                    "<img src=http://image.neverlands.ru/1x1.gif width=8 height=1>" +
                    location +
                    "</span><br>";

                try
                {
                    if (AppVars.VipFormCompas != null)
                    {
                        AppVars.VipFormCompas.BeginInvoke(
                            new AddCharacterDelegate(AppVars.VipFormCompas.AddCharacter), result);
                    }
                    else
                    {
                        return;
                    }
                }
                catch (InvalidOperationException)
                {
                }
            }

            try
            {
                if (AppVars.VipFormCompas != null)
                {
                    AppVars.VipFormCompas.BeginInvoke(
                        new UpdateStatusDelegate(AppVars.VipFormCompas.UpdateStatus), "Сканирование завешено.");
                }
            }
            catch (InvalidOperationException)
            {
            }
        }
Ejemplo n.º 22
0
        internal InvEntry(string html)
        {
            // <input type=button class=invbut onclick="location='main.php?get_id=57&uid=85896535&s=1&vcode=33a9b5f8916ae068f30d9efcb458934e'" value="Надеть">
            WearLink = HelperStrings.SubString(html, "<input type=button class=invbut onclick=\"location='", "'\" value=\"Надеть\">") ?? string.Empty;


            // <input type=button class=invbut onclick="javascript: if(confirm('Вы точно хотите продать < Кристальное Кольцо (ап) > за 300 NV?')) { location='main.php?get_id=8&uid=16964485&wpr=500&wmas=2&sum=300&vcode=61a2a21c37f65190952e0eda5c426a2c&wcs=70&wms=70&wn=%CA%F0%E8%F1%F2%E0%EB%FC%ED%EE%E5+%CA%EE%EB%FC%F6%EE+%28%E0%EF%29' }" value="Продать за 300 NV">

            var possl = html.IndexOf("Продать за", StringComparison.CurrentCultureIgnoreCase);

            if (possl != -1)
            {
                var pssStart = html.LastIndexOf("<input", possl, StringComparison.CurrentCultureIgnoreCase);
                if (pssStart != -1)
                {
                    var pssEnd = html.IndexOf('>', possl);
                    if (pssEnd != -1)
                    {
                        var pssSubHtml = html.Substring(pssStart, pssEnd - pssStart + 1);
                        var pssThing   = HelperStrings.SubString(pssSubHtml, "продать < ", " >");
                        if (pssThing != null)
                        {
                            var pssPriceString = HelperStrings.SubString(pssSubHtml, "> за ", " NV");
                            if (pssPriceString != null)
                            {
                                var pssLink = HelperStrings.SubString(pssSubHtml, "location='", "' ");
                                if (pssLink != null)
                                {
                                    int pssPrice;
                                    if (int.TryParse(pssPriceString, out pssPrice))
                                    {
                                        PssThing = pssThing;
                                        PssPrice = pssPrice;
                                        PssLink  = pssLink;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            var dropThing = HelperStrings.SubString(html, "if(top.DeleteTrue('", "'))");

            if (!string.IsNullOrEmpty(dropThing))
            {
                var str      = $"if(top.DeleteTrue('{dropThing}')) {{ location='";
                var dropLink = HelperStrings.SubString(html, str, "'");
                if (!string.IsNullOrEmpty(dropLink))
                {
                    var dropPrice = HelperStrings.SubString(html, "Цена: <b>", " NV</b>");
                    if (!string.IsNullOrEmpty(dropLink))
                    {
                        DropThing = dropThing;
                        DropLink  = dropLink;
                        DropPrice = dropPrice;
                    }
                }
            }

            _raw   = html;
            _count = 1;
            Name   = HelperStrings.SubString(html, "<font class=nickname><b> ", "</b>") ?? string.Empty;

            // 25.06.2010 19:02
            var sg = HelperStrings.SubString(html, "<font color=#cc0000>Срок годности: ", "</font>");

            if (!string.IsNullOrEmpty(sg))
            {
                _expirible = true;
                var sp = sg.Split((new[] { '.', ' ', ':' }));
                if (sp.Length > 4)
                {
                    int day;
                    if (int.TryParse(sp[0], out day))
                    {
                        int month;
                        if (int.TryParse(sp[1], out month))
                        {
                            int year;
                            if (int.TryParse(sp[2], out year))
                            {
                                int hour;
                                if (int.TryParse(sp[3], out hour))
                                {
                                    int minute;
                                    if (int.TryParse(sp[4], out minute))
                                    {
                                        var exptime = new DateTime(year, month, day, hour, minute, 0);
                                        if (AppVars.ServerDateTime > exptime.AddDays(1))
                                        {
                                            _expired = true;

                                            /*
                                             * <tr><td bgcolor=#F5F5F5><div align=center><input type=image src=http://image.neverlands.ru/weapon/Bi_w27_52.gif border=0 width=40 height=40 onclick="location='main.php?get_id=57&uid=39873192&s=1&vcode=f8594529b3435d142a75407c540bca30'"><br><img src=http://image.neverlands.ru/1x1.gif width=62 height=1><br><img src=http://image.neverlands.ru/solidst.gif width=62 height=2 border=0><img src=http://image.neverlands.ru/nosolidst.gif width=0 height=2 border=0></div></td><td width=100% bgcolor=#FFFFFF valign=top><table cellpadding=0 cellspacing=0 border=0 width=100%><tr><td bgcolor=#FFFFFF width=100%><input type=button class=invbut onclick="location='main.php?get_id=57&uid=39873192&s=1&vcode=f8594529b3435d142a75407c540bca30'" value="Надеть"> <input type=button class=invbut onclick="magicreform('39873192','Черный','Зелье Сильной Спины','af1ef85a503d2628f62581410d2c050f')" value="Использовать"> <input type=button class=invbut onclick="transferform('39873192','2','Зелье Сильной Спины','5e8ef288f10315cdb07898e6040ac88a','50','1','7','7')" value="Передать"> <input type=button class=invbut onclick="presentform('39873192','Зелье Сильной Спины','c995cd0ce9cc98c03a30ba71de878eff','1','50','7','7')" value="Подарить"> <input type=button class=invbut onclick="sellingform('39873192','Зелье Сильной Спины','079d292ef558c5f9c4f8dde534c9cbb9','50','1','0')" value="Продать"><br><img src=http://image.neverlands.ru/1x1.gif width=1 height=5></td><td valign=center> <input type=image src=http://image.neverlands.ru/del.gif width=14 height=14 border=0 onclick="javascript: if(top.DeleteTrue('Зелье Сильной Спины')) { location='main.php?get_id=50&uid=39873192&wpr=50&wmas=1&wcs=7&wms=7&vcode=a32f77183c3eb0dd3539d76838611768&wn=%C7%E5%EB%FC%E5+%D1%E8%EB%FC%ED%EE%E9+%D1%EF%E8%ED%FB' }" value="x" ><br><img src=http://image.neverlands.ru/1x1.gif width=1 height=5></td></tr><tr><td colspan=2 width=100%><table cellpadding=0 cellspacing=0 border=0 width=100%><tr><td bgcolor=#D8CDAF width=50% colspan=3><div align=center><font class=invtitle><font color=#000000>свойства</font></div></td><td bgcolor=#B9A05C><img src=http://image.neverlands.ru/1x1.gif width=1 height=16></td><td bgcolor=#D8CDAF width=50% colspan=3><div align=center><font class=invtitle><font color=#000000>требования</font></div></td></tr><tr><td bgcolor=#FCFAF3><img src=http://image.neverlands.ru/1x1.gif width=5 height=1></td><td bgcolor=#FCFAF3 width=50%><font class=nickname><b> Зелье Сильной Спины</b><br><font class=weaponch><b><font color=#cc0000>Срок годности: 25.06.2010 19:02</font></b><br>Цена: <b>50 NV</b><br>Долговечность: <b>7/7</b><br></td><td bgcolor=#FCFAF3><img src=http://image.neverlands.ru/1x1.gif width=5 height=1></td><td bgcolor=#B9A05C><img src=http://image.neverlands.ru/1x1.gif width=1 height=1></td><td bgcolor=#FCFAF3><img src=http://image.neverlands.ru/1x1.gif width=5 height=1></td><td bgcolor=#FCFAF3 width=50%><font class=weaponch>Масса: <b>1</b><br>Уровень: <b>8</b><br></td><td bgcolor=#FCFAF3><img src=http://image.neverlands.ru/1x1.gif width=5 height=1></td></tr></table></td></tr></table></td></tr>
                                             */
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            var prefix = string.Format(
                CultureInfo.InvariantCulture,
                "<font color=#000000>требования</font></div></td></tr><tr><td bgcolor=#FCFAF3><img src=http://image.neverlands.ru/1x1.gif width=5 height=1></td><td bgcolor=#FCFAF3 width=50%><font class=nickname><b> {0}</b><br><font class=weaponch>",
                Name);
            var prop = HelperStrings.SubString(
                html,
                prefix,
                "<br></td><td bgcolor=#FCFAF3><img src=http://image.neverlands.ru/1x1.gif width=5 height=1></td></tr></table>");

            if (!string.IsNullOrEmpty(prop))
            {
                var par =
                    prop.Split(
                        new[]
                {
                    "<br>",
                    "</td><td bgcolor=#FCFAF3><img src=http://image.neverlands.ru/1x1.gif width=5 height=1></td><td bgcolor=#B9A05C><img src=http://image.neverlands.ru/1x1.gif width=1 height=1></td><td bgcolor=#FCFAF3><img src=http://image.neverlands.ru/1x1.gif width=5 height=1></td><td bgcolor=#FCFAF3 width=50%><font class=weaponch>"
                },
                        StringSplitOptions.RemoveEmptyEntries);
                if (par.Length > 1)
                {
                    var sb = new StringBuilder();
                    for (var index = 1; index < par.Length; index++)
                    {
                        if (par[index].IndexOf("Цена: <b>", StringComparison.CurrentCultureIgnoreCase) != -1)
                        {
                            continue;
                        }

                        if (par[index].IndexOf("Материал: <b>", StringComparison.CurrentCultureIgnoreCase) != -1)
                        {
                            continue;
                        }

                        if (AppVars.Profile.DoInvPackDolg && string.IsNullOrEmpty(_dolg))
                        {
                            _dolg = HelperStrings.SubString(par[index], "Долговечность: <b>", "</b>") ?? string.Empty;
                            if (!string.IsNullOrEmpty(_dolg))
                            {
                                var parD = _dolg.Split('/');
                                if (parD.Length == 2)
                                {
                                    if (!int.TryParse(parD[0], out _dolgOne))
                                    {
                                        _dolgOne = 0;
                                    }

                                    if (!int.TryParse(parD[1], out _dolgTwo))
                                    {
                                        _dolgTwo = 0;
                                    }
                                }
                            }
                            else
                            {
                                if (sb.Length > 0)
                                {
                                    sb.Append('|');
                                }

                                sb.Append(par[index]);
                            }
                        }
                        else
                        {
                            if (sb.Length > 0)
                            {
                                sb.Append('|');
                            }

                            sb.Append(par[index]);
                        }
                    }

                    _properties = sb.ToString();
                }
            }

            _img = HelperStrings.SubString(html, " src=http://", " ") ?? string.Empty;
            var level = HelperStrings.SubString(html, "<br>Уровень: <b>", "</b>") ?? string.Empty;

            if (!string.IsNullOrEmpty(level))
            {
                if (!int.TryParse(level, out _level))
                {
                    _level = 0;
                }
            }

            var pos = 0;

            while (pos != -1)
            {
                pos = html.IndexOf("<input type=button", pos, StringComparison.CurrentCultureIgnoreCase);
                if (pos != -1)
                {
                    _countButton++;
                    pos += "<input type=button".Length;
                }
            }
        }
Ejemplo n.º 23
0
        private static void FilterGetWalkers(string html)
        {
            if (!AppVars.DoShowWalkers)
            {
                return;
            }

            var mLocnow = HelperStrings.SubString(html, "<font class=placename><b>", "</b>");

            if (string.IsNullOrEmpty(mLocnow))
            {
                return;
            }

            var arg = HelperStrings.SubString(html, "new Array(", ");");

            if (string.IsNullOrEmpty(arg))
            {
                return;
            }

            var par = arg.Split(new[] { @"""," }, StringSplitOptions.RemoveEmptyEntries);

            if (par.Length == 0)
            {
                return;
            }

            var mDnow = new Dictionary <string, string>();

            for (var i = 0; i < par.Length; i++)
            {
                var pararg = par[i].Substring(3, par[i].Length - 3);
                var pars   = pararg.Split(':');
                if (pars.Length < 3)
                {
                    continue;
                }

                if (pars[1].IndexOf("<i>", StringComparison.OrdinalIgnoreCase) == -1)
                {
                    mDnow.Add(pars[1], pararg);
                }
            }

            if ((AppVars.Profile.MapLocation == AppVars.MyCoordOld) && (mLocnow == AppVars.MyLocOld))
            {
                var myDleft = new Dictionary <string, string>();
                var keyleft = AppVars.MyCharsOld.Keys;
                foreach (var kl in keyleft)
                {
                    if (kl != null && !mDnow.ContainsKey(kl))
                    {
                        if (kl.Equals(AppVars.Profile.UserNick, StringComparison.CurrentCultureIgnoreCase))
                        {
                            if (AppVars.MainForm != null)
                            {
                                AppVars.MainForm.WriteChatMsgSafe("<b><font color=#01A9DB>Мы ушли в невид</font></b>");
                            }
                        }
                        else
                        {
                            myDleft.Add(kl, AppVars.MyCharsOld[kl]);
                        }
                    }
                }

                var myDcome = new Dictionary <string, string>();
                var keycome = mDnow.Keys;
                foreach (var kc in keycome)
                {
                    if (kc != null && !AppVars.MyCharsOld.ContainsKey(kc))
                    {
                        if (kc.Equals(AppVars.Profile.UserNick, StringComparison.CurrentCultureIgnoreCase))
                        {
                            if (AppVars.MainForm != null)
                            {
                                AppVars.MainForm.WriteChatMsgSafe("<b><font color=#DF0101>Мы вышли из невида!</font></b>");
                            }
                        }
                        else
                        {
                            myDcome.Add(kc, mDnow[kc]);
                        }
                    }
                }

                var diffn = AppVars.MyNevids - AppVars.MyNevidsOld;
                if ((myDleft.Count != 0) || (myDcome.Count != 0) || (diffn != 0))
                {
                    var sb = new StringBuilder();
                    var i  = 0;
                    if (diffn > 0)
                    {
                        i = 1;
                        sb.Append("<font color=#5D7C91><b>");
                        if (diffn == 1)
                        {
                            sb.Append("Невидимка");
                        }
                        else
                        {
                            sb.Append(diffn);
                            sb.Append(" невидимок");
                        }

                        sb.Append("</b></font>");
                    }

                    if (myDcome.Count > 0)
                    {
                        keycome = myDcome.Keys;

                        foreach (var kc in keycome)
                        {
                            if (i > 0)
                            {
                                sb.Append(", ");
                            }

                            i++;
                            sb.Append(HtmlChar(myDcome[kc]));
                        }
                    }

                    if (i > 0)
                    {
                        sb.Append(i > 1 ? " приходят в локацию" : " приходит в локацию");
                    }

                    AppVars.MyWalkers1 = sb.ToString();
                    sb.Length          = 0;
                    i = 0;
                    if (diffn < 0)
                    {
                        i = 1;
                        sb.Append("<font color=#5D7C91><b>");
                        if (diffn == -1)
                        {
                            sb.Append("Невидимка");
                        }
                        else
                        {
                            sb.Append(-diffn);
                            sb.Append(" невидимок");
                        }

                        sb.Append("</b></font>");
                    }

                    if (myDleft.Count > 0)
                    {
                        keyleft = myDleft.Keys;

                        foreach (var kl in keyleft)
                        {
                            if (i > 0)
                            {
                                sb.Append(", ");
                            }

                            i++;
                            sb.Append(HtmlChar(myDleft[kl]));
                        }
                    }

                    if (i > 0)
                    {
                        sb.Append(i > 1 ? " покидают локацию" : " покидает локацию");
                    }

                    AppVars.MyWalkers2 = sb.ToString();
                }
            }

            AppVars.MyCoordOld = AppVars.Profile.MapLocation;
            AppVars.MyLocOld   = mLocnow;
            AppVars.MyCharsOld.Clear();
            AppVars.MyCharsOld  = new Dictionary <string, string>(mDnow);
            AppVars.MyNevidsOld = AppVars.MyNevids;

            if (!string.IsNullOrEmpty(AppVars.MyWalkers1))
            {
                EventSounds.PlayAlarm();
                try
                {
                    if (AppVars.MainForm != null)
                    {
                        AppVars.MainForm.BeginInvoke(
                            new UpdateChatDelegate(AppVars.MainForm.UpdateChat), AppVars.MyWalkers1);
                    }
                }
                catch (InvalidOperationException)
                {
                }

                AppVars.MyWalkers1 = string.Empty;
            }

            if (!string.IsNullOrEmpty(AppVars.MyWalkers2))
            {
                try
                {
                    if (AppVars.MainForm != null)
                    {
                        AppVars.MainForm.BeginInvoke(
                            new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                            new object[] { AppVars.MyWalkers2 });
                    }
                }
                catch (InvalidOperationException)
                {
                }

                AppVars.MyWalkers2 = string.Empty;
            }
        }
Ejemplo n.º 24
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);
        }
Ejemplo n.º 25
0
        internal ParsedDressed(string html)
        {
            Valid = false;

            AppVars.AutoFishHand1  = string.Empty;
            AppVars.AutoFishHand2  = string.Empty;
            AppVars.AutoFishHand1D = string.Empty;
            AppVars.AutoFishHand2D = string.Empty;

            var slotsinv = HelperStrings.SubString(html, "slots_inv(", ");");

            if (string.IsNullOrEmpty(slotsinv))
            {
                var slotspla = HelperStrings.SubString(html, "slots_pla(", ");");
                if (string.IsNullOrEmpty(slotspla))
                {
                    return;
                }

                var farg = slotspla.Split(',');
                if (farg.Length < 5)
                {
                    return;
                }

                var fmain = farg[2].Split('@');
                if (fmain.Length < 13)
                {
                    return;
                }

                var fdo = farg[3].Split('@');
                if (fdo.Length < 13)
                {
                    return;
                }

                var fhand1 = fmain[2].Split(':');
                if (fhand1.Length < 2)
                {
                    return;
                }

                Hand1  = fhand1[1];
                Empty1 = Hand1.StartsWith("Слот", StringComparison.OrdinalIgnoreCase);
                var fcurdlg1 = string.Empty;
                var fmaxdlg1 = string.Empty;
                if (!Empty1)
                {
                    fcurdlg1 = fdo[2];
                    fmaxdlg1 = fhand1[2].Split(new[] { '|' }, StringSplitOptions.None)[7];
                }

                var fhand2 = fmain[12].Split(':');
                if (fhand2.Length < 2)
                {
                    return;
                }

                Hand2  = fhand2[1];
                Empty2 = Hand2.StartsWith("Слот", StringComparison.OrdinalIgnoreCase);
                var fcurdlg2 = string.Empty;
                var fmaxdlg2 = string.Empty;
                if (!Empty2)
                {
                    fcurdlg2 = fdo[12];
                    fmaxdlg2 = fhand2[2].Split(new[] { '|' }, StringSplitOptions.None)[7];
                }

                if (!Empty1)
                {
                    slist.Add(Hand1);
                    dlist.Add(fcurdlg1 + "/" + fmaxdlg1);
                }

                if (!Empty2)
                {
                    slist.Add(Hand2);
                    dlist.Add(fcurdlg2 + "/" + fmaxdlg2);
                }

                Valid = true;
                return;
            }

            var pslots = slotsinv.Split(',');

            if (pslots.Length < 6)
            {
                return;
            }

            var slmain = pslots[2].Split('@');

            if (slmain.Length < 13)
            {
                return;
            }

            var slwid = pslots[3].Split('@');

            if (slwid.Length < 3)
            {
                return;
            }

            Wid = slwid[2];

            var slvcod = pslots[4].Split('@');

            if (slvcod.Length < 3)
            {
                return;
            }

            Vcod = slvcod[2];

            var sldlg = pslots[5].Split(new[] { '@' }, StringSplitOptions.None);

            if (sldlg.Length < 13)
            {
                return;
            }

            var slhand1 = slmain[2].Split(':');

            if (slhand1.Length < 2)
            {
                return;
            }

            Hand1  = slhand1[1];
            Empty1 = Hand1.StartsWith("Слот", StringComparison.OrdinalIgnoreCase);
            var curdlg1 = string.Empty;
            var maxdlg1 = string.Empty;

            if (!Empty1)
            {
                curdlg1 = sldlg[2];
                maxdlg1 = slhand1[2].Split(new[] { '|' }, StringSplitOptions.None)[7];
            }

            var slhand2 = slmain[12].Split(':');

            if (slhand2.Length < 2)
            {
                return;
            }

            Hand2  = slhand2[1];
            Empty2 = Hand2.StartsWith("Слот", StringComparison.OrdinalIgnoreCase);
            var curdlg2 = string.Empty;
            var maxdlg2 = string.Empty;

            if (!Empty2)
            {
                curdlg2 = sldlg[12];
                maxdlg2 = slhand2[2].Split(new[] { '|' }, StringSplitOptions.None)[7];
            }

            if (!Empty1)
            {
                slist.Add(Hand1);
                dlist.Add(curdlg1 + "/" + maxdlg1);
            }

            if (!Empty2)
            {
                slist.Add(Hand2);
                dlist.Add(curdlg2 + "/" + maxdlg2);
            }

            Valid = true;
        }
Ejemplo n.º 26
0
        private static string FishReport(string html)
        {
            var numFish   = 0;
            var catchFish = 0;
            var fishUmUp  = html.IndexOf("повысилось на 1!", StringComparison.OrdinalIgnoreCase) != -1;

            AppVars.AutoFishCheckUm = html.IndexOf("повысилось на 1!", StringComparison.OrdinalIgnoreCase) != -1 || AppVars.Profile.FishUm == 0;
            int p1 = html.IndexOf('«');

            if (p1 == -1)
            {
                return(string.Empty);
            }

            var p2 = html.IndexOf('»', p1);

            if (p2 == -1)
            {
                return(string.Empty);
            }

            string nameFish   = html.Substring(p1 + 1, p2 - p1 - 1);
            var    strNumFish = HelperStrings.SubString(html, "Улов: ", " шт.");

            if (!string.IsNullOrEmpty(strNumFish))
            {
                if (!int.TryParse(strNumFish, out numFish))
                {
                    numFish = 0;
                }
            }

            var strCatchFish = HelperStrings.SubString(html, "Клёв: ", " шт.");

            if (!string.IsNullOrEmpty(strCatchFish))
            {
                if (!int.TryParse(strCatchFish, out catchFish))
                {
                    catchFish = 0;
                }
            }

            var staticFishReport = "Нет клёва.";
            var posf             = html.IndexOf(staticFishReport, StringComparison.OrdinalIgnoreCase);

            if (posf != -1)
            {
                catchFish = 0;
            }
            else
            {
                staticFishReport = "Не удалось вытащить рыбу.";
                posf             = html.IndexOf(staticFishReport, StringComparison.OrdinalIgnoreCase);
                if (posf != -1)
                {
                    return(string.Empty);
                }
            }

            var sbr = new StringBuilder();
            var s2  = new StringBuilder();

            sbr.Append("<b>");
            sbr.Append(nameFish);
            sbr.Append("</b> [<b>");
            sbr.Append(numFish);
            sbr.Append('/');
            sbr.Append(catchFish);
            sbr.Append("</b>]. ");

            if (fishUmUp)
            {
                AppVars.Profile.FishUm++;
            }

            if (AppVars.Profile.FishUm > 0)
            {
                sbr.Append("Умелка");
                s2.Append("Умелка");
                sbr.Append(":&nbsp;<b>");
                s2.Append(": ");
                sbr.Append(AppVars.Profile.FishUm);
                sbr.Append("</b>");
                s2.Append(AppVars.Profile.FishUm);
                if (fishUmUp)
                {
                    sbr.Append("&nbsp;(<font color=#008800><b>+");
                    s2.Append(" (+");
                    sbr.Append(1);
                    s2.Append(1);
                    sbr.Append("<img src=http://image.neverlands.ru/gameplay/up.gif width=10 height=14></b></font>)");
                    s2.Append(")");
                }

                s2.AppendLine();
            }

            double fishp     = 0;
            double fishmassa = 0;

            switch (nameFish)
            {
            case "Карась":
                fishp     = 4.32;
                fishmassa = 2;
                break;

            case "Плотва":
                fishp     = 3.62;
                fishmassa = 2;
                break;

            case "Пескарь":
                fishp     = 3.94;
                fishmassa = 2;
                break;

            case "Щука":
                fishp     = 23.15;
                fishmassa = 5;
                break;

            case "Ёрш":
                fishp     = 3.34;
                fishmassa = 2;
                break;

            case "Окунь":
                fishp     = 11.54;
                fishmassa = 2;
                break;

            case "Краснопёрка":
                fishp     = 8.58;
                fishmassa = 2;
                break;

            case "Налим":
                fishp     = 23.85;
                fishmassa = 3;
                break;

            case "Судак":
                fishp     = 13.14;
                fishmassa = 2;
                break;

            case "Верхоплавка":
                fishp     = 2.68;
                fishmassa = 2;
                break;

            case "Лещ":
                fishp     = 22.20;
                fishmassa = 2;
                break;

            case "Подлещик":
                fishp     = 4.76;
                fishmassa = 2;
                break;

            case "Карп":
                fishp     = 5.26;
                fishmassa = 2;
                break;

            case "Форель":
                fishp     = 29.75;
                fishmassa = 5;
                break;

            case "Бычок":
                fishp     = 8.80;
                fishmassa = 2;
                break;

            case "Голавль":
                fishp     = 7.26;
                fishmassa = 2;
                break;

            case "Линь":
                fishp     = 31.62;
                fishmassa = 2;
                break;

            case "Сом":
                fishp     = 42.04;
                fishmassa = 4;
                break;

            case "Язь":
                fishp     = 29.12;
                fishmassa = 2;
                break;
            }

            double prim     = 0;
            double primassa = 0;
            var    namepri  = AppVars.NamePri;

            switch (namepri)
            {
            case "Хлеб":
                prim     = 1;
                primassa = 0.2;
                break;

            case "Червяк":
                prim     = 1;
                primassa = 0.1;
                break;

            case "Крупный червяк":
                prim     = 1;
                primassa = 0.2;
                break;

            case "Опарыш":
                prim     = 5;
                primassa = 0.1;
                break;

            case "Мотыль":
                prim     = 5;
                primassa = 0.1;
                break;

            case "Блесна":
                prim     = 10;
                primassa = 0.3;
                break;

            case "Донка":
                prim     = 12;
                primassa = 0.3;
                break;

            case "Мормышка":
                prim     = 15;
                primassa = 0.3;
                break;

            case "Заговоренная блесна":
                prim     = 20;
                primassa = 0.4;
                break;
            }

            double bal = 0;

            if (!string.IsNullOrEmpty(AppVars.AutoFishHand1))
            {
                sbr.Append("<br>");
                sbr.Append("Долговечность");
                s2.Append(AppVars.AutoFishHand1);
                sbr.Append(":&nbsp;<b>");
                s2.Append(" (до заброса): ");
                sbr.Append(AppVars.AutoFishHand1D);
                s2.Append(AppVars.AutoFishHand1D);
                sbr.Append("</b>");
                bal -= 2.5;
                s2.AppendLine();
            }

            /*
             * if (!string.IsNullOrEmpty(AppVars.AutoFishHand2))
             * {
             *  sbr.Append("<br>");
             *  sbr.Append(AppVars.AutoFishHand2);
             *  s2.Append(AppVars.AutoFishHand2);
             *  sbr.Append("&nbsp;(до заброса):</td><td bgcolor=#FAFAFA nowrap class=nickname><b>&nbsp;");
             *  s2.Append(" (до заброса): ");
             *  sbr.Append(AppVars.AutoFishHand2D);
             *  s2.Append(AppVars.AutoFishHand2D);
             *  bal -= 2.5;
             *  sbr.Append("&nbsp;</b></td></tr>");
             *  s2.AppendLine();
             * }
             */

            if (!string.IsNullOrEmpty(AppVars.AutoFishMassa) && ((numFish > 0) || (catchFish > 0)))
            {
                sbr.Append("<br>");
                sbr.Append("Масса");
                s2.Append("Масса");
                sbr.Append(":&nbsp;<b>");
                s2.Append(": ");

                var d2  = (fishmassa * numFish) - (primassa * catchFish);
                var sf  = AppVars.AutoFishMassa.Split('/');
                var cur = Convert.ToDouble(sf[0], CultureInfo.InvariantCulture) + d2;
                AppVars.AutoFishMassa = cur.ToString("###0.##", CultureInfo.InvariantCulture) + "/" + sf[1];
                sbr.Append(AppVars.AutoFishMassa);
                if (d2 != 0)
                {
                    var sd2 = d2.ToString("###0.##", CultureInfo.InvariantCulture);
                    if (d2 < 0)
                    {
                        sbr.Append("</b>&nbsp;(<font color=#CC0000><b>");
                        s2.Append(" (");
                        sbr.Append(sd2);
                        s2.Append(sd2);
                        sbr.Append("<img src=http://image.neverlands.ru/gameplay/down.gif width=10 height=14></b></font>)");
                        s2.Append(")");
                    }
                    else
                    {
                        sbr.Append("</b>&nbsp;(<font color=#008800><b>+");
                        s2.Append(" (+");
                        sbr.Append(sd2);
                        s2.Append(sd2);
                        sbr.Append("<img src=http://image.neverlands.ru/gameplay/up.gif width=10 height=14></b></font>)");
                        s2.Append(")");
                    }
                }

                s2.AppendLine();
            }

            if (!string.IsNullOrEmpty(namepri))
            {
                sbr.Append("<br><b>");
                sbr.Append(namepri);
                s2.Append(namepri);
                sbr.Append("</b>&nbsp;(остаток):&nbsp;<b>");
                s2.Append(" (остаток): ");
                var cur = AppVars.ValPri - catchFish;
                sbr.Append(cur);
                s2.Append(cur);
                if (catchFish > 0)
                {
                    sbr.Append("</b>&nbsp;(<font color=#CC0000><b>-");
                    s2.Append(" (-");
                    sbr.Append(catchFish);
                    s2.Append(catchFish);
                    sbr.Append("<img src=http://image.neverlands.ru/gameplay/down.gif width=10 height=14></b></font>)");
                    s2.Append(")");
                }

                bal -= prim * catchFish;
                s2.AppendLine();
            }

            if (!string.IsNullOrEmpty(nameFish))
            {
                s2.Append(nameFish);
                s2.Append(" (улов): ");
                s2.Append(numFish);
                bal += fishp * numFish;
                s2.AppendLine();
            }

            s2.Append(bal < 0 ? "Потери" : "Доход");
            s2.Append(": ");
            var sbal = bal.ToString("###0.##", CultureInfo.InvariantCulture);

            if (bal < 0)
            {
                // sbr.Append("<font color=#CC0000><b>");
                // sbr.Append(sbal);
                s2.Append(sbal);
                // sbr.Append("<img src=http://image.neverlands.ru/gameplay/down.gif width=10 height=14></b></font>&nbsp;NV");
                s2.Append(" NV");
            }
            else
            {
                // sbr.Append("<font color=#008800><b>+");
                s2.Append("+");
                // sbr.Append(sbal);
                s2.Append(sbal);
                // sbr.Append("<img src=http://image.neverlands.ru/gameplay/up.gif width=10 height=14></b></font>&nbsp;NV");
                s2.Append(" NV");
            }

            s2.AppendLine();

            AppVars.AutoFishNV += bal;

            try
            {
                if (AppVars.MainForm != null)
                {
                    AppVars.MainForm.BeginInvoke(
                        new UpdateFishNVIncDelegate(AppVars.MainForm.UpdateFishNV),
                        new object[] { (int)bal });
                }
            }
            catch (InvalidOperationException)
            {
            }

            sbr.Append("<br>");
            if (AppVars.AutoFishNV < 0)
            {
                sbr.Append("Потери&nbsp;за&nbsp;рыбалку");
                s2.Append("Потери за рыбалку");
            }
            else
            {
                sbr.Append("Доход&nbsp;за&nbsp;рыбалку");
                s2.Append("Доход за рыбалку");
            }

            sbr.Append(":&nbsp;");
            s2.Append(": ");
            sbal = AppVars.AutoFishNV.ToString("###0.##", CultureInfo.InvariantCulture);
            if (AppVars.AutoFishNV < 0)
            {
                sbr.Append("<font color=#CC0000><b>");
                sbr.Append(sbal);
                s2.Append(sbal);
                sbr.Append("<img src=http://image.neverlands.ru/gameplay/down.gif width=10 height=14></b></font>&nbsp;NV");
                s2.Append(" NV");
            }
            else
            {
                sbr.Append("<font color=#008800><b>+");
                s2.Append("+");
                sbr.Append(sbal);
                s2.Append(sbal);
                sbr.Append("<img src=http://image.neverlands.ru/gameplay/up.gif width=10 height=14></b></font>&nbsp;NV");
                s2.Append(" NV");
            }

            if (AppVars.Profile.ShowTrayBaloons)
            {
                try
                {
                    if (AppVars.MainForm != null)
                    {
                        AppVars.MainForm.BeginInvoke(
                            new UpdateTrayBaloonDelegate(AppVars.MainForm.UpdateTrayBaloon),
                            new object[] { s2.ToString() });
                    }
                }
                catch (InvalidOperationException)
                {
                }
            }

            if (!string.IsNullOrEmpty(nameFish) && AppVars.Profile.FishChatReport)
            {
                var sbchat = new StringBuilder();
                //sbchat.Append(AppVars.AppVersion.ProductShortVersion);
                //sbchat.Append(": ");
                sbchat.Append("Умелка ");
                sbchat.Append(AppVars.Profile.FishUm);
                sbchat.Append(". ");
                sbchat.Append(namepri);
                if (!string.IsNullOrEmpty(AppVars.AutoFishHand1) && !string.IsNullOrEmpty(AppVars.AutoFishHand2))
                {
                    if (AppVars.AutoFishHand1.Equals("Сачок", StringComparison.OrdinalIgnoreCase) ||
                        AppVars.AutoFishHand2.Equals("Сачок", StringComparison.OrdinalIgnoreCase))
                    {
                        sbchat.Append("+Сачок");
                    }
                }

                sbchat.Append(" » ");
                sbchat.Append(nameFish);
                sbchat.Append(" [");
                sbchat.Append(numFish);
                sbchat.Append('/');
                sbchat.Append(catchFish);
                sbchat.Append("]. ");
                if (AppVars.AutoFishNV < 0)
                {
                    sbchat.Append("Потери");
                }
                else
                {
                    sbchat.Append("Доход");
                }

                sbchat.Append(" за сеанс: ");
                sbchat.Append(AppVars.AutoFishNV.ToString("###0.##", CultureInfo.InvariantCulture));
                sbchat.Append(" NV.");
                if (fishUmUp)
                {
                    sbchat.Append(@" Умение ""Рыбалка"" повысилось на 1!");
                }

                try
                {
                    if (AppVars.MainForm != null)
                    {
                        AppVars.MainForm.BeginInvoke(
                            new UpdateWriteRealChatMsgDelegate(AppVars.MainForm.WriteMessageToChat),
                            new object[] { sbchat.ToString() });
                    }
                }
                catch (InvalidOperationException)
                {
                }
            }

            if (!string.IsNullOrEmpty(nameFish) && AppVars.Profile.FishChatReportColor)
            {
                var sbchat = new StringBuilder();
                sbchat.Append("Умелка <b>");
                sbchat.Append(AppVars.Profile.FishUm);
                sbchat.Append("</b>. ");
                sbchat.Append(namepri);
                if (!string.IsNullOrEmpty(AppVars.AutoFishHand1) && !string.IsNullOrEmpty(AppVars.AutoFishHand2))
                {
                    if (AppVars.AutoFishHand1.Equals("Сачок", StringComparison.OrdinalIgnoreCase) ||
                        AppVars.AutoFishHand2.Equals("Сачок", StringComparison.OrdinalIgnoreCase))
                    {
                        sbchat.Append("+Сачок");
                    }
                }

                sbchat.Append(" » ");
                sbchat.Append(nameFish);
                sbchat.Append(" [");
                sbchat.Append(numFish);
                sbchat.Append('/');
                sbchat.Append(catchFish);
                sbchat.Append("]. ");
                if (AppVars.AutoFishNV < 0)
                {
                    sbchat.Append("Потери");
                }
                else
                {
                    sbchat.Append("Доход");
                }

                sbchat.Append(": <b>");
                sbchat.Append(AppVars.AutoFishNV.ToString("###0.##", CultureInfo.InvariantCulture));
                sbchat.Append(" NV</b>.");
                if (fishUmUp)
                {
                    sbchat.Append(@" Умение ""Рыбалка"" <b>повысилось на 1</b>!");
                }

                if (AppVars.Profile.FishChatReportColor)
                {
                    try
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.BeginInvoke(
                                new UpdateWriteChatMsgDelegate(AppVars.MainForm.WriteChatMsg),
                                new object[] { sbchat.ToString() });
                        }
                    }
                    catch (InvalidOperationException)
                    {
                    }
                }
            }

            AppVars.AutoFishCheckUd = true;
            AppVars.AutoFishWearUd  = false;
            return(sbr.ToString());
        }
Ejemplo n.º 27
0
        private static void RoomAsync(object stateInfo)
        {
            while (!_doStop)
            {
                if (AppVars.DoShowWalkers)
                {
                    try
                    {
                        IdleManager.AddActivity();
                        var wr = (HttpWebRequest)WebRequest.Create("http://neverlands.ru/ch.php?lo=1&");
                        wr.Method = "GET";
                        wr.Proxy  = AppVars.LocalProxy;
                        var cookies = CookiesManager.Obtain("www.neverlands.ru");
                        wr.Headers.Add("Cookie", cookies);
                        var resp      = wr.GetResponse();
                        var webstream = resp.GetResponseStream();
                        if (webstream != null)
                        {
                            using (var reader = new StreamReader(webstream, AppVars.Codepage))
                            {
                                var responseFromServer = reader.ReadToEnd();
                                {
                                    var ssum  = HelperStrings.SubString(responseFromServer, "</b></font></a> [ ", " ]");
                                    var slist = HelperStrings.SubString(responseFromServer, "var ChatListU = new Array(",
                                                                        ");");
                                    var newRoom = $"[{ssum}] {slist}";
                                    if (string.Compare(newRoom, _oldRoom, StringComparison.Ordinal) != 0)
                                    {
                                        Process(responseFromServer);
                                        _oldRoom = newRoom;

                                        try
                                        {
                                            if (AppVars.MainForm != null)
                                            {
                                                AppVars.MainForm.BeginInvoke(
                                                    new ReloadChPhpInvokeDelegate(AppVars.MainForm.ReloadChPhpInvoke),
                                                    new object[] {});
                                            }
                                        }
                                        catch (InvalidOperationException)
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                    catch (WebException)
                    {
                    }
                    catch (IOException)
                    {
                    }
                    finally
                    {
                        IdleManager.RemoveActivity();
                    }
                }

                Event.WaitOne(100, false);
            }
        }
Ejemplo n.º 28
0
        internal void Process(string html)
        {
            var currentTimeStamp = DateTime.Now;

            if (string.IsNullOrEmpty(html))
            {
                return;
            }

            var params0 = HelperStrings.SubString(html, "var params = [[", "],");

            if (string.IsNullOrEmpty(params0))
            {
                return;
            }

            var hpmp = HelperStrings.SubString(html, "var hpmp = [", "]");

            if (string.IsNullOrEmpty(hpmp))
            {
                return;
            }

            var spar1 = HelperStrings.ParseArguments(hpmp);

            if (spar1.Length < 5)
            {
                return;
            }

            var stied = spar1[4];
            int tied;

            if (int.TryParse(stied, out tied))
            {
                tied = 100 - tied;
            }

            var slots = HelperStrings.SubString(html, "var slots = ['", "'];");

            if (string.IsNullOrEmpty(slots))
            {
                return;
            }

            var pslots = slots.Split('@');

            if (pslots.Length < 16)
            {
                return;
            }

            var isKa   = false;
            var sslots = new StringBuilder();

            for (var indexSlot = 0; indexSlot < pslots.Length; indexSlot++)
            {
                if ((indexSlot != 0) && (indexSlot != 1) && (indexSlot != 2) && (indexSlot != 3) &&
                    (indexSlot != 7) && (indexSlot != 10) &&
                    (indexSlot != 11) && (indexSlot != 12) && (indexSlot != 13) && (indexSlot != 14) &&
                    (indexSlot != 15))
                {
                    continue;
                }

                var ps = pslots[indexSlot].Split(':');
                if (ps.Length != 3)
                {
                    sslots.Append('-');
                }
                else
                {
                    var thingImage = ps[0];
                    if (!isKa)
                    {
                        var tl = ThingsDb.Find(thingImage);
                        if (tl.Count == 0)
                        {
                            isKa = true;
                        }
                    }

                    sslots.Append(thingImage);
                }

                sslots.Append('@');
            }

            if (sslots.Length == 0)
            {
                return;
            }

            sslots.Length--;

            var spar0 = HelperStrings.ParseArguments(params0);

            if (spar0.Length < 9)
            {
                return;
            }

            var nick     = spar0[0].Trim();
            var align    = spar0[1];
            var sign     = spar0[2];
            var level    = spar0[3];
            var location = spar0[5];
            var isonline = !string.IsNullOrEmpty(location);
            var flog     = spar0[7];

            if (flog.Equals("0", StringComparison.Ordinal))
            {
                flog = string.Empty;
            }

            var clan = spar0[8];

            var woundCounts = 0;
            var wounds      = new int[4];
            var isMolch     = false;
            var codeEffects = new List <string>();
            var nameEffects = new List <string>();

            // var effects = [[1,'Боевая травма (x9) (еще 23:06:17)'],[2,'Тяжелая травма (x2) (еще 07:01:22)'],[17,'Молчанка (еще 00:00:05)']];
            var effects = HelperStrings.SubString(html, "var effects = [", "];");
            var sbeff   = new StringBuilder();

            if (!string.IsNullOrEmpty(effects))
            {
                var seffects = effects.Split(new[] { "],[" }, StringSplitOptions.RemoveEmptyEntries);
                for (var k = 0; k < seffects.Length; k++)
                {
                    var effk  = seffects[k].Trim(new[] { '[', ']' });
                    var seffk = effk.Split(',');
                    if (seffk.Length <= 1)
                    {
                        continue;
                    }

                    var effcode = seffk[0];
                    var effname = seffk[1].Replace("<b>", string.Empty).Replace("</b>", string.Empty);
                    sbeff.AppendFormat(
                        @"&nbsp;<img src=http://image.neverlands.ru/pinfo/eff_{0}.gif width=15 height=15 align=absmiddle title=""{1}"">",
                        effcode,
                        effname);
                    var effcountstr = HelperStrings.SubString(effname, "(x", ")");
                    int effcount    = 0;
                    if (!string.IsNullOrEmpty(effcountstr))
                    {
                        int.TryParse(effcountstr, out effcount);
                    }

                    switch (effcode)
                    {
                    case "1":
                        woundCounts += effcount;
                        wounds[3]    = effcount;
                        break;

                    case "2":
                        woundCounts += effcount;
                        wounds[2]    = effcount;
                        break;

                    case "3":
                        woundCounts += effcount;
                        wounds[1]    = effcount;
                        break;

                    case "4":
                        woundCounts += effcount;
                        wounds[0]    = effcount;
                        break;

                    case "17":
                        isMolch = true;
                        break;

                    default:
                        codeEffects.Add(effcode);
                        var pos   = effname.IndexOf(" (", StringComparison.Ordinal);
                        var ename = (pos >= 0 ? effname.Substring(0, pos) : effname).Trim('\'');
                        nameEffects.Add(ename);
                        break;
                    }
                }
            }

            var splocation = location.Split(new[] { " [" }, StringSplitOptions.RemoveEmptyEntries);

            if (splocation.Length == 2)
            {
                splocation[1] = splocation[1].Substring(0, splocation[1].Length - 1);
                if ((splocation[1].IndexOf(splocation[0], StringComparison.OrdinalIgnoreCase) != -1) || splocation[1].Contains(","))
                {
                    location = splocation[1];
                }
            }

            Name  = nick;
            Level = level;
            Align = align;
            Sign  = sign;
            Clan  = clan;

            var sb            = new StringBuilder();
            var messagePrefix = HtmlContactEntry(this) /* + sbeff*/;

            // Вход/выход

            if (!_isFirst && IsOnline != isonline)
            {
                if (sb.Length > 0)
                {
                    sb.Append(',');
                }

                if (isonline)
                {
                    sb.AppendFormat(@" появляется в <font color=""#3F7F62"">{0}</font>", location);
                }
                else
                {
                    sb.AppendFormat(
                        isKa
                            ? @" исчезает в <font color=""#3F7F62"">{0}</font>"
                            : @" выходит из игры в <font color=""#3F7F62"">{0}</font>", Location);
                }
            }

            // Переодевания

            if (ClassId != 2)
            {
                if (!_isFirst)
                {
                    var sbp     = new StringBuilder();
                    var changes = 0;
                    if (pslots != null && PSlots != null && pslots.Length == PSlots.Length)
                    {
                        for (var i = 0; i < pslots.Length; i++)
                        {
                            var opars = PSlots[i].Split(':');
                            if (opars.Length < 2)
                            {
                                continue;
                            }

                            var npars = pslots[i].Split(':');
                            if (npars.Length < 2)
                            {
                                continue;
                            }

                            var oimage = opars[0];
                            var nimage = npars[0];

                            var oname = opars[1];
                            var nname = npars[1];

                            if (oimage.Equals(nimage, StringComparison.CurrentCultureIgnoreCase) &&
                                oname.Equals(nname, StringComparison.CurrentCultureIgnoreCase))
                            {
                                continue;
                            }

                            sbp.Append(sbp.Length > 0 ? ", " : " ");
                            if (nimage.StartsWith("sl_"))
                            {
                                sbp.Append("снимает");
                                sbp.Append(" &laquo;");
                                sbp.Append(oname);
                            }
                            else
                            {
                                sbp.Append("одевает");
                                sbp.Append(" &laquo;");
                                sbp.Append(nname);
                            }

                            sbp.Append("&raquo;");
                            changes++;
                        }
                    }

                    if (sbp.Length > 0)
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(',');
                        }

                        sb.Append(changes > 3 ? " переодевается" : sbp.ToString());
                    }
                }
            }

            // Изменение усталости

            if (ClassId != 2)
            {
                if (!_isFirst && isonline && IsOnline && Location != location && !string.IsNullOrEmpty(location))
                {
                    if (sb.Length > 0)
                    {
                        sb.Append(',');
                    }

                    if (Tied != tied)
                    {
                        sb.AppendFormat(@" усталость <b>{0}</b> в <font color=""#3F7F62"">{1}</font>", tied, location);
                    }
                    else
                    {
                        sb.AppendFormat(@" переходит в <font color=""#3F7F62"">{0}</font>", location);
                    }
                }
                else
                {
                    if (!_isFirst && isonline && IsOnline && Location == location && Tied < tied &&
                        !string.IsNullOrEmpty(location))
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(',');
                        }

                        sb.AppendFormat(@" усталость {0}&rarr;<b>{1}</b> в <font color=""#3F7F62"">{2}</font>", Tied,
                                        tied, location);
                    }
                }
            }

            // Вступление в бой

            if (!_isFirst && isonline && ((string.IsNullOrEmpty(Flog) && !string.IsNullOrEmpty(flog)) || (!string.IsNullOrEmpty(Flog) && !string.IsNullOrEmpty(flog) && !Flog.Equals(flog, StringComparison.Ordinal))))
            {
                IsBotLog = false;
                var wc = new WebClient {
                    Proxy = AppVars.LocalProxy
                };
                byte[] bufferLog = null;
                try
                {
                    IdleManager.AddActivity();
                    bufferLog = wc.DownloadData("http://www.neverlands.ru/logs.fcg?fid=" + flog);
                }
                catch (Exception ex)
                {
                    Debug.Print(ex.Message);
                }
                finally
                {
                    wc.Dispose();
                    IdleManager.RemoveActivity();
                }

                // var logs = [[1387615150,6],[[0,"12:39"],"Бой между",[4,1]," и",[1,2,"*Трогвар*",22,1,"c138"]," начался (закрытое боевое нападение) (21.12.2013 12:39:10)."]];
                // var logs = [[1387626458,6],[[0,"15:47"],"Бой между",[4,1]," и",[1,2,"~Shtaket~",18,3,"c167"]," начался (боевое нападение) (21.12.2013 15:47:38)."],[[0,"15:47"],[1,1,"Ruber",22,1,"necr"]," <B>вмешался в бой.</B>"],[[0,"15:49"],[1,1,"_NickName_",22,1,"glow"]," использовал заклинание <img src=http://image.neverlands.ru/signs/darks.gif width=15 height=12 border=0 align=absmiddle> «<B>Темное нападение</B>» и вмешался в бой.</B>"],[[0,"15:49"],[1,2,"~Shtaket~",18,3,"c167"]," получил осложненную травму <font color=#E34242><b>«Множественные повреждения основания свода черепа»</b></font>."],[[0,"15:49"],"<B>Бой закончен по таймауту</B> (",[4,1]," )."],[[0,"15:49"],"<B>Победа за</B>",[4,1],",",[1,1,"_NickName_",22,1,"glow"],",",[1,1,"Ruber",22,1,"necr"],"."]];

                if (bufferLog != null)
                {
                    var fight = Russian.Codepage.GetString(bufferLog);

                    if ((fight.IndexOf("(нападение бота)", StringComparison.OrdinalIgnoreCase) != -1) ||
                        (fight.IndexOf("var logs = [];", StringComparison.OrdinalIgnoreCase) != -1))
                    {
                        IsBotLog = true;
                    }

                    if (!IsBotLog)
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(',');
                        }

                        var fighttype = HelperStrings.SubString(fight, " начался (", ")") ?? "обычное нападение";
                        if (fight.IndexOf("Бой (жертвенный)", StringComparison.OrdinalIgnoreCase) != -1)
                        {
                            fighttype = "жертвенный бой";
                        }


                        var livesg1 = HelperStrings.SubString(fight, "var lives_g1 = [", "];");
                        if (!string.IsNullOrEmpty(livesg1))
                        {
                            var pars  = livesg1.Split(',');
                            var nick1 = (pars.Length > 2) && !livesg1.StartsWith("[4")
                                ? pars[1].Trim(new[] { '"' })
                                : "невидимка";

                            var livesg2 = HelperStrings.SubString(fight, "var lives_g2 = [", "];");
                            if (!string.IsNullOrEmpty(livesg2))
                            {
                                pars = livesg2.Split(',');
                                var nick2 = (pars.Length > 2) && !livesg2.StartsWith("[4")
                                    ? pars[1].Trim(new[] { '"' })
                                    : "невидимка";

                                if (livesg2.IndexOf(Name, StringComparison.Ordinal) == -1)
                                {
                                    // нападает на перса nick2
                                    sb.AppendFormat(
                                        @" <a href=http://www.neverlands.ru/logs.fcg?fid={0} onclick=""window.open(this.href);"">нападает</a> на {1} ({2})",
                                        flog, HtmlPercEntry(nick2), fighttype);
                                }
                                else
                                {
                                    if (nick1.Equals("невидимка", StringComparison.OrdinalIgnoreCase))
                                    {
                                        // на меня напал невидимка
                                        sb.AppendFormat(
                                            @" <a href=http://www.neverlands.ru/logs.fcg?fid={0} onclick=""window.open(this.href);"">атакован</a> невидимкой ({1})",
                                            flog, fighttype);
                                    }
                                    else
                                    {
                                        // на меня напал перс nick1
                                        sb.AppendFormat(
                                            @" <a href=http://www.neverlands.ru/logs.fcg?fid={0} onclick=""window.open(this.href);"">атакован</a> {1} ({2})",
                                            flog, HtmlPercEntry(nick1), fighttype);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            // Получение молчанки

            if (!_isFirst && IsMolch != isMolch)
            {
                if (sb.Length > 0)
                {
                    sb.Append(',');
                }

                sb.AppendFormat(isMolch ? " получает молчанку" : " выходит из молчания");
            }

            // Травмы

            if (!_isFirst && (WoundCounts > 0) && (woundCounts == 0))
            {
                if (sb.Length > 0)
                {
                    sb.Append(',');
                }

                sb.AppendFormat(" излечивается от всех травм");
            }

            // Травмы

            if (!_isFirst && (WoundCounts > 0) && (woundCounts > 0) && (woundCounts < WoundCounts))
            {
                if (sb.Length > 0)
                {
                    sb.Append(',');
                }

                sb.AppendFormat(" излечивается (травм стало: {0})", woundCounts);
            }

            // Травмы

            if (!_isFirst && (woundCounts > WoundCounts))
            {
                if (sb.Length > 0)
                {
                    sb.Append(',');
                }

                if ((woundCounts - WoundCounts) > 1)
                {
                    sb.AppendFormat(" получает несколько травм");
                }
                else
                {
                    string wound = "никакую";
                    if (wounds[3] > Wounds[3])
                    {
                        wound = "боевую";
                    }
                    else
                    {
                        if (wounds[2] > Wounds[2])
                        {
                            wound = "тяжелую";
                        }
                        else
                        {
                            if (wounds[1] > Wounds[1])
                            {
                                wound = "среднюю";
                            }
                            else
                            {
                                if (wounds[0] > Wounds[0])
                                {
                                    wound = "легкую";
                                }
                            }
                        }
                    }

                    sb.AppendFormat(" получает {0} травму (травм стало: {1})", wound, woundCounts);
                }
            }

            // Эффекты

            if (ClassId != 2)
            {
                if (!_isFirst)
                {
                    var sbadd = new StringBuilder();
                    for (var i = 0; i < codeEffects.Count; i++)
                    {
                        if (Array.IndexOf(CodeEffects, codeEffects[i]) < 0)
                        {
                            if (sbadd.Length == 0)
                            {
                                sbadd.Append(" получает");
                            }

                            sbadd.Append(
                                $"&nbsp;<img src=http://image.neverlands.ru/pinfo/eff_{codeEffects[i]}.gif width=15 height=15 align=absmiddle title=\"{nameEffects[i]}\">&nbsp;{nameEffects[i]}");
                        }
                    }

                    if (sbadd.Length > 0)
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(',');
                        }

                        sb.Append(sbadd);
                    }

                    var sbrem = new StringBuilder();
                    for (var i = 0; i < CodeEffects.Length; i++)
                    {
                        if (!codeEffects.Contains(CodeEffects[i]))
                        {
                            if (sbrem.Length == 0)
                            {
                                sbrem.Append(" теряет");
                            }

                            sbrem.Append(
                                $"&nbsp;<img src=http://image.neverlands.ru/pinfo/eff_{CodeEffects[i]}.gif width=15 height=15 align=absmiddle title=\"{NameEffects[i]}\">&nbsp;{NameEffects[i]}");
                        }
                    }

                    if (sbrem.Length > 0)
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(',');
                        }

                        sb.Append(sbrem);
                    }
                }
            }

            NameEffects = nameEffects.ToArray();
            CodeEffects = codeEffects.ToArray();

            IsOnline    = isonline;
            Location    = location;
            Tied        = tied;
            Flog        = flog;
            PSlots      = pslots;
            IsMolch     = isMolch;
            WoundCounts = woundCounts;
            Wounds      = wounds;

            _isFirst = false;
            if (sb.Length > 0)
            {
                _delay = 0;
                var message = messagePrefix + sb;
                if (currentTimeStamp > LastUpdated)
                {
                    LastUpdated = currentTimeStamp;
                    try
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.BeginInvoke(
                                new UpdateChatDelegate(AppVars.MainForm.UpdateChat),
                                new object[] { message });
                        }
                    }
                    catch (InvalidOperationException)
                    {
                    }
                }
            }
            else
            {
                _delay += Dice.Make(1, 1000);
                if (_delay > 10000)
                {
                    _delay = 10000;
                }
            }

            if (!IsOnline)
            {
                if (ClassId != 2)
                {
                    _delay = 60000;
                }
            }

            NextCheck = DateTime.Now.AddMilliseconds(_delay);

            try
            {
                if (AppVars.MainForm != null)
                {
                    AppVars.MainForm.BeginInvoke(
                        new UpdateContactDelegate(AppVars.MainForm.UpdateContact),
                        new object[] { this });
                }
            }
            catch (InvalidOperationException)
            {
            }
        }
Ejemplo n.º 29
0
        internal static string ChatFilter(string message)
        {
            var xpstr = HelperStrings.SubString(message, "Получено <font color=#CC0000>боевого</font> опыта: <b><font color=#CC0000>", "</font></b>.");

            if (!string.IsNullOrEmpty(xpstr))
            {
                long xp;
                if (long.TryParse(xpstr, out xp))
                {
                    try
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.BeginInvoke(
                                new UpdateXPIncDelegate(AppVars.MainForm.UpdateXPInc),
                                new object[] { xp });
                        }
                    }
                    catch (InvalidOperationException)
                    {
                    }
                }
            }

            // <font class=chattime>&nbsp;23:56:08&nbsp;</font>
            // Результат обыска бота: <B>Денежные средства «19 NV», Денежные средства «30 NV»</B>.
            // Результат обыска бота: <B>Вещь «Кинжал Разбойника»</B>.

            //message =
            //    "<font class=chattime>&nbsp;23:56:08&nbsp;</font> <font color=000000><B><font color=#CC0000>Внимание!</font> Системная информация.</B> Результат обыска бота: <B>Денежные средства «19 NV», Денежные средства «30 NV»</B>.</font><br>";

            var thingstr = HelperStrings.SubString(message, "Результат обыска бота: <B>", "</B>.");

            if (!string.IsNullOrEmpty(thingstr))
            {
                var timestr = HelperStrings.SubString(message, "<font class=chattime>&nbsp;", "&nbsp;</font> <font color=000000><B><font color=#CC0000>Внимание!</font> Системная информация.</B> Результат обыска бота: ");
                if (!string.IsNullOrEmpty(timestr))
                {
                    var          thinglist = new List <string>();
                    const string pattern   = @"«([^»]+)»";
                    foreach (Match match in Regex.Matches(thingstr, pattern))
                    {
                        thinglist.Add(match.ToString().Trim(new[] { '«', '»' }));
                    }

                    if (thinglist.Count > 0)
                    {
                        try
                        {
                            if (AppVars.MainForm != null)
                            {
                                AppVars.MainForm.BeginInvoke(
                                    new UpdateThingIncDelegate(AppVars.MainForm.UpdateThingInc),
                                    new object[] { timestr, thinglist });
                            }
                        }
                        catch (InvalidOperationException)
                        {
                        }
                    }
                }
            }

            // <font class=clchattime>&nbsp;16:45:54&nbsp;</font> >>> <SPAN alt="%Josaphina">Josaphina</SPAN>  > clan: > <SPAN alt="%Josaphina">Райская Птица</SPAN>: <font color=CC0099>+</font>

            if (message.IndexOf("<font color=#000000><b>Системная информация.</b></font> Поединок завершён.", StringComparison.OrdinalIgnoreCase) != -1)
            {
                // Конец боя
                if (!string.IsNullOrEmpty(AppVars.LastBoiLog) &&
                    !string.IsNullOrEmpty(AppVars.LastBoiSostav) &&
                    !string.IsNullOrEmpty(AppVars.LastBoiTravm) &&
                    !string.IsNullOrEmpty(AppVars.LastBoiUron))
                {
                    var newLog =
                        "Бой" +
                        AppVars.LastBoiTravm +
                        " против " +
                        AppVars.LastBoiSostav +
                        @" завершен (<a href=http://www.neverlands.ru/logs.fcg?fid=" +
                        AppVars.LastBoiLog +
                        @" onclick=""window.open(this.href);"">лог</a> боя). Нанесено урона: <FONT color=#339900><b>" +
                        AppVars.LastBoiUron +
                        "</b></FONT>";

                    /*@" target=_blank>лог</a> боя). Нанесено урона: <FONT color=#339900><b>" +*/
                    /*@" onclick=""window.open(this.href);"">лог</a> боя). Нанесено урона: <FONT color=#339900><b>" +*/

                    message = message.Replace("Поединок завершён", newLog);
                    var pos = message.IndexOf("Получено <font color=#004BBB>магического", StringComparison.OrdinalIgnoreCase);
                    if (pos != -1)
                    {
                        const string se   = "</font></b>.";
                        var          spos = message.IndexOf(se, pos, StringComparison.OrdinalIgnoreCase);
                        if (spos != -1)
                        {
                            message = message.Remove(pos, spos + se.Length - pos);
                        }
                    }

                    var texlogMessage =
                        "Бой против " +
                        AppVars.LastBoiSostav +
                        @" завершен (" +
                        AppVars.LastBoiLog +
                        @")";
                    try
                    {
                        if (AppVars.MainForm != null)
                        {
                            AppVars.MainForm.BeginInvoke(
                                new UpdateTexLogDelegate(AppVars.MainForm.UpdateTexLog),
                                new object[] { texlogMessage });
                        }
                    }
                    catch (InvalidOperationException)
                    {
                    }

                    AppVars.LastBoiLog    = string.Empty;
                    AppVars.LastBoiSostav = string.Empty;
                }
            }
            else
            {
                /*
                 * message = "<font class=prchattime>&nbsp;11:22:41&nbsp;</font> >>> <SPAN alt=\"%МасКит\">МасКит</SPAN>  > <SPAN alt=\"%Умник\">Умник</SPAN>: <font color=000000>хай</font> ";
                 * message = "<font class=yochattime>&nbsp;10:46:03&nbsp;</font> <SPAN>МасКит</SPAN>&nbsp;для <SPAN alt=\"Умник\">Умник</SPAN>: <font color=000000>я, а что?</font> ";
                 * message = "<font class=clchattime>&nbsp;16:45:54&nbsp;</font> >>> <SPAN alt=\"%Josaphina\">Josaphina</SPAN>  > clan: > <SPAN alt=\"%Умник\">Умник</SPAN>: <font color=CC0099>+</font> ";
                 */

                var posSpanEnd = message.IndexOf(@""">" + AppVars.Profile.UserNick + "</SPAN>", StringComparison.OrdinalIgnoreCase);
                if (posSpanEnd != -1)
                {
                    const string strSpanStart = "<SPAN title=\"";
                    const string strSpanEnd   = "\">";
                    var          fromNick     = HelperStrings.SubString(message, strSpanStart, strSpanEnd).TrimStart(new[] { '%' });
                    if (!fromNick.Equals(AppVars.Profile.UserNick, StringComparison.OrdinalIgnoreCase))
                    {
                        EventSounds.PlaySndMsg();
                        var istoclan = message.IndexOf(" > clan: ", StringComparison.OrdinalIgnoreCase) != -1;
                        var istopair = message.IndexOf(" > pair: ", StringComparison.OrdinalIgnoreCase) != -1;
                        if (AppVars.Profile.DoAutoAnswer)
                        {
                            var answer = "%<" + fromNick + "> " + AutoAnswerMachine.GetNextAnswer();
                            if (istoclan)
                            {
                                answer = answer.Insert(0, "%clan%");
                            }
                            else
                            if (istopair)
                            {
                                answer = answer.Insert(0, "%pair%");
                            }

                            Chat.AddAnswer(answer);
                        }
                    }
                }

                if (AppVars.Profile.DoChatLevels)
                {
                    posSpanEnd = message.IndexOf("</SPAN>", StringComparison.OrdinalIgnoreCase);
                    if (posSpanEnd != -1)
                    {
                        var posSpanTagEnd = message.LastIndexOf('>', posSpanEnd);
                        if (posSpanTagEnd != -1)
                        {
                            var sayNick = message.Substring(posSpanTagEnd + 1, posSpanEnd - posSpanTagEnd - 1);
                            if (ChatUsersManager.Exists(sayNick))
                            {
                                var posSpanTagStart = message.LastIndexOf('<', posSpanTagEnd);
                                if (posSpanTagStart != -1)
                                {
                                    var chatUser = ChatUsersManager.GetUserData(sayNick);
                                    if (!string.IsNullOrEmpty(chatUser.Level))
                                    {
                                        message = message.Insert(posSpanEnd + "</SPAN>".Length,
                                                                 "&nbsp;[" + chatUser.Level +
                                                                 @"]<a href=""http://www.neverlands.ru/pinfo.cgi?" +
                                                                 chatUser.Nick +
                                                                 @""" onclick=""window.open(this.href);""><img src=http://image.neverlands.ru/chat/info.gif width=11 height=12 border=0 align=bottom></a>");
                                    }

                                    var sb = new StringBuilder();
                                    if (!string.IsNullOrEmpty(chatUser.Sign))
                                    {
                                        sb.Append("<img src=http://image.neverlands.ru/signs/");
                                        sb.Append(chatUser.Sign);
                                        sb.Append(@" width=15 height=12 align=bottom title=""");
                                        sb.Append(chatUser.Status);
                                        sb.Append(@""">&nbsp;");
                                    }

                                    message = message.Insert(posSpanTagStart, sb.ToString());
                                }
                            }
                        }
                    }
                }
            }

            // >>> <SPAN alt="%Not Alone">Not Alone</SPAN>  > clan: > <SPAN alt="%Not Alone">Райская Птица</SPAN>:

            if (message.IndexOf("pair:", StringComparison.OrdinalIgnoreCase) != -1)
            {
                message = message.Replace("<SPAN title=\"%", "<SPAN title=\"%%%");
            }
            else
            {
                if (message.IndexOf("clan:", StringComparison.OrdinalIgnoreCase) != -1)
                {
                    message = message.Replace("<SPAN title=\"%", "<SPAN title=\"%%");
                }
            }

            do
            {
                var pos1 = message.IndexOf("[[[", StringComparison.Ordinal);
                if (pos1 == -1)
                {
                    break;
                }

                var pos2 = message.IndexOf("]]]", pos1, StringComparison.Ordinal);
                if (pos2 == -1)
                {
                    break;
                }

                var    sorig = message.Substring(pos1 + 3, pos2 - pos1 - 3);
                string msg   = string.Empty;
                if (!sorig.Contains(":"))
                {
                    msg =
                        $"<a href=http://www.neverlands.ru/logs.fcg?fid={sorig} onclick=\"window.open(this.href);\">лог</a> боя";
                }

                message = string.Concat(message.Substring(0, pos1), msg, message.Substring(pos2 + 3));
            } while (true);

            Chat.AddStringToChat(message);
            return(message);
        }
Ejemplo n.º 30
0
        private static string HtmlPercEntry(string nick)
        {
            var html = NeverInfo.GetPInfo(nick);

            if (string.IsNullOrEmpty(html))
            {
                return("Аноним");
            }

            var params0 = HelperStrings.SubString(html, "var params = [[", "],");

            if (string.IsNullOrEmpty(params0))
            {
                return("Аноним");
            }

            var hpmp = HelperStrings.SubString(html, "var hpmp = [", "]");

            if (string.IsNullOrEmpty(hpmp))
            {
                return("Аноним");
            }

            var spar1 = HelperStrings.ParseArguments(hpmp);

            if (spar1.Length < 5)
            {
                return("Аноним");
            }

            var spar0 = HelperStrings.ParseArguments(params0);

            if (spar0.Length < 9)
            {
                return("Аноним");
            }

            nick = spar0[0].Trim();
            var nnhtmlSec = nick;
            {
                nnhtmlSec = nnhtmlSec.Replace("+", "%2B");
            }

            var colorNick = nick;

            switch (ContactsManager.GetClassIdOfContact(nick))
            {
            case -1:
            case 0:
                colorNick = @"<font color=""#000000"">" + colorNick + "</font>";
                break;

            case 1:
                colorNick = @"<font color=""#8A0808"">" + colorNick + "</font>";
                break;

            case 2:
                colorNick = @"<font color=""#0B610B"">" + colorNick + "</font>";
                break;
            }

            var align = spar0[1];
            var sign  = spar0[2];
            var level = spar0[3];
            var clan  = spar0[8];

            // var effects = [[1,'Боевая травма (x9) (еще 23:06:17)'],[2,'Тяжелая травма (x2) (еще 07:01:22)'],[17,'Молчанка (еще 00:00:05)']];
            var effects = HelperStrings.SubString(html, "var effects = [", "];");
            var sbeff   = new StringBuilder();

            if (!string.IsNullOrEmpty(effects))
            {
                var seffects = effects.Split(new[] { "],[" }, StringSplitOptions.RemoveEmptyEntries);
                for (var k = 0; k < seffects.Length; k++)
                {
                    var effk  = seffects[k].Trim(new[] { '[', ']' });
                    var seffk = effk.Split(',');
                    if (seffk.Length <= 1)
                    {
                        continue;
                    }

                    var effcode = seffk[0];
                    var effname = seffk[1].Replace("<b>", string.Empty).Replace("</b>", string.Empty);
                    sbeff.AppendFormat(
                        @"&nbsp;<img src=http://image.neverlands.ru/pinfo/eff_{0}.gif width=15 height=15 align=absmiddle title=""{1}"">",
                        effcode,
                        effname);
                }
            }

            var sleeps = string.Empty /*sbeff.ToString()*/;
            var ali1   = string.Empty;
            var ali2   = string.Empty;

            switch (align)
            {
            case "0":
                ali1 = string.Empty;
                ali2 = string.Empty;
                break;

            case "1":
                ali1 = "darks.gif";
                ali2 = "Дети Тьмы";
                break;

            case "2":
                ali1 = "lights.gif";
                ali2 = "Дети Света";
                break;

            case "3":
                ali1 = "sumers.gif";
                ali2 = "Дети Сумерек";
                break;

            case "4":
                ali1 = "chaoss.gif";
                ali2 = "Дети Хаоса";
                break;

            case "5":
                ali1 = "light.gif";
                ali2 = "Истинный Свет";
                break;

            case "6":
                ali1 = "dark.gif";
                ali2 = "Истинная Тьма";
                break;

            case "7":
                ali1 = "sumer.gif";
                ali2 = "Нейтральные Сумерки";
                break;

            case "8":
                ali1 = "chaos.gif";
                ali2 = "Абсолютный Хаос";
                break;

            case "9":
                ali1 = "angel.gif";
                ali2 = "Ангел";
                break;
            }

            align = string.IsNullOrEmpty(ali1)?
                    string.Empty :
                    "<img src=http://image.neverlands.ru/signs/" +
                    ali1 +
                    @" width=15 height=12 align=absmiddle border=0 title=""" +
                    ali2 +
                    @""">&nbsp";

            var ss = string.Empty;

            if (!string.IsNullOrEmpty(clan))
            {
                ss =
                    "<img src=http://image.neverlands.ru/signs/" +
                    sign +
                    @" width=15 height=12 align=absmiddle title=""" +
                    clan +
                    @""">&nbsp;";
            }

            var result =
                @"<a href=""#"" onclick=""top.say_private('" +
                nick +
                @"');""><img src=http://image.neverlands.ru/chat/private.gif width=11 height=12 border=0 align=absmiddle></a>&nbsp;" +
                align +
                ss +
                @"<a class=""activenick"" href=""#"" onclick=""top.say_to('" + nick + @"');""><font class=nickname><b>" +
                colorNick +
                "</b></a>[" +
                level +
                @"]</font><a href=""http://www.neverlands.ru/pinfo.cgi?" +
                nnhtmlSec +
                @""" onclick=""window.open(this.href);""><img src=http://image.neverlands.ru/chat/info.gif width=11 height=12 border=0 align=absmiddle></a>" +
                sleeps;

            return(result);
        }