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