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)
@@ -181,6 +185,13 @@
            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:
        realmLV = curPlayer.GetOfficialRank()
        needRealmLV = unlockValue
@@ -225,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
#
@@ -315,6 +339,7 @@
    # 有升级额外处理
    if updLV > curLV:
        RefreshBeautyAttr(curPlayer)
        OpenServerActivity.UpdOSA_BeautyTrainBillboard(curPlayer)
        
    return
@@ -470,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)
@@ -563,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):