#!/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, 1)
|
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
|
|