#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package GM.Commands.CrossBattle
|
#
|
# @todo:¿ç·þÕ½³¡
|
# @author hxp
|
# @date 2022-01-06
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ¿ç·þÕ½³¡
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2022-01-06 20:30"""
|
#-------------------------------------------------------------------------------
|
|
import GameWorld
|
import GameLogic_CrossBattlefield
|
import ShareDefine
|
import ChConfig
|
import FBCommon
|
import operator
|
import random
|
|
|
## Â߼ʵÏÖ
|
# @param curPlayer
|
# @param cmdList ²ÎÊýÁбí
|
# @return None
|
def OnExec(curPlayer, cmdList):
|
|
if not cmdList:
|
GameWorld.DebugAnswer(curPlayer, "--------------------------------")
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍæ¼Ò»ý·Ö: CrossBattle 1 ×Ü»ý·Ö [¿ÉÑ¡Íæ¼ÒID]")
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍæ¼Ò»÷ɱ: CrossBattle 2 »÷ɱÊý [¿ÉÑ¡Íæ¼ÒID]")
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍæ¼Ò¹±Ï×: CrossBattle 3 ¹±Ï×¶È [¿ÉÑ¡Íæ¼ÒID]")
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÕóÓª»ý·Ö: CrossBattle 4 ×Ü»ý·Ö [¿ÉÑ¡ÕóÓªID]")
|
GameWorld.DebugAnswer(curPlayer, "ÖØÐÂËæ»ú´ó½±: CrossBattle 5")
|
GameWorld.DebugAnswer(curPlayer, "¸´»îÕóÓªÊØÎÀ: CrossBattle 6")
|
GameWorld.DebugAnswer(curPlayer, "ÐéÄâ²ÎÓëÍæ¼Ò: CrossBattle 7 ÕóÓªID ÈËÊý »ý·Ö")
|
GameWorld.DebugAnswer(curPlayer, "Êä³öÕóÓªÍæ¼Ò: CrossBattle 8 ÕóÓªID")
|
GameWorld.DebugAnswer(curPlayer, "¿ÉÑ¡Íæ¼Ò/ÕóÓªIDûÌîÔòĬÈÏ×ÔÉí")
|
return
|
|
tick = GameWorld.GetGameWorld().GetTick()
|
playerID = curPlayer.GetPlayerID()
|
mapID = FBCommon.GetRecordMapID(GameWorld.GetMap().GetMapID())
|
value1 = cmdList[0]
|
if value1 in [1, 2, 3, 4, 5, 6] and not GameWorld.IsCrossServer() or mapID != ChConfig.Def_FBMapID_CrossBattlefield:
|
GameWorld.DebugAnswer(curPlayer, "¸ÃÃüÁîÐèÔÚ¿ç·þÕ½³¡Ê¹ÓÃCrossServer·¢ËÍ")
|
return
|
|
# ÉèÖÃÍæ¼Ò»ý·Ö
|
if value1 == 1:
|
setScore = cmdList[1] if len(cmdList) > 1 else 1
|
tagPlayerID = cmdList[2] if len(cmdList) > 2 else playerID
|
battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(tagPlayerID)
|
battleObj.addPlayerScore(curPlayer, setScore - battleObj.score)
|
GameWorld.DebugAnswer(curPlayer, "Íæ¼Ò(%s)»ý·Ö: %s" % (tagPlayerID, battleObj.score))
|
GameLogic_CrossBattlefield.NotifyBattlefieldHelp()
|
return
|
|
# ÉèÖÃÍæ¼Ò»÷ɱ
|
if value1 == 2:
|
setCount = cmdList[1] if len(cmdList) > 1 else 1
|
tagPlayerID = cmdList[2] if len(cmdList) > 2 else playerID
|
battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(tagPlayerID)
|
battleObj.addKillCount(setCount - battleObj.killCount)
|
GameWorld.DebugAnswer(curPlayer, "Íæ¼Ò(%s)»÷ɱÊý: %s, Á¬É±Êý: %s" % (tagPlayerID, battleObj.killCount, battleObj.continueKillCount))
|
GameLogic_CrossBattlefield.NotifyBattlefieldHelp()
|
return
|
|
# ÉèÖÃÍæ¼Ò¹±Ï×¶È
|
if value1 == 3:
|
setProgress = cmdList[1] if len(cmdList) > 1 else 1
|
tagPlayerID = cmdList[2] if len(cmdList) > 2 else playerID
|
battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(tagPlayerID)
|
battleObj.addSuperItemContribution(setProgress - battleObj.superItemContribution)
|
GameWorld.DebugAnswer(curPlayer, "Íæ¼Ò(%s)¹±Ï×¶È: %s" % (tagPlayerID, battleObj.superItemContribution))
|
GameLogic_CrossBattlefield.NotifyBattlefieldHelp()
|
return
|
|
# ÉèÖÃÕóÓª»ý·Ö
|
if value1 == 4:
|
setScore = cmdList[1] if len(cmdList) > 1 else 1
|
tagFaction = cmdList[2] if len(cmdList) > 2 else 0
|
if not tagFaction or tagFaction not in ShareDefine.CampTypeList:
|
battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(playerID)
|
tagFaction = battleObj.faction
|
factionObj = GameLogic_CrossBattlefield.GetBattleFactionObj(tagFaction)
|
factionObj.addFactionScore(setScore - factionObj.score)
|
GameWorld.DebugAnswer(curPlayer, "ÕóÓª(%s)»ý·Ö: %s" % (tagFaction, factionObj.score))
|
GameLogic_CrossBattlefield.NotifyBattlefieldHelp()
|
return
|
|
# ÖØÖôó½±ÐÅÏ¢
|
if value1 == 5:
|
worldObj = GameLogic_CrossBattlefield.GetBattleWorld()
|
worldObj.RandSuperTask()
|
GameWorld.DebugAnswer(curPlayer, "ÖØÐÂËæ»ú´ó½±OK! %s" % worldObj.superItemInfo)
|
GameLogic_CrossBattlefield.NotifyBattlefieldHelp(True)
|
return
|
|
# ¸´»îÕóÓªÊØÎÀ
|
if value1 == 6:
|
rebornNPCIDList = GameLogic_CrossBattlefield.rebornGurad()
|
GameWorld.DebugAnswer(curPlayer, "¸´»îÕóÓªÊØÎÀ! %s" % rebornNPCIDList)
|
return
|
|
# ÐéÄâ²ÎÓëÍæ¼Ò
|
if value1 == 7:
|
faction = cmdList[1] if len(cmdList) > 1 else 1
|
playerCount = cmdList[2] if len(cmdList) > 2 else 0
|
score = cmdList[3] if len(cmdList) > 3 else 0
|
|
fakePlayerID = 1000 # ¼ÙÍæ¼ÒID
|
for f in [1, 2]:
|
fObj = GameLogic_CrossBattlefield.GetBattleFactionObj(f)
|
for playerID in fObj.factionPlayerDict.keys():
|
if playerID >= 10000:
|
continue
|
if playerID > fakePlayerID:
|
fakePlayerID = playerID
|
|
factionObj = GameLogic_CrossBattlefield.GetBattleFactionObj(faction)
|
|
for _ in xrange(playerCount):
|
fakePlayerID += 1
|
battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(fakePlayerID)
|
battleObj.job = random.randint(1, 2)
|
battleObj.accID = "fakeAccID%s@test@s86" % fakePlayerID
|
battleObj.name = "fakeName%s" % fakePlayerID
|
battleObj.realmLV = random.randint(10, 20)
|
battleObj.fightPower = random.randint(10000000, 20000000)
|
|
battleObj.faction = faction
|
battleObj.factionObj = factionObj
|
if fakePlayerID not in factionObj.factionPlayerDict:
|
factionObj.factionPlayerDict[fakePlayerID] = battleObj
|
|
battleObj.addPlayerScore(None, score, isCheckVictory=False)
|
|
GameWorld.DebugAnswer(curPlayer, "ÐéÄâ²ÎÓëÍæ¼ÒÕóÓª(%s),ÈËÊý(%s),»ý·Ö(%s)" % (faction, playerCount, score))
|
return
|
|
# Êä³öÕóÓªÍæ¼Ò
|
if value1 == 8:
|
printFaction = cmdList[1] if len(cmdList) > 1 else 0
|
for faction in [1, 2]:
|
if printFaction and printFaction != faction:
|
continue
|
factionObj = GameLogic_CrossBattlefield.GetBattleFactionObj(faction)
|
|
factionObj.battlePlayerSortList = factionObj.factionPlayerDict.values()
|
factionObj.battlePlayerSortList.sort(key=operator.attrgetter("score", "scoreSortTime"), reverse=True)
|
GameWorld.DebugAnswer(curPlayer, "------ ÕóÓª£¨%s£©,ÈËÊý£¨%s£© ------" % (faction, len(factionObj.battlePlayerSortList)))
|
|
for num, batObj in enumerate(factionObj.battlePlayerSortList, 1):
|
battleObj = GameLogic_CrossBattlefield.GetBattlePlayerObj(batObj.playerID)
|
playerID = battleObj.playerID
|
playerName = battleObj.name.decode(GameWorld.GetCharacterEncoding()).encode(ShareDefine.Def_Game_Character_Encoding)
|
score = battleObj.score
|
superItemContribution = battleObj.superItemContribution
|
GameWorld.DebugAnswer(curPlayer, " %s %s:%s,µÃ·Ö:%s,¹±Ï×:%s" % (num, playerName, playerID, score, superItemContribution))
|
|
return
|
|
|
return
|