|  |  |  | 
|---|
|  |  |  | import NetPackCommon | 
|---|
|  |  |  | import ShareDefine | 
|---|
|  |  |  | import IpyGameDataPY | 
|---|
|  |  |  | import PlayerDBGSEvent | 
|---|
|  |  |  | import PlayerControl | 
|---|
|  |  |  | import ChConfig | 
|---|
|  |  |  | import time | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | #  @return None | 
|---|
|  |  |  | def OnLogin(curPlayer): | 
|---|
|  |  |  | NotifyFamilyBossFBInfo(curPlayer) | 
|---|
|  |  |  | NotifyAllFamilyBossState(curPlayer) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | curFamily.Broadcast_FamilyChange() | 
|---|
|  |  |  | #通知地图服务器刷新 | 
|---|
|  |  |  | PlayerFamily.SendPack_MapServer_PlayerFamilyRefresh(curFamily) | 
|---|
|  |  |  | GameWorld.Log("    __DoOpenCostLogic 扣除家族兽粮=%s OK!" % (foodCost)) | 
|---|
|  |  |  | GameWorld.Log("    __DoOpenCostLogic 扣除家族兽粮=%s OK!, familyID=%s,playerFamilyLV=%s" | 
|---|
|  |  |  | % (foodCost, curPlayer.GetFamilyID(), curMember.GetFamilyLV()), curPlayer.GetPlayerID()) | 
|---|
|  |  |  | return True | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #############################多仙盟BOSS############################# | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OnAllFamilyBossStateChange(isOpen): | 
|---|
|  |  |  | if isOpen: | 
|---|
|  |  |  | #本次开启时间距离上次击杀时间超过1小时则重置 | 
|---|
|  |  |  | lastKillTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime) | 
|---|
|  |  |  | curTime = int(time.time()) | 
|---|
|  |  |  | if abs(curTime-lastKillTime)> 3600: | 
|---|
|  |  |  | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime, 0) | 
|---|
|  |  |  | #֪ͨ | 
|---|
|  |  |  | NotifyAllFamilyBossState() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def AllFamilyBossKilled(): | 
|---|
|  |  |  | if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime): | 
|---|
|  |  |  | GameWorld.Log('多仙盟Boss已被击杀,不可重复!!') | 
|---|
|  |  |  | return | 
|---|
|  |  |  | curTime = int(time.time()) | 
|---|
|  |  |  | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime, curTime) | 
|---|
|  |  |  | GameWorld.Log('多仙盟Boss被击杀!!') | 
|---|
|  |  |  | NotifyAllFamilyBossState() | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def NotifyAllFamilyBossState(curPlayer=None): | 
|---|
|  |  |  | lastKillTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime) | 
|---|
|  |  |  | bossInfo = ChPyNetSendPack.tagGCAllFamilyBossInfo() | 
|---|
|  |  |  | bossInfo.IsEnd = 1 if lastKillTime else 0 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 IsInAllFamilyBoss(lineID=-1): | 
|---|
|  |  |  | state1 = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyBoss1) | 
|---|
|  |  |  | return state1 | 
|---|