xdh
2019-01-28 8305e47be942c376430044332780e6e69a3c7a7f
6077 【后端】【1.5.200】新增一个仙界盛典(特殊版本)活动
22个文件已修改
2个文件已添加
536 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
@@ -582,6 +582,7 @@
            ShareDefine.Def_BT_Campaign_Recharge        : 100,           #累计充值(开服活动榜)
            ShareDefine.Def_BT_Campaign_PetLV           : 100,           #灵宠等级(开服活动榜)  
            ShareDefine.Def_BT_FCCostGold               : 5,             #消费排行榜(仙界盛典)
            ShareDefine.Def_BT_NewFCCostGold            : 5,             #消费排行榜(仙界盛典)
            ShareDefine.Def_BT_FBHelpBattle             : 100,           #助战次数榜
            ShareDefine.Def_BT_ZhuXianTower             : 100,           #诛仙塔榜
            ShareDefine.Def_BT_HighLadder               : 1000,          #玩家天梯竞技场排行
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -22732,7 +22732,7 @@
class  tagMCFeastWeekPartyPlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    DayInfoList = list()    #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
    data = None
    def __init__(self):
@@ -22746,7 +22746,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temDayInfoList = tagMCWeekPartyDayPlayerInfo()
            temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        return _pos
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -37,6 +37,7 @@
import PlayerFamilySWRH
import GameWorldBoss
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import GameWorldProcess
import ChPyNetSendPack
import NetPackCommon
@@ -76,7 +77,11 @@
        ipyData = operationActionDict[ShareDefine.OperationActionName_FairyCeremony][0]
        if ipyData:
            PlayerFairyCeremony.Sync_OperationAction_FairyCeremony(ipyData, curPlayer)
    # 新仙界盛典活动进行中
    if ShareDefine.OperationActionName_NewFairyCeremony in operationActionDict:
        ipyData = operationActionDict[ShareDefine.OperationActionName_NewFairyCeremony][0]
        if ipyData:
            PlayerNewFairyCeremony.Sync_OperationAction_NewFairyCeremony(ipyData, curPlayer)
    # 多倍修行点活动进行中
    if ShareDefine.OperationActionName_RealmPoint in operationActionDict:
        ipyData = operationActionDict[ShareDefine.OperationActionName_RealmPoint][0]
@@ -455,7 +460,9 @@
            elif actName == ShareDefine.OperationActionName_FairyCeremony:
                #重置仙界盛典
                PlayerFairyCeremony.ResetFairyCeremony()
            elif actName == ShareDefine.OperationActionName_NewFairyCeremony:
                #重置仙界盛典
                PlayerNewFairyCeremony.ResetNewFairyCeremony()
            
                
        if state >= 1 and actName in ShareDefine.NeedWorldLVOperationActNameList:
@@ -478,6 +485,12 @@
                PlayerFairyCeremony.Sync_OperationAction_FairyCeremony(ipyData)
            if preState != state and state == 0:
                PlayerFairyCeremony.OnFairyCeremonyEnd()
        elif actName == ShareDefine.OperationActionName_NewFairyCeremony:
            if isReload and ipyData:
                PlayerNewFairyCeremony.Sync_OperationAction_NewFairyCeremony(ipyData)
            if preState != state and state == 0:
                PlayerNewFairyCeremony.OnNewFairyCeremonyEnd()
        elif actName == ShareDefine.OperationActionName_RealmPoint:
            if isReload and ipyData:
                Sync_OperationAction_RealmPoint(ipyData)
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py
New file
@@ -0,0 +1,109 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
#
##@package Player.PlayerNewFairyCeremony
#
# @todo:新仙界盛典
# @author xdh
# @date 2018-07-23 16:50
# @version 1.0
#
#
# 详细描述: 新仙界盛典
#
#---------------------------------------------------------------------
"""Version = 2018-07-23 16:50"""
#---------------------------------------------------------------------
import ChPyNetSendPack
import GameWorld
import PlayerDBGSEvent
import ShareDefine
import NetPackCommon
import PlayerBillboard
import IpyGameDataPY
import PlayerCompensation
(
Def_FC_Recharge, #充值大礼
Def_FC_Fireworks, #烟花
Def_FC_Party, #全民来嗨
Def_FC_RechargeRank, #绝版降临
) = range(1, 5)
def ResetNewFairyCeremony():
    ##活动开始 重置排行榜信息
    # 清除排行榜
    PlayerBillboard.ClearBillboardByIndex(ShareDefine.Def_BT_NewFCCostGold)
    return
def OnNewFairyCeremonyEnd():
    #活动结束  绝版降临给奖励
    billBoard = GameWorld.GetBillboard().FindBillboard(ShareDefine.Def_BT_NewFCCostGold)
    if not billBoard:
        return
    worldLvNum = __GetFCWorldLVIndex(Def_FC_RechargeRank)
    billboardCnt = billBoard.GetCount()
    for index in range(0, billboardCnt):
        ipyData = IpyGameDataPY.GetIpyGameData('UniquenessArrive', worldLvNum, index + 1)
        if not ipyData:
            break
        objBillboard = billBoard.At(index)
        playerID = objBillboard.GetID()
        awardInfoDict = ipyData.GetAward()
        job = objBillboard.GetType2() % 10
        if str(job) not in awardInfoDict:
            GameWorld.ErrLog('    绝版降临给奖励 UniquenessArrive 未配置该职业 job=%s' % job, playerID)
            continue
        awardList = awardInfoDict[str(job)]
        PlayerCompensation.SendMailByKey('CeremonyRank', [playerID], awardList, [objBillboard.GetName1(), index + 1])
    GameWorld.DebugLog('    活动结束  绝版降临给奖励  worldLvNum=%s, billboardCnt=%s' % (worldLvNum, billboardCnt))
    return
def __GetFCWorldLVIndex(fcType):
    #获取活动世界等级档
    playerFCWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_NewFairyCeremony)
    fcWorldlvDict = IpyGameDataPY.GetFuncEvalCfg('CeremonyWorldLv', 1, {})
    if str(fcType) not in fcWorldlvDict:
        return 0
    worldLVIndex = 0
    worldlvList = fcWorldlvDict[str(fcType)]
    for index, lvinfo in enumerate(worldlvList):
        minlv, maxlv = lvinfo
        if minlv <= playerFCWorldLV <= maxlv:
            worldLVIndex = index
            break
    return worldLVIndex
def Sync_OperationAction_NewFairyCeremony(ipyData, curPlayer=None):
    ## 通知新仙界盛典活动信息
    if not ipyData:
        return
    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + 1
    NewFairyCeremonyInfo = ChPyNetSendPack.tagGCNewFairyCeremonyInfo()
    NewFairyCeremonyInfo.Clear()
    NewFairyCeremonyInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
    NewFairyCeremonyInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
    NewFairyCeremonyInfo.WorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_NewFairyCeremony)
    NewFairyCeremonyInfo.LimitLV = ipyData.GetLVLimit()
    NewFairyCeremonyInfo.ResetType = ipyData.GetResetType()
    if not curPlayer:
        # 全服广播在线玩家
        playerManager = GameWorld.GetPlayerManager()
        for i in xrange(playerManager.GetPlayerCount()):
            curPlayer = playerManager.GetPlayerByIndex(i)
            if curPlayer == None or not curPlayer.GetInitOK():
                continue
            NetPackCommon.SendFakePack(curPlayer, NewFairyCeremonyInfo)
    else:
        NetPackCommon.SendFakePack(curPlayer, NewFairyCeremonyInfo)
    return
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -225,6 +225,7 @@
OperationActionName_BossReborn = "ActBossReborn" # BOSS复活活动
OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
OperationActionName_FairyCeremony = "ActFairyCeremony" # 仙界盛典活动
OperationActionName_NewFairyCeremony = "ActNewFairyCeremony" # 仙界盛典活动
OperationActionName_RealmPoint = "ActRealmPoint" # 多倍修行点活动
OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
@@ -240,10 +241,11 @@
                           OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
                           OperationActionName_RealmPoint, OperationActionName_FlashSale,
                           OperationActionName_WishingWell, OperationActionName_TotalRecharge, 
                           OperationActionName_WeekParty, OperationActionName_LoginAward, ] \
                           OperationActionName_WeekParty, OperationActionName_LoginAward,
                           OperationActionName_NewFairyCeremony, ] \
                           + FeastOperationActionNameList
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell]
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, OperationActionName_NewFairyCeremony]
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
@@ -606,6 +608,7 @@
    Def_BT_Campaign_PetLV,                    #灵宠等级(开服活动榜)
    
    Def_BT_ZhuXianTower,                      #诛仙塔榜
    Def_BT_NewFCCostGold,                     #消费排行榜(新仙界盛典)
    
    Def_BT_HighLadder,                        #天梯竞技场排行
    Def_BT_HighLadder_Yester,                 #天梯竞技场昨日排行
@@ -621,7 +624,7 @@
    Def_BT_CostTeHuiLast,                     #消费特惠排行榜上一期
    
    Def_BT_Max,                               #排行榜最大类型
) = range(0, 33 + 2)
) = range(0, 34 + 2)
    
#职业对应战力排行榜类型
JobFightPowerBillboardDict = {
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3714,6 +3714,15 @@
Def_PDict_FCPartyAwardRecord = "FCPartyAwardRecord" #全民来嗨活动领奖记录
Def_PDict_FCCostGold = "FCCostGold"  # 绝版降临总累计消费仙玉
#新仙界盛典
Def_PDict_NewFairyCeremonyID = "NewFairyCeremonyID"  # 玩家身上的仙界盛典活动ID,唯一标识,取活动开始日期time值
Def_PDict_NewFCActionWorldLV = "NewFCActionWorldLV" #玩家身上的仙界盛典时的世界等级
Def_PDict_NewFCRechargeState = "NewFCRechargeState"  # 充值大礼状态 0-不可领 1-可领 2-已领取
Def_PDict_NewFCPartyCurCnt = "NewFCPartyCurCnt_%s" #全民来嗨活动当前完成次数 参数活动ID
Def_PDict_NewFCPartyCurPoint = "NewFCPartyCurPoint" #全民来嗨活动当前总点数
Def_PDict_NewFCPartyAwardRecord = "NewFCPartyAwardRecord" #全民来嗨活动领奖记录
Def_PDict_NewFCCostGold = "NewFCCostGold"  # 绝版降临总累计消费仙玉
#绑玉转盘
Def_PDict_BindJadeWheelCurCnt = "BindJadeWheelCurCnt"  # 今日已转次数
Def_PDict_BindJadeWheelHistoryCnt = "BindJadeWheelHistoryCnt"  # 历史已转次数
@@ -5195,7 +5204,9 @@
Def_RewardType_WeekPartyAct, # 领取周狂欢活动奖励20
Def_RewardType_WeekPartyPoint, # 领取周狂欢积分奖励21
Def_RewardType_ActLoginAwardAct, # 领取登录奖励活动奖励22
)= range(23)
Def_RewardType_NewFairyCRecharge, # 新仙界盛典充值大礼23
Def_RewardType_NewFairyCParty, # 新仙界盛典全民来嗨24
)= range(25)
#boss复活相关活动定义
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -22732,7 +22732,7 @@
class  tagMCFeastWeekPartyPlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    DayInfoList = list()    #(vector<tagMCWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
    data = None
    def __init__(self):
@@ -22746,7 +22746,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temDayInfoList = tagMCWeekPartyDayPlayerInfo()
            temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        return _pos
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
@@ -64,6 +64,7 @@
import PlayerRune
import GameFuncComm
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerSpringSale
import PyGameData
@@ -601,6 +602,9 @@
    SyncShoppingResult(curPlayer, itemIndex, clientBuyCount)
    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {}).values():
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
    return
def GetShopJobItem(job, itemID, jobItemList):
@@ -645,7 +649,8 @@
    #烟花狂欢
    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
        return not PlayerFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {}).values():
        return not PlayerNewFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
#    if itemIndex in dict(IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')):
#        return not CheckSuperGiftBuy(curPlayer, itemIndex)
    if shopNPCID == 16:#神秘限购
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
@@ -29,6 +29,7 @@
import PlayerActivity
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
#------------------------------------------------------------------------------ 
#获取金币祈愿奖励
@@ -165,6 +166,7 @@
    # 每日活动
    PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_Pray)
    PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Pray, 1)
    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Pray, 1)
    Sync_NotifyDataChange(curPlayer, [buyType])
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -59,6 +59,7 @@
import PlayerMagicWeapon
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerWeekParty
import PlayerHorse
import FBCommon
@@ -5241,6 +5242,7 @@
        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_TaskCRun, addCnt)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RunTask, addCnt)
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunTask, addCnt)
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_RunTask, addCnt)
    elif missionType == QuestCommon.Def_Mission_Type_RunFamily:
        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyRunMission, addCnt)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
@@ -32,6 +32,7 @@
import PlayerSuccess
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerWeekParty
import ItemControler
import GameFuncComm
@@ -186,6 +187,7 @@
        FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_BZZD)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_XJMJ, 1)
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1)
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_XJMJ, 1)
        FBCommon.UpdateFBEnterTick(curPlayer)
        gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_EnterLV, playerLV)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
@@ -25,6 +25,7 @@
import IpyGameDataPY
import GameWorldProcess
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import EventReport
import PyGameData
import ItemCommon
@@ -175,6 +176,7 @@
        PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Party)
        EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_FamilyParty, 0, ChConfig.CME_Log_Start)
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
    lineID = GameWorld.GetGameWorld().GetLineID()
    if lineID not in g_familyMapPlayerIDDict:
        g_familyMapPlayerIDDict[lineID] = []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GodArea.py
@@ -23,6 +23,7 @@
import PlayerControl
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerWeekParty
import EventReport
import time
@@ -144,6 +145,7 @@
        EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_GodArea, 0, ChConfig.CME_Log_Start)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_GodArea, 1)
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_GodArea, 1)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_GodArea, 1)
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodArea, 1)
    elif __IsAngerFull(curPlayer):
        #怒气已满,退出副本
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
@@ -23,6 +23,7 @@
import IpyGameDataPY
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import ChConfig
import ChPlayer
import EventReport
@@ -175,6 +176,7 @@
    EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_PersonalBoss, 0, ChConfig.CME_Log_Start)
    PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, 1)
    PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1)
    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1)
    
    FBCommon.ClearFBNPC()
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
@@ -36,6 +36,7 @@
import PlayerMagicWeapon
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerWeekParty
import EventReport
@@ -547,6 +548,7 @@
    PlayerMagicWeapon.SetMWPrivilegeData(curPlayer, ChConfig.MWPrivilege_SealDemonAddAttr, addCnt, True)
    PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FMT, addCnt)
    PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
    PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FMT, addCnt)
    return prizeItemList
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -52,6 +52,7 @@
import PlayerMagicWeapon
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerWeekParty
import FamilyRobBoss
import IpyGameDataPY
@@ -2163,6 +2164,7 @@
        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_WorldBOSS)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_WorldBOSS, 1)
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
        
    if mapID == ChConfig.Def_FBMapID_BossHome:
@@ -2173,6 +2175,7 @@
        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
    return
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -102,6 +102,7 @@
import PlayerActTotalRecharge
import PlayerSpringSale
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import CrossRealmPlayer
import ChNetSendPack
import FamilyRobBoss
@@ -711,6 +712,8 @@
    PlayerActLogin.OnLogin(curPlayer)
    # 仙界盛典活动
    PlayerFairyCeremony.OnLogin(curPlayer)
    # 新仙界盛典活动
    PlayerNewFairyCeremony.OnLogin(curPlayer)
    # 分支下载奖励记录通知
    SyncPackDownloadAward(curPlayer)
    # 登录触发功能开启(老号处理)
