コード例 #1
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/部落成员")
     {
         if (BaseData.Instance.config["部落冲突"].ContainsKey(chat.FromGroup.ToString()))
         {
             ICocCoreClans players = BaseData.Instance.container.Resolve <ICocCoreClans>();
             var           player  = players.GetClansMembers(BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()]);
             if (player != null)
             {
                 StringBuilder sb = new StringBuilder();
                 sb.AppendLine("部落成员数量:" + player.Count);
                 sb.AppendLine("成员列表: ");
                 foreach (var p in player)
                 {
                     sb.AppendLine(p.Name + " : " + p.Tag);
                 }
                 return(new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) });
             }
             else
             {
                 return(new IMessageBase[] { new PlainMessage("未知的部落冲突ID,无法搜索该部落资料!") });
             }
         }
         else
         {
             return(new IMessageBase[] { new PlainMessage("请在config.ini设置好Clan_ID后再继续使用此功能") });
         }
     }
     return(await base.GetReply(chat));
 }
コード例 #2
0
ファイル: 下载.cs プロジェクト: PoH98/QQBotXClashOfClans
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.StartsWith("/下载 "))
     {
         string    version = chat.Message.Remove(0, 4);
         WebClient wc      = new WebClient();
         var       html    = wc.DownloadString("http://leiren520.com/download/index.html");
         var       cocdiv  = html[html.IndexOf("COC下载")..];
コード例 #3
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.StartsWith("/解绑"))
     {
         Logger.Instance.AddLog(LogType.Debug, "接受到改名指令");
         var    sendMember = chat.Sender;
         string newname;
         var    qq = chat.MessageChain.Where(x => x is AtMessage);
         long   tag;
         if (qq.Count() < 1)
         {
             tag = chat.FromQQ;
         }
         else
         {
             tag = (qq.First() as AtMessage).Target;
         }
         if (chat.Message.Contains(BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()]))
         {
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("你当我傻?拿部落标签给我查玩家?草你马的") });
         }
         if (tag == chat.FromQQ)
         {
             if (chat.Message.Contains('#'))
             {
                 newname = chat.Message.Split(' ').Where(x => x.Contains("#")).Last().Trim().ToUpper();
                 if (Member.ClanData.Any(x => x.ClanID == newname))
                 {
                     var selected = Member.ClanData.Where(x => x.ClanID == newname).FirstOrDefault();
                     if (selected == null)
                     {
                         return(new IMessageBase[] { new PlainMessage("找不到相关绑定,无法解绑!") });
                     }
                     Member.ClanData.Remove(selected);
                 }
                 else
                 {
                     return(new IMessageBase[] { new PlainMessage("找不到相关绑定,无法解绑!") });
                 }
                 ICocCorePlayers players = BaseData.Instance.container.Resolve <ICocCorePlayers>();
                 var             player  = players.GetPlayer(newname);
                 if (!string.IsNullOrEmpty(player.Reason))
                 {
                     return(new IMessageBase[] { new PlainMessage("找不到玩家资料或者玩家标签错误: " + player.Reason) });
                 }
                 if (Member.ClanData.Count == 1)
                 {
                     newname = BaseData.Instance.THLevels[player.TownHallLevel] + "本-" + player.Name;
                 }
                 else
                 {
                     List <string> names = new List <string>();
                     foreach (var clanData in Member.ClanData)
                     {
                         var name = players.GetPlayer(clanData.ClanID).Name;
                         if (names.Contains(name[Math.Max(0, 3)..]) && name.StartsWithChinese())
コード例 #4
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/鱼情")
     {
         WebClient wc     = new WebClient();
         JObject   result = JObject.Parse(wc.DownloadString("http://clashofclansforecaster.com/STATS.json"));
         return(new IMessageBase[] { new PlainMessage(result.Value <JObject>("forecastMessages").Value <string>("chinese-simp").Replace("<b>", "").Replace("</b>", "").Replace(" ", "") + "。\n推荐打鱼程度: " + result.Value <string>("lootIndexString") + "(1-10分)") });
     }
     return(await base.GetReply(chat));
 }
コード例 #5
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/绑定查看")
     {
         StringBuilder sb = new StringBuilder();
         foreach (var data in Member.ClanData)
         {
             sb.AppendLine(data.ClanID + ":" + data.Name);
         }
         return(new IMessageBase[] { new PlainMessage(sb.ToString()) });
     }
     return(await base.GetReply(chat));
 }
コード例 #6
0
        private void ChainEventReceivedHandler(object sender, ChainEventArgs e)
        {
            if (e.EventName != "onTileMapStateUpdate")
            {
                return;
            }

            string           stringData         = Encoding.UTF8.GetString(e.Data);
            JsonTileMapState tileMapStateParsed = JsonUtility.FromJson <JsonTileMapState>(stringData);

            this.eventActions.Enqueue(() => {
                TileMapStateUpdated?.Invoke(tileMapStateParsed);
            });
        }
コード例 #7
0
ファイル: 新人.cs プロジェクト: PoH98/QQBotXClashOfClans
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.StartsWith("/新人"))
     {
         string id;
         if (chat.Message.Contains("#"))
         {
             //发送标签checkMember
             id = chat.Message.Replace("/新人", "").Replace(" ", "");
             if (id == BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()])
             {
                 return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("你当我傻?拿部落标签给我查玩家?草你马的") });
             }
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), CheckMember(id, chat.Session) });
         }
         else if (chat.Message == "/新人")
         {
             if (Member.ClanData.Count < 1)
             {
                 return(new IMessageBase[] { new PlainMessage("还请先使用 \"/绑定 #标签\" 指令后再使用不发玩家标签的审核指令!") });
             }
             List <IMessageBase> message = new List <IMessageBase>();
             foreach (var clanData in Member.ClanData)
             {
                 message.Add(CheckMember(clanData.ClanID, chat.Session));
             }
             return(message);
         }
         else if (chat.Message.Contains("https") && chat.Message.Contains("tag="))
         {
             //发送链接审核
             id = chat.Message.Replace("/新人 ", "").Replace(" ", "");
             id = "#" + id.Remove(0, id.LastIndexOf("tag=") + 4);
             if (id.Contains("&"))
             {
                 id = id.Remove(id.IndexOf('&'));
             }
             if (id == BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()])
             {
                 return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("你当我傻?拿部落标签给我查玩家?草你马的") });
             }
             return(new IMessageBase[] { CheckMember(id, chat.Session) });
         }
         else
         {
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("无效的标签!") });
         }
     }
     return(await base.GetReply(chat));
 }
