#!/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