Beispiel #1
0
        public static string SaveLogindata(string account, string platformCode, string extraData = "", string kgext = "")
        {
            string returnCode = "";

            try
            {
                ManagerClient reader = new ManagerClient();
                var           user   = reader.GetUserByAccount(account, GetRealIP());

                if (user != null)
                {
                    var sessionId = ShareUtil.GenerateComb().ToString();
                    SetFormsAuthentication(account, Guid.Empty, "", 1, sessionId);
                    //转页

                    returnCode = UAErrorCode.ErrOK;
                }
                else
                {
                    returnCode = UAErrorCode.ErrNoUser;
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("UAHelper SaveLogindata", ex);
                returnCode = UAErrorCode.ErrOther;
            }
            return(returnCode);
        }
Beispiel #2
0
        static MessageCode InnerSaveMixNew(NbManagerEntity manager, Guid mid, SkillBagWrap bag, int coin, string setSkills = null)
        {
            int errorCode = (int)MessageCode.FailUpdate;

            using (var tranMgr = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
            {
                tranMgr.BeginTransaction();
                do
                {
                    var mess = ManagerCore.Instance.CostCoin(manager, coin, EnumCoinConsumeSourceType.SkillUpgrade,
                                                             ShareUtil.GenerateComb().ToString(), tranMgr.TransactionObject);
                    if (mess != MessageCode.Success)
                    {
                        break;
                    }
                    NbManagerskillbagMgr.MixUpTran(false, mid, setSkills, bag.SetMap, "", bag.RawBag.RowVersion, ref errorCode);
                }while (false);
                if (errorCode == (int)MessageCode.Success)
                {
                    tranMgr.Commit();
                }
                else
                {
                    tranMgr.Rollback();
                }
            }
            return((MessageCode)errorCode);
        }
Beispiel #3
0
 protected void btn_SendMallItem_Click(object sender, EventArgs e)
 {
     try
     {
         if (CheckManager())
         {
             var mallitemId = ConvertHelper.ConvertToInt(txt_mallId.Text);
             if (mallitemId <= 0)
             {
                 ShowMessage("请输入正确的道具ID");
                 return;
             }
             var code = TxBuyPointShipments(_account.ManagerId, ShareUtil.GenerateComb().ToString(), mallitemId,
                                            _account.ZoneId);
             if (code == "")
             {
                 ShowMessage("发送成功");
             }
             else
             {
                 ShowMessage(code);
             }
         }
     }
     catch (Exception ex)
     {
         LogHelper.Insert(ex);
         ShowMessage(ex.Message);
     }
 }
Beispiel #4
0
        public MatchCreateResponse Fight(Guid managerId, Guid awayId)
        {
            var lastTime = MemcachedFactory.FriendMutexClient.Get <DateTime>(managerId);

            if (lastTime > DateTime.Now)
            {
                return(ResponseHelper.Create <MatchCreateResponse>(MessageCode.FriendMatchWait));
            }

            //好友比赛每天每个好友只能挑战3次, 只有第一次有奖励
            var friend = FriendManagerMgr.GetOne(managerId, awayId);

            if (friend.DayMatchCount >= 3)//每日三次比赛
            {
                return(ResponseHelper.Create <MatchCreateResponse>(MessageCode.FriendMatchOver));
            }

            var matchId = ShareUtil.GenerateComb();
            var code    = MatchCore.CreateMatchFriendAsyn(matchId, managerId, awayId, friend, MatchCallback);

            if (code != MessageCode.Success)
            {
                return(ResponseHelper.Create <MatchCreateResponse>(code));
            }
            MemcachedFactory.FriendMutexClient.Set(managerId, DateTime.Now.AddSeconds(_friendMatchWaitTime));

            return(ResponseHelper.MatchCreateResponse(matchId));
        }
Beispiel #5
0
        private void BuyPointTx()
        {
            int mallcode     = GetParamInt("mallcode");
            var responsepara = reader.TxBuyPointPara(UserAccount.ManagerId, mallcode);
            var response     = new MallTxBuyPointResultResponse();

            if (responsepara.Code != (int)MessageCode.Success)
            {
                response.Code = responsepara.Code;
                OutputHelper.Output(response);
                return;
            }
            string orderId = ShareUtil.GenerateComb() + "";
            int    cost    = 1;
            var    code    = BuyPlayzoneItem(responsepara.Data.OpenId, responsepara.Data.Openkey, responsepara.Data.Pf,
                                             UAFactory.Instance.TxAppId, UAFactory.Instance.TxAppKey, responsepara.Data.ItemId,
                                             responsepara.Data.ZoneId, ref orderId, ref cost);

            if (code != (int)MessageCode.Success)
            {
                response.Code = code;
                OutputHelper.Output(response);
                return;
            }
            response = reader.TxBuyPointShipments(UserAccount.ManagerId, orderId, cost, responsepara.Data.MallCode);
            if (response.Code != (int)MessageCode.Success)
            {
                response.Code = (int)MessageCode.PaySuccessAndShipmentsBeDefeated;
            }
            OutputHelper.Output(response);
        }
Beispiel #6
0
        private MessageCode Tran_SaveWincountPrizePrize(DbTransaction transaction, NbManagerEntity manager, LeagueWincountrecordEntity leagueWincountRecord, ItemPackageFrame package, int point, int coin)
        {
            if (point > 0)
            {
                var code = PayCore.Instance.AddBonus(leagueWincountRecord.ManagerId, point,
                                                     EnumChargeSourceType.LeaguePrize, ShareUtil.GenerateComb().ToString(), transaction);
                if (code != MessageCode.Success)
                {
                    return(code);
                }
            }
            else if (coin > 0)
            {
                var code = ManagerCore.Instance.AddCoin(manager, coin, EnumCoinChargeSourceType.LeaguePrize,
                                                        ShareUtil.GenerateComb().ToString(), transaction);
                if (code != MessageCode.Success)
                {
                    return(code);
                }
            }
            else
            {
                if (!package.Save(transaction))
                {
                    return(MessageCode.FailUpdate);
                }
                package.Shadow.Save();
            }

            if (!LeagueWincountrecordMgr.Update(leagueWincountRecord, transaction))
            {
                return(MessageCode.FailUpdate);
            }
            return(MessageCode.Success);
        }
Beispiel #7
0
 private MessageCode SaveRankPrize(NbManagerEntity manager, LeagueRecordEntity leagueRecord, LeagueManagerrecordEntity mLeagueRecord, LaegueManagerinfoEntity leagueManagerinfo, ItemPackageFrame package, int point, DbTransaction trans)
 {
     if (!ManagerUtil.SaveManagerData(manager, null, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LeagueRecordMgr.Update(leagueRecord, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LeagueManagerrecordMgr.Update(mLeagueRecord, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LaegueManagerinfoMgr.Update(leagueManagerinfo, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (package != null)
     {
         if (!package.Save(trans))
         {
             return(MessageCode.NbUpdateFail);
         }
         package.Shadow.Save();
     }
     if (point > 0)
     {
         var code = PayCore.Instance.AddBonus(manager.Idx, point, EnumChargeSourceType.LeaguePrize,
                                              ShareUtil.GenerateComb().ToString(), trans);
         return(code);
     }
     return(MessageCode.Success);
 }
Beispiel #8
0
        private void SelectManager()
        {
            var managerId = GetParamGuid("g");

            if (!CheckParam(managerId))
            {
                return;
            }
            var info = reader.SelectManager(UserAccount.Account, managerId, GetIp(),
                                            UAFactory.Instance.IsTx);
            var sessionId = ShareUtil.GenerateComb().ToString();

            if (info.Code == (int)MessageCode.Success)
            {
                if (CheckLockState(info.Data.Manager.Idx))
                {
                    OutputHelper.Output(MessageCode.LoginOnlineLock);
                    return;
                }

                //写入登录信息
                var cookie = UAHelper.SetFormsAuthentication(UserAccount.Account, info.Data.Manager.Idx,
                                                             info.Data.Manager.Name, 1, sessionId);
                OnlineMgr.LoginSession(info.Data.Manager.Idx, sessionId);
                onlineClient.RiseOnlineTime(info.Data.Manager.Idx);
                info.Data.Cookie = cookie;
            }
            OutputHelper.Output(info);
        }
Beispiel #9
0
        /// <summary>
        /// 将加入本轮天梯赛的经理推进比赛池.
        /// </summary>
        /// <returns></returns>
        public LadderInfoEntity GetCompetitorToMatch()
        {
            //将状态置为分组
            var fightList   = new List <LadderManagerEntity>();
            var arenaLadder = new LadderInfoEntity();

            lock (_competitorLock)
            {
                ManagerFightDic = new Dictionary <Guid, Guid>();
                foreach (var dic in CompetitorDic)
                {
                    //将经理推进比赛池
                    ManagerFightDic.Add(dic.Key, Guid.Empty);
                    fightList.Add(dic.Value);
                }
                Status                   = EnumLadderStatus.Grouping;
                arenaLadder.Idx          = ShareUtil.GenerateComb();
                arenaLadder.FightList    = fightList;
                arenaLadder.StartTime    = StartTime;
                arenaLadder.GroupingTime = DateTime.Now;

                //开始新一轮报名
                CreateLadder();
            }

            return(arenaLadder);
        }
Beispiel #10
0
        /// <summary>
        /// Builds the match info.
        /// </summary>
        /// <param name="ladderId">The ladder id.</param>
        /// <param name="group">The group.</param>
        /// <param name="home">The home.</param>
        /// <param name="away">The away.</param>
        /// <param name="fightDic">The fight dic.</param>
        private void BuildMatchInfo(Guid ladderId, int group, LadderManagerEntity home, LadderManagerEntity away, ConcurrentDictionary <Guid, LadderMatchEntity> fightDic)
        {
            try
            {
                //筛选条件,当两个玩家分差超过阀值,将他们扔到排队池里继续等待
                //int tmpScore = home.Score - away.Score;
                //if (tmpScore <= _arenaLowScore || tmpScore >= _arenaHighScore)
                //{
                //    if (!home.IsBot)
                //        LadderCore.Instance.PushFightToCompetitor(home.Clone());
                //    if (!away.IsBot)
                //        LadderCore.Instance.PushFightToCompetitor(away.Clone());
                //    return;
                //}

                var matchId     = ShareUtil.GenerateComb();
                var ladderMatch = new LadderMatchEntity(home, away, matchId, ladderId, group + 1);
                fightDic.TryAdd(ladderMatch.Idx, ladderMatch);

                MemcachedFactory.LadderMatchClient.Set(ladderMatch.Idx, ladderMatch);
                //更新经理-比赛关联字典
                if (!home.IsBot)
                {
                    LadderCore.Instance.ManagerFightDic[home.ManagerId] = matchId;
                }
                if (!away.IsBot)
                {
                    LadderCore.Instance.ManagerFightDic[away.ManagerId] = matchId;
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("LadderThread-BuildMatchInfo", ex.Message, ex.StackTrace);
            }
        }
        /// <summary>
        /// 注册球星启示录npc
        /// </summary>
        private void ReBuildRevelationNpc()
        {
            BuildCache();
            var allnpcTemp = ConfigRevelationnpctempMgr.GetAll();

            SqlHelper.ExecuteNonQuery(_connection, CommandType.Text, "Delete From Dic_Npc Where Type=3;Truncate table Config_RevelationNpcLink");
            int index = 0;

            foreach (var item in allnpcTemp)
            {
                index++;
                DicNpcEntity entity = new DicNpcEntity();
                entity.Idx                = ShareUtil.GenerateComb();
                entity.Type               = 3;
                entity.Name               = item.OpponentTeamName;
                entity.Logo               = 1;
                entity.FormationId        = item.FormationID;
                entity.FormationLevel     = item.PlayerLevel;
                entity.TeammemberLevel    = item.PlayerLevel;
                entity.PlayerCardStrength = item.PlayerCardStrength;
                entity.CoachId            = 0;
                entity.DoTalent           = GetDoTalent();         //主动天赋
                entity.ManagerSkill       = GetNodoManagerSkill(); //被动天赋和意志
                int comb = 0;
                entity.DoWill    = GetDoWill(ref comb);            //主动意志
                entity.CombLevel = item.PlayerLevel;
                entity.Buff      = item.Buff;

                entity.TP1 = item.P1;
                entity.TP2 = item.P2;
                entity.TP3 = item.P3;
                entity.TP4 = item.P4;
                entity.TP5 = item.P5;
                entity.TP6 = item.P6;
                entity.TP7 = item.P7;

                entity.TE1 = 211071;
                entity.TE2 = 211076;
                entity.TE3 = 211072;
                entity.TE4 = 211073;
                entity.TE5 = 211074;
                entity.TE6 = 211075;
                entity.TE7 = 211077;

                entity.TS1 = "A031_40";
                entity.TS2 = "A033_40";
                entity.TS3 = "A027_40";
                entity.TS4 = "A034_40";
                entity.TS5 = "A030_40";
                entity.TS6 = "A032_40";
                entity.TS7 = "A028_40";
                DicNpcMgr.Insert(entity);
                ConfigRevelationnpclinkMgr.Insert(new ConfigRevelationnpclinkEntity(index, item.MarkId, item.Schedule,
                                                                                    entity.Idx));
                m_curCount++;
                ProgressBar1.Value = m_curCount;
                lblProcess.Content = string.Format("进度:{0}/{1}", m_curCount, m_totalCount);
            }
        }
Beispiel #12
0
        public static BaseMatchData CreateMatch(EnumMatchType matchType, Guid homeId, Guid awayId)
        {
            var matchId  = ShareUtil.GenerateComb();
            var stateObj = new BaseMatchData((int)matchType, matchId, homeId, awayId);

            MatchThread.Instance.CreateMatch(stateObj);
            return(stateObj);
        }
Beispiel #13
0
 private MessageCode SaveMatchConfirm(NbManagerEntity manager, ItemPackageFrame package, LeagueRecordEntity leagueRecordInfo,
                                      LeagueManagerrecordEntity nextManagerRecord, LeagueManagerrecordEntity leagueManagerRecord, int point,
                                      bool isUpdatenextManagerRecord, LaegueManagerinfoEntity leagueManagerInfo, LeagueFightMapFrame fightMap, NbManagerextraEntity managerExtra, LeagueWincountrecordEntity leagueWinCount, DbTransaction trans)
 {
     if (!ManagerUtil.SaveManagerData(manager, managerExtra, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!NbManagerextraMgr.Update(managerExtra, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (package != null)
     {
         if (!package.Save(trans))
         {
             return(MessageCode.NbUpdateFail);
         }
         package.Shadow.Save();
     }
     if (!LeagueRecordMgr.Update(leagueRecordInfo, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (isUpdatenextManagerRecord)
     {
         if (nextManagerRecord != null)
         {
             if (!LeagueManagerrecordMgr.Update(nextManagerRecord, trans))
             {
                 return(MessageCode.NbUpdateFail);
             }
         }
     }
     if (!LaegueManagerinfoMgr.Update(leagueManagerInfo, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LeagueManagerrecordMgr.Update(leagueManagerRecord, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (point > 0)
     {
         var code = PayCore.Instance.AddBonus(manager.Idx, point, EnumChargeSourceType.LeaguePrize,
                                              ShareUtil.GenerateComb().ToString(), trans);
         return(code);
     }
     if (!fightMap.SaveFIghtMap(trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LeagueWincountrecordMgr.Update(leagueWinCount, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     return(MessageCode.Success);
 }
Beispiel #14
0
        private void ManagerInfo()
        {
            if (UserAccount.ManagerId == Guid.Empty) //登录
            {
                var info = reader.GetManagerInfoByAccount(UserAccount.Account, GetIp(),
                                                          UAFactory.Instance.IsTx);

                var sessionId = ShareUtil.GenerateComb().ToString();
                if (info.Code == (int)MessageCode.Success)
                {
                    if (info.Data.NeedSelect == false)
                    {
                        if (info.Data.ManagerInfo == null)
                        {
                            string playerName = "";
                            string logo       = "1";
                            int    templateId = 1;
                            var    createData = reader.CreateManager(UserAccount.Account, playerName, logo, templateId,
                                                                     UAHelper.GetRealIP());
                            if (createData.Code != (int)MessageCode.Success)
                            {
                                info.Code = createData.Code;
                                OutputHelper.Output(info);
                                return;
                            }
                            info = reader.GetManagerInfoByAccount(UserAccount.Account, GetIp(),
                                                                  UAFactory.Instance.IsTx);
                        }

                        if (CheckLockState(info.Data.ManagerInfo.Manager.Idx))
                        {
                            OutputHelper.Output(MessageCode.LoginOnlineLock);
                            return;
                        }

                        //写入登录信息
                        string cookie = UAHelper.SetFormsAuthentication(UserAccount.Account,
                                                                        info.Data.ManagerInfo.Manager.Idx,
                                                                        info.Data.ManagerInfo.Manager.Name, 1, sessionId);
                        OnlineMgr.LoginSession(info.Data.ManagerInfo.Manager.Idx, sessionId);
                        onlineClient.RiseOnlineTime(info.Data.ManagerInfo.Manager.Idx);
                        info.Data.Cookie = cookie;
                    }
                }
                OutputHelper.Output(info);
            }
            else
            {
                if (CheckLockState(UserAccount.ManagerId))
                {
                    OutputHelper.Output(MessageCode.LoginOnlineLock);
                    return;
                }
                var info = reader.GetManagerInfo(UserAccount.ManagerId, UAFactory.Instance.IsTx);
                info.Data.Cookie = "";
                OutputHelper.Output(info);
            }
        }
Beispiel #15
0
        /// <summary>
        /// 生成物品基本信息
        /// </summary>
        /// <param name="itemType"></param>
        /// <param name="itemCode"></param>
        /// <param name="itemCount"></param>
        /// <param name="isBinding"></param>
        /// <returns></returns>
        public ConstellationInfoEntity BuildItem(int itemType, int itemCode, int itemCount, bool isBinding)
        {
            Guid itemId = ShareUtil.GenerateComb();

            LastAddItemId = itemId;

            LastAddItem = BuildItem(itemId, itemType, itemCode, itemCount, isBinding);
            return(LastAddItem);
        }
Beispiel #16
0
        public MessageCode ResetLeague(Guid managerId, int leagueId, int point)
        {
            DateTime date          = DateTime.Now;
            var      managerRecord = LeagueManagerrecordMgr.GetManagerMarkInfo(managerId, leagueId);

            managerRecord.LeagueRecordId = new Guid();//00000000-0000-0000-0000-000000000000
            //managerRecord.LastPrizeLeagueRecordId = new Guid();
            managerRecord.IsPass         = false;
            managerRecord.IsStart        = false;
            managerRecord.MatchNumber    = 0;
            managerRecord.Score          = 0;
            managerRecord.WinNumber      = 0;
            managerRecord.FlatNumber     = 0;
            managerRecord.LoseNumber     = 0;
            managerRecord.GoalsNumber    = 0;
            managerRecord.FumbleNumber   = 0;
            managerRecord.MaxWheelNumber = 0;
            managerRecord.UpdateTime     = date;
            managerRecord.FightDicId     = 0;
            var fightMap = new LeagueFightMapFrame(managerId);

            using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
            {
                transactionManager.BeginTransaction();
                MessageCode messCode = MessageCode.NbUpdateFail;
                do
                {
                    if (point > 0)
                    {
                        messCode = PayCore.Instance.GambleConsume(managerId, 50, ShareUtil.GenerateComb(),
                                                                  EnumConsumeSourceType.LeagueReset, transactionManager.TransactionObject);
                        if (messCode != MessageCode.Success)
                        {
                            break;
                        }
                    }
                    messCode = fightMap.ClearFightMap(transactionManager.TransactionObject);
                    if (messCode != MessageCode.Success)
                    {
                        break;
                    }
                    if (!LeagueManagerrecordMgr.Update(managerRecord, transactionManager.TransactionObject))
                    {
                        break;
                    }
                    messCode = MessageCode.Success;
                } while (false);
                if (messCode != MessageCode.Success)
                {
                    transactionManager.Rollback();
                    return(messCode);
                }
                transactionManager.Commit();
            }
            return(MessageCode.Success);
        }
        DicNpcEntity BuildBasicData(int playerLevel, int strengthenLevel, int eqLevel)
        {
            //阵型
            int formationId = RandomHelper.GetInt32(1, 17);
            //获取阵型
            var formationList = CacheFactory.FormationCache.GetFormationDetail(formationId);

            DicNpcEntity entity = new DicNpcEntity();

            entity.Idx  = ShareUtil.GenerateComb();
            entity.Type = 2;

            entity.Name               = GetName();
            entity.Logo               = 1;
            entity.FormationId        = formationId;
            entity.FormationLevel     = playerLevel;
            entity.TeammemberLevel    = playerLevel;
            entity.PlayerCardStrength = strengthenLevel;
            entity.CoachId            = 0;
            entity.DoTalent           = GetDoTalent();         //主动天赋
            entity.ManagerSkill       = GetNodoManagerSkill(); //被动天赋和意志
            int comb = 0;

            entity.DoWill    = GetDoWill(ref comb);//主动意志
            entity.CombLevel = playerLevel;
            entity.Buff      = 100 + playerLevel;

            entity.TP1 = GetPlayer(1, formationList.Values.ToList());
            entity.TP2 = GetPlayer(2, formationList.Values.ToList());
            entity.TP3 = GetPlayer(3, formationList.Values.ToList());
            entity.TP4 = GetPlayer(4, formationList.Values.ToList());
            entity.TP5 = GetPlayer(5, formationList.Values.ToList());
            entity.TP6 = GetPlayer(6, formationList.Values.ToList());
            entity.TP7 = GetPlayer(7, formationList.Values.ToList());

            entity.TE1 = GetEquipment(eqLevel);
            entity.TE2 = GetEquipment(eqLevel);
            entity.TE3 = GetEquipment(eqLevel);
            entity.TE4 = GetEquipment(eqLevel);
            entity.TE5 = GetEquipment(eqLevel);
            entity.TE6 = GetEquipment(eqLevel);
            entity.TE7 = GetEquipment(eqLevel);
            entity.TS1 = "";
            entity.TS2 = "";
            entity.TS3 = "";
            entity.TS4 = "";
            entity.TS5 = "";
            entity.TS6 = "";
            entity.TS7 = "";
            return(entity);
        }
Beispiel #18
0
        /// <summary>
        /// 天梯赛清除CD
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        public LadderClearCDResponse LadderClearCD(Guid managerId)
        {
            LadderClearCDResponse response = new LadderClearCDResponse();

            response.Data = new LadderClearCD();
            try
            {
                if (_ManagerMatchCD.ContainsKey(managerId))
                {
                    if (DateTime.Now >= _ManagerMatchCD[managerId])
                    {
                        response.Code = (int)MessageCode.LadderCdEnd;
                    }
                    var manager = ManagerCore.Instance.GetManager(managerId);
                    int point   = 0;
                    if (manager.VipLevel > 0)
                    {
                        point = LadderVipClearCDPrice;
                    }
                    else
                    {
                        point = LadderNotVipClearCDPrice;
                    }
                    var pointNumber = PayCore.Instance.GetPoint(managerId);
                    if (pointNumber < point)
                    {
                        response.Code = (int)MessageCode.NbPointShortage;
                        return(response);
                    }
                    var messCode = PayCore.Instance.GambleConsume(managerId, point, ShareUtil.GenerateComb(),
                                                                  EnumConsumeSourceType.LadderClearCD);
                    if (messCode == MessageCode.Success)
                    {
                        _ManagerMatchCD[managerId] = DateTime.Now;
                        response.Data.CDTick       = ShareUtil.GetTimeTick(DateTime.Now);
                        response.Data.Point        = pointNumber - point;
                    }
                }
                else
                {
                    response.Code = (int)MessageCode.LadderCdEnd;
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("天梯赛清除CD", ex);
            }
            return(response);
        }
Beispiel #19
0
        public TransactionShadow(Guid managerId, EnumTransactionType transactionType, string zoneId = "")
        {
            Transaction = new ShadowTransactionEntity();

            Transaction.Idx             = ShareUtil.GenerateComb();
            Transaction.TransactionType = (int)transactionType;

            Transaction.ManagerId  = managerId;
            Transaction.RowTime    = DateTime.Now;
            Transaction.TerminalIP = ShareUtil.GetServerIp();
            Transaction.AppId      = ShareUtil.AppId;
            Shadows     = new List <IShadow>();
            ItemShadows = new List <ItemShadow>();
            _zoneId     = zoneId;
        }
Beispiel #20
0
 /// <summary>
 /// 按数量拆分物品
 /// </summary>
 /// <param name="item"></param>
 /// <param name="count"></param>
 /// <returns></returns>
 public MessageCode Split(ConstellationInfoEntity item, int count)
 {
     if (item != null)
     {
         if (IsFull)
         {
             return(MessageCode.ItemPackageFull);
         }
         try
         {
             if (count <= 0)
             {
                 return(MessageCode.NbParameterError);
             }
             if (item.ItemCount <= count)
             {
                 return(MessageCode.ItemSplitCountOver);
             }
             else
             {
                 item.ItemCount = item.ItemCount - count;
                 var code = Update(item, count * -1);
                 if (code != MessageCode.Success)
                 {
                     return(code);
                 }
                 var newItem = item.Clone();
                 newItem.GridIndex = GetBlankGrid();
                 _blanks.Remove(newItem.GridIndex);
                 _itemCount++;
                 newItem.ItemId    = ShareUtil.GenerateComb();
                 newItem.ItemCount = count;
                 LastAddItemId     = newItem.ItemId;
                 return(SaveItem(newItem));
             }
         }
         catch (Exception ex)
         {
             SystemlogMgr.Error("ConstellationPackbager Split", ex);
             return(MessageCode.Exception);
         }
     }
     return(MessageCode.ItemNotExists);
 }
        /// <summary>
        /// Builds the match info.
        /// </summary>
        /// <param name="ladderId">The ladder id.</param>
        /// <param name="group">The group.</param>
        /// <param name="home">The home.</param>
        /// <param name="away">The away.</param>
        /// <param name="fightDic">The fight dic.</param>
        private void BuildMatchInfo(Guid ladderId, int group, CrossladderManagerEntity home, CrossladderManagerEntity away, Dictionary <Guid, CrossladderMatchEntity> fightDic)
        {
            try
            {
                //筛选条件,当两个玩家分差超过阀值,将他们扔到排队池里继续等待
                //int tmpScore = home.Score - away.Score;
                //if (tmpScore <= _arenaLowScore || tmpScore >= _arenaHighScore)
                //{
                //    if (!home.IsBot)
                //        CrossLadderCore.Instance.PushFightToCompetitor(home.Clone());
                //    if (!away.IsBot)
                //        CrossLadderCore.Instance.PushFightToCompetitor(away.Clone());
                //    return;
                //}

                var matchId     = ShareUtil.GenerateComb();
                var ladderMatch = new CrossladderMatchEntity(home, away, matchId, ladderId, group + 1);
                ladderMatch.HomeName = ShareUtil.GetCrossManagerNameByZoneId(home.SiteId, home.Name);
                ladderMatch.AwayName = ShareUtil.GetCrossManagerNameByZoneId(away.SiteId, away.Name);
                ladderMatch.DomainId = _domainId;
                fightDic.Add(ladderMatch.Idx, ladderMatch);

                MemcachedFactory.LadderMatchClient.Set(ladderMatch.Idx, ladderMatch);
                //更新经理-比赛关联字典
                if (!home.IsBot)
                {
                    var homeHeart = new CrossLadderHeartEntity(matchId, away.ManagerId, away.SiteId, away.IsBot, away.Kpi);
                    ManagerFightDic[home.ManagerId] = homeHeart;
                    MemcachedFactory.LadderHeartClient.Set(home.ManagerId, homeHeart);
                }
                if (!away.IsBot)
                {
                    var awayHeart = new CrossLadderHeartEntity(matchId, home.ManagerId, home.SiteId, home.IsBot, away.Kpi);
                    ManagerFightDic[away.ManagerId] = awayHeart;
                    MemcachedFactory.LadderHeartClient.Set(away.ManagerId, awayHeart);
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossLadderThread-BuildMatchInfo", ex.Message, ex.StackTrace);
            }
        }
        private void BuildMatchInfo(int crowdId, int pairIndex, CrosscrowdManagerEntity home, CrosscrowdManagerEntity away, Dictionary <Guid, CrosscrowdMatchEntity> matchDic)
        {
            try
            {
                var matchId = ShareUtil.GenerateComb();
                var match   = new CrosscrowdMatchEntity(home, away, matchId, crowdId, pairIndex);
                matchDic.Add(match.Idx, match);

                MemcachedFactory.CrowdMatchClient.Set(match.Idx, match);
                //更新经理-比赛关联字典
                var homeHeart = new CrowdHeartEntity(matchId, away.ShowName, away.Logo, away.Morale, away.ManagerId, away.SiteId);
                var awayHeart = new CrowdHeartEntity(matchId, home.ShowName, home.Logo, home.Morale, home.ManagerId, home.SiteId);
                ManagerFightDic[home.ManagerId] = homeHeart;
                ManagerFightDic[away.ManagerId] = awayHeart;
                //try
                //{
                //    CrossChatHelper.SendCrowdPairPop(home.ManagerId, homeHeart, home.SiteId);
                //    CrossChatHelper.SendCrowdPairPop(away.ManagerId, awayHeart, away.SiteId);
                //}
                //catch (Exception ex)
                //{
                //    SystemlogMgr.Error("CrossCrowdThread-SendCrowdPairPop", ex);
                //}
                MatchCdHandler.SetCd(home.ManagerId, EnumMatchType.CrossCrowd, _crowdCd);
                MatchCdHandler.SetCd(away.ManagerId, EnumMatchType.CrossCrowd, _crowdCd);
                try
                {
                    MemcachedFactory.CrowdHeartClient.Set(home.ManagerId, homeHeart);
                    MemcachedFactory.CrowdHeartClient.Set(away.ManagerId, awayHeart);
                }
                catch (Exception ex)
                {
                    SystemlogMgr.Error("CrossCrowdThread-BuildMatchInfo-Send", ex);
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossCrowdThread-BuildMatchInfo", ex);
            }
        }
Beispiel #23
0
        void CreateMatch(MatchInput transfer, int matchTimes, bool needStatistics, CreateDelegate createDelegate, FinishDelegate finishDelegate)
        {
            int i    = 1;
            var hmid = transfer.HomeManager.Mid;
            var amid = transfer.AwayManager.Mid;

            while (i <= matchTimes)
            {
                if (transfer != null)
                {
                    var watch = new System.Diagnostics.Stopwatch();
                    watch.Start();
                    transfer.MatchId = ShareUtil.GenerateComb();

                    try
                    {
                        IMatch match = new MatchEntity(transfer);

                        if (needStatistics)
                        {
                            statisticsMatch = new StatisticsMatchEntity(match);
                        }
                        EmulatorHelper.CreateMatch(match, statisticsMatch);
                        var  result = match.Report;
                        long cost   = watch.ElapsedMilliseconds;

                        _testStatisticsDic.Add(i, statisticsMatch);
                        _testMatchEntityDic.Add(i, result);
                        Dispatcher.Invoke((Action) delegate { createDelegate(transfer.MatchId, i, cost, result); });
                    }
                    catch (Exception ex)
                    {
                        LogHelper.Insert(ex);
                    }
                }
                i++;
            }
            Dispatcher.Invoke((Action) delegate { finishDelegate(); });
        }
Beispiel #24
0
        //MessageCode Tran_SaveLottery(DbTransaction transaction, Guid matchId, Guid managerId, ItemPackageFrame package, MailBuilder mail, int lotteryRepeatCode)
        MessageCode Tran_SaveLottery(DbTransaction transaction, Guid matchId, Guid managerId, int lotteryRepeatCode, ItemPackageFrame package, MailBuilder mail, int point)
        {
            MessageCode msg = MessageCode.Success;

            if (point > 0)
            {
                msg = PayCore.Instance.AddBonus(managerId, point, EnumChargeSourceType.PkMatchPrize,
                                                ShareUtil.GenerateComb().ToString(), transaction);
                if (msg != MessageCode.Success)
                {
                    return(msg);
                }
            }
            int returnCode = -2;

            PlayerkillInfoMgr.LotterySave(matchId, managerId, lotteryRepeatCode, ref returnCode, transaction);
            if (returnCode != 0)
            {
                return(MessageCode.NbUpdateFail);
            }
            if (package != null)
            {
                if (!package.Save(transaction))
                {
                    return(MessageCode.NbUpdateFail);
                }
                package.Shadow.Save();
            }
            if (mail != null)
            {
                if (!mail.Save(transaction))
                {
                    return(MessageCode.NbUpdateFail);
                }
            }

            return(MessageCode.Success);
        }
Beispiel #25
0
 private bool doLogin()
 {
     try
     {
         var platformId = ddlPlatform.SelectedValue;
         var user       = NbUserMgr.GetByAccount(UserName, Request.UserHostAddress, DateTime.Today.AddDays(-1),
                                                 DateTime.Today, 0);
         var sessionId = ShareUtil.GenerateComb().ToString();
         if (user != null)
         {
             UserAccountEntity userAccountEntity = new UserAccountEntity(user.Account, Guid.Empty, "", 1,
                                                                         platformId, sessionId);
             userAccountEntity.ExtraData = "d|pengyou|f";
             FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.Account,
                                                                              DateTime.Now,
                                                                              DateTime.Now.AddDays(10),
                                                                              false, userAccountEntity.ToString(),
                                                                              FormsAuthentication
                                                                              .FormsCookiePath);
             var cookie = FormsAuthentication.Encrypt(ticket);
             Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, cookie));
             // OnlineMgr.LoginSession(info.Data.ManagerInfo.Manager.Idx, sessionId);
             return(true);
         }
         else
         {
             ResponseMessage("用户名不存在");
             return(false);
         }
     }
     catch (Exception ex)
     {
         LogHelper.Insert(ex);
         ResponseMessage(ex.Message);
         return(false);
     }
 }
Beispiel #26
0
        private void Register()
        {
            string playerName = GetParam("name");
            string logo       = GetParam("logo");
            int    templateId = 1; // GetParamInt("ti");

            if (string.IsNullOrEmpty(playerName))
            {
                OutputHelper.Output(MessageCode.RegisterNameIsEmpty);
                return;
            }

            var createData = reader.CreateManager(UserAccount.Account, playerName, logo, templateId,
                                                  UAHelper.GetRealIP());

            if (createData.Code == (int)MessageCode.Success)
            {
                var sessionId = ShareUtil.GenerateComb().ToString();
                var cookie    = UAHelper.SetFormsAuthentication(UserAccount.Account, createData.Data, playerName, 1, sessionId);
                OnlineMgr.LoginSession(createData.Data, sessionId);
                onlineClient.RiseOnlineTime(createData.Data);
            }
            OutputHelper.Output(createData);
        }
Beispiel #27
0
        public MessageCode MatchCallback(BaseMatchData matchData)
        {
            var fmatchData = (FriendMatchData)matchData;

            if (fmatchData == null || fmatchData.ErrorCode != (int)MessageCode.Success)
            {
                return(MessageCode.MatchCreateFail);
            }
            var  friendRecord = fmatchData.FriendRecord;
            bool isFriend     = friendRecord != null;
            var  coin         = 0;
            int  intimacy     = 0;

            if (isFriend)
            {
                var oldIntimacy = friendRecord.Intimacy;
                AddFriendMatchIntimacy(friendRecord);
                intimacy = friendRecord.Intimacy - oldIntimacy;
                if (friendRecord.DayMatchCount == 1)
                {
                    //第一次比赛有奖励
                    if (fmatchData.Home.Score > fmatchData.Away.Score)
                    {
                        coin = 30;
                    }
                    else if (fmatchData.Home.Score == fmatchData.Away.Score)
                    {
                        coin = 20;
                    }
                    else
                    {
                        coin = 10;
                    }
                }
            }
            var match = new FriendMatchEntity();

            match.Idx       = fmatchData.MatchId;
            match.HomeId    = fmatchData.Home.ManagerId;
            match.HomeName  = fmatchData.Home.Name;
            match.HomeScore = fmatchData.Home.Score;
            match.AwayId    = fmatchData.Away.ManagerId;
            match.AwayName  = fmatchData.Away.Name;
            match.AwayScore = fmatchData.Away.Score;
            match.Intimacy  = intimacy;
            match.IsFriend  = isFriend;
            match.RowTime   = DateTime.Now;
            match.Status    = 0;

            MatchCore.SaveMatchStat(match.HomeId, EnumMatchType.Friend, match.HomeScore, match.AwayScore, match.HomeScore);
            var winType = EnumWinType.Win;

            if (match.HomeScore == match.AwayScore)
            {
                winType = EnumWinType.Draw;
            }
            else if (match.HomeScore < match.AwayScore)
            {
                winType = EnumWinType.Lose;
            }

            using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
            {
                transactionManager.BeginTransaction();
                var trans       = transactionManager.TransactionObject;
                var messageCode = MessageCode.NbUpdateFail;
                do
                {
                    if (isFriend)
                    {
                        if (!FriendManagerMgr.Update(friendRecord, trans))
                        {
                            break;
                        }
                    }
                    if (!FriendMatchMgr.Insert(match, trans))
                    {
                        break;
                    }
                    //记录成就相关数据
                    var mess = AchievementTaskCore.Instance.UpdateFriendMatchComb(match.HomeId, winType, trans);
                    if (mess != MessageCode.Success)
                    {
                        break;
                    }

                    if (coin > 0)
                    {
                        //友谊赛金币奖励
                        var manager = ManagerCore.Instance.GetManager(fmatchData.Home.ManagerId);
                        if (manager != null)
                        {
                            mess = ManagerCore.Instance.AddCoin(manager, coin, EnumCoinChargeSourceType.FriendMatch,
                                                                ShareUtil.GenerateComb().ToString(), trans);
                            if (mess != MessageCode.Success)
                            {
                                break;
                            }
                        }
                    }
                    messageCode = MessageCode.Success;
                } while (false);
                if (messageCode == ShareUtil.SuccessCode)
                {
                    transactionManager.Commit();
                }
                else
                {
                    transactionManager.Rollback();
                }
            }
            return(MessageCode.Success);
        }
Beispiel #28
0
        private MessageCode SendPrize(Guid managerId, ConfigDaysattendprizeEntity prizeEntity)
        {
            bool doublePrize = false;
            var  manager     = ManagerCore.Instance.GetManager(managerId);

            if (manager == null)
            {
                return(MessageCode.NbParameterError);
            }
            //是否有双倍奖励
            if (prizeEntity.HasDouble && manager.VipLevel >= prizeEntity.DoubleVipLevel)
            {
                doublePrize = true;
            }

            var code = MessageCode.Success;

            switch (prizeEntity.PrizeType)
            {
            case 1:    //点券
                var point = prizeEntity.Count;
                if (doublePrize)
                {
                    point = point * 2;
                }
                code = PayCore.Instance.AddBonus(managerId, point, EnumChargeSourceType.LeaguePrize, ShareUtil.GenerateComb().ToString(), null);
                break;

            case 2:    //奖励物品
                var count = prizeEntity.Count;
                if (doublePrize)
                {
                    count = count * 2;
                }

                //获取背包
                var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.LeaguePrize);
                if (package == null)
                {
                    return(MessageCode.NbNoPackage);
                }

                code = package.AddItems(prizeEntity.PrizeItemCode, count, 1, prizeEntity.IsBinding, false);
                if (package.Save())
                {
                    package.Shadow.Save();
                }
                break;
            }
            return(code);
        }
Beispiel #29
0
        /// <summary>
        /// 引导比赛
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        private MessageCodeResponse GuideMatch(Guid managerId)
        {
            var manager = ManagerCore.Instance.GetManager(managerId);

            if (manager == null)
            {
                return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbParameterError));
            }
            var arenaManager = InnerGetLadderManager(managerId);

            if (arenaManager == null)
            {
                return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbParameterError));
            }


            if (ManagerGuideFightDic == null)
            {
                ManagerGuideFightDic = new Dictionary <Guid, Guid>();
            }
            var laddermanager = GetLadderManager(managerId);

            if (laddermanager.MatchTime > 0)
            {
                return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbParameterError));
            }
            LadderManagerEntity bot = new LadderManagerEntity();
            var botList             = LadderManagerMgr.GetBot(1, 0, 1201);

            if (botList != null)
            {
                bot       = botList[0];
                bot.Name  = "送分小王子";
                bot.IsBot = true;
                bot.Score = laddermanager.Score;
            }

            laddermanager.IsBot      = false;
            laddermanager.Name       = manager.Name;
            laddermanager.UpdateTime = DateTime.Now;
            laddermanager.HasTask    = true;

            var ladderInfo = new LadderInfoEntity();

            ladderInfo.Idx       = ShareUtil.GenerateComb();
            ladderInfo.FightList = new List <LadderManagerEntity>()
            {
                laddermanager, bot
            };
            ladderInfo.StartTime     = DateTime.Now;
            ladderInfo.GroupingTime  = DateTime.Now;
            ladderInfo.CountdownTime = DateTime.Now;

            ladderInfo.CountdownTime = DateTime.Now.AddSeconds(1);

            ladderInfo.PlayerNumber = 2;
            ladderInfo.AvgWaitTime  = 2;

            var matchId     = ShareUtil.GenerateComb();
            var ladderMatch = new LadderMatchEntity(laddermanager, bot, matchId, ladderInfo.Idx, 1);
            ConcurrentDictionary <Guid, LadderMatchEntity> fightDic = new ConcurrentDictionary <Guid, LadderMatchEntity>();

            fightDic.TryAdd(ladderMatch.Idx, ladderMatch);

            MemcachedFactory.LadderMatchClient.Set(ladderMatch.Idx, ladderMatch);
            var process = new LadderProcess(fightDic, ladderInfo, LadderThread.Instance._ladderProctiveScore, true);

            process.StartProcess();
            if (!ManagerGuideFightDic.ContainsKey(managerId))
            {
                ManagerGuideFightDic.Add(managerId, matchId);
            }
            return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.Success));
        }
Beispiel #30
0
        /// <summary>
        /// 抽奖
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="zoneName"></param>
        /// <returns></returns>
        public CrossActivityPrizeResponse Prize(Guid managerId, string zoneName)
        {
            CrossActivityPrizeResponse response = new CrossActivityPrizeResponse();

            response.Data = new CrossActivityPrize();
            try
            {
                if (!IsActivity)
                {
                    return(ResponseHelper.Create <CrossActivityPrizeResponse>(MessageCode.CrowdNoData));
                }
                var managerInfo = NbManagerMgr.GetById(managerId, zoneName);
                if (managerInfo == null)
                {
                    return(ResponseHelper.Create <CrossActivityPrizeResponse>(MessageCode.NbParameterError));
                }
                var maxCount = CacheFactory.VipdicCache.GetEffectValue(managerInfo.VipLevel,
                                                                       (int)EnumVipEffect.BeThankfulActivity);
                var usedNumber = CrossactivityRecordMgr.GetActivityNumber(managerId, DateTime.Now.Date);
                if (maxCount <= usedNumber)
                {
                    return(ResponseHelper.Create <CrossActivityPrizeResponse>(MessageCode.DayNumberNot));
                }
                var result = Prize(managerInfo.VipLevel);
                CrossactivityRecordEntity entity = new CrossactivityRecordEntity(0, managerId, zoneName, result.PrizeId,
                                                                                 DateTime.Now);
                ItemPackageFrame package = null;
                int addPoint             = 0;
                int addGoldBar           = 0;
                int itemCode             = 0;
                int itemCount            = 0;
                var messageCode          = AddPrize(result, managerId, zoneName, ref package, ref addPoint, ref addGoldBar, ref itemCode, ref itemCount);
                if (messageCode != MessageCode.Success)
                {
                    return(ResponseHelper.Create <CrossActivityPrizeResponse>(messageCode));
                }
                if (addPoint > 0)
                {
                    messageCode = PayCore.Instance.AddBonus(managerInfo.Account, addPoint, EnumChargeSourceType.CrossActivity,
                                                            ShareUtil.GenerateComb().ToString(), null, zoneName);
                    if (messageCode != MessageCode.Success)
                    {
                        return(ResponseHelper.Create <CrossActivityPrizeResponse>(messageCode));
                    }
                }
                else if (package != null)
                {
                    if (!package.Save())
                    {
                        return(ResponseHelper.Create <CrossActivityPrizeResponse>(MessageCode.NbUpdateFail));
                    }
                    package.Shadow.Save();
                }
                else if (addGoldBar > 0)
                {
                    var goldBarManager = ScoutingGoldbarMgr.GetById(managerId, zoneName);
                    if (goldBarManager == null)
                    {
                        goldBarManager = new ScoutingGoldbarEntity(managerId, addGoldBar, 0, 0, 0, DateTime.Now,
                                                                   DateTime.Now);
                        if (!ScoutingGoldbarMgr.Insert(goldBarManager, null, zoneName))
                        {
                            return(ResponseHelper.Create <CrossActivityPrizeResponse>(MessageCode.NbUpdateFail));
                        }
                    }
                    else
                    {
                        goldBarManager.GoldBarNumber = goldBarManager.GoldBarNumber + addGoldBar;
                        if (!ScoutingGoldbarMgr.Update(goldBarManager, null, zoneName))
                        {
                            return(ResponseHelper.Create <CrossActivityPrizeResponse>(MessageCode.NbUpdateFail));
                        }
                    }
                }
                try
                {
                    CrossactivityRecordMgr.Insert(entity);
                }
                catch
                {
                }

                response.Data.MaxNumber  = maxCount;
                response.Data.PrizeId    = result.PrizeId;
                response.Data.UsedNumber = usedNumber + 1;
                response.Data.Number     = itemCount;
                response.Data.ItemCode   = itemCode;
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("抽奖", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }