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