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