コード例 #8
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.StartsWith("/多绑定") && chat.Message.Where(x => x == '#').Count() > 1)
     {
         Logger.Instance.AddLog(LogType.Info, "接受到改名指令");
         var           sendMember = chat.Sender;
         var           ats        = chat.MessageChain.Where(x => x is AtMessage);
         long          tag;
         List <string> ids = new List <string>();
         if (ats.Count() < 1)
         {
             tag = chat.FromQQ;
         }
         else
         {
             tag = (ats.First() as AtMessage).Target;
         }
         if (chat.Message.Contains(BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()]))
         {
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("你当我傻?拿部落标签给我查玩家?草你马的") });
         }
         ICocCorePlayers players = BaseData.Instance.container.Resolve <ICocCorePlayers>();
         if (tag == chat.FromQQ)
         {
             ids.AddRange(chat.Message.Split(' ').Where(x => x.Contains("#")));
             foreach (var id in ids)
             {
                 if (!Member.ClanData.Any(x => x.ClanID == id.Trim().ToUpper()))
                 {
                     Member.ClanData.Add(new ClanData(id.Trim().ToUpper()));
                 }
             }
             string        newname = string.Empty;
             List <string> names   = new List <string>();
             foreach (var id in ids)
             {
                 var player = players.GetPlayer(id.Trim());
                 if (player == null)
                 {
                     var remove = Member.ClanData.First(x => x.ClanID == id.Trim().ToUpper());
                     Member.ClanData.Remove(remove);
                 }
                 if (!string.IsNullOrEmpty(player.Reason))
                 {
                     var remove = Member.ClanData.First(x => x.ClanID == id.Trim().ToUpper());
                     Member.ClanData.Remove(remove);
                 }
                 var name = player.Name;
                 if (names.Contains(name[Math.Max(0, 3)..]) && name.StartsWithChinese())
コード例 #9
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.StartsWith("/计算"))
     {
         try
         {
             return(new IMessageBase[] { new PlainMessage("计算结果: " + Calculate(chat.Message.Trim().Replace("/计算", "").Replace("÷", "/"))) });
         }
         catch
         {
             return(new IMessageBase[] { new PlainMessage("方程式错误") });
         }
     }
     return(await base.GetReply(chat));
 }
コード例 #10
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/切换发字模式")
     {
         var sender = chat.Sender;
         if (sender.Permission != GroupPermission.Member)
         {
             BaseData.Instance.SplitLongText = !BaseData.Instance.SplitLongText;
             return(new IMessageBase[] { new PlainMessage("切换成功!当前设置自动切分长消息是" + (BaseData.Instance.SplitLongText ? "启用" : "关闭")) });
         }
         else
         {
             return(new IMessageBase[] { new PlainMessage("我丢手雷楼老母亲,你没权限设置!") });
         }
     }
     return(await base.GetReply(chat));
 }
