From e84f8a63b4d3bd8ee4722f6bb8f40865f09d967c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 22 一月 2019 20:29:31 +0800 Subject: [PATCH] 5931 【后端】【1.5.100】诛仙装备开发(套装属性、诛仙背包整理、装备总评分、穿戴绑定) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py | 43 ++++++++++++++++++++++++++++++------------- 1 files changed, 30 insertions(+), 13 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py index c2a74b8..591de6a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py @@ -36,6 +36,7 @@ import PlayerMagicWeapon import PlayerBossReborn import PlayerFairyCeremony +import PlayerWeekParty import EventReport FBDict_StartTick = 'FBDict_StartTick%s' #开始时间 @@ -47,6 +48,18 @@ FBPlayerDict_Rank = "FBPlayerDict_Rank" # 玩家排名 g_npcHurtDict = {} + + +def OnFBPlayerOnLogin(curPlayer): + if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_FMTDouble): + GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_FMTDouble, 1) + needViplv = IpyGameDataPY.GetFuncCfg('DemonJarSpecial') + if curPlayer.GetVIPLv() >= needViplv: + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FMTOldDouble, 1) + GameWorld.DebugLog('1.3版本前可以双倍挑战') + NotifyFMTDouble(curPlayer) + return + ## 是否能够通过活动查询进入 # @param curPlayer 玩家实例 @@ -185,6 +198,8 @@ def DoExitFB(curPlayer, tick): global g_npcHurtDict gameWorld = GameWorld.GetGameWorld() + # 清除鼓舞buff + FBCommon.ClearEncourageBuff(curPlayer, tick) #最后一人 if gameWorld.GetMapCopyPlayerManager().GetPlayerCount() == 1: mapID = GameWorld.GetMap().GetMapID() @@ -195,11 +210,10 @@ gameWorld.SetGameWorldDict(FBDict_StartTick % lineID, 0) GameWorld.GetGameFB().ClearGameFBDict() GameWorldProcess.CloseFB(tick) - + return UpdateHPReduceSpeed(tick, True) - # 清除鼓舞buff - FBCommon.ClearEncourageBuff(curPlayer, tick) + return ##玩家主动离开副本. @@ -263,8 +277,9 @@ curSpeed = GameWorld.GetGameWorld().GetGameWorldDictByKey(FBDict_Speed % lineID) remainHP = GetBossRemainHP(lineID, tick) totalHP = __GetBossTotalHP() - - fbHelpDict = {FBCommon.Help_lineID:lineID, "hurtInfo":hurtInfo, 'hpReduceSpeed':curSpeed * 10000 / totalHP, 'remainHPPer':min(100, remainHP * 100 / totalHP)} + hpReduceSpeed = curSpeed * 10000 / totalHP if totalHP else 0 + remainHPPer = min(100, remainHP * 100 / totalHP) if totalHP else 0 + fbHelpDict = {FBCommon.Help_lineID:lineID, "hurtInfo":hurtInfo, 'hpReduceSpeed':hpReduceSpeed, 'remainHPPer':remainHPPer} GameWorld.DebugLog("DoFBHelp: %s" % fbHelpDict, curPlayer.GetPlayerID()) FBCommon.Notify_FBHelp(curPlayer, fbHelpDict) return @@ -406,12 +421,8 @@ if playerHurtList: killerName, hurtValue = playerHurtList[0][1] NPCCommon.GameServer_KillGameWorldBoss(bossID, killerName, hurtValue) - - msgList = [bossID, 0] - GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'GameWorldBossState', - '%s' % (msgList), len(str(msgList))) - bosskey = ShareDefine.Def_Notify_WorldKey_GameWorldBossReborn % bossID - GameWorld.GetGameWorld().SetGameWorldDict(bosskey, 0) + + NPCCommon.GameServe_GameWorldBossState(bossID, 0) __DoLogicSealDemonOver(1, tick, dropPosX, dropPosY) gameFB.SetGameFBDict(FBDict_IsOver, tick) @@ -449,6 +460,8 @@ curPlayer.Sync_TimeTick(ChConfig.tttPickupItem, 0, ChConfig.Def_FBPickupItemTime, True) else: leaveTick = PlayerControl.GetPlayerLeaveServerTick(playerID) + if not leaveTick: + continue if tick - leaveTick > ChConfig.Def_PlayerOfflineProtectTime: #离线超过3分钟的不给奖励 continue @@ -534,6 +547,7 @@ PlayerMagicWeapon.SetMWPrivilegeData(curPlayer, ChConfig.MWPrivilege_SealDemonAddAttr, addCnt, True) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FMT, addCnt) PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt) + PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FMT, addCnt) return prizeItemList def OnPickUpItem(curPlayer, curItem, tick): @@ -616,9 +630,11 @@ return playerCnt = GameWorld.GetGameWorld().GetMapCopyPlayerManager().GetPlayerCount() playerCnt = playerCnt - 1 if isExit else playerCnt - if not playerCnt: + if playerCnt <=0: return lineID = GameWorld.GetGameWorld().GetPropertyID() - 1 + if lineID < 0: + return gameWorld = GameWorld.GetGameWorld() startTick = gameWorld.GetGameWorldDictByKey(FBDict_StartTick % lineID) lastSpeed = gameWorld.GetGameWorldDictByKey(FBDict_Speed % lineID) @@ -696,7 +712,7 @@ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex) if GameWorld.GetMap().GetMapID() == ChConfig.Def_FBMapID_SealDemon: return - if not PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_FMTDouble): + if not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FMTOldDouble) and not PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_FMTDouble): return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FMTDouble, clientData.IsDouble) NotifyFMTDouble(curPlayer) @@ -705,6 +721,7 @@ def NotifyFMTDouble(curPlayer): packData = ChPyNetSendPack.tagMCFMTDoubleState() packData.IsDouble = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FMTDouble) + packData.OldDouble = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FMTOldDouble) NetPackCommon.SendFakePack(curPlayer, packData) return -- Gitblit v1.8.0