@@ -5344,7 +5347,12 @@
    # 领取登录奖励活动奖励
    elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct:
        PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr)
    # 领取新仙界盛典充值大礼
    elif rewardType == ChConfig.Def_RewardType_NewFairyCRecharge:
        PlayerNewFairyCeremony.GetFCRechargeAward(curPlayer)
    # 领取新仙界盛典全民来嗨
    elif rewardType == ChConfig.Def_RewardType_NewFairyCParty:
        PlayerNewFairyCeremony.GetFCPartyAward(curPlayer, dataEx)
    return
    
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -44,6 +44,7 @@
import ShareDefine
import PlayerFlashGiftbag
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerGoldGift
import PlayerActTotalRecharge
import OpenServerCampaign
@@ -286,6 +287,7 @@
    #---充值成功后逻辑---
    #仙界盛典-充值大礼
    PlayerFairyCeremony.OnFCRecharge(curPlayer)
    PlayerNewFairyCeremony.OnFCRecharge(curPlayer)
    PlayerGoldGift.DayChargeRedPackAward(curPlayer)
    #累积充值X元
    PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -84,6 +84,7 @@
import PlayerCostRebate
import GY_Query_CrossRealmReg
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerCrossRealmPK
import FunctionNPCCommon
import CrossRealmPlayer
@@ -2971,6 +2972,7 @@
    PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
    # 绝版降临
    PlayerFairyCeremony.AddFCCostGold(curPlayer, costType, price)
    PlayerNewFairyCeremony.AddFCCostGold(curPlayer, costType, price)
    # 消费VIP
#    if costVIPGold < 0:
#        costVIPGold = price
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -83,6 +83,7 @@
import PlayerActLogin
import PlayerFlashGiftbag
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerRefineStove
import PlayerFlashSale
import PlayerWishingWell
@@ -1296,7 +1297,10 @@
            
            elif actionName == ShareDefine.OperationActionName_FairyCeremony:
                PlayerFairyCeremony.RefreshOperationAction_FairyCeremony()
            elif actionName == ShareDefine.OperationActionName_NewFairyCeremony:
                PlayerNewFairyCeremony.RefreshOperationAction_NewFairyCeremony()
            elif actionName == ShareDefine.OperationActionName_FlashSale:
                PlayerFlashSale.RefreshflashSaleActionInfo()
                
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py
New file
@@ -0,0 +1,321 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
#
##@package Player.PlayerNewFairyCeremony
#
# @todo:新仙界盛典
# @author xdh
# @date 2018-07-23 16:50
# @version 1.0
#
#
# 详细描述: 新仙界盛典
#
#---------------------------------------------------------------------
"""Version = 2018-07-23 16:50"""
#---------------------------------------------------------------------
import IPY_GameWorld
import GameWorld
import ChConfig
import IpyGameDataPY
import PlayerControl
import ItemControler
import ChPyNetSendPack
import NetPackCommon
import ShareDefine
import PyGameData
import ItemCommon
import PlayerBillboard
(
Def_FC_Recharge, #充值大礼
Def_FC_Fireworks, #烟花
Def_FC_Party, #全民来嗨
Def_FC_RechargeRank, #绝版降临
) = range(1, 5)
def OnLogin(curPlayer):
    isReset = __CheckPlayerNewFairyCeremonyAction(curPlayer)
    if not isReset:
        actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_NewFairyCeremony, {})
        # 活动中同步活动信息
        if actCostRebateInfo.get(ShareDefine.ActKey_State):
            SyncFCRechargeInfo(curPlayer)
            SyncFCPartyInfo(curPlayer)
    return
def RefreshOperationAction_NewFairyCeremony():
    playerManager = GameWorld.GetPlayerManager()
    for i in xrange(playerManager.GetPlayerCount()):
        curPlayer = playerManager.GetPlayerByIndex(i)
        if curPlayer == None or not curPlayer.GetInitOK():
            continue
        __CheckPlayerNewFairyCeremonyAction(curPlayer)
    return
