hxp
2025-06-12 edc3910a9d090e5df4deb2dbc37709a740375938
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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package GM.Commands.Gubao
#
# @todo:¹Å±¦
# @author hxp
# @date 2023-01-5
# @version 1.0
#
# ÏêϸÃèÊö: ¹Å±¦
#
#-------------------------------------------------------------------------------
#"""Version = 2023-01-5 15:30"""
#-------------------------------------------------------------------------------
 
import GameWorld
import IpyGameDataPY
import PlayerGubao
import PlayerControl
import ChConfig
 
#---------------------------------------------------------------------
#Âß¼­ÊµÏÖ
 
## GMÃüÁîÖ´ÐÐÈë¿Ú
#  @param curPlayer µ±Ç°Íæ¼Ò
#  @param msgList ²ÎÊýÁбí
#  @return None
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def OnExec(curPlayer, msgList):
    
    if not msgList:
        GameWorld.DebugAnswer(curPlayer, "ÖØÖùű¦: Gubao 0")
        GameWorld.DebugAnswer(curPlayer, "ÉèÖùű¦: Gubao ¹Å±¦ID µÈ¼¶ ÐǼ¶")
        GameWorld.DebugAnswer(curPlayer, "ÉèÖÃЧ¹û: Gubao e ¹Å±¦ID Ð§¹ûÀàÐÍ  ½ø¶ÈÖµ")
        GameWorld.DebugAnswer(curPlayer, "ÉèÖÃË鯬: Gubao p ¹Å±¦ID ÊýÁ¿")
        return
    
    gubaoIDList = []
    value1 = msgList[0]
    if len(msgList) == 1:
        if msgList[0] == 0:
            ipyDataMgr = IpyGameDataPY.IPY_Data()
            for index in range(ipyDataMgr.GetGubaoCount()):
                ipyData = ipyDataMgr.GetGubaoByIndex(index)
                gubaoID = ipyData.GetGubaoID()
                if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoPiece % gubaoID):
                    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, 0)
                    if gubaoID not in gubaoIDList:
                        gubaoIDList.append(gubaoID)
                _, star = PlayerGubao.GetGubaoLVInfo(curPlayer, gubaoID)
                if not star:
                    continue
                if gubaoID not in gubaoIDList:
                    gubaoIDList.append(gubaoID)
                PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, 0, 0)
                for effType in PlayerGubao.NeedGubaoItemEffValueTypeList:
                    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0)
                    
            PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, force=True)
            GameWorld.DebugAnswer(curPlayer, "ÖØÖùű¦OK")
    elif value1 == "p":
        gubaoID = msgList[1] if len(msgList) > 1 else 0
        pieceCount = msgList[2] if len(msgList) > 2 else 0
        ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
        if not ipyData:
            GameWorld.DebugAnswer(curPlayer, "²»´æÔڸùű¦!gubaoID=%s" % gubaoID)
            return
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoPiece % gubaoID, pieceCount)
        GameWorld.DebugAnswer(curPlayer, "ÉèÖÃË鯬ÊýÁ¿: ID:%s,ÊýÁ¿:%s" % (gubaoID, pieceCount))
        PlayerGubao.Sync_GubaoPieceInfo(curPlayer, [gubaoID])
        return
    elif len(msgList) == 3:
        gubaoID, lv, star = msgList
        ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
        if not ipyData:
            GameWorld.DebugAnswer(curPlayer, "²»´æÔڸùű¦!gubaoID=%s" % gubaoID)
            return
        starIpyData = IpyGameDataPY.GetIpyGameData("GubaoStar", gubaoID, star)
        if not starIpyData:
            GameWorld.DebugAnswer(curPlayer, "²»´æÔڸùű¦ÐǼ¶!gubaoID=%s,star=%s" % (gubaoID, star))
            return
        gubaoType = ipyData.GetGubaoType()
        quality = ipyData.GetGubaoQuality()
        lvIpyData = IpyGameDataPY.GetIpyGameData("GubaoLV", gubaoType, quality, lv)
        if not lvIpyData:
            GameWorld.DebugAnswer(curPlayer, "²»´æÔڸùű¦Æ·Öʵȼ¶!gubaoID=%s,gubaoType=%s,quality=%s,lv=%s" % (gubaoID, gubaoType, quality, lv))
            return
        GameWorld.DebugAnswer(curPlayer, "ÉèÖùű¦:%s,µÈ¼¶(%s),ÐÇ(%s)" % (gubaoID, lv, star))
        PlayerGubao.SetGubaoLVInfo(curPlayer, gubaoID, lv, star)
        gubaoIDList.append(gubaoID)
    elif value1 == "e":
        if len(msgList) != 4:
            return
        _, gubaoID, effType, effValue = msgList
        if effType not in PlayerGubao.NeedGubaoItemEffValueTypeList:
            GameWorld.DebugAnswer(curPlayer, "¹Å±¦Ð§¹ûÖµÀàÐͽö°üº¬:%s" % str(PlayerGubao.NeedGubaoItemEffValueTypeList))
            return
        ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID)
        if not ipyData:
            GameWorld.DebugAnswer(curPlayer, "²»´æÔڸùű¦!gubaoID=%s" % gubaoID)
            return
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), effValue)
        PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, True)
        GameWorld.DebugAnswer(curPlayer, "ÉèÖùű¦:%s,Ч¹ûÀàÐÍ(%s),Öµ(%s)" % (gubaoID, effType, effValue))
    else:
        return
    
    PlayerGubao.RefreshGubaoAttr(curPlayer)
    PlayerGubao.Sync_GubaoInfo(curPlayer, gubaoIDList)
    PlayerGubao.Sync_GubaoPieceInfo(curPlayer, gubaoIDList)    
    return