| | |
| | | jobItemList = awardIpyData.GetJobItemList()
|
| | | # 选择物品
|
| | | if awardIpyData.GetSelectItemDict():
|
| | | if not exData:
|
| | | GameWorld.ErrLog("选择的物品错误, 需要指定一个选择物品ID!chestsItemID=%s,selectItemID=%s" % (chestsItemID, exData))
|
| | | if isinstance(exData, int):
|
| | | selectDict = {exData:useCount} # 兼容旧的单选模式
|
| | | elif isinstance(exData, dict):
|
| | | selectDict = exData
|
| | | else:
|
| | | GameWorld.ErrLog("选择的物品错误, 需要指定选择物品ID!chestsItemID=%s,exData=%s" % (chestsItemID, exData))
|
| | | return
|
| | | selectItemID = exData
|
| | | |
| | | isSelectOK = False
|
| | | GameWorld.DebugLog(" 自选项信息: %s" % selectDict)
|
| | | selectCountTotal = 0
|
| | | for cfgItemID, itemCount in awardIpyData.GetSelectItemDict().items():
|
| | | # 支持按职业选择,前端无论发职业对应物品ID或者配置的物品ID均可获得
|
| | | jobItemID = __GetChestsJobItem(chestsItemID, job, cfgItemID, jobItemList)
|
| | | if not jobItemID:
|
| | | return
|
| | | if selectItemID == cfgItemID or selectItemID == jobItemID:
|
| | | __AddAwardItem(awardItemDict, jobItemID, itemCount * useCount)
|
| | | isSelectOK = True
|
| | | if cfgItemID in selectDict:
|
| | | selectCount = selectDict.pop(cfgItemID)
|
| | | elif jobItemID in selectDict:
|
| | | selectCount = selectDict.pop(jobItemID)
|
| | | else:
|
| | | continue
|
| | | selectCountTotal += selectCount
|
| | | GameWorld.DebugLog(" 可选自选项: cfgItemID=%s,jobItemID=%s,selectCount=%s" % (cfgItemID, jobItemID, selectCount))
|
| | | __AddAwardItem(awardItemDict, jobItemID, itemCount * selectCount)
|
| | | if not selectDict:
|
| | | break
|
| | | |
| | | if not isSelectOK:
|
| | | GameWorld.ErrLog("选择的物品错误, 该宝箱没有该物品!chestsItemID=%s,selectItemID=%s" % (chestsItemID, selectItemID))
|
| | | if selectCountTotal != useCount:
|
| | | GameWorld.ErrLog("选择的物品错误!chestsItemID=%s,selectCountTotal=%s != %s" % (chestsItemID, selectCountTotal, useCount))
|
| | | return
|
| | |
|
| | | # 固定产出物品
|