From 3f862208516829ee806168cbb633bc9221f0cf6a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 11 十月 2025 20:30:10 +0800
Subject: [PATCH] 271 【内政】古宝系统-服务端
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py | 100 +++++++++++++++++++++----------------------------
1 files changed, 43 insertions(+), 57 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py
index 516bebd..15f5a30 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py
@@ -16,48 +16,39 @@
#-------------------------------------------------------------------------------
import GameWorld
-import ShareDefine
import NetPackCommon
import IpyGameDataPY
import PlayerControl
import ChPyNetSendPack
-import PlayerGatherTheSoul
-import PlayerActHorsePetTrain
-import PlayerActGubao
import ItemControler
import IPY_GameWorld
import PlayerGubao
import PlayerCoin
import ChConfig
+import ObjPool
import time
# 战令类型
ZhanlingTypeList = (
-ZhanlingType_LV, # 等级 1
-ZhanlingType_Realm, # 境界 2
-ZhanlingType_SkyTower, # 天星塔 3
-ZhanlingType_GubaoStar, # 古宝总星数 4
-ZhanlingType_Login, # 登录 5
-ZhanlingType_GatherTheSoulLV, # 聚魂 6
-ZhanlingType_HorsePetTrain, # 骑宠养成 7
-ZhanlingType_GubaoTrain, # 古宝养成 8
-ZhanlingType_Xianyuan, # 仙缘 9
-ZhanlingType_Huanjingge, # 幻境阁 10
-ZhanlingType_Lianqi, # 炼器 11
-) = range(1, 1 + 11)
+ZhanlingType_LV, # 主公等级 1
+ZhanlingType_TreeLV, # 祝福等级 2
+ZhanlingType_MainLevel, # 主线关卡 3
+ZhanlingType_GubaoCnt, # 古宝数量 4
+ZhanlingType_ArenaCnt, # 演武场次数 5
+) = range(1, 1 + 5)
# 用Value1记录进度的战令类型
-ZhanlingValue1TypeList = [ZhanlingType_Huanjingge, ZhanlingType_Lianqi]
+ZhanlingValue1TypeList = [ZhanlingType_ArenaCnt]
def OnPlayerLogin(curPlayer):
for zhanlingType in ZhanlingTypeList:
- CheckZhanlingAllFinish(curPlayer, zhanlingType) # 因为是后面加的功能,为了处理线上玩家及兼容之后可能修改配置等,故上线默认检查一次
- if zhanlingType == ZhanlingType_Login:
- value1 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
- if not value1:
- firstLoginTime = int(time.time())
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, firstLoginTime)
- GameWorld.DebugLog("设置登录战令首次登录时间: %s" % firstLoginTime, curPlayer.GetPlayerID())
+ CheckZhanlingAllFinish(curPlayer, zhanlingType) # 为了处理线上玩家及兼容之后可能修改配置等,故上线默认检查一次
+ #if zhanlingType == ZhanlingType_Login:
+ # value1 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
+ # if not value1:
+ # firstLoginTime = int(time.time())
+ # PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, firstLoginTime)
+ # GameWorld.DebugLog("设置登录战令首次登录时间: %s" % firstLoginTime, curPlayer.GetPlayerID())
SyncZhanlingInfo(curPlayer, zhanlingType)
return
@@ -122,16 +113,13 @@
updStateH = GameWorld.SetBitValue(stateH, zhanlingType, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingState, updState)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingStateH, updStateH)
- if zhanlingType == ZhanlingType_Xianyuan:
- backValue = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore)
- PlayerControl.SetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore, 0)
- elif zhanlingType in ZhanlingValue1TypeList:
+ if zhanlingType in ZhanlingValue1TypeList:
backValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, 0)
- elif zhanlingType == ZhanlingType_Login:
- firstLoginTime = int(time.time())
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, firstLoginTime)
- GameWorld.DebugLog("重置登录战令首次登录时间: %s" % firstLoginTime, curPlayer.GetPlayerID())
+ #elif zhanlingType == ZhanlingType_Login:
+ # firstLoginTime = int(time.time())
+ # PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, firstLoginTime)
+ # GameWorld.DebugLog("重置登录战令首次登录时间: %s" % firstLoginTime, curPlayer.GetPlayerID())
GameWorld.Log("重置战令: zhanlingType=%s,backValue=%s,state=(%s to %s) stateH=(%s to %s)"
% (zhanlingType, backValue, state, updState, stateH, updStateH), curPlayer.GetPlayerID())
@@ -174,19 +162,22 @@
if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree, rewardIndex, True, [zhanlingType]):
rewardItemList = ipyData.GetFreeRewardItemList()
- for itemID, itemCount, _ in rewardItemList:
+ for itemInfo in rewardItemList:
+ itemID, itemCount = itemInfo[:2]
ungetItemDict[itemID] = ungetItemDict.get(itemID, 0) + itemCount
GameWorld.DebugLog(" 战令补发免费奖励: rewardIndex=%s,needValue=%s,%s, %s" % (rewardIndex, needValue, rewardItemList, ungetItemDict), playerID)
if activeState and not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingReward, rewardIndex, True, [zhanlingType]):
rewardItemList = ipyData.GetZLRewardItemList()
- for itemID, itemCount, _ in rewardItemList:
+ for itemInfo in rewardItemList:
+ itemID, itemCount = itemInfo[:2]
ungetItemDict[itemID] = ungetItemDict.get(itemID, 0) + itemCount
GameWorld.DebugLog(" 战令补发普通奖励: rewardIndex=%s,needValue=%s,%s, %s" % (rewardIndex, needValue, rewardItemList, ungetItemDict), playerID)
if activeStateH and not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardH, rewardIndex, True, [zhanlingType]):
rewardItemList = ipyData.GetZLRewardItemListH()
- for itemID, itemCount, _ in rewardItemList:
+ for itemInfo in rewardItemList:
+ itemID, itemCount = itemInfo[:2]
ungetItemDict[itemID] = ungetItemDict.get(itemID, 0) + itemCount
GameWorld.DebugLog(" 战令补发高级奖励: rewardIndex=%s,needValue=%s,%s, %s" % (rewardIndex, needValue, rewardItemList, ungetItemDict), playerID)
@@ -233,25 +224,18 @@
curValue = 0
if zhanlingType == ZhanlingType_LV:
curValue = curPlayer.GetLV()
- elif zhanlingType == ZhanlingType_Realm:
- curValue = curPlayer.GetOfficialRank()
- elif zhanlingType == ZhanlingType_SkyTower:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_SkyTowerFloor)
- elif zhanlingType == ZhanlingType_GubaoStar:
- _, curValue = PlayerGubao.GetGubaoTotalLVStar(curPlayer)
- elif zhanlingType == ZhanlingType_Login:
- firstLoginTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
- if not firstLoginTime:
- return
- curValue = GameWorld.GetDiff_Day(int(time.time()), firstLoginTime) + 1
- elif zhanlingType == ZhanlingType_GatherTheSoulLV:
- curValue = PlayerGatherTheSoul.GetGatherTheSoulTotalLV(curPlayer)
- elif zhanlingType == ZhanlingType_HorsePetTrain:
- curValue = PlayerActHorsePetTrain.GetActHorsePetTrainScore(curPlayer)
- elif zhanlingType == ZhanlingType_GubaoTrain:
- curValue = PlayerActGubao.GetActGubaoTrainScore(curPlayer)
- elif zhanlingType == ZhanlingType_Xianyuan:
- curValue = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore)
+ elif zhanlingType == ZhanlingType_TreeLV:
+ curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLV)
+ elif zhanlingType == ZhanlingType_MainLevel:
+ lvID = needValue
+ curValue = lvID if PlayerControl.IsMainLevelPass(curPlayer, lvID) else 0
+ elif zhanlingType == ZhanlingType_GubaoCnt:
+ curValue = PlayerGubao.GetGubaoTotalCnt(curPlayer, needValue)
+ #elif zhanlingType == ZhanlingType_Login:
+ # firstLoginTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
+ # if not firstLoginTime:
+ # return
+ # curValue = GameWorld.GetDiff_Day(int(time.time()), firstLoginTime) + 1
elif zhanlingType in ZhanlingValue1TypeList:
curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
else:
@@ -297,7 +281,9 @@
GameWorld.DebugLog("领取战令奖励: zhanlingType=%s,needValue=%s,rewardType=%s,itemList=%s" % (zhanlingType, needValue, rewardType, itemList), playerID)
# 给物品
- for itemID, itemCount, isAuctionItem in itemList:
+ isAuctionItem = 0
+ for itemInfo in itemList:
+ itemID, itemCount = itemInfo[:2]
ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem])
ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "Zhanling")
@@ -345,7 +331,7 @@
rewardList = []
for ipyData in ipyDataList:
rewardIndex = ipyData.GetRewardIndex()
- reward = ChPyNetSendPack.tagMCZhanling()
+ reward = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCZhanling)
reward.Clear()
reward.NeedValue = ipyData.GetNeedValue()
reward.FreeRewardState = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree, rewardIndex, True, [zhanlingType]) else 0
@@ -353,7 +339,7 @@
reward.ZLRewardStateH = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardH, rewardIndex, True, [zhanlingType]) else 0
rewardList.append(reward)
- clientPack = ChPyNetSendPack.tagMCZhanlingInfo()
+ clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCZhanlingInfo)
clientPack.Clear()
clientPack.ZhanlingType = zhanlingType
clientPack.IsActivite = 1 if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingState)&pow(2, zhanlingType) else 0
--
Gitblit v1.8.0