Ejemplo n.º 1
0
        /// <summary>
        /// 玩家登录,触发七日活动更新
        /// </summary>
        /// <param name="client"></param>
        public void OnLogin(GameClient client)
        {
            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return;
            }

            if (IsInActivityTime(client))
            {
                LoginAct.Update(client);
                ChargeAct.Update(client);
                GoalAct.Update(client);

                CheckSendIconState(client);
            }
            else if (TimeUtil.NowDateTime() > Global.GetRegTime(client.ClientData).AddDays(SevenDayConsts.DayCount + 7))
            {
                // 不在活动期间,检测清空数据
                lock (client.ClientData.SevenDayActDict)
                {
                    if (client.ClientData.SevenDayActDict.Count > 0)
                    {
                        if (!Global.sendToDB <bool, int>((int)TCPGameServerCmds.CMD_DB_CLEAR_SEVEN_DAY_DATA, client.ClientData.RoleID, client.ServerId))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("玩家超过七日活动结束后7天了,删除数据失败,roleid={0}", client.ClientData.RoleID));
                        }
                        else
                        {
                            client.ClientData.SevenDayActDict.Clear();
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private bool HandleClientBuy(GameClient client, int nID, byte[] bytes, string[] cmdParams)
        {
            bool result;

            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                result = false;
            }
            else
            {
                int id  = Convert.ToInt32(cmdParams[1]);
                int cnt = Convert.ToInt32(cmdParams[2]);
                ESevenDayActErrorCode ec;
                if (!this.IsInActivityTime(client))
                {
                    ec = ESevenDayActErrorCode.NotInActivityTime;
                }
                else
                {
                    ec = this.BuyAct.HandleClientBuy(client, id, cnt);
                }
                if (ec == ESevenDayActErrorCode.Success)
                {
                    this.CheckSendIconState(client);
                }
                client.sendCmd(nID, string.Format("{0}:{1}:{2}", (int)ec, id, cnt), false);
                result = true;
            }
            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 判断是否在七日活动时间内
        /// </summary>
        /// <param name="client"></param>
        /// <param name="currDay">返回当前处于活动的第几天 1---7</param>
        /// <returns></returns>
        public bool IsInActivityTime(GameClient client, out int currDay)
        {
            currDay = 0;

            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return(false);
            }

            if (client == null)
            {
                return(false);
            }

            DateTime startDate = Global.GetRegTime(client.ClientData);

            startDate -= startDate.TimeOfDay;

            DateTime todayDate = TimeUtil.NowDateTime();

            todayDate -= todayDate.TimeOfDay;

            currDay = (todayDate - startDate).Days + 1;
            if (currDay < 1 || currDay > SevenDayConsts.DayCount)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 处理七日抢购活动
        /// </summary>
        private bool HandleClientBuy(GameClient client, int nID, byte[] bytes, string[] cmdParams)
        {
            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return(false);
            }

            // roleid:id:cnt
            int id  = Convert.ToInt32(cmdParams[1]);
            int cnt = Convert.ToInt32(cmdParams[2]);

            ESevenDayActErrorCode ec = ESevenDayActErrorCode.Success;

            if (!IsInActivityTime(client))
            {
                ec = ESevenDayActErrorCode.NotInActivityTime;
            }
            else
            {
                ec = BuyAct.HandleClientBuy(client, id, cnt);
            }

            if (ec == ESevenDayActErrorCode.Success)
            {
                CheckSendIconState(client);
            }

            client.sendCmd(nID, string.Format("{0}:{1}:{2}", (int)ec, id, cnt));
            return(true);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 获取某项七日活动数据
        /// </summary>
        /// <param name="client"></param>
        /// <param name="actType"></param>
        /// <returns></returns>
        public Dictionary <int, SevenDayItemData> GetActivityData(GameClient client, ESevenDayActType actType)
        {
            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return(null);
            }

            if (client == null)
            {
                return(null);
            }

            Dictionary <int, SevenDayItemData> resultDict = null;

            lock (client.ClientData.SevenDayActDict)
            {
                if (!client.ClientData.SevenDayActDict.TryGetValue((int)actType, out resultDict))
                {
                    resultDict = new Dictionary <int, SevenDayItemData>();
                    client.ClientData.SevenDayActDict[(int)actType] = resultDict;
                }
            }

            return(resultDict);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 判断功能是否开启
        /// </summary>
        public static bool IsSpreadOpen()
        {
            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return(false);
            }

            int state = 0;

            PlatformTypes platformType = GameCoreInterface.getinstance().GetPlatformType();

            switch (platformType)
            {
            case PlatformTypes.Android:
                state = (int)GameManager.systemParamsList.GetParamValueIntByName("TuiGuang_Android");
                break;

            case PlatformTypes.APP:
                state = (int)GameManager.systemParamsList.GetParamValueIntByName("TuiGuang_APP");
                break;

            case PlatformTypes.YueYu:
                state = (int)GameManager.systemParamsList.GetParamValueIntByName("TuiGuang_YueYu");
                break;
            }

            return(state > 0);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 给客户端发奖
        /// </summary>
        /// <param name="client"></param>
        /// <param name="award"></param>
        private static void _SendAward2Player(GameClient client, YueKaAward award)
        {
            // 如果1.4.1的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
            {
                return;
            }

            List <GoodsData> goodsDataList = award.GetGoodsByOcc(Global.CalcOriginalOccupationID(client));

            // 背包不足则邮件发送
            if (!Global.CanAddGoodsNum(client, goodsDataList.Count))
            {
                foreach (var item in goodsDataList)
                {
                    Global.UseMailGivePlayerAward(client, item, Global.GetLang("月卡返利"), string.Format(Global.GetLang("第{0}天月卡返利"), award.Day));
                }
            }
            else
            {
                foreach (var goodsData in goodsDataList)
                {
                    //向DBServer请求加入某个新的物品到背包中
                    goodsData.Id = Global.AddGoodsDBCommand_Hook(Global._TCPManager.TcpOutPacketPool, client, goodsData.GoodsID, goodsData.GCount, goodsData.Quality, goodsData.Props, goodsData.Forge_level, goodsData.Binding, 0, goodsData.Jewellist, true, 1, string.Format("第{0}天月卡返利", award.Day), false,
                                                                 goodsData.Endtime, goodsData.AddPropIndex, goodsData.BornIndex, goodsData.Lucky, goodsData.Strong, goodsData.ExcellenceInfo, goodsData.AppendPropLev, goodsData.ChangeLifeLevForEquip, true);
                }
            }

            //发钻石
            GameManager.ClientMgr.AddUserGold(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, award.BindZuanShi, string.Format("第{0}天月卡返利", award.Day));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 玩家登录时,检测月卡的有效性信息
        /// </summary>
        /// <param name="gameClient"></param>
        public static void CheckValid(GameClient client)
        {
            // 如果1.4.1的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
            {
                return;
            }

            if (client == null)
            {
                return;
            }

            lock (client.ClientData.YKDetail)
            {
                if (client.ClientData.YKDetail.HasYueKa == 0)
                {
                    return;
                }

                while (true)
                {
                    //判断月卡是否过期
                    int todayOffset = Global.GetOffsetDay(TimeUtil.NowDateTime());
                    if (todayOffset >= client.ClientData.YKDetail.EndOffsetDay)
                    {
                        client.ClientData.YKDetail.HasYueKa = 0;
                        break;
                    }

                    //判断记录的领奖信息是否和现在处于同一个月卡周期中
                    //首先计算当前记录的领奖是从那一天开始的
                    int curBegOffsetDay = client.ClientData.YKDetail.CurOffsetDay - client.ClientData.YKDetail.AwardInfo.Length + 1;

                    //当前记录的领奖信息和现在不是同一个领奖周期了,那么重新开始计算
                    if (todayOffset >= curBegOffsetDay + DAYS_PER_YUE_KA)
                    {
                        client.ClientData.YKDetail.CurOffsetDay = todayOffset;
                        client.ClientData.YKDetail.AwardInfo    = "";
                        //现在的领奖周期中未领的天数置0
                        for (int i = curBegOffsetDay + DAYS_PER_YUE_KA; i <= todayOffset; ++i)
                        {
                            client.ClientData.YKDetail.AwardInfo += "0";
                        }
                        break;
                    }

                    //走到这里就说明,月卡未过期并且记录的领奖信息和现在处于同一个周期中,那么只需要对中间间隔的天数补0
                    for (int i = client.ClientData.YKDetail.CurOffsetDay + 1; i <= todayOffset; ++i)
                    {
                        client.ClientData.YKDetail.AwardInfo += "0";
                    }
                    client.ClientData.YKDetail.CurOffsetDay = todayOffset;

                    break;
                }

                _UpdateYKDetail2DB(client, client.ClientData.YKDetail);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 新的一天来了,这家伙还在线
        /// </summary>
        /// <param name="client"></param>
        public static void UpdateNewDay(GameClient client)
        {
            // 如果1.4.1的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
            {
                return;
            }

            if (client == null)
            {
                return;
            }

            CheckValid(client);
            lock (client.ClientData.YKDetail)
            {
                if (client._IconStateMgr.CheckFuLiYueKaFanLi(client))
                {
                    client._IconStateMgr.SendIconStateToClient(client);
                }

                /*
                 * if (client.ClientData.YKDetail.HasYueKa == 0)
                 * {
                 *  GameManager.ClientMgr.NotifySelfParamsValueChange(client, RoleCommonUseIntParamsIndexs.HasYueKa, 0);
                 * }
                 */

                // modify by chenjingui. 20150624 月卡改为通知剩余天数,跨天了,通知一次
                GameManager.ClientMgr.NotifySelfParamsValueChange(client, RoleCommonUseIntParamsIndexs.YueKaRemainDay, client.ClientData.YKDetail.RemainDayOfYueKa());
            }
        }
Ejemplo n.º 10
0
 public void OnLogin(GameClient client)
 {
     if (!GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
     {
         if (this.IsInActivityTime(client))
         {
             this.LoginAct.Update(client);
             this.ChargeAct.Update(client);
             this.GoalAct.Update(client);
             this.CheckSendIconState(client);
         }
         else if (TimeUtil.NowDateTime() > Global.GetRegTime(client.ClientData).AddDays(14.0))
         {
             lock (client.ClientData.SevenDayActDict)
             {
                 if (client.ClientData.SevenDayActDict.Count > 0)
                 {
                     if (!Global.sendToDB <bool, int>(13221, client.ClientData.RoleID, client.ServerId))
                     {
                         LogManager.WriteLog(LogTypes.Error, string.Format("玩家超过七日活动结束后7天了,删除数据失败,roleid={0}", client.ClientData.RoleID), null, true);
                     }
                     else
                     {
                         client.ClientData.SevenDayActDict.Clear();
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 11
0
 public bool ProcessCmdPrestigeMedalUp(GameClient client, int nID, byte[] bytes, string[] cmdParams)
 {
     try
     {
         if (cmdParams.Length != 2)
         {
             LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(client.ClientSocket, false), cmdParams.Length), null, true);
             return(false);
         }
         int roleID = Convert.ToInt32(cmdParams[0]);
         int runeID = Convert.ToInt32(cmdParams[1]);
         if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID))
         {
             LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(client.ClientSocket, false), roleID), null, true);
             return(false);
         }
         if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
         {
             LogManager.WriteLog(LogTypes.Error, string.Format("ProcessCmdPrestigeMedalUp功能尚未开放, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(client.ClientSocket, false), roleID), null, true);
             return(false);
         }
         PrestigeMedalData runeData = PrestigeMedalManager.UpPrestigeMedal(client, runeID);
         client.sendCmd <PrestigeMedalData>(783, runeData, false);
         return(true);
     }
     catch (Exception ex)
     {
         DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false);
     }
     return(false);
 }
Ejemplo n.º 12
0
        /// <summary>
        /// 返回声望勋章数据
        /// </summary>
        /// <returns></returns>
        public static PrestigeMedalData GetPrestigeMedalData(GameClient client)
        {
            // 如果1.4.1的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
            {
                return(null);
            }
            //开放等级  声望4阶
            if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.PrestigeMedal))
            {
                return(null);
            }

            PrestigeMedalData prestigeMedalData = client.ClientData.prestigeMedalData;

            if (prestigeMedalData == null)
            {
                PrestigeMedalBasicData basic = null;
                prestigeMedalData = new PrestigeMedalData();

                List <int> data = Global.GetRoleParamsIntListFromDB(client, RoleParamName.PrestigeMedal);
                if (data == null || data.Count <= 0)
                {
                    basic = GetPrestigeMedalBasicDataByID(_defaultMedalID);
                    prestigeMedalData.RoleID  = client.ClientData.RoleID;
                    prestigeMedalData.MedalID = basic.MedalID;

                    ModifyPrestigeMedalData(client, prestigeMedalData, true);
                }
                else
                {
                    prestigeMedalData.RoleID     = client.ClientData.RoleID;
                    prestigeMedalData.MedalID    = data[0];
                    prestigeMedalData.LifeAdd    = data[1];
                    prestigeMedalData.AttackAdd  = data[2];
                    prestigeMedalData.DefenseAdd = data[3];
                    prestigeMedalData.HitAdd     = data[4];

                    if (prestigeMedalData.MedalID > _prestigeMedalBasicList.Count)
                    {
                        prestigeMedalData.UpResultType = 3;
                        basic = GetPrestigeMedalBasicDataByID(_prestigeMedalBasicList.Count);
                    }
                    else
                    {
                        basic = GetPrestigeMedalBasicDataByID(prestigeMedalData.MedalID);
                    }
                }

                prestigeMedalData.Diamond  = GetPrestigeMedalDiamond(client, GetPrestigeMedalUpCount(client));
                prestigeMedalData.Prestige = basic.PrestigeCost;

                client.ClientData.prestigeMedalData = prestigeMedalData;
            }

            prestigeMedalData.PrestigeLeft = GameManager.ClientMgr.GetShengWangValue(client);

            return(prestigeMedalData);
        }
Ejemplo n.º 13
0
        public static bool IsGongNengOpened()
        {
            // 如果2.0的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System2Dot0))
            {
                return(false);
            }

            return(GameManager.VersionSystemOpenMgr.IsVersionSystemOpen(VersionSystemOpenKey.UnionPalace));
        }
Ejemplo n.º 14
0
        private bool ProcessCmdActivateInfo(GameClient client, int nID, byte[] bytes, string[] cmdParams)
        {
            try
            {
                // 如果1.9的功能没开放
                if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot9))
                {
                    client.sendCmd((int)TCPGameServerCmds.CMD_SPR_ACTIVATE_INFO, (int)EUserActivateState.NotOpen);
                    return(true);
                }

                bool isCheck = CheckHelper.CheckCmdLengthAndRole(client, nID, cmdParams, 5);
                if (!isCheck)
                {
                    return(false);
                }

                int    roleID       = int.Parse(cmdParams[0]);
                string userID       = cmdParams[1];
                int    activateType = Convert.ToInt32(cmdParams[2]);
                string activateInfo = cmdParams[3].ToLower();
                string error        = cmdParams[4];

                string checkInfo = GetCheckInfo(userID, error, activateType);
                if (checkInfo != activateInfo)
                {
                    client.sendCmd((int)TCPGameServerCmds.CMD_SPR_ACTIVATE_INFO, (int)EUserActivateState.ECheck);
                    return(true);
                }

                PlatformTypes platformType = GameCoreInterface.getinstance().GetPlatformType();
                if (platformType != PlatformTypes.APP)
                {
                    client.sendCmd((int)TCPGameServerCmds.CMD_SPR_ACTIVATE_INFO, (int)EUserActivateState.EPlatform);
                    return(true);
                }

                if (activateType != 0)
                {
                    client.sendCmd((int)TCPGameServerCmds.CMD_SPR_ACTIVATE_INFO, (int)EUserActivateState.EnoBind);
                    return(true);
                }

                int awardState = DBActivateStateGet(client);
                client.sendCmd((int)TCPGameServerCmds.CMD_SPR_ACTIVATE_INFO, awardState);

                return(true);
            }
            catch (Exception ex)
            {
                DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false);
            }

            return(false);
        }
Ejemplo n.º 15
0
 public void OnCharge(GameClient client)
 {
     if (!GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
     {
         if (this.IsInActivityTime(client))
         {
             this.ChargeAct.Update(client);
             this.CheckSendIconState(client);
         }
     }
 }
Ejemplo n.º 16
0
 public static void initSetPrestigeMedalProps(GameClient client)
 {
     if (!GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
     {
         if (GlobalNew.IsGongNengOpened(client, GongNengIDs.PrestigeMedal, false))
         {
             PrestigeMedalData PrestigeMedalData = PrestigeMedalManager.GetPrestigeMedalData(client);
             PrestigeMedalManager.SetPrestigeMedalProps(client, PrestigeMedalData);
         }
     }
 }
Ejemplo n.º 17
0
        /// <summary>
        /// user登录的时候,初始化user的二级密码信息
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="alreadyOnline"></param>
        /// <returns></returns>
        public static SecPwdState InitUserState(string userID, bool alreadyOnline)
        {
            // 如果1.4.1的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
            {
                return(null);
            }

            if (string.IsNullOrEmpty(userID))
            {
                return(null);
            }

            SecPwdState pwdState = GetSecPwdState(userID);

            if (pwdState == null)
            {
                // 如果gameserver没有缓存userid对应的二级密码信息,说明尚未加载过或者不存在
                string[] result = Global.ExecuteDBCmd((int)TCPGameServerCmds.CMD_DB_GET_USR_SECOND_PASSWORD, userID, GameManager.LocalServerId);
                if (result != null && result.Length == 2 && !string.IsNullOrEmpty(result[1]))
                {
                    // 加载了二级密码,断定是第一次登录,强制验证
                    pwdState            = new SecPwdState();
                    pwdState.SecPwd     = result[1];
                    pwdState.NeedVerify = true;
                }
            }
            else
            {
                // 找到了二级密码信息,那么一定存在二级密码
                if (alreadyOnline)
                {
                    //账号被顶的情况,那么强制再次验证
                    pwdState.NeedVerify = true;
                }

                if (!pwdState.NeedVerify)
                {
                    //检测下距离上次登出隔了多久,超过限制的话,还让他验证
                    if (TimeUtil.NowDateTime() > pwdState.AuthDeadTime)
                    {
                        pwdState.NeedVerify = true;
                    }
                }
            }

            if (pwdState != null)
            {
                SetSecPwdState(userID, pwdState);
            }

            return(pwdState);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 判断是否在七日活动时间内
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public bool IsInActivityTime(GameClient client)
        {
            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return(false);
            }

            int currDay;

            return(IsInActivityTime(client, out currDay));
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 处理客户端查询七日活动
        /// </summary>
        private bool HandleClientQuery(GameClient client, int nID, byte[] bytes, string[] cmdParams)
        {
            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return(false);
            }

            int act = Convert.ToInt32(cmdParams[1]);

            SevenDayActQueryData resultData = new SevenDayActQueryData();

            resultData.ActivityType = act;
            resultData.ItemDict     = null;

            TCPOutPacket packet = null;
            Dictionary <int, SevenDayItemData> itemData = GetActivityData(client, (ESevenDayActType)act);

            if (itemData == null)
            {
                packet = DataHelper.ObjectToTCPOutPacket(resultData, TCPOutPacketPool.getInstance(), nID);
            }
            else
            {
                // 外部会修改,锁住,保证原子性
                lock (itemData)
                {
                    resultData.ItemDict = itemData;
                    if (act == (int)ESevenDayActType.Charge)
                    {
                        //为兼容老数据,七日充值数据,数据库保存的是人民币值,给客户端时,转换为钻石数
                        resultData.ItemDict = new Dictionary <int, SevenDayItemData>();
                        foreach (var kv in itemData)
                        {
                            resultData.ItemDict.Add(kv.Key, new SevenDayItemData()
                            {
                                AwardFlag = kv.Value.AwardFlag, Params1 = Global.TransMoneyToYuanBao(kv.Value.Params1), Params2 = kv.Value.Params2,
                            });
                        }
                    }

                    packet = DataHelper.ObjectToTCPOutPacket(resultData, TCPOutPacketPool.getInstance(), nID);
                }
            }

            if (packet != null)
            {
                client.sendCmd(packet);
            }

            return(true);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// 修改声望勋章数据
        /// </summary>
        /// <returns></returns>
        public static void ModifyPrestigeMedalData(GameClient client, PrestigeMedalData data, bool writeToDB = false)
        {
            // 如果1.4.1的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
            {
                return;
            }
            List <int> dataList = new List <int>();

            dataList.AddRange(new int[] { data.MedalID, data.LifeAdd, data.AttackAdd, data.DefenseAdd, data.HitAdd });

            Global.SaveRoleParamsIntListToDB(client, dataList, RoleParamName.PrestigeMedal, writeToDB);
        }
Ejemplo n.º 21
0
 public static void ModifyPrestigeMedalUpCount(GameClient client, int count, bool writeToDB = false)
 {
     if (!GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
     {
         List <int> dataList = new List <int>();
         dataList.AddRange(new int[]
         {
             TimeUtil.NowDateTime().DayOfYear,
             count
         });
         Global.SaveRoleParamsIntListToDB(client, dataList, "PrestigeMedalUpCount", writeToDB);
     }
 }
Ejemplo n.º 22
0
        /// <summary>
        /// 检测发送图标状态
        /// </summary>
        /// <param name="client"></param>
        private void CheckSendIconState(GameClient client)
        {
            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return;
            }

            if (client == null)
            {
                return;
            }

            bool bAnyChildActived = false;
            bool bChanged         = false;
            bool bTmpFlag         = false;

            // 七日登录
            bTmpFlag  = LoginAct.HasAnyAwardCanGet(client); bAnyChildActived |= bTmpFlag;
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayLogin, bTmpFlag);

            // 七日充值
            bTmpFlag  = ChargeAct.HasAnyAwardCanGet(client); bAnyChildActived |= bTmpFlag;
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayCharge, bTmpFlag);

            // 七日抢购
            bTmpFlag  = BuyAct.HasAnyCanBuy(client); bAnyChildActived |= bTmpFlag;
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayBuy, bTmpFlag);

            // 七日目标
            bool[] bGoalDay = null;
            bTmpFlag  = GoalAct.HasAnyAwardCanGet(client, out bGoalDay);
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayGoal_1, bGoalDay[0]);
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayGoal_2, bGoalDay[1]);
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayGoal_3, bGoalDay[2]);
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayGoal_4, bGoalDay[3]);
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayGoal_5, bGoalDay[4]);
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayGoal_6, bGoalDay[5]);
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayGoal_7, bGoalDay[6]);

            bAnyChildActived |= bTmpFlag;
            bChanged         |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayGoal, bTmpFlag);

            // 总图标
            bChanged |= client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.SevenDayActivity, bAnyChildActived);

            if (bChanged)
            {
                client._IconStateMgr.SendIconStateToClient(client);
            }
        }
Ejemplo n.º 23
0
        /// <summary>
        ///  玩家充值
        /// </summary>
        /// <param name="client"></param>
        public void OnCharge(GameClient client)
        {
            // 如果1.8的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                return;
            }

            if (IsInActivityTime(client))
            {
                ChargeAct.Update(client);
                CheckSendIconState(client);
            }
        }
Ejemplo n.º 24
0
        private bool HandleClientQuery(GameClient client, int nID, byte[] bytes, string[] cmdParams)
        {
            bool result;

            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot8))
            {
                result = false;
            }
            else
            {
                int act = Convert.ToInt32(cmdParams[1]);
                SevenDayActQueryData resultData = new SevenDayActQueryData();
                resultData.ActivityType = act;
                resultData.ItemDict     = null;
                TCPOutPacket packet = null;
                Dictionary <int, SevenDayItemData> itemData = this.GetActivityData(client, (ESevenDayActType)act);
                if (itemData == null)
                {
                    packet = DataHelper.ObjectToTCPOutPacket <SevenDayActQueryData>(resultData, TCPOutPacketPool.getInstance(), nID);
                }
                else
                {
                    lock (itemData)
                    {
                        resultData.ItemDict = itemData;
                        if (act == 2)
                        {
                            resultData.ItemDict = new Dictionary <int, SevenDayItemData>();
                            foreach (KeyValuePair <int, SevenDayItemData> kv in itemData)
                            {
                                resultData.ItemDict.Add(kv.Key, new SevenDayItemData
                                {
                                    AwardFlag = kv.Value.AwardFlag,
                                    Params1   = Global.TransMoneyToYuanBao(kv.Value.Params1),
                                    Params2   = kv.Value.Params2
                                });
                            }
                        }
                        packet = DataHelper.ObjectToTCPOutPacket <SevenDayActQueryData>(resultData, TCPOutPacketPool.getInstance(), nID);
                    }
                }
                if (packet != null)
                {
                    client.sendCmd(packet, true);
                }
                result = true;
            }
            return(result);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// 判断功能是否开启
        /// </summary>
        public bool IsGongNengOpened()
        {
            // 如果1.7的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot7))
            {
                return(false);
            }

            if (GameManager.VersionSystemOpenMgr.IsVersionSystemOpen(VersionSystemOpenKey.Today))
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 26
0
        public static SecPwdState InitUserState(string userID, bool alreadyOnline)
        {
            SecPwdState result2;

            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
            {
                result2 = null;
            }
            else if (string.IsNullOrEmpty(userID))
            {
                result2 = null;
            }
            else
            {
                SecPwdState pwdState = SecondPasswordManager.GetSecPwdState(userID);
                if (pwdState == null)
                {
                    string[] result = Global.ExecuteDBCmd(10184, userID, 0);
                    if (result != null && result.Length == 2 && !string.IsNullOrEmpty(result[1]))
                    {
                        pwdState            = new SecPwdState();
                        pwdState.SecPwd     = result[1];
                        pwdState.NeedVerify = true;
                    }
                }
                else
                {
                    if (alreadyOnline)
                    {
                        pwdState.NeedVerify = true;
                    }
                    if (!pwdState.NeedVerify)
                    {
                        if (TimeUtil.NowDateTime() > pwdState.AuthDeadTime)
                        {
                            pwdState.NeedVerify = true;
                        }
                    }
                }
                if (pwdState != null)
                {
                    SecondPasswordManager.SetSecPwdState(userID, pwdState);
                }
                result2 = pwdState;
            }
            return(result2);
        }
Ejemplo n.º 27
0
 public static void HandleUserBuyYueKa(string userID, int roleID)
 {
     if (!GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1))
     {
         GameClient client = GameManager.ClientMgr.FindClient(roleID);
         LogManager.WriteLog(LogTypes.Error, string.Format("HandleUserBuyYueKa, userid={0}, roleid={1}", userID, roleID), null, true);
         if (null != client)
         {
             LogManager.WriteLog(LogTypes.Error, string.Format("HandleUserBuyYueKa, 玩家在线, 在线的userid={0},  roleid={1}", userID, client.ClientData.RoleID), null, true);
             Global.ProcessVipLevelUp(client);
             lock (client.ClientData.YKDetail)
             {
                 if (client.ClientData.YKDetail.HasYueKa == 0)
                 {
                     DateTime nowDate = TimeUtil.NowDateTime();
                     client.ClientData.YKDetail.HasYueKa     = 1;
                     client.ClientData.YKDetail.BegOffsetDay = Global.GetOffsetDay(nowDate);
                     client.ClientData.YKDetail.EndOffsetDay = client.ClientData.YKDetail.BegOffsetDay + YueKaManager.DAYS_PER_YUE_KA;
                     client.ClientData.YKDetail.CurOffsetDay = Global.GetOffsetDay(nowDate);
                     client.ClientData.YKDetail.AwardInfo    = "0";
                 }
                 else
                 {
                     client.ClientData.YKDetail.EndOffsetDay += YueKaManager.DAYS_PER_YUE_KA;
                 }
                 GameManager.ClientMgr.NotifySelfParamsValueChange(client, RoleCommonUseIntParamsIndexs.YueKaRemainDay, client.ClientData.YKDetail.RemainDayOfYueKa());
                 YueKaManager._UpdateYKDetail2DB(client, client.ClientData.YKDetail);
                 if (client._IconStateMgr.CheckFuLiYueKaFanLi(client))
                 {
                     client._IconStateMgr.SendIconStateToClient(client);
                 }
             }
         }
         else
         {
             LogManager.WriteLog(LogTypes.Error, string.Format("玩家购买了月卡,但是处理的时候找不到在线角色, UserID={0}, last roldid={1}, 转交给db处理", userID, roleID), null, true);
             int      beginOffsetDay = Global.GetOffsetDay(TimeUtil.NowDateTime());
             string   strcmd         = string.Format("{0}:{1}:{2}", roleID, beginOffsetDay, "YueKaInfo");
             string[] dbFields       = Global.ExecuteDBCmd(10181, strcmd, 0);
             if (dbFields == null || dbFields.Length != 1 || dbFields[0] != "0")
             {
                 LogManager.WriteLog(LogTypes.Error, string.Format("玩家购买了月卡,但是处理的时候找不到在线角色, UserID={0}, last roldid={1}, 转交给db处理时失败了", userID, roleID), null, true);
             }
         }
     }
 }
Ejemplo n.º 28
0
 public static bool IsGongNengOpened(GameClient client)
 {
     // 如果2.0的功能没开放
     if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System2Dot0))
     {
         return(false);
     }
     if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.PetSkill))
     {
         return(false);
     }
     if (!GameManager.VersionSystemOpenMgr.IsVersionSystemOpen(VersionSystemOpenKey.PetSkill))
     {
         return(false);
     }
     return(true);
 }
Ejemplo n.º 29
0
 public static void initDb()
 {
     if (!GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot7))
     {
         if (GameManager.VersionSystemOpenMgr.IsVersionSystemOpen("Ten"))
         {
             string dbCmds = "";
             foreach (TenAwardData item in TenManager._tenAwardDic.Values)
             {
                 if (dbCmds.Length > 0)
                 {
                     dbCmds += "#";
                 }
                 string goodsStr = "";
                 if (item.AwardGoods != null && item.AwardGoods.Count > 0)
                 {
                     foreach (GoodsData goods in item.AwardGoods)
                     {
                         if (goodsStr.Length > 0)
                         {
                             goodsStr += "|";
                         }
                         goodsStr += string.Format("{0},{1},{2}", goods.GoodsID, goods.GCount, goods.Binding);
                     }
                 }
                 dbCmds += string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}", new object[]
                 {
                     item.AwardID,
                     item.DbKey,
                     item.OnlyNum,
                     item.DayMaxNum,
                     goodsStr,
                     item.MailTitle,
                     item.MailContent,
                     item.MailUser,
                     item.BeginTime.ToString("yyyyMMddHHmmss"),
                     item.EndTime.ToString("yyyyMMddHHmmss"),
                     item.RoleLevel
                 });
             }
             string[] dbFields = null;
             Global.RequestToDBServer(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, 13113, dbCmds, out dbFields, 0);
         }
     }
 }
Ejemplo n.º 30
0
        public static void initDb()
        {
            // 如果1.7的功能没开放
            if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot7))
            {
                return;
            }

            if (!GameManager.VersionSystemOpenMgr.IsVersionSystemOpen(VersionSystemOpenKey.Ten))
            {
                return;
            }

            string dbCmds = "";

            foreach (var item in _tenAwardDic.Values)
            {
                if (dbCmds.Length > 0)
                {
                    dbCmds += "#";
                }

                string goodsStr = "";
                if (item.AwardGoods != null && item.AwardGoods.Count > 0)
                {
                    foreach (var goods in item.AwardGoods)
                    {
                        if (goodsStr.Length > 0)
                        {
                            goodsStr += "|";
                        }

                        goodsStr += string.Format("{0},{1},{2}", goods.GoodsID, goods.GCount, goods.Binding);
                    }
                }

                dbCmds += string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}",
                                        item.AwardID, item.DbKey, item.OnlyNum, item.DayMaxNum, goodsStr,
                                        item.MailTitle, item.MailContent, item.MailUser, item.BeginTime.ToString("yyyyMMddHHmmss"), item.EndTime.ToString("yyyyMMddHHmmss"), item.RoleLevel);
            }

            string[] dbFields = null;
            Global.RequestToDBServer(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool,
                                     (int)TCPGameServerCmds.CMD_DB_TEN_INIT, dbCmds, out dbFields, GameManager.LocalServerId);
        }