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); }
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); }
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(", ")\" "); }
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()); }
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); }
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()); }
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); }
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)); }
/* * * <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)); }
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); }
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); }
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, @" Уровень: <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, @" Цена: <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)); }
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); }
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> Деньги:</td><td width=100% bgcolor=#fafafa nowrap><font class=nickname><b id="user_nv"> 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> Деньги:</td><td width=100% bgcolor=#fafafa nowrap><font class=nickname><b id="user_nv"> 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"> 5.00 DNV</td></tr> double nv; var nvStr = HelperStrings.SubString(html, "<b id=\"user_nv\"> ", " 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\"> ", " 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); }
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) { } } } } }
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) { } } }
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); }
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(); } }
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); } }
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(); } } }
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( @" <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 + @"""> "; } 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 + @"""> "; } 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) { } }
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; } } }
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; } }
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); }
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; }
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(": <b>"); s2.Append(": "); sbr.Append(AppVars.Profile.FishUm); sbr.Append("</b>"); s2.Append(AppVars.Profile.FishUm); if (fishUmUp) { sbr.Append(" (<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(": <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(" (до заброса):</td><td bgcolor=#FAFAFA nowrap class=nickname><b> "); * s2.Append(" (до заброса): "); * sbr.Append(AppVars.AutoFishHand2D); * s2.Append(AppVars.AutoFishHand2D); * bal -= 2.5; * sbr.Append(" </b></td></tr>"); * s2.AppendLine(); * } */ if (!string.IsNullOrEmpty(AppVars.AutoFishMassa) && ((numFish > 0) || (catchFish > 0))) { sbr.Append("<br>"); sbr.Append("Масса"); s2.Append("Масса"); sbr.Append(": <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> (<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> (<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> (остаток): <b>"); s2.Append(" (остаток): "); var cur = AppVars.ValPri - catchFish; sbr.Append(cur); s2.Append(cur); if (catchFish > 0) { sbr.Append("</b> (<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> 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> 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("Потери за рыбалку"); s2.Append("Потери за рыбалку"); } else { sbr.Append("Доход за рыбалку"); s2.Append("Доход за рыбалку"); } sbr.Append(": "); 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> 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> 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()); }
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); } }
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( @" <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(" «"); sbp.Append(oname); } else { sbp.Append("одевает"); sbp.Append(" «"); sbp.Append(nname); } sbp.Append("»"); 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}→<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( $" <img src=http://image.neverlands.ru/pinfo/eff_{codeEffects[i]}.gif width=15 height=15 align=absmiddle title=\"{nameEffects[i]}\"> {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( $" <img src=http://image.neverlands.ru/pinfo/eff_{CodeEffects[i]}.gif width=15 height=15 align=absmiddle title=\"{NameEffects[i]}\"> {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) { } }
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> 23:56:08 </font> // Результат обыска бота: <B>Денежные средства «19 NV», Денежные средства «30 NV»</B>. // Результат обыска бота: <B>Вещь «Кинжал Разбойника»</B>. //message = // "<font class=chattime> 23:56:08 </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> ", " </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> 16:45:54 </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> 11:22:41 </font> >>> <SPAN alt=\"%МасКит\">МасКит</SPAN> > <SPAN alt=\"%Умник\">Умник</SPAN>: <font color=000000>хай</font> "; * message = "<font class=yochattime> 10:46:03 </font> <SPAN>МасКит</SPAN> для <SPAN alt=\"Умник\">Умник</SPAN>: <font color=000000>я, а что?</font> "; * message = "<font class=clchattime> 16:45:54 </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, " [" + 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(@"""> "); } 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); }
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( @" <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 + @"""> "; 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 + @"""> "; } 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> " + 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); }