hxp
2024-11-15 789490b7d362160f7fca4580df6176498e1eb271
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py
@@ -16,6 +16,7 @@
#-------------------------------------------------------------------------------
import GameWorld
import ShareDefine
import NetPackCommon
import IpyGameDataPY
import PlayerControl
@@ -31,15 +32,17 @@
# 战令类型
ZhanlingTypeList = (
ZhanlingType_LV,
ZhanlingType_Realm,
ZhanlingType_SkyTower,
ZhanlingType_GubaoStar,
ZhanlingType_Login,
ZhanlingType_GatherTheSoulLV,
ZhanlingType_HorsePetTrain,
ZhanlingType_GubaoTrain,
) = range(1, 1 + 8)
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
) = range(1, 1 + 10)
def OnPlayerLogin(curPlayer):
    for zhanlingType in ZhanlingTypeList:
@@ -96,6 +99,9 @@
    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)
    GameWorld.Log("重置战令: zhanlingType=%s,backValue=%s,state=(%s to %s) stateH=(%s to %s)" 
                  % (zhanlingType, backValue, state, updState, stateH, updStateH), curPlayer.GetPlayerID())
    
@@ -154,6 +160,25 @@
    PlayerControl.SendMailByKey("ZhanlingRewardUnget", [playerID], itemList, paramList)
    return
def AddZhanlingValue(curPlayer, zhanlingType, addValue=1):
    if zhanlingType not in [ZhanlingType_Huanjingge]:
        return
    curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
    updValue = min(ChConfig.Def_UpperLimit_DWord, curValue + addValue)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, updValue)
    GameWorld.DebugLog("增加战令进度: zhanlingType=%s,addValue=%s,curValue=%s,updValue=%s"
                       % (zhanlingType, addValue, curValue, updValue), curPlayer.GetPlayerID())
    SyncZhanlingInfo(curPlayer, zhanlingType, [])
    return updValue
def SetZhanlingValue(curPlayer, zhanlingType, value1):
    if zhanlingType not in [ZhanlingType_Huanjingge]:
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, value1)
    GameWorld.DebugLog("设置战令进度: zhanlingType=%s,value1=%s" % (zhanlingType, value1), curPlayer.GetPlayerID())
    SyncZhanlingInfo(curPlayer, zhanlingType, [])
    return value1
def GetZhanlingReward(curPlayer, zhanlingType, rewardID):
    ## 领取战令奖励
    rewardID = GameWorld.ToIntDef(rewardID)
@@ -184,6 +209,10 @@
        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_Huanjingge:
        curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
    else:
        return
        
@@ -223,7 +252,7 @@
    
    # 更新已领取成功标记
    GameWorld.SetDictValueByBit(curPlayer, rewardKey, rewardIndex, 1, True, [zhanlingType])
    SyncZhanlingInfo(curPlayer, zhanlingType, ipyData)
    SyncZhanlingInfo(curPlayer, zhanlingType, [ipyData])
    GameWorld.DebugLog("领取战令奖励: zhanlingType=%s,needValue=%s,rewardType=%s,itemList=%s" % (zhanlingType, needValue, rewardType, itemList), playerID)
    
    # 给物品
@@ -232,17 +261,11 @@
        
    return
def SyncZhanlingInfo(curPlayer, zhanlingType, ipyData=None):
def SyncZhanlingInfo(curPlayer, zhanlingType, ipyDataList=None):
    
    ipyDataList = []
    if ipyData == None:
    if ipyDataList == None:
        ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Zhanling", {"ZhanlingType":zhanlingType}, True)
    else:
        ipyDataList = [ipyData]
    if not ipyDataList:
        return
    rewardList = []
    for ipyData in ipyDataList:
        rewardIndex = ipyData.GetRewardIndex()