hxp
5 天以前 26958aff1b844a743a805b4f9075bee800b72a46
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
#!/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