#!/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