示例#1
0
        public void GMSetRoleData(GameClient client, int duanWeiId, int duanWeiJiFen, int rongYao, int monthDuanWeiRank, int lianSheng, int successCount, int fightCount)
        {
            RoleTianTiData roleTianTiData = client.ClientData.TianTiData;

            roleTianTiData.DuanWeiId        = duanWeiId;
            roleTianTiData.DuanWeiJiFen     = duanWeiJiFen;
            roleTianTiData.RongYao          = rongYao;
            roleTianTiData.MonthDuanWeiRank = monthDuanWeiRank;
            roleTianTiData.LianSheng        = lianSheng;
            roleTianTiData.SuccessCount     = successCount;
            roleTianTiData.FightCount       = fightCount;

            int selfDuanWeiId;

            if (RuntimeData.DuanWeiJiFenRangeDuanWeiIdDict.TryGetValue(roleTianTiData.DuanWeiJiFen, out selfDuanWeiId))
            {
                roleTianTiData.DuanWeiId = selfDuanWeiId;
            }

            Global.sendToDB <int, RoleTianTiData>((int)TCPGameServerCmds.CMD_DB_TIANTI_UPDATE_ROLE_DATA, roleTianTiData, client.ServerId);

            TianTiPaiHangRoleData tianTiPaiHangRoleData = new TianTiPaiHangRoleData();

            tianTiPaiHangRoleData.DuanWeiId    = roleTianTiData.DuanWeiId;
            tianTiPaiHangRoleData.RoleId       = roleTianTiData.RoleId;
            tianTiPaiHangRoleData.RoleName     = client.ClientData.RoleName;
            tianTiPaiHangRoleData.Occupation   = client.ClientData.Occupation;
            tianTiPaiHangRoleData.ZhanLi       = client.ClientData.CombatForce;
            tianTiPaiHangRoleData.ZoneId       = client.ClientData.ZoneID;
            tianTiPaiHangRoleData.DuanWeiJiFen = roleTianTiData.DuanWeiJiFen;
            RoleData4Selector roleInfo = Global.sendToDB <RoleData4Selector, string>((int)TCPGameServerCmds.CMD_SPR_GETROLEUSINGGOODSDATALIST, string.Format("{0}", client.ClientData.RoleID), client.ServerId);

            if (null != roleInfo || roleInfo.RoleID < 0)
            {
                tianTiPaiHangRoleData.RoleData4Selector = roleInfo;
            }
            PlayerJingJiData jingJiData = JingJiChangManager.getInstance().createJingJiData(client);

            TianTiRoleInfoData tianTiRoleInfoData = new TianTiRoleInfoData();

            tianTiRoleInfoData.RoleId                 = tianTiPaiHangRoleData.RoleId;
            tianTiRoleInfoData.ZoneId                 = tianTiPaiHangRoleData.ZoneId;
            tianTiRoleInfoData.ZhanLi                 = tianTiPaiHangRoleData.ZhanLi;
            tianTiRoleInfoData.RoleName               = tianTiPaiHangRoleData.RoleName;
            tianTiRoleInfoData.DuanWeiId              = tianTiPaiHangRoleData.DuanWeiId;
            tianTiRoleInfoData.DuanWeiJiFen           = tianTiPaiHangRoleData.DuanWeiJiFen;
            tianTiRoleInfoData.DuanWeiRank            = tianTiPaiHangRoleData.DuanWeiRank;
            tianTiRoleInfoData.TianTiPaiHangRoleData  = DataHelper.ObjectToBytes(tianTiPaiHangRoleData);
            tianTiRoleInfoData.PlayerJingJiMirrorData = DataHelper.ObjectToBytes(jingJiData);
            TianTiClient.getInstance().UpdateRoleInfoData(tianTiRoleInfoData);
            GameManager.ClientMgr.ModifyTianTiRongYaoValue(client, rongYao, "GM添加");
        }
