From 5054ef8e509abc644c37bc349adbe448ed4f49a5 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 28 一月 2019 15:23:06 +0800
Subject: [PATCH] 5926 【后端】【1.5.100】新增节日巡礼
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py | 447 +++++++++++++++++++++++++++++++++++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py | 4
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 9 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 17 +
8 files changed, 488 insertions(+), 9 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py
index 77e34a0..6f89de4 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerNewFairyCeremony.py
@@ -51,7 +51,7 @@
billboardCnt = billBoard.GetCount()
for index in range(0, billboardCnt):
- ipyData = IpyGameDataPY.GetIpyGameData('UniquenessArrive', worldLvNum, index + 1)
+ ipyData = IpyGameDataPY.GetIpyGameData('NewUniquenessArrive', worldLvNum, index + 1)
if not ipyData:
break
objBillboard = billBoard.At(index)
@@ -63,7 +63,7 @@
continue
awardList = awardInfoDict[str(job)]
- PlayerCompensation.SendMailByKey('CeremonyRank', [playerID], awardList, [objBillboard.GetName1(), index + 1])
+ PlayerCompensation.SendMailByKey('NewCeremonyRank', [playerID], awardList, [objBillboard.GetName1(), index + 1])
GameWorld.DebugLog(' 活动结束 绝版降临给奖励 worldLvNum=%s, billboardCnt=%s' % (worldLvNum, billboardCnt))
return
@@ -71,7 +71,7 @@
def __GetFCWorldLVIndex(fcType):
#获取活动世界等级档
playerFCWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_NewFairyCeremony)
- fcWorldlvDict = IpyGameDataPY.GetFuncEvalCfg('CeremonyWorldLv', 1, {})
+ fcWorldlvDict = IpyGameDataPY.GetFuncEvalCfg('NewCeremonyWorldLv', 1, {})
if str(fcType) not in fcWorldlvDict:
return 0
worldLVIndex = 0
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index f9b54c8..bb4a99f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3291,8 +3291,8 @@
Def_PDictType_LVAward, # 等级奖励领取信息记录5
Def_PDictType_GoldGift, # 充值豪礼
Def_PDictType_OpenServerCampaign, # 开服活动
-Def_PDictType_WeekParty,
-Def_PDictType_Family_Contribution, # 战盟贡献度
+Def_PDictType_WeekParty, #周狂欢
+Def_PDictType_FeastWeekParty, # 节日巡礼
Def_PDictType_LoginAward, # 登录奖励运营活动
Def_PDictType_OfficialRank, # 官爵
Def_PDictType_Horse, # 坐骑
@@ -3757,11 +3757,18 @@
Def_PDict_FBRealHelpCount = "FBRealHelpCount_%s" #副本真实助战次数,仅针对真实进去打的副本,参数mapID
#周狂欢
-Def_PDict_WeekPartyID = "WeekPartyID" # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
+Def_PDict_WeekPartyID = "WeekPartyID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
Def_PDict_WeekPartyCurTimes = "WeekPartyCurTimes_%s_%s" #当前完成次数 参数(第X天,模板ID)
Def_PDict_WeekPartyGotTimes = "WeekPartyGotTimes_%s_%s" #当前已领次数 参数(第X天,模板ID)
Def_PDict_WeekPartyAwardRecord = "WeekPartyAwardRecord_%s" #积分领奖记录 参数(第X天)
Def_PDict_WeekPartyPoint = "WeekPartyPoint_%s" #当天积分 参数(第X天)
+
+#节日巡礼周狂欢
+Def_PDict_FeastWeekPartyID = "FeastWeekPartyID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
+Def_PDict_FeastWeekPartyCurTimes = "FeastWPCurTimes_%s_%s" #当前完成次数 参数(第X天,模板ID)
+Def_PDict_FeastWeekPartyGotTimes = "FeastWPGotTimes_%s_%s" #当前已领次数 参数(第X天,模板ID)
+Def_PDict_FeastWeekPartyAwardRecord = "FeastWPAward_%s" #积分领奖记录 参数(第X天)
+Def_PDict_FeastWeekPartyPoint = "FeastWPPoint_%s" #当天积分 参数(第X天)
#登录奖励运营活动
Def_PDict_LoginAwardID = "LoginAwardID" # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
@@ -5206,7 +5213,9 @@
Def_RewardType_ActLoginAwardAct, # 领取登录奖励活动奖励22
Def_RewardType_NewFairyCRecharge, # 新仙界盛典充值大礼23
Def_RewardType_NewFairyCParty, # 新仙界盛典全民来嗨24
-)= range(25)
+Def_RewardType_FeastWeekPartyAct, # 领取周狂欢活动奖励25
+Def_RewardType_FeastWeekPartyPoint, # 领取周狂欢积分奖励26
+)= range(27)
#boss复活相关活动定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index 933c0ee..56e109b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -1628,4 +1628,11 @@
#发送封包
SendEventPack("WeekPartyPoint", dataDict, curPlayer)
+ return
+def DR_FeastWeekPartyPoint(curPlayer, dayIndex, point):
+ ##节日巡礼
+ dataDict = {'PlayerID':curPlayer.GetPlayerID(),
+ 'AccID':curPlayer.GetAccID(), 'dayIndex':dayIndex, 'point':point}
+ #发送封包
+ SendEventPack("FeastWeekPartyPoint", dataDict, curPlayer)
return
\ No newline at end of file
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 605e94c..dcc2219 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -79,6 +79,7 @@
import GameLogic_FamilyWar
import PlayerBossReborn
import PlayerWeekParty
+import PlayerFeastWeekParty
import PlayerActLogin
import Operate_EquipWash
import PlayerTreasure
@@ -708,6 +709,8 @@
PlayerBossReborn.OnLogin(curPlayer)
# 周狂欢活动
PlayerWeekParty.OnLogin(curPlayer)
+ # 节日巡礼活动
+ PlayerFeastWeekParty.OnLogin(curPlayer)
# 登录奖励活动
PlayerActLogin.OnLogin(curPlayer)
# 仙界盛典活动
@@ -5353,6 +5356,12 @@
# 领取新仙界盛典全民来嗨
elif rewardType == ChConfig.Def_RewardType_NewFairyCParty:
PlayerNewFairyCeremony.GetFCPartyAward(curPlayer, dataEx)
+ # 领取节日巡礼活动奖励
+ elif rewardType == ChConfig.Def_RewardType_FeastWeekPartyAct:
+ PlayerWeekParty.GetWeekPartyActionAward(curPlayer, dataEx, dataExStr)
+ # 领取节日巡礼积分奖励
+ elif rewardType == ChConfig.Def_RewardType_FeastWeekPartyPoint:
+ PlayerFeastWeekParty.GetFeastWeekPartyPointAward(curPlayer, dataEx, dataExStr)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 884e9a0..aee1e7a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -80,6 +80,7 @@
import PlayerSpringSale
import PlayerBossReborn
import PlayerWeekParty
+import PlayerFeastWeekParty
import PlayerActLogin
import PlayerFlashGiftbag
import PlayerFairyCeremony
@@ -1312,6 +1313,10 @@
elif actionName == ShareDefine.OperationActionName_LoginAward:
PlayerActLogin.RefreshOperationAction_LoginAward()
+
+ elif actionName == ShareDefine.OperationActionName_FeastWeekParty:
+ PlayerFeastWeekParty.RefreshOperationAction_FeastWeekParty()
+
return
if msgValue.isdigit():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py
new file mode 100644
index 0000000..5b253f4
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py
@@ -0,0 +1,447 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------------------
+#
+##@package Player.PlayerFeastWeekParty
+#
+# @todo:节日巡礼
+# @author xdh
+# @date 2018-07-12 16:50
+# @version 1.0
+#
+#
+# 详细描述: 节日巡礼
+#
+#---------------------------------------------------------------------
+"""Version = 2018-07-12 16:50"""
+#---------------------------------------------------------------------
+
+import IPY_GameWorld
+import GameWorld
+import ChConfig
+import IpyGameDataPY
+import PlayerControl
+import ItemControler
+import ChPyNetSendPack
+import Operate_EquipStone
+import DataRecordPack
+import PlayerGodWeapon
+import NetPackCommon
+import ShareDefine
+import PyGameData
+import ItemCommon
+
+
+def OnLogin(curPlayer):
+ isReset = __CheckPlayerFeastWeekPartyAction(curPlayer)
+ if not isReset:
+ actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
+ # 活动中同步活动信息
+ SyncFeastWeekPartyInfo(curPlayer)
+ if actCostRebateInfo.get(ShareDefine.ActKey_State):
+ SyncFeastWeekPartyPlayerInfo(curPlayer)
+ return
+
+
+def RefreshOperationAction_FeastWeekParty():
+ playerManager = GameWorld.GetPlayerManager()
+ for i in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(i)
+ if curPlayer == None or not curPlayer.GetInitOK():
+ continue
+ __CheckPlayerFeastWeekPartyAction(curPlayer)
+ return
+
+
+def __CheckPlayerFeastWeekPartyAction(curPlayer):
+ ## 检查玩家节日巡礼活动数据信息
+ playerID = curPlayer.GetPlayerID()
+
+ actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
+ #FeastWeekPartyID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_ID, 0)
+ state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
+ passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
+ if state:
+ #每天都要触发
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False, True, False)
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False)
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, Operate_EquipStone.GetTotalStoneLV(curPlayer), False, True, False)
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, PlayerGodWeapon.GetGodWeaponTotalLV(curPlayer), False, True, False)
+ SyncFeastWeekPartyPlayerInfo(curPlayer)
+ playerFeastWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyID, 0, ChConfig.Def_PDictType_FeastWeekParty) # 玩家身上的活动ID
+ # 活动ID 相同的话不处理
+ if cfgID == playerFeastWeekPartyID:
+ #GameWorld.DebugLog("节日巡礼活动ID不变,不处理!", curPlayer.GetPlayerID())
+ return
+ CheckFeastWeekPartyActionCnt(curPlayer)
+ # 未领取的奖励邮件发放
+ if playerFeastWeekPartyID:
+ __SendFeastWeekPartyMail(curPlayer, playerFeastWeekPartyID)
+
+ if not cfgID:
+ GameWorld.DebugLog(' 节日巡礼活动重置!')
+ curPlayer.ClearNomalDict(ChConfig.Def_PDictType_FeastWeekParty)
+
+ GameWorld.DebugLog("节日巡礼变更! state=%s,cfgID=%s,playerFeastWeekPartyID=%s" % (state, cfgID, playerFeastWeekPartyID), playerID)
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyID, cfgID, ChConfig.Def_PDictType_FeastWeekParty)
+
+ SyncFeastWeekPartyInfo(curPlayer)
+ return True
+
+
+def __SendFeastWeekPartyMail(curPlayer, cfgID):
+ # 未领取的奖励邮件发放
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
+ if not actBossIpyData:
+ return
+ templateIDList = actBossIpyData.GetTemplateID()
+ if not templateIDList:
+ return
+
+ totalItemDict = {}
+ for day, tidList in enumerate(templateIDList):
+ for tid in tidList:
+ ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', tid)
+ if not ipyData:
+ continue
+ singleTimes = ipyData.GetSingleTimes()
+ curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyCurTimes % (day, tid), 0, ChConfig.Def_PDictType_FeastWeekParty)
+ gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyGotTimes % (day, tid), 0, ChConfig.Def_PDictType_FeastWeekParty)
+ canGotCnt = (curTimes - gotTimes) / singleTimes
+ if not canGotCnt:
+ continue
+ itemDict = __GetAwardItem(curPlayer, ipyData, canGotCnt)
+ GameWorld.AddDictValue(totalItemDict, itemDict)
+ #积分奖励
+ for day, awardDict in actBossIpyData.GetPointAward().items():
+ pointList = awardDict.keys()
+ pointList.sort()
+ for i, point in enumerate(pointList):
+ curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyPoint % day, 0, ChConfig.Def_PDictType_FeastWeekParty)
+ if curPoint < point:
+ continue
+ awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyAwardRecord % day, 0, ChConfig.Def_PDictType_FeastWeekParty)
+ if awardRecord & pow(2, i):
+ continue
+ itemList = awardDict[point]
+ for itemID, itemCnt, isBind in itemList:
+ totalItemDict[itemID] = totalItemDict.get(itemID, 0) + itemCnt
+ DataRecordPack.DR_FeastWeekPartyPoint(curPlayer, day, point)
+ if not totalItemDict:
+ return
+ totalItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
+ PlayerControl.SendMailByKey('SecondWeekReward2', [curPlayer.GetID()], totalItemList)
+ return
+
+
+def AddFeastWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isCompatible=False, isSync=True):
+ '''增加节日巡礼相关活动完成次数'''
+ #判断活动是否开启
+ if not addCnt:
+ return
+ actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
+ state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
+
+ if not state or not cfgID:
+ return
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
+ if not actBossIpyData:
+ return
+ templateIDList = actBossIpyData.GetTemplateID()
+ dayIndex = actFeastWeekPartyInfo.get(ShareDefine.ActKey_DayIndex, 0)
+ if dayIndex >= len(templateIDList):
+ return
+ if actionID in ChConfig.AheadFinishWPActList:
+ isFind = False
+ for day, dayTidList in enumerate(templateIDList[dayIndex:]):
+ findTid = 0
+ for tid in dayTidList:
+ if tid / 100 == actionID:
+ findTid = tid
+ break
+ if not findTid:
+ continue
+ ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', findTid)
+ if not ipyData:
+ continue
+ totalTimes = ipyData.GetTotalTimes()
+ if addCnt != totalTimes:
+ continue
+ dayIndex = day + dayIndex
+ isFind = True
+ break
+ if not isFind:
+ return
+
+ dayTidList = templateIDList[dayIndex]
+ findTid = 0
+ for tid in dayTidList:
+ if tid / 100 == actionID:
+ findTid = tid
+ break
+ if not findTid:
+ return
+ ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', findTid)
+ if not ipyData:
+ return
+ totalTimes = ipyData.GetTotalTimes()
+ curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_FeastWeekParty)
+ if isAdd:
+ addCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt)
+ if addCnt <= 0:
+ return
+ updTimes = curTimes + addCnt
+ else:
+ if not isCompatible and addCnt != totalTimes:
+ return
+ updTimes = min(addCnt, totalTimes)
+ realAddCnt = updTimes - curTimes
+ if realAddCnt <= 0:
+ return
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_FeastWeekParty)
+ #加积分
+ singleTimes = ipyData.GetSingleTimes()
+ addPoint = (curTimes % singleTimes + realAddCnt)/singleTimes* ipyData.GetPoint()
+ curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyPoint % dayIndex, 0, ChConfig.Def_PDictType_FeastWeekParty)
+ updPoint = curPoint + addPoint
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyPoint % dayIndex, updPoint, ChConfig.Def_PDictType_FeastWeekParty)
+ GameWorld.DebugLog(' 增加节日巡礼相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s,addPoint=%s' % (dayIndex, findTid, realAddCnt, addPoint))
+ if isSync:
+ SyncFeastWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
+ return True
+
+
+def CheckFeastWeekPartyActionCnt(curPlayer):
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for actionType in ChConfig.AheadFinishWPActList:
+ if actionType == ChConfig.Def_WPAct_Horse:
+ for i in xrange(ipyDataMgr.GetHorseCount()):
+ ipyData = ipyDataMgr.GetHorseByIndex(i)
+ index = ipyData.GetHorseID()
+ lv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Horser_LV % index, 0, ChConfig.Def_PDictType_Horse)
+ if lv:
+ AddFeastWeekPartyActionCnt(curPlayer, actionType, index, False)
+ elif actionType == ChConfig.Def_WPAct_Pet:
+ petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
+ for petDataIndex in range(petDataPack.GetCount()):
+ petItem = petDataPack.GetAt(petDataIndex)
+ if petItem.IsEmpty():
+ continue
+ petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
+ AddFeastWeekPartyActionCnt(curPlayer, actionType, petNPCID, False)
+ elif actionType == ChConfig.Def_WPAct_Dogz:
+ for i in xrange(ipyDataMgr.GetDogzCount()):
+ ipyData = ipyDataMgr.GetDogzByIndex(i)
+ if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
+ AddFeastWeekPartyActionCnt(curPlayer, actionType, ipyData.GetDogzID(), False)
+ elif actionType == ChConfig.Def_WPAct_Rune:
+ runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
+ for holeNum in xrange(1, runeHoleCnt + 1):
+ runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
+ if not runeData:
+ continue
+ runeItemID = ItemControler.GetRuneItemID(runeData)
+ itemData = GameWorld.GetGameData().GetItemByTypeID(runeItemID)
+ if not itemData:
+ continue
+ itemColor = itemData.GetItemColor()
+ AddFeastWeekPartyActionCnt(curPlayer, actionType, itemColor, False)
+ return
+
+def GetFeastWeekPartyActionAward(curPlayer, day, templateID):
+ '''领取节日巡礼活动奖励'''
+ templateID = GameWorld.ToIntDef(templateID, 0)
+ ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', templateID)
+ if not ipyData:
+ return
+ singleTimes = ipyData.GetSingleTimes()
+ curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyCurTimes % (day, templateID), 0, ChConfig.Def_PDictType_FeastWeekParty)
+ gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyGotTimes % (day, templateID), 0, ChConfig.Def_PDictType_FeastWeekParty)
+ if curTimes - gotTimes < singleTimes:
+ return
+
+ #给奖励
+ awardDict = __GetAwardItem(curPlayer, ipyData)
+ # 检查背包
+ needSpace = len(awardDict)
+ packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+ if needSpace > packSpace:
+ PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+ return
+ #更新次数 每次领奖只领一次
+ newGotTimes = gotTimes + singleTimes
+
+ #GameWorld.Log(' actionID=%s,curTimes=%s,gotTimes=%s,singleTimes=%s,newGotTimes=%s'%(actionID, curTimes, gotTimes,singleTimes, newGotTimes))
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyGotTimes % (day, templateID), newGotTimes, ChConfig.Def_PDictType_FeastWeekParty)
+ for itemID, itemCnt in awardDict.items():
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 1, [IPY_GameWorld.rptItem])
+ SyncFeastWeekPartyPlayerInfo(curPlayer, day, templateID)
+ return
+
+
+def GetFeastWeekPartyPointAward(curPlayer, day, getPoint):
+ ##领取节日巡礼积分奖励
+ getPoint = GameWorld.ToIntDef(getPoint, 0)
+ actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
+ state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
+ if not state or not cfgID:
+ return
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
+ if not actBossIpyData:
+ return
+ curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyPoint % day, 0, ChConfig.Def_PDictType_FeastWeekParty)
+ if curPoint < getPoint:
+ return
+ pointAwardDict = actBossIpyData.GetPointAward().get(day, {})
+ pointList = pointAwardDict.keys()
+ pointList.sort()
+ if getPoint not in pointList:
+ return
+ getIndex = pointList.index(getPoint)
+ awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyAwardRecord % day, 0, ChConfig.Def_PDictType_FeastWeekParty)
+ if awardRecord & pow(2, getIndex):
+ GameWorld.Log(' 领取节日巡礼积分奖励, 已领取 day=%s, getPoint=%s' % (day, getPoint))
+ return
+ itemList = pointAwardDict[getPoint]
+ needSpace = len(itemList)
+ packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+ if needSpace > packSpace:
+ PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+ return
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyAwardRecord % day, awardRecord | pow(2, getIndex), ChConfig.Def_PDictType_FeastWeekParty)
+ for itemID, itemCnt, isBind in itemList:
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
+ SyncFeastWeekPartyPlayerInfo(curPlayer, day)
+ DataRecordPack.DR_FeastWeekPartyPoint(curPlayer, day, getPoint)
+ return
+
+
+def __GetAwardItem(curPlayer, ipyData, times=1):
+ awardDict = {}
+ for itemID, itemCnt, isbind in ipyData.GetReward():
+ if not itemID or not itemCnt:
+ continue
+ awardDict[itemID] = awardDict.get(itemID, 0) + itemCnt * times
+
+ return awardDict
+
+
+def SyncFeastWeekPartyPlayerInfo(curPlayer, day=-1, templateID=-1):
+ #通知当前次数、已领次数
+ actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
+ state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
+ if not state or not cfgID:
+ return
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
+ if not actBossIpyData:
+ return
+ templateIDList = actBossIpyData.GetTemplateID()
+ if not templateIDList:
+ return
+ if day != -1:
+ if day >= len(templateIDList):
+ return
+ syncDayList = [day]
+ else:
+ syncDayList = range(len(templateIDList))
+
+ packData = ChPyNetSendPack.tagMCFeastWeekPartyPlayerInfo()
+ packData.DayInfoList = []
+ for cday in syncDayList:
+ tiemInfo = ChPyNetSendPack.tagMCFeastWeekPartyDayPlayerInfo()
+ tiemInfo.DayIndex = cday
+ tiemInfo.Point = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyPoint % cday, 0, ChConfig.Def_PDictType_FeastWeekParty)
+ tiemInfo.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyAwardRecord % cday, 0, ChConfig.Def_PDictType_FeastWeekParty)
+ tiemInfo.TaskList = []
+ for tID in templateIDList[cday]:
+ if templateID != -1 and tID != templateID:
+ continue
+ tipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', tID)
+ if not tipyData:
+ continue
+ taskInfo = ChPyNetSendPack.tagMCFeastWeekPartyTaskInfo()
+ taskInfo.TemplateID = tID
+ taskInfo.CurTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyCurTimes % (cday, tID), 0, ChConfig.Def_PDictType_FeastWeekParty)
+ taskInfo.GotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyGotTimes % (cday, tID), 0, ChConfig.Def_PDictType_FeastWeekParty)
+ tiemInfo.TaskList.append(taskInfo)
+ tiemInfo.ACount = len(tiemInfo.TaskList)
+ packData.DayInfoList.append(tiemInfo)
+ packData.Count = len(packData.DayInfoList)
+ NetPackCommon.SendFakePack(curPlayer, packData)
+ return
+
+
+def SyncFeastWeekPartyInfo(curPlayer):
+ actFeastWeekPartyInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWeekParty, {})
+ state = actFeastWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
+ if not cfgID:
+ return
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
+ if not actBossIpyData:
+ return
+ templateIDList = actBossIpyData.GetTemplateID()
+ if not templateIDList:
+ return
+ pointAwardDict = actBossIpyData.GetPointAward()
+ actInfo = ChPyNetSendPack.tagMCFeastWeekPartyInfo()
+ actInfo.Clear()
+ actInfo.StartDate = actBossIpyData.GetStartDate()
+ actInfo.EndtDate = actBossIpyData.GetEndDate()
+ actInfo.AdvanceMinutes = actBossIpyData.GetAdvanceMinutes()
+ actInfo.IsDayReset = actBossIpyData.GetIsDayReset()
+ actInfo.ResetType = actBossIpyData.GetResetType()
+ actInfo.LimitLV = actBossIpyData.GetLVLimit()
+ actInfo.DayInfoList = []
+ tidList = []
+ for day, dayActList in enumerate(templateIDList):
+ dayInfo = ChPyNetSendPack.tagMCFeastWeekPartyDayInfo()
+ dayInfo.TemplateList = dayActList
+ dayInfo.ActCnt = len(dayActList)
+ for tid in dayActList:
+ if tid not in tidList:
+ tidList.append(tid)
+ dayInfo.PItemInfo = []
+ for point, itemList in pointAwardDict.get(day, {}).items():
+ for itemID, itemCnt, isBind in itemList:
+ awardItem = ChPyNetSendPack.tagMCFeastWeekPartyItem()
+ awardItem.ItemID = itemID
+ awardItem.ItemCnt = itemCnt
+ awardItem.IsBind = isBind
+ awardItem.NeedPoint = point
+ dayInfo.PItemInfo.append(awardItem)
+ dayInfo.PCount = len(dayInfo.PItemInfo)
+ actInfo.DayInfoList.append(dayInfo)
+ actInfo.DayCnt = len(actInfo.DayInfoList)
+ actInfo.ActionInfo = []
+ for tid in tidList:
+ ipyData = IpyGameDataPY.GetIpyGameData('FeastWeekParty', tid)
+ if not ipyData:
+ GameWorld.ErrLog(' 节日巡礼模板表找不到模板%s' % tid)
+ continue
+ tInfo = ChPyNetSendPack.tagMCFeastWeekPartyAction()
+ tInfo.TemplateID = tid
+ tInfo.ActionType = ipyData.GetActionType()
+ tInfo.TotalTimes = ipyData.GetTotalTimes()
+ tInfo.SingleTimes = ipyData.GetSingleTimes()
+ tInfo.Point = ipyData.GetPoint()
+ tInfo.ItemInfo = []
+ for itemID, itemCnt, isBind in ipyData.GetReward():
+ awardItem = ChPyNetSendPack.tagMCFeastWeekPartyItem()
+ awardItem.ItemID = itemID
+ awardItem.ItemCnt = itemCnt
+ awardItem.IsBind = isBind
+ awardItem.NeedPoint = 0
+ tInfo.ItemInfo.append(awardItem)
+ tInfo.Count = len(tInfo.ItemInfo)
+ actInfo.ActionInfo.append(tInfo)
+ actInfo.TCount = len(actInfo.ActionInfo)
+ NetPackCommon.SendFakePack(curPlayer, actInfo)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py
index bb5f56f..c3bb551 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerNewFairyCeremony.py
@@ -108,7 +108,7 @@
GameWorld.ErrLog(' 邮件发放充值大礼奖励 CeremonyRecharge 未配置奖励 worldLvNum=%s' % worldLvNum)
else:
awardList = awardInfoDict[str(worldLvNum)]
- PlayerControl.SendMailByKey('CeremonyPayPack', [playerID], awardList, [playerName])
+ PlayerControl.SendMailByKey('NewCeremonyPayPack', [playerID], awardList, [playerName])
#全民来嗨
worldLvNum = __GetFCWorldLVIndex(curPlayer, Def_FC_Party)
curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NewFCPartyCurPoint)
@@ -134,7 +134,7 @@
awardList = awardInfoDict[str(job)]
partyAwardList += awardList
if partyAwardList:
- PlayerControl.SendMailByKey('CeremonyHaiPoint', [playerID], partyAwardList, [playerName])
+ PlayerControl.SendMailByKey('NewCeremonyHaiPoint', [playerID], partyAwardList, [playerName])
return
def __IsAtFCAction():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
index 100ed76..96d051c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
@@ -26,6 +26,7 @@
import ItemControler
import ChPyNetSendPack
import Operate_EquipStone
+import PlayerFeastWeekParty
import DataRecordPack
import PlayerGodWeapon
import NetPackCommon
@@ -140,6 +141,7 @@
def AddWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isCompatible=False, isSync=True):
'''增加周狂欢相关活动完成次数'''
+ PlayerFeastWeekParty.AddFeastWeekPartyActionCnt(curPlayer, actionID, addCnt, isAdd, isCompatible, isSync)
#判断活动是否开启
if not addCnt:
return
--
Gitblit v1.8.0