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)); }
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下载")..];
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())
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)); }
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)); }
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); }); }
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)); }
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())
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)); }
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)); }
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)); } }
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)); }
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)); }
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)); }
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)); }
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); }
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); }
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); }
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)); }
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)); }