#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.Horse # # @todo:×øÆï # @author hxp # @date 2025-11-04 # @version 1.0 # # ÏêϸÃèÊö: ×øÆï # #------------------------------------------------------------------------------- #"""Version = 2025-11-04 14:30""" #------------------------------------------------------------------------------- import GameWorld import IpyGameDataPY import PlayerControl import PlayerHorse import ChConfig def OnExec(curPlayer, msgList): if not msgList: GameWorld.DebugAnswer(curPlayer, "ÖØÖÃËùÓÐ: Horse 0") GameWorld.DebugAnswer(curPlayer, "ÉèÖý׼¶: Horse ½× [µÈ¼¶ ¾­Ñé]") GameWorld.DebugAnswer(curPlayer, "ÖØÖÃÍâ¹Û: Horse s0 [Íâ¹ÛID]") GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍâ¹Û: Horse s1 Íâ¹ÛID [ÓÐЧÃë]") GameWorld.DebugAnswer(curPlayer, "Íâ¹ÛÐǼ¶: Horse s2 Íâ¹ÛID ÐǼ¶") return ipyDataMgr = IpyGameDataPY.IPY_Data() syncSkinIDList = [] value1 = msgList[0] if value1 == 0: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseClassLV, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseLV, PlayerHorse.HorseLVStart) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseExp, 0) PlayerControl.SetHorseSkinID(curPlayer, PlayerHorse.GetDefaultHorseSkinID()) syncSkinIDList = __ResetHorseSkin(curPlayer, 0) elif value1 == "s0": horseSkinID = msgList[1] if len(msgList) > 1 else 0 syncSkinIDList = __ResetHorseSkin(curPlayer, horseSkinID) elif value1 == "s1": horseSkinID = msgList[1] if len(msgList) > 1 else 0 expireTimes = msgList[2] if len(msgList) > 2 else None if PlayerHorse.AddHorseSkin(curPlayer, horseSkinID, expireTimes, True): endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorseSkinEndTime % horseSkinID) endTimeStr = "ÓÀ¾Ã" if not endTime else GameWorld.ChangeTimeNumToStr(endTime) GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍâ¹Û³É¹¦:%s,µ½ÆÚ:%s" % (horseSkinID, endTimeStr)) else: GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍâ¹Ûʧ°Ü:%s" % (horseSkinID)) return elif value1 == "s2": horseSkinID = msgList[1] if len(msgList) > 1 else 0 setStar = msgList[2] if len(msgList) > 2 else 0 ipyData = IpyGameDataPY.GetIpyGameData("HorseSkin", horseSkinID) if not ipyData: GameWorld.DebugAnswer(curPlayer, "¸ÃÍâ¹Û²»´æÔÚ:%s" % horseSkinID) return setStar = min(setStar, ipyData.GetStarMax()) GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍâ¹Û:%s,ÐÇ:%s" % (horseSkinID, setStar)) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseSkinStar % horseSkinID, setStar) syncSkinIDList.append(horseSkinID) # ÉèÖý׼¶: Horse ½× [µÈ¼¶ ¾­Ñé] else: classLV = msgList[0] if len(msgList) > 0 else 0 horseLV = msgList[1] if len(msgList) > 1 else 0 exp = msgList[2] if len(msgList) > 2 else 0 maxIpyData = ipyDataMgr.GetHorseClassByIndex(-1) classLV = min(classLV, maxIpyData.GetClassLV()) classIpyData = IpyGameDataPY.GetIpyGameData("HorseClass", classLV) horseLV = max(PlayerHorse.HorseLVStart, min(horseLV, classIpyData.GetMaxHorseLV())) exp = min(exp, classIpyData.GetLVUPItemCnt()) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseClassLV, classLV) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseLV, horseLV) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseExp, exp) GameWorld.DebugAnswer(curPlayer, "ÉèÖÃ×øÆï½×:%s,µÈ¼¶:%s,¾­Ñé:%s" % (classLV, horseLV, exp)) PlayerHorse.SyncHorseClassInfo(curPlayer) syncSkinIDList and PlayerHorse.SyncHorseSkinInfo(curPlayer, syncSkinIDList) PlayerHorse.RefreshHorseAttr(curPlayer) return def __ResetHorseSkin(curPlayer, horseSkinID=0): syncSkinIDList = [] if not horseSkinID: ipyDataMgr = IpyGameDataPY.IPY_Data() for index in range(ipyDataMgr.GetHorseSkinCount()): ipyData = ipyDataMgr.GetHorseSkinByIndex(index) horseSkinID = ipyData.GetSkinID() if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorseSkinState, horseSkinID): continue GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorseSkinState, horseSkinID, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseSkinEndTime % horseSkinID, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseSkinStar % horseSkinID, 0) syncSkinIDList.append(horseSkinID) else: ipyData = IpyGameDataPY.GetIpyGameData("HorseSkin", horseSkinID) if not ipyData: GameWorld.DebugAnswer(curPlayer, "¸ÃÍâ¹Û²»´æÔÚ:%s" % horseSkinID) return GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorseSkinState, horseSkinID, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseSkinEndTime % horseSkinID, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorseSkinStar % horseSkinID, 0) syncSkinIDList.append(horseSkinID) GameWorld.DebugAnswer(curPlayer, "ɾ³ýÍâ¹Û:%s" % syncSkinIDList) return syncSkinIDList