#!/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  
 | 
  
 | 
  
 |