1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/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