コード例 #11
0
ファイル: GameAPI.cs プロジェクト: PoH98/QQBotXClashOfClans
 internal GameAPI(ChainEventArgs e)
 {
     Session    = e.Session;
     groupPath  = "com.coc.groupadmin\\" + e.FromGroup;
     MemberFile = "com.coc.groupadmin\\" + e.FromGroup + "\\" + e.FromQQ + ".bin";
     if (!Directory.Exists(groupPath))
     {
         Directory.CreateDirectory(groupPath);
     }
     if (!File.Exists(MemberFile))
     {
         var Member = new GroupMemberInfo()
         {
             GroupId = e.FromGroup, QQId = e.FromQQ, Card = e.Sender.Name
         };
         GameMember gameMember;
         gameMember = new GameMember {
             Member = Member, Cash = 100, Exp = 100, Work = Work.给野蛮人刷背, Checked = DateTime.MinValue, Combo = 0, CurrentHP = 100, weapon = new None(), Robbed = DateTime.MinValue, PlayTime = DateTime.MinValue
         };
         var writer = new XmlSerializer(typeof(GameMember));
         using StreamWriter stream = new StreamWriter(MemberFile);
         writer.Serialize(stream, gameMember);
     }
     try
     {
         XmlSerializer reader = new XmlSerializer(typeof(GameMember));
         using (FileStream stream = new FileStream(MemberFile, FileMode.Open))
         {
             this.Member        = (GameMember)reader.Deserialize(stream);
             this.Member.Member = new GroupMemberInfo()
             {
                 GroupId = e.FromGroup, QQId = e.FromQQ, Card = e.Sender.Name
             };
         }
         foreach (Type type in Assembly.GetAssembly(typeof(Element)).GetTypes().Where(myType => myType.IsClass && !myType.IsAbstract && myType.IsSubclassOf(typeof(Element))))
         {
             elements.Add((Element)Activator.CreateInstance(type));
         }
     }
     catch (Exception ex)
     {
         e.Session.SendGroupMessage(e.FromGroup, new PlainMessage(e.FromQQ + "资料损毁,错误资料:" + ex.Message));
     }
 }
コード例 #12
0
ファイル: konachan.cs プロジェクト: PoH98/QQBotXClashOfClans
        public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
        {
            if (chat.Message == "/图" || chat.Message == "/来图")
            {
                using (var call = new Call())
                {
                    var result = await call.Request(9);

                    Logger.Instance.AddLog(LogType.Debug, "已获取图片json" + result.Count + "个");
                    if (result.Count > 0)
                    {
                        var obj    = call.GetRandom(result);
                        var stream = await call.DownloadImage(obj);

                        return(new IMessageBase[] { await chat.Session.UploadPictureAsync(UploadTarget.Group, stream) });
                    }
                    else
                    {
                        return(new IMessageBase[] { new PlainMessage("暂时没有图片可以发哦 ヘ(;´Д`ヘ) 说不定再等等就有了呢! (ง •̀_•́)ง ") });
                    }
                }
            }
            else if (chat.Message == "/色图")
            {
                using (var call = new Call())
                {
                    var result = await call.Request();

                    Logger.Instance.AddLog(LogType.Debug, "已获取图片json" + result.Count + "个");
                    if (result.Count > 0)
                    {
                        var obj    = call.GetRandom(result);
                        var stream = await call.DownloadImage(obj);

                        return(new IMessageBase[] { await chat.Session.UploadPictureAsync(UploadTarget.Group, stream) });
                    }
                    else
                    {
                        return(new IMessageBase[] { new PlainMessage("暂时没有图片可以发哦 ヘ(;´Д`ヘ) 说不定再等等就有了呢! (ง •̀_•́)ง ") });
                    }
                }
            }
            return(await base.GetReply(chat));
        }
コード例 #13
0
ファイル: BaseLink.cs プロジェクト: PoH98/QQBotXClashOfClans
        public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
        {
            switch (chat.Message)
            {
            case "/三本阵型":
            case "/四本阵型":
            case "/五本阵型":
            case "/六本阵型":
            case "/七本阵型":
            case "/3本阵型":
            case "/4本阵型":
            case "/5本阵型":
            case "/6本阵型":
            case "/7本阵型":
                return(new IMessageBase[] { new PlainMessage("阵型指令只接受八本以上!") });

            case "/八本阵型":
            case "/8本阵型":
                return(new IMessageBase[] { new PlainMessage("使用浏览器打开此链接: " + GetLink(8)) });

            case "/九本阵型":
            case "/9本阵型":
                return(new IMessageBase[] { new PlainMessage("使用浏览器打开此链接: " + GetLink(9)) });

            case "/十本阵型":
            case "/10本阵型":
                return(new IMessageBase[] { new PlainMessage("使用浏览器打开此链接: " + GetLink(10)) });

            case "/十一本阵型":
            case "/11本阵型":
                return(new IMessageBase[] { new PlainMessage("使用浏览器打开此链接: " + GetLink(11)) });

            case "/十二本阵型":
            case "/12本阵型":
                return(new IMessageBase[] { new PlainMessage("使用浏览器打开此链接: " + GetLink(12)) });

            case "/十三本阵型":
            case "/13本阵型":
                return(new IMessageBase[] { new PlainMessage("使用浏览器打开此链接: " + GetLink(13)) });
            }
            return(await base.GetReply(chat));
        }
