From 40673d6fac17bdead316b5aae223f7861d8d6eb7 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 12 七月 2024 16:23:22 +0800 Subject: [PATCH] 10202 【越南】【香港】【主干】【砍树】聚魂 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py | 83 ++++++++++++++++++++++++++++------------- 1 files changed, 57 insertions(+), 26 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py index 6e8e5bf..2ba1cad 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py @@ -36,6 +36,13 @@ import random import time +TreasureTypeList = ( +TreasureType_Jipin, # 极品寻宝 1 +TreasureType_Rune, # 符印寻宝 2 +TreasureType_Jueshi, # 绝世君宝 3 +TreasureType_GatherTheSoul, # 聚魂猎魔 4 +) = range(1, 1 + 4) + def DoTreasureOpen(curPlayer): ## 寻宝开启 @@ -93,6 +100,8 @@ packType = ShareDefine.rptTreasure #if treasureType == 2: # packType = ShareDefine.rptRune + if treasureType in [TreasureType_GatherTheSoul]: + packType = IPY_GameWorld.rptItem if not ItemCommon.CheckPackHasSpace(curPlayer, packType, True): GameWorld.DebugLog("对应寻宝背包没有空格子!packType=%s" % packType, playerID) @@ -274,37 +283,57 @@ isBind = 0 # 暂时默认不绑定 job = curPlayer.GetJob() gridItemInfoDict = ipyData.GetGridItemInfo() # 格子对应物品信息 {"格子编号":[物品ID, 数量], ...} + gridLibInfoDict = ipyData.GetGridLibInfo() # 格子对应物品信息 {"格子编号":[物品ID, 数量], ...} jobItemList = ipyData.GetJobItemList() treasureResult = [] randItemIDDict = IpyGameDataPY.GetFuncEvalCfg("TreasureSet", 2) for gridNum in getGridResult: gridNum = str(gridNum) - if gridNum not in gridItemInfoDict: + if gridNum in gridItemInfoDict: + itemID, itemCount = gridItemInfoDict[gridNum] + itemID = GetJobItem(job, itemID, jobItemList) + if not itemID: + GameWorld.ErrLog("寻宝格子物品ID异常!treasureType=%s,gridNum=%s" % (treasureType, gridNum), playerID) + return + + # 随机产出物品 + if itemID in randItemIDDict: + canRandItemList = [] + randItemIDList = randItemIDDict[itemID] + for randItemID in randItemIDList: + itemData = GameWorld.GetGameData().GetItemByTypeID(randItemID) + if itemData.GetType() == ChConfig.Def_ItemType_Rune and not PlayerRune.GetIsOpenByRuneID(curPlayer, randItemID): + GameWorld.DebugLog("未解锁的符印不产出!itemID=%s,randItemID=%s" % (itemID, randItemID), playerID) + continue + canRandItemList.append(randItemID) + if not canRandItemList: + GameWorld.ErrLog("寻宝随机格子没有可随机的物品!treasureType=%s,treasureIndex=%s,gridNum=%s,itemID=%s" + % (treasureType, treasureIndex, gridNum, itemID), playerID) + return + itemID = random.choice(canRandItemList) + # 根据物品库来随机 + elif gridNum in gridLibInfoDict: + libID = gridLibInfoDict[gridNum] + libItemList = IpyGameDataPY.GetIpyGameDataList("TreasureItemLib", libID) + if not libItemList: + return + itemWeightList = [] + for libItem in libItemList: + itemWeight, itemID, itemCount = libItem.GetItemWeight(), libItem.GetItemID(), libItem.GetItemCount() + itemData = GameWorld.GetGameData().GetItemByTypeID(itemID) + if not itemData: + continue + itemWeightList.append([itemWeight, [itemID, itemCount]]) + if not itemWeightList: + GameWorld.ErrLog("寻宝随机格子没有可随机的物品!treasureType=%s,treasureIndex=%s,gridNum=%s,libID=%s" + % (treasureType, treasureIndex, gridNum, libID), playerID) + return + itemID, itemCount = GameWorld.GetResultByWeightList(itemWeightList) + else: GameWorld.ErrLog("寻宝格子不存在!treasureType=%s,gridNum=%s" % (treasureType, gridNum), playerID) return - itemID, itemCount = gridItemInfoDict[gridNum] - itemID = GetJobItem(job, itemID, jobItemList) - if not itemID: - GameWorld.ErrLog("寻宝格子物品ID异常!treasureType=%s,gridNum=%s" % (treasureType, gridNum), playerID) - return - # 随机产出物品 - if itemID in randItemIDDict: - canRandItemList = [] - randItemIDList = randItemIDDict[itemID] - for randItemID in randItemIDList: - itemData = GameWorld.GetGameData().GetItemByTypeID(randItemID) - if itemData.GetType() == ChConfig.Def_ItemType_Rune and not PlayerRune.GetIsOpenByRuneID(curPlayer, randItemID): - GameWorld.DebugLog("未解锁的符印不产出!itemID=%s,randItemID=%s" % (itemID, randItemID), playerID) - continue - canRandItemList.append(randItemID) - if not canRandItemList: - GameWorld.ErrLog("寻宝随机格子没有可随机的物品!treasureType=%s,treasureIndex=%s,gridNum=%s,itemID=%s" - % (treasureType, treasureIndex, gridNum, itemID), playerID) - return - itemID = random.choice(canRandItemList) - treasureResult.append([gridNum, itemID, itemCount, isBind]) # 扣消耗 @@ -329,19 +358,21 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TreasureLuck % (treasureType), updLuck) PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_TreasureScore, addScore) - if treasureType == 2: + if treasureType == TreasureType_Rune: PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RuneTreasure, treasureCount) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount) - elif treasureType == 1: + elif treasureType == TreasureType_Jipin: PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Treasure, treasureCount) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount) - elif treasureType == 3: + elif treasureType == TreasureType_Jueshi: PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_JSTreasure, treasureCount) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_JSTreasure, treasureCount) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_JSTreasure, treasureCount) - + elif treasureType == TreasureType_GatherTheSoul: + pass + # 给物品 mailItemList = [] itemControl = ItemControler.PlayerItemControler(curPlayer) -- Gitblit v1.8.0