コード例 #1
0
ファイル: HtmlTable.cs プロジェクト: lsahi/Daylily
        public HtmlTable(string htmlStr)
        {
            _htmlStr = htmlStr.Replace("\r", "").Replace("\n", "");
            StringFinder sf = new StringFinder(_htmlStr);

            if (sf.FindNext("<thead") != -1)
            {
                TableHead = new TableHead();
                sf.FindNext("</thead>", false);
                string ori = sf.Cut();
                SetRows(TableHead, ori, "tr");
            }

            if (sf.FindNext("<tbody") != -1)
            {
                TableBody = new TableBody();
                sf.FindNext("</tbody>");
                string ori = sf.Cut();
                SetRows(TableBody, ori, "tr");
            }

            if (sf.FindNext("<tfoot") != -1)
            {
                TableFoot = new TableFoot();
                sf.FindNext("</tfoot>");
                string ori = sf.Cut();
                SetRows(TableFoot, ori, "tr");
            }
        }
コード例 #2
0
        private static void CCKillAll(ConCommandArgs args)
        {
            TeamIndex team;

            if (args.Count == 0)
            {
                team = TeamIndex.Monster;
            }
            else
            {
                team = StringFinder.GetEnumFromPartial <TeamIndex>(args[0]);
            }

            int count = 0;

            foreach (CharacterMaster cm in UnityEngine.Object.FindObjectsOfType <CharacterMaster>())
            {
                if (cm.teamIndex == team)
                {
                    CharacterBody cb = cm.GetBody();
                    if (cb)
                    {
                        if (cb.healthComponent)
                        {
                            cb.healthComponent.Suicide(null);
                            count++;
                        }
                    }
                }
            }
            Log.MessageNetworked("Killed " + count + " of team " + team + ".", args);
        }
コード例 #3
0
ファイル: HtmlTable.cs プロジェクト: lsahi/Daylily
        private static string TrimHtml(string ok, string mark)
        {
            StringFinder sf = new StringFinder(ok);

            sf.FindNext($"<{mark}");
            sf.FindNext(">", false);
            sf.FindNext($"</{mark}>");
            return(sf.Cut());
        }
コード例 #4
0
ファイル: StringFinderTests.cs プロジェクト: feelworld/reko
        public void StrFind_TooShort()
        {
            Given_Image(0x23, 0);
            mr.ReplayAll();

            var sf = new StringFinder(program);

            Assert.AreEqual(0, sf.FindStrings(StringType.NullTerminated(PrimitiveType.Char), 5).Count());
        }
コード例 #5
0
ファイル: StringFinderTests.cs プロジェクト: feelworld/reko
        public void StrFind_SingleMatch()
        {
            Given_Image(0x41, 0);
            mr.ReplayAll();

            var sf   = new StringFinder(program);
            var hits = sf.FindStrings(StringType.NullTerminated(PrimitiveType.Char), 1).ToArray();

            Assert.AreEqual(1, hits.Length);
            Assert.AreEqual(Address.Ptr32(0x00400000), hits[0].Address);
        }
コード例 #6
0
        private static void CCNextBoss(ConCommandArgs args)
        {
            //Log.MessageNetworked("This feature is currently not working. We'll hopefully provide an update to this soon.", args);
            //return;
            Log.MessageNetworked(Lang.PARTIALIMPLEMENTATION_WARNING, args, LogLevel.MessageClientOnly);
            if (args.Count == 0)
            {
                Log.MessageNetworked(Lang.NEXTBOSS_ARGS, args);
            }
            StringBuilder s = new StringBuilder();

            if (args.Count >= 1)
            {
                try
                {
                    nextBoss = StringFinder.Instance.GetDirectorCardFromPartial(args[0]);
                    s.AppendLine($"Next boss is: {nextBoss.spawnCard.name}. ");
                    if (args.Count >= 2)
                    {
                        if (!int.TryParse(args[1], out nextBossCount))
                        {
                            Log.MessageNetworked(Lang.COUNTISNUMERIC, args, LogLevel.MessageClientOnly);
                            nextBossCount = 1;
                        }
                        else
                        {
                            if (nextBossCount > 6)
                            {
                                nextBossCount = 6;
                            }
                            else if (nextBossCount <= 0)
                            {
                                nextBossCount = 1;
                            }
                            s.Append($"Count:  {nextBossCount}. ");
                            if (args.Count >= 3)
                            {
                                nextBossElite = StringFinder.GetEnumFromPartial <EliteIndex>(args[2]);
                                s.Append("Elite: " + nextBossElite.ToString());
                            }
                        }
                    }
                    On.RoR2.CombatDirector.SetNextSpawnAsBoss += Hooks.CombatDirector_SetNextSpawnAsBoss;
                    Log.MessageNetworked(s.ToString(), args);
                }
                catch (Exception ex)
                {
                    Log.MessageNetworked(Lang.OBJECT_NOTFOUND + args[0], args, LogLevel.ErrorClientOnly);
                    Log.MessageNetworked(ex.ToString(), args, LogLevel.ErrorClientOnly);
                }
            }
        }
