public bool GoldLimitBonus(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Golds < 500) { MsgSender.PushMsg(MsgDTO, $"你没有足够的金币兑换({osPerson.Golds.CurencyFormat()}/{500.CurencyFormat()})", true); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, 500)) { MsgSender.PushMsg(MsgDTO, "操作取消"); return(false); } osPerson.Golds -= 500; var cache = PersonCacheRecord.Get(MsgDTO.FromQQ, "抽奖"); if (!int.TryParse(cache.Value, out var times)) { times = 0; } times++; cache.Value = times.ToString(); osPerson.Update(); cache.Update(); MsgSender.PushMsg(MsgDTO, $"兑换成功,你现在共有{times}次抽奖机会,快使用 【抽奖】 命令试试看吧!", true); return(true); }
private bool SellItem(MsgInformationEx MsgDTO, DriftBottleItemModel item, int count = 1) { var record = ItemCollectionRecord.Get(MsgDTO.FromQQ); if (!record.CheckItem(item.Name, count)) { MsgSender.PushMsg(MsgDTO, "你的背包里没有足够多的该物品!"); return(false); } var price = HonorSvc.GetItemPrice(item, MsgDTO.FromQQ); var msg = $"贩卖 {item.Name}*{count} 将获得 {(price * count).CurencyFormat()},是否确认贩卖?"; if (!WaiterSvc.WaitForConfirm(MsgDTO, msg)) { MsgSender.PushMsg(MsgDTO, "交易取消!"); return(false); } var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); TransHelper.SellItemToShop(item.Name, osPerson, count); osPerson.Update(); MsgSender.PushMsg(MsgDTO, $"贩卖成功!你当前拥有金币 {osPerson.Golds.CurencyFormat()}"); return(true); }
public bool Reborn(MsgInformationEx MsgDTO, object[] param) { var aimQQ = (long)param[0]; var cache = AliveStateSvc.GetState(MsgDTO.FromGroup, aimQQ); if (cache == null) { MsgSender.PushMsg(MsgDTO, "该成员不需要复活!", true); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, 100)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); osPerson.Golds -= 100; osPerson.Update(); cache.RebornTime = DateTime.Now; AliveStateSvc.Cache(cache); MsgSender.PushMsg(MsgDTO, $"复活成功!你当前剩余金币:{osPerson.Golds}", true); 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.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 void 雹() { var record = ItemCollectionRecord.Get(SelfQQNum); if (record.HonorCollections.IsNullOrEmpty()) { MsgSender.PushMsg(GroupNum, 0, "你没有任何物品", BindAi); return; } var commonItems = record.HonorCollections.Where(p => p.Value.Type == HonorType.Normal).SelectMany(p => p.Value.Items).ToList(); if (commonItems.IsNullOrEmpty()) { MsgSender.PushMsg(GroupNum, 0, "你没有任何非限定物品", BindAi); return; } var(key, _) = commonItems.RandElement(); var osPerson = OSPerson.GetPerson(SelfQQNum); TransHelper.SellItemToShop(key, osPerson); osPerson.Update(); MsgSender.PushMsg(GroupNum, 0, $"你贩卖了 {key}\r\n你当前拥有金币 {osPerson.Golds}", BindAi); }
public bool BlackJadeExchange(MsgInformationEx MsgDTO, object[] param) { var ratio = BlackJadeExchangeRec.RealTimeRatio(MsgDTO.FromGroup); var count = WaiterSvc.WaitForNum(MsgDTO.FromGroup, MsgDTO.FromQQ, $"当前墨玉汇率为:{ratio}金币 = 1墨玉,请输入兑换墨玉数量!(单次限购100枚墨玉)", bjCount => bjCount > 0 && bjCount <= 100, MsgDTO.BindAi); if (count <= 0) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } var consumeTotal = count * ratio; var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Golds < consumeTotal) { MsgSender.PushMsg(MsgDTO, $"你的金币余额不足!({consumeTotal.CurencyFormat()}/{osPerson.Golds.CurencyFormat()})"); return(false); } var asset = ArchAsset.Get(MsgDTO.FromQQ); asset.BlackJade += count; osPerson.Golds -= consumeTotal; asset.Update(); osPerson.Update(); MsgSender.PushMsg(MsgDTO, $"兑换成功!你当前剩余墨玉 {asset.BlackJade}枚,金币 {osPerson.Golds.CurencyFormat()}!"); return(true); }
public bool Dispel(MsgInformationEx MsgDTO, object[] param) { var qqNum = (long)param[0]; var sourcePerson = OSPerson.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 SelfExcharge(MsgInformationEx MsgDTO, object[] param) { var days = (int)(long)param[0]; if (days <= 0) { MsgSender.PushMsg(MsgDTO, "天数错误,请重新输入命令!"); return(false); } var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); var diamondNeed = days * 10; if (osPerson.Diamonds < diamondNeed) { MsgSender.PushMsg(MsgDTO, "你的钻石余额不足,请添加能天使(2731544408)为好友后,使用【转账】功能转任意金额后将会获得金额*100的钻石,可以【我的状态】命令查看余额!"); return(false); } ChargeTime(MsgDTO, new object[] { MsgDTO.FromGroup, (long)days }); osPerson.Diamonds -= diamondNeed; osPerson.Update(); return(true); }
public override bool OnMoneyReceived(ChargeModel model) { var diamonds = (int)(Math.Round(model.Amount, 2) * 100); var chargeRec = new VipChargeRecord() { QQNum = model.QQNum, ChargeAmount = model.Amount, ChargeTime = DateTime.Now, DiamondAmount = diamonds, Message = model.Message, OrderID = model.OrderID }; chargeRec.Insert(); var osPerson = OSPerson.GetPerson(model.QQNum); osPerson.Diamonds += diamonds; osPerson.Update(); MsgSender.PushMsg(0, model.QQNum, $"恭喜充值成功!当前余额:{osPerson.Diamonds}{Emoji.钻石}", model.BindAi); MsgSender.PushMsg(0, Global.DeveloperNumber, $"{model.QQNum}充值{model.Amount}元!", Global.DefaultConfig.MainAi); return(true); }
public bool ResetPetSkill(MsgInformationEx MsgDTO, object[] param) { const int ResetSkillCost = 100; var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Golds < ResetSkillCost) { MsgSender.PushMsg(MsgDTO, $"金币余额不足({osPerson.Golds.CurencyFormat()}/{ResetSkillCost.CurencyFormat()})"); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, ResetSkillCost, 10)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } var pet = PetRecord.Get(MsgDTO.FromQQ); var expRec = ExpeditionRecord.GetLastest(MsgDTO.FromQQ); if (expRec != null && expRec.IsExpediting) { MsgSender.PushMsg(MsgDTO, $"{pet.Name}正在【{expRec.Scene}】进行一项伟大的远征,请于{expRec.EndTime:yyyy-MM-dd HH:mm:ss}后再试!"); return(false); } pet.SkillReset(); pet.Update(); osPerson.Golds -= ResetSkillCost; osPerson.Update(); MsgSender.PushMsg(MsgDTO, "重置成功!"); return(true); }
public bool ShopInfo_Rare(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); var golds = osPerson.Golds; var todayRec = DailySellItemRareRecord.GetToday(); var tomorrowRec = DailySellItemRareRecord.GetTomorrow(); if (todayRec.IsOver) { MsgSender.PushMsg(MsgDTO, $"稀有商店休息中~\r\n下次开放时间:明天 {tomorrowRec.Hour}:00:00 ~ {tomorrowRec.Hour + 3}:00:00"); return(false); } if (todayRec.IsBefore) { MsgSender.PushMsg(MsgDTO, $"稀有商店休息中~\r\n下次开放时间:今天 {todayRec.Hour}:00:00 ~ {todayRec.Hour + 3}:00:00"); return(false); } var sellItems = todayRec.Items; var record = ItemCollectionRecord.Get(MsgDTO.FromQQ); var itemsStr = string.Join("\r\n", sellItems.Select(si => $"{si.Name}({HonorSvc.FindHonorFullName(si.Name)})({record.GetCount(si.Name)})({si.Attr}):{si.Price.CurencyFormat()}")); var msg = $"当前售卖的商品:\r\n{itemsStr}\r\n你当前持有 {golds.CurencyFormat()}"; MsgSender.PushMsg(MsgDTO, msg); return(true); }
private bool DealDiet(MsgInformationEx MsgDTO, string name, long aimQQ, int price) { var aimDietRec = CookingRecord.Get(aimQQ); if (!aimDietRec.CheckDiet(name)) { MsgSender.PushMsg(MsgDTO, "对方没有该菜肴!"); return(false); } var dietModel = CookingDietSvc[name]; if (dietModel.EstimatedPrice < price) { MsgSender.PushMsg(MsgDTO, $"交易价格不能低于该菜肴的成本价格({dietModel.EstimatedPrice.CurencyFormat()})!"); return(false); } var sourceOSPerson = OSPerson.GetPerson(MsgDTO.FromQQ); var fee = OSPersonBuff.CheckBuff(MsgDTO.FromQQ, "苍天") ? 0 : price / 20; if (sourceOSPerson.Golds < price + fee) { MsgSender.PushMsg(MsgDTO, "你没有足够的金币来支付!"); return(false); } var count = aimDietRec.CookedDietDic[name]; var msg = $"收到来自 {CodeApi.Code_At(MsgDTO.FromQQ)} 的交易请求:\r\n" + $"希望得到的菜肴:{name}\r\n" + $"价格:{price.CurencyFormat()}({dietModel.EstimatedPrice.CurencyFormat()})\r\n" + $"你当前持有:{count}个,是否确认交易?"; if (!WaiterSvc.WaitForConfirm(MsgDTO.FromGroup, aimQQ, msg, MsgDTO.BindAi, 10)) { MsgSender.PushMsg(MsgDTO, "交易取消!"); return(false); } var sourceDietRec = CookingRecord.Get(MsgDTO.FromQQ); sourceDietRec.AddDiet(name); sourceDietRec.Update(); aimDietRec.DietConsume(name); aimDietRec.Update(); sourceOSPerson.Golds -= price + fee; sourceOSPerson.Update(); var aimOSPerson = OSPerson.GetPerson(aimQQ); aimOSPerson.Golds += price; aimOSPerson.Update(); MsgSender.PushMsg(MsgDTO, "交易完毕!"); return(true); }
public bool Buy(MsgInformationEx MsgDTO, object[] param) { var name = param[0] as string; var vipSvc = DailyVipShopSvc[name]; if (vipSvc != null) { DailyVipShopSvc.Serve(MsgDTO, name); return(false); } if (OSPersonBuff.CheckBuff(MsgDTO.FromQQ, "快晴")) { MsgSender.PushMsg(MsgDTO, "你无法进行该操作!(快晴)"); return(false); } var sellingItems = TransHelper.GetDailySellItems(); var todayRec = DailySellItemRareRecord.GetToday(); if (DateTime.Now.Hour >= todayRec.Hour && DateTime.Now.Hour <= todayRec.Hour + 2) { sellingItems = sellingItems.Concat(todayRec.Items); } var sellItem = sellingItems.FirstOrDefault(si => si.Name == name); if (sellItem == null) { MsgSender.PushMsg(MsgDTO, "此物品未在商店中售卖!"); return(false); } var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Golds < sellItem.Price) { MsgSender.PushMsg(MsgDTO, "你持有的金币不足以购买此物品!"); return(false); } var price = OSPersonBuff.CheckBuff(MsgDTO.FromQQ, "极光") ? sellItem.Price * 80 / 100 : sellItem.Price; if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, price)) { MsgSender.PushMsg(MsgDTO, "交易取消!"); return(false); } var record = ItemCollectionRecord.Get(MsgDTO.FromQQ); var incomeMsg = record.ItemIncome(sellItem.Name); OSPerson.GoldConsume(osPerson.QQNum, price); MsgSender.PushMsg(MsgDTO, $"{incomeMsg}\r\n购买成功!你当前剩余的金币为 {(osPerson.Golds - sellItem.Price).CurencyFormat()}"); return(true); }
public bool Purchase(MsgInformationEx MsgDTO) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); osPerson.Golds += 10000; osPerson.Update(); MsgSender.PushMsg(MsgDTO, $"兑换成功,你当前持有的金币为:{osPerson.Golds.CurencyFormat()}"); return(true); }
public bool Reborn(MsgInformationEx MsgDTO, object[] param) { var itemColl = ItemCollectionRecord.Get(MsgDTO.FromQQ); if (itemColl.HonorCollections.IsNullOrEmpty()) { MsgSender.PushMsg(MsgDTO, "你尚未集齐所有非限定物品!", true); return(false); } var normalHonors = itemColl.HonorCollections.Where(h => h.Value.Type == HonorType.Normal).ToList(); var items = normalHonors.Select(p => p.Value).SelectMany(h => h.Items.Keys).ToList(); var allItems = HonorSvc.HonorList.Where(h => !(h is LimitHonorModel)).SelectMany(h => h.Items).Select(p => p.Name); if (items.Count != allItems.Count()) { MsgSender.PushMsg(MsgDTO, "你尚未集齐所有非限定物品!", true); return(false); } var response = WaiterSvc.WaitForInformation(MsgDTO, $"请输入想获取的荣誉称号名称(不能超过{RebornHonorLimit}个字)", info => info.FromQQ == MsgDTO.FromQQ && info.FromGroup == MsgDTO.FromGroup && info.Msg != null && info.Msg.Length <= RebornHonorLimit, 10); if (response == null) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } var honorName = response.Msg; var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.HonorNames.Contains(honorName)) { MsgSender.PushMsg(MsgDTO, "你已经获取了该荣誉称号,操作取消!"); return(false); } osPerson.Level++; osPerson.HonorNames.Add(honorName); foreach (var honor in normalHonors.Select(p => p.Key)) { TransHelper.SellHonorToShop(itemColl, honor, osPerson); } itemColl.Update(); osPerson.Update(); MsgSender.PushMsg(MsgDTO, $"恭喜【{honorName}】,转生成功!"); return(true); }
public void Serve(MsgInformationEx MsgDTO, string serviceName) { var armer = Armers.FirstOrDefault(p => p.Name == serviceName); if (armer == null) { MsgSender.PushMsg(MsgDTO, $"未找到相关内容:{serviceName}"); return; } var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Diamonds < armer.DiamondsNeed) { MsgSender.PushMsg(MsgDTO, $"钻石余额不足({osPerson.Diamonds.CurencyFormat("Diamond")}/{armer.DiamondsNeed.CurencyFormat("Diamond")})!"); return; } if (!CheckLimit(MsgDTO, armer)) { return; } if (!CheckMaxContains(MsgDTO, armer)) { return; } if (!WaiterSvc.WaitForConfirm(MsgDTO, $"此操作将花费{armer.DiamondsNeed.CurencyFormat("Diamond")},是否继续?")) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return; } if (!armer.Purchase(MsgDTO)) { return; } osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); osPerson.Diamonds -= armer.DiamondsNeed; osPerson.Update(); var purchaseRec = new VipSvcPurchaseRecord() { QQNum = MsgDTO.FromQQ, SvcName = armer.Name, PurchaseTime = DateTime.Now, Diamonds = armer.DiamondsNeed }; purchaseRec.Insert(); }
public bool DiamondBonus(MsgInformationEx MsgDTO, object[] param) { var qqNum = (long)param[0]; var diamonds = (int)(long)param[1]; var osPerson = OSPerson.GetPerson(qqNum); osPerson.Diamonds += diamonds; osPerson.Update(); MsgSender.PushMsg(MsgDTO, "奖励已生效!"); return(true); }
public bool DrawLottery(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Golds < LotterySvc.LotteryFee) { MsgSender.PushMsg(MsgDTO, $"你没有足够的金币开箱子({osPerson.Golds.CurencyFormat()}/{LotterySvc.LotteryFee.CurencyFormat()})", true); return(false); } RandomLottery(MsgDTO); return(true); }
public bool SellRedundant(MsgInformationEx MsgDTO, object[] param) { if (OSPersonBuff.CheckBuff(MsgDTO.FromQQ, "快晴")) { MsgSender.PushMsg(MsgDTO, "你无法进行该操作!(快晴)"); return(false); } var record = ItemCollectionRecord.Get(MsgDTO.FromQQ); var ics = record.HonorCollections.Values.SelectMany(hc => hc.Items.Where(p => p.Value > 1)).ToList(); if (ics.IsNullOrEmpty()) { MsgSender.PushMsg(MsgDTO, "你没有任何多余的物品!"); return(false); } var ictm = ics.Select(p => new { p.Key, Count = p.Value - 1, IsLimit = HonorSvc.IsLimitItem(p.Key), Price = HonorSvc.GetItemPrice(HonorSvc.FindItem(p.Key), MsgDTO.FromQQ) }).ToList(); var msg = $"你即将贩卖{ictm.Sum(i => i.Count)}件物品," + $"其中有{ictm.Count(i => i.IsLimit)}件限定物品," + $"共价值{ictm.Sum(p => p.Price * p.Count).CurencyFormat()},是否继续?"; if (!WaiterSvc.WaitForConfirm(MsgDTO, msg)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } foreach (var ic in ictm) { record.ItemConsume(ic.Key, ic.Count); } record.Update(); var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); osPerson.Golds += ictm.Sum(p => p.Price * p.Count); osPerson.Update(); MsgSender.PushMsg(MsgDTO, $"贩卖成功,你当前拥有{osPerson.Golds.CurencyFormat()}!"); return(true); }
public bool ShopInfo(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); var golds = osPerson.Golds; var sellItems = TransHelper.GetDailySellItems(); var record = ItemCollectionRecord.Get(MsgDTO.FromQQ); var itemsStr = string.Join("\r\n", sellItems.Select(si => $"{si.Name}({HonorSvc.FindHonorFullName(si.Name)})({record.GetCount(si.Name)})({si.Attr}):{si.Price.CurencyFormat()}")); var msg = $"今日售卖的商品:\r\n{itemsStr}\r\n你当前持有 {golds.CurencyFormat()}"; MsgSender.PushMsg(MsgDTO, msg); return(true); }
public bool MyGifts(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.GiftDic.IsNullOrEmpty()) { MsgSender.PushMsg(MsgDTO, "你当前没有任何礼物!", true); return(false); } var msg = string.Join(",", osPerson.GiftDic.Select(p => $"{p.Key}*{p.Value}")); MsgSender.PushMsg(MsgDTO, $"你当前持有的礼物:\r\n{msg}"); return(true); }
public bool SetPetAttr(MsgInformationEx MsgDTO, object[] param) { var pet = PetRecord.Get(MsgDTO.FromQQ); var needGolds = false; OSPerson osPerson = null; if (!string.IsNullOrEmpty(pet.Attribute)) { osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Golds < 300) { MsgSender.PushMsg(MsgDTO, $"金币余额不足!({osPerson.Golds.CurencyFormat()}/{300.CurencyFormat()})"); return(false); } if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, 300)) { MsgSender.PushMsg(MsgDTO, "操作取消"); return(false); } needGolds = true; } var randAttrs = Rander.RandSort(PetExtent.AllAttributes.ToArray()); var msg = $"请选择宠物食性:\r\n{string.Join("\r\n", randAttrs.Select((p, idx) => $"{idx + 1}:{p}"))}"; var selectedIdx = WaiterSvc.WaitForNum(MsgDTO.FromGroup, MsgDTO.FromQQ, msg, i => i > 0 && i <= randAttrs.Length, MsgDTO.BindAi); if (selectedIdx == -1) { MsgSender.PushMsg(MsgDTO, "操作取消"); return(false); } pet.Attribute = randAttrs[selectedIdx - 1]; pet.Update(); if (needGolds) { osPerson.Golds -= 300; osPerson.Update(); } MsgSender.PushMsg(MsgDTO, "设定成功!"); return(true); }
private void FishItem(MsgInformationEx MsgDTO) { if (OSPersonBuff.CheckBuff(MsgDTO.FromQQ, "梅雨") && Rander.RandInt(100) < 30) { MsgSender.PushMsg(MsgDTO, "欸呀呀,捞瓶子失败了!(梅雨)", true); return; } var item = HonorSvc.RandItem(); var record = ItemCollectionRecord.Get(MsgDTO.FromQQ); var honorName = HonorSvc.FindHonorName(item.Name); var count = 1; var vipArmers = VipArmerRecord.Get(MsgDTO.FromQQ); if (vipArmers.CheckArmer("安妮的镜子")) { count = 2; } vipArmers.Armers.Remove(p => p.Name == "安妮的镜子"); vipArmers.Update(); DriftBottleAnalyzeRecord.Record(item.Name, count); var s = record.ItemIncome(item.Name, count); var msg = "你捞到了 \r\n" + $"{(string.IsNullOrEmpty(item.PicPath) ? string.Empty : $"{CodeApi.Code_Image_Relational(item.PicPath)}\r\n")}" + $"{item.Name}{(count > 1 ? $"*{count}" : string.Empty)} \r\n" + $" {item.Description} \r\n" + $"稀有率为 {HonorSvc.ItemRate(item)}%\r\n" + $"售价为:{item.Price} 金币\r\n" + $"特性:{(item.Attributes == null ? "无" : string.Join(",", item.Attributes))}\r\n" + $"你总共拥有该物品 {record.HonorCollections[honorName].Items[item.Name]}个"; if (!string.IsNullOrEmpty(s)) { msg += $"\r\n{s}"; } if (OSPersonBuff.CheckBuff(MsgDTO.FromQQ, "钻石尘") && Rander.RandInt(100) < 50) { OSPerson.GoldConsume(MsgDTO.FromQQ, 40); msg += "\r\n欸呀呀,你丢失了40金币(钻石尘)"; } MsgSender.PushMsg(MsgDTO, msg, true); }
public bool PresentGift(MsgInformationEx MsgDTO, object[] param) { var aimQQ = (long)param[0]; var name = param[1] as string; if (aimQQ == MsgDTO.FromQQ) { MsgSender.PushMsg(MsgDTO, "你居然给自己送礼物!", true); return(false); } var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.GiftDic == null || !osPerson.GiftDic.ContainsKey(name)) { MsgSender.PushMsg(MsgDTO, "你没有这个礼物!", true); return(false); } var gift = GiftSvc[name]; osPerson.GiftDic[name]--; osPerson.Update(); var glamourRecord = GlamourRecord.Get(MsgDTO.FromGroup, aimQQ); glamourRecord.Glamour += gift.Glamour; glamourRecord.Update(); var relationship = new IntimateRelationshipRecord() { GroupNum = MsgDTO.FromGroup, QQPair = new [] { MsgDTO.FromQQ, aimQQ }, Value = gift.Intimate, Name = gift.Name }; relationship.Insert(); var msg = $"赠送成功!对方增加了 {gift.Glamour} 点魅力值,你们之间的羁绊值增加了 {gift.Intimate} 点!"; MsgSender.PushMsg(MsgDTO, msg, true); return(true); }
public bool MakeGift(MsgInformationEx MsgDTO, object[] param) { var name = param[0] as string; var gift = GiftSvc[name]; if (gift == null) { MsgSender.PushMsg(MsgDTO, "未查找到该礼物!"); return(false); } var sellingGifts = GiftSvc.SellingGifts; if (sellingGifts.All(p => p.Name != name)) { MsgSender.PushMsg(MsgDTO, "该礼物未在礼物商店中出售,请使用 礼物商店 命令查看今日可兑换的礼物!", true); return(false); } var itemRecord = ItemCollectionRecord.Get(MsgDTO.FromQQ); var mdic = itemRecord.HonorCollections.SelectMany(p => p.Value.Items).ToDictionary(p => p.Key, p => p.Value); var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (!gift.Check(mdic, osPerson.Golds, out var msg)) { MsgSender.PushMsg(MsgDTO, $"兑换{name}需要:\r\n{msg}材料不足,无法兑换!"); return(false); } if (!WaiterSvc.WaitForConfirm(MsgDTO, $"兑换{name}需要:\r\n{msg}是否兑换?")) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } itemRecord.ItemConsume(gift.MaterialDic); itemRecord.Update(); osPerson.Golds -= gift.GoldNeed; osPerson.GiftIncome(name); osPerson.Update(); MsgSender.PushMsg(MsgDTO, "兑换成功!可以使用 赠送礼物 命令将礼物送给其他人!", true); return(true); }
public bool VipShop(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); if (osPerson.Diamonds <= 0) { MsgSender.PushMsg(MsgDTO, "很抱歉,你当前的钻石余额不足,无法打开vip商店!"); return(false); } var goodsName = DailyVipGoodsRecord.GetToday(MsgDTO.FromQQ).GoodsName; var goods = goodsName.Select(g => DailyVipShopSvc[g]).ToList(); var goodsMsg = string.Join("\r\n", goods.Select(g => $"{g.Name}({g.DiamondsNeed.CurencyFormat("Diamond")}):{g.Description}")); var msg = $"今天提供的vip服务有:\r\n{goodsMsg}\r\n你当前余额为:{osPerson.Diamonds.CurencyFormat("Diamond")}"; MsgSender.PushMsg(MsgDTO, msg); return(true); }
private void Settlement() { var msg = $"对决结束!{CodeApi.Code_At(Winner.QQNum)}获取了胜利!"; if (Bonus > 0) { msg += $"\r\n获得了全部赏金 {Bonus}金币!"; var osPerson = OSPerson.GetPerson(Winner.QQNum); osPerson.Golds += Bonus; osPerson.Update(); } MsgSender.PushMsg(GroupNum, 0, msg, BindAi); foreach (var player in players) { var p = AdvPlayer.GetPlayer(player.QQNum); p.BattleRecord(p.QQNum == Winner.QQNum); p.Update(); if (p.QQNum != Winner.QQNum) { var osPerson = OSPerson.GetPerson(p.QQNum); osPerson.Golds -= 100; osPerson.Update(); MsgSender.PushMsg(GroupNum, p.QQNum, $"你不幸输掉了对决,扣除100金币,你剩余金币为 {osPerson.Golds}", BindAi); continue; } if (p.WinTotal % 10 != 0) { continue; } var items = HonorSvc.CurMonthLimitItems(); var item = items.RandElement(); MsgSender.PushMsg(GroupNum, p.QQNum, $"你已经累计赢得 {p.WinTotal}场对决,获取额外奖励 {item.Name}*1", BindAi); var record = ItemCollectionRecord.Get(p.QQNum); var honorMsg = record.ItemIncome(item.Name); if (!string.IsNullOrEmpty(honorMsg)) { MsgSender.PushMsg(GroupNum, 0, honorMsg, BindAi); } } }
public bool Present(MsgInformationEx MsgDTO, object[] param) { var aimNum = (long)param[0]; var name = param[1] as string; var sourceRecord = ItemCollectionRecord.Get(MsgDTO.FromQQ); if (!sourceRecord.CheckItem(name)) { MsgSender.PushMsg(MsgDTO, "你没有此物品", true); return(false); } var itemModel = HonorSvc.FindItem(name); var price = HonorSvc.GetItemPrice(itemModel, MsgDTO.FromQQ) * 5 / 100; if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, price)) { MsgSender.PushMsg(MsgDTO, "操作取消!"); return(false); } var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); osPerson.Golds -= price; osPerson.Update(); sourceRecord.ItemConsume(name); sourceRecord.Update(); var aimRecord = ItemCollectionRecord.Get(aimNum); var msg = aimRecord.ItemIncome(name); var res = "赠送成功!"; if (!string.IsNullOrEmpty(msg)) { res += $"\r\n{msg}"; } MsgSender.PushMsg(MsgDTO, res); return(true); }
public bool ViewItem(MsgInformationEx MsgDTO, object[] param) { var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ); var itemRecord = ItemCollectionRecord.Get(MsgDTO.FromQQ); var glamourRecord = GlamourRecord.Get(MsgDTO.FromGroup, MsgDTO.FromQQ); var normalHonors = itemRecord.HonorCollections.Where(h => h.Value.Type == HonorType.Normal).ToList(); var items = normalHonors.Select(p => p.Value).SelectMany(h => h.Items.Keys).ToList(); var allNormalItems = HonorSvc.HonorList.Where(h => !h.IsLimit).SelectMany(h => h.Items).Select(p => p.Name).ToArray(); var msgList = new List <string>(); if (!osPerson.HonorNames.IsNullOrEmpty()) { msgList.Add(string.Join("", osPerson.HonorNames.Select(h => $"【{h}】"))); } msgList.Add($"等级:{osPerson.EmojiLevel}"); msgList.Add($"经验值:{items.Count}/{allNormalItems.Length}{(items.Count == allNormalItems.Length ? "(可转生)" : string.Empty)}"); msgList.Add($"金币:{osPerson.Golds.CurencyFormat()}"); if (osPerson.Diamonds > 0) { msgList.Add($"钻石:{osPerson.Diamonds.CurencyFormat("Diamond")}"); } msgList.Add($"物品数量:{itemRecord.TotalItemCount()}"); msgList.Add($"成就数量:{itemRecord.HonorList?.Count ?? 0}"); if (glamourRecord.Glamour > 0) { msgList.Add($"魅力值:{glamourRecord.Glamour}"); } var buffs = OSPersonBuff.Get(MsgDTO.FromQQ); if (!buffs.IsNullOrEmpty()) { msgList.Add("Buff列表:"); msgList.AddRange(buffs.Select(b => $"{b.Name}:{b.Description}({b.ExpiryTime})")); } MsgSender.PushMsg(MsgDTO, string.Join("\r\n", msgList), true); 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.GoldIncome(MsgDTO.FromQQ, goldsGen); var indexNo = SignInGroupInfo.GetAndUpdate(MsgDTO.FromGroup); var msg = $"签到成功!你已连续签到 {sign.SuccessiveDays}天,获得 {goldsGen.CurencyFormat()}!\r\n本群签到排名:【No.{indexNo}】"; if (sign.SuccessiveDays % 10 == 0) { var cache = PersonCacheRecord.Get(MsgDTO.FromQQ, "抽奖"); cache.Value = !string.IsNullOrEmpty(cache.Value) && int.TryParse(cache.Value, out var times) ? (times + 1).ToString() : 1.ToString(); cache.Update(); msg += "\r\n恭喜你获得一次抽奖机会,快去试试吧(当日有效!)"; } MsgSender.PushMsg(MsgDTO, msg, true); }