#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.Horse # # @todo:×øÆï # @author hxp # @date 2019-12-17 # @version 1.0 # # ÏêϸÃèÊö: ×øÆï # #------------------------------------------------------------------------------- #"""Version = 2019-12-17 18:30""" #------------------------------------------------------------------------------- import GameWorld import ChConfig import PlayerControl import PlayerHorse import IpyGameDataPY import time #--------------------------------------------------------------------- #Âß¼­ÊµÏÖ ## GMÃüÁîÖ´ÐÐÈë¿Ú # @param curPlayer µ±Ç°Íæ¼Ò # @param msgList ²ÎÊýÁбí # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(curPlayer, msgList): if not msgList: GameWorld.DebugAnswer(curPlayer, "ÖØÖÃËùÓÐ: Horse 0") GameWorld.DebugAnswer(curPlayer, "ÉèÖýø½×: Horse µÈ½× µ¤Êý") GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÅàÑø: Horse ÅàÑøÀàÐÍ µÈ½× µ¤Êý") GameWorld.DebugAnswer(curPlayer, "È«²¿»Ã»¯: Horse skin 1") GameWorld.DebugAnswer(curPlayer, "ÖØÖûû¯: Horse skin 0") GameWorld.DebugAnswer(curPlayer, "ÉèÖûû¯: Horse skin »Ã»¯ID ״̬") GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÐǼ¶: Horse star ×øÆïID ÐǼ¶") return if msgList[0] == "skin": if len(msgList) == 2: skinState = msgList[1] ipyDataMgr = IpyGameDataPY.IPY_Data() for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()): skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index) skinID = skinPlusIpyData.GetID() __GMSetHorseSkinState(curPlayer, skinID, skinState, skinPlusIpyData.GetSkinValidTime()) elif len(msgList) == 3: skinID = msgList[1] skinState = msgList[2] skinPlusIpyData = IpyGameDataPY.GetIpyGameData("HorseSkinPlus", skinID) if not skinPlusIpyData: GameWorld.DebugAnswer(curPlayer, "×øÆï»Ã»¯ID²»´æÔÚ! skinID=%s" % skinID) return __GMSetHorseSkinState(curPlayer, skinID, skinState, skinPlusIpyData.GetSkinValidTime()) else: return elif msgList[0] == "star": horseID = msgList[1] if len(msgList) > 1 else 0 horseStar = msgList[2] if len(msgList) > 2 else 0 if not horseID or not horseStar: return skinID = 0 ipyDataMgr = IpyGameDataPY.IPY_Data() for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()): skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index) if horseID != skinPlusIpyData.GetHorseID(): continue if PlayerHorse.CheckHorseSkinState(curPlayer, skinPlusIpyData): skinID = skinPlusIpyData.GetID() break if not skinID: GameWorld.DebugAnswer(curPlayer, "¸Ã×øÆï²»´æÔÚ»òδ¼¤»î:horseID=%s" % horseID) return if not IpyGameDataPY.GetIpyGameData("HorseStarUp", horseID, horseStar): GameWorld.DebugAnswer(curPlayer, "²»´æÔÚ¸Ã×øÆïÐǼ¶:horseID=%s,star=%s" % (horseID, horseStar)) return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserStar % horseID, horseStar) GameWorld.DebugAnswer(curPlayer, "ÉèÖÃ×øÆïÐǼ¶:horseID=%s,star=%s,skinID=%s" % (horseID, horseStar, skinID)) elif len(msgList) == 1: if msgList[0] == 0: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserLV, 1) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserEatItemCount, 0) for trainType in xrange(1, PlayerHorse.GetHorseTrainTypes() + 1): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainLV % trainType, 1) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainItemCount % trainType, 0) ipyDataMgr = IpyGameDataPY.IPY_Data() for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()): skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index) skinID = skinPlusIpyData.GetID() PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, 0) GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, skinID, 0) for index in range(ipyDataMgr.GetHorseCount()): ipyData = ipyDataMgr.GetHorseByIndex(index) horseID = ipyData.GetHorseID() PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserStar % horseID, 0) elif len(msgList) == 2: lv, eatItemCount = msgList if lv < 1: GameWorld.DebugAnswer(curPlayer, "µÈ¼¶²»ÄÜСÓÚ1") return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserLV, lv) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserEatItemCount, eatItemCount) elif len(msgList) == 3: trainType, trainLV, eatItemCount = msgList PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainLV % trainType, trainLV) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserTrainItemCount % trainType, eatItemCount) else: return PlayerHorse.RefreshHorseAttr(curPlayer) PlayerHorse.PlayerHorseLogin(curPlayer) return def __GMSetHorseSkinState(curPlayer, skinID, skinState, validTime=0): if not skinState: GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, skinID, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, 0) else: GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, skinID, 1) if validTime > 0: updSkinEndTime = int(time.time()) + validTime PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, updSkinEndTime) return