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
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
#
##@package PlayerHorsePetBoss
#
# @todo:Æï³èboss¸±±¾
# @author xdh
# @date 2019-03-21
# @version 1.0
#
# ÏêϸÃèÊö: Æï³èboss¸±±¾
#
#---------------------------------------------------------------------
#"""Version = 2019-03-21 18:00"""
#---------------------------------------------------------------------
 
import GameWorld
import ChPyNetSendPack
import NetPackCommon
import ShareDefine
import PlayerDBGSEvent
import PlayerControl
 
import time
 
Def_LineCnt = 2
 
## Íæ¼ÒµÇ¼
#  @param curPlayer Íæ¼ÒʵÀý
#  @return None
def OnLogin(curPlayer):
    if IsInHorsePetBoss():
        NotifyHorsePetBossState(curPlayer)
    return
 
def OnHorsePetBossStateChange(isOpen):
    if isOpen:
        #±¾´Î¿ªÆôʱ¼ä¾àÀëÉϴλ÷ɱʱ¼ä³¬¹ý1СʱÔòÖØÖÃ
        isNotify = False
        curTime = int(time.time())
        for i in xrange(Def_LineCnt):
            lastKillTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%i)
            if abs(curTime-lastKillTime)> 3600:
                PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%i, 0)
                isNotify = True
        if isNotify:
            #֪ͨ
            NotifyHorsePetBossState()
    return
 
def HorsePetBossKilled(lineID):
    if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%lineID):
        GameWorld.Log('¶àÆï³èBossÒѱ»»÷ɱ£¬²»¿ÉÖØ¸´£¡£¡lineID=%s'%lineID)
        return
    curTime = int(time.time())
    PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%lineID, curTime)
    GameWorld.Log('¶àÆï³èBoss±»»÷ɱ!!lineID=%s'%lineID)
    NotifyHorsePetBossState()
    return
 
def NotifyHorsePetBossState(curPlayer=None):
    IsEnd = 0
    for i in xrange(Def_LineCnt):
        lastKillTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%i)
        if lastKillTime:
            IsEnd |=pow(2, i)
    bossInfo = ChPyNetSendPack.tagGCHorsePetBossInfo()
    bossInfo.IsEnd = IsEnd
    
    if curPlayer == None:
        playerManager = GameWorld.GetPlayerManager()
        for i in xrange(playerManager.GetActivePlayerCount()):
            curPlayer = playerManager.GetActivePlayerAt(i)
            if curPlayer == None or not curPlayer.GetInitOK():
                continue
            if PlayerControl.GetIsTJG(curPlayer):
                continue
            NetPackCommon.SendFakePack(curPlayer, bossInfo)
    else:
        if PlayerControl.GetIsTJG(curPlayer):
            return
        NetPackCommon.SendFakePack(curPlayer, bossInfo)
    return
 
#ÊÇ·ñÔÚÆï³èBOSS»î¶¯ÖÐ
def IsInHorsePetBoss():
    state = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_HorsePetBoss)
    return state