#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.Xiangong # # @todo:Ïɹ¬ # @author hxp # @date 2024-09-04 # @version 1.0 # # ÏêϸÃèÊö: Ïɹ¬ # #------------------------------------------------------------------------------- #"""Version = 2024-09-04 16:30""" #------------------------------------------------------------------------------- import GameWorld import ShareDefine import IpyGameDataPY import PyDataManager import GameXiangong import ChConfig import random import time #Âß¼­ÊµÏÖ ## Ö´ÐÐÂß¼­ # @param curPlayer µ±Ç°Íæ¼Ò # @param gmList [cmdIndex gmAccID msg] # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(curPlayer, gmList): ## ±¾·þ´¦Àí if not gmList: GameWorld.DebugAnswer(curPlayer, "²åÈëнúÏɹÙ: Xiangong a Ïɹ¬ID ¸öÊý [¿ÉÊÓÇø·þIDA ÖÁÇø·þIDB Ãû´Î ¿ÉÖ¸¶¨ID ...]") GameWorld.DebugAnswer(curPlayer, "Çå³ýÏɹ¬ÏɹÙ: Xiangong d Ïɹ¬ID") GameWorld.DebugAnswer(curPlayer, "Êä³öÏɹ¬ÏɹÙ: Xiangong p Ïɹ¬ID") GameWorld.DebugAnswer(curPlayer, "×¢£º²åÈëÖ¸¶¨ÏɹÙIDǰÌáµÃ¸ÃÍæ¼ÒÔÚ¿ç·þÓлº´æ") return return def OnGetMergeParam(curPlayer): playerID = curPlayer.GetPlayerID() serverGroupID = GameWorld.GetServerGroupID() return [serverGroupID, playerID] def OnMergeServerExec(gmList, tick): ## ¿ç·þ´¦Àí serverGroupID = gmList[-2] playerID = gmList[-1] gmList = gmList[:-2] if not gmList: return value1 = gmList[0] if value1 == "a": xiangongID = gmList[1] if len(gmList) > 1 else 0 addCount = gmList[2] if len(gmList) > 2 else 1 serverIDA = gmList[3] if len(gmList) > 3 else 1 serverIDB = gmList[4] if len(gmList) > 4 else 9999 order = gmList[5] if len(gmList) > 5 else None playerIDList = gmList[6:] if len(gmList) > 6 else [] serverIDList = [[serverIDA, serverIDB]] ipyData = IpyGameDataPY.GetIpyGameData("Xiangong", xiangongID) if not ipyData: GameWorld.DebugAnswerCross(playerID, serverGroupID, "Ïɹ¬ID²»´æÔÚ:%s" % (xiangongID)) return syncDict = {} for _ in xrange(addCount): if playerIDList: addPlayerID = playerIDList.pop(0) else: addPlayerID = random.randint(1000, 2000) GameXiangong.AddXiangongPlayer(xiangongID, addPlayerID, serverIDList, order, syncDict) GameXiangong.SendNewXiangongPlayerToClientServer(syncDict) gameRecMgr = PyDataManager.GetDBGameRecDataManager() recDataList = gameRecMgr.GetGameRecDataList(ShareDefine.Def_GameRecType_Xiangong, xiangongID) GameWorld.DebugAnswerCross(playerID, serverGroupID, "²åÈëнúÏɹÙ:%s, ÏɹÙID:%s, ÏɹÙ×ÜÊý:%s" % (addCount, xiangongID, len(recDataList))) return if value1 == "d": xiangongID = gmList[1] if len(gmList) > 1 else 0 ipyData = IpyGameDataPY.GetIpyGameData("Xiangong", xiangongID) if not ipyData: GameWorld.DebugAnswerCross(playerID, serverGroupID, "Ïɹ¬ID²»´æÔÚ:%s" % (xiangongID)) return gameRecMgr = PyDataManager.GetDBGameRecDataManager() delCount = gameRecMgr.DelGameRecDataByTypeID(ShareDefine.Def_GameRecType_Xiangong, xiangongID) GameWorld.DebugAnswerCross(playerID, serverGroupID, "Çå³ýÏɹ¬ÏɹÙ:%s, ÏɹÙID:%s" % (delCount, xiangongID)) GameWorld.DebugAnswerCross(playerID, serverGroupID, "Èç¹ûÒª»ñµÃÕýÈ·µÄչʾÏɹÙÇëÖØµÇ") return if value1 == "p": xiangongID = gmList[1] if len(gmList) > 1 else 0 startIndex = gmList[2] if len(gmList) > 2 else 0 gameRecMgr = PyDataManager.GetDBGameRecDataManager() recDataList = gameRecMgr.GetGameRecDataList(ShareDefine.Def_GameRecType_Xiangong, xiangongID) GameWorld.DebugAnswerCross(playerID, serverGroupID, "Ïɹ¬ID:%s, ÏɹÙ×ÜÊý:%s" % (xiangongID, len(recDataList))) curTime = int(time.time()) for i, recData in enumerate(recDataList[startIndex:startIndex + 20], startIndex): xgPlayerID = GameXiangong.GetXGPlayerID(recData) serverIDList = recData.GetUserDataByKey(ChConfig.Def_RecDataKey_ServerIDList) addTime = recData.GetTime() passDays = GameWorld.GetDiff_Day(curTime, addTime) + 1 GameWorld.DebugAnswerCross(playerID, serverGroupID, " %s,ID:%s,ÌìÊý:%s,Çø·þ:%s" % (i, xgPlayerID, passDays, serverIDList)) return return