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
u8hc@sAddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZdZedƒ\ZZZZedƒ\ZZZZZd„Zd„Zd„Zd„Z de"d    „Z#d
„Z$d „Z%d „Z&d „Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-dd„Z.d„Z/d„Z0d„Z1d„Z2d„Z3d„Z4d„Z5id„Z6d„Z7d„Z8d„Z9d „Z:d!„Z;d"„Z<d#„Z=d$„Z>dS(%iÿÿÿÿNt FBDict_LeveliicCstjtjƒS(N(tFBCommontGetFBLineStepTimetChConfigtDef_FBMapID_SkyTower(((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt __GetTrialCfg:scCstjd|ƒS(NtSkyTower(t IpyGameDataPYtGetIpyGameData(tfloor((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytGetTowerIpyData<scCst|ƒdS(N(tSyncSkyTowerInfo(t    curPlayer((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytOnFBPlayerOnLogin?s
c CsGt|ƒ}|sdSi}tjƒ}x»t|jƒƒD]§}|j|ƒ}|jƒ}||krnq;nd}x/|jƒjƒD]}t    |t
|ƒƒ}q‡Wx/|j ƒjƒD]}    t    |t
|    ƒƒ}q¹W|||<q;W|j ƒ}
t d|ggƒ} tjd| |
ƒtjƒj|
ddd| t| ƒƒdS(Nit MixFirstLogins ÌìÐÇËþºÏ·þÊ×µÇͬ²½GameServer: %sR(t__GetSkyTowerCurFloorRtIPY_DatatrangetGetSkyTowerServerChallengeCountt!GetSkyTowerServerChallengeByIndext
GetFloorIDtGetPassRankRewardInfotkeystmaxtinttGetServerRewardInfot GetPlayerIDtstrt    GameWorldtLogtGetPlayerManagertGameServer_QueryPlayerResulttlen( R t
curFloorIDt passFloorInfot
ipyDataMgrtindext ipyDataServertfloorIDtmaxNeedPassCounttranktneedPlayerCounttplayerIDtmsgInfo((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytOnMixFirstLoginCs*     (c Cs8g}|dkr`tjƒ}xWt|jƒƒD](}|j|ƒ}|j|jƒƒq1Wn|dkrx|g}ng}xc|D][}|jt    j
|ƒ}    |     rµ| rµq…nt j ƒ}
||
_ |    |
_|j|
ƒq…Wt jƒ} | jƒt|ƒ| _ || _t| jƒ| _tj|| ƒdS(Ni(tNoneRRRRRtappendRtNomalDictGetPropertyRt$Def_Player_Dict_SkyTowerServerRecordtChPyNetSendPackttagMCSkyTowerServerRewardtFloortServerRewardRecordttagMCSkyTowerInfotClearRtServerRewardListR tServerRewardCountt NetPackCommont SendFakePack( R tserverRewardFloortforcetsyncFloorIDListR#R$R%tserverRewardListR&t recordValuetserverRewardInfotttInfo((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyR _s0               
    cCs|jtjƒS(N(R/RtDef_Player_Dict_SkyTowerFloor(R ((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyR}scCsAtj|tj|ƒtj|tj|ƒtj    d|ƒdS(Ns ¸üÐÂÌìÐÇËþÒÑͨ¹ØÊý %s(
t PlayerControltNomalDictSetPropertyRRBt PlayerSuccesstUptateSuccessProgresst ShareDefinetSuccType_PassSkyTowerRtDebugLog(R R&((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytSetSkyTowerCurfloorIDscCstS(N(tTrue(R tmapIDtlineIdttick((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytOnEnterFBEventŽscCsš|jƒ}t|ƒ}|s6tjd||ƒtS|t|ƒkr`tjd||ƒtS|jƒ|jƒkr–tjd|jƒ|ƒtSt    S(NsÌìÐÇËþ¹Ø¿¨(%s)²»´æÔÚsÌìÐÇËþ±¾¹Ø(%s)Òѹý¹Ø, ÎÞ·¨ÌôÕ½!s!ÌìÐÇËþ±¾¹Ø  µÈ¼¶²»×ã%s, ÎÞ·¨ÌôÕ½!(
RR
RtErrLogtFalseRRItGetLVt    GetNeedLVRK(R R&R*tipyData((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt__CheckCanChallenge“s  cCs|S(N((R RLRMtipyEnterPosInfoRN((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytOnGetFBEnterPos®scCstjS(N(t IPY_GameWorldt    cmeAccept(taskRN((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytOnChangeMapAsk¶scCsøtjƒ}|jƒ}|tkrntƒtd|tjƒjƒ}|jtj    dt
|dƒt ƒns|t krÄtƒt d|tjƒjƒ}|jtjdt
|dƒt ƒn|t krátj|ƒdStj|tjƒdS(Nièi(Rt    GetGameFBt    GetFBSteptFB_State_FightPrepareRtDef_PrepareTimet GetFBStepTickt Sync_TimeTickRXt tttWaitStartRRKtFB_State_Fightingt Def_FightTimet tttTowerTakeRCt PlayerLeaveFBt PlayerActTasktAddActTaskValueRtActTaskType_SkyTower(R RNtgameFBtfbStept notify_tick((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt    DoEnterFB½s   %% %%  cCsdS(N((RN((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt    OnCloseFB×scCstj|ƒdS(N(tGameWorldProcesstCloseFB(R RN((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytDoExitFBàs cCsvtjƒ}|jƒ}|tkr1t|ƒnA|tkrJt|ƒn(|tkrct|ƒn|t    krrndS(N(
RR\R]R^t__DoLogic_FightPrepareRct__DoLogic_FightingtFB_State_FreeTimet__DoLogic_FreeTimetFB_State_Close(RNRjRk((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt    OnProcessês         cCs[tjƒ}|dkr*|jtƒ}nt|ƒ}|sQtjd|ƒdS|jƒS(Niÿÿÿÿs8__GetSkyTowerBossID() can not find %s in SkyTowerNPC.txti(RR\tGetGameFBDictByKeyRR
RPt    GetBossID(R&RjRT((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt__GetSkyTowerBossIDús   cCs¥tjƒ}tƒ}||jƒ|tdkr7dStƒ}|sTtjƒdStjt    j
|t dƒt j tjtjdƒ|gƒtjt|ƒdS(Nièi(RR\RR`R_RzRtDoLogic_FBKickAllPlayertSync_Player_TimeTickRXReRdtNPCCustomRefresht SetNPCRefreshtGetFBLineRefreshNPCRRt    SetFBStepRc(RNRjttrialCfgtbossID((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyRrs         
"cCsõ|jƒtjkrDtjd|jƒƒtj|tj    |ƒnt
j |ƒt j ƒtjƒ}|jt|ƒtƒtd}t jtj|ƒt jt|ƒi|t j6}t j||ƒtjd|t|ƒf|jƒƒdS(Ns ¸´»îÍæ¼Ò...iès%StartfloorID, floorID=%s, helpDict=%s(tGetPlayerActionRXtpaDieRRIRtChPlayertPlayerRebornByTypeRtrebornType_CitytGameObjt    SetHPFullRt
ClearFBNPCR\t SetGameFBDictRRR_R|RbR€R^t
Help_wheelt Notify_FBHelpR(R R&RNRjt prepareTickthelpDict((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt StartfloorIDs 
     cCs¢tjƒ}||jƒtƒtdkr1dS|jtƒ}tjƒ}xEt|j    ƒƒD]1}|j
|ƒ}|s€q_nt ||t ƒq_Wt |ƒdS(Niè(RR\R`RRdRxRtGetMapCopyPlayerManagertxrangetGetPlayerCounttGetPlayerByIndext__SendSkyTowerOverInfoRQt__SetFBToFreeTime(RNRjR&t playerManagerR$R ((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyRs5s ! 
cCs2tjtjtƒtdƒtjt|ƒdS(Niè(RR|RXt tttLeaveMapRt Def_ExitTimeR€Rt(RN((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyR–KscCs/|tjƒjƒtƒtdkr+dSdS(Niè(RR\R`RR™(RN((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyRuTs'cCs-tjƒ}|jƒtkr"dStƒ}||jƒkrAdS|jtƒ}t|ƒ}|sfdS|j    ƒršd}t
j d||j ƒ|gƒnt ||ƒt||ƒ}|tjƒjƒ}    |    |tj<t||t|ƒtj|tjƒt|dƒt|ƒ|dkr;tj|tj|ƒntjd|ƒ}
|
r)d} |
jƒ} x)| j ƒD]} t!| t"| ƒƒ} qrWx/|
j#ƒj ƒD]}t!| t"|ƒƒ} q¤W|j$ƒ}t%d|| | ggƒ}tj&d||ƒtj'ƒj(|ddd|t)|ƒƒndS(NtKillGodTowerInfo_1ii
tSkyTowerServerChallengetServerChallengePasssÈ«·þ¹ý¹ØÐÅϢͬ²½GameServer: %sR(*RR\R]RcRztGetNPCIDRxRR
t GetIsNotifyRCt WorldNotifyt GetPlayerNameRJt__GiveFBPassPrizeR`Rt Over_costTimeR•RKtPlayerActivitytAddDailyActionFinishCntRGtDailyActionID_SkyTowerR R–tPlayerBillboardtUpdatePlayerBillboardtDef_BT_SkyTowerRtGetIpyGameDataNotLogRRRRRRRRIRRR (R tcurNPCRNRjR‚R&RTtsysMarkt    prizeDicttcostTimeR%R'trankRewardInfoR(R)R*R+((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytDoFB_Player_KillNPC`sH       "   
   +cCs||jƒ}g|jƒD]\}}||dg^q}dtig}tj||d|ƒitj|ƒtj6}|S(NitSKYTower(    t    GetRewardtitemsRQt ItemControlertGivePlayerItemOrMailR-RtGetJsonItemListt Over_itemInfo(R RTt giveItemDicttitemIDtitemCntt giveItemListteventR¬((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyR¡˜s  .cCsdtj|tj<||tj<t|ƒ|tj<tjdt    |ƒ|j
ƒƒtj ||ƒdS(Ns"__SendSkyTowerOverInfo overDict=%s( RRRtOver_dataMapIDt
Over_wheelRt Over_isPassRRIRRtNotify_FB_Over(R R&tisPasstoverDict((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyR•¤s   cCs&tjƒ}|jƒtkr"tStS(N(RR\R]RcRQRK(tattackertdefenderRj((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytCheckCanAttackTagObjInFB²s cCsKtjƒ}|jtƒ}t||tƒtjƒjƒ}t|ƒdS(N(    RR\RxRR•RQt GetGameWorldtGetTickR–(R RjR&RN((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt DoPlayerDead½s  
cCstS(N(RK(((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytOnPlayerRebornÉscCs‚|dkrdStjƒ}|jƒ}|ttgkrKtjdƒdS|}t||ƒsntjƒdSt    |||ƒdS(Nis×¼±¸»òÕ½¶·ÖÐ, ÎÞ·¨±ä¸ü¹Ø¿¨!(
RR\R]R^RcRIRURR{R(R t
actionTypet
actionInfoRNRjRkR&((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt
DoFBActionÒs    
c    Cs;tj|dƒ}|dkr"dS|jƒ}tjd|ƒ}|sJdS|jƒ}t|ƒ|kr†tjd||f|ƒdS|t|ƒ}|jt    j
|ƒ}|t d|ƒ@ràtjd|||f|ƒdStd|||ggƒ}tjd||ƒtj ƒj |ddd    |t|ƒƒdS(
NiiR›s.²»´æÔÚ¸ÃÈ«·þ½±Àø:floorID=%s,needPlayerCount=%sisDÌìÐÇËþÈ«·þÌôÕ½²ãÒÑÁì½±!floorID=%s,needPlayerCount=%s,rewardRecord=%stServerChallengeRewards&ÌìÐÇËþÈ«·þÌôÕ½²ãÁ콱ͬ²½GameServer: %sR(RtToIntDefRRRRRRIR/RR0tpowRRR (    R R&R)R*RTt
rewardInfoRºt rewardRecordR+((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt"OnGetSkyTowerServerChallengeRewardæs(   (cCsÚ|jƒ}|d \}}tjdt|ƒ|ƒ|dkrº|\}}}|d}|dkr…tjd||f|ƒdS|d}    i}
x*|jƒD]\} } | |
t| ƒ<q¢Wtj|
|    tƒ} | sõtjd|    |ƒdSd}|j    t
j |ƒ}|t d|ƒ@rEtjd|||f|ƒdS|t d|ƒB}t j|t
j ||ƒtjd    ||    || f|ƒ||    g}t jd
|g| |ƒn|d krÖ|\}}} |d}|stjd ||f|ƒdS|j    t
j |ƒ}|t d|ƒ@rMtjd |||f|ƒdS|t d|ƒB}t j|t
j ||ƒtjd|||| f|ƒdti|d6g}tj|| d|ƒt||ƒndS(NisÌìÐÇËþGameServer·µ»Ø: %sRœis+¹ý¹ØÈ«·þÅÅÃûδÉϰñ: floorID=%s,rankIndex=%sis¸Ã²ã¸ÃÃû´ÎûÓн±Àø: rank=%ss>¹ý¹ØÅÅÃû½±ÀøÒÑ·¢·Å¹ý!floorID=%s,recordIndex=%s,rewardRecord=%ssQÌìÐÇËþ·¢·Å¹ý¹ØÈ«·þÅÅÃû½±Àø: floorID=%s,rank=%s,updRewardRecord=%s,giveItemList=%stSkyTowerPassRankRÌs=·µ»ØÊ±ÌìÐÇËþÈ«·þÌôÕ½²ã²»ÄÜÁìÈ¡: floorID=%s,needPlayerCount=%ssJ·µ»ØÊ±ÌìÐÇËþÈ«·þÌôÕ½²ãÒÑÁì½±!floorID=%s,needPlayerCount=%s,rewardRecord=%ssXÌìÐÇËþ·¢·Å¹ý¹ØÈ«·þ½±Àø: floorID=%s,needPlayerCount=%s,updRewardRecord=%s,giveItemList=%stSKYTowerServerChallengeRewardR&(RRRRRIR²RtGetOrderValueByDictRQR/RR0RÎRCRDt SendMailByKeyR³R´R-R (R t
resultListR*tmsgTypetmsgDataR&t_R®t    rankIndexR(t    orderDicttktvRºt recordIndexRÐtupdRewardRecordt    paramListR)tcanGetR»((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytGameServer_SkyTowerInfos\  
 
      
    cCs?t||ƒsdSt|ƒ}t|ƒ}||}||fS(s.¸±±¾¿ìËÙ¹ý¹ØÑéÖ¤
    @param mapID: Êý¾ÝµØÍ¼ID
    @param lineID: Ä¿±ê¹Ø¿¨Ïß·ID£¬¿ÉÒ»´ÎÐÔÌø¶à¹Ø£¬ÓÉǰ¶Ë·¢°ü¾ö¶¨
    @return: (bossID, quickCnt) »ò  None
    @note: bossID Ä¿±êNPCID - Ä¿±ê¹Ø¿¨ËùÐèÒªÌôÕ½µÄÖ÷NPCID£¬Ò»°ãÊÇboss£¬ÓÃÓÚÑéÖ¤Õ½Á¦ÊÇ·ñÂú×ã¿ìËÙ¹ý¹Ø
    @note: quickCnt ±¾´Î×ܹ²Ìø¹ý¼¸¹Ø - Ä¬ÈÏ1
    N(RURRz(R RLtlineIDt    curLineIDR‚tquickCnt((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytOnPlayerFBQuickPass9s       
c    Cs˜|jƒ}t|ƒ}|d}tjd|||f|ƒg}x¹t||dƒD]¤}t|ƒ}|swqYn|jƒr«d}    tjd|    |j    ƒ|gƒnt
||ƒ|j ƒ}
g|
j ƒD]\} } | | dg^qÑ} || 7}t j|tjƒtjd|ƒ}|rYd}|jƒ}x)|jƒD]}t|t|ƒƒ}qFWx/|jƒjƒD]}t|t|ƒƒ}qxW|jƒ}td|||ggƒ}tjd||ƒtjƒj|ddd|t|ƒƒqYqYWtj|ƒ}tj||d d    t igƒit!j"|ƒt!j#6dd
6}t$||t%|ƒt&|dƒ|d kr”t'j(|tj)|ƒnd S( s¸±±¾¿ìËÙ¹ý¹Ø½á¹û
    is.´¦Àí¿ìËÙ¹ý¹Ø½áËã: mapID=%s,fromLineID=%s to %sRšiR›RœsÈ«·þ¹ý¹ØÐÅϢͬ²½GameServer: %sRR°t    quickPassi
N(*RRRRIRR
RžRCRŸR RJR±R²R£R¤RGR¥RR©RRRRRRRRR t MergeItemListR³R´R-RQRRµR¶R•RKR R¦R§R¨(R RLRãR*Rät
fromLineIDt itemListTotalR&RTR«R·R¸R¹RºR%R'R®R(R)R+t prizeItemListt quickPassDict((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pytOnPlayerFBQuickPassResultJsJ  
  "  .
  /   (?RRRXRCR}R1R³R9RGRRR…R£R¦RERgRˆRoRRR_RdR™tDef_DayPrizeMaxCntt FB_State_OpenR^RcRtRvRR
R R,R-RQR RRJRORURWR[RmRnRqRwRzRrRRsR–RuR¯R¡R•RÄRÇRÈRËRÑRâRæRí(((sƒD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SkyTower.pyt<module>sh                                                                               
                                  8                                   9