From ffa8a645ed6a92a3c723bbf5c7f1eb4d5425c826 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 17 十一月 2021 15:15:34 +0800
Subject: [PATCH] 9341 【BT5】【主干】【后端】情缘系统(优化情缘系统)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py | 136 +++++++++++++++++++--------------------------
1 files changed, 57 insertions(+), 79 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py
index 776a11a..68531db 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py
@@ -41,6 +41,7 @@
# 活动中同步活动信息
SyncFeastWeekPartyInfo(curPlayer)
if actCostRebateInfo.get(ShareDefine.ActKey_State):
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, False)
SyncFeastWeekPartyPlayerInfo(curPlayer)
return
@@ -60,36 +61,32 @@
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)
+ actID = actFeastWeekPartyInfo.get(ShareDefine.ActKey_ID, 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
+ playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyActID, 0, ChConfig.Def_PDictType_FeastWeekParty) # 玩家身上的活动ID
+ playerFeastWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWeekPartyID, 0, ChConfig.Def_PDictType_FeastWeekParty) # 玩家身上的活动配置ID
# 活动ID 相同的话不处理
- if cfgID == playerFeastWeekPartyID:
- #GameWorld.DebugLog("节日巡礼活动ID不变,不处理!", curPlayer.GetPlayerID())
+ if actID == playerActID:
+ GameWorld.DebugLog("节日巡礼活动ID不变,不处理!playerActID=%s" % playerActID, curPlayer.GetPlayerID())
+ if state:
+ CheckFeastWeekPartyActionCnt(curPlayer, True)
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)
+ GameWorld.DebugLog(' 节日巡礼活动重置!')
+ curPlayer.ClearNomalDict(ChConfig.Def_PDictType_FeastWeekParty)
+
+ GameWorld.DebugLog("节日巡礼变更! state=%s,actID=%s,cfgID=%s,playerFeastWeekPartyID=%s" % (state, actID, cfgID, playerFeastWeekPartyID), playerID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyActID, actID, ChConfig.Def_PDictType_FeastWeekParty)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWeekPartyID, cfgID, ChConfig.Def_PDictType_FeastWeekParty)
+ if state:
+ CheckFeastWeekPartyActionCnt(curPlayer, False)
+ SyncFeastWeekPartyInfo(curPlayer)
+ SyncFeastWeekPartyPlayerInfo(curPlayer)
+
return True
@@ -149,8 +146,9 @@
if not cfgID:
return
- if not state and actionID not in ChConfig.AheadFinishWPActList:
+ if not state:
return
+
actBossIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWeekParty", cfgID)
if not actBossIpyData:
return
@@ -158,27 +156,6 @@
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
@@ -217,42 +194,43 @@
SyncFeastWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
return True
-
-def CheckFeastWeekPartyActionCnt(curPlayer):
+def CheckFeastWeekPartyActionCnt(curPlayer, isSync):
+ ## 同步活动状态时需要触发的
+
+ # 灵宠激活
+ 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, ChConfig.Def_WPAct_Pet, petNPCID, False, isSync=isSync)
+
+ # 出战神兽
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)
+ for i in xrange(ipyDataMgr.GetDogzCount()):
+ ipyData = ipyDataMgr.GetDogzByIndex(i)
+ if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Dogz, ipyData.GetDogzID(), False, isSync=isSync)
+
+ # 穿戴某品质符印
+ 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, ChConfig.Def_WPAct_Rune, itemColor, False, isSync=isSync)
+
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, isSync)
+ passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False, True, isSync)
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, Operate_EquipStone.GetTotalStoneLV(curPlayer), False, True, isSync)
+ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, PlayerGodWeapon.GetGodWeaponTotalLV(curPlayer), False, True, isSync)
return
def GetFeastWeekPartyActionAward(curPlayer, day, templateID):
--
Gitblit v1.8.0