#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.SetEquipWash # # @todo:ÉèÖÃ×°±¸Ï´Á· # @author hxp # @date 2017-08-09 # @version 1.0 # # ÏêϸÃèÊö: ÉèÖÃ×°±¸Ï´Á· # #------------------------------------------------------------------------------- #"""Version = 2017-08-09 15:00""" #------------------------------------------------------------------------------- import Operate_EquipWash import PlayerControl import ChConfig import GameWorld import IpyGameDataPY #--------------------------------------------------------------------- #Âß¼­ÊµÏÖ ## GMÃüÁîÖ´ÐÐÈë¿Ú # @param curPlayer µ±Ç°Íæ¼Ò # @param cmdList ²ÎÊýÁбí [packType, index, starLV] # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(curPlayer, cmdList): if not cmdList: __GMHelpAnswer(curPlayer) return classLV = 0 allIndexList = Operate_EquipWash.GetAllEquipWashPlace() syncPlace = -1 if len(cmdList) == 1 and cmdList[0] == 0: for place in allIndexList: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashLV % (place), 0) for attrNum in range(1, Operate_EquipWash.Def_EquipWashMaxAttrCount + 1): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValue % (place, attrNum), 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValueTemp % (place, attrNum), 0) GameWorld.DebugLog("ÖØÖÃËùÓÐÏ´Á·Êý¾Ý") elif len(cmdList) == 2: isSync = False washLV, attrPer = cmdList for equipPackindex in allIndexList: ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':equipPackindex}) if not ipyData: continue equipPlace = ipyData.GetEquipPlace() maxWashLV = Operate_EquipWash.GetEquipWashMaxLV(curPlayer, equipPackindex, equipPlace) if maxWashLV < 1: continue __SetEquipPlaceWashLV(curPlayer, equipPackindex, equipPlace, washLV, attrPer, maxWashLV) isSync = True if not isSync: return elif len(cmdList) == 4: classLV, place, washLV, attrPer = cmdList ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, place) if not ipyData: return gridIndex = ipyData.GetGridIndex() syncPlace = gridIndex maxWashLV = Operate_EquipWash.GetEquipWashMaxLV(curPlayer, gridIndex, place) if maxWashLV < 1: return __SetEquipPlaceWashLV(curPlayer, gridIndex, place, washLV, attrPer, maxWashLV) else: __GMHelpAnswer(curPlayer) return Operate_EquipWash.RefreshEquipWashAttr(curPlayer, classLV) Operate_EquipWash.Sycn_EquipWashInfo(curPlayer, syncPlace) return def __SetEquipPlaceWashLV(curPlayer, equipPackindex, place, washLV, attrPer, maxWashLV): washLV = min(maxWashLV, washLV) washLV = max(1, washLV) attrPer = max(0, attrPer) attrPer = min(100, attrPer) washType = Operate_EquipWash.GetEquipWashType(place) washData = Operate_EquipWash.GetEquipWashData(washType, washLV) preWashData = None if washLV <= 1 else Operate_EquipWash.GetEquipWashData(washType, washLV - 1) #GameWorld.DebugLog("ÉèÖÃÏ´Á·: place=%s,washType=%s,washLV=%s,attrPer=%s" % (place, washType, washLV, attrPer)) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashLV % (equipPackindex), washLV - 1) for attrNum in range(1, Operate_EquipWash.Def_EquipWashMaxAttrCount + 1): preMaxValue = 0 if not preWashData else getattr(preWashData, "GetAttrMax%s" % attrNum)() curMaxValue = getattr(washData, "GetAttrMax%s" % attrNum)() value = preMaxValue + int((curMaxValue - preMaxValue) * attrPer / 100.0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValue % (equipPackindex, attrNum), value) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipWashValueTemp % (equipPackindex, attrNum), 0) #GameWorld.DebugLog(" attrNum=%s,value=%s" % (attrNum, value)) return def __GMHelpAnswer(curPlayer): GameWorld.DebugAnswer(curPlayer, "ÖØÖÃËùÓв¿Î»Ï´Á·: SetEquipWash 0") GameWorld.DebugAnswer(curPlayer, "ÉèÖÃËùÓв¿Î»Ï´Á·: SetEquipWash µÈ¼¶ °Ù·Ö±È") GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÖ¸¶¨²¿Î»Ï´Á·: SetEquipWash ½×¼¶ ×°±¸Î» µÈ¼¶ °Ù·Ö±È") return