#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package GameWorldLogic.FBProcess.GameLogic_GeneralTrain
|
#
|
# @todo:ͨÓÃÑø³É¸±±¾
|
# @author hxp
|
# @date 2024-06-26
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: ͨÓÃÑø³É¸±±¾
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2024-06-26 14:30"""
|
#-------------------------------------------------------------------------------
|
|
import FBCommon
|
import GameWorld
|
import IpyGameDataPY
|
import ItemControler
|
import ChConfig
|
|
## ÊÇ·ñÄܹ»Í¨¹ý»î¶¯²éѯ½øÈë
|
def OnEnterFBEvent(curPlayer, mapID, lineID, tick):
|
ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
|
if not ipyData:
|
return False
|
|
LVLimit = ipyData.GetLVLimit()
|
if LVLimit and curPlayer.GetLV() < LVLimit:
|
GameWorld.DebugLog("ͨÓÃÑø³É¸±±¾µÈ¼¶²»×㣬ÎÞ·¨ÌôÕ½! mapID=%s,lineID=%s,LVLimit=%s" % (mapID, lineID, LVLimit))
|
return False
|
|
RealmLimit = ipyData.GetRealmLimit()
|
if RealmLimit and curPlayer.GetOfficialRank() < RealmLimit:
|
GameWorld.DebugLog("ͨÓÃÑø³É¸±±¾¾³½ç²»×㣬ÎÞ·¨ÌôÕ½! mapID=%s,lineID=%s,RealmLimit=%s" % (mapID, lineID, RealmLimit))
|
return False
|
|
passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
|
if passLineID + 1 != lineID:
|
GameWorld.DebugLog("ͨÓÃÑø³É¸±±¾Ö»ÄÜÌôÕ½ÏÂÒ»¹Ø! mapID=%s,lineID=%s,passLineID=%s" % (mapID, lineID, passLineID))
|
return False
|
|
return True
|
|
## ÊÇ·ñÐèÒª×ö½øÈ븱±¾Í¨Óüì²éÌõ¼þÂß¼£¬Ä¬ÈÏÐèÒª¼ì²é
|
def OnNeedCheckCanEnterFBComm(curPlayer, mapID, lineID):
|
## ½øÐÐÖеIJ»ÐèÒªÖØ¸´¼ì²é£¬·ÀÖ¹¶ÏÏßÖØÁ¬±»½ûÖ¹½øÈë
|
return True
|
|
def GetGeneralTrainNPCIDList(mapID, lineID):
|
npcIDList = []
|
ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
|
if not ipyData:
|
return []
|
|
npcIDList.append(ipyData.GetBossNPCID())
|
npcIDList.extend(ipyData.GetOtherNPCIDList())
|
return npcIDList
|
|
def GetGeneralTrainBossID(mapID, lineID):
|
ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
|
if not ipyData:
|
return 0
|
return ipyData.GetBossNPCID()
|
|
## ¿É·ñɨµ´
|
def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
|
|
ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
|
if not ipyData:
|
return
|
|
passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
|
if passLineID < lineID:
|
GameWorld.DebugLog("ûÓйý¹Ø²»ÄÜɨµ´! mapID=%s,passLineID=%s < %s" % (mapID, passLineID, lineID))
|
return
|
|
return True
|
|
## ɨµ´½á¹û
|
def OnPlayerFBSweepResult(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
|
GameWorld.DebugLog("ͨÓÃÑø³É¸±±¾É¨µ´: mapID=%s,lineID=%s,sweepCnt=%s" % (mapID, lineID, sweepCnt))
|
ipyData = IpyGameDataPY.GetIpyGameData('FBGeneralTrain', mapID, lineID)
|
if not ipyData:
|
return
|
|
giveItemList = ipyData.GetPassAwardItemList()
|
awardItemList = []
|
for itemID, itemCount, isAuctionItem in giveItemList:
|
awardItemList.append([itemID, itemCount * sweepCnt, isAuctionItem])
|
|
ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList)
|
|
isPass = 1
|
overDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(awardItemList), FBCommon.Over_isSweep:1}
|
FBCommon.NotifyFBOver(curPlayer, mapID, lineID, isPass, overDict)
|
return True
|