コード例 #14
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/游戏解除")
     {
         var sender = chat.Sender;
         if (sender.Permission == GroupPermission.Administrator || sender.Permission == GroupPermission.Owner)
         {
             if (!BaseData.Instance.GameEnabled.Any(x => x == chat.FromGroup))
             {
                 File.AppendAllText("XGame.txt", chat.FromGroup + "\n");
                 BaseData.Instance.GameEnabled.Add(chat.FromGroup);
             }
             return(new IMessageBase[] { new PlainMessage("群游戏已取消") });
         }
         else
         {
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("艹你麻痹,没权限解除你妹!") });
         }
     }
     else if (chat.Message == "/游戏启动")
     {
         var sender = chat.Sender;
         if (sender.Permission == GroupPermission.Administrator || sender.Permission == GroupPermission.Owner)
         {
             if (BaseData.Instance.GameEnabled.Any(x => x == chat.FromGroup))
             {
                 File.WriteAllText("XGame.txt", File.ReadAllText("XGame.txt").Replace(chat.FromGroup.ToString(), ""));
                 BaseData.Instance.GameEnabled.Remove(chat.FromGroup);
             }
             return(new IMessageBase[] { new PlainMessage("群游戏已启动") });
         }
         else
         {
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("艹你麻痹,没权限解除你妹!") });
         }
     }
     return(await base.GetReply(chat));
 }
コード例 #15
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/部落平均")
     {
         ICocCoreClans clan     = BaseData.Instance.container.Resolve <ICocCoreClans>();
         var           clanData = clan.GetClans(BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()]);
         if (!string.IsNullOrEmpty(clanData.Reason))
         {
             return(new IMessageBase[] { new PlainMessage("无法获取部落资料!" + clanData.Reason) });
         }
         StringBuilder sb = new StringBuilder();
         long          donated = 0, donationsReceived = 0;
         foreach (var member in clanData.MemberList)
         {
             donated           += member.Donations;
             donationsReceived += member.DonationsReceived;
         }
         sb.AppendLine("部落平均胜率: " + ((double)(((double)clanData.WarWins / ((double)clanData.WarWins + (double)clanData.WarLosses + (double)clanData.WarTies)) * 100)).ToString("0.00") + "%");
         sb.AppendLine("部落平均捐兵: " + donated / clanData.MemberList.Count);
         sb.Append("部落平均收兵: " + donationsReceived / clanData.MemberList.Count);
         return(new IMessageBase[] { new PlainMessage(sb.ToString()) });
     }
     return(await base.GetReply(chat));
 }
コード例 #16
0
ファイル: GameAPI.cs プロジェクト: PoH98/QQBotXClashOfClans
        internal GameAPI SkillShop(ChainEventArgs e)
        {
            if (Member == null)
            {
                return(this);
            }
            var skillList = new List <Skill>();

            foreach (Type type in Assembly.GetAssembly(typeof(Skill)).GetTypes().Where(myType => myType.IsClass && !myType.IsAbstract && myType.IsSubclassOf(typeof(Skill))))
            {
                skillList.Add((Skill)Activator.CreateInstance(type));
            }
            if (skillList.Any(x => e.Message.Contains(x.Name)))
            {
                var selectedSkill = skillList.Where(x => e.Message.Contains(x.Name)).FirstOrDefault();
                if (Member.Skill == null)
                {
                    //购买技能
                    var price = selectedSkill.Price[0];
                    if (Member.Cash >= price)
                    {
                        Member.Cash      -= price;
                        Member.Skill      = selectedSkill;
                        Member.SkillLevel = 1;
                        Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("购买技能成功!"));
                    }
                    else
                    {
                        Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("你没有钱购买这个玩意!"));
                    }
                }
                else
                {
                    //升级或者切换技能
                    if (selectedSkill.Name == Member.Skill.Name)
                    {
                        if (Member.SkillLevel == selectedSkill.Price.Length)
                        {
                            Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("当前技能等级已经是最高级!"));
                        }
                        else
                        {
                            var upgradePrice = Member.Skill.Price[Member.SkillLevel];
                            if (Member.Cash >= upgradePrice)
                            {
                                Member.SkillLevel++;
                                Member.Cash -= upgradePrice;
                                Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("技能等级已提升!现在等级为" + Member.SkillLevel));
                            }
                            else
                            {
                                Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("你没有钱升级这个玩意!"));
                            }
                        }
                    }
                    else
                    {
                        var upgradePrice = selectedSkill.Price[Member.SkillLevel - 1];
                        if (Member.Cash >= upgradePrice)
                        {
                            if (Member.SkillLevel > 1)
                            {
                                Member.SkillLevel--;
                                Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("技能更换成功!由于不熟悉新技能,自动降1级!"));
                            }
                            else
                            {
                                Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("技能更换成功!"));
                            }
                            Member.Cash -= upgradePrice;
                            Member.Skill = selectedSkill;
                        }
                        else
                        {
                            Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("你没有钱更换这个玩意!"));
                        }
                    }
                }
            }
            else
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("请发送 /技能 技能名字 进行购买或升级 (升级无需写等级)!");
                foreach (var s in skillList)
                {
                    for (int x = 0; x < s.Amount.Length; x++)
                    {
                        sb.AppendLine(s.Name + " 等级:" + (x + 1) + " 武器伤害倍数:" + s.Amount[x] + " 触发几率:" + (s.TriggerPercentage[x] * 100) + "% 价格:" + s.Price[x]);
                    }
                    sb.AppendLine("=========================");
                }
                Session.SendGroupMessage(Member.Member.GroupId, BaseData.TextToImg(sb.ToString(), Session));
            }
            skillList.Clear();
            return(this);
        }
