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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Player.RemoteQuery.GY_Query_EnterFBTeamAsk
#
# @todo:×é¶Ó½øÈ븱±¾ÇëÇó
# @author hxp
# @date 2017-11-09
# @version 1.0
#
# ÏêϸÃèÊö: ¶Ó³¤·¢Æð½øÈ븱±¾ºó£¬ÑéÖ¤¸÷¸ö¶ÓÔ±ÊÇ·ñ¿ÉÒÔ½øÈë¸Ã¸±±¾
#
#-------------------------------------------------------------------------------
#"""Version = 2017-11-09 22:00"""
#-------------------------------------------------------------------------------
 
#µ¼Èë
import FBLogic
import PlayerControl
import GameWorld
import FBCommon
import ChConfig
#---------------------------------------------------------------------
 
 
#---------------------------------------------------------------------
#Âß¼­ÊµÏÖ
## ÇëÇóÂß¼­
#  @param query_Type ÇëÇóÀàÐÍ
#  @param query_ID ÇëÇóµÄÍæ¼ÒID
#  @param packCMDList ·¢°üÃüÁî [ ]
#  @param tick µ±Ç°Ê±¼ä
#  @return "True" or "False" or ""
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def DoLogic(query_Type, query_ID, packCMDList, tick):
    GameWorld.Log("GY_Query_EnterFBTeamAsk DoLogic() query_Type=%s,query_ID=%s,packCMDList=%s,tick=%s" % 
                  (query_Type, query_ID, packCMDList, tick))
    
    curFindPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
    if not curFindPlayer or curFindPlayer.IsEmpty():
        return ""
    
    if not packCMDList or len(packCMDList) != 5:
        GameWorld.Log("    DoLogic() return []")
        return ""
    
    #teamID, askVer, askType, askMapID, askMapEx
    askMapID = packCMDList[3]  # Ä¿±êµØÍ¼id
    askMapEx = packCMDList[4]  # Ä¿±êµØÍ¼Ïß·ÊôÐÔ,´Ó0¿ªÊ¼
    
    #½øÈ븱±¾Í¨Óüì²é
    fbIpyData = FBCommon.GetFBIpyData(askMapID)
    fbLineIpyData = FBCommon.GetFBLineIpyData(askMapID, askMapEx)
    ret = PlayerControl.CheckMoveToFB(curFindPlayer, askMapID, askMapEx, fbIpyData, fbLineIpyData, tick, False, True)
    return packCMDList + [query_ID, ret, curFindPlayer.GetName()]
 
 
#Ö´Ðнá¹û
## Ö´Ðнá¹û
#  @param curPlayer ·¢³öÇëÇóµÄÍæ¼Ò
#  @param callFunName ¹¦ÄÜÃû³Æ
#  @param funResult ²éѯµÄ½á¹û
#  @param tick µ±Ç°Ê±¼ä
#  @return None
#  @remarks º¯ÊýÏêϸ˵Ã÷.
def DoResult(curPlayer, callFunName, funResult, tick):
    resultInfo = eval(funResult)
    mapID, lineID = resultInfo[:2]
    averageLV, maxLV, playerCnt = 0, 0, 0
    if len(resultInfo) == 5:
        averageLV, maxLV, playerCnt = resultInfo[2:5]
    GameWorld.Log("GY_Query_EnterFBTeamAsk mapID=%s,lineID=%s,averageLV=%s,maxLV=%s,playerCnt=%s,funResult=%s" 
                  % (mapID, lineID, averageLV, maxLV, playerCnt, str(funResult)), curPlayer.GetPlayerID())
    
    if maxLV > 0:
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TeamFBAverageLV, averageLV)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TeamFBMaxLV, maxLV)
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_TeamFBPlayerCnt, playerCnt)
        
    # ÇëÇó½øÈëFBµã
    ipyEnterPosInfo = FBCommon.GetFBLineEnterPosInfo(mapID, lineID)
    retPos = FBLogic.OnGetFBEnterPos(curPlayer, mapID, lineID, ipyEnterPosInfo, tick)
    
    if not retPos:
        return
    
    #===============================================================================================
    # # ÑéÖ¤´«ËÍNPCÌõ¼þÊÇ·ñ·ûºÏ
    # if not EventShell.DoLogic_EnterFbGameEvent(curPlayer, mapID, tick):
    #    return
    #===============================================================================================
    
    # ´«ËÍÂß¼­
    PlayerControl.PlayerResetWorldPosFB(curPlayer, mapID, retPos[0], retPos[1], False, funcLineID=lineID)
    return