| #!/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 ³£¹æÖµ2)")  | 
|     GameWorld.DebugAnswer(curPlayer, "ɾ³ý¿ç·þ°ñµ¥¼ÙÊý¾Ý: BillboardDataCross ÀàÐÍ ·Ö×éÖµ1 ·Ö×éÖµ2")  | 
|     GameWorld.DebugAnswer(curPlayer, "¿ç·þÔËÓª»î¶¯°ñÀàÐÍ:150-³äÖµ(·Ö×éÖµ1ÅäÖÃID)")  | 
|     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  | 
|       | 
|     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 = curDataCount + 1 + i  | 
|         dataPlayerName = "%s%s" % (FakeName, i)  | 
|         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)  | 
|           | 
|     GameWorld.Log("²åÈëÐé¼Ù°ñµ¥(%s-%s-%s): %s Ìõ" % (billboardType, groupValue1, groupValue2, count))  | 
|     return  | 
|   | 
|   |