From 4c6786e17ef724a0dfdfeca8cf4a36bc4a7b9898 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 15 二月 2019 15:17:26 +0800 Subject: [PATCH] 6211 【后端】【1.6】合服任务单(合服邮件、重置首充双倍、重置商店购买次数、设置合服命令SetMixServer) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py | 37 +++++++++ /dev/null | 34 -------- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py | 28 +++++-- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 10 + ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 1 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 46 +++++++++- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 22 +++- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py | 19 ---- ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py | 19 +++- ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 1 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py | 3 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 3 12 files changed, 138 insertions(+), 85 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py index 3bba077..bed0a52 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py @@ -16,11 +16,12 @@ # 详细描述: 设置合服 # #-------------------------------------------------------------------- -"""Version = 2014-12-03 18:30""" - +#"""Version = 2014-12-03 18:30""" +#-------------------------------------------------------------------- import GameWorld import PlayerDBGSEvent import PlayerEventCounter +import GameWorldProcess import ShareDefine import GMCommon #--------------------------------------------------------------------- @@ -40,17 +41,25 @@ PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer, 1 if isMix else 0) PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay, 0) PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServerInitOK, 0) - openDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) - if openDay <= 14: - PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay, 15) + if isMix: + openDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + if openDay <= 14: + openDay = 15 + openDay += 1 + PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay, openDay) # 为了变更合服时的开服天标记,这里每次默认加1 + GameWorldProcess.__DoMixServerInit() openDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) + lastMixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay) + lastMixServerWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerWorldLV) GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openDay) GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_IsMixServer, isMixServer) GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_MixServerDay, mixServerDay) + GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerDay, lastMixServerDay) + GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerWorldLV, lastMixServerWorldLV) # 刷新一次活动 tick = GameWorld.GetGameWorld().GetTick() diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py index 1825715..0aff318 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py @@ -1382,9 +1382,11 @@ # 合服天 mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_MixServerDay, mixServerDay) - # 上次合服时的开服天数 + # 上次合服时的开服天数、世界等级 lastMixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay) GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerDay, lastMixServerDay) + lastMixServerWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerWorldLV) + GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerWorldLV, lastMixServerWorldLV) # 通知战盟相关活动开启状态 fadState = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_FamilyActivityDayState) @@ -1458,10 +1460,12 @@ # 设置合服首次启动加载成功 PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServerInitOK, 1) - # 设置本次合服时的开服天数 + # 设置本次合服时的开服天数、世界等级 serverDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay, serverDay) - GameWorld.Log(" 合服首次启动加载成功!") + worldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) + PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerWorldLV, worldLV) + GameWorld.Log(" 合服首次启动加载成功! serverDay=%s,worldLV=%s" % (serverDay, worldLV)) return def __DelOutofdayRecData(universalRecMgr): diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py index 7e15394..08fdb5b 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDBGSEvent.py @@ -80,6 +80,9 @@ #上次合服时的开服天数 Def_LastMixServerDay = 'LastMixServerDay' +#上次合服时的世界等级 +Def_LastMixServerWorldLV = 'LastMixServerWorldLV' + #首次开服时间,注意不要用该日期做开服天相关的功能逻辑,如果要用开服天,请用 Def_ServerDay ''' 原因: 因为目前开服天的逻辑大部分是用 Def_ServerDay,当出现服务器宕机超过24小时时,就会导致 Def_ServerDay 与 Def_InitOpenServerTime 不对应 diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py index 2e2a332..3894633 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py @@ -83,6 +83,9 @@ def GetCurWeekMissionMoney(curFamily): return curFamily.GetExtra2() def SetCurWeekMissionMoney(curFamily, value): return curFamily.SetExtra2(min(value, ChConfig.Def_UpperLimit_DWord)) +# 仙盟上次处理的合服天 +def GetFamilyMixServerDay(curFamily): return curFamily.GetExtra1() +def SetFamilyMixServerDay(curFamily, value): return curFamily.SetExtra1(value) ## ------------------ 成员 ---------------------- def GetMemberFightPower(curMember): return curMember.GetExattr3() def SetMemberFightPower(curMember, fightPower): return curMember.SetExattr3(fightPower) @@ -235,6 +238,9 @@ curFamily.SetLV(1) curFamily.SetAcceptJoin(ShareDefine.FamilyAcceptJoin_Agree) #设置收人方式为直接通过申请 PyDataManager.GetFamilyStoreItemManager().DelFamilyStoreItemAll(curFamily.GetID()) + + #新创建的仙盟默认设置已处理过合服 + SetFamilyMixServerDay(curFamily, PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay)) #-设置家族成员属性 DoPlayerJionFamily(curFamily, curPlayer, IPY_GameServer.fmlLeader) @@ -1926,6 +1932,37 @@ PlayerRefresh(curPlayer, tick) GameWorldFamilyWar.OnPlayerLogin(curFamily, curPlayer) + + # 盟主上线处理 + if curMember.GetFamilyLV() == IPY_GameServer.fmlLeader: + OnFamilyLeaderLogin(curPlayer, curFamily) + return + +def OnFamilyLeaderLogin(curPlayer, curFamily): + ## 盟主登录处理 + __DoFamilyMixServerLogicOnLeaderLogin(curPlayer, curFamily) + return + +def __DoFamilyMixServerLogicOnLeaderLogin(curPlayer, curFamily): + ## 合服仙盟盟主登录处理 + + isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) + if not isMixServer: + return + lastMixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay) + familyID = curFamily.GetID() + familyMixServerDay = GetFamilyMixServerDay(curFamily) + if familyMixServerDay == lastMixServerDay: + GameWorld.DebugLog("已经处理过仙盟盟主合服登录逻辑! lastMixServerDay=%s" % (lastMixServerDay), familyID) + return + SetFamilyMixServerDay(curFamily, lastMixServerDay) + GameWorld.Log("处理合服仙盟盟主登录! lastMixServerDay=%s" % (lastMixServerDay), familyID) + + mailItemList = IpyGameDataPY.GetFuncEvalCfg("MixServerMail", 4) + playerID = curPlayer.GetPlayerID() + detailDict = {} + GameWorld.Log(" 发送合服盟主专属补偿邮件! familyID=%s,mailItemList=%s" % (familyID, mailItemList), playerID) + PlayerCompensation.SendMailByKey("MixServer2", [playerID], mailItemList, detail=detailDict) return #--------------------------------------------------------------------- ## 玩家下线家族刷新逻辑 diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py index 194ae5e..5e81214 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py @@ -132,6 +132,7 @@ Def_Notify_WorldKey_IsMixServer = 'IsMixServer' # 是否合服服务器 Def_Notify_WorldKey_MixServerDay = 'MixServerDay' # 合服天数 Def_Notify_WorldKey_LastMixServerDay = 'LastMixServerDay' # 上次合服时的开服天数 +Def_Notify_WorldKey_LastMixServerWorldLV = 'LastMixServerWorldLV' # 上次合服时的世界等级 Def_Notify_WorldKey_OnDayEx = 'OnDayEx' # 特殊时间点凌晨X点过天 Def_Notify_WorldKey_OnWeekEx = 'OnWeekEx' # 特殊时间点凌晨X点过周 Def_Notify_WorldKey_OnMonthEx = 'OnMonthEx' # 特殊时间点凌晨X点过月 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py index 7a4a4d5..63ba817 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py @@ -3537,8 +3537,7 @@ Def_PDict_LoginClientType = "LoginClientType" # 客户端登录类型 -Def_PDict_MSFirstLogin_UpdBillboard = "MSFirstLogin_UpdBillboard" # 合服首登同步排行榜信息 -Def_PDict_MixLoginDay = "MixLoginDay" # 合服首登处理标记 +Def_PDict_MixLoginDay = "MixLoginDay" # 合服首登处理标记天 Def_PDict_ExcActionItemCnt = "ExcI_%s_%s" # 活动兑换物品已兑换次数,参数(活动key,兑换物品对应次数编号标识) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py index 24e6d1c..8b756d8 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py @@ -216,18 +216,29 @@ elif onEventType == ShareDefine.Def_OnEventTypeEx: refreshType = [4] openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) - if openServerDay % 3 == 0: - refreshType = [4,7] + isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer) + if isMixServer: + mixServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay) + if mixServerDay % 3 == 0: + refreshType.append(7) + elif openServerDay % 3 == 0: + refreshType.append(7) else: return - __ResetShopItemBuyCount(curPlayer, refreshType) + ResetShopItemBuyCount(curPlayer, refreshType) return ##商店物品OnWeek # @param curPlayer 玩家实例 # @return def ShopItemOnWeek(curPlayer, onEventType): - __ResetShopItemBuyCount(curPlayer, [onEventType]) + if onEventType == ShareDefine.Def_OnEventType: + refreshType = [1] + elif onEventType == ShareDefine.Def_OnEventTypeEx: + refreshType = [2] + else: + return + ResetShopItemBuyCount(curPlayer, refreshType) return ##商店物品OnMonth @@ -240,16 +251,17 @@ refreshType = 6 else: return - __ResetShopItemBuyCount(curPlayer, [refreshType]) + ResetShopItemBuyCount(curPlayer, [refreshType]) return def ShopItemOnCrossPKSeasonChange(curPlayer): ## 按跨服PK赛季重置 refreshType = 8 - __ResetShopItemBuyCount(curPlayer, [refreshType]) + ResetShopItemBuyCount(curPlayer, [refreshType]) return -def __ResetShopItemBuyCount(curPlayer, onEventTypeList): +def ResetShopItemBuyCount(curPlayer, onEventTypeList=[]): + #@param onEventTypeList: 需要重置的类型列表,为空时重置所有类型 #重置商店物品购买次数 1:周一0点刷新 2:周一5点刷新 3:每日0点刷新 4:每日5点刷新 5每月0点 6每月5点 7每3天5点 8每赛季 syncIndexList = [] ipyDataMgr = IpyGameDataPY.IPY_Data() @@ -257,7 +269,7 @@ shopItem = ipyDataMgr.GetStoreByIndex(i) if not shopItem.GetLimitCnt(): continue - if shopItem.GetRefreshType() not in onEventTypeList: + if onEventTypeList and shopItem.GetRefreshType() not in onEventTypeList: continue dayBuyCntKey = ChConfig.Def_PDict_ShopItemDayBuyCnt % shopItem.GetID() curDayBuyCnt = curPlayer.NomalDictGetProperty(dayBuyCntKey) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearMixServerAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearMixServerAward.py deleted file mode 100644 index 4cb1feb..0000000 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearMixServerAward.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/python -# -*- coding: GBK -*- -# -# -##@package ClearMixServerAward.py -# -# @todo:清除合服奖励 -# -# @author ljd -# @date 2014-12-01 16:30 -# @version 1.2 -# @note: -# -# @change: "2014-12-03 14:30" hxp 增加重置合服活动数据 -# @change: "2014-12-09 17:00" hxp 增加重置合服首登同步排行榜记录 -# -#------------------------------------------------------------------------------ -#"""Version = 2014-12-09 17:00""" -#------------------------------------------------------------------------------ - -import PlayerControl -import ChConfig -#--------------------------------------------------------------------- - -## 执行逻辑 -# @param curPlayer 当前玩家 -# @param cmdList 参数 -# @return None -# @remarks 函数详细说明. -def OnExec(curPlayer, cmdList): - - # 重置首登同步排行榜记录 - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MSFirstLogin_UpdBillboard, 0) - return diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py index 6e04eb4..8a0fa4a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py @@ -816,23 +816,55 @@ if not isMixServer: return - lastMixServerDayKey = ShareDefine.Def_Notify_WorldKey_LastMixServerDay - lastMixServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(lastMixServerDayKey) - GameWorld.DebugLog("合服首登处理lastMixServerDay=%s" % lastMixServerDay, curPlayer.GetPlayerID()) + playerID = curPlayer.GetPlayerID() + lastMixServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_LastMixServerDay) playerDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixLoginDay) if playerDay == lastMixServerDay: - GameWorld.DebugLog("本次合服已经登录过.") + GameWorld.DebugLog("本次合服已经登录过. lastMixServerDay=%s" % (lastMixServerDay), playerID) return - + mixServerWorldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_LastMixServerWorldLV) # 合服时的世界等级 + GameWorld.Log("玩家合服首登处理! lastMixServerDay=%s,mixServerWorldLV=%s" % (lastMixServerDay, mixServerWorldLV), playerID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixLoginDay, lastMixServerDay) + # 重置首充双倍 + PlayerCoin.DoResetCTGCount(curPlayer, "MixServer") + + # 重置商店购买次数 + FunctionNPCCommon.ResetShopItemBuyCount(curPlayer) + + # 合服邮件,盟主专属邮件在GameServer处理 + mailItemList = IpyGameDataPY.GetFuncEvalCfg("MixServerMail", 1) + worldLVMailItemList = IpyGameDataPY.GetFuncEvalCfg("MixServerMail", 2) + mailMoneyList = IpyGameDataPY.GetFuncEvalCfg("MixServerMail", 3) + goldPaper, silver = mailMoneyList + worldLVItemList = [] + for itemID, itemCount, isBind in worldLVMailItemList: + itemData = GameWorld.GetGameData().GetItemByTypeID(itemID) + if not itemData: + continue + curEff = itemData.GetEffectByIndex(0) + curEffID = curEff.GetEffectID() + if curEffID != ChConfig.Def_Effect_ItemAddLV: + continue + lvLimit = curEff.GetEffectValue(1) + if not lvLimit: + continue + if lvLimit <= mixServerWorldLV: + worldLVItemList = [[itemID, itemCount, isBind]] + else: + break + detailDict = {"MixServerWorldLV":mixServerWorldLV, "LastMixServerDay":lastMixServerDay} + addItemList = mailItemList + worldLVItemList + PlayerControl.SendMailByKey("MixServer1", [playerID], addItemList, goldPaper=goldPaper, silver=silver, detail=detailDict) + GameWorld.Log(" 发送合服补偿邮件: addItemList=%s" % (addItemList), playerID) + # 同步排行榜 - PlayerBillboard.UpdBillboardOnMixServerFirstLogin(curPlayer, lastMixServerDay) + PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer, isAll=True) # 重置玩家改名次数 - UpdatePlayerName.ResetChangeNameCnt(curPlayer) + #UpdatePlayerName.ResetChangeNameCnt(curPlayer) return #--------------------------------------------------------------------- diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py index 98d6bdc..ec5c0d4 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py @@ -204,25 +204,6 @@ UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故上线不再同步 return -##合服首次上线强制更新一次排行榜 -# @param curPlayer 玩家实例 -# @param lastMixServerDay 合服时的开服天 -# @return -def UpdBillboardOnMixServerFirstLogin(curPlayer, lastMixServerDay): - - updBillboardDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MSFirstLogin_UpdBillboard) - - if lastMixServerDay == updBillboardDay: - GameWorld.DebugLog("合服首登同步排行榜已处理过!lastMixServerDay=%s,updBillboardDay=%s" - % (lastMixServerDay, updBillboardDay)) - return - - GameWorld.DebugLog("合服首登同步排行榜...") - UpdatePlayerBillboardOnLeaveServer(curPlayer) - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MSFirstLogin_UpdBillboard, lastMixServerDay) - GameWorld.DebugLog(" 合服首登同步排行榜OK!!!") - return - ## 更新当前镖车信息 # @param playerID: 玩家ID # @param playerName: 玩家名字 diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py index c0c7493..7d1e6b6 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py @@ -61,11 +61,11 @@ def GetCoinRate(): return IpyGameDataPY.GetFuncCfg("PayRMB") def OnLogin(curPlayer): - DoResetCTGCount(curPlayer) - Sync_CoinToGoldCountInfo(curPlayer) + if not DoResetCTGCountByTime(curPlayer): + Sync_CoinToGoldCountInfo(curPlayer) return -def DoResetCTGCount(curPlayer): +def DoResetCTGCountByTime(curPlayer): # 重置充值次数 ctgResetTimeYMD = IpyGameDataPY.GetFuncCfg("CTG", 1) if not ctgResetTimeYMD: @@ -74,7 +74,7 @@ GameWorld.ErrLog("充值重置时间配置必须是数值格式,不能包含符号!") return curTime = int(time.time()) - playerID = curPlayer.GetPlayerID() + #playerID = curPlayer.GetPlayerID() resetTime = GameWorld.ChangeTimeStrToNum(str(ctgResetTimeYMD), "%Y%m%d") if curTime < resetTime: #GameWorld.DebugLog("还未到达充值充值次数时间!curTime=%s < resetTime=%s" % (curTime, resetTime), playerID) @@ -85,6 +85,13 @@ return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGCountResetTime, resetTime) + DoResetCTGCount(curPlayer, ctgResetTimeYMD) + return True + +def DoResetCTGCount(curPlayer, resetEvent): + # 重置充值次数 + + playerID = curPlayer.GetPlayerID() ipyDataMgr = IpyGameDataPY.IPY_Data() for i in xrange(ipyDataMgr.GetCTGCount()): ipyData = ipyDataMgr.GetCTGByIndex(i) @@ -95,11 +102,12 @@ continue PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGGoodsBuyCount % recordID, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, 0) - drDict = {"PlayerID":curPlayer.GetPlayerID(),"AccID":curPlayer.GetAccID(), "ResetTimeYMD":ctgResetTimeYMD, + drDict = {"PlayerID":curPlayer.GetPlayerID(),"AccID":curPlayer.GetAccID(), "ResetEvent":resetEvent, "totalBuyCount":totalBuyCount, "todayBuyCount":todayBuyCount, "recordID":recordID} DataRecordPack.SendEventPack("ResetCTGCount", drDict, curPlayer) - GameWorld.Log("重置充值次数: ResetTimeYMD=%s,recordID=%s,totalBuyCount=%s,todayBuyCount=%s" - % (ctgResetTimeYMD, recordID, totalBuyCount, todayBuyCount), playerID) + GameWorld.Log("重置充值次数: resetEvent=%s,recordID=%s,totalBuyCount=%s,todayBuyCount=%s" + % (resetEvent, recordID, totalBuyCount, todayBuyCount), playerID) + Sync_CoinToGoldCountInfo(curPlayer) return diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py index 194ae5e..5e81214 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py @@ -132,6 +132,7 @@ Def_Notify_WorldKey_IsMixServer = 'IsMixServer' # 是否合服服务器 Def_Notify_WorldKey_MixServerDay = 'MixServerDay' # 合服天数 Def_Notify_WorldKey_LastMixServerDay = 'LastMixServerDay' # 上次合服时的开服天数 +Def_Notify_WorldKey_LastMixServerWorldLV = 'LastMixServerWorldLV' # 上次合服时的世界等级 Def_Notify_WorldKey_OnDayEx = 'OnDayEx' # 特殊时间点凌晨X点过天 Def_Notify_WorldKey_OnWeekEx = 'OnWeekEx' # 特殊时间点凌晨X点过周 Def_Notify_WorldKey_OnMonthEx = 'OnMonthEx' # 特殊时间点凌晨X点过月 -- Gitblit v1.8.0