#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package GM.Commands.PlayerMirror
|
#
|
# @todo:¾µÏñÊý¾Ý
|
# @author hxp
|
# @date 2024-12-26
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ¾µÏñÊý¾Ý
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2024-12-26 17:00"""
|
#-------------------------------------------------------------------------------
|
|
import ChConfig
|
import ShareDefine
|
import PyDataManager
|
import PlayerPackData
|
import ReadChConfig
|
import GameWorld
|
|
import base64
|
import random
|
|
## Ö´ÐÐÂß¼
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param gmList []
|
# @return None
|
def OnExec(curPlayer, gmList):
|
if not gmList:
|
return
|
value = gmList[0]
|
if value == "a":
|
__addFackPackData(gmList[1:])
|
elif value == "d":
|
__delFackPackData()
|
elif value == "p":
|
__printPackData(gmList[1:])
|
return
|
|
def OnGetMergeParam(curPlayer):
|
return []
|
|
def OnMergeServerExec(gmList, tick):
|
## ¿ç·þÖ´ÐÐÃüÁî
|
value = gmList[0]
|
if value == "a":
|
__addFackPackData(gmList[1:])
|
elif value == "d":
|
__delFackPackData()
|
elif value == "p":
|
__printPackData(gmList[1:])
|
return
|
|
def __addFackPackData(gmList):
|
## Ìí¼Ó¼ÙµÄ´ò°üÊý¾Ý£¬Ò»°ãÓÃÓÚ¿ª·¢²âÊÔ¹¦ÄÜÓÃ
|
FakeName = "¼ÙÃû×Ö".decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())
|
packDataMgr = PyDataManager.GetDBPlayerPackDataManager()
|
#GameWorld.DebugAnswer(curPlayer, "Ìí¼Ó¾µÏñ: PlayerMirror a ¸öÊý [ÆðʼID Õ½Á¦ Çø·þID Ä£°ækey]")
|
addCount = gmList[0] if len(gmList) > 0 else 1
|
startID = gmList[1] if len(gmList) > 1 else 1
|
fightPower = gmList[2] if len(gmList) > 2 else 0
|
serverID = gmList[3] if len(gmList) > 3 else 0
|
packDataTempKey = gmList[4] if len(gmList) > 4 else ""
|
|
jobFackPackDataDict = ReadChConfig.GetEvalChConfig("FackPackData")
|
|
addOKCount = 0
|
for index in range(addCount):
|
fackID = startID + index
|
if packDataMgr.IsPlayerIn(fackID):
|
continue
|
|
job = random.randint(1, 2)
|
tempKey = packDataTempKey if packDataTempKey else "job%s" % job
|
if tempKey not in jobFackPackDataDict:
|
GameWorld.DebugAnswer(None, "ÅäÖÃFackPackData.txtûÓиÃÄ£°ækey:%s" % tempKey)
|
return
|
packDataTeam = jobFackPackDataDict[tempKey]
|
packDataTeamBuff = base64.b64decode(packDataTeam)
|
|
tempDBPlayer = PlayerPackData.GetDBPlayerByPackData(packDataTeam)
|
tempDBPlayer.PlayerID = fackID
|
tempDBPlayer.PlayerName = "%s%s" % (FakeName, fackID)
|
curServerID = serverID if serverID else fackID / 100
|
if not curServerID:
|
curServerID = 9999
|
tempDBPlayer.AccID = "fack%s@test@s%s" % (fackID, curServerID)
|
# ûÓÐÖ¸¶¨Ä£°æ£¬ÔòËæ»úÊý¾Ý
|
if not packDataTempKey:
|
tempDBPlayer.Job = job
|
tempDBPlayer.LV = random.randint(tempDBPlayer.LV, tempDBPlayer.LV + 2)
|
tempDBPlayer.OfficialRank = random.randint(tempDBPlayer.OfficialRank, tempDBPlayer.OfficialRank + 2)
|
|
curFightPower = fightPower if fightPower else (tempDBPlayer.FightPowerEx * ChConfig.Def_PerPointValue + tempDBPlayer.FightPower)
|
curFightPower += index
|
tempDBPlayer.FightPower = curFightPower % ChConfig.Def_PerPointValue
|
tempDBPlayer.FightPowerEx = curFightPower / ChConfig.Def_PerPointValue
|
|
updBuff = tempDBPlayer.getBuffer() + packDataTeamBuff[tempDBPlayer.getLength():]
|
updPackData = base64.b64encode(updBuff)
|
packDataMgr.UpdPlayerPackData(fackID, updPackData)
|
addOKCount += 1
|
|
packDataMgr.Sort()
|
|
GameWorld.DebugAnswer(None, "Ìí¼Ó¼ÙÍæ¼Ò´ò°üÊý¾ÝÊý:%s,×Ü:%s" % (addOKCount, packDataMgr.GetCount()))
|
return
|
|
def __delFackPackData():
|
|
delCount = 0
|
packDataMgr = PyDataManager.GetDBPlayerPackDataManager()
|
for index in range(packDataMgr.GetCount())[::-1]:
|
packObj = packDataMgr.At(index)
|
if packObj.playerID >= 10000:
|
continue
|
packDataMgr.DelPlayerPackData(packObj.playerID)
|
delCount += 1
|
|
GameWorld.DebugAnswer(None, "ɾ³ý¼ÙÍæ¼Ò´ò°üÊý¾ÝÊý:%s,Ê£:%s" % (delCount, packDataMgr.GetCount()))
|
return
|
|
def __printPackData(gmList):
|
startIndex = gmList[0] if len(gmList) > 0 else 0
|
printCount = gmList[1] if len(gmList) > 1 else 100
|
packDataMgr = PyDataManager.GetDBPlayerPackDataManager()
|
packDataMgr.Sort()
|
dataCount = packDataMgr.GetCount()
|
GameWorld.DebugLog("=== ´ò°üÊý¾Ý×ÜÊý: dataCount=%s,startIndex=%s" % (dataCount, startIndex))
|
for index in range(startIndex, startIndex + printCount):
|
if index >= dataCount:
|
break
|
packObj = packDataMgr.At(index)
|
playerID = packObj.playerID
|
fightPower = packObj.fightPower
|
serverID = packObj.serverID
|
GameWorld.DebugLog("index=%s,playerID=%s,serverID=%s,fightPower=%s,%s" % (index, playerID, serverID, fightPower, packObj.GetBaseDict()))
|
GameWorld.DebugAnswer(None, "Êä³öÍê±ÏÏê¼ûGameServerÈÕÖ¾!×Ü:%s" % (dataCount))
|
return
|
|