From bf08c8333363e9b8aeab0b7e482cee6767bf6f0a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 24 十一月 2018 19:37:00 +0800
Subject: [PATCH] 4762 Add B2 11 助战记录列表 #tagMCHelpBattleRecordList
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py | 76 +++++++++++++++++++++++++++++---------
1 files changed, 58 insertions(+), 18 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
index 5371a4c..d46382d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py
@@ -31,6 +31,7 @@
import EventReport
import ChPyNetSendPack
import NetPackCommon
+import BuffSkill
import random
import datetime
@@ -218,6 +219,7 @@
# @param tick 时间戳
# @return 无意义
def DoExitFB(curPlayer, tick):
+
return
##玩家主动离开副本.
@@ -227,6 +229,12 @@
def DoPlayerLeaveFB(curPlayer, tick):
return
+##玩家切换地图
+def DoPlayerChangeMapLogic(curPlayer):
+ tick = GameWorld.GetGameWorld().GetTick()
+ for buffID in IpyGameDataPY.GetFuncEvalCfg('IceLodeSpecial', 2):
+ BuffSkill.DelBuffBySkillID(curPlayer, buffID, tick)
+ return
def OnPickUpItem(curPlayer, curItem, tick):
return
@@ -448,12 +456,7 @@
return False
return True
-## 执行副本杀怪逻辑
-# @param curPlayer 杀怪的人
-# @param curNPC 被杀的怪
-# @param tick 当前时间
-# @return None
-def DoFB_Player_KillNPC(curPlayer, curNPC, tick):
+def __OnKillNPC(attacker, curNPC, tick):
gameFB = GameWorld.GetGameFB()
npcid = curNPC.GetNPCID()
npcCfg = GetIceLodeNPCCfg()
@@ -468,8 +471,22 @@
remainNPCCnt = max(0, gameFB.GetGameFBDictByKey(FBPlayerDict_RemainNPCCnt) - 1)
gameFB.SetGameFBDict(FBPlayerDict_RemainNPCCnt, remainNPCCnt)
- if remainNPCCnt <=0:
+ if remainNPCCnt <=0 or npcid in IpyGameDataPY.GetFuncEvalCfg('IceLodeSpecial'):
__DoIceLodeOver(True)
+ return
+
+def DoFB_Npc_KillNPC(attacker, curNPC, tick):
+ __OnKillNPC(attacker, curNPC, tick)
+ return
+
+## 执行副本杀怪逻辑
+# @param curPlayer 杀怪的人
+# @param curNPC 被杀的怪
+# @param tick 当前时间
+# @return None
+def DoFB_Player_KillNPC(curPlayer, curNPC, tick):
+ __OnKillNPC(curPlayer, curNPC, tick)
+
# addPoint = GetPointByNPCID(npcid)
# if not addPoint:
@@ -521,16 +538,16 @@
lineID = FBCommon.GetFBPropertyMark()
star = GameWorld.GetGameFB().GetGameFBDictByKey(FBPlayerDict_FBStar)
mapID = ChConfig.Def_FBMapID_IceLode
-
+ isInFBOnDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_IceLodeIsInFBOnDay)
#更新星级
lastStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID])
if isPass and star > lastStar:
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, star, False, [mapID])
FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapID) # 同步信息
- if not lastStar: #每日活动
+ if not lastStar and not isInFBOnDay: #每日活动
PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_IceLode)
- isInFBOnDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_IceLodeIsInFBOnDay)
- if isInFBOnDay: #在副本里过天,副本结束后再补发奖励
+
+ if isInFBOnDay: #在副本里过天,副本结束后再补发星级奖励
CheckIceLodeStarAwardMail(curPlayer)
# exp = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_TotalExp)
# expPoint = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_TotalExpPoint)
@@ -540,19 +557,32 @@
if not costTime:
costTime = tick - GameWorld.GetGameFB().GetFBStepTick()
#jsonItemList = PyGameData.g_fbPickUpItemDict.get(playerID, [])
- jsonItemList = FBCommon.GetJsonItemList(FBCommon.GetFBLineReward(mapID, lineID))
+ overDict = {FBCommon.Over_isPass:int(isPass), FBCommon.Over_costTime:costTime}
+ if isPass:
+ itemList = FBCommon.GetFBLineReward(mapID, lineID)
+ # 给物品
+ needSpace = len(itemList)
+ packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+ if needSpace > packSpace:
+ PlayerControl.SendMailByKey('', [curPlayer.GetID()], itemList)
+ else:
+ for itemID, itemCount, isBind in itemList:
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
+
+ jsonItemList = FBCommon.GetJsonItemList(itemList)
+ overDict[FBCommon.Over_itemInfo] = jsonItemList
# 通知结果
- __SendIceLodeOverInfo(curPlayer, {FBCommon.Over_isPass:int(isPass), FBCommon.Over_costTime:costTime, FBCommon.Over_itemInfo:jsonItemList})
+ __SendIceLodeOverInfo(curPlayer, overDict)
# 进入离开阶段
FBCommon.SetFBStep(FB_Step_Over, tick)
FBCommon.Sync_Player_TimeTick(IPY_GameWorld.tttLeaveMap, FBCommon.GetFBLineStepTime(mapID)[Def_LeaveTime] * 1000)
# 清怪,关闭刷怪
- FBCommon.ClearFBNPC()
- npcCfg = GetIceLodeNPCCfg()
- for npcInfo in npcCfg:
- NPCCustomRefresh.CloseNPCRefresh(npcInfo[Def_RefreshMark], tick)
+# FBCommon.ClearFBNPC()
+# npcCfg = GetIceLodeNPCCfg()
+# for npcInfo in npcCfg:
+# NPCCustomRefresh.CloseNPCRefresh(npcInfo[Def_RefreshMark], tick)
return
@@ -577,6 +607,9 @@
## 可否扫荡
def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):
+ if curPlayer.GetMapID() == ChConfig.Def_FBMapID_IceLode:
+ GameWorld.DebugLog('冰晶矿脉扫荡 副本里不能扫荡 ')
+ return
#战力判断
LVIpyData = PlayerControl.GetPlayerLVIpyData(curPlayer.GetLV())
reFightPower = 0 if not LVIpyData else LVIpyData.GetIceLodeFightPower() # 当前等级参考战力
@@ -615,10 +648,15 @@
for itemID, itemCnt, isBind in itemList:
ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
#直接将5条线星级改为3星
+ addCnt = 0
starCnt, lineList = GetIceLodeAllStarCnt(curPlayer)
for lineid in lineList:
+ curStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineid, False, [mapID])
+ if curStar == 0:
+ addCnt += 1
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineid, 3, False, [mapID])
-
+ PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_IceLode, addCnt)
+ FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapID) # 同步信息
# npcCountDict = {}
# iceLodeSweepDict = IpyGameDataPY.GetFuncEvalCfg('IceLodeSweep')
# for npcID, count in iceLodeSweepDict.items():
@@ -723,8 +761,10 @@
maxCnt, randomCnt = IpyGameDataPY.GetFuncEvalCfg('IceLodeCfg', 2)
for i in xrange(maxCnt):
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, i, 0, False, [ChConfig.Def_FBMapID_IceLode])
+ FBCommon.Sync_FBPlayerFBInfoData(curPlayer, ChConfig.Def_FBMapID_IceLode) # 同步信息
#重置领奖记录
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeStarAwardRecord, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeHasSweep, 0)
#随机今日玩法
__RandomLine(curPlayer)
#通知
--
Gitblit v1.8.0