#!/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)") 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 = 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, value3=value3, value4=value4, value5=value5) GameWorld.Log("²åÈëÐé¼Ù°ñµ¥(%s-%s-%s): %s Ìõ" % (billboardType, groupValue1, groupValue2, count)) return