コード例 #17
0
ファイル: GameAPI.cs プロジェクト: PoH98/QQBotXClashOfClans
        internal GameAPI Shop(ChainEventArgs e)
        {
            if (Member == null)
            {
                return(this);
            }
            var weaponList = new List <Weapon>();

            foreach (Type type in Assembly.GetAssembly(typeof(Weapon)).GetTypes().Where(myType => myType.IsClass && !myType.IsAbstract && myType.IsSubclassOf(typeof(Weapon))))
            {
                weaponList.Add((Weapon)Activator.CreateInstance(type));
            }
            weaponList.Sort((x, y) =>
            {
                if (x.Price > y.Price)
                {
                    return(1);
                }
                else if (x.Price < y.Price)
                {
                    return(-1);
                }
                else
                {
                    return(0);
                }
            });
            if (weaponList.Any(x => e.Message.Contains(x.Name)))
            {
                var selectedWeapon = weaponList.Where(x => e.Message.Contains(x.Name)).FirstOrDefault();
                if (selectedWeapon.Price > -1)
                {
                    if (Member.Cash >= selectedWeapon.Price)
                    {
                        Member.Cash -= selectedWeapon.Price;
                        try
                        {
                            if (Member.weapon.Price > 0)
                            {
                                Member.Cash += Member.weapon.Price / 4;
                            }
                        }
                        catch
                        {
                        }
                        Member.weapon = selectedWeapon;
                        Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("购买成功!"));
                    }
                    else
                    {
                        Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("你没有钱购买这个玩意!"));
                    }
                }
                else
                {
                    Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("你没有钱购买这个玩意!"));
                }
            }
            else
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("请发送 /购买 武器名字 进行购买!");
                foreach (var w in weaponList)
                {
                    var skill = "无";
                    switch (w.WeaponSkill)
                    {
                    case WeaponSkill.Doubled:
                        skill = "伤害递增";
                        break;

                    case WeaponSkill.KeepDamage:
                        skill = "持续伤害";
                        break;
                    }
                    if (w.Price > -1)
                    {
                        sb.AppendLine(w.Name + " 伤害:" + w.minDamage + "-" + w.maxDamage + " 血量:" + w.maxHP + " 价格:" + w.Price + " 技能:" + skill);
                    }
                }
                Session.SendGroupMessage(Member.Member.GroupId, BaseData.TextToImg(sb.ToString(), Session));
            }
            weaponList.Clear();
            return(this);
        }
コード例 #18
0
ファイル: GameAPI.cs プロジェクト: PoH98/QQBotXClashOfClans
        internal GameAPI Robber(ChainEventArgs e)
        {
            if (Member == null)
            {
                return(this);
            }
            long tag;
            var  qqs = e.MessageChain.Where(x => x is AtMessage);

            if (qqs.Count() < 1)
            {
                return(this);
            }
            tag = (qqs.First() as AtMessage).Target;
            var prey = new GameAPI(e.FromGroup, tag, Session);

            if (Member.Robbed == null)
            {
                Member.Robbed = DateTime.MinValue;
            }
            if (Member.Robbed.Date == DateTime.Today)
            {
                Session.SendGroupMessage(Member.Member.GroupId, new AtMessage(Member.Member.QQId), new PlainMessage("你今天已打劫过,无法继续打劫!"));
                return(this);
            }
            if (prey.Member.Member.QQId == Program.LoggedInQQ || prey.Member.Member.QQId < 1 || prey.Member.Member.QQId == 2854196310)
            {
                if (prey.Member.weapon.GetType() != typeof(UltraWeapon1) && prey.Member.weapon.GetType() != typeof(UltraWeapon2))
                {
                    Random rnd = new Random();
                    Weapon weapon;
                    if (rnd.Next(10) > 5)
                    {
                        weapon = new UltraWeapon1();
                    }
                    else
                    {
                        weapon = new UltraWeapon2();
                    }
                    prey.Member.weapon = weapon;
                }
            }
            else if (prey.Member.Member.QQId == e.FromQQ)
            {
                Random rnd    = new Random();
                var    reduce = rnd.Next(100, 300);
                Session.SendGroupMessage(Member.Member.GroupId, new AtMessage(Member.Member.QQId), new PlainMessage("把自己打了一顿,进了大本营医院,付" + reduce + "金币医药费!"));
                prey.Member.Cash -= reduce;
                prey.Dispose();
                return(this);
            }
            if ((DateTime.Now - prey.Member.LastRobbed) < new TimeSpan(8, 0, 0))
            {
                Session.SendGroupMessage(Member.Member.GroupId, new AtMessage(Member.Member.QQId), new PlainMessage("看见那已经被洗劫剩下个内裤的家伙,你放弃了打劫的想法"));
                prey.Dispose();
                return(this);
            }
            if (prey.Member.Member.QQId == Program.LoggedInQQ || prey.Member.Member.QQId < 1 || prey.Member.Member.QQId == 2854196310)
            {
                Random rnd = new Random();
                Member.CurrentHP      = Member.weapon.maxHP + Member.BonusHP;
                prey.Member.CurrentHP = prey.Member.weapon.maxHP + prey.Member.BonusHP;
                do
                {
                    var MemberDamage = rnd.Next(Member.weapon.minDamage, Member.weapon.maxDamage) + Member.BonusDamage;
                    var preyDamage   = rnd.Next(prey.Member.weapon.minDamage, prey.Member.weapon.maxDamage) + prey.Member.BonusDamage;
                    Member.CurrentHP      -= preyDamage;
                    prey.Member.CurrentHP -= MemberDamage;
                    if (Member.Skill != null)
                    {
                        CalculateSkill(this, prey, MemberDamage);
                    }
                    if (prey.Member.Skill != null)
                    {
                        CalculateSkill(prey, this, preyDamage);
                    }
                    if (Member.weapon.WeaponSkill != WeaponSkill.None)
                    {
                        CalculateWeaponSkill(this, prey, MemberDamage);
                    }
                    if (prey.Member.weapon.WeaponSkill != WeaponSkill.None)
                    {
                        CalculateWeaponSkill(prey, this, preyDamage);
                    }
                    Round++;
                }while (Member.CurrentHP > 0 && prey.Member.CurrentHP > 0);
                if (Member.CurrentHP > 0)
                {
                    var percent = rnd.Next(2, 6);
                    var get     = 5000;
                    prey.Member.LastRobbed = DateTime.Now;
                    Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("恭喜"), new AtMessage(Member.Member.QQId), new PlainMessage("打劫"), new AtMessage(prey.Member.Member.QQId), new PlainMessage("成功!获得了" + get + "金币!"));
                }
                else if (Member.CurrentHP <= 0 && prey.Member.CurrentHP <= 0)
                {
                    Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("恭喜两个人都挂了,你们都在训练营里复活又跑了出来,然而双方都没有任何损失"));
                }
                else
                {
                    if (Member.Cash > 0)
                    {
                        var percent = rnd.Next(2, 6);
                        var get     = (Member.Cash / 100) * percent;
                        prey.Member.Cash += get;
                        Member.Cash      -= get;
                        Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("恭喜"), new AtMessage(prey.Member.Member.QQId), new PlainMessage("防御成功!还从打劫者身上获得了" + get + "金币!"));
                    }
                    else
                    {
                        Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("恭喜"), new AtMessage(prey.Member.Member.QQId), new PlainMessage("防御成功!然而由于打劫者没钱了,只能给你卖身赔钱!"));
                        Session.Mute(e.FromQQ, e.FromGroup, new TimeSpan(0, 30, 0));
                    }
                }
                Member.Robbed = DateTime.Today;
                prey.Dispose();
            }
            else if (prey.Member.Cash > 0)
            {
                Random rnd = new Random();
                Member.CurrentHP      = Member.weapon.maxHP + Member.BonusHP;
                prey.Member.CurrentHP = prey.Member.weapon.maxHP + prey.Member.BonusHP;
                do
                {
                    var MemberDamage = rnd.Next(Member.weapon.minDamage, Member.weapon.maxDamage) + Member.BonusDamage;
                    var preyDamage   = rnd.Next(prey.Member.weapon.minDamage, prey.Member.weapon.maxDamage) + prey.Member.BonusDamage;
                    Member.CurrentHP      -= preyDamage;
                    prey.Member.CurrentHP -= MemberDamage;
                    if (Member.Skill != null)
                    {
                        CalculateSkill(this, prey, MemberDamage);
                    }
                    if (prey.Member.Skill != null)
                    {
                        CalculateSkill(prey, this, preyDamage);
                    }
                    if (Member.weapon.WeaponSkill != WeaponSkill.None)
                    {
                        CalculateWeaponSkill(this, prey, MemberDamage);
                    }
                    if (prey.Member.weapon.WeaponSkill != WeaponSkill.None)
                    {
                        CalculateWeaponSkill(prey, this, preyDamage);
                    }
                    Round++;
                }while (Member.CurrentHP > 0 && prey.Member.CurrentHP > 0);
                if (Member.CurrentHP > 0)
                {
                    var percent = rnd.Next(2, 6);
                    var get     = (prey.Member.Cash / 100) * percent;
                    prey.Member.Cash      -= get;
                    Member.Cash           += get;
                    prey.Member.LastRobbed = DateTime.Now;
                    Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("恭喜"), new AtMessage(Member.Member.QQId), new PlainMessage("打劫"), new AtMessage(prey.Member.Member.QQId), new PlainMessage("成功!获得了" + get + "金币!"));
                }
                else if (Member.CurrentHP <= 0 && prey.Member.CurrentHP <= 0)
                {
                    Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("恭喜两个人都挂了,你们都在训练营里复活又跑了出来,然而双方都没有任何损失"));
                }
                else
                {
                    if (Member.Cash > 0)
                    {
                        var percent = rnd.Next(2, 6);
                        var get     = (Member.Cash / 100) * percent;
                        prey.Member.Cash += get;
                        Member.Cash      -= get;
                        Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("恭喜"), new AtMessage(prey.Member.Member.QQId), new PlainMessage("防御成功!还从打劫者身上获得了" + get + "金币!"));
                    }
                    else
                    {
                        Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("恭喜"), new AtMessage(prey.Member.Member.QQId), new PlainMessage("防御成功!然而由于打劫者没钱了,只能给你卖身赔钱!"));
                        Session.Mute(e.FromQQ, e.FromGroup, new TimeSpan(0, 30, 0));
                    }
                }
                Member.Robbed = DateTime.Today;
                prey.Dispose();
            }
            else
            {
                Session.SendGroupMessage(Member.Member.GroupId, new PlainMessage("要打劫的对象穷死了,你看见他衣服都穿不起后放弃了打劫的想法"));
            }
            return(this);
        }
コード例 #19
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/当前联赛")
     {
         ICocCoreClans war      = BaseData.Instance.container.Resolve <ICocCoreClans>();
         var           keypairs = BaseData.valuePairs(configType.部落冲突);
         if (keypairs.ContainsKey(chat.FromGroup.ToString()))
         {
             LeagueWar league = war.GetCurrentWarLeague(keypairs[chat.FromGroup.ToString()]);
             if (league != null && string.IsNullOrEmpty(league.Reason))
             {
                 StringBuilder sb = new StringBuilder();
                 Array.Reverse(league.Rounds);
                 IMessageBase[] result = null;
                 Parallel.ForEach(league.Rounds, (rounds) =>
                 {
                     foreach (var warTag in rounds.warTags)
                     {
                         if (warTag != "#0")
                         {
                             if (result != null)
                             {
                                 return;
                             }
                             var roundData = war.GetCurrentWarLeagueRound(warTag);
                             if (result != null)
                             {
                                 return;
                             }
                             Logger.Instance.AddLog(LogType.Debug, "联赛部落" + roundData.clan.Name + " vs " + roundData.opponent.Name);
                             if (roundData.clan.Tag == keypairs[chat.FromGroup.ToString()].ToUpper())
                             {
                                 if (roundData.state == "inWar")
                                 {
                                     sb.AppendLine("当前联赛结束时间为: " + roundData.EndTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                                     sb.AppendLine("对手为" + roundData.opponent.Name);
                                     sb.AppendLine("当前我方战星: " + roundData.clan.Stars + ", 敌方战星: " + roundData.opponent.Stars);
                                     sb.AppendLine("========================");
                                     foreach (var Member in roundData.clan.Members.OrderBy(x => x.MapPosition))
                                     {
                                         if (Member.Attacks == null || Member.Attacks.Length < 1)
                                         {
                                             sb.AppendLine(Member.Name + " : 还未进攻");
                                         }
                                         else
                                         {
                                             sb.AppendLine(Member.Name + " : " + Member.Attacks[0].Stars + "星(摧毁: " + Member.Attacks[0].DestructionPercentage + "%)");
                                         }
                                     }
                                     result = new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) };
                                 }
                             }
                             else if (roundData.opponent.Tag == keypairs[chat.FromGroup.ToString()].ToUpper())
                             {
                                 if (roundData.state == "inWar")
                                 {
                                     sb.AppendLine("当前联赛结束时间为: " + roundData.EndTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                                     sb.AppendLine("对手为" + roundData.clan.Name);
                                     sb.AppendLine("当前我方战星: " + roundData.opponent.Stars + ", 敌方战星: " + roundData.clan.Stars);
                                     foreach (var Member in roundData.opponent.Members.OrderBy(x => x.MapPosition))
                                     {
                                         if (Member.Attacks == null || Member.Attacks.Length < 1)
                                         {
                                             sb.AppendLine(Member.Name + " : 还未进攻");
                                         }
                                         else
                                         {
                                             sb.AppendLine(Member.Name + " : " + Member.Attacks[0].Stars + "星(摧毁: " + Member.Attacks[0].DestructionPercentage + "%)");
                                         }
                                     }
                                     result = new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) };
                                 }
                             }
                         }
                     }
                 });
                 if (result == null)
                 {
                     result = new IMessageBase[] { new PlainMessage("联赛资料获取失败!也许现在不是联赛时间?") };
                 }
                 return(result);
             }
             else
             {
                 if (league != null)
                 {
                     return(new IMessageBase[] { new PlainMessage("无法获取任何联赛资料,错误详情: " + league.Reason + "!") });
                 }
                 else
                 {
                     return(new IMessageBase[] { new PlainMessage("无法获取任何联赛资料!") });
                 }
             }
         }
         else
         {
             return(new IMessageBase[] { new PlainMessage("请设置好config.ini后才使用此功能,或者使用</绑定群 #部落标签>后才使用!") });
         }
     }
     return(await base.GetReply(chat));
 }
コード例 #20
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.ToLower().StartsWith("/玩家资料"))
     {
         try
         {
             var cocid = chat.Message.Replace("/玩家资料", "").Trim();
             if (!BaseData.CheckIP())
             {
                 TokenApi.GetNewToken();
             }
             if (cocid == BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()])
             {
                 return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("你当我傻?拿部落标签给我查玩家?草你马的") });
             }
             ICocCorePlayers players = BaseData.Instance.container.Resolve <ICocCorePlayers>();
             var             player  = players.GetPlayer(cocid);
             if (player != null)
             {
                 StringBuilder sb = new StringBuilder();
                 sb.AppendLine("大本营等级:" + player.TownHallLevel + ",名字:" + player.Name);
                 sb.AppendLine("进攻次数: " + player.AttackWins + ",防御次数: " + player.DefenseWins + ",战星: " + player.WarStars);
                 sb.AppendLine("==================================");
                 sb.AppendLine("兵力:");
                 foreach (var troop in player.Troops)
                 {
                     try
                     {
                         sb.AppendLine("* " + BaseData.Instance.config["兵种翻译"][troop.Name.Replace(" ", "_")] + " - " + troop.Level + "级");
                     }
                     catch
                     {
                         sb.AppendLine("* " + troop.Name + " - " + troop.Level + "级");
                     }
                 }
                 sb.AppendLine("==================================");
                 sb.AppendLine("药水:");
                 foreach (var spell in player.Spells)
                 {
                     try
                     {
                         sb.AppendLine("* " + BaseData.Instance.config["兵种翻译"][spell.Name.Replace(" ", "_")] + " - " + spell.Level + "级");
                     }
                     catch
                     {
                         sb.AppendLine("* " + spell.Name + " - " + spell.Level + "级");
                     }
                 }
                 sb.AppendLine("==================================");
                 sb.AppendLine("英雄:");
                 foreach (var hero in player.Heroes)
                 {
                     try
                     {
                         sb.AppendLine("* " + BaseData.Instance.config["兵种翻译"][hero.Name.Replace(" ", "_")] + " - " + hero.Level + "级");
                     }
                     catch
                     {
                         sb.AppendLine("* " + hero.Name + " - " + hero.Level + "级");
                     }
                 }
                 return(new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) });
             }
             else
             {
                 return(new IMessageBase[] { new PlainMessage("未知的部落冲突ID,无法搜索该玩家资料!") });
             }
         }
         catch (Exception ex)
         {
             return(new IMessageBase[] { new PlainMessage("请确保发送/PlayerAPI时是/PlayerAPI 玩家标签!错误资料:" + ex.Message) });
         }
     }
     return(await base.GetReply(chat));
 }