| | |
| | | #
|
| | | # @todo:古宝
|
| | | # @author hxp
|
| | | # @date 2023-01-5
|
| | | # @date 2025-10-11
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 古宝
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2023-01-5 15:30"""
|
| | | #"""Version = 2025-10-11 21:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import IpyGameDataPY
|
| | | import ItemControler
|
| | | import PlayerGubao
|
| | | import PlayerControl
|
| | | import ChConfig
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | #逻辑实现
|
| | |
|
| | | ## GM命令执行入口
|
| | | # @param curPlayer 当前玩家
|
| | | # @param msgList 参数列表
|
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, msgList):
|
| | |
|
| | | if not msgList:
|
| | | GameWorld.DebugAnswer(curPlayer, "重置古宝: Gubao 0")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝: Gubao 古宝ID 等级 星级")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置效果: Gubao e 古宝ID 效果类型 进度值")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝: Gubao 古宝ID [等级 星级 层级]")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置碎片: Gubao p 古宝ID 数量")
|
| | | return
|
| | |
|
| | |
| | | for index in range(ipyDataMgr.GetGubaoCount()):
|
| | | ipyData = ipyDataMgr.GetGubaoByIndex(index)
|
| | | gubaoID = ipyData.GetGubaoID()
|
| | | if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gubaoID):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, 0)
|
| | | if gubaoID not in gubaoIDList:
|
| | | gubaoIDList.append(gubaoID)
|
| | | _, star = PlayerGubao.GetGubaoLVInfo(curPlayer, gubaoID)
|
| | | if not star:
|
| | | itemID = ipyData.GetUnlockItemID()
|
| | | if ItemControler.GetItemCountByID(curPlayer, itemID):
|
| | | ItemControler.SetItemCountByID(curPlayer, itemID, 0) # 重置
|
| | | if not PlayerGubao.IsGubaoActivated(curPlayer, gubaoID):
|
| | | continue
|
| | | if gubaoID not in gubaoIDList:
|
| | | gubaoIDList.append(gubaoID)
|
| | | PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, 0, 0)
|
| | | for effType in PlayerGubao.NeedGubaoItemEffValueTypeList:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0)
|
| | | |
| | | PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, force=True)
|
| | | PlayerGubao.SetGubaoInfo(curPlayer, gubaoID, 0, 0, 0)
|
| | | GameWorld.DebugAnswer(curPlayer, "重置古宝OK")
|
| | | else:
|
| | | return
|
| | | |
| | | elif value1 == "p":
|
| | | gubaoID = msgList[1] if len(msgList) > 1 else 0
|
| | | pieceCount = msgList[2] if len(msgList) > 2 else 0
|
| | |
| | | if not ipyData:
|
| | | GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID)
|
| | | return
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, pieceCount)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置碎片数量: ID:%s,数量:%s" % (gubaoID, pieceCount))
|
| | | PlayerGubao.Sync_GubaoPieceInfo(curPlayer, [gubaoID])
|
| | | itemID = ipyData.GetUnlockItemID()
|
| | | ItemControler.SetItemCountByID(curPlayer, itemID, pieceCount)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝(%s)碎片ID:%s,数量:%s" % (gubaoID, itemID, pieceCount))
|
| | | return
|
| | | elif len(msgList) == 3:
|
| | | gubaoID, lv, star = msgList
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
|
| | | if not ipyData:
|
| | | GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID)
|
| | | return
|
| | | starIpyData = IpyGameDataPY.GetIpyGameData("GubaoStar", gubaoID, star)
|
| | | if not starIpyData:
|
| | | GameWorld.DebugAnswer(curPlayer, "不存在该古宝星级!gubaoID=%s,star=%s" % (gubaoID, star))
|
| | | return
|
| | | gubaoType = ipyData.GetGubaoType()
|
| | | quality = ipyData.GetGubaoQuality()
|
| | | lvIpyData = IpyGameDataPY.GetIpyGameData("GubaoLV", gubaoType, quality, lv)
|
| | | if not lvIpyData:
|
| | | GameWorld.DebugAnswer(curPlayer, "不存在该古宝品质等级!gubaoID=%s,gubaoType=%s,quality=%s,lv=%s" % (gubaoID, gubaoType, quality, lv))
|
| | | return
|
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝:%s,等级(%s),星(%s)" % (gubaoID, lv, star))
|
| | | PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, lv, star)
|
| | | gubaoIDList.append(gubaoID)
|
| | | elif value1 == "e":
|
| | | if len(msgList) != 4:
|
| | | return
|
| | | _, gubaoID, effType, effValue = msgList
|
| | | if effType not in PlayerGubao.NeedGubaoItemEffValueTypeList:
|
| | | GameWorld.DebugAnswer(curPlayer, "古宝效果值类型仅包含:%s" % str(PlayerGubao.NeedGubaoItemEffValueTypeList))
|
| | | return
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
|
| | | if not ipyData:
|
| | | GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID)
|
| | | return
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), effValue)
|
| | | PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, True)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝:%s,效果类型(%s),值(%s)" % (gubaoID, effType, effValue))
|
| | | |
| | | else:
|
| | | gubaoID = value1
|
| | | lv = msgList[1] if len(msgList) > 1 else 1
|
| | | star = msgList[2] if len(msgList) > 2 else 0
|
| | | layer = msgList[3] if len(msgList) > 3 else 0
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
|
| | | if not ipyData:
|
| | | GameWorld.DebugAnswer(curPlayer, "不存在该古宝!gubaoID=%s" % gubaoID)
|
| | | return
|
| | | quality = ipyData.GetGubaoQuality()
|
| | | layer = min(layer, ipyData.GetSpecEffLayerMax())
|
| | | |
| | | starIpyDataList = IpyGameDataPY.GetIpyGameDataList("GubaoStar", quality)
|
| | | if starIpyDataList:
|
| | | lastStarIpyData = starIpyDataList[-1]
|
| | | star = min(star, lastStarIpyData.GetGubaoStar())
|
| | | |
| | | lvIpyDataList = IpyGameDataPY.GetIpyGameDataList("GubaoLV", quality)
|
| | | if lvIpyDataList:
|
| | | lastLVIpyData = lvIpyDataList[-1]
|
| | | lv = min(lv, lastLVIpyData.GetLessEqualLV())
|
| | | |
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝:%s,级(%s),星(%s),层(%s)" % (gubaoID, lv, star, layer))
|
| | | PlayerGubao.SetGubaoInfo(curPlayer, gubaoID, lv, star, layer)
|
| | | gubaoIDList.append(gubaoID)
|
| | |
|
| | | PlayerGubao.RefreshGubaoAttr(curPlayer)
|
| | | PlayerGubao.Sync_GubaoInfo(curPlayer, gubaoIDList)
|
| | | PlayerGubao.Sync_GubaoPieceInfo(curPlayer, gubaoIDList) |
| | | return
|
| | |
|
| | |
|