hxp
2024-12-26 22c964784d465c77365c2495f6d43117618d8482
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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package GM.Commands.BillboardDataCross
#
# @todo:¿ç·þ°ñµ¥Êý¾Ý
# @author hxp
# @date 2021-01-13
# @version 1.0
#
# ÏêϸÃèÊö: ¿ç·þ°ñµ¥Êý¾Ý
#
#-------------------------------------------------------------------------------
#"""Version = 2021-01-13 17:00"""
#-------------------------------------------------------------------------------
 
import GameWorld
import ShareDefine
import PyDataManager
import CrossBillboard
 
def __Help(curPlayer, errInfo=""):
    GameWorld.DebugAnswer(curPlayer, "---------- %s" % GameWorld.GetCurrentDataTimeStr())
    if errInfo:
        GameWorld.DebugAnswer(curPlayer, errInfo)
    GameWorld.DebugAnswer(curPlayer, "ÐÂÔö¿ç·þ°ñµ¥¼ÙÊý¾Ý: BillboardDataCross ÀàÐÍ  ·Ö×éÖµ1 ·Ö×éÖµ2 ÌõÊý ±È½ÏÖµ1 ¿ÉÑ¡²ÎÊý(±È½ÏÖµ2 ³£¹æÖµ1~5)")
    GameWorld.DebugAnswer(curPlayer, "ɾ³ý¿ç·þ°ñµ¥¼ÙÊý¾Ý: BillboardDataCross ÀàÐÍ ·Ö×éÖµ1 ·Ö×éÖµ2")
    GameWorld.DebugAnswer(curPlayer, "ÔËÓª»î¶¯°ñÀàÐÍ:150-³äÖµ(·Ö×éÖµ1ÅäÖÃID)")
    GameWorld.DebugAnswer(curPlayer, "ÔËÓª»î¶¯°ñÀàÐÍ:158-bossƾ֤,160-ƾ֤ÏÉÃË,162-ÏÉÏ»,163-¹Å±¦,164-Æï³è")
    GameWorld.DebugAnswer(curPlayer, "¹ÅÉñÕ½³¡°ñÀàÐÍ:151-²ÎÓë°ñ,152-ÕÙ¼¯°ñ,153-»ý·Ö°ñ")
    GameWorld.DebugAnswer(curPlayer, "Öð¹Íò½ç°ñÀàÐÍ:156-µ¥³¡°ñ,157-Öܰñ")
    GameWorld.DebugAnswer(curPlayer, "¿ç·þ¾º¼¼³¡°ñµ¥:165,·Ö×éÖµ1-·ÖÇø,·Ö×éÖµ2-Èü¼¾,value2-¶Îλ")
    GameWorld.DebugAnswer(curPlayer, "×¢:Èç¹ûûÓÐÌØÊâ˵Ã÷£¬·Ö×éÖµ1Ϊ·ÖÇøID,·Ö×é2Ϊ0")
    return
 
## Ö´ÐÐÂß¼­
#  @param curPlayer µ±Ç°Íæ¼Ò
#  @param gmList []
#  @return None
def OnExec(curPlayer, gmList):
    
    paramLen = len(gmList)
    if paramLen < 3:
        __Help(curPlayer)
        return
    
    billboardType = gmList[0]
    if billboardType not in ShareDefine.CrossBillboardTypeList:
        __Help(curPlayer, "°ñµ¥ÀàÐͲ»´æÔÚ!")
        return
    
    GameWorld.DebugAnswer(curPlayer, "·¢ËÍÍê±Ï£¬Ö´Ðнá¹û²é¿´¿ç·þ·þÎñÆ÷!")
    return
 
def OnGetMergeParam(curPlayer):
    ## ¿ç·þÃüÁî¶îÍâ²ÎÊý
    return []
 
def OnMergeServerExec(gmList, tick):
    ## ¿ç·þÖ´ÐÐÃüÁî
    
    paramLen = len(gmList)
    if paramLen < 3:
        return
    
    billboardType = gmList[0]
    groupValue1 = gmList[1]
    groupValue2 = gmList[2]
    
    billboardMgr = PyDataManager.GetCrossBillboardManager()
    billboardObj = billboardMgr.GetCrossBillboard(billboardType, groupValue1, groupValue2)
    
    curDataCount = billboardObj.GetCount()
    maxDataCount = billboardObj.GetMaxCount()
    
    # Çå³ý°ñµ¥¼ÙÊý¾Ý
    if paramLen == 3:
        billboardObj.ClearData()
        GameWorld.Log("ɾ³ý¿ç·þ°ñµ¥(%s-%s-%s): %s Ìõ" % (billboardType, groupValue1, groupValue2, curDataCount))
        return
    
    count = gmList[3] if len(gmList) > 3 else 0
    cmpValue1 = gmList[4] if len(gmList) > 4 else 0
    cmpValue2 = gmList[5] if len(gmList) > 5 else 0
    value1 = gmList[6] if len(gmList) > 6 else 0
    value2 = gmList[7] if len(gmList) > 7 else 0
    value3 = gmList[8] if len(gmList) > 8 else 0
    value4 = gmList[9] if len(gmList) > 9 else 0
    value5 = gmList[10] if len(gmList) > 10 else 0
    
    id2 = 0
    type2 = 0
    name2 = ""
    cmpValue3 = 0
    
    count = min(count, maxDataCount - curDataCount)
    FakeName = "¼ÙÃû×Ö".decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())
    
    for i in xrange(count):
        dataPlayerID = 1000 + curDataCount + 1 + i
        dataPlayerName = "%s%s" % (FakeName, dataPlayerID)
        dataCmpValue1 = max(0, cmpValue1 - i)
        dataCmpValue2 = max(0, cmpValue2 - i)
        
        dataID = dataPlayerID
        name1 = dataPlayerName
        cmpValue = dataCmpValue1
        cmpValue2 = dataCmpValue2
        CrossBillboard.UpdCrossBillboard(billboardType, groupValue1, dataID, name1, name2, type2, value1, value2, 
                                         cmpValue, cmpValue2, cmpValue3, groupValue2, id2,
                                         value3=value3, value4=value4, value5=value5)
        
    GameWorld.Log("²åÈëÐé¼Ù°ñµ¥(%s-%s-%s): %s Ìõ" % (billboardType, groupValue1, groupValue2, count))
    return