1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/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