From 023ac4a624af7205b7c295f47f73091c218cbf8d Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期二, 27 十一月 2018 21:53:21 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_IceLode.py | 78 ++++++++++++++++++++++++++++---------- 1 files changed, 57 insertions(+), 21 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 32dd8df..7726ee7 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 @@ -29,8 +29,10 @@ import ItemCommon import ItemControler import EventReport +import EventShell import ChPyNetSendPack import NetPackCommon +import BuffSkill import random import datetime @@ -110,19 +112,26 @@ return starCnt, lineList = GetIceLodeAllStarCnt(curPlayer) if not lineList: - __RandomLine(curPlayer) + __RandomLine(curPlayer, lineList) SyncIceLoddInfo(curPlayer) return -def __RandomLine(curPlayer): +def __RandomLine(curPlayer, oldlineList): # 随机今日玩法 maxCnt, randomCnt = IpyGameDataPY.GetFuncEvalCfg('IceLodeCfg', 2) lineList = range(maxCnt) - random.shuffle(lineList) - for i, lineID in enumerate(lineList): - GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_IceLoadLineID, lineID, 0 if i >= randomCnt else 1) + newlineList = list(set(lineList) - set(oldlineList)) + if len(newlineList) < randomCnt: + random.shuffle(oldlineList) + newlineList += oldlineList[:randomCnt-len(newlineList)] + else: + random.shuffle(newlineList) + newlineList = newlineList[:randomCnt] + #random.shuffle(lineList) + for lineID in lineList: + GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_IceLoadLineID, lineID, 1 if lineID in newlineList else 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeDayLV, curPlayer.GetLV()) - GameWorld.DebugLog(' 随机冰晶矿脉今日玩法 lineList =%s'%(lineList[:randomCnt]), curPlayer.GetID()) + GameWorld.DebugLog(' 随机冰晶矿脉今日玩法 oldlineList=%s, newlineList =%s'%(oldlineList, newlineList), curPlayer.GetID()) return ## 是否能够通过活动查询进入 @@ -164,6 +173,7 @@ # @param tick # @return None def DoEnterFB(curPlayer, tick): + PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default * 2) playerID = curPlayer.GetPlayerID() mapID = GameWorld.GetGameWorld().GetMapID() gameFB = GameWorld.GetGameFB() @@ -218,6 +228,7 @@ # @param tick 时间戳 # @return 无意义 def DoExitFB(curPlayer, tick): + PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default) return ##玩家主动离开副本. @@ -225,8 +236,15 @@ # @param tick 时间戳 # @return 返回值无意义 def DoPlayerLeaveFB(curPlayer, tick): + PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default) 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 @@ -361,7 +379,7 @@ npcCnt += totalMaxCnt NPCCustomRefresh.ProcessAllNPCRefresh(tick) # 立即出发一次标识点刷新 gameFB.SetGameFBDict(FBPlayerDict_RemainNPCCnt, npcCnt) - + GameWorld.DebugLog('设置开始刷怪 remainNPCCnt=%s'%npcCnt) # 副本开始 FBCommon.SetFBStep(FB_Step_Fighting, tick) FBCommon.Sync_Player_TimeTick(IPY_GameWorld.tttTowerTake, stepTimeCfg[Def_FightTime] * 1000) @@ -448,12 +466,7 @@ return False return True -## 执行副本杀怪逻辑 -# @param curPlayer 杀怪的人 -# @param curNPC 被杀的怪 -# @param tick 当前时间 -# @return None -def DoFB_Player_KillNPC(curPlayer, curNPC, tick): +def __OnKillNPC(curNPC, tick): gameFB = GameWorld.GetGameFB() npcid = curNPC.GetNPCID() npcCfg = GetIceLodeNPCCfg() @@ -467,9 +480,29 @@ remainNPCCnt = max(0, gameFB.GetGameFBDictByKey(FBPlayerDict_RemainNPCCnt) - 1) gameFB.SetGameFBDict(FBPlayerDict_RemainNPCCnt, remainNPCCnt) - - if remainNPCCnt <=0: + GameWorld.DebugLog('__OnKillNPC remainNPCCnt=%s'%remainNPCCnt) + if remainNPCCnt <=0 or npcid in IpyGameDataPY.GetFuncEvalCfg('IceLodeSpecial'): __DoIceLodeOver(True) + return + +def DoFB_NPCDead(curNPC): + __OnKillNPC(curNPC, GameWorld.GetGameWorld().GetTick()) + return + +#def DoFB_Npc_KillNPC(attacker, curNPC, tick): +# GameWorld.Log('__OnKillNPC 1111111111') +# __OnKillNPC(attacker, curNPC, tick) +# return + +## 执行副本杀怪逻辑 +# @param curPlayer 杀怪的人 +# @param curNPC 被杀的怪 +# @param tick 当前时间 +# @return None +#def DoFB_Player_KillNPC(curPlayer, curNPC, tick): +# GameWorld.Log('__OnKillNPC 2222222222') +# __OnKillNPC(curPlayer, curNPC, tick) +# # addPoint = GetPointByNPCID(npcid) # if not addPoint: @@ -554,6 +587,7 @@ jsonItemList = FBCommon.GetJsonItemList(itemList) overDict[FBCommon.Over_itemInfo] = jsonItemList + EventShell.EventRespons_FBEvent(curPlayer, 'icelode') # 通知结果 __SendIceLodeOverInfo(curPlayer, overDict) @@ -562,10 +596,10 @@ 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 @@ -618,6 +652,8 @@ GameWorld.DebugLog("冰晶矿脉扫荡仙玉不足!costGold=%s" % (costMoney)) return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeHasSweep, 1) + + SyncIceLoddInfo(curPlayer) return True ## 扫荡结果 @@ -707,7 +743,7 @@ if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_IceLoadLineID, i): starCnt += GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, i, False, [ChConfig.Def_FBMapID_IceLode]) lineList.append(i) - if len(lineList) != randomCnt: + if lineList and len(lineList) != randomCnt: GameWorld.ErrLog(' 冰晶矿脉获取当前总星数,当前线路数量异常!lineList=%s'%lineList) return starCnt, lineList[:randomCnt] @@ -749,7 +785,7 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeStarAwardRecord, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IceLodeHasSweep, 0) #随机今日玩法 - __RandomLine(curPlayer) + __RandomLine(curPlayer, lineList) #通知 SyncIceLoddInfo(curPlayer) return True -- Gitblit v1.8.0