示例#2
0
        /// <summary>
        /// 给奖励
        /// </summary>
        public void GiveAwards(TianTiScene tianTiScene)
        {
            try
            {
                DateTime          now       = TimeUtil.NowDateTime();
                DateTime          startTime = now.Subtract(RuntimeData.RefreshTime); //后退刷新时间,这样来保证不跨天计次
                List <GameClient> objsList  = tianTiScene.CopyMap.GetClientsList();
                if (objsList != null && objsList.Count > 0)
                {
                    int nowDayId = Global.GetOffsetDayNow();
                    for (int n = 0; n < objsList.Count; ++n)
                    {
                        GameClient client = objsList[n];
                        if (client != null && client == GameManager.ClientMgr.FindClient(client.ClientData.RoleID)) //确认角色仍然在线
                        {
                            RoleTianTiData     roleTianTiData    = client.ClientData.TianTiData;
                            bool               success           = client.ClientData.BattleWhichSide == tianTiScene.SuccessSide;
                            int                selfDuanWeiId     = roleTianTiData.DuanWeiId;
                            TianTiRoleMiniData enemyMiniData     = GetEnemyBattleSide(tianTiScene, client);
                            int                addDuanWeiJiFen   = 0;
                            int                addLianShengJiFen = 0;
                            int                addRongYao        = 0;

                            int dayId = Global.GetOffsetDay(startTime);
                            if (dayId != roleTianTiData.LastFightDayId)
                            {
                                roleTianTiData.LastFightDayId  = dayId;
                                roleTianTiData.TodayFightCount = 1;
                            }
                            else
                            {
                                roleTianTiData.TodayFightCount++;
                            }

                            //设置每日天梯积分获得上限为60万
                            if (roleTianTiData.DayDuanWeiJiFen < RuntimeData.MaxTianTiJiFen)
                            {
                                TianTiDuanWei tianTiDuanWei;
                                if (success)
                                {
                                    roleTianTiData.LianSheng++;
                                    roleTianTiData.SuccessCount++;
                                    if (RuntimeData.TianTiDuanWeiDict.TryGetValue(enemyMiniData.DuanWeiId, out tianTiDuanWei))
                                    {
                                        //连胜后积分=基础积分*(1+Min(2,((连续胜利次数-1)* 0.2)))
                                        addDuanWeiJiFen   = tianTiDuanWei.WinJiFen;
                                        addLianShengJiFen = (int)(tianTiDuanWei.WinJiFen * Math.Min(2, (roleTianTiData.LianSheng - 1) * 0.2));
                                        if (roleTianTiData.TodayFightCount <= tianTiDuanWei.RongYaoNum)
                                        {
                                            addRongYao = tianTiDuanWei.WinRongYu;
                                        }
                                    }
                                }
                                else
                                {
                                    roleTianTiData.LianSheng = 0;
                                    if (RuntimeData.TianTiDuanWeiDict.TryGetValue(roleTianTiData.DuanWeiId, out tianTiDuanWei))
                                    {
                                        addDuanWeiJiFen = tianTiDuanWei.LoseJiFen;
                                        if (roleTianTiData.TodayFightCount <= tianTiDuanWei.RongYaoNum)
                                        {
                                            addRongYao = tianTiDuanWei.LoseRongYu;
                                        }
                                    }
                                }

                                if (addDuanWeiJiFen != 0)
                                {
                                    roleTianTiData.DuanWeiJiFen += addDuanWeiJiFen + addLianShengJiFen;
                                    roleTianTiData.DuanWeiJiFen  = Math.Max(0, roleTianTiData.DuanWeiJiFen);

                                    roleTianTiData.DayDuanWeiJiFen += addDuanWeiJiFen + addLianShengJiFen;
                                    roleTianTiData.DayDuanWeiJiFen  = Math.Max(0, roleTianTiData.DayDuanWeiJiFen);
                                    Global.SaveRoleParamsInt32ValueToDB(client, RoleParamName.TianTiDayScore, roleTianTiData.DayDuanWeiJiFen, true);
                                }
                            }
                            else
                            {
                                GameManager.ClientMgr.NotifyHintMsg(client, Global.GetLang("今日获得段位积分已达上限!"));
                            }

                            if (addRongYao != 0)
                            {
                                GameManager.ClientMgr.ModifyTianTiRongYaoValue(client, addRongYao, "天梯系统获得荣耀", true);
                            }

                            roleTianTiData.FightCount++;
                            if (RuntimeData.DuanWeiJiFenRangeDuanWeiIdDict.TryGetValue(roleTianTiData.DuanWeiJiFen, out selfDuanWeiId))
                            {
                                roleTianTiData.DuanWeiId = selfDuanWeiId;
                            }

                            TianTiAwardsData awardsData = new TianTiAwardsData();
                            awardsData.DuanWeiJiFen   = addDuanWeiJiFen;
                            awardsData.LianShengJiFen = addLianShengJiFen;
                            awardsData.RongYao        = addRongYao;
                            awardsData.DuanWeiId      = roleTianTiData.DuanWeiId;
                            if (success)
                            {
                                awardsData.Success = 1;
                                GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 0, 0, 1, 0, (int)GameTypes.TianTi);
                            }
                            else
                            {
                                GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 0, 0, 0, 1, (int)GameTypes.TianTi);
                            }

                            client.sendCmd((int)TCPGameServerCmds.CMD_SPR_TIANTI_AWARD, awardsData);
                            Global.sendToDB <int, RoleTianTiData>((int)TCPGameServerCmds.CMD_DB_TIANTI_UPDATE_ROLE_DATA, roleTianTiData, client.ServerId);

                            TianTiLogItemData tianTiLogItemData = new TianTiLogItemData()
                            {
                                Success           = awardsData.Success,
                                ZoneId1           = client.ClientData.ZoneID,
                                RoleName1         = client.ClientData.RoleName,
                                ZoneId2           = enemyMiniData.ZoneId,
                                RoleName2         = enemyMiniData.RoleName,
                                DuanWeiJiFenAward = addDuanWeiJiFen + addLianShengJiFen,
                                RongYaoAward      = addRongYao,
                                RoleId            = client.ClientData.RoleID,
                                EndTime           = now,
                            };
                            Global.sendToDB <int, TianTiLogItemData>((int)TCPGameServerCmds.CMD_DB_TIANTI_ADD_ZHANBAO_LOG, tianTiLogItemData, client.ServerId);

                            TianTiPaiHangRoleData tianTiPaiHangRoleData = new TianTiPaiHangRoleData();
                            tianTiPaiHangRoleData.DuanWeiId    = roleTianTiData.DuanWeiId;
                            tianTiPaiHangRoleData.RoleId       = roleTianTiData.RoleId;
                            tianTiPaiHangRoleData.RoleName     = client.ClientData.RoleName;
                            tianTiPaiHangRoleData.Occupation   = client.ClientData.Occupation;
                            tianTiPaiHangRoleData.ZhanLi       = client.ClientData.CombatForce;
                            tianTiPaiHangRoleData.ZoneId       = client.ClientData.ZoneID;
                            tianTiPaiHangRoleData.DuanWeiJiFen = roleTianTiData.DuanWeiJiFen;
                            RoleData4Selector roleInfo = Global.sendToDB <RoleData4Selector, string>((int)TCPGameServerCmds.CMD_SPR_GETROLEUSINGGOODSDATALIST, string.Format("{0}", client.ClientData.RoleID), client.ServerId);
                            if (null != roleInfo || roleInfo.RoleID < 0)
                            {
                                tianTiPaiHangRoleData.RoleData4Selector = roleInfo;
                            }
                            PlayerJingJiData jingJiData = JingJiChangManager.getInstance().createJingJiData(client);

                            TianTiRoleInfoData tianTiRoleInfoData = new TianTiRoleInfoData();
                            tianTiRoleInfoData.RoleId                 = tianTiPaiHangRoleData.RoleId;
                            tianTiRoleInfoData.ZoneId                 = tianTiPaiHangRoleData.ZoneId;
                            tianTiRoleInfoData.ZhanLi                 = tianTiPaiHangRoleData.ZhanLi;
                            tianTiRoleInfoData.RoleName               = tianTiPaiHangRoleData.RoleName;
                            tianTiRoleInfoData.DuanWeiId              = tianTiPaiHangRoleData.DuanWeiId;
                            tianTiRoleInfoData.DuanWeiJiFen           = tianTiPaiHangRoleData.DuanWeiJiFen;
                            tianTiRoleInfoData.DuanWeiRank            = tianTiPaiHangRoleData.DuanWeiRank;
                            tianTiRoleInfoData.TianTiPaiHangRoleData  = DataHelper.ObjectToBytes(tianTiPaiHangRoleData);
                            tianTiRoleInfoData.PlayerJingJiMirrorData = DataHelper.ObjectToBytes(jingJiData);
                            TianTiClient.getInstance().UpdateRoleInfoData(tianTiRoleInfoData);
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                DataHelper.WriteExceptionLogEx(ex, "天梯系统清场调度异常");
            }
        }
示例#3
0
        public void TimerProc(object sender, EventArgs e)
        {
            bool           modify         = false;
            TianTiRankData tianTiRankData = TianTiClient.getInstance().GetRankingData();

            lock (RuntimeData.Mutex)
            {
                if (tianTiRankData != null && tianTiRankData.ModifyTime > RuntimeData.ModifyTime)
                {
                    modify = true;
                }
            }

            if (modify)
            {
                Dictionary <int, TianTiPaiHangRoleData> tianTiPaiHangRoleDataDict      = new Dictionary <int, TianTiPaiHangRoleData>();
                List <TianTiPaiHangRoleData>            tianTiPaiHangRoleDataList      = new List <TianTiPaiHangRoleData>();
                Dictionary <int, TianTiPaiHangRoleData> tianTiMonthPaiHangRoleDataDict = new Dictionary <int, TianTiPaiHangRoleData>();
                List <TianTiPaiHangRoleData>            tianTiMonthPaiHangRoleDataList = new List <TianTiPaiHangRoleData>();
                if (null != tianTiRankData.TianTiRoleInfoDataList)
                {
                    foreach (var data in tianTiRankData.TianTiRoleInfoDataList)
                    {
                        TianTiPaiHangRoleData tianTiPaiHangRoleData;
                        if (null != data.TianTiPaiHangRoleData)
                        {
                            tianTiPaiHangRoleData = DataHelper.BytesToObject <TianTiPaiHangRoleData>(data.TianTiPaiHangRoleData, 0, data.TianTiPaiHangRoleData.Length);
                        }
                        else
                        {
                            tianTiPaiHangRoleData = new TianTiPaiHangRoleData()
                            {
                                RoleId = data.RoleId
                            };
                        }

                        if (null != tianTiPaiHangRoleData)
                        {
                            tianTiPaiHangRoleData.RoleId      = data.RoleId;
                            tianTiPaiHangRoleData.DuanWeiRank = data.DuanWeiRank;
                            tianTiPaiHangRoleDataDict[tianTiPaiHangRoleData.RoleId] = tianTiPaiHangRoleData;
                            if (tianTiPaiHangRoleDataList.Count < RuntimeData.MaxDayPaiMingListCount)
                            {
                                tianTiPaiHangRoleDataList.Add(tianTiPaiHangRoleData);
                            }
                        }
                    }
                }

                if (null != tianTiRankData.TianTiMonthRoleInfoDataList)
                {
                    foreach (var data in tianTiRankData.TianTiMonthRoleInfoDataList)
                    {
                        TianTiPaiHangRoleData tianTiPaiHangRoleData;
                        if (null != data.TianTiPaiHangRoleData)
                        {
                            tianTiPaiHangRoleData = DataHelper.BytesToObject <TianTiPaiHangRoleData>(data.TianTiPaiHangRoleData, 0, data.TianTiPaiHangRoleData.Length);
                        }
                        else
                        {
                            tianTiPaiHangRoleData = new TianTiPaiHangRoleData()
                            {
                                RoleId = data.RoleId
                            };
                        }

                        if (null != tianTiPaiHangRoleData)
                        {
                            tianTiPaiHangRoleData.RoleId      = data.RoleId;
                            tianTiPaiHangRoleData.DuanWeiRank = data.DuanWeiRank;
                            tianTiMonthPaiHangRoleDataDict[tianTiPaiHangRoleData.RoleId] = tianTiPaiHangRoleData;
                            if (tianTiMonthPaiHangRoleDataList.Count < RuntimeData.MaxMonthPaiMingListCount)
                            {
                                tianTiMonthPaiHangRoleDataList.Add(tianTiPaiHangRoleData);
                            }
                        }
                    }
                }

                lock (RuntimeData.Mutex)
                {
                    RuntimeData.ModifyTime                     = tianTiRankData.ModifyTime;
                    RuntimeData.MaxPaiMingRank                 = tianTiRankData.MaxPaiMingRank;
                    RuntimeData.TianTiPaiHangRoleDataDict      = tianTiPaiHangRoleDataDict;
                    RuntimeData.TianTiPaiHangRoleDataList      = tianTiPaiHangRoleDataList;
                    RuntimeData.TianTiMonthPaiHangRoleDataDict = tianTiMonthPaiHangRoleDataDict;
                    RuntimeData.TianTiMonthPaiHangRoleDataList = tianTiMonthPaiHangRoleDataList;
                }
            }
        }