示例#1
0
        public bool MyArmers_Paged(MsgInformationEx MsgDTO, object[] param)
        {
            var pageNo = (int)(long)param[0];

            var paRec = PersonArmerRecord.Get(MsgDTO.FromQQ);

            if (paRec.Armers.IsNullOrEmpty())
            {
                MsgSender.PushMsg(MsgDTO, "你尚未拥有任何装备!", true);
                return(true);
            }

            var armerInfos     = paRec.Armers.Select(a => new { Count = a.Value, Model = ArmerSvc[a.Key] }).OrderBy(p => p.Model.Kind).ThenByDescending(p => p.Model.Price).ToList();
            var totalPageCount = (armerInfos.Count - 1) / 20 + 1;

            if (pageNo <= 0 || pageNo > totalPageCount)
            {
                MsgSender.PushMsg(MsgDTO, "页码错误!", true);
                return(false);
            }

            var showInfos = armerInfos.Skip((pageNo - 1) * 20).Take(20);
            var msg       = string.Join(", ", showInfos.Select(a => $"{a.Model.Name}*{a.Count}"));

            msg = $"该页的装备有:\r\n{msg}";
            if (armerInfos.Count > 20)
            {
                msg += $"\r\n当前显示第 {pageNo}/{totalPageCount}页,请使用 我的装备 [页码] 命令查看更多装备!";
            }
            MsgSender.PushMsg(MsgDTO, msg, true);
            return(true);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        public bool MyArmers(MsgInformationEx MsgDTO, object[] param)
        {
            var paRec = PersonArmerRecord.Get(MsgDTO.FromQQ);

            if (paRec.Armers.IsNullOrEmpty())
            {
                MsgSender.PushMsg(MsgDTO, "你尚未拥有任何装备!", true);
                return(true);
            }

            var armerInfos = paRec.Armers.Select(a => new { Count = a.Value, Model = ArmerSvc[a.Key] }).OrderBy(p => p.Model.Kind).ThenByDescending(p => p.Model.Price).ToList();
            var showInfos  = armerInfos.Take(20);
            var msg        = string.Join(", ", showInfos.Select(a => $"{a.Model.Name}*{a.Count}"));

            msg = $"你持有的装备有:\r\n{msg}";
            if (armerInfos.Count > 20)
            {
                msg += $"\r\n当前显示第 1/{(armerInfos.Count - 1) / 20 + 1}页,请使用 我的装备 [页码] 命令查看更多装备!";
            }
            MsgSender.PushMsg(MsgDTO, msg, true);
            return(true);
        }
示例#6
0
        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();
        }