hxp
2024-08-27 8a951e63f3a9df81b288b410d8a3c73b8c1a6d08
10251 【越南】【砍树】骑宠养成-新增养成战令
3个文件已修改
99 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Zhanling.py 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActHorsePetTrain.py 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Zhanling.py
@@ -38,14 +38,10 @@
    value = msgList[0]
    if value == 0:
        zhanlingType = msgList[1] if len(msgList) > 1 else 1
        for keyNum in range(10):
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingReward % (zhanlingType, keyNum), 0)
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingRewardH % (zhanlingType, keyNum), 0)
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree % (zhanlingType, keyNum), 0)
        backValue = msgList[2] if len(msgList) > 2 else None
        PlayerZhanling.ResetZhanling(curPlayer, zhanlingType, backValue)
        GameWorld.DebugAnswer(curPlayer, "重置战令(%s)!" % (zhanlingType))
        
        PlayerZhanling.SyncZhanlingInfo(curPlayer, zhanlingType)
        GameWorld.DebugAnswer(curPlayer, "重置战令(%s)奖励!" % (zhanlingType))
    else:
        zhanlingType = value
        activiteC = msgList[1] if len(msgList) > 1 else 0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActHorsePetTrain.py
@@ -23,6 +23,7 @@
import FunctionNPCCommon
import PlayerBillboard
import ChPyNetSendPack
import PlayerZhanling
import NetPackCommon
import PlayerActTask
import GameWorld
@@ -87,6 +88,8 @@
    
    GameWorld.DebugLog("骑宠养成活动重置! actNum=%s,actID=%s,playerActID=%s,state=%s,cfgID=%s" 
                       % (actNum, actID, playerActID, state, cfgID), playerID)
    score = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActHorsePetTrainScore % actNum)
    PlayerZhanling.ResetZhanling(curPlayer, PlayerZhanling.ZhanlingType_HorsePetTrain, score)
    
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActHorsePetTrainID % actNum, actID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActHorsePetTrainScore % actNum, 0)
@@ -198,6 +201,17 @@
    GameWorld.Log("骑宠养成活动发送GameServer: %s, %s" % (msgType, dataMsg), playerID)
    return
def GetActHorsePetTrainScore(curPlayer):
    ## 获取活动中养成积分
    actScore = 0
    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_HorsePetTrain, {}).values():
        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
        if not actInfo.get(ShareDefine.ActKey_State):
            continue
        score = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActHorsePetTrainScore % actNum)
        actScore = max(score, actScore)
    return actScore
def Sync_HorsePetTrainActionInfo(curPlayer, actNum):
    ## 通知活动信息
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py
@@ -21,6 +21,7 @@
import PlayerControl
import ChPyNetSendPack
import PlayerGatherTheSoul
import PlayerActHorsePetTrain
import ItemControler
import IPY_GameWorld
import PlayerGubao
@@ -35,7 +36,8 @@
ZhanlingType_GubaoStar,
ZhanlingType_Login,
ZhanlingType_GatherTheSoulLV,
) = range(1, 1 + 6)
ZhanlingType_HorsePetTrain,
) = range(1, 1 + 7)
def OnPlayerLogin(curPlayer):
    for zhanlingType in ZhanlingTypeList:
@@ -81,6 +83,75 @@
        break
    return
def ResetZhanling(curPlayer, zhanlingType, backValue=None):
    ''' 重置战令
    @param zhanlingType: 战令类型
    @param backValue: 重置战令时的战令奖励值,用于返还未领取奖励
    '''
    state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingState)
    stateH = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingStateH)
    updState = GameWorld.SetBitValue(state, zhanlingType, 0)
    updStateH = GameWorld.SetBitValue(stateH, zhanlingType, 0)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingState, updState)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingStateH, updStateH)
    GameWorld.Log("重置战令: zhanlingType=%s,backValue=%s,state=(%s to %s) stateH=(%s to %s)"
                  % (zhanlingType, backValue, state, updState, stateH, updStateH), curPlayer.GetPlayerID())
    if backValue:
        __giveUngetAward(curPlayer, zhanlingType, backValue, state&pow(2, zhanlingType), stateH&pow(2, zhanlingType))
    for keyNum in range(10):
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingReward % (zhanlingType, keyNum), 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingRewardH % (zhanlingType, keyNum), 0)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree % (zhanlingType, keyNum), 0)
    SyncZhanlingInfo(curPlayer, zhanlingType)
    return
def __giveUngetAward(curPlayer, zhanlingType, backValue, activeState, activeStateH):
    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Zhanling", {"ZhanlingType":zhanlingType}, True)
    if not ipyDataList:
        return
    if not backValue:
        return
    playerID = curPlayer.GetPlayerID()
    GameWorld.DebugLog("处理战令重置补发奖励: zhanlingType=%s,backValue=%s,activeState=%s,activeStateH=%s"
                       % (zhanlingType, backValue, activeState, activeStateH), playerID)
    ungetItemDict = {}
    for ipyData in ipyDataList:
        needValue = ipyData.GetNeedValue()
        rewardIndex = ipyData.GetRewardIndex()
        if backValue < needValue:
            break
        if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree, rewardIndex, True, [zhanlingType]):
            rewardItemList = ipyData.GetFreeRewardItemList()
            for itemID, itemCount, _ in rewardItemList:
                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:
                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:
                ungetItemDict[itemID] = ungetItemDict.get(itemID, 0) + itemCount
            GameWorld.DebugLog("    战令补发高级奖励: rewardIndex=%s,needValue=%s,%s, %s" % (rewardIndex, needValue, rewardItemList, ungetItemDict), playerID)
    if not ungetItemDict:
        return
    paramList = [zhanlingType]
    itemList = []
    for itemID, itemCount in ungetItemDict.items():
        itemList.append([itemID, itemCount, 0])
    GameWorld.DebugLog("    战令补发奖励汇总: %s, %s" % (itemList, ungetItemDict), playerID)
    PlayerControl.SendMailByKey("ZhanlingRewardUnget", [playerID], itemList, paramList)
    return
def GetZhanlingReward(curPlayer, zhanlingType, rewardID):
    ## 领取战令奖励
    rewardID = GameWorld.ToIntDef(rewardID)
@@ -107,6 +178,8 @@
        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)
    else:
        return