def __CheckPlayerNewFairyCeremonyAction(curPlayer):
    ## 检查玩家新仙界盛典活动数据信息
    playerID = curPlayer.GetPlayerID()
    actNewFairyCeremonyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_NewFairyCeremony, {})
    NewFairyCeremonyID = actNewFairyCeremonyInfo.get(ShareDefine.ActKey_ID, 0)
    state = actNewFairyCeremonyInfo.get(ShareDefine.ActKey_State, 0)
    playerNewFairyCeremonyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFairyCeremonyID) # 玩家身上的活动ID
    # 活动ID 相同的话不处理
    if NewFairyCeremonyID == playerNewFairyCeremonyID:
        #GameWorld.DebugLog("新仙界盛典活动ID不变,不处理!", curPlayer.GetPlayerID())
        return
    actWorldLV = actNewFairyCeremonyInfo.get(ShareDefine.ActKey_WorldLV, 0)
    playerFCWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCActionWorldLV)
    GameWorld.DebugLog("新仙界盛典重置! NewFairyCeremonyID=%s,playerCostRebateID=%s,state=%s,ActWorldLV=%s,playerFCWorldLV=%s"
                       % (NewFairyCeremonyID, playerNewFairyCeremonyID, state, actWorldLV, playerFCWorldLV), playerID)
    # 未领取的奖励邮件发放
    __SendNewFairyCeremonyMail(curPlayer, playerFCWorldLV)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFairyCeremonyID, NewFairyCeremonyID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCActionWorldLV, actWorldLV)
    #重置充值大礼记录
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCRechargeState, 0)
    SyncFCRechargeInfo(curPlayer)
    #重置全民来嗨
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyCurPoint, 0)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyAwardRecord, 0)
    for actid in ChConfig.PeoplePartyActIDList:
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyCurCnt % actid, 0)
    SyncFCPartyInfo(curPlayer)
    #重置消费
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCCostGold, 0)
    return True
def __SendNewFairyCeremonyMail(curPlayer, playerFCWorldLV):
    # 未领取的奖励邮件发放
    #充值大礼
    playerID = curPlayer.GetID()
    playerName = curPlayer.GetName()
    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCRechargeState) == 1:
        worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Recharge)
        awardInfoDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyRecharge', 1, {})
        if str(worldLvNum) not in awardInfoDict:
            GameWorld.ErrLog('    邮件发放充值大礼奖励 CeremonyRecharge 未配置奖励 worldLvNum=%s' % worldLvNum)
        else:
            awardList = awardInfoDict[str(worldLvNum)]
            PlayerControl.SendMailByKey('CeremonyPayPack', [playerID], awardList, [playerName])
    #全民来嗨
    worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Party)
    curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyAwardRecord)
    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('NewAllPeoplePartyAward', {'WorldLvNum':worldLvNum}, True)
    if not ipyDataList:
        GameWorld.ErrLog('    邮件发放全民来嗨奖励 AllPeoplePartyAward 未配置世界等级档 WorldLvNum=%s' % worldLvNum)
        return
    partyAwardList = []
    for ipyData in ipyDataList:
        index = ipyData.GetIndex()
        if awardRecord & pow(2, index):
            continue
        needPoint = ipyData.GetNeedPoint()
        if curPoint < needPoint:
            continue
        awardInfoDict = ipyData.GetAward()
        job = curPlayer.GetJob()
        if str(job) not in awardInfoDict:
            GameWorld.ErrLog('    邮件发放全民来嗨奖励 AllPeoplePartyAward 未配置职业奖励 job=%s' % job)
            continue
        awardList = awardInfoDict[str(job)]
        partyAwardList += awardList
    if partyAwardList:
        PlayerControl.SendMailByKey('CeremonyHaiPoint', [playerID], partyAwardList, [playerName])
    return
def __IsAtFCAction():
    ##是否在新仙界盛典活动中
    actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_NewFairyCeremony, {})
    state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
    return state == 1
def __GetFCWorldLVIndex(curPlayer, fcType):
    #获取活动世界等级档
    playerFCWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCActionWorldLV)
    fcWorldlvDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyWorldLv', 1, {})
    if str(fcType) not in fcWorldlvDict:
        return 0
    worldLVIndex = 0
    worldlvList = fcWorldlvDict[str(fcType)]
    for index, lvinfo in enumerate(worldlvList):
        minlv, maxlv = lvinfo
        if minlv <= playerFCWorldLV <= maxlv:
            worldLVIndex = index
            break
    return worldLVIndex
