From d23208b14e51460535a5fc13d7834c16709f3663 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 12 七月 2024 19:02:46 +0800 Subject: [PATCH] 10208 10206 【越南】新增大额战令(新增登录战令;战令支持高级战令;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 49 insertions(+), 7 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 eec96a8..3662208 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py @@ -24,6 +24,7 @@ import IPY_GameWorld import PlayerGubao import ChConfig +import time # 战令类型 ZhanlingTypeList = ( @@ -31,10 +32,17 @@ ZhanlingType_Realm, ZhanlingType_SkyTower, ZhanlingType_GubaoStar, -) = range(1, 1 + 4) +ZhanlingType_Login, +) = range(1, 1 + 5) def OnPlayerLogin(curPlayer): for zhanlingType in ZhanlingTypeList: + 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 @@ -51,15 +59,30 @@ updState = state|pow(2, zhanlingType) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingState, updState) SyncZhanlingInfo(curPlayer, zhanlingType) - GameWorld.Log("激活战令: zhanlingType=%s,updState=%s" % (zhanlingType, updState), curPlayer.GetPlayerID()) + GameWorld.Log("激活战令普通: zhanlingType=%s,updState=%s" % (zhanlingType, updState), curPlayer.GetPlayerID()) break + # 高级战令 + zhanlingCTGIDDictH = IpyGameDataPY.GetFuncEvalCfg("Zhanling", 3) + for zhanlingTypeStr, ctgIDList in zhanlingCTGIDDictH.items(): + if ctgID not in ctgIDList: + continue + zhanlingType = int(zhanlingTypeStr) + state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingStateH) + if state&pow(2, zhanlingType): + break + + updState = state|pow(2, zhanlingType) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingStateH, updState) + SyncZhanlingInfo(curPlayer, zhanlingType) + GameWorld.Log("激活战令高级: zhanlingType=%s,updState=%s" % (zhanlingType, updState), curPlayer.GetPlayerID()) + break return def GetZhanlingReward(curPlayer, zhanlingType, rewardID): ## 领取战令奖励 rewardID = GameWorld.ToIntDef(rewardID) - needValue, isFree = rewardID/10, rewardID%10 + needValue, rewardType = rewardID/10, rewardID%10 # rewardType: 0-免费;1-普通;2-高级 playerID = curPlayer.GetPlayerID() ipyData = IpyGameDataPY.GetIpyGameData("Zhanling", zhanlingType, needValue) @@ -75,6 +98,11 @@ 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 else: return @@ -85,16 +113,27 @@ rewardIndex = ipyData.GetRewardIndex() itemList = ipyData.GetFreeRewardItemList() rewardKey = ChConfig.Def_PDict_ZhanlingRewardFree - if not isFree: + if rewardType == 1: itemList = ipyData.GetZLRewardItemList() rewardKey = ChConfig.Def_PDict_ZhanlingReward state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingState) if not state&pow(2, zhanlingType): - GameWorld.DebugLog("战令未激活,无法领取战令奖励: zhanlingType=%s,state=%s,isFree=%s" % (zhanlingType, state, isFree), playerID) + GameWorld.DebugLog("普通战令未激活,无法领取战令奖励: zhanlingType=%s,state=%s" % (zhanlingType, state), playerID) + return + elif rewardType == 2: + itemList = ipyData.GetZLRewardItemListH() + rewardKey = ChConfig.Def_PDict_ZhanlingRewardH + state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingStateH) + if not state&pow(2, zhanlingType): + GameWorld.DebugLog("高级战令未激活,无法领取战令奖励: zhanlingType=%s,state=%s" % (zhanlingType, state), playerID) return + if not itemList: + GameWorld.DebugLog("没有该战令奖励! zhanlingType=%s,needValue=%s,rewardType=%s" % (zhanlingType, needValue, rewardType), playerID) + return + if GameWorld.GetDictValueByBit(curPlayer, rewardKey, rewardIndex, True, [zhanlingType]): - GameWorld.DebugLog("已经领取过该战令奖励! zhanlingType=%s,needValue=%s,isFree=%s" % (zhanlingType, needValue, isFree), playerID) + GameWorld.DebugLog("已经领取过该战令奖励! zhanlingType=%s,needValue=%s,rewardType=%s" % (zhanlingType, needValue, rewardType), playerID) return # 检查背包 @@ -104,7 +143,7 @@ # 更新已领取成功标记 GameWorld.SetDictValueByBit(curPlayer, rewardKey, rewardIndex, 1, True, [zhanlingType]) SyncZhanlingInfo(curPlayer, zhanlingType, ipyData) - GameWorld.DebugLog("领取战令奖励: zhanlingType=%s,needValue=%s,isFree=%s" % (zhanlingType, needValue, isFree), playerID) + GameWorld.DebugLog("领取战令奖励: zhanlingType=%s,needValue=%s,rewardType=%s,itemList=%s" % (zhanlingType, needValue, rewardType, itemList), playerID) # 给物品 for itemID, itemCount, isAuctionItem in itemList: @@ -131,12 +170,15 @@ reward.NeedValue = ipyData.GetNeedValue() reward.FreeRewardState = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree, rewardIndex, True, [zhanlingType]) else 0 reward.ZLRewardState = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingReward, rewardIndex, True, [zhanlingType]) else 0 + reward.ZLRewardStateH = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardH, rewardIndex, True, [zhanlingType]) else 0 rewardList.append(reward) clientPack = ChPyNetSendPack.tagMCZhanlingInfo() clientPack.Clear() clientPack.ZhanlingType = zhanlingType clientPack.IsActivite = 1 if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingState)&pow(2, zhanlingType) else 0 + clientPack.IsActiviteH = 1 if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingStateH)&pow(2, zhanlingType) else 0 + clientPack.Value1 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType) clientPack.RewardList = rewardList clientPack.RewardCount = len(clientPack.RewardList) NetPackCommon.SendFakePack(curPlayer, clientPack) -- Gitblit v1.8.0