From ea6dff19b5877d55473d445788e1a2ff5789f6b9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 17 三月 2026 10:01:57 +0800
Subject: [PATCH] 526 【挑战】PVP群英榜-后端(战斗日志Value1增加存储ServerID;群英榜单10的UserData增加Json格式存储FightPower;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBeauty.py | 71 +++++++++++++++++++++++++----------
1 files changed, 50 insertions(+), 21 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBeauty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBeauty.py
index 03484fb..d1a3b4f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBeauty.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBeauty.py
@@ -22,6 +22,8 @@
import PlayerControl
import IpyGameDataPY
import ChPyNetSendPack
+import OpenServerActivity
+import GameLogic_Dingjunge
import PlayerGoldRush
import NetPackCommon
import ItemControler
@@ -38,7 +40,8 @@
UnlockWay_FBZhanchui, # 白骨盈野过关 5
UnlockWay_OfficialRank, # 官职达到 6
UnlockWay_TravelCnt, # 游历次数 7
-) = range(1, 1 + 7)
+UnlockWay_FBDingjunge, # 定军阁通关层 8
+) = range(1, 1 + 8)
# 皮肤解锁方式
UnlockWaySkin_Default = 1 # 默认解锁 1
@@ -50,7 +53,8 @@
EffType_ArenaItemEx, # 2. 演武场挑战胜利,概率额外获得1个物品的概率 TypeValue:物品ID Value:概率
EffType_TravelEnergy, # 3.游历体力上限增加 Value:增加上限
EffType_FBZhanchuiItemEx, # 4.白骨盈野扫荡额外物品奖励 TypeValue:物品ID Value:数量
-) = range(1, 1 + 4)
+EffType_HeroItemExPer, # 5.遣散/吞噬武将额外返还 Value:百分比
+) = range(1, 1 + 5)
def OnPlayerLogin(curPlayer):
SyncBeautyInfo(curPlayer)
@@ -145,11 +149,13 @@
if unlockWay == UnlockWay_Item:
needItemID = unlockValue
needItemCnt = unlockNeedCnt
- itemCount = ItemControler.GetItemCountByID(curPlayer, needItemID)
- if itemCount < needItemCnt:
- GameWorld.DebugLog("激活红颜物品不足! beautyID=%s,needItemID=%s,itemCount=%s < %s" % (beautyID, needItemID, itemCount, needItemCnt), playerID)
+
+ costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, needItemID, needItemCnt)
+ lackCnt = needItemCnt - bindCnt - unBindCnt
+ if lackCnt > 0:
+ GameWorld.DebugLog("激活红颜物品不足! beautyID=%s,needItemID=%s,needItemCnt=%s,lackCnt=%s" % (beautyID, needItemID, needItemCnt, lackCnt), playerID)
return
- ItemControler.DelItemCountByID(curPlayer, needItemID, needItemCnt)
+ ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, needItemCnt, "Beauty")
elif unlockWay == UnlockWay_TaskID:
taskID = unlockValue
@@ -177,6 +183,13 @@
isPass = FBCommon.IsFBPass(curPlayer, mapID, funcLineID)
if not isPass:
GameWorld.DebugLog("激活红颜所需副本未过关! beautyID=%s,mapID=%s,funcLineID=%s" % (beautyID, mapID, funcLineID), playerID)
+ return
+
+ elif unlockWay == UnlockWay_FBDingjunge:
+ passLayer = GameLogic_Dingjunge.GetPassLayerMax(curPlayer)
+ needLayer = unlockValue
+ if passLayer < needLayer:
+ GameWorld.DebugLog("激活红颜所需定军阁通关层不足! beautyID=%s,passLayer=%s < %s" % (beautyID, passLayer, needLayer), playerID)
return
elif unlockWay == UnlockWay_OfficialRank:
@@ -223,6 +236,19 @@
continue
actCnt += 1
return actCnt
+
+def GetBeautyLVTotal(curPlayer):
+ ## 红颜总等级
+ lvTotal = 0
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for index in range(ipyDataMgr.GetBeautyCount()):
+ ipyData = ipyDataMgr.GetBeautyByIndex(index)
+ beautyID = ipyData.GetBeautyID()
+ if not GetBeautyState(curPlayer, beautyID):
+ continue
+ curLV = GetBeautyLVInfo(curPlayer, beautyID)[0]
+ lvTotal += curLV
+ return lvTotal
#// B2 20 红颜好感度升级 #tagCSBeautyLVUP
#
@@ -313,6 +339,7 @@
# 有升级额外处理
if updLV > curLV:
RefreshBeautyAttr(curPlayer)
+ OpenServerActivity.UpdOSA_BeautyTrainBillboard(curPlayer)
return
@@ -410,11 +437,12 @@
if unlockWay == UnlockWaySkin_Item:
needItemID = unlockValue
needItemCnt = unlockNeedCnt
- itemCount = ItemControler.GetItemCountByID(curPlayer, needItemID)
- if itemCount < needItemCnt:
- GameWorld.DebugLog("激活红颜时装物品不足! beautyID=%s,needItemID=%s,itemCount=%s < %s" % (beautyID, needItemID, itemCount, needItemCnt))
+ costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, needItemID, needItemCnt)
+ lackCnt = needItemCnt - bindCnt - unBindCnt
+ if lackCnt > 0:
+ GameWorld.DebugLog("激活红颜时装物品不足! beautyID=%s,needItemID=%s,needItemCnt=%s,lackCnt=%s" % (beautyID, needItemID, needItemCnt, lackCnt))
return
- ItemControler.DelItemCountByID(curPlayer, needItemID, needItemCnt)
+ ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, needItemCnt, "Beauty")
else:
GameWorld.DebugLog("红颜皮肤不需要激活! beautyID=%s,skinID=%s" % (beautyID, skinID))
@@ -467,11 +495,13 @@
needItemCnt = ipyData.GetUpNeedCnt()
if not needItemID or not needItemCnt:
return
- itemCount = ItemControler.GetItemCountByID(curPlayer, needItemID)
- if itemCount < needItemCnt:
- GameWorld.DebugLog("红颜时装升星物品不足! skinID=%s,needItemID=%s,itemCount=%s < %s" % (skinID, needItemID, itemCount, needItemCnt))
+
+ costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, needItemID, needItemCnt)
+ lackCnt = needItemCnt - bindCnt - unBindCnt
+ if lackCnt > 0:
+ GameWorld.DebugLog("红颜时装升星物品不足! skinID=%s,needItemID=%s,needItemCnt=%s,lackCnt=%s" % (skinID, needItemID, needItemCnt, lackCnt))
return
- ItemControler.DelItemCountByID(curPlayer, needItemID, needItemCnt)
+ ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, needItemCnt, "Beauty")
nextStar = curStar + 1
GameWorld.DebugLog("红颜时装升星! skinID=%s,nextStar=%s" % (skinID, nextStar), playerID)
@@ -560,14 +590,13 @@
# 保存计算值
GameWorld.DebugLog("红颜属性: %s" % attrDict, playerID)
GameWorld.DebugLog("红颜效果: %s" % effTypeDict, playerID)
- PyGameData.g_beautyEffTypeDict[playerID] = effTypeDict
- PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_Beauty, attrDict)
+ PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_Beauty, attrDict, effTypeDict)
return
def GetBeautyEffInfo(curPlayer, effType):
## 获取红颜特殊效果信息
# @return: effValue, effTypeValue
- effTypeDict = PyGameData.g_beautyEffTypeDict.get(curPlayer.GetPlayerID(), {})
+ effTypeDict = PlayerOnline.GetOnlinePlayer(curPlayer).GetCalcSpecInfo(ChConfig.Def_CalcAttr_Beauty)
return effTypeDict.get(effType, [0, 0])
def SyncBeautyInfo(curPlayer, beautyIDList=None, skinIDList=None):
@@ -598,13 +627,13 @@
if ipyDataList:
for ipyData in ipyDataList:
skinID = ipyData.GetSkinID()
- skinInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BeautySkinInfo % skinID)
+ #skinInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BeautySkinInfo % skinID)
if skinIDList != None:
if skinID not in skinIDList:
continue
- else:
- if not skinInfo:
- continue
+ #else:
+ # if not skinInfo:
+ # continue
beautySkin = ChPyNetSendPack.tagSCBeautySkin()
beautySkin.SkinID = skinID
beautySkin.State = 1 if IsBeautySkinCanUse(curPlayer, beautyID, skinID, ipyData) else 0
--
Gitblit v1.8.0