public bool Dispel(MsgInformationEx MsgDTO, object[] param) { var qqNum = (long)param[0]; var sourcePerson = OSPerson_Doremi.GetPerson(MsgDTO.FromQQ); if (sourcePerson.Golds < 500) { MsgSender.PushMsg(MsgDTO, "驱散全部buff需要500金币,你没有足够的金币!"); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, 500)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } OSPersonBuff.RemoveAll(qqNum); sourcePerson.Golds -= 500; sourcePerson.Update(); MsgSender.PushMsg(MsgDTO, "驱散成功!"); return(true); }
public bool DispelOneBuff(MsgInformationEx MsgDTO, object[] param) { var qqNum = (long)param[0]; var buffName = param[1] as string; if (!OSPersonBuff.CheckBuff(qqNum, buffName)) { MsgSender.PushMsg(MsgDTO, "目标身上没有指定buff!"); return(false); } var sourcePerson = OSPerson_Doremi.GetPerson(MsgDTO.FromQQ); if (sourcePerson.Golds < 100) { MsgSender.PushMsg(MsgDTO, "驱散该buff需要100金币,你没有足够的金币!"); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, 100)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } OSPersonBuff.Remove(qqNum, buffName); sourcePerson.Golds -= 100; sourcePerson.Update(); MsgSender.PushMsg(MsgDTO, "驱散成功!"); return(true); }
public bool Reborn(MsgInformationEx MsgDTO, object[] param) { var aimQQ = (long)param[0]; var key = $"AliveState-{MsgDTO.FromGroup}-{aimQQ}"; var cache = SCacheService.Get <AliveStateCache>(key); if (cache == null) { MsgSender.PushMsg(MsgDTO, "该成员不需要复活!", true); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, 100)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } var osPerson = OSPerson_Doremi.GetPerson(MsgDTO.FromQQ); osPerson.Golds -= 100; osPerson.Update(); SCacheService.Cache(key, cache, DateTime.Now); MsgSender.PushMsg(MsgDTO, $"复活成功!你当前剩余金币:{osPerson.Golds}", true); return(true); }
public bool Xunyuan(MsgInformationEx MsgDTO, object[] param) { var aimQQ = (long)param[0]; if (aimQQ == MsgDTO.FromQQ) { MsgSender.PushMsg(MsgDTO, "你无法和自己寻缘!"); return(false); } if (!XunYuanMgr.CheckGroup(MsgDTO.FromGroup)) { MsgSender.PushMsg(MsgDTO, "此群正在进行一场寻缘,请稍候再试!"); return(false); } if (!XunYuanMgr.CheckQQNum(MsgDTO.FromQQ)) { MsgSender.PushMsg(MsgDTO, "你正在进行一场寻缘,请稍候再试!"); return(false); } if (!XunYuanMgr.CheckQQNum(aimQQ)) { MsgSender.PushMsg(MsgDTO, "对方正在进行一场寻缘,请稍候再试!"); return(false); } var msg = $"{CodeApi.Code_At(aimQQ)} 你正被邀请参加一次寻缘,是否同意?"; if (!WaiterSvc.WaitForConfirm(MsgDTO.FromGroup, aimQQ, msg, MsgDTO.BindAi)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } var Gamers = new[] { MsgDTO.FromQQ, aimQQ }.Select(p => { var armerRecord = PersonArmerRecord.Get(p); var osPerson = OSPerson_Doremi.GetPerson(p); var levelModel = LevelSvc.GetByLevel(osPerson.Level); var battleArmers = Rander.RandSort(armerRecord.Armers.ToArray()).Take(10).ToDictionary(a => a.Key, a => a.Value); return(new XunYuanGamingModel() { QQNum = p, Armers = battleArmers, EscapeArmers = armerRecord.EscapeArmers, BasicHP = levelModel.HP, HP = levelModel.HP + ArmerSvc.CountHP(battleArmers), BasicAttack = levelModel.Atk, Attack = levelModel.Atk + ArmerSvc.CountAtk(battleArmers) }); }).ToArray(); XunYuanMgr.StartGame(Gamers, MsgDTO.FromGroup, MsgDTO.BindAi); return(true); }
protected override void Sign(MsgInformationEx MsgDTO) { var sign = SignInSuccessiveRecord.Sign(MsgDTO.FromGroup, MsgDTO.FromQQ); var goldsGen = Math.Min(sign.SuccessiveDays * 5, 50); OSPerson_Doremi.GoldIncome(MsgDTO.FromQQ, goldsGen); var indexNo = SignInGroupInfo.GetAndUpdate(MsgDTO.FromGroup); var msg = $"签到成功!你已连续签到 {sign.SuccessiveDays}天,获得 {goldsGen.CurencyFormat()}!\r\n本群签到排名:【No.{indexNo}】"; MsgSender.PushMsg(MsgDTO, msg, true); }
public bool GoldBonus(MsgInformationEx MsgDTO, object[] param) { var qqNum = (long)param[0]; var golds = (int)(long)param[1]; var osPerson = OSPerson_Doremi.GetPerson(qqNum); osPerson.Golds += golds; osPerson.Update(); MsgSender.PushMsg(MsgDTO, "奖励已生效!"); return(true); }
public bool MyStatus(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson_Doremi.GetPerson(MsgDTO.FromQQ); var level = LevelSvc.GetByLevel(osPerson.Level); var exp = MsgCounterSvc.Get(MsgDTO.FromQQ); var armerRecord = PersonArmerRecord.Get(MsgDTO.FromQQ); var session = new MsgSession(MsgDTO); session.Add($"等级:{level.Name}{(level.Level == LevelSvc.TopLevel ? "(满级)" : "")}"); session.Add($"经验值:{exp}/{level.Exp}{(exp >= level.Exp ? "(可渡劫)" : "")}"); session.Add($"{Emoji.心}:{level.HP}(+{ArmerSvc.CountHP(armerRecord.Armers)})"); session.Add($"{Emoji.剑}:{level.Atk}(+{ArmerSvc.CountAtk(armerRecord.Armers)})"); session.Add($"金币:{osPerson.Golds}"); session.Send(); return(true); }
public bool Exchange(MsgInformationEx MsgDTO, object[] param) { var exp = MsgCounterSvc.Get(MsgDTO.FromQQ); var golds = exp / 2; if (golds == 0) { MsgSender.PushMsg(MsgDTO, "你没有足够的经验值兑换!"); return(false); } var osPerson = OSPerson_Doremi.GetPerson(MsgDTO.FromQQ); osPerson.Golds += (int)golds; osPerson.Update(); MsgCounterSvc.Consume(MsgDTO.FromQQ, exp); MsgSender.PushMsg(MsgDTO, $"兑换成功!你使用 {exp} 点经验值兑换了 {golds}金币,你当前拥有 {osPerson.Golds}金币!"); return(true); }
public bool Buy(MsgInformationEx MsgDTO, object[] param) { var name = param[0] as string; if (RandShopperSvc.SellingGoods.IsNullOrEmpty()) { MsgSender.PushMsg(MsgDTO, "商店尚未营业!", true); return(false); } if (!RandShopperSvc.SellingGoods.Contains(name)) { MsgSender.PushMsg(MsgDTO, "此商品未在商店中出售!", true); return(false); } var osPerson = OSPerson_Doremi.GetPerson(MsgDTO.FromQQ); var armerModel = ArmerSvc[name]; if (osPerson.Golds < armerModel.Price) { MsgSender.PushMsg(MsgDTO, $"你持有的金币不足以购买此物品({osPerson.Golds}/{armerModel.Price})", true); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, armerModel.Price)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } osPerson.Golds -= armerModel.Price; var paRec = PersonArmerRecord.Get(MsgDTO.FromQQ); paRec.ArmerGet(name); paRec.Update(); osPerson.Update(); MsgSender.PushMsg(MsgDTO, "购买成功!"); return(true); }
public void SaveToPerson(long QQNum) { Simplify(); var armerRecord = PersonArmerRecord.Get(QQNum); foreach (var(name, count) in NormalArmers) { armerRecord.ArmerGet(name, count); } foreach (var(name, count) in EscapeArmers) { armerRecord.EscapeArmerGet(name, count); } var osPerson = OSPerson_Doremi.GetPerson(QQNum); osPerson.Golds += Golds; armerRecord.Update(); osPerson.Update(); }
public bool Upgrade(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson_Doremi.GetPerson(MsgDTO.FromQQ); var level = LevelSvc.GetByLevel(osPerson.Level); var exp = MsgCounterSvc.Get(MsgDTO.FromQQ); if (exp < level.Exp) { MsgSender.PushMsg(MsgDTO, "你没有足够的经验值升级!", true); return(false); } if (level.Level == LevelSvc.TopLevel) { MsgSender.PushMsg(MsgDTO, "你已满级,无需渡劫!", true); return(false); } MsgSender.PushMsg(MsgDTO, "渡劫开始!你需要回答对全部问题才能成功渡劫!"); var qas = DujieSvc.RandQAs(DujieQACount); int i; for (i = 0; i < DujieQACount; i++) { var randAs = qas[i].RandAs; var msg = $"题目({i + 1}/{DujieQACount}):\r\n" + $"{qas[i].Q}\r\n" + $"{string.Join("\r\n", randAs.Select((p, idx) => $"{idx + 1}:{p}"))}"; var i1 = i; var info = WaiterSvc.WaitForInformation(MsgDTO, msg, information => information.FromGroup == MsgDTO.FromGroup && information.FromQQ == MsgDTO.FromQQ && int.TryParse(information.Msg, out var idx) && idx > 0 && idx <= qas[i1].A.Length, 10); if (info == null) { MsgSender.PushMsg(MsgDTO, "回答超时!"); break; } var aidx = int.Parse(info.Msg) - 1; if (!qas[i].IsCorrect(randAs[aidx])) { MsgSender.PushMsg(MsgDTO, "回答错误!"); break; } MsgSender.PushMsg(MsgDTO, "回答正确!"); } MsgCounterSvc.Consume(MsgDTO.FromQQ, level.Exp); if (i != DujieQACount) { MsgSender.PushMsg(MsgDTO, "渡劫失败,请重新来过!", true); return(true); } osPerson.Level++; osPerson.Update(); MsgSender.PushMsg(MsgDTO, "升级成功!"); return(true); }