コード例 #7
0
        public void StrFind_TooShort()
        {
            Given_Image(0x23, 0);

            var sf = new StringFinder(program);

            Assert.AreEqual(0, sf.FindStrings(new StringFinderCriteria
            {
                StringType    = StringType.NullTerminated(PrimitiveType.Char),
                MinimumLength = 5,
                CreateReader  = (m, a, b) => new LeImageReader(m, a, b)
            }).Count());
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: VampireVol/.Net-Challenge
        static void Main(string[] args)
        {
            string       path = "E:\\watch";
            StringFinder find = new StringFinder();

            find.Found += FinderPrint;
            Console.Write($"Введите строку для поиска (в {path}): ");
            string line = Console.ReadLine();

            Console.WriteLine($"Поиск {line} в {path}");
            find.Start(path, line);
            Console.ReadLine();
        }
コード例 #9
0
ファイル: HtmlTable.cs プロジェクト: lsahi/Daylily
        private void SetRows(TableElement tableElement, string ori, string key)
        {
            StringFinder sf = new StringFinder(ori);

            while (sf.FindNext($"<{key}") != -1)
            {
                sf.FindNext($"</{key}>", false);
                string oriRow = sf.Cut();

                var list = GetColList(oriRow, "th", "td");

                tableElement.Rows.AddRow(list);
            }
        }
コード例 #10
0
        private static void CCListBody(ConCommandArgs _)
        {
            string        langInvar;
            int           i  = 0;
            StringBuilder sb = new StringBuilder();

            foreach (var body in BodyCatalog.allBodyPrefabBodyBodyComponents)
            {
                langInvar = StringFinder.GetLangInvar(body.baseNameToken);
                sb.AppendLine($"[{i}]{body.name}={langInvar}");
                i++;
            }
            Log.Message(sb);
        }
コード例 #11
0
        private static void CCListAI(ConCommandArgs _)
        {
            string        langInvar;
            int           i  = 0;
            StringBuilder sb = new StringBuilder();

            foreach (var master in MasterCatalog.allAiMasters)
            {
                langInvar = StringFinder.GetLangInvar(master.bodyPrefab.GetComponent <CharacterBody>().baseNameToken);
                sb.AppendLine($"[{i}]{master.name}={langInvar}");
                i++;
            }
            Log.Message(sb);
        }
コード例 #12
0
        public void StrFind_SingleMatch()
        {
            Given_Image(0x41, 0);

            var sf   = new StringFinder(program);
            var hits = sf.FindStrings(new StringFinderCriteria
            {
                StringType    = StringType.NullTerminated(PrimitiveType.Char),
                MinimumLength = 1,
                CreateReader  = (m, a, b) => new LeImageReader(m, a, b)
            }).ToArray();

            Assert.AreEqual(1, hits.Length);
            Assert.AreEqual(Address.Ptr32(0x00400000), hits[0].Address);
        }
コード例 #13
0
        public void StrFind_FindUtf16Le()
        {
            Given_Image(Encoding.GetEncoding("utf-16le").GetBytes("\0\0Hello\0"));

            var sf   = new StringFinder(program);
            var hits = sf.FindStrings(new StringFinderCriteria
            {
                StringType    = StringType.NullTerminated(PrimitiveType.UInt16),
                MinimumLength = 3,
                CreateReader  = (m, a, b) => new LeImageReader(m, a, b)
            }).ToArray();

            Assert.AreEqual(1, hits.Length);
            Assert.AreEqual(Address.Ptr32(0x00400004), hits[0].Address);
            Assert.AreEqual(10, hits[0].Length);
        }
コード例 #14
0
        /// <summary>
        /// 将消息中出现的图片类型CQ码转换为可读形式。
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        private static string DecodeBFaceToText(string source)
        {
            StringBuilder sb   = new StringBuilder(source);
            StringFinder  sf   = new StringFinder(source);
            const string  str1 = "[CQ:bface,";

            while (sf.FindNext(str1) != -1)
            {
                sf.FindNext("]", false);
                sb.Remove(sf.StartIndex, sf.Length);
                sb.Insert(sf.StartIndex, "[大表情]");
                sf = new StringFinder(sb.ToString());
            }

            return(sb.ToString());
        }
コード例 #15
0
        /// <summary>
        /// 将消息中出现的图片类型CQ码转换为可读形式。
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        private static string DecodeAtToText(string source)
        {
            StringBuilder sb   = new StringBuilder(source);
            StringFinder  sf   = new StringFinder(source);
            const string  str1 = "[CQ:at,";

            while (sf.FindNext(str1) != -1)
            {
                sf.FindNext("]", false);
                string qq = GetAt(sf.Cut())[0];
                sb.Remove(sf.StartIndex, sf.Length);
                sb.Insert(sf.StartIndex, $"@{qq} ");
                sf = new StringFinder(sb.ToString());
            }

            return(sb.ToString());
        }
コード例 #16
0
        private static void CCChangeTeam(ConCommandArgs args)
        {
            if (args.Count == 0)
            {
                Log.MessageNetworked(Lang.CHANGETEAM_ARGS, args, LogLevel.MessageClientOnly);
                return;
            }
            if (args.sender == null && args.Count < 2)
            {
                Log.Message(Lang.DS_REQUIREFULLQUALIFY, LogLevel.Error);
                return;
            }

            CharacterMaster master = args.sender?.master;

            if (args.Count > 1)
            {
                NetworkUser player = Util.GetNetUserFromString(args.userArgs, 1);
                if (player != null)
                {
                    master = player.master;
                }
                else
                {
                    Log.MessageNetworked(Lang.PLAYER_NOTFOUND, args, LogLevel.MessageClientOnly);
                    return;
                }
            }

            if (Enum.TryParse(StringFinder.GetEnumFromPartial <TeamIndex>(args[0]).ToString(), true, out TeamIndex teamIndex))
            {
                if ((int)teamIndex >= (int)TeamIndex.None && (int)teamIndex < (int)TeamIndex.Count)
                {
                    if (master.GetBody())
                    {
                        master.GetBody().teamComponent.teamIndex = teamIndex;
                        master.teamIndex = teamIndex;
                        Log.MessageNetworked("Changed to team " + teamIndex, args);
                        return;
                    }
                }
            }
            //Note the `return` on succesful evaluation.
            Log.MessageNetworked("Invalid team. Please use 0,'neutral',1,'player',2, or 'monster'", args, LogLevel.MessageClientOnly);
        }
コード例 #17
0
ファイル: HtmlTable.cs プロジェクト: lsahi/Daylily
        private static IEnumerable <string> GetColList(string ori, params string[] mark)
        {
            List <string> param = new List <string>();

            foreach (var item in mark)
            {
                StringFinder sf = new StringFinder(ori);
                while (sf.FindNext($"<{item}") != -1)
                {
                    sf.FindNext($"</{item}>", false);
                    string ok     = sf.Cut();
                    string trimed = TrimHtml(ok, item);
                    param.Add(trimed);
                }
            }

            return(param);
        }
コード例 #18
0
ファイル: Program.cs プロジェクト: pmaner/metaheuristics-1
        public static void Main(string[] args)
        {
            // If you have to remember *one* thing from this tutorial, it is the three essential players
            // 1- the tunable parameters of the optimisation problem:
            //    ISystemConfiguration, here implemented by StringSpecification for this 'Hello World' problem
            // 2- the object evaluating the score(s) for a given "system configuration" (IObjectiveEvaluator<T>)
            // 3- the optimisation algorithm, implementing IEvolutionEngine<T>
            // It is recommended that you declare variables typed as interfaces, not concrete classes,
            // whenever possible including in an 'Hello World'...
            IObjectiveEvaluator <StringSpecification> evaluator;
            IEvolutionEngine <StringSpecification>    finder;

            string strToFind = args.Length == 0 ? "Hello, World!" : args[0];

            evaluator = buildEvaluator(strToFind);
            finder    = new StringFinder(evaluator, strToFind.Length, new BasicRngFactory(0));
            var result = finder.Evolve();

            Console.WriteLine(MetaheuristicsHelper.GetHumanReadable(result));
        }
コード例 #19
0
ファイル: CabbageCommon.cs プロジェクト: fengyeju/Daylily
        public static void Query()
        {
            while (MessageQueue.Count != 0)
            {
                if (!MessageQueue.TryDequeue(out var routeMsg))
                    continue;
                var cmd = routeMsg.CommandName;

                const long cabbageId = 1335734629;
                string uname;
                if (cmd == "statme" || cmd == "bpme" || cmd == "mybp" || cmd == "costme" || cmd == "mycost")
                {
                    BllUserRole bllUserRole = new BllUserRole();
                    List<TableUserRole> userInfo = bllUserRole.GetUserRoleByQq(long.Parse(routeMsg.UserId));
                    if (userInfo.Count == 0)
                        DaylilyCore.Current.MessageDispatcher?.SendMessageAsync(routeMsg.ToSource(DefaultReply.IdNotBound, true));

                    uname = userInfo[0].CurrentUname;
                }
                else
                    uname = routeMsg.ArgString;

                using (Session session = new Session(25000, new CoolQIdentity(cabbageId, MessageType.Private), cabbageId))
                {
                    DaylilyCore.Current.MessageDispatcher?.SendMessageAsync(
                        new CoolQRouteMessage($"!{cmd.Replace("my", "").Replace("me", "")} {uname}",
                            new CoolQIdentity(cabbageId, MessageType.Private)));
                    try
                    {
                        CoolQRouteMessage result = (CoolQRouteMessage)session.GetMessage();
                        session.Timeout = 600;
                        CoolQRouteMessage result2 = null;
                        try
                        {
                            result2 = (CoolQRouteMessage)session.GetMessage();
                        }
                        catch
                        {
                            // ignored
                        }

                        ImageInfo[] imgList =
                            CoolQCode.GetImageInfo(result.RawMessage) ?? CoolQCode.GetImageInfo(result2?.RawMessage);

                        if (imgList == null)
                        {
                            DaylilyCore.Current.MessageDispatcher?.SendMessageAsync(routeMsg.ToSource(result.RawMessage));
                            if (result2 != null)
                                DaylilyCore.Current.MessageDispatcher?.SendMessageAsync(routeMsg.ToSource(result2.RawMessage));
                            continue;
                        }
                        //throw new IndexOutOfRangeException("查询失败:" + result.Message);
                        var message = CoolQCode.DecodeToString(result.RawMessage);
                        foreach (var item in imgList)
                        {
                            var str = new FileImage(new Uri(item.Url));
                            StringFinder sf = new StringFinder(message);
                            sf.FindNext("[图片]");
                            string str1 = sf.Cut();
                            if (sf.FindNext("[图片]", false) > message.Length - 1)
                            {
                                message = str1 + str;
                                continue;
                            }

                            sf.FindToLast();
                            string str2 = sf.Cut();
                            message = str1 + str + str2;
                        }

                        DaylilyCore.Current.MessageDispatcher?.SendMessageAsync(
                            routeMsg.ToSource(message + "\r\n(查询由白菜支持)"));
                    }
                    catch (IndexOutOfRangeException e)
                    {
                        string msg = e.Message;
                        DaylilyCore.Current.MessageDispatcher?.SendMessageAsync(routeMsg.ToSource(msg, true));
                    }
                    catch (TimeoutException)
                    {
                        string msg = "查询失败,白菜没有搭理人家..";
                        DaylilyCore.Current.MessageDispatcher?.SendMessageAsync(routeMsg.ToSource(msg, true));
                    }
                    catch (Exception ex)
                    {
                        string msg = "查询失败,未知错误。";
                        Logger.Exception(ex);
                        DaylilyCore.Current.MessageDispatcher?.SendMessageAsync(routeMsg.ToSource(msg, true));
                    } // catch
                } // using
            } // while
        }
コード例 #20
0
        public override CommonMessageResponse Message_Received(CommonMessage messageObj)
        {
            string userName, userId;

            if (OsuId == null)
            {
                BllUserRole        bllUserRole = new BllUserRole();
                List <TblUserRole> userInfo    = bllUserRole.GetUserRoleByQq(long.Parse(messageObj.UserId));
                if (userInfo.Count == 0)
                {
                    return(new CommonMessageResponse(LoliReply.IdNotBound, messageObj, true));
                }
                userId   = userInfo[0].UserId.ToString();
                userName = userInfo[0].CurrentUname;
            }
            else
            {
                int userNum = OldSiteApi.GetUser(OsuId, out var userObj);
                if (userNum == 0)
                {
                    return(new CommonMessageResponse(LoliReply.IdNotFound, messageObj, true));
                }
                if (userNum > 1)
                {
                    // ignored
                }

                userId   = userObj.user_id;
                userName = userObj.username;
            }

            var jsonString = HttpClientUtil.HttpGet("https://syrin.me/pp+/u/" + userId);

            if (jsonString == null)
            {
                return(new CommonMessageResponse("PP+获取超时,请重试…", messageObj, true));
            }

            StringFinder sf = new StringFinder(jsonString);

            sf.FindNext("<div class=\"performance-table\">", false);
            sf.FindNext("</div>");

            string    innerText = sf.Cut().Trim('\n').Trim('\r');
            HtmlTable htmlTable = new HtmlTable(innerText);

            string[,] array = htmlTable.GetArray();

            Dictionary <string, int> dValue = new Dictionary <string, int>();

            for (var i = 0; i < array.GetLength(0); i++)
            {
                for (var j = 0; j < array.GetLength(1); j += 2)
                {
                    string key   = array[i, j].Trim(':').Replace("Aim (", "").Replace(")", "");
                    int    value = int.Parse(array[i, j + 1].Replace(",", "").Trim('p'));
                    dValue.Add(key, value);
                }
            }

            var cqImg = new FileImage(Draw(userName, dValue)).ToString();

            return(new CommonMessageResponse(cqImg, messageObj));
        }
コード例 #21
0
        private static void CCSpawnAI(ConCommandArgs args)
        {
            //- Spawns the specified CharacterMaster. Requires 1 argument: spawn_ai 0:{localised_objectname} 1:[Count:1] 2:[EliteIndex:-1/None] 3:[Braindead:0/false(0|1)] 4:[TeamIndex:0/Neutral]

            if (args.sender == null)
            {
                Log.Message(Lang.DS_NOTYETIMPLEMENTED, LogLevel.Error);
                return;
            }
            if (args.Count == 0)
            {
                Log.MessageNetworked(Lang.SPAWNAI_ARGS, args, LogLevel.MessageClientOnly);
                return;
            }

            string character = StringFinder.Instance.GetMasterName(args[0]);

            if (character == null)
            {
                Log.MessageNetworked(Lang.SPAWN_ERROR + character, args, LogLevel.MessageClientOnly);
                return;
            }
            var masterprefab = MasterCatalog.FindMasterPrefab(character);
            var body         = masterprefab.GetComponent <CharacterMaster>().bodyPrefab;

            int amount = 1;

            if (args.Count > 1)
            {
                if (int.TryParse(args[1], out amount) == false)
                {
                    Log.MessageNetworked(Lang.SPAWNAI_ARGS, args, LogLevel.MessageClientOnly);
                    return;
                }
            }
            Vector3 location = args.sender.master.GetBody().transform.position;

            Log.MessageNetworked(string.Format(Lang.SPAWN_ATTEMPT_2, amount, character), args);
            for (int i = 0; i < amount; i++)
            {
                var             bodyGameObject = UnityEngine.Object.Instantiate <GameObject>(masterprefab, location, Quaternion.identity);
                CharacterMaster master         = bodyGameObject.GetComponent <CharacterMaster>();
                NetworkServer.Spawn(bodyGameObject);
                master.SpawnBody(body, args.sender.master.GetBody().transform.position, Quaternion.identity);

                if (args.Count > 2)
                {
                    var eliteIndex = StringFinder.GetEnumFromPartial <EliteIndex>(args[2]);
                    if (eliteIndex != EliteIndex.None)
                    {
                        master.inventory.SetEquipmentIndex(EliteCatalog.GetEliteDef(eliteIndex).eliteEquipmentIndex);
                        master.inventory.GiveItem(ItemIndex.BoostHp, Mathf.RoundToInt((GetTierDef(eliteIndex).healthBoostCoefficient - 1) * 10));
                        master.inventory.GiveItem(ItemIndex.BoostDamage, Mathf.RoundToInt((GetTierDef(eliteIndex).damageBoostCoefficient - 1) * 10));
                    }
                }

                if (args.Count > 3 && Util.TryParseBool(args[3], out bool braindead) && braindead)
                {
                    UnityEngine.Object.Destroy(master.GetComponent <BaseAI>());
                }

                TeamIndex teamIndex = TeamIndex.Monster;
                if (args.Count > 4)
                {
                    StringFinder.TryGetEnumFromPartial(args[4], out teamIndex);
                }

                if (teamIndex >= TeamIndex.None && teamIndex < TeamIndex.Count)
                {
                    master.teamIndex = teamIndex;
                    master.GetBody().teamComponent.teamIndex = teamIndex;
                }
            }
        }
コード例 #22
0
ファイル: CabbageCommon.cs プロジェクト: Gtsz/Daylily
        public static void Query()
        {
            while (MessageQueue.Count != 0)
            {
                if (!MessageQueue.TryDequeue(out var messageObj))
                {
                    continue;
                }
                var cmd = messageObj.Command;

                const long cabbageId = 1020640876;
                string     uname;
                if (cmd == "statme" || cmd == "bpme" || cmd == "mybp" || cmd == "costme" || cmd == "mycost")
                {
                    BllUserRole        bllUserRole = new BllUserRole();
                    List <TblUserRole> userInfo    = bllUserRole.GetUserRoleByQq(long.Parse(messageObj.UserId));
                    if (userInfo.Count == 0)
                    {
                        CoolQDispatcher.SendMessage(new CommonMessageResponse(LoliReply.IdNotBound, messageObj, true));
                    }

                    uname = userInfo[0].CurrentUname;
                }
                else
                {
                    uname = messageObj.ArgString;
                }

                using (Session session = new Session(25000, new Identity(cabbageId, MessageType.Private), cabbageId))
                {
                    CoolQDispatcher.SendMessage(
                        new CommonMessageResponse($"!{cmd.Replace("my", "").Replace("me", "")} {uname}",
                                                  new Identity(cabbageId, MessageType.Private)));
                    try
                    {
                        CommonMessage result = session.GetMessage();
                        session.Timeout = 600;
                        CommonMessage result2 = null;
                        try
                        {
                            result2 = session.GetMessage();
                        }
                        catch
                        {
                            // ignored
                        }

                        ImageInfo[] imgList =
                            CqCode.GetImageInfo(result.Message) ?? CqCode.GetImageInfo(result2?.Message);

                        if (imgList == null)
                        {
                            CoolQDispatcher.SendMessage(new CommonMessageResponse(result.Message, messageObj));
                            if (result2 != null)
                            {
                                CoolQDispatcher.SendMessage(new CommonMessageResponse(result2.Message, messageObj));
                            }
                            continue;
                        }
                        //throw new IndexOutOfRangeException("查询失败:" + result.Message);
                        var message = CqCode.DecodeToString(result.Message);
                        foreach (var item in imgList)
                        {
                            var          str = new FileImage(new Uri(item.Url));
                            StringFinder sf  = new StringFinder(message);
                            sf.FindNext("[图片]");
                            string str1 = sf.Cut();
                            if (sf.FindNext("[图片]", false) > message.Length - 1)
                            {
                                message = str1 + str;
                                continue;
                            }

                            sf.FindToLast();
                            string str2 = sf.Cut();
                            message = str1 + str + str2;
                        }

                        CoolQDispatcher.SendMessage(
                            new CommonMessageResponse(message + "\r\n(查询由白菜支持)", messageObj));
                    }
                    catch (IndexOutOfRangeException e)
                    {
                        string msg = e.Message;
                        CoolQDispatcher.SendMessage(new CommonMessageResponse(msg, messageObj, true));
                    }
                    catch (TimeoutException)
                    {
                        string msg = "查询失败,白菜没有搭理人家..";
                        CoolQDispatcher.SendMessage(new CommonMessageResponse(msg, messageObj, true));
                    }
                    catch (Exception ex)
                    {
                        string msg = "查询失败,未知错误。";
                        Logger.Exception(ex);
                        CoolQDispatcher.SendMessage(new CommonMessageResponse(msg, messageObj, true));
                    } // catch
                }     // using
            }         // while
        }             //void
コード例 #23
0
ファイル: PpPlus.cs プロジェクト: fengyeju/Daylily
        public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope)
        {
            var              routeMsg = scope.RouteMessage;
            string           userName, userId;
            OldSiteApiClient client = new OldSiteApiClient();

            if (UserName == null)
            {
                BllUserRole          bllUserRole = new BllUserRole();
                List <TableUserRole> userInfo    = bllUserRole.GetUserRoleByQq(long.Parse(routeMsg.UserId));
                if (userInfo.Count == 0)
                {
                    return(routeMsg.ToSource(DefaultReply.IdNotBound, true));
                }
                userId   = userInfo[0].UserId.ToString();
                userName = userInfo[0].CurrentUname;
            }
            else
            {
                int userNum = client.GetUser(UserComponent.FromUserName(UserName), out var userObj);
                if (userNum == 0)
                {
                    return(routeMsg.ToSource(DefaultReply.IdNotFound, true));
                }
                if (userNum > 1)
                {
                    // ignored
                }

                userId   = userObj.UserId.ToString();
                userName = userObj.UserName;
            }

            var jsonString = HttpClient.HttpGet("https://syrin.me/pp+/u/" + userId);

            if (jsonString == null)
            {
                return(routeMsg
                       .ToSource("PP+获取超时,请重试…", true)
                       .ForceToSend());
            }

            StringFinder sf = new StringFinder(jsonString);

            sf.FindNext("<div class=\"performance-table\">", false);
            sf.FindNext("</div>");

            string    innerText = sf.Cut().Trim('\n').Trim('\r');
            HtmlTable htmlTable = new HtmlTable(innerText);

            string[,] array = htmlTable.GetArray();

            Dictionary <string, int> dValue = new Dictionary <string, int>();

            for (var i = 0; i < array.GetLength(0); i++)
            {
                for (var j = 0; j < array.GetLength(1); j += 2)
                {
                    string key   = array[i, j].Trim(':').Replace("Aim (", "").Replace(")", "");
                    int    value = int.Parse(array[i, j + 1].Replace(",", "").Trim('p'));
                    dValue.Add(key, value);
                }
            }

            var cqImg = new FileImage(Draw(userName, dValue)).ToString();

            return(routeMsg
                   .ToSource(cqImg)
                   .ForceToSend());
        }
コード例 #24
0
ファイル: DEBUG.cs プロジェクト: harbingerofme/DebugToolkit
 private static void CCGetTeamIndexPartial(ConCommandArgs args)
 {
     //Alias.Instance.GetMasterName(args[0]);
     Log.Message(StringFinder.GetEnumFromPartial <TeamIndex>(args[0]).ToString());
 }