#################充值大礼##############################
def OnFCRecharge(curPlayer):
    if not __IsAtFCAction():
        return
    curState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCRechargeState)
    if curState != 0:
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCRechargeState, 1)
    SyncFCRechargeInfo(curPlayer)
    return
def GetFCRechargeAward(curPlayer):
    ## 领取充值大礼奖励
    curState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCRechargeState)
    if curState != 1:
        return
    worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Recharge)
    awardInfoDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyRecharge', 1, {})
    if str(worldLvNum) not in awardInfoDict:
        GameWorld.ErrLog('    领取充值大礼奖励 CeremonyRecharge 未配置奖励 worldLvNum=%s' % worldLvNum)
        return
    awardList = awardInfoDict[str(worldLvNum)]
    # 检查背包
    needSpace = len(awardList)
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
    if needSpace > packSpace:
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCRechargeState, 2)
    for itemID, itemCnt, isBind in awardList:
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
    SyncFCRechargeInfo(curPlayer)
    PlayerControl.WorldNotify(0, 'CeremonyRecharge', [curPlayer.GetName()])
    return
def SyncFCRechargeInfo(curPlayer):
    ## 通知充值大礼活动状态
    packData = ChPyNetSendPack.tagMCNewXJSDRecharge()
    packData.State = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCRechargeState)
    NetPackCommon.SendFakePack(curPlayer, packData)
    return
#################全民来嗨##############################
def AddFCPartyActionCnt(curPlayer, actionID, addCnt=1):
    ##增加全民来嗨完成次数
    if not __IsAtFCAction():
        return
    ipyData = IpyGameDataPY.GetIpyGameData('NewAllPeopleParty', actionID)
    if not ipyData:
        return
    maxCnt = ipyData.GetTotalTimes()
    curCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurCnt % actionID)
    if curCnt >= maxCnt:
        return
    newCnt = min(maxCnt, curCnt + addCnt)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyCurCnt % actionID, newCnt)
    singlePoint = ipyData.GetAddPoint()
    addPoint = (newCnt - curCnt) * singlePoint
    curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyCurPoint, curPoint + addPoint)
    SyncFCPartyInfo(curPlayer, [actionID])
    return
def GetFCPartyAward(curPlayer, index):
    ## 全民来嗨领奖
    worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Party)
    ipyData = IpyGameDataPY.GetIpyGameData('NewAllPeoplePartyAward', worldLvNum, index)
    if not ipyData:
        return
    curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
    if curPoint < ipyData.GetNeedPoint():
        GameWorld.DebugLog('    全民来嗨领奖, 点数不足%s,  worldLvNum=%s, index=%s' % (ipyData.GetNeedPoint(), worldLvNum, index), curPlayer.GetID())
        return
    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyAwardRecord)
    awardMark = pow(2, index)
    if awardRecord & awardMark:
        GameWorld.DebugLog('    全民来嗨领奖, 已领奖,  worldLvNum=%s, index=%s' % (worldLvNum, index), curPlayer.GetID())
        return
    awardInfoDict = ipyData.GetAward()
    job = curPlayer.GetJob()
    if str(job) not in awardInfoDict:
        return
    awardList = awardInfoDict[str(job)]
    # 检查背包
    needSpace = len(awardList)
    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
    if needSpace > packSpace:
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
        return
    #更新记录
    awardRecord |= awardMark
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCPartyAwardRecord, awardRecord)
    for itemID, itemCnt, isBind in awardList:
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
    #֪ͨ
    SyncFCPartyInfo(curPlayer, isGetAward=True)
    return
def SyncFCPartyInfo(curPlayer, actIDList=[], isGetAward=False):
    ##通知全民来嗨信息
    packData = ChPyNetSendPack.tagMCNewAllPeoplePartyInfo()
    packData.Clear()
    packData.CurPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
    packData.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyAwardRecord)
    if not isGetAward:
        packData.BuyCountList = []
        for actID in ChConfig.PeoplePartyActIDList:
            if actIDList and actID not in actIDList:
                continue
            finishInfo = ChPyNetSendPack.tagMCNewAllPeoplePartyCount()
            finishInfo.ActID = actID
            finishInfo.CurTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurCnt % actID)
            packData.BuyCountList.append(finishInfo)
        packData.Count = len(packData.BuyCountList)
    NetPackCommon.SendFakePack(curPlayer, packData)
    return
