#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package GM.Commands.BillboardData  
 | 
#  
 | 
# @todo:°ñµ¥Êý¾Ý  
 | 
# @author hxp  
 | 
# @date 2019-03-30  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: °ñµ¥Êý¾Ý  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2019-03-30 17:00"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import GameWorld  
 | 
import ShareDefine  
 | 
import PlayerBillboard  
 | 
  
 | 
def __Help(curPlayer, errInfo=""):  
 | 
    GameWorld.DebugAnswer(curPlayer, "---------- %s" % GameWorld.GetCurrentDataTimeStr())  
 | 
    if errInfo:  
 | 
        GameWorld.DebugAnswer(curPlayer, errInfo)  
 | 
    GameWorld.DebugAnswer(curPlayer, "ÐÂÔö°ñµ¥¼ÙÊý¾Ý: BillboardData ÀàÐÍ ÌõÊý ±È½ÏÖµ1 ¿ÉÑ¡²ÎÊý(±È½ÏÖµ2 ³£¹æÖµ1 ³£¹æÖµ2)")  
 | 
    GameWorld.DebugAnswer(curPlayer, "ɾ³ý°ñµ¥¼ÙÊý¾Ý: BillboardData ÀàÐÍ")  
 | 
    GameWorld.DebugAnswer(curPlayer, "°ñµ¥ÀàÐÍ:0-Õ½Á¦,1-Áú»ê,2-ÁéÑþ,4-µÈ¼¶,5-×øÆï,6-Áé³è,7-·ûÓ¡,8-ÍÑ»ú,9-¾³½ç,19-ÖúÕ½,23-ÖïÏÉ")  
 | 
    GameWorld.DebugAnswer(curPlayer, "¿ª·þ»î¶¯°ñÀàÐÍ:11-Ç¿»¯,12-×øÆï,13-±¦Ê¯,14-³å¼¶,15-¾³½ç,16-Õ½Á¦,18-·ûÓ¡,20-Éñ±ø,21-³äÖµ,22-Áé³è")  
 | 
    GameWorld.DebugAnswer(curPlayer, "ÔËÓª»î¶¯°ñÀàÐÍ:17-ÏɽçÊ¢µä,24-ÏɽçÊ¢µä2")  
 | 
    return  
 | 
  
 | 
## Ö´ÐÐÂß¼  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param gmList []  
 | 
#  @return None  
 | 
def OnExec(curPlayer, gmList):  
 | 
      
 | 
    paramLen = len(gmList)  
 | 
    if not paramLen:  
 | 
        __Help(curPlayer)  
 | 
        return  
 | 
      
 | 
    billboardIndex = gmList[0]  
 | 
    if billboardIndex < 0 or billboardIndex >= ShareDefine.Def_BT_Max:  
 | 
        __Help(curPlayer, "°ñµ¥ÀàÐͲ»´æÔÚ!")  
 | 
        return  
 | 
    billBoard = GameWorld.GetBillboard().FindBillboard(billboardIndex)  
 | 
    curDataCount = billBoard.GetCount()  
 | 
    maxDataCount = billBoard.GetMaxCount()  
 | 
      
 | 
    # Çå³ý°ñµ¥¼ÙÊý¾Ý  
 | 
    if paramLen == 1:  
 | 
        delCount = 0  
 | 
        while curDataCount > 0:  
 | 
            curDataCount -= 1  
 | 
            index = curDataCount  
 | 
            billBoardData = billBoard.At(index)  
 | 
            if billBoardData.GetID() <= maxDataCount:  
 | 
                billBoard.DeleteByIndex(index)  
 | 
                delCount += 1  
 | 
                  
 | 
        GameWorld.DebugAnswer(curPlayer, "ɾ³ý°ñµ¥(%s)Êý¾Ý: %s Ìõ" % (billboardIndex, delCount))  
 | 
        return  
 | 
      
 | 
    if paramLen < 3:  
 | 
        __Help(curPlayer)  
 | 
        return  
 | 
      
 | 
    billboardIndex, count, cmpValue1 = gmList[:3]  
 | 
    cmpValue2 = gmList[3] if len(gmList) > 3 else 0  
 | 
    value1 = gmList[4] if len(gmList) > 4 else 0  
 | 
    value2 = gmList[5] if len(gmList) > 5 else 0  
 | 
      
 | 
    autoSort = False  
 | 
    bType2 = 0  
 | 
    curPlayerOpInfo = ""  
 | 
      
 | 
    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)  
 | 
        cmpValue1 = max(0, cmpValue1 - i)  
 | 
        cmpValue2 = max(0, cmpValue2 - i)  
 | 
        PlayerBillboard.UpdatePlayerBillboard(dataPlayerID, dataPlayerName, curPlayerOpInfo, billboardIndex, bType2, value1, value2, cmpValue1, autoSort, cmpValue2)  
 | 
          
 | 
    billBoard.Sort()  
 | 
      
 | 
    GameWorld.DebugAnswer(curPlayer, "Ìí¼Ó°ñµ¥(%s)Êý¾Ý: %s Ìõ" % (billboardIndex, count))  
 | 
    return  
 | 
  
 | 
  
 |