| #!/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  | 
|   |