#################绝版降临##############################
def AddFCCostGold(curPlayer, costType, costGold):
    if costGold <= 0:
        return
    if costType in ChConfig.CostRebate_DisableType:
        #GameWorld.DebugLog("不计入绝版降临消费的消费类型!costType=%s" % costType, curPlayer.GetPlayerID())
        return
    if not __IsAtFCAction():
        return
    curCostGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCCostGold)
    updCostGold = curCostGold + costGold
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NewFCCostGold, updCostGold)
    if updCostGold < IpyGameDataPY.GetFuncCfg('NewCeremonyRankLimit'):
        return
    #更新排行榜
    PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_NewFCCostGold, updCostGold)
    GameWorld.DebugLog("玩家绝版降临消费活动: curCostGold=%s,costGold=%s,updCostGold=%s"
                       % (curCostGold, costGold, updCostGold), curPlayer.GetPlayerID())
    return
#################烟花狂欢##############################
def IsCanBuyFireworks(curPlayer, itemIndex):
    ##当前是否可以买烟花
    if not __IsAtFCAction():
        GameWorld.Log('    烟花狂欢买烟花 活动未开启, 无法购买')
        return False
    fireworksDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {})
    worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Fireworks)
    canBuyID = fireworksDict.get(str(worldLvNum), 0)
    if canBuyID != itemIndex:
        GameWorld.Log('    烟花狂欢买烟花 当前可以买烟花为 %s, 无法购买 %s,worldLvNum=%s'%(canBuyID, itemIndex,worldLvNum), curPlayer.GetID())
        return False
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -30,6 +30,7 @@
import EventShell
import PlayerActivity
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerVip
import copy
@@ -225,6 +226,7 @@
    costItemCnt = sum(needMaterialDict.values())
    PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_RefineStove, costItemCnt)
    PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, 1)
    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, 1)
    return 
def __GetAlchemyUpItemID(itemID, alchemyLV, alchemyUpCfg):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -28,6 +28,7 @@
import NetPackCommon
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import ItemCommon
import ChConfig
@@ -326,9 +327,11 @@
    
    if treasureType == 2:
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount)
    else:
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount)
    # 给物品
    mailItemList = []
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -225,6 +225,7 @@
OperationActionName_BossReborn = "ActBossReborn" # BOSS复活活动
OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
OperationActionName_FairyCeremony = "ActFairyCeremony" # 仙界盛典活动
OperationActionName_NewFairyCeremony = "ActNewFairyCeremony" # 仙界盛典活动
OperationActionName_RealmPoint = "ActRealmPoint" # 多倍修行点活动
OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
@@ -240,10 +241,11 @@
                           OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
                           OperationActionName_RealmPoint, OperationActionName_FlashSale,
                           OperationActionName_WishingWell, OperationActionName_TotalRecharge, 
                           OperationActionName_WeekParty, OperationActionName_LoginAward, ] \
                           OperationActionName_WeekParty, OperationActionName_LoginAward,
                           OperationActionName_NewFairyCeremony, ] \
                           + FeastOperationActionNameList
#需要记录开启活动时的世界等级的运营活动
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell]
NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, OperationActionName_NewFairyCeremony]
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
@@ -606,6 +608,7 @@
    Def_BT_Campaign_PetLV,                    #灵宠等级(开服活动榜)
    
    Def_BT_ZhuXianTower,                      #诛仙塔榜
    Def_BT_NewFCCostGold,                     #消费排行榜(新仙界盛典)
    
    Def_BT_HighLadder,                        #天梯竞技场排行
    Def_BT_HighLadder_Yester,                 #天梯竞技场昨日排行
@@ -621,7 +624,7 @@
    Def_BT_CostTeHuiLast,                     #消费特惠排行榜上一期
    
    Def_BT_Max,                               #排行榜最大类型
) = range(0, 33 + 2)
) = range(0, 34 + 2)
    
#职业对应战力排行榜类型
JobFightPowerBillboardDict = {