From 5685e4d493ef5b7570bc20b6037fc2c8603cab85 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 13 二月 2019 14:41:57 +0800
Subject: [PATCH] 6211 【后端】【1.6】合服任务单(删除旧合服相关内容)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py | 51 --
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py | 215 -----------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 49 --
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py | 17
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py | 85 ----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py | 66 ---
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py | 34 -
/dev/null | 117 ------
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py | 1
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/ClearOpenServerDay.py | 13
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 22
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py | 24 -
ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py | 5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 97 -----
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 49 --
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearMixServerAward.py | 40 --
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py | 222 -----------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 9
20 files changed, 17 insertions(+), 1,107 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
index 1098c9a..090fc4d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
@@ -591,11 +591,6 @@
ShareDefine.Def_BT_RechargeTeHuiLast : 20, #充值特惠活动排行榜-上一期记录
ShareDefine.Def_BT_RechargeTeHui : 20, #充值特惠活动排行榜-当前期记录
- ShareDefine.Def_BT_MixCampaign_PlayerBattle : 2, #战力榜(合服活动)
- ShareDefine.Def_BT_MixCampaign_Recharge : 2, #累计充值榜(合服活动)
- ShareDefine.Def_BT_MixCampaign_WinFamilyMember:1, #获胜战盟成员(合服活动)
- ShareDefine.Def_BT_MixCampaign_FamilyKillBoss: 1, #战盟击杀boss(合服活动)
-
ShareDefine.Def_BT_CostTeHui : 10, #消费特惠排行榜
ShareDefine.Def_BT_CostTeHuiLast : 10, #消费特惠排行榜上一期
}
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/ClearOpenServerDay.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/ClearOpenServerDay.py
index 75db506..c950223 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/ClearOpenServerDay.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/ClearOpenServerDay.py
@@ -27,7 +27,6 @@
import PlayerEventCounter
import ShareDefine
import PlayerBillboard
-import GameWorldMixServerCampaign
import PlayerUniversalGameRec
import GameWorldActionTeHui
import GameWorldProcess
@@ -66,23 +65,11 @@
PlayerDBGSEvent.SetInitOpenServerTime(curTime)
openServerWeekday = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OpenServerWeekday)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_OpenServerWeekday, openServerWeekday)
- # 重置数据记录及领奖状态
- for campaignType in ShareDefine.Def_Campaign_Type_List:
- GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_MixServerCampaignSaveData % campaignType, 0)
- GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_MixServerCampaignGetAward % campaignType, 0)
- # 通知开服活动状态
- GameWorldMixServerCampaign.UpdateMixServerCampaignState(True)
# 清除开服活动相关排行榜
for oscBillboardType in ShareDefine.Def_Campaign_Billboard_Dict.values():
PlayerBillboard.ClearBillboardByIndex(oscBillboardType)
- # 清除合服活动相关排行榜
- for copyType in GameWorldMixServerCampaign.Def_MixAward_Billboard_Copy_Dict.values():
- PlayerBillboard.ClearBillboardByIndex(copyType)
- for billboardCampaignType in ShareDefine.Def_MixCampaign_Billboard_Dict.values():
- PlayerBillboard.ClearBillboardByIndex(billboardCampaignType)
-
# 清除竞技场数据
# GameWorld.GetHightLadderMgr().ClearAllPlayer()
# HighLadder.Sync_HightLadderCanFightPlayer(curPlayer, curPlayer.GetPlayerID())
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py
index 658a5c8..b301cf4 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetMixServer.py
@@ -21,9 +21,6 @@
import GameWorld
import PlayerDBGSEvent
import PlayerEventCounter
-import GameWorldActionTeHui
-import GameWorldMixServerCampaign
-import PlayerBillboard
import ShareDefine
import GMCommon
#---------------------------------------------------------------------
@@ -36,18 +33,13 @@
def OnExec(curPlayer, cmdList):
if len(cmdList) <= 0:
- GameWorld.DebugAnswer(curPlayer, 'SetMixServer 合服状态(0-非合服,1-合服), 合服时的开服天(选填默认15)')
+ GameWorld.DebugAnswer(curPlayer, 'SetMixServer 合服状态(0-非合服,1-合服) 合服时的开服天(选填默认15)')
return
isMix = cmdList[0]
curDay = cmdList[1] if len(cmdList) > 1 else 15
if isMix:
- #(清世界等级)
- PlayerDBGSEvent.SetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv, 0)
- #通知地图服务器当前世界等级
- GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_WorldAverageLv, 0)
-
#设置合服(默认设置开服天为15天)
PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer, 1)
PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay, 0)
@@ -58,7 +50,6 @@
PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay, 0)
PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay, curDay)
-
openDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay)
@@ -66,30 +57,15 @@
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openDay)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_IsMixServer, isMixServer)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_MixServerDay, mixServerDay)
-
- PlayerEventCounter.Sync_OpenServerDay(curPlayer)
-
- GameWorldMixServerCampaign.UpdateMixServerCampaignState(True)
-
- # 清除合服活动相关排行榜
- for copyType in GameWorldMixServerCampaign.Def_MixAward_Billboard_Copy_Dict.values():
- PlayerBillboard.ClearBillboardByIndex(copyType)
- for billboardCampaignType in ShareDefine.Def_MixCampaign_Billboard_Dict.values():
- PlayerBillboard.ClearBillboardByIndex(billboardCampaignType)
-
- # 重置数据记录及领奖状态
- for campaignType in ShareDefine.Def_Campaign_Type_List:
- GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_MixServerCampaignSaveData % campaignType, 0)
- GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_MixServerCampaignGetAward % campaignType, 0)
-
- # 清除特惠活动数据
- GameWorldActionTeHui.OnGMClearTeHui()
# 刷新一次活动
tick = GameWorld.GetGameWorld().GetTick()
GMCommon.ActionControlRefresh(tick)
+ PlayerEventCounter.Sync_OpenServerDay(curPlayer)
GameWorld.DebugAnswer(curPlayer, '设置合服状态成功!当前开服天数:%s, 是否合服:%s, 当前合服天数:%s'
- % (openDay, isMixServer, mixServerDay))
+ % (PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1,
+ PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer),
+ PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) + 1))
return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
index 7b8d625..8954560 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -1091,21 +1091,6 @@
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FBOpenRecord, fbOpenRecord)
return
-## 处理重开服务器后, 活动继续开启逻辑根据天数
-# @param tick 当前时间
-# @return None
-def Dispose_Action_GoOn_ByDay(tick):
- #已固定在每整分钟触发,故暂不需要时间间隔控制
- #if not GameWorld.SetWorldDictKey(ChConfig.TYPE_ActionOpenAndCloseByDayCountGoOn, tick):
- # #间隔未到
- # return
-
- if GameWorld.IsCrossServer():
- return
-
- Dispose_ActionGoOnByDayKey()
- return
-
## 当前时间与指定时间比较
# @param curTime 当前服务器时间
# @param timeInfo 指定时间 [[3,4(星期几)], 年,月,日,时,分]
@@ -1202,203 +1187,3 @@
return
#-------------------------------------------------------------------------------
-
-## 根据活动开启的活动事件OnDay
-# @param None:
-# @return: None
-def DoLogic_ActionByDayKeyOnDay():
- openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
- isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
- mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay)
- repeatDayInfo = ReadChConfig.GetEvalChConfig('ActionControlByDayKeyRepeat')
- startRepeatOpenDay, startRepeatMixDay, repeatList = repeatDayInfo
- # 不是循环阶段
- if openServerDay < startRepeatOpenDay or (isMixServer and mixServerDay < startRepeatMixDay):
- GameWorld.Log("没有正式进入周期循环,不处理!")
- return
-
- Def_RepeatOrderKey = PlayerDBGSEvent.Def_TeHuiRepeatOrderKey
- Def_RepeatNumKey = PlayerDBGSEvent.Def_TeHuiRepeatNumKey
-
- # 强制更新一次世界等级
- GameWorldAverageLv.OpenWorldAverageLv()
-
- repeatOrder = PlayerDBGSEvent.GetDBGSTrig_ByKey(Def_RepeatOrderKey)
- repeatOrder = "" if not repeatOrder else str(repeatOrder)
- preRepeatNum = PlayerDBGSEvent.GetDBGSTrig_ByKey(Def_RepeatNumKey)
- preRepeatNum = "" if not preRepeatNum else str(preRepeatNum)
- worldAverageLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
- GameWorld.Log("处理周期循环: openServerDay=%s,isMixServer=%s,mixServerDay=%s" % (openServerDay, isMixServer, mixServerDay))
- GameWorld.Log(" startRepeatOpenDay=%s,startRepeatMixDay=%s,repeatOrder=%s,preRepeatNum=%s,worldAverageLV=%s"
- % (startRepeatOpenDay, startRepeatMixDay, repeatOrder, preRepeatNum, worldAverageLV))
-
- # 开始循环
- if openServerDay == startRepeatOpenDay or (isMixServer and mixServerDay == startRepeatMixDay):
- repeatOrder = ""
- for i, repeatInfo in enumerate(repeatList, 1):
- if i > 9:
- break
- needWorldAverageLV = repeatInfo[0]
- if worldAverageLV < needWorldAverageLV:
- continue
- repeatOrder = "%s%s" % (repeatOrder, i)
- PlayerDBGSEvent.SetDBGSTrig_ByKey(Def_RepeatOrderKey, GameWorld.ToIntDef(repeatOrder))
- GameWorld.Log(" 开始循环, 生成循环编号顺序: %s" % repeatOrder)
-
- # 还没全部开始循环,则判断是否有动态新插入的循环
- elif len(repeatOrder) < len(repeatList):
- GameWorld.Log(" 还没全部开始循环,判断是否有动态新插入的循环..")
- for i, repeatInfo in enumerate(repeatList, 1):
- if i > 9:
- break
- if str(i) in repeatOrder: # 已经在循环里的不处理
- continue
- needWorldAverageLV = repeatInfo[0]
- if worldAverageLV < needWorldAverageLV:
- continue
-
- # 插入新循环
- if preRepeatNum in repeatOrder:
- insertIndex = repeatOrder.index(preRepeatNum)
- repeatOrder = repeatOrder[:insertIndex + 1] + str(i) + repeatOrder[insertIndex + 1:]
- else:
- repeatOrder = str(i)
- PlayerDBGSEvent.SetDBGSTrig_ByKey(Def_RepeatOrderKey, GameWorld.ToIntDef(repeatOrder))
- GameWorld.Log(" 编号%s, needWorldAverageLV=%s,插入循环,更新循环编号顺序: %s" % (i, needWorldAverageLV, repeatOrder))
- break
-
- if not repeatOrder:
- GameWorld.Log(" 没有可循环的活动!")
- return
-
- # 进入下一天循环编号
- if preRepeatNum and preRepeatNum in repeatOrder:
- nextRepeatIndex = repeatOrder.index(preRepeatNum) + 1
- nextRepeatIndex = 0 if nextRepeatIndex >= len(repeatOrder) else nextRepeatIndex
- else:
- nextRepeatIndex = 0
- nextRepeatNum = GameWorld.ToIntDef(repeatOrder[nextRepeatIndex])
- PlayerDBGSEvent.SetDBGSTrig_ByKey(Def_RepeatNumKey, nextRepeatNum)
- if nextRepeatNum <= 0 or nextRepeatNum > len(repeatList):
- GameWorld.Log(" 下一个循环编号错误!nextRepeatNum=%s" % nextRepeatNum)
- return
-
- GameWorld.Log(" 过天变更循环活动状态, nextRepeatNum=%s" % nextRepeatNum)
-
- gameWorld = GameWorld.GetGameWorld()
- nextRepeatDict = repeatList[nextRepeatNum - 1][1]
- for dictName, signID in nextRepeatDict.items():
- # 已经是这个值不处理
- if gameWorld.GetDictByKey(dictName) == signID:
- #GameWorld.DebugLog(" 已经是这个值不处理dictName=%s,signID=%s" % (dictName,signID))
- continue
-
- # 默认当前的0点开始到当天的23点59分
- curDay, beginDay, beginH, beginM, endDay, endH, endM = 0, 0, 0, 0, 0, 23, 59
- __ChangeDA_ActionSign(gameWorld, dictName, signID, curDay, beginDay, beginH, beginM, endDay, endH, endM)
-
- return
-
-
-
-## 处理重开服务器后, 活动继续开启逻辑根据天数key
-# @param None
-# @return None
-def Dispose_ActionGoOnByDayKey():
- if GameWorld.IsCrossServer():
- return
- GameWorld.DebugLog("处理特惠状态信息...")
- openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
- isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
- mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay)
- allActionGoOnInfo = ReadChConfig.GetEvalChConfig("ActionControlByDayKeyGoOn")
-
- if not isMixServer:
- __DoActionGoOnByDayKeyCheck(allActionGoOnInfo[0], openServerDay)
- else:
- __DoActionGoOnByDayKeyCheck(allActionGoOnInfo[1], mixServerDay)
-
- return
-
-
-## 按天开启可循环活动检查
-# @param controlList:
-# @return: None
-def __DoActionGoOnByDayKeyCheck(goOnList, curDay):
- curTime = GameWorld.GetServerTime()
- gameWorld = GameWorld.GetGameWorld()
- for goOnControl in goOnList:
- beginDay, beginH, beginM = goOnControl[0]
- endDay, endH, endM = goOnControl[1]
- if curDay < beginDay or curDay > endDay:
- #活动不在这一时间段
- #GameWorld.DebugLog("活动不在这一时间段curDay=%s < beginDay=%s or curDay > endDay=%s"
- # % (curDay,beginDay,endDay))
- continue
-
- dictName = goOnControl[2] # 字典名
- signID = goOnControl[3] # 标记
-
- # 已经是这个值不处理
- if gameWorld.GetDictByKey(dictName) == signID:
- #GameWorld.DebugLog("已经是这个值不处理dictName=%s,signID=%s" % (dictName,signID))
- continue
-
- beginTime = ['-', '-', '-', '-', beginH, beginM]
- endTime = ['-', '-', '-', '-', endH, endM]
- #还没开始
- if curDay == beginDay and CompareActTime(curTime, beginTime) == ChConfig.Def_Cmp_Lower:
- #GameWorld.DebugLog("还没开始...")
- continue
-
- #已经结束
- if curDay == endDay and CompareActTime(curTime, endTime) == ChConfig.Def_Cmp_Greater:
- #GameWorld.DebugLog("已经结束...")
- continue
-
- __ChangeDA_ActionSign(gameWorld, dictName, signID, curDay, beginDay, beginH, beginM, endDay, endH, endM)
-
- return
-
-def __ChangeDA_ActionSign(gameWorld, dictName, signID, curDay, beginDay, beginH, beginM, endDay, endH, endM):
- # 计算开始及结束日期
- beginTime, endTime = GetBeginEndTimeByDay(dictName, curDay, beginDay, beginH, beginM, endDay, endH, endM)
-
- actionID = int(time.time())
- GameWorld.Log('活动状态变更: dictName=%s,signID=%s,beginTime=%s,endTime=%s,actionID=%s'
- % (dictName, signID, beginTime, endTime, actionID))
-
- #潜规则:在ChConfig活动相关设置中,提取了字典名
- gameWorld.SetDict(dictName, signID)
- gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_DayAction_BeginTime % dictName, beginTime)
- gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_DayAction_EndTime % dictName, endTime)
- # 标记活动唯一id
- actionIDKey = ShareDefine.Def_Notify_WorldKey_DayAction_ID % dictName
- gameWorld.SetDict(actionIDKey, actionID)
-
- #通知Mapserver,设置字典
- GameWorld.SendMapServerMsgEx(actionIDKey, actionID)
- GameWorld.SendMapServerMsgEx(dictName, signID)
-
- #处理GameServer活动逻辑
- __DoLogic_GameServer_ActionState(dictName, signID)
- return
-
-## 获取开启结束时间
-# @param tick
-# @return None
-def GetBeginEndTimeByDay(dictName, curDay, beginDay, beginH, beginM, endDay, endH, endM):
- beginDiffDays = max(0, curDay - beginDay)
- beginDateTime = GameWorld.GetDatetimeBySubDays(beginDiffDays)
- beginDateTimeStr = str(beginDateTime).split(".")[0]
- beginDateTimeStr = "%s %02d:%02d:00" % (beginDateTimeStr[:10], beginH, beginM)
- beginTimeNum = GameWorld.ChangeTimeStrToNum(beginDateTimeStr, ChConfig.TYPE_Time_Format)
-
- endDiffDays = max(0, endDay - curDay)
- endDateTime = GameWorld.GetDatetimeByDiffDays(endDiffDays)
- endDateTimeStr = str(endDateTime).split(".")[0]
- endDateTimeStr = "%s %02d:%02d:59" % (endDateTimeStr[:10], endH, endM)
- endTimeNum = GameWorld.ChangeTimeStrToNum(endDateTimeStr, ChConfig.TYPE_Time_Format)
- return beginTimeNum, endTimeNum
-
-
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMixServerCampaign.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMixServerCampaign.py
deleted file mode 100644
index 04ea05e..0000000
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMixServerCampaign.py
+++ /dev/null
@@ -1,407 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GameWorldMixServerCampaign
-#
-# @todo:合服活动
-# @author hxp
-# @date 2014-12-03
-# @version 1.2
-#
-# 详细描述: 合服活动
-# @change: "2015-07-10 17:30" ljd 排行榜加玩家平台参数Name2
-# @change: "2016-11-21 10:30" xdh 增加邮件补发合服奖励,增加战盟击杀boss活动
-#
-#---------------------------------------------------------------------
-"""Version = 2016-11-21 10:30"""
-
-
-import GameWorld
-import PlayerDBGSEvent
-import PlayerBillboard
-import DataRecordPack
-import ReadChConfig
-import ShareDefine
-
-#---------------------------------------------------------------------
-
-#奖励排行榜copy数据来源
-Def_MixAward_Billboard_Copy_Dict = {
- #ShareDefine.Def_BT_MixCampaign_PlayerBattle:ShareDefine.Def_BT_FightPower, # 战斗力
-}
-
-#MixServerCampaign表字典值列表枚举
-(
-Def_MixCampaign_Index_InterceptTime, # 奖励数据截取时间
-Def_MixCampaign_Index_AwardTime, # 领奖时间
-Def_MixCampaign_Index_MaxPlace, # 前几名可领奖
-Def_MixCampaign_Index_Max,
-) = range(0, 3 + 1)
-
-
-## 每天触发
-# @param None
-# @return: None
-def MixServerOnDay():
-
- # 跨服服务器功能限制
- if GameWorld.IsCrossServer():
- return
-
- isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) # 是否合服
- if not isMixServer:
- return
-
- sendMSCMailTypeList = UpdateMixServerCampaignState()
-
- mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) # 合服天数
- GameWorld.DebugLog("合服过天 mixServerDay=%s,sendMSCMailTypeList=%s" % (mixServerDay, sendMSCMailTypeList))
-# for key, value in ShareDefine.Def_MixCampaign_Billboard_Dict.items():
-#
-# #活动已经结束,删除排行榜数据
-# if __IsClearMixCampaignBillboard(key):
-# billboardType = ShareDefine.Def_MixCampaign_Billboard_Dict.get(key)
-#
-# #清除排行榜数据
-# PlayerBillboard.ClearBillboardByIndex(billboardType)
-# continue
-#
-# if not __CanCopyMixCampaignBillboardData(key):
-# #不是截取活动排行榜时间
-# GameWorld.DebugLog(" 不是截取活动排行榜时间 cType=%s" % key)
-# continue
-#
-# #拷贝排行榜奖励用于奖励
-# copyBillboard = Def_MixAward_Billboard_Copy_Dict.get(value) # 实时榜
-# GameWorld.DebugLog(" 拷贝排行榜奖励用于奖励 cType=%s,value=%s,copyBillboard=%s"
-# % (key, value, copyBillboard))
-#
-# if not copyBillboard:
-# continue
-#
-# PlayerBillboard.CopyBillboard(value, copyBillboard)
-# DataRecordPack.DR_BillboardData(value, "MixCampaignBillboard", {"MixServerDay":mixServerDay})
-
-
- # 领奖结束后, 补发未领取的奖励邮件, 必须在数据拷贝完毕后处理
- __SendMSCAwardMailOnOver(sendMSCMailTypeList)
- return
-
-
-def __SendMSCAwardMailOnOver(overTypeList):
- if not overTypeList:
- return
-
- playerManager = GameWorld.GetPlayerManager()
- for i in range(0, playerManager.GetPlayerCount()):
- curPlayer = playerManager.GetPlayerByIndex(i)
- if curPlayer == None or not curPlayer.GetInitOK():
- continue
-
- resultName = '%s' % __GetMSCQueryMailAwardResult(curPlayer, [ShareDefine.Def_MSCGameServerQuery_MailAward, overTypeList])
- curPlayer.MapServer_QueryPlayerResult(0, 0, 'MixServerCampaignAward', resultName, len(resultName))
- return
-
-
-## 获取发送合服活动邮件奖励所需的信息
-def __GetMSCQueryMailAwardResult(curPlayer, msgList):
- #queryType = msgList[0]
- oscTypeList = msgList[1]
- queryResultList = []
- # 补发邮件的类型批量处理
- for oscType in oscTypeList:
- queryResultList.append(__GetGiveCampaignAwardInfo(curPlayer, oscType))
-
- msgList.append(queryResultList)
- GameWorld.DebugLog("请求发送合服活动邮件: oscTypeList=%s,queryResultList=%s,msgList=%s" % (oscTypeList, queryResultList, msgList))
- return msgList
-
-## 获取领奖所需的信息
-def __GetGiveCampaignAwardInfo(curPlayer, campaignType):
-
- if campaignType in ShareDefine.DoOnMapServerMixCampaignTypeList:
- GameWorld.DebugLog(" 地图服务器单独处理的类型!")
- return []
-
- curPlayerID = curPlayer.GetID()
-
- # 奖励榜相关
- awardBillboardType = ShareDefine.Def_MixCampaign_Billboard_Dict.get(campaignType)
- if not awardBillboardType:
- return []
-
- billBoard = GameWorld.GetBillboard().FindBillboard(awardBillboardType)
- if billBoard:
- memberLV = 0
- # #战盟击杀boss排行 取玩家所在战盟的排名
- if campaignType == ShareDefine.Def_MixCampaign_Type_FamilyKillBoss:
- familyID = curPlayer.GetFamilyID()
- if not familyID:
- GameWorld.DebugLog("__GetGiveCampaignAwardInfo ->玩家没有家族" , curPlayerID)
- return []
- billIndex = billBoard.IndexOfByID(familyID)
- if billIndex < 0:
- GameWorld.DebugLog("__GetGiveCampaignAwardInfo ->玩家所在家族没名次" , curPlayerID)
- return []
- order = billIndex + 1
- else:
- order = billBoard.IndexOfByID(curPlayerID) + 1 # 玩家在排行榜中的名次
-
- GameWorld.DebugLog(" 奖励榜: awardBillboardType=%s,order=%s" % (awardBillboardType, order))
- return [order, memberLV]
-
-
- return []
-
-
-
-## 更新合服活动状态
-# @param isSoonNotify:是否马上通知
-# @return: None
-def UpdateMixServerCampaignState(isSoonNotify=False):
- dataStateChangeOverList = []
- sendMSCMailTypeList = []
- isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) # 是否合服
- mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) # 合服天数
- for campaignType in ShareDefine.Def_MixCampaign_Type_List:
- updSaveDataState = ShareDefine.Def_CampaignDataState_None
- campaignInfoList = __GetMixCampaignInfoList(campaignType)
- if len(campaignInfoList) != Def_MixCampaign_Index_Max:
- continue
- interceptTimeList = campaignInfoList[Def_MixCampaign_Index_InterceptTime]
- if isMixServer and interceptTimeList != []:
- if mixServerDay in interceptTimeList:
- updSaveDataState = ShareDefine.Def_CampaignDataState_Save
- elif mixServerDay > max(interceptTimeList): # 超过最大的有效数据天数则为活动结束
- updSaveDataState = ShareDefine.Def_CampaignDataState_Over
-
- # 同步MapServer合服活动保存数据阶段
- saveDataKey = ShareDefine.Def_Notify_WorldKey_MixServerCampaignSaveData % campaignType
- curSaveState = GameWorld.GetGameWorld().GetDictByKey(saveDataKey)
- if __IsNeedNoticeMapServer(saveDataKey, updSaveDataState, isSoonNotify):
- GameWorld.SendMapServerMsgEx(saveDataKey, updSaveDataState)
- GameWorld.GetGameWorld().SetDict(saveDataKey, updSaveDataState)
- # 从有效状态变为结束状态
- if curSaveState == ShareDefine.Def_CampaignDataState_Save and updSaveDataState == ShareDefine.Def_CampaignDataState_Over:
- dataStateChangeOverList.append(campaignType)
-
- awardTimeList = campaignInfoList[Def_MixCampaign_Index_AwardTime]
- updGetAwardState = ShareDefine.Def_CampaignAwardState_None
- if isMixServer and awardTimeList != []:
- if mixServerDay in awardTimeList:
- updGetAwardState = ShareDefine.Def_CampaignAwardState_Allow
- elif mixServerDay > max(awardTimeList):
- updGetAwardState = ShareDefine.Def_CampaignAwardState_Over
- # 同步MapServer合服活动领奖阶段
- getAwardKey = ShareDefine.Def_Notify_WorldKey_MixServerCampaignGetAward % campaignType
- curAwardState = GameWorld.GetGameWorld().GetDictByKey(getAwardKey)
-
- if __IsNeedNoticeMapServer(getAwardKey, updGetAwardState, isSoonNotify):
- GameWorld.SendMapServerMsgEx(getAwardKey, updGetAwardState)
- GameWorld.GetGameWorld().SetDict(getAwardKey, updGetAwardState)
-
- # 从领奖有效状态变为结束状态 or 未配置领奖列表且有效数据变为结束状态
- if (curAwardState == ShareDefine.Def_CampaignAwardState_Allow and updGetAwardState == ShareDefine.Def_CampaignAwardState_Over) or \
- (not awardTimeList and campaignType in dataStateChangeOverList):
- sendMSCMailTypeList.append(campaignType)
-
- return sendMSCMailTypeList
-
-## 是否需要通知MapServer活动信息
-# @param key:通知类型key
-# @param noticeType:通知类型
-# @param isSoonNotify:是否马上通知
-# @return: None
-def __IsNeedNoticeMapServer(key, noticeType, isSoonNotify):
- curType = GameWorld.GetGameWorld().GetDictByKey(key)
-
- if noticeType != curType or isSoonNotify:
- return True
-
- return False
-
-
-## 获取活动信息
-# @param campaignType: 活动类型
-# @return: 活动信息
-def __GetMixCampaignInfoList(campaignType):
- openServerCampaignDict = ReadChConfig.GetEvalChConfig("MixServerCampaign")
- campaignInfoList = openServerCampaignDict.get(campaignType, [])
- return campaignInfoList
-
-
-## 获取活动是否已经结束
-# @param campaignType: 活动类型
-# @return: 活动是否已经结束
-def __IsClearMixCampaignBillboard(campaignType):
- if campaignType not in ShareDefine.Def_MixCampaign_Type_List:
- #活动类型错误
- return True
-
- campaignInfoList = __GetMixCampaignInfoList(campaignType)
- if len(campaignInfoList) != Def_MixCampaign_Index_Max:
- #活动信息表配置错误
- return True
-
- awardTimeList = campaignInfoList[Def_MixCampaign_Index_AwardTime]
- if awardTimeList == []:
- return True
-
- mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) # 合服天数
- if mixServerDay == max(awardTimeList) + 1:
- #已经过了领奖时间, 活动结束
- return True
-
- return False
-
-
-## 是否copy排行榜数据用于奖励
-# @param campaignType: 活动类型
-# @return: 是否copy排行榜数据用于奖励
-def __CanCopyMixCampaignBillboardData(campaignType):
- campaignInfoList = __GetMixCampaignInfoList(campaignType)
- if len(campaignInfoList) != Def_MixCampaign_Index_Max:
- #活动信息表配置错误
- return False
-
- #奖励数据截取时间
- interceptTimeList = campaignInfoList[Def_MixCampaign_Index_InterceptTime]
- if interceptTimeList == []:
- return False
-
- mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) # 合服天数
- if mixServerDay > max(interceptTimeList):
- #已经截取排行榜数据
- return False
-
- if mixServerDay not in interceptTimeList:
- #不是截取排行榜数据时间
- return False
-
- return True
-
-
-## 可否领取合服务活动奖励
-# @param curPlayer: 玩家实例
-# @param msgList: 奖励领取信息[请求类型, 活动类型, 领取索引, 家族ID]
-# @return: [查询类型, 活动类型, 查询奖励索引, 名次, 家族等级, 家族职位]
-def CanGiveMixCampaignAward(curPlayer, msgList):
- queryType = msgList[0] # 请求类型(领奖, 邮件)
-
- if queryType == ShareDefine.Def_MSCGameServerQuery_MailAward:
- return __GetMSCQueryMailAwardResult(curPlayer, msgList)
-
- campaignType = msgList[1] # 活动类型
- awardIndex = msgList[2] # 想要领取的奖励索引
- familyID = msgList[3] # 家族ID
-
- mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) # 合服天数
- GameWorld.DebugLog("CanGiveMixCampaignAward: mixServerDay=%s,msgList=%s"
- % (mixServerDay, str(msgList)))
-
- if campaignType not in ShareDefine.Def_MixCampaign_Type_List:
- #领取的奖励类型错误
- GameWorld.ErrLog(" 领取的合服奖励类型错误 campaignType=%s" % (campaignType))
- return [queryType, campaignType, awardIndex, 0, 0, 0]
-
- campaignInfoList = __GetMixCampaignInfoList(campaignType)
- if len(campaignInfoList) != Def_MixCampaign_Index_Max:
- #活动信息表配置错误
- GameWorld.ErrLog(" MixServerCampaign: 合服活动信息表配置错误")
- return [queryType, campaignType, awardIndex, 0, 0, 0]
-
- awardTimeList = campaignInfoList[Def_MixCampaign_Index_AwardTime]
- if awardTimeList == []:
- GameWorld.ErrLog(" MixServerCampaign: awardTimeList is []")
- return [queryType, campaignType, awardIndex, 0, 0, 0]
-
- interceptTimeList = campaignInfoList[Def_MixCampaign_Index_InterceptTime]
- if interceptTimeList == []:
- GameWorld.ErrLog(" MixServerCampaign: interceptTimeList is []")
- return [queryType, mixServerDay, campaignType, awardIndex, 0, 0, 0]
-
- if mixServerDay not in awardTimeList:
- GameWorld.DebugLog(" MixServerCampaign: 非领奖时间 mixServerDay=%s,awardTimeList=%s"
- % (mixServerDay, str(awardTimeList)))
- return [queryType, campaignType, awardIndex, 0, 0, 0]
-
- curPlayerID = curPlayer.GetID()
-
- awardBillboardType = ShareDefine.Def_MixCampaign_Billboard_Dict.get(campaignType)
- if not awardBillboardType:
- GameWorld.DebugLog(" 找不到Def_MixCampaign_Billboard_Dict对应排行榜 %s" % campaignType)
- return [queryType, campaignType, awardIndex, 0, 0, 0]
-
- billBoard = GameWorld.GetBillboard().FindBillboard(awardBillboardType)
- if not billBoard:
- GameWorld.DebugLog(" 找不到排行榜数据")
- #找不到排行榜数据
- return [queryType, campaignType, awardIndex, 0, 0, 0]
-
- maxPlace = campaignInfoList[Def_MixCampaign_Index_MaxPlace] # 可领奖名次
- if campaignType == ShareDefine.Def_MixCampaign_Type_FamilyKillBoss:
- #战盟击杀boss排行 取玩家所在战盟的排名
- billBoardIndex = billBoard.IndexOfByID(familyID)
- else:
- billBoardIndex = billBoard.IndexOfByID(curPlayerID)
- order = billBoardIndex + 1 # 玩家在排行榜中的名次
- GameWorld.DebugLog(" billBoardIndex=%s,order=%s,maxPlace=%s"
- % (billBoardIndex, order, maxPlace))
- if billBoardIndex < 0 or order > maxPlace:
- GameWorld.DebugLog(" 不在可领名次")
- return [queryType, campaignType, awardIndex, 0, 0, 0]
-
- return [queryType, campaignType, awardIndex, order, 0, 0]
-
-##合服活动战盟击杀boss排行更新
-# @param cmdList 记录内容
-# @return 返回值无意义
-def UpdMixCampaignFamiliyBossCnt(curPlayer, cmdList):
- isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) # 是否合服
- # 非合服不处理
- if not isMixServer:
- GameWorld.DebugLog("非合服 不更新合服活动战盟击杀boss排行")
- return
-
- campaignType = ShareDefine.Def_MixCampaign_Type_FamilyKillBoss
- if not __CanCopyMixCampaignBillboardData(campaignType):
- GameWorld.DebugLog("不是更新时机 不更新合服活动战盟击杀boss排行")
- return
-
- addCnt = cmdList[0]
- curPlayerID = curPlayer.GetPlayerID()
- curFamily = curPlayer.GetFamily()
-
- if curFamily == None:
- GameWorld.DebugLog("UpdMixCampaignFamiliyBossCnt ->玩家没有家族" , curPlayerID)
- return
- curMember = curFamily.FindMember(curPlayerID)
- if curMember == None:
- GameWorld.DebugLog("UpdMixCampaignFamiliyBossCnt ->无此成员" , curPlayerID)
- return
- billboardIndex = ShareDefine.Def_BT_MixCampaign_FamilyKillBoss
- billboard = GameWorld.GetBillboard().FindBillboard(billboardIndex)
- if not billboard:
- GameWorld.ErrLog(" 找不到战盟击杀boss排行榜!!!")
- return
- familyID = curFamily.GetID()
- familyName = curFamily.GetName()
- familyLV = curFamily.GetLV()
-
- killCnt = 0
- billboardCnt = billboard.GetCount()
- for index in range(0, billboardCnt):
- objBillboard = billboard.At(index)
- objID = objBillboard.GetID()
- if familyID != objID:
- continue
- killCnt = objBillboard.GetCmpValue()
- break
- newCnt = killCnt + addCnt
-
- PlayerBillboard.UpdatePlayerBillboard(familyID, familyName, 0, ShareDefine.Def_BT_MixCampaign_FamilyKillBoss, 0, 0, 0, newCnt, cmpValue2=familyLV)
- return
-
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
index caec13b..1825715 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -83,7 +83,6 @@
import GameWorldAverageLv
import PlayerDBOper
import PlayerGeTui
-#import GameWorldMixServerCampaign
#import PlayerManorWar
import GameWorldBoss
#import GameWorldActionTeHui
@@ -1215,7 +1214,6 @@
GameWorld.GetFamilyManager().SetFamilyUpperLimitCount(ChConfig.Def_Family_MaxCnt)
#排序元宝交易平台
GameWorld.GetGameWorld().GetDBGoldOrderFormMgr().Sort()
- PlayerBillboard.ClearBillboardOnServerInit()
#排序排行榜
PlayerBillboard.SortServerBillboard()
#排序仙盟
@@ -1365,8 +1363,6 @@
#触发节假日活动
#GameWorldActionHoliday.ActionHoliday_OpenAndClose(tick, True)
- #合服活动
- #GameWorldMixServerCampaign.UpdateMixServerCampaignState(True)
#通知世界等级
worldLv = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
@@ -1389,9 +1385,6 @@
# 上次合服时的开服天数
lastMixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerDay, lastMixServerDay)
- # 上次清除排行榜的标记
- lastSign = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_ClearBillboardSign)
- GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ClearBillboardSign, lastSign)
# 通知战盟相关活动开启状态
fadState = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_FamilyActivityDayState)
@@ -1447,16 +1440,15 @@
GameWorld.DebugLog("合服首次启动加载已经处理过!")
return
- GameWorld.DebugLog("合服首次启动加载处理...")
+ GameWorld.Log("合服首次启动加载处理...")
- # 清除指定通用数据
+ # 清除指定通用数据,一般是合服工具删,这里可以再做个补充
universalRecMgr = GameWorld.GetUniversalRecMgr()
- delRecTypeList = [ShareDefine.Def_UniversalGameRecType_ManorWarInfo,
- ]
- GameWorld.DebugLog(" 清除指定通用数据 delRecTypeList=%s" % str(delRecTypeList))
+ delRecTypeList = []
+ GameWorld.Log("清除指定通用数据 delRecTypeList=%s" % str(delRecTypeList))
for delRecType in delRecTypeList:
universalRecMgr.Delete(delRecType)
-
+
# 删除过期的通用数据
__DelOutofdayRecData(universalRecMgr)
@@ -1469,15 +1461,15 @@
# 设置本次合服时的开服天数
serverDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay, serverDay)
- GameWorld.DebugLog(" 合服首次启动加载成功...")
+ GameWorld.Log(" 合服首次启动加载成功!")
return
def __DelOutofdayRecData(universalRecMgr):
# 删除过期的通用数据
curTime = int(time.time())
- GameWorld.Log("执行删除过期的通用数据, curTime=%s" % curTime)
delOutofdayRecDataDict = {
}
+ GameWorld.Log("执行删除过期的通用数据, curTime=%s,delOutofdayRecDataDict=%s" % (curTime, delOutofdayRecDataDict))
for otDayRecType, otTime in delOutofdayRecDataDict.items():
otRecDataList = universalRecMgr.GetTypeList(otDayRecType)
if not otRecDataList:
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
index 9ede044..731ff4f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
@@ -77,50 +77,6 @@
return
-def ClearBillboardOnServerInit():
- ##开启服务器重置排行榜处理
- BillBoardClearSetting = ReadChConfig.GetEvalChConfig("BillBoardClearSetting")
-
- clearSign, clearIndexList = BillBoardClearSetting
-
- lastSign = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_ClearBillboardSign)
-
- if clearSign == lastSign:
- GameWorld.Log("服务器开启清除排行榜检查:标记相同不用清除clearSign=%s" % (clearSign))
- return
-
- for billboardIndex in clearIndexList:
-
- # 合服累充活动判断
- if billboardIndex == ShareDefine.Def_BT_MixCampaign_Recharge:
- isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer) # 是否合服
- mixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_MixServerDay) # 合服天数
-
- mixType = ShareDefine.Def_MixCampaign_Type_RechargeRank
- mixServerCampaignDict = ReadChConfig.GetEvalChConfig("MixServerCampaign")
- campaignInfoList = mixServerCampaignDict.get(mixType, [])
- dayList = campaignInfoList[0]
- if not isMixServer or mixServerDay not in dayList:
- GameWorld.Log('非合服充值活动记录数据期间,不清除累充排行榜(%s)! isMixServer=%s,mixServerDay=%s,dayList=%s'
- % (billboardIndex, isMixServer, mixServerDay, str(dayList)))
- continue
-
- # 特惠充值判断
- elif billboardIndex == ShareDefine.Def_BT_RechargeTeHui:
- actionNumKey = ShareDefine.Def_Notify_WorldKey_DayAction_RechargeRank
- actionNum = PlayerDBGSEvent.GetDBGSTrig_ByKey(actionNumKey)
- if not actionNum:
- GameWorld.Log('当前没有充值特惠排行活动,不清除排行榜(%s)!' % (billboardIndex))
- continue
-
- ClearBillboardByIndex(billboardIndex)
-
- PlayerDBGSEvent.SetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_ClearBillboardSign, clearSign)
-
- GameWorld.Log("服务器开启清除排行榜: lastSign=%s,clearSign=%s,clearIndexList=%s"
- % (lastSign, clearSign, str(clearIndexList)))
- return
-
def SortServerBillboard():
##排序所有排行榜
billboardMgr = GameWorld.GetBillboard()
@@ -670,13 +626,6 @@
playerBillBoardData = playerBillBoard.AddToBillboard(billboardDataID)
return [playerBillBoard, playerBillBoardData]
-
-def MapServer_UpdMSRechargeRankBillboard(cmdList):
- ##合服活动充值点数排行更新
- playerID, playerName, playerOpInfo, playerJob, fightPower, familyName, totalChangeCoinPoint = cmdList
- UpdatePlayerBillboard(playerID, playerName, familyName, ShareDefine.Def_BT_MixCampaign_Recharge,
- playerJob, fightPower, totalChangeCoinPoint, totalChangeCoinPoint)
- return
def MapServer_UpdateTotalRechargeBillboard(cmdList):
##总充值点数排行更新
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py
index 954a651..39ea12e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerEventCounter.py
@@ -57,8 +57,6 @@
#家族更新
PlayerFamily.FamilyOnDay(tick)
- #合服活动
- #GameWorldMixServerCampaign.MixServerOnDay()
playerManager = GameWorld.GetPlayerManager()
for i in xrange(playerManager.GetPlayerCount()):
curPlayer = playerManager.GetPlayerByIndex(i)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index a84a0b0..2e2a332 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -379,7 +379,6 @@
GameWorld.DebugLog(' 玩家战盟名变更处理, newFamilyName=%s' % familyName, playerID)
#不处理排行榜
needChangeFamilyBillboardList = [
- #ShareDefine.Def_BT_MixCampaign_Recharge, # 累计充值(合服活动)
#ShareDefine.Def_BT_RechargeTeHui, # 充值特惠活动排行榜-当前期记录
]
billboardMgr = GameWorld.GetBillboard()
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
index 9cece86..bf03415 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
@@ -42,7 +42,6 @@
import PlayerUniversalGameRec
import PlayerFamily
import GameWorldOpenServerCampaign
-import GameWorldMixServerCampaign
import ShareDefine
import GameDataRecord
import GameWorldShopItem
@@ -543,17 +542,6 @@
PlayerBillboard.MapServer_UpdateTotalRechargeBillboard(eval(resultName))
return
- if callName == 'UpdMSRechargeRankBillboard': #地图服务器更新玩家合服活动充值总数排行榜
- PlayerBillboard.MapServer_UpdMSRechargeRankBillboard(eval(resultName))
- return
-
- if callName == 'UpdMSFamilyKillBossBillboard': #地图服务器更新玩家合服活动战盟击杀boss总数排行榜
- curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
- if not curPlayer:
- return
- GameWorldMixServerCampaign.UpdMixCampaignFamiliyBossCnt(curPlayer, eval(resultName))
- return
-
if callName == 'ExitExam': #地图服务器玩家退出答题
PlayerExam.MapServer_ExitAction(srcPlayerID)
return
@@ -899,11 +887,6 @@
if callName == 'SendInviteCode':
#邀请码验证回复
resultName = PlayerRecall.PlayerRecall_InviteCode(srcPlayerID, pack.GetQueryID())
-
- if callName == 'MixServerCampaignAward':
- #可否领取合服活动奖励
- curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
- resultName = '%s' % GameWorldMixServerCampaign.CanGiveMixCampaignAward(curPlayer, eval(resultName))
if callName == 'OpenServerCampaignAward':
#可否领取开服活动奖励
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 22bbc91..ef34332 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -175,9 +175,6 @@
Def_Notify_WorldKey_CrossPKSeasonID = "CrossPKSeasonID" # 本服跨服PK当前赛季
Def_Notify_WorldKey_CrossPKSeasonState = "CrossPKSeasonState" # 本服跨服PK赛季状态 0-关闭,1-开启中
-Def_Notify_WorldKey_MixServerCampaignSaveData = "MixServerCampaignSaveData_%s" # 合服活动记录数据时机0-否 1-是
-Def_Notify_WorldKey_MixServerCampaignGetAward = "MixServerCampaignGetAward_%s" # 合服活动可领奖时机0-否 1-是
-
Def_Notify_WorldKey_GameWorldBossRebornCross = 'BossRebornCross_%s_%s' # 跨服世界boss重生, 参数为(zoneID, bossID)
Def_Notify_WorldKey_GameWorldBossReborn = 'BossReborn_%s' # 世界boss重生, 参数为(bossID)
Def_Notify_WorldKey_BossKilledCnt = 'BossKilledCnt_%s' # boss击杀次数, 参数为NPCID
@@ -214,8 +211,6 @@
Def_Notify_WorldKey_LoginAwardStartDate = 'LoginAwardStartDate_%s' # 登录领取奖励开始时间,参数为活动类型
Def_Notify_WorldKey_LoginAwardEndDate = 'LoginAwardEndDate_%s' # 登录领取奖励结束时间,参数为活动类型
-
-Def_Notify_WorldKey_ClearBillboardSign = 'ClearBillboardSign' # 清除排行榜标记
Def_Notify_WorldKey_RedPacketOutput = 'RedPacketOutput' # 红包产出信息
@@ -628,16 +623,11 @@
Def_BT_RechargeTeHuiLast, #充值特惠活动排行榜-上一期记录
Def_BT_RechargeTeHui, #充值特惠活动排行榜-当前期记录
- Def_BT_MixCampaign_PlayerBattle, #总战斗力(合服活动)
- Def_BT_MixCampaign_Recharge, #累计充值(合服活动)
- Def_BT_MixCampaign_WinFamilyMember, #获胜战盟成员,按职位排(合服活动)
- Def_BT_MixCampaign_FamilyKillBoss, #战盟击杀boss(合服活动)
-
Def_BT_CostTeHui, #消费特惠排行榜
Def_BT_CostTeHuiLast, #消费特惠排行榜上一期
Def_BT_Max, #排行榜最大类型
-) = range(0, 34 + 2)
+) = range(0, 30 + 2)
#职业对应战力排行榜类型
JobFightPowerBillboardDict = {
@@ -1158,9 +1148,6 @@
Def_Enter_Truck, #进入骠车
) = range(1, 3)
-Def_OSC_ValidDay = 6 # 开服活动有效活动天
-Def_MSC_ValidDay = 5 # 合服活动有效活动天
-
# 开服活动类型标识, 不可超过32
Def_Campaign_Type_List = (
Def_Campaign_Type_PlusLV, # 强化等级排行 1
@@ -1201,40 +1188,6 @@
Def_CampaignAwardState_None, # 无
Def_CampaignAwardState_Allow, # 允许领奖
Def_CampaignAwardState_Over, # 领奖结束
-) = range(3)
-
-#合服活动类型标识
-Def_MixCampaign_Type_List = (
- Def_MixCampaign_Type_PlayerBattle, # 总战斗力0
- Def_MixCampaign_Type_RechargeFirst, # 首充奖励1
- Def_MixCampaign_Type_RechargeRank, # 累计充值排行奖励2
- Def_MixCampaign_Type_RechargeCnt, # 累计充值保底奖励3
- Def_MixCampaign_Type_FamilyWar, # 冰封王座家族战获胜家族成员奖励4
- Def_MixCampaign_Type_FamilyWarEnter, # 冰封王座参与奖5
- Def_MixCampaign_Type_FamilyKillBoss, # 战盟击杀boss排行
- Def_MixCampaign_Type_PlayerKillBoss, # 个人击杀boss
-) = range(8)
-
-#合服活动类型对应的奖励排行榜
-Def_MixCampaign_Billboard_Dict = {
- Def_MixCampaign_Type_PlayerBattle:Def_BT_MixCampaign_PlayerBattle, # 总战斗力
- Def_MixCampaign_Type_RechargeRank:Def_BT_MixCampaign_Recharge, # 累计充值排行
- Def_MixCampaign_Type_FamilyWar:Def_BT_MixCampaign_WinFamilyMember, # 获胜战盟成员
- Def_MixCampaign_Type_FamilyKillBoss:Def_BT_MixCampaign_FamilyKillBoss, # 战盟击杀boss排行
- }
-
-# 直接在MapServer中处理的合服活动类型
-DoOnMapServerMixCampaignTypeList = [
- Def_MixCampaign_Type_RechargeFirst,
- Def_MixCampaign_Type_RechargeCnt,
- Def_MixCampaign_Type_FamilyWarEnter,
- Def_MixCampaign_Type_PlayerKillBoss,
- ]
-# 合服活动请求GameServer操作类型定义
-(
-Def_MSCGameServerQuery_QueryAward, # 查询
-Def_MSCGameServerQuery_GetAward, # 领奖
-Def_MSCGameServerQuery_MailAward, # 邮件发送奖励
) = range(3)
#队伍最大人数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index e8a63f4..2346b16 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -365,9 +365,9 @@
PacketSubCMD_5=0x26
PacketCallFunc_5=QueryFamilyArrestAwardReceiveState
-PacketCMD_6 = 0xAF
-PacketSubCMD_6 = 0x02
-PacketCallFunc_6 = GiveMixServerCampaignAward
+PacketCMD_6=
+PacketSubCMD_6=
+PacketCallFunc_6=
PacketCMD_7=0xA2
PacketSubCMD_7=0x13
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 07af3b5..b714457 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3114,7 +3114,6 @@
Def_PlayerKey_AtkInterval = "NormalAtkInterval_%s" # 公共技能CD类型
Def_PlayerKey_AtkTick = "NormalAtkTick_%s" # 公共技能CD类型
Def_PlayerKey_QueryOpenServerAwardState = "QueryOpenServerAwardState" # 查询开服奖励状态
-Def_PlayerKey_QueryMixServerAwardState = "QueryMixServerAwardState" # 查询合服奖励状态
Def_PlayerKey_QueryFamilyStoreTick = "QueryFamilyStoreTick" # 战盟仓库操作tick
Def_PlayerKey_QueryMarkIdCardIndex = 'QueryMarkIdCardIndex' # 指定账号生成卡类型
@@ -3500,8 +3499,6 @@
Def_PDict_SuperGiftHasOpen = "SuperGiftHasOpen" # 超值礼包是否开过
Def_PDict_DailyGoldChargePrizeRecord = "DailyGoldChargePrizeRecord" # 天天首充领奖记录,0-不可领;1-可领;2-已领
Def_PDict_DailyGoldChargeCnt = "DailyGoldChargeCnt" # 当日已充值数
-Def_PDict_SingleGoldGiftIndex = "SingleGoldGiftIndex" # 单日充值多选一礼包领取状态, 0-未领取,>0已领取索引
-Def_PDict_UnlimitedGoldGiftCnt = "UnlimitedGoldGiftCnt" # 当日无限领取礼包已领取次数
Def_PDict_IsReBorn = "Def_PDict_IsReBorn" # 是否回城复活
Def_PDict_FamilyWarDailyReward = "FamilyWarDailyReward" # 王者仙盟每日俸禄领取状态
Def_PDict_Family_Contribution = "FamilyContribution" #战盟贡献度
@@ -3530,7 +3527,6 @@
Def_PDict_HighLadder_IsRelCD = "HighLadderIsRelCD" #天梯是否进入真正挑战冷却
Def_PDict_HighLadder_WinningStreak = "HighLadderWinningStreak" #天梯连胜场次
Def_PDict_HighLadder_HistoryMaxOrder = "HighLadderMaxOrder" #天梯历史最高排名
-Def_PDict_MixLoginDayState = "PMixLoginDayState" # 合服天登陆状态<按登陆天从低位起0-未领1-可领2-已领>
Def_PDict_FestivalLoginState = "FestivalLoginState_%s" # 节日登陆奖励状态_%s表示节日类型<按登陆天从低位起0-未领1-可领2-已领>
Def_PDict_Currency = "PlayerCurrency_%s" # 自定义货币类型, 参数[自定义货币类型]
Def_PDict_TJGSet = "TJGSet" # 脱机挂系统设定
@@ -3541,7 +3537,6 @@
Def_PDict_LoginClientType = "LoginClientType" # 客户端登录类型
-Def_PDict_ReUpdBillboardSign = "ReUpdBillboardSign" # 重新同步排行表标记
Def_PDict_MSFirstLogin_UpdBillboard = "MSFirstLogin_UpdBillboard" # 合服首登同步排行榜信息
Def_PDict_MixLoginDay = "MixLoginDay" # 合服首登处理标记
@@ -3801,10 +3796,6 @@
Def_PDict_OSC_TagAwardRecord = "OSCTagAwardRecord_%s" # 开服活动目标奖励记录, 参数(活动类型), 按奖励位存储是否领取
Def_PDict_OSC_RecordData = "OSCRecordData_%s" # 开服活动记录数值, 参数(活动类型)
Def_PDict_OSC_EndMailState = "EndMailState" # 开服活动结束发放邮件处理状态, 记录该状态的目的是防止开服活动版本变更导致旧号重复补发奖励;
-
-Def_PDict_MixServerCampaign_AwardRecord = "MSCAwardRecord_%s" # 合服活动奖励记录
-Def_PDict_MixServerCampaign_RecordData = "MSCRecordData_%s" # 合服活动记录数值
-Def_PDict_MixServerCampaign_MailState = "MSCMailState" # 合服活动结束补发未领奖记录邮件状态, 按类型位二进制存储状态
# 坐骑 Def_PDictType_Horse
Def_PDict_Horser_LV = "Horser_LV_%d" # 坐骑等级 0代表未激活 1代表1级
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index 56e109b..2a06a97 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -551,18 +551,6 @@
SendEventPack("LVAward", dataDict, curPlayer)
return
-##合服登陆奖励
-def DR_MixLoginDayAward(curPlayer, getState):
- dataDict = {'PlayerID':curPlayer.GetPlayerID(),
- 'PlayerName':curPlayer.GetPlayerName(),
- 'AccID':curPlayer.GetAccID(),
- "rewardState":getState
- }
-
- SendEventPack("MixLoginDayAward", dataDict, curPlayer)
- return
-
-
## 使用新手媒体卡
# @param curPlayer: 玩家实例
# @param cardStr: 卡号
@@ -606,18 +594,6 @@
dataDict["PlayerName"] = curPlayer.GetPlayerName()
SendEventPack("OpenServerAward", dataDict, curPlayer)
- return
-
-## 合服活动奖励领取情况
-# @param curPlayer: 玩家实例
-# @param dataDict: 记录信息字典
-# @return: None
-def DR_MixServerAward(curPlayer, dataDict):
- dataDict["PlayerID"] = curPlayer.GetPlayerID()
- dataDict["AccID"] = curPlayer.GetAccID()
- dataDict["PlayerName"] = curPlayer.GetPlayerName()
-
- SendEventPack("MixServerAward", dataDict, curPlayer)
return
## GM执行命令操作
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
index 040c62c..4cb1feb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearMixServerAward.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearMixServerAward.py
@@ -18,12 +18,8 @@
#"""Version = 2014-12-09 17:00"""
#------------------------------------------------------------------------------
-import PlayerMixLoginDayAward
-import ClearFightPowerHistor
import PlayerControl
-import ShareDefine
import ChConfig
-import GameWorld
#---------------------------------------------------------------------
## 执行逻辑
@@ -32,43 +28,7 @@
# @return None
# @remarks 函数详细说明.
def OnExec(curPlayer, cmdList):
- # 清除玩家历史最高战力,防止不上榜
- ClearFightPowerHistor.OnExec(curPlayer, [])
# 重置首登同步排行榜记录
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MSFirstLogin_UpdBillboard, 0)
-
- # 重置奖励领取状态
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixLoginDayState, 0)
-
- # 邮件奖励记录
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_MailState, 0, ChConfig.Def_PDictType_OpenServerCampaign)
-
- # 重置后通知客户端
- PlayerMixLoginDayAward.NotifyPlayerAwardState(curPlayer)
-
-
- if len(cmdList) == 0:
- for i in ShareDefine.Def_MixCampaign_Type_List:
- __DoMSCReset(curPlayer, i)
- return
-
- campaignType = cmdList[0]
- if campaignType not in ShareDefine.Def_MixCampaign_Type_List:
- return
-
- __DoMSCReset(curPlayer, campaignType)
- return
-
-## 合服活动领取属性重置
-# @param curPlayer 当前玩家
-# @param campaignType 重置类型
-# @return None
-def __DoMSCReset(curPlayer, campaignType):
- # 更新领奖记录
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_AwardRecord \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_RecordData \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
- GameWorld.DebugAnswer(curPlayer, 'MSCReset %s OK!'%campaignType)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py
index 2d0836a..2493ede 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py
@@ -93,72 +93,6 @@
return
##------------------------------------------------------------------------------
-## 合服活动BOSS(勇者大陆)
-# @param npcRefresh 刷新的npc对象
-# @param tick 当前时间
-# @return None
-def NPCRefresh_63(npcRefresh, tick): return __RefreshMixBoss(npcRefresh, tick)
-def NPCRefresh_64(npcRefresh, tick): return __RefreshMixBoss(npcRefresh, tick)
-def NPCRefresh_65(npcRefresh, tick): return __RefreshMixBoss(npcRefresh, tick)
-
-## 合服活动BOSS(勇者大陆)
-# @param npcRefresh 刷新的npc对象
-# @param tick 当前时间
-# @return None
-def __RefreshMixBoss(npcRefresh, tick):
- gameWorld = GameWorld.GetGameWorld()
- isMixServer = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
- mixDay = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
- refreshMark = npcRefresh.GetRefreshMark()
-
- # 配置
- mixBossInfo = ReadChConfig.GetEvalChConfig("MixBossInfo")
- curBossInfo = mixBossInfo.get(refreshMark)
- if not curBossInfo:
- #GameWorld.DebugLog("__RefreshMixBoss() hasn't configuration refreshMark(%s)"%refreshMark)
- return
- npcId, mixTime, refreshTimeList = curBossInfo
-
- # 合服期间
- if not isMixServer or mixDay < mixTime[0] or mixDay > mixTime[1]:
- #GameWorld.DebugLog("__RefreshMixBoss() no mix server")
- return
-
- # 一线刷新
- lineId = GameWorld.GetGameWorld().GetLineID()
- if lineId != 0:
- #GameWorld.DebugLog("__RefreshMixBoss() not in 1 line(%s), now"%lineId)
- return
-
- # 有怪
- if npcRefresh.GetCount() > 0:
- #GameWorld.DebugLog("__RefreshMixBoss() have mix server boss(%s), now"%refreshMark)
- return
-
- # 刷新时间匹配
- curTime = GameWorld.GetCurrentTime()
- if (curTime.hour, curTime.minute) not in refreshTimeList:
- #GameWorld.DebugLog("__RefreshMixBoss() npcId(%s) isn't refresh(%s) time(%s)"
- # % (npcId, str((curTime.hour, curTime.minute)), refreshTimeList))
- return
-
- # 刷新Tick 一分钟内不再刷新
- refreshTickKey = ChConfig.Map_NPC_WorldBossLastReBornTick % npcId
- lastRefreshTick = gameWorld.GetGameWorldDictByKey(refreshTickKey)
- if tick - lastRefreshTick <= 60 * 1000:
- #GameWorld.DebugLog("__RefreshMixBoss() not refresh inside minute, npcID(%s) tick(%s) lastTick(%s)"
- # % (npcId, tick, lastRefreshTick))
- return
- gameWorld.SetGameWorldDict(refreshTickKey, tick)
-
- # 刷新NPC
- npcRefresh.Refresh(npcId, ChConfig.Def_SuperBossAngryCount, 1, False)
- # 初始化NPC
- __InitNewBornNPC(npcRefresh, tick)
-
- GameWorld.DebugLog("__RefreshMixBoss() refresh mix server boss npcId(%s) success!!!" % (npcId))
- return
-
## 地图M个点随机刷N只怪
# @param npcRefresh 刷新实例
# @param tick 当前时间
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 c589988..6e04eb4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -49,7 +49,6 @@
import PlayerLVAward
import PlayerGoldGift
import PlayerSignDay
-import MixServerCampaign
import PlayerPet
import PlayerPrestigeSys
import PlayerFamily
@@ -65,7 +64,6 @@
import PlayerAttrFruit
import PlayerSuccess
import PlayerDienstgrad
-import PlayerMixLoginDayAward
import PlayerFreeGoods
import PlayerRecover
import GameLogic_IceLode
@@ -638,12 +636,6 @@
# 开服活动奖励信息
OpenServerCampaign.OnOpenServerCampaignLogin(curPlayer)
#
-# # 通知合服奖励领取状态
-# PlayerMixLoginDayAward.OnLoginNotifyMixLoginDayAward(curPlayer)
-#
-# # 通知合服奖励
-# MixServerCampaign.OnMixServerCampaignLogin(curPlayer)
-#
# # 节日登陆奖励
# PlayerFestivalLogin.OnLoginFestivalLogin(curPlayer)
@@ -838,20 +830,6 @@
# 同步排行榜
PlayerBillboard.UpdBillboardOnMixServerFirstLogin(curPlayer, lastMixServerDay)
-
- # 其他
- # ...
- # 重置登录奖励领取状态
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixLoginDayState, 0)
- PlayerMixLoginDayAward.NotifyPlayerAwardState(curPlayer)
-
- # 重置各合服活动数据
- for campaignType in ShareDefine.Def_MixCampaign_Type_List:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_AwardRecord \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_RecordData \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
-
# 重置玩家改名次数
UpdatePlayerName.ResetChangeNameCnt(curPlayer)
@@ -5220,81 +5198,6 @@
sendMsg = str(familyIDList)
curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_RequestIsFamily, curPlayer.GetID(),
'RequestIsFamily', sendMsg, len(sendMsg))
- return
-
-
-#===============================================================================
-#// AF 02 合服活动奖励 #tagCMMixCampaignAward
-#
-#struct tagCMMixCampaignAward
-#
-#{
-# tagHead Head;
-# BYTE Type; //0-查询;1-领取
-# DWORD CampaignType; //奖励类型
-# BYTE Index; //奖励位,领取时用
-#};
-#===============================================================================
-## 合服活动奖励
-# @param index: 玩家索引
-# @param clientData: 封包结构体
-# @param tick: 时间戳
-# @return:
-def GiveMixServerCampaignAward(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- campaignType = clientData.CampaignType
- queryType = clientData.Type
- awardIndex = clientData.Index # 奖励位
-
- GameWorld.DebugLog("GiveMixServerCampaignAward campaignType=%s,queryType=%s,awardIndex=%s"
- % (campaignType, queryType, awardIndex))
- if queryType == ShareDefine.Def_MSCGameServerQuery_MailAward:
- GameWorld.DebugLog(" 客户端不可发领取合服邮件奖励类型")
- return
-
- isMix = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
- if not isMix:
- GameWorld.ErrLog(" 当前非合服状态!")
- return
-
- if campaignType not in ShareDefine.Def_MixCampaign_Type_List:
- GameWorld.ErrLog(" 合服活动类型错误campaignType=%s error! not define" % campaignType)
- return
-
- # 如果直接在MapServer中处理,则返回
- if MixServerCampaign.DoMixServerCampaignOnMapServer(curPlayer, campaignType, queryType, awardIndex):
- return
-
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_AwardRecord \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
- awardState = GameWorld.GetDataByDigitPlace(awardRecord, awardIndex)
-
- if awardState == MixServerCampaign.Def_AwardState_Got:
- if queryType == ShareDefine.Def_MSCGameServerQuery_QueryAward:
- recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_RecordData \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
- MixServerCampaign.Sync_MixServerCampaignAward(curPlayer, campaignType, awardState, recordData)
- GameWorld.DebugLog(" 已经领取过该奖励...")
- return
-
- #领奖的需要等待GameServer回包以后才处理下一个封包
- if queryType != ShareDefine.Def_MSCGameServerQuery_QueryAward:
- if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_QueryMixServerAwardState) == 1:
- GameWorld.DebugLog(" 已经在查询中...")
- return
-
- curPlayer.SetDict(ChConfig.Def_PlayerKey_QueryMixServerAwardState, 1)
-
- familyID = curPlayer.GetFamilyID()
-
- #[请求类型, 活动类型, 领取索引, 家族ID]
- msgList = [queryType, campaignType, awardIndex, familyID]
-
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'MixServerCampaignAward', \
- '%s' % (msgList), len(str(msgList)))
-
- GameWorld.DebugLog(" msgList=%s" % str(msgList))
return
#===============================================================================
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/MixServerCampaign.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/MixServerCampaign.py
deleted file mode 100644
index dffdded..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/MixServerCampaign.py
+++ /dev/null
@@ -1,480 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.MixServerCampaign
-#
-# @todo:合服活动
-# @author hxp
-# @date 2014-12-03
-# @version 1.1
-#
-# 详细描述: 合服活动
-# @change: "2016-11-21 10:30" xdh 增加邮件补发合服奖励,增加战盟击杀boss活动
-#---------------------------------------------------------------------
-"""Version = 2016-11-21 10:30"""
-
-import ShareDefine
-import NetPackCommon
-import ItemControler
-import IPY_GameWorld
-import PlayerControl
-import DataRecordPack
-import ChPyNetSendPack
-import PlayerBillboard
-import ReadChConfig
-import PyMapTable
-import GameWorld
-import ChConfig
-#---------------------------------------------------------------------
-
-
-# 定义物品类型
-(
-Def_ItemType_CommonItem, # 一般物品
-Def_ItemType_AppointItem, # 特殊定制物品
-) = range(2)
-
-Def_AwardState_Not = 0 # 不能领
-Def_AwardState_Can = 1 # 可领
-Def_AwardState_Got = 2 # 已领
-
-## 合服活动登录处理
-def OnMixServerCampaignLogin(curPlayer):
- isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
- if not isMixServer:
- return
- isSycnClientData = False
- mixMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_MailState, 0,
- ChConfig.Def_PDictType_OpenServerCampaign)
- sendGameServerMailTypeList = [] # 补发邮件需要到GameServer请求数据的活动类型
- for campType in ShareDefine.Def_MixCampaign_Type_List:
- getAwardState = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerCampaignGetAward % campType)
- if getAwardState == ShareDefine.Def_CampaignAwardState_Over: # 领奖已结束, 判断是否通过邮件补发未领取的奖励
- if mixMailState & pow(2, campType): # 邮件已处理过
- continue
-
- if campType in ShareDefine.DoOnMapServerMixCampaignTypeList:
- DoSendMSCAwardMail(curPlayer, campType)
- else:
- sendGameServerMailTypeList.append(campType)
- else:
- isSycnClientData = True
-
- # 请求补发奖励邮件所需的数据
- if sendGameServerMailTypeList:
- #[请求操作类型, 请求补发奖励邮件活动类型列表]
- msgList = [ShareDefine.Def_MSCGameServerQuery_MailAward, sendGameServerMailTypeList]
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'MixServerCampaignAward', \
- '%s' % (msgList), len(str(msgList)))
-
- # 只要有未结束的合服活动,则需要通知
-# if isSycnClientData:
-# Sync_OpenServerCampaignAward(curPlayer)
-
- return
-
-
-## 处理合服活动查询/领取封包逻辑
-# @param curPlayer: 玩家对象
-# @param campaignType: 活动类型
-# @param queryType: 查询类型1:领奖, 0:查询可否领奖
-# @param awardIndex: //奖励位,领取时用
-# @return: True-已在mapServer处理,反之False
-def DoMixServerCampaignOnMapServer(curPlayer, campaignType, queryType, awardIndex):
-
- if campaignType not in ShareDefine.DoOnMapServerMixCampaignTypeList:
- return False
-
- if queryType == ShareDefine.Def_MSCGameServerQuery_GetAward:
- DoGetMixServerCampaignAward(curPlayer, campaignType, awardIndex, 0, 0, 0)
- else:
- __DoQueryMixServerCampaign(curPlayer, campaignType)
-
- return True
-
-## 合服活动查询
-# @param curPlayer: 玩家对象
-# @param campaignType: 活动类型
-# @return: None
-def __DoQueryMixServerCampaign(curPlayer, campaignType):
-
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_AwardRecord \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
- recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_RecordData \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
-
- # 通知客户端
- Sync_MixServerCampaignAward(curPlayer, campaignType, awardRecord, recordData)
- return
-
-## 是否需要保存合服活动数据记录
-# @param campaignType: 活动类型
-# @return: None
-def IsNeedSaveMixServerCampaignRecordData(campaignType):
- key = ShareDefine.Def_Notify_WorldKey_MixServerCampaignSaveData % campaignType
- gameWorldMgr = GameWorld.GetGameWorld()
- return gameWorldMgr.GetGameWorldDictByKey(key) == ShareDefine.Def_CampaignDataState_Save
-
-
-## 更新合服活动数据记录(外调函数)
-# @param curPlayer: 玩家对象
-# @param campaignType: 活动类型
-# @param value: 更新值
-# @param updType: 更新方式1-累加;默认0-替换
-# @return: None
-def UpdMixServerCampaignRecordData(curPlayer, campaignType, value, updType=0):
- isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
- if not isMixServer:
- return
-
- GameWorld.DebugLog("合服活动数据记录 campaignType=%s,value=%s,updType=%s" % (campaignType, value, updType))
- # 非记录数据时机
- if not IsNeedSaveMixServerCampaignRecordData(campaignType):
- GameWorld.DebugLog(" 非记录数据时机")
- return
-
- # 如果是累加的
- if updType == 1:
- recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_RecordData \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
-
- value += recordData
- GameWorld.DebugLog(" 累加类型,更新值=%s" % value)
-
- __UpdateMixServerCampaignRecordData(curPlayer, campaignType, value)
- return
-
-## 更新合服活动数据记录
-# @param curPlayer: 玩家对象
-# @param campaignType: 活动类型
-# @param value: 记录值
-# @return: None
-def __UpdateMixServerCampaignRecordData(curPlayer, campaignType, value):
-
- recordData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_RecordData \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
-
- # 值不变不处理
- if recordData == value:
- return
-
- # 更新合服活动时的记录数值
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_RecordData \
- % campaignType, value, ChConfig.Def_PDictType_OpenServerCampaign)
-
- # 当前领奖状态记录
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_AwardRecord \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
- # 奖励配表中的格式:位:[满足条件数值, 奖励信息],
- awardInfoDict = __GetMixAwardInfoDict(campaignType)
- for bit, awardInfo in awardInfoDict.items():
- awardState = GameWorld.GetDataByDigitPlace(awardRecord, bit)
-
- # 如果已领,不处理
- if awardState == Def_AwardState_Got:
- continue
-
- # 如果更新的数值满足规定领奖数值,且当前不为可领状态,则更新为可领奖
- if value >= awardInfo[0] and awardState != Def_AwardState_Can:
- awardRecord = GameWorld.ChangeDataByDigitPlace(awardRecord, bit, Def_AwardState_Can)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_AwardRecord \
- % campaignType, awardRecord, ChConfig.Def_PDictType_OpenServerCampaign)
- GameWorld.DebugLog(" 更新奖励状态 type=%s,awardRecord=%s" % (campaignType, awardRecord))
-
- # 合服充值活动的,更新充值排行
- if campaignType == ShareDefine.Def_MixCampaign_Type_RechargeCnt:
- # 因为有做上榜限制,所以就不做拷贝
- PlayerBillboard.UpdateMixServerRechargeRankBillboard(curPlayer, value)
-
- if campaignType == ShareDefine.Def_MixCampaign_Type_PlayerKillBoss:
- # 因为有做上榜限制,所以就不做拷贝
- PlayerBillboard.UpdateMixServerFamilyKillBossBillboard(curPlayer, 1) #默认1只
-
- return
-
-
-## 合服活动给奖励
-# @param curPlayer: 玩家对象
-# @param campaignType: 活动类型
-# @param awardIndex: 奖励索引位
-# @param order: 所在排行榜排名
-# @param familyLV: 所在战盟等级
-# @param memberFamilyLV: 所在战盟成员等级
-# @return: None
-def DoGetMixServerCampaignAward(curPlayer, campaignType, awardIndex, order, familyLV, memberFamilyLV, isUseMail=False):
- GameWorld.Log("合服活动给奖励 campaignType=%s,index=%s,order=%s,familyLV=%s,memberFamilyLV=%s,isUseMail=%s"
- % (campaignType, awardIndex, order, familyLV, memberFamilyLV, isUseMail))
- gameWorldMgr = GameWorld.GetGameWorld()
-
- if not isUseMail: #邮件奖励的不判断
- key = ShareDefine.Def_Notify_WorldKey_MixServerCampaignGetAward % campaignType
- canGetAward = gameWorldMgr.GetGameWorldDictByKey(key)
- # 如果当前不可领奖时机
- if canGetAward != ShareDefine.Def_CampaignAwardState_Allow:
- GameWorld.Log(" 当前不可领奖时机 type=%s,canGetAward=%s" % (campaignType, canGetAward))
- return
-
- # 当前领奖状态记录
- awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_AwardRecord \
- % campaignType, 0, ChConfig.Def_PDictType_OpenServerCampaign)
-
- awardState = GameWorld.GetDataByDigitPlace(awardRecord, awardIndex)
- GameWorld.DebugLog('合服活动给奖励 awardState=%s' % awardState)
- #主要在MapServer处理的数值判断类型,需要检查领取状态
- if campaignType in ShareDefine.DoOnMapServerMixCampaignTypeList:
- # 检查是否已领取
- if awardState != Def_AwardState_Can:
- GameWorld.Log(" 不可领奖 type=%s,index=%s,awardRecord=%s,awardState=%s"
- % (campaignType, awardIndex, awardRecord, awardState))
- return
-
- #GameServer处理的排行榜类型,在客户端不需要记录,除非领取过,所以这里需要判定是否领取过
- else:
- if awardState == Def_AwardState_Got:
- GameWorld.Log(" 已领过 type=%s,index=%s,awardRecord=%s,awardState=%s"
- % (campaignType, awardIndex, awardRecord, awardState))
- return
-
- #获取奖励信息
- awardInfoList, condition = __GetMixAwardInfoList(curPlayer, campaignType, awardIndex, order,
- familyLV, memberFamilyLV)
- if awardInfoList == []:
- GameWorld.ErrLog(" 找不到奖励信息, type=%s,index=%s" % (campaignType, awardIndex))
- return
-
- if len(awardInfoList) < 2:
- #奖励信息长度错误
- GameWorld.ErrLog(" 奖励信息len error! type=%s,index=%s" % (campaignType, awardIndex))
- return
- if not isUseMail:
- needPackCount = awardInfoList[0] # 占用格子数
- packSpaceCnt = max((ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)), \
- ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptAnyWhere))
-
- if needPackCount > packSpaceCnt:
- #背包空间已满
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return
-
- #根据职业获取奖励物品信息
- playerJob = curPlayer.GetJob()
- jobItemInfoDict = awardInfoList[1]
- jobItemInfoDictEx = awardInfoList[2] if len(awardInfoList) > 2 else {} # 额外奖励
-
- itemInfoListBase = __GetAwardItemListByJob(playerJob, jobItemInfoDict)
- itemInfoListEx = __GetAwardItemListByJob(playerJob, jobItemInfoDictEx)
- itemInfoList = itemInfoListBase + itemInfoListEx
- GameWorld.DebugLog(" itemInfoListBase=%s,itemInfoListEx=%s,itemInfoList=%s"
- % (str(itemInfoListBase), str(itemInfoListEx), str(itemInfoList)))
- #如果都取不到,报配表错误
- if itemInfoList == []:
- GameWorld.ErrLog(" 奖励取不到 campaignType=%s,awardIndex=%s,playerJob=%s not data"
- % (campaignType, awardIndex, playerJob))
- return
-
- #oss记录领奖信息
- awardMixDay = gameWorldMgr.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
- dataDict = {"AwardMixDay":awardMixDay, "CampaignType":campaignType, "awardIndex":awardIndex,
- "PlayerOrder":order, "FamilyLV":familyLV, "MemberFamilyLV":memberFamilyLV}
- if not isUseMail:
- #给予奖励物品
- for index in range(0, len(itemInfoList)):
- itemType, itemID, itemCount, isBind = itemInfoList[index]
-
- #给予物品
- # 一般物品
- if itemType == Def_ItemType_CommonItem:
- if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind,
- [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], True, showSysInfo=True):
- continue
- # 特殊定制物品
- elif itemType == Def_ItemType_AppointItem:
- ItemControler.GivePlayerAppointItem(curPlayer, itemID, isBind, True, True)
- #系统广播
- if campaignType == ShareDefine.Def_MixCampaign_Type_RechargeFirst:
- PlayerControl.WorldNotify(0, 'GeRen_wjr_162625', [curPlayer.GetPlayerName()])
- else:
- playerID = curPlayer.GetPlayerID()
- MixServerCampaignMail = ReadChConfig.GetEvalChConfig("MixServerCampaignMail")
- content, getDays, mailNumDict = MixServerCampaignMail
- if campaignType not in mailNumDict:
- GameWorld.ErrLog(" 未配置合服活动类型对应邮件模板编号! campaignType=%s,mailItemList=%s" % (campaignType, itemInfoList), playerID)
- return
- GameWorld.DebugLog(' 合服奖励邮件 campaignType=%s, condition=%s'%(campaignType, condition))
- mailContent = content % (mailNumDict[campaignType], condition)
- mailItemList = []
- for itemType, itemID, itemCount, isBind in itemInfoList:
- mailItemList.append([itemID, itemCount, isBind, itemType])
- sendOK = PlayerControl.SendMail("", mailContent, getDays, [playerID], mailItemList)
- dataDict["sendOK"] = sendOK
-
- DataRecordPack.DR_MixServerAward(curPlayer, dataDict)
-
- # 更新已领取
- awardRecord = GameWorld.ChangeDataByDigitPlace(awardRecord, awardIndex, Def_AwardState_Got)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_AwardRecord \
- % campaignType, awardRecord, ChConfig.Def_PDictType_OpenServerCampaign)
-
- # 更新活动数据
- updRecordData = -1
- if campaignType == ShareDefine.Def_MixCampaign_Type_FamilyWar:
- updRecordData = memberFamilyLV
-
- if updRecordData != -1:
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_RecordData \
- % campaignType, updRecordData, ChConfig.Def_PDictType_OpenServerCampaign)
-
- # 通知客户端
- __DoQueryMixServerCampaign(curPlayer, campaignType)
- return
-
-
-## 合服活动邮件发放奖励
-def DoSendMSCAwardMail(curPlayer, campaignType, gameServerAwardInfo=[]):
- campaignAwardDict = ReadChConfig.GetEvalChConfig("MixServerCampaignAward")
- if campaignType not in campaignAwardDict:
- return
- order = gameServerAwardInfo[0] if gameServerAwardInfo else 0
- memberLV = gameServerAwardInfo[1] if len(gameServerAwardInfo) > 1 else 0
- if campaignType in ShareDefine.Def_MixCampaign_Billboard_Dict:
- billboardType = ShareDefine.Def_MixCampaign_Billboard_Dict[campaignType]
- if not gameServerAwardInfo or not order:
- GameWorld.DebugLog(" 无榜单数据!campaignType=%s,billboardType=%s" % (campaignType, billboardType))
- return
- DoGetMixServerCampaignAward(curPlayer, campaignType, 0, order, 0, memberLV, True)
- else:
- awardInfoList = campaignAwardDict[campaignType]
- for awardIndex in xrange(len(awardInfoList)):
- DoGetMixServerCampaignAward(curPlayer, campaignType, awardIndex, order, 0, memberLV, True)
-
- # 更新邮件已处理过
- mixMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixServerCampaign_MailState, 0,
- ChConfig.Def_PDictType_OpenServerCampaign)
- updMailState = mixMailState | pow(2, campaignType)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixServerCampaign_MailState,
- updMailState, ChConfig.Def_PDictType_OpenServerCampaign)
- GameWorld.Log(" 合服活动邮件发放奖励成功! campaignType=%s,mixMailState=%s,updMailState=%s"
- % (campaignType, mixMailState, updMailState), curPlayer.GetPlayerID())
- return
-
-## 根据职业获取奖励列表
-# @param playerJob: 职业
-# @param jobItemInfoDict: 职业对应奖励物品信息字典
-# @return: 奖励信息列表
-def __GetAwardItemListByJob(playerJob, jobItemInfoDict):
- itemInfoList = jobItemInfoDict.get(playerJob, [])
- #如果取不到当前职业的奖励,就取职业0的数据
- if itemInfoList == []:
- itemInfoList = jobItemInfoDict.get(0, [])
- return itemInfoList
-
-## 获取奖励物品信息
-# @param curPlayer: 玩家实例
-# @param campaignType: 活动类型
-# @param awardIndex: 奖励位
-# @param order: 名次
-# @param familyLV: 家族等级
-# @param memberFamilyLV: 家族职位
-# @return: 奖励信息,条件
-def __GetMixAwardInfoList(curPlayer, campaignType, awardIndex, order, familyLV, memberFamilyLV):
- condition = 0 #邮件显示用参数
- awardInfoDict = __GetMixAwardInfoDict(campaignType)
- if awardInfoDict == {}:
- return [], condition
-
- awardList = []
-
- # 通用保底
- if campaignType in [ShareDefine.Def_MixCampaign_Type_RechargeFirst,
- ShareDefine.Def_MixCampaign_Type_RechargeCnt,
- ShareDefine.Def_MixCampaign_Type_FamilyWarEnter,
- ShareDefine.Def_MixCampaign_Type_PlayerKillBoss
- ]:
- awardList = awardInfoDict.get(awardIndex, [])
- condition = 0 if len(awardList) != 2 else awardList[0]
- awardList = [] if len(awardList) != 2 else awardList[1]
- if campaignType in [ShareDefine.Def_MixCampaign_Type_RechargeFirst]:
- condition = ''
-
- #排行榜类型
- else:
- condition = order
- orderList = awardInfoDict.keys()
- orderList.sort()
- for minOrder in orderList:
- if order > minOrder:
- continue
- awardList = awardInfoDict.get(minOrder)
- break
- if campaignType == ShareDefine.Def_MixCampaign_Type_FamilyWar:
- #冰封王座家族战获胜家族成员奖励特殊处理
- condition = memberFamilyLV
- awardList = awardInfoDict.get(memberFamilyLV, [])
-
- extendComValue = 0 # 扩展奖励比较值
-
- # 特殊扩展奖励比较值处理
- # ...
-
- awardList = __ExtendAwardItem(curPlayer, awardList, extendComValue)
-
- return awardList, condition
-
-## 扩展奖励物品
-# @param curPlayer: 玩家实例
-# @param awardList: 奖励信息列表
-# @param extendComValue: 扩展奖励比较值
-# @return: 最终奖励物品列表
-def __ExtendAwardItem(curPlayer, awardList, extendComValue):
- if len(awardList) < 4:
- return awardList
-
- # awardList[需求格子数, 基础奖励字典, 额外奖励需求, 额外奖励字典]
- needSpace = awardList[0]
- awardDict = awardList[1]
- limitData = awardList[2]
- awardDictEx = awardList[3]
-
- # 如果有额外奖励
- GameWorld.DebugLog(" __ExtendAwardItem extendComValue=%s,limitData=%s"
- % (extendComValue, limitData))
- # 0为不限制
- if not limitData or extendComValue >= limitData:
- awardList = [needSpace, awardDict, awardDictEx]
- else:
- awardList = [needSpace, awardDict]
-
- return awardList
-
-## 获取奖励信息
-# @param curPlayer: 玩家实例
-# @param campaignType: 活动类型
-# @param order: 名次
-# @param familyLV: 家族等级
-# @param memberFamilyLV: 家族职位
-# @return: 奖励信息
-def __GetMixAwardInfoDict(campaignType):
- campaignAwardDict = ReadChConfig.GetEvalChConfig("MixServerCampaignAward")
- awardInfoDict = campaignAwardDict.get(campaignType, {})
- if awardInfoDict == {}:
- GameWorld.ErrLog("MixServerCampaignAward.txt campaignType:%s not info" % (campaignType))
- return awardInfoDict
-
-
-## 通知合服活动奖励
-# @param curPlayer: 玩家实例
-# @param campaignType: 活动奖励
-# @param record: 从低位到高位,每位表示:0-不可领;1-领取;2-已领
-# @param recordData: 活动时的记录值
-# @return: None
-def Sync_MixServerCampaignAward(curPlayer, campaignType, record, recordData):
- mixAwardRecord = ChPyNetSendPack.tagMCMixCampaignAwardRecord()
- mixAwardRecord.CampaignType = campaignType
- mixAwardRecord.Record = record
- mixAwardRecord.RecordData = recordData
- NetPackCommon.SendFakePack(curPlayer, mixAwardRecord)
- 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 53e31a5..98d6bdc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
@@ -19,10 +19,7 @@
import GameWorld
import ChConfig
import PlayerControl
-import ReadChConfig
import OpenServerCampaign
-import MixServerCampaign
-import PlayerSuccess
import GameFuncComm
import EventReport
@@ -205,43 +202,6 @@
def BillboardOnLogin(curPlayer):
# 上线默认同步排行榜
UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故上线不再同步
-
- curSign = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ClearBillboardSign)
-
- playerSign = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ReUpdBillboardSign)
-
- if playerSign == curSign:
- GameWorld.DebugLog("玩家登录检查是否重新同步排行榜!标记相同不同步curSign=%s" % curSign)
- return
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ReUpdBillboardSign, curSign)
- GameWorld.DebugLog("玩家登录重新同步排行榜!更新同步标记lastSign=%s,curSign=%s" % (playerSign, curSign))
-
- # 如果是合服充值活动记录时机,则同步一次排行榜
- mixServerRechargeType = ShareDefine.Def_MixCampaign_Type_RechargeRank
- if MixServerCampaign.IsNeedSaveMixServerCampaignRecordData(mixServerRechargeType):
- mixRecordDataType = ShareDefine.Def_MixCampaign_Type_RechargeCnt
- mixRecordDataKey = ChConfig.Def_PDict_MixServerCampaign_RecordData % mixRecordDataType
- mixRecordData = curPlayer.NomalDictGetProperty(mixRecordDataKey, 0, ChConfig.Def_PDictType_OpenServerCampaign)
- UpdateMixServerRechargeRankBillboard(curPlayer, mixRecordData)
- else:
- GameWorld.DebugLog("非合服充值活动记录时机,不同步!")
-
- # 特惠充值排行
- gameWorld = GameWorld.GetGameWorld()
- actionNumKey = ShareDefine.Def_Notify_WorldKey_DayAction_RechargeRank
- actionNum = gameWorld.GetGameWorldDictByKey(actionNumKey)
- if actionNum:
- curTotalGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TeHui_RechargeRankTotalGold, 0,
- ChConfig.Def_PDictType_TeHuiAction)
- curTotalGold = max(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TeHui_RechargeRankTotalGoldEx, 0,
- ChConfig.Def_PDictType_TeHuiAction), curTotalGold)
- actionID = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DayAction_ID % actionNumKey)
- UpdateRechargeRankBillboard(curPlayer, actionID, actionNum, curTotalGold)
- else:
- GameWorld.DebugLog("非特惠充值排行活动时机,不同步!")
-
- GameWorld.DebugLog("玩家登录重新同步排行榜!OK!")
return
##合服首次上线强制更新一次排行榜
@@ -324,33 +284,6 @@
GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'UpdCostRankBillboard', \
sendMsg, len(sendMsg))
return
-
-## 更新合服累计充值活动排行榜
-# @param playerID: 玩家ID
-# @return:
-def UpdateMixServerRechargeRankBillboard(curPlayer, value):
-# if GameWorld.IsGM(curPlayer):
-# #GM不上榜
-# return
-
- mixServerRechargeBillLimit = ReadChConfig.GetEvalChConfig("MixServerRechargeBillLimit")
- GameWorld.DebugLog(" 更新合服累计充值活动排行榜 value=%s,limit=%s"
- % (value, mixServerRechargeBillLimit), curPlayer.GetPlayerID())
- # 未达到上榜条件
- if value < mixServerRechargeBillLimit:
- return
-
- #排行榜需要数据[玩家ID, 玩家名字, 玩家职业, 击杀数]
- playerID = curPlayer.GetID()
- playerName = curPlayer.GetName()
- playerOpInfo = curPlayer.GetOperateInfo()
- playerJob = curPlayer.GetJob()
- fightPower = curPlayer.GetFightPower()
- familyName = curPlayer.GetFamilyName()
- sendMsg = '%s' % ([playerID, playerName, playerOpInfo, playerJob, fightPower, familyName, value])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'UpdMSRechargeRankBillboard', \
- sendMsg, len(sendMsg))
- return
##更新玩家充值排行榜
# @param curPlayer 玩家实例
@@ -374,21 +307,3 @@
sendMsg, len(sendMsg))
return
-## 更新合服战盟击杀boss活动排行榜
-# @param playerID: 玩家ID
-# @return:
-def UpdateMixServerFamilyKillBossBillboard(curPlayer, value):
- familyID = curPlayer.GetFamilyID()
- if not familyID:
- return
- #排行榜需要数据[玩家ID]
- playerID = curPlayer.GetID()
-# playerName = curPlayer.GetName()
-# playerOpInfo = curPlayer.GetOperateInfo()
-# playerJob = curPlayer.GetJob()
-# fightPower = curPlayer.GetFightPower()
-# familyName = curPlayer.GetFamilyName()
- sendMsg = '%s' % ([value])
- GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, 'UpdMSFamilyKillBossBillboard', \
- sendMsg, len(sendMsg))
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
index 45a06f7..2ac8929 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
@@ -351,11 +351,6 @@
# 重置今日已充值数, 领取礼包索引
#PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGoldChargeCnt, 0)
- #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleGoldGiftIndex, 0)
- #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnlimitedGoldGiftCnt, 0)
- # 通知单日充值多选一礼包信息
- #Sync_SingleGoldGiftInfo(curPlayer, True)
- #Sync_UnlimitedGoldGiftRecord(curPlayer)
return
## 充值豪礼OnLogin
@@ -393,171 +388,7 @@
# 充值达到额定元宝获得奖励,邮件发送
__GiveGoldGiftByMail(curPlayer)
-
- # 通知单日充值多选一礼包信息
- Sync_SingleGoldGiftInfo(curPlayer, True)
return
-
-## 单日充值任选一奖励
-# @param curPlayer: 玩家
-# @param giftIndex: 礼包索引
-# @param giftLV: 礼包档次
-# @return: None
-def GetSingleGoldGift(curPlayer, giftIndex, giftLV, giftType):
-
- findSingleGoldGift = GetTodaySingleGoldGiftInfo()
-
- GameWorld.DebugLog("当日充值奖励领奖 (档%s - %s) giftType=%s,findSingleGoldGift=%s"
- % (giftLV, giftIndex, giftType, str(findSingleGoldGift)))
-
- if not findSingleGoldGift:
- GameWorld.DebugLog(" 今日未配置充值单选礼包!")
- return
-
- todayGiftType = findSingleGoldGift[2]
- if giftType != todayGiftType:
- GameWorld.DebugLog(" 非当日充值礼包类型!todayGiftType=%s" % todayGiftType)
- return
-
- goldGiftInfoList = findSingleGoldGift[3]
-
- # 无限领取礼包类型
- if giftType == 1:
- __GetUnlimitedGoldGift(curPlayer, goldGiftInfoList)
- return
-
- if giftIndex <= 0:
- return
-
- if giftLV >= len(goldGiftInfoList):
- GameWorld.ErrLog("单日充值单选礼包配置错误SingleGoldGift.txt 不存在该奖励档!giftLV=%s" % giftLV)
- return
-
- curGoldGiftInfo = goldGiftInfoList[giftLV]
- needGold, chooseGiftList = curGoldGiftInfo
-
- dailyGoldCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeCnt)
-
- if dailyGoldCnt < needGold:
- GameWorld.DebugLog(" 今日充值额度未满足,无法领奖!needGold=%s,dailyGoldCnt=%s"
- % (needGold, dailyGoldCnt))
- return
-
- goldGiftAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleGoldGiftIndex)
- singleGoldGiftIndex = GameWorld.GetDataByDigitPlace(goldGiftAwardRecord, giftLV)
- if singleGoldGiftIndex > 0:
- GameWorld.DebugLog(" 今日已领取!singleGoldGiftIndex=%s" % (singleGoldGiftIndex))
- return
-
- if giftIndex > len(chooseGiftList):
- GameWorld.ErrLog("单日充值单选礼包配置错误SingleGoldGift.txt giftIndex=%s 不在奖励列表里!" % giftIndex)
- return
-
- hasSpace = ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem)
- if not hasSpace:
- GameWorld.DebugLog(" 背包已满!")
- return
-
- # 更新领奖索引
- updGoldGiftRecord = GameWorld.ChangeDataByDigitPlace(goldGiftAwardRecord, giftLV, giftIndex)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleGoldGiftIndex, updGoldGiftRecord)
-
- itemID, itemCount, isBind = chooseGiftList[giftIndex - 1]
- isOK = ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], True)
- if not isOK:
- return
-
- # 流向
- infoDict = {"SingleGiftIndex":giftIndex, "ItemID":itemID, "ItemCount":itemCount, "IsBind":isBind,
- "SingleGiftLV":giftLV, "GoldGiftAwardRecord":updGoldGiftRecord}
- DataRecordPack.DR_GoldGiftGiveItem(curPlayer, "SingleGoldGift", infoDict)
-
- # 同步客户端状态
- Sync_SingleGoldGiftInfo(curPlayer)
- GameWorld.DebugLog(" awardRecord=%s,updRecord=%s,infoDict=%s" % (goldGiftAwardRecord, updGoldGiftRecord, infoDict))
- return
-
-def __GetUnlimitedGoldGift(curPlayer, goldGiftInfoList):
-
- dailyGoldCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeCnt)
-
- # 已领取次数
- hadGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnlimitedGoldGiftCnt)
-
- maxGetCnt = goldGiftInfoList[0] # 最大重复领取次数
- perNeedGold = goldGiftInfoList[1] # 每次领取需要充值钻石数
- curCanGetCnt = dailyGoldCnt / perNeedGold # 当前可领取的最大次数
- if maxGetCnt > 0:
- curCanGetCnt = min(curCanGetCnt, maxGetCnt)
-
- GameWorld.DebugLog("领取当日充值无限领取礼包:dailyGoldCnt=%s / per(%s) = canCnt(%s),hadGetCnt=%s,MaxCntCfg=%s"
- % (dailyGoldCnt, perNeedGold, curCanGetCnt, hadGetCnt, maxGetCnt))
-
- if curCanGetCnt <= 0:
- GameWorld.DebugLog(" 可领取次数=%s,不可领取!" % curCanGetCnt)
- return
-
- if hadGetCnt >= curCanGetCnt:
- GameWorld.DebugLog(" 已达到最大领取次数!%s" % curCanGetCnt)
- return
-
- getCnt = curCanGetCnt - hadGetCnt
-
- # 检查背包
- packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
- needSpace = goldGiftInfoList[2]
- if needSpace > packSpace:
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return
-
- # 给物品
- curGetCnt = getCnt
- awardItemList = goldGiftInfoList[3]
- for itemID, itemCnt, isBind in awardItemList:
- gameData = GameWorld.GetGameData()
- curItemData = gameData.GetItemByTypeID(itemID)
- if curItemData == None:
- GameWorld.ErrLog("领取当日充值无限领取礼包,物品ID数据错误!(%s)" % itemID, curPlayer.GetPlayerID())
- return
-
- maxPackCount = curItemData.GetPackCount()
- perSpaceCanGetCnt = maxPackCount / itemCnt # 单个空位最大可领取次数
- curGetCnt = min(perSpaceCanGetCnt, curGetCnt)
- #GameWorld.DebugLog(" itemID=%s,maxPackCount=%s,giveCnt=%s,perSpaceCanGetCnt=%s,curGetCnt=%s"
- # % (itemID, maxPackCount, itemCnt, perSpaceCanGetCnt, curGetCnt))
-
- # 更新已领取成功标记
- updGetCnt = hadGetCnt + curGetCnt
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnlimitedGoldGiftCnt, updGetCnt)
-
- # 给物品
- awardItemList = goldGiftInfoList[3]
- isOKStr = ""
- for itemID, itemCnt, isBind in awardItemList:
- isOK = ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt * curGetCnt, isBind,
- [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], True)
-
- isOKStr = "%s%s" % (str(int(isOK)), isOKStr)
-
- # 记录领取事件
- addDataDict = {"isOKStr":isOKStr, "awardItemList":str(awardItemList), "DailyGoldCnt":dailyGoldCnt,
- "TodayGetCnt":updGetCnt, "CurGetCnt":curGetCnt}
- DataRecordPack.DR_FuncGiveItem(curPlayer, "UnlimitedGoldGift", addDataDict)
-
- # 通知客户端
- Sync_UnlimitedGoldGiftRecord(curPlayer)
- GameWorld.DebugLog(" 领取充值无限领取礼包奖励OK!TodayGetCnt=%s,CurGetCnt=%s" % (updGetCnt, curGetCnt))
- return
-
-
-## 通知无限领取礼包已领取次数
-# @param None
-# @return None
-def Sync_UnlimitedGoldGiftRecord(curPlayer):
- #record = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnlimitedGoldGiftCnt)
- #ChPlayer.Sync_RewardGetRecordInfo(curPlayer, ShareDefine.Def_RewardType_UnlimitedGoldGift, record)
- return
-
## 玩家累计充值元宝发送邮件奖励
# @param curPlayer: 玩家
@@ -654,59 +485,6 @@
sendPack.FirstGoldTry = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTry)
NetPackCommon.SendFakePack(curPlayer, sendPack)
return
-
-## 通知单日充值多选一礼包信息
-# @param curPlayer
-# @return None
-def Sync_SingleGoldGiftInfo(curPlayer, isCheckTime=False):
- #===============================================================================================
- # if isCheckTime:
- # todayGiftInfo = GetTodaySingleGoldGiftInfo()
- # if not todayGiftInfo:
- # return
- #
- # sendPack = ChPyNetSendPack.tagMCSingleGoldGift()
- # sendPack.Clear()
- # sendPack.GoldCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeCnt)
- # sendPack.GiftIndex = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleGoldGiftIndex)
- # NetPackCommon.SendFakePack(curPlayer, sendPack)
- #===============================================================================================
- return
-
-## 获取单日充值多选一礼包信息
-# @param None
-# @return None代表今日无活动
-def GetTodaySingleGoldGiftInfo():
- # 开服前7天默认不开启
- openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
-
- singleGoldGiftList = ReadChConfig.GetEvalChConfig("SingleGoldGift")
-
- curDataTimeStr = GameWorld.GetCurrentDataTimeStr()
-
- curTime = GameWorld.GetCurrentTime()
- weekday = curTime.weekday() + 1
-
- findSingleGoldGift = None
- for giftInfo in singleGoldGiftList:
-
- # 判断日期, 日期活动优先
- dateTimeInfo = giftInfo[0]
- if dateTimeInfo:
- startTime = dateTimeInfo[0]
- endTime = dateTimeInfo[1]
- if startTime <= curDataTimeStr <= endTime:
- findSingleGoldGift = giftInfo
- break
-
- # 判断星期, 开服前7天默认不开启星期活动
- weekDayInfo = giftInfo[1]
- if weekday in weekDayInfo and openServerDay >= ShareDefine.Def_OSC_ValidDay:
- findSingleGoldGift = giftInfo
- break
-
- return findSingleGoldGift
-
#// A5 11 试用首充武器 #tagCMTryFirstGoldItem
#
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMixLoginDayAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMixLoginDayAward.py
deleted file mode 100644
index e8628af..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMixLoginDayAward.py
+++ /dev/null
@@ -1,229 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package PlayerMixLoginDayAward
-#
-# @todo: 合服登陆奖励
-# @author ljd
-# @date 2014-12-05 15:30
-# @version 1.0
-#
-# 详细描述:
-#
-"""Version = 2014-12-05 15:30"""
-#------------------------------------------------------------------------------
-
-import IPY_GameWorld
-import ChConfig
-import GameWorld
-import ReadChConfig
-import ItemCommon
-import PlayerControl
-import ItemControler
-import ChPyNetSendPack
-import NetPackCommon
-import ShareDefine
-import DataRecordPack
-
-
-# 奖励状态
-(
-Reward_State_Not,
-Reward_State_Can,
-Reward_State_Yet,
-) = range(3)
-
-# 奖励信息配置位索引
-(
-Reward_Item_Type,
-Reward_Item_Id,
-Reward_Item_Num,
-Reward_Item_IsBind,
-) = range(4)
-
-# 定义物品类型
-(
-Item_Type_Common, # 一般物品表
-Item_Type_Appoint, # 特殊定制物品
-) = range(2)
-
-# 特殊配置限制
-Special_Ini_Key = -1
-(
-Special_CampaignDay, # 活动持续时间-合服天
-Special_WarnDay, # 提示合服天
-) = range(2)
-
-## onday 记录合服登陆奖励状态
-# @param curPlayer
-# @return None
-def OnDayPlayerMixLoginDay(curPlayer):
- __UpdateMixLoginDayState(curPlayer)
-
-## 登陆通知合服登陆奖励状态
-# @param curPlayer
-# @return None
-def OnLoginNotifyMixLoginDayAward(curPlayer):
- __UpdateMixLoginDayState(curPlayer)
-
-## 更新登陆状态
-# @param curPlayer
-# @return None
-def __UpdateMixLoginDayState(curPlayer):
- if not __IsPermitMixManage():
- return
- __UpdateAwardCanState(curPlayer)
- NotifyPlayerAwardState(curPlayer)
-
-
-## 合服登陆当天奖励 <AF 01封包>
-# @param clientPack <Index-奖励索引>
-# @return None
-def GetMixLoginDayAward(index, clientPack, tick):
- # 根据索引取到当前请求玩家的数据
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-
- loginDayState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixLoginDayState)
-
- stateIndex = clientPack.Index
- if not __IsPermitMixManage(stateIndex):
- # 不允许处理合服活动
- return
- GameWorld.DebugLog("GetMixLoginDayAward() stateIndex=%s receive client get reward Info!!!"%stateIndex)
-
- mixDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
- curState = GameWorld.GetDataByDigitPlace(loginDayState, stateIndex)
- if curState != Reward_State_Can or mixDay < stateIndex:
- # 不是可领取状态 或 合服天数未到
- return
-
- # 获取物品列表
- itemList = __GetRewardItemList(curPlayer, stateIndex)
- if not __IsPermitGiveReward(curPlayer, itemList):
- # 不允许发放物品
- return
-
- loginDayState = GameWorld.ChangeDataByDigitPlace(loginDayState, stateIndex, Reward_State_Yet)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixLoginDayState, loginDayState)
-
- __GiveRewardItems(curPlayer, itemList)
-
- GameWorld.DebugLog("GetMixLoginDayAward() loginDayState=%s give reward success!!!"%loginDayState)
- # 记录领取事件
- DataRecordPack.DR_MixLoginDayAward(curPlayer, loginDayState)
- # 通知奖励状态
- NotifyPlayerAwardState(curPlayer)
- return
-
-## 通知合服登陆奖励
-# @param curPlayer
-# @return None
-def NotifyPlayerAwardState(curPlayer):
- sendPack = ChPyNetSendPack.tagMCMixLoginDayAwardState()
- sendPack.Clear()
- sendPack.State = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixLoginDayState)
-
- # 通知客服端合服登陆奖励领取状态
- NetPackCommon.SendFakePack(curPlayer, sendPack)
- GameWorld.DebugLog("NotifyPlayerAwardState() Notify client merge server login reward state(%s)!!!"%sendPack.State)
- return
-
-## 更新奖励可领取状态
-# @param curPlayer
-# @return None
-def __UpdateAwardCanState(curPlayer):
- if not __IsPermitMixManage():
- return
- mixDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
- rewardInfoDict = ReadChConfig.GetEvalChConfig("MixLoginDayAward")
- if mixDay >= rewardInfoDict.get(Special_Ini_Key, [len(rewardInfoDict), 0])[Special_CampaignDay]:
- GameWorld.DebugLog("__UpdateAwardCanState() have merge server %s day, now!!!"%mixDay)
- # 超过了活动时间
- return
- loginDayState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MixLoginDayState)
- curState = GameWorld.GetDataByDigitPlace(loginDayState, mixDay)
- if curState in [Reward_State_Can, Reward_State_Yet]:
- # 可、已领取状态不更新
- return
- # 更改当前合服天为可领取状态
- loginDayState = GameWorld.ChangeDataByDigitPlace(loginDayState, mixDay, Reward_State_Can)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixLoginDayState, loginDayState)
-
-## 是否允许合服处理
-# @param dayIndex 领奖合服天
-# @return None
-def __IsPermitMixManage(dayIndex=-1):
- # 是否处在合服状态
- isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
- if not isMixServer:
- GameWorld.DebugLog("__IsPermitMixManage() has not merge server, now!!!")
- return False
- # 取得合服天
- mixDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
- dayIndex = dayIndex if dayIndex >= 0 else mixDay
- rewardInfoDict = ReadChConfig.GetEvalChConfig("MixLoginDayAward")
- if dayIndex >= rewardInfoDict.get(Special_Ini_Key, [0, len(rewardInfoDict)])[Special_WarnDay]:
- # 超过了有奖提示天数
- GameWorld.DebugLog("__IsPermitMixManage() have merge server %s day, now!!!"%mixDay)
- return False
- return True
-
-## 是否允许发放物品
-# @param curPlayer 当前玩家
-# @param itemList 奖励物品列表
-# @return 是否可以发放物品
-def __IsPermitGiveReward(curPlayer, itemList):
- if not itemList:
- GameWorld.ErrLog("__IsPermitGiveReward() Reward item list (%s) Null!!!"%itemList)
- return False
- packSpaceNum = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
- needSpaceNum = len(itemList)
- if needSpaceNum > packSpaceNum:
- # 通知背包空间不足
- PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
- return False
- return True
-
-## 发放奖励物品
-# @param curPlayer 当前玩家
-# @param itemList 奖励物品列表
-# @return None
-def __GiveRewardItems(curPlayer, itemList):
- for itemInfo in itemList:
- itemType = itemInfo[Reward_Item_Type]
- itemId = itemInfo[Reward_Item_Id]
- itemNum = itemInfo[Reward_Item_Num]
- itemIsBind = itemInfo[Reward_Item_IsBind]
-
- if itemNum <= 0:
- continue
-
- # 一般物品
- if itemType == Item_Type_Common:
- ItemControler.GivePlayerItem(curPlayer, itemId, itemNum, itemIsBind, [IPY_GameWorld.rptItem], True)
-
- # 特殊定制物品
- elif itemType == Item_Type_Appoint:
- ItemControler.GivePlayerAppointItem(curPlayer, itemId, itemIsBind, True)
-
-## 获取奖励列表
-# @param curPlayer 当前玩家
-# @param stateIndex 奖励状态索引
-# @return 奖励物品列表
-def __GetRewardItemList(curPlayer, stateIndex):
- # 取出奖励配置
- rewardInfoDict = ReadChConfig.GetEvalChConfig("MixLoginDayAward")
- rewardInfo = rewardInfoDict.get(stateIndex, {})
-
- heroJob = curPlayer.GetJob()
-
- # 按职业取奖励物品列表
- for jobs, items in rewardInfo.items():
- if heroJob in jobs:
- return items[:]
-
- GameWorld.DebugLog("__GetRewardItemList() Not find job(%s)"%heroJob)
- return rewardInfo.get(())
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MixServerCampaignAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MixServerCampaignAward.py
deleted file mode 100644
index cdd77a3..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_MixServerCampaignAward.py
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.RemoteQuery.GY_Query_MixServerCampaignAward
-#
-# @todo:合服活动奖励
-# @author hxp
-# @date 2014-12-03
-# @version 1.0
-#
-# 详细描述: 合服活动奖励
-#
-#---------------------------------------------------------------------
-"""Version = 2014-12-03 14:30"""
-
-import GameWorld
-import ChConfig
-import ShareDefine
-import MixServerCampaign
-#---------------------------------------------------------------------
-
-(
-Def_Result_QureyType,
-Def_Result_CampaignType,
-Def_Result_CampaignIndex,
-Def_Result_Order,
-Def_Result_FamilyLV,
-Def_Result_MemberFamilyLV,
-Def_Result_Max,
-) = range(0, 6 + 1)
-
-## 请求逻辑
-# @param query_Type 请求类型
-# @param query_ID 请求的玩家ID
-# @param packCMDList 发包命令 [ ]
-# @param tick 当前时间
-# @return resultDisc
-def DoLogic(query_Type, query_ID, packCMDList, tick):
- return
-
-#---------------------------------------------------------------------
-## 执行结果
-# @param curPlayer 发出请求的玩家
-# @param callFunName 功能名称
-# @param funResult 查询的结果
-# @param tick 当前时间
-# @return None
-# @remarks 函数详细说明.
-def DoResult(curPlayer, callFunName, funResult, tick):
-
- curPlayer.SetDict(ChConfig.Def_PlayerKey_QueryMixServerAwardState, 0)
-
- try:
- funResultList = eval(funResult)
- except:
- GameWorld.ErrLog("GY_Query_MixServerCampaignAward %s eval Error" % funResult)
- return
-
- GameWorld.DebugLog("GY_Query_MixServerCampaignAward ResultList=%s" % str(funResultList))
-
- if not funResultList:
- return
-
-# if len(funResultList) != Def_Result_Max:
-# return
-
- #[查询类型, 活动类型, 查询奖励索引, 名次, 家族等级, 家族职位]
-
- campaignType = funResultList[Def_Result_CampaignType] # 活动类型
- if campaignType in ShareDefine.DoOnMapServerMixCampaignTypeList:
- return
-
- queryType = funResultList[Def_Result_QureyType] # 查询类型
- if queryType == ShareDefine.Def_MSCGameServerQuery_QueryAward:
- order = funResultList[Def_Result_Order] # 名次
-
- #发送可否领奖结果,-1代表已经领过,0-未满足领取条件,>0-满足领取条件
- result = order
- recordData = order
-
- # 如果已领取,转化为2
- if result == -1:
- result = 2
- # 如果满足领取条件,转化为1
- elif result > 0:
- result = 1
- # 其余默认为不能领
- else:
- result = 0
-
- MixServerCampaign.Sync_MixServerCampaignAward(curPlayer, campaignType, result, recordData)
- return
- elif queryType == ShareDefine.Def_MSCGameServerQuery_GetAward:
- order = funResultList[Def_Result_Order] # 名次
- if order <= 0:
- #不能领奖
- GameWorld.DebugLog(" 不能领奖 campaignType=%s" % campaignType)
- return
- familyLV = funResultList[Def_Result_FamilyLV] # 家族等级
- memberFamilyLV = funResultList[Def_Result_MemberFamilyLV] # 家族职位
- campaignIndex = funResultList[Def_Result_CampaignIndex] # 查询奖励
- MixServerCampaign.DoGetMixServerCampaignAward(curPlayer, campaignType, campaignIndex, \
- order, familyLV, memberFamilyLV)
- elif queryType == ShareDefine.Def_MSCGameServerQuery_MailAward:
- oscTypeList = funResultList[1] # 邮件发送奖励类型列表
- queryResultList = funResultList[2] # 邮件发送奖励类型所需信息列表
- if len(oscTypeList) != len(queryResultList):
- GameWorld.ErrLog(" 合服活动发放邮件奖励数据错误! len(oscTypeList %s) != len(queryResultList %s)"
- % (oscTypeList, queryResultList), curPlayer.GetPlayerID())
- return
-
- for i, oscType in enumerate(oscTypeList):
- MixServerCampaign.DoSendMSCAwardMail(curPlayer, oscType, queryResultList[i])
- return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 22bbc91..ef34332 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -175,9 +175,6 @@
Def_Notify_WorldKey_CrossPKSeasonID = "CrossPKSeasonID" # 本服跨服PK当前赛季
Def_Notify_WorldKey_CrossPKSeasonState = "CrossPKSeasonState" # 本服跨服PK赛季状态 0-关闭,1-开启中
-Def_Notify_WorldKey_MixServerCampaignSaveData = "MixServerCampaignSaveData_%s" # 合服活动记录数据时机0-否 1-是
-Def_Notify_WorldKey_MixServerCampaignGetAward = "MixServerCampaignGetAward_%s" # 合服活动可领奖时机0-否 1-是
-
Def_Notify_WorldKey_GameWorldBossRebornCross = 'BossRebornCross_%s_%s' # 跨服世界boss重生, 参数为(zoneID, bossID)
Def_Notify_WorldKey_GameWorldBossReborn = 'BossReborn_%s' # 世界boss重生, 参数为(bossID)
Def_Notify_WorldKey_BossKilledCnt = 'BossKilledCnt_%s' # boss击杀次数, 参数为NPCID
@@ -214,8 +211,6 @@
Def_Notify_WorldKey_LoginAwardStartDate = 'LoginAwardStartDate_%s' # 登录领取奖励开始时间,参数为活动类型
Def_Notify_WorldKey_LoginAwardEndDate = 'LoginAwardEndDate_%s' # 登录领取奖励结束时间,参数为活动类型
-
-Def_Notify_WorldKey_ClearBillboardSign = 'ClearBillboardSign' # 清除排行榜标记
Def_Notify_WorldKey_RedPacketOutput = 'RedPacketOutput' # 红包产出信息
@@ -628,16 +623,11 @@
Def_BT_RechargeTeHuiLast, #充值特惠活动排行榜-上一期记录
Def_BT_RechargeTeHui, #充值特惠活动排行榜-当前期记录
- Def_BT_MixCampaign_PlayerBattle, #总战斗力(合服活动)
- Def_BT_MixCampaign_Recharge, #累计充值(合服活动)
- Def_BT_MixCampaign_WinFamilyMember, #获胜战盟成员,按职位排(合服活动)
- Def_BT_MixCampaign_FamilyKillBoss, #战盟击杀boss(合服活动)
-
Def_BT_CostTeHui, #消费特惠排行榜
Def_BT_CostTeHuiLast, #消费特惠排行榜上一期
Def_BT_Max, #排行榜最大类型
-) = range(0, 34 + 2)
+) = range(0, 30 + 2)
#职业对应战力排行榜类型
JobFightPowerBillboardDict = {
@@ -1158,9 +1148,6 @@
Def_Enter_Truck, #进入骠车
) = range(1, 3)
-Def_OSC_ValidDay = 6 # 开服活动有效活动天
-Def_MSC_ValidDay = 5 # 合服活动有效活动天
-
# 开服活动类型标识, 不可超过32
Def_Campaign_Type_List = (
Def_Campaign_Type_PlusLV, # 强化等级排行 1
@@ -1201,40 +1188,6 @@
Def_CampaignAwardState_None, # 无
Def_CampaignAwardState_Allow, # 允许领奖
Def_CampaignAwardState_Over, # 领奖结束
-) = range(3)
-
-#合服活动类型标识
-Def_MixCampaign_Type_List = (
- Def_MixCampaign_Type_PlayerBattle, # 总战斗力0
- Def_MixCampaign_Type_RechargeFirst, # 首充奖励1
- Def_MixCampaign_Type_RechargeRank, # 累计充值排行奖励2
- Def_MixCampaign_Type_RechargeCnt, # 累计充值保底奖励3
- Def_MixCampaign_Type_FamilyWar, # 冰封王座家族战获胜家族成员奖励4
- Def_MixCampaign_Type_FamilyWarEnter, # 冰封王座参与奖5
- Def_MixCampaign_Type_FamilyKillBoss, # 战盟击杀boss排行
- Def_MixCampaign_Type_PlayerKillBoss, # 个人击杀boss
-) = range(8)
-
-#合服活动类型对应的奖励排行榜
-Def_MixCampaign_Billboard_Dict = {
- Def_MixCampaign_Type_PlayerBattle:Def_BT_MixCampaign_PlayerBattle, # 总战斗力
- Def_MixCampaign_Type_RechargeRank:Def_BT_MixCampaign_Recharge, # 累计充值排行
- Def_MixCampaign_Type_FamilyWar:Def_BT_MixCampaign_WinFamilyMember, # 获胜战盟成员
- Def_MixCampaign_Type_FamilyKillBoss:Def_BT_MixCampaign_FamilyKillBoss, # 战盟击杀boss排行
- }
-
-# 直接在MapServer中处理的合服活动类型
-DoOnMapServerMixCampaignTypeList = [
- Def_MixCampaign_Type_RechargeFirst,
- Def_MixCampaign_Type_RechargeCnt,
- Def_MixCampaign_Type_FamilyWarEnter,
- Def_MixCampaign_Type_PlayerKillBoss,
- ]
-# 合服活动请求GameServer操作类型定义
-(
-Def_MSCGameServerQuery_QueryAward, # 查询
-Def_MSCGameServerQuery_GetAward, # 领奖
-Def_MSCGameServerQuery_MailAward, # 邮件发送奖励
) = range(3)
#队伍最大人数
--
Gitblit v1.8.0