#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GameWorldLogic.FBProcess.GameLogic_BossHome # # @todo:BOSSÖ®¼Ò # @author xdh # @date 2017-11-09 # @version 1.0 # # ÏêϸÃèÊö: BOSSÖ®¼Ò # #------------------------------------------------------------------------------- #"""Version = 2017-11-09 14:30""" #------------------------------------------------------------------------------- import FBCommon import GameWorld import IpyGameDataPY import IPY_GameWorld import ChConfig import ShareDefine import PlayerVip import PlayerControl import EventReport def __GetEnterCostMoney(lineID): BossHomeCostDict = IpyGameDataPY.GetFuncEvalCfg('BossHomeCost', 1, {}) return BossHomeCostDict.get(lineID+1, 0) ## ÊÇ·ñÄܹ»Í¨¹ý»î¶¯²éѯ½øÈë # @param curPlayer Íæ¼ÒʵÀý # @param mapID µØÍ¼ID # @param lineID Ïß·id # @param tick ʱ¼ä´Á # @return ²¼¶ûÖµ def OnEnterFBEvent(curPlayer, mapID, lineID, tick): canEnterLine = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_BossHome) if not canEnterLine: return if lineID+1 > canEnterLine: #ÅжÏÇ®¹»²»¹» costGold = __GetEnterCostMoney(lineID) if not costGold: return False costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, costGold) #GameWorld.Log('costMoneyList=%s,costGold=%s'%(costMoneyList,costGold)) if not costMoneyList: return False return True ##¸±±¾Íæ¼Ò½øÈëµã # @param curPlayer Íæ¼ÒʵÀý # @param mapID µØÍ¼ID # @param lineId ·ÖÏßID # @param ipyEnterPosInfo ¹¦ÄÜÏß·IPYÅäÖÃ×ø±êÐÅÏ¢ # @param tick ʱ¼ä´Á # @return posX, posY, Ëæ»ú°ë¾¶(¿ÉÑ¡) def OnGetFBEnterPos(curPlayer, mapID, lineId, ipyEnterPosInfo, tick): return ipyEnterPosInfo ## ²éѯµØÍ¼ÊÇ·ñ¿ªÆô # @param tick ʱ¼ä´Á # @return ²¼¶ûÖµ def OnCanOpen(tick): return True ##²éѯÊÇ·ñ¿ÉÒÔ½øÈëµØÍ¼ # @param ask:ÇëÇó½á¹¹Ìå(IPY_BMChangeMapAsk) # @param tick:ʱ¼ä´Á # @return IPY_GameWorld.cme ö¾Ù def OnChangeMapAsk(ask, tick): return IPY_GameWorld.cmeAccept ## ½ø¸±±¾ # @param curPlayer # @param tick # @return None def DoEnterFB(curPlayer, tick): playerID = curPlayer.GetPlayerID() if curPlayer.GetHP() == 0: PlayerControl.PlayerLeaveFB(curPlayer) return # ÉèÖø±±¾¹«¹²ÊôÐԵĵ¥¶À´¦Àí£¬·ÀÖ¹¶ÓÔ±½øÈëºó±»ÐÞ¸Ä if not FBCommon.GetHadSetFBPropertyMark(): lineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqFBFuncLine) FBCommon.SetFBPropertyMark(lineID) GameWorld.DebugLog("DoEnterFB...lineID=%s" % FBCommon.GetFBPropertyMark(), playerID) hadDelTicket = FBCommon.GetHadDelTicket(curPlayer) if not hadDelTicket: FBCommon.SetHadDelTicket(curPlayer) canEnterLine = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_BossHome) lineID = FBCommon.GetFBPropertyMark() if lineID+1 > canEnterLine: costGold = __GetEnterCostMoney(lineID) costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, costGold) mapID = GameWorld.GetMap().GetMapID() infoDict = {"MapID":mapID,"LineID":lineID} for moneyType, moneyNum in costMoneyList: if not PlayerControl.PayMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_Cost_EnterFB, infoDict): GameWorld.Log("ÏÉÓñ²»×ã!costGold=%s" % costGold) PlayerControl.PlayerLeaveFB(curPlayer) return EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_BossHome, lineID, ChConfig.CME_Log_Start) #DoFBHelp(curPlayer, tick, True) return ##Íæ¼ÒÍ˳ö¸±±¾ # @param curPlayer Íæ¼ÒʵÀý # @param tick ʱ¼ä´Á # @return ÎÞÒâÒå def DoExitFB(curPlayer, tick): return ##Íæ¼ÒÖ÷¶¯À뿪¸±±¾. # @param curPlayer Íæ¼ÒʵÀý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå def DoPlayerLeaveFB(curPlayer, tick): FBCommon.SetHadDelTicket(curPlayer, 0) return ##Íæ¼ÒÇл»µØÍ¼ def DoPlayerChangeMapLogic(curPlayer): FBCommon.SetHadDelTicket(curPlayer, 0) return ## ÊÇ·ñ¸±±¾¸´»î # @param None # @return ÊÇ·ñ¸±±¾¸´»î def OnPlayerReborn(): return False ## ѯÎÊÍæ¼ÒÊÇ·ñÇл»Í¬¸ö¹¦ÄܵØÍ¼µÄ²»Í¬³¡¾°µØÍ¼ def CanChangeSameDataMapFB(curPlayer, mapID, lineID): return True ## »ñµÃ¸±±¾°ïÖúÐÅÏ¢ # @param curPlayer µ±Ç°Íæ¼Ò£¨±»Í¨Öª¶ÔÏó£© # @param tick µ±Ç°Ê±¼ä # @return None def DoFBHelp(curPlayer, tick, isEnter=False): return ## ¸±±¾ÐÐΪ # @param curPlayer Íæ¼Ò # @param actionType ÐÐΪÀàÐÍ # @param actionInfo ÐÐΪÐÅÏ¢ # @param tick µ±Ç°Ê±¼ä # @return None def DoFBAction(curPlayer, actionType, actionInfo, tick): return ##---¸±±¾×ÜÂß¼­¼ÆÊ±Æ÷--- # @param tick:ʱ¼ä´Á # @return ÎÞÒâÒå # @remarks ¸±±¾×ÜÂß¼­¼ÆÊ±Æ÷ def OnProcess(tick): return ##Íæ¼ÒËÀÍö. # @param curPlayer:ËÀÍöµÄÍæ¼Ò # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå # @remarks Íæ¼ÒÖ÷¶¯À뿪¸±±¾. def DoPlayerDead(curPlayer): FBCommon.Notify_FB_Over(curPlayer, {FBCommon.Over_isPass:0}) lineID = FBCommon.GetFBPropertyMark() leaveTime = int(FBCommon.GetFBLineStepTime(ChConfig.Def_FBMapID_BossHome, lineID)) curPlayer.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTime*1000, True) return