From f355e99a5f181ca869bdddf79fec1a27f237d194 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 10 九月 2024 11:13:47 +0800 Subject: [PATCH] 10264 【越南】【砍树】BOSS凭证掉落新增个人BOSS --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py | 72 ++++++++++++++++++++++-------------- 1 files changed, 44 insertions(+), 28 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py index 6dfd747..e03977e 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py @@ -436,7 +436,7 @@ robWorkerCount = mineItemData.RobWorkerCount if not curWorkerCount and not robWorkerCount: return curPos - moveSpeed = getattr(mineItemData, MineItemAttr_MoveSpeed) + moveSpeed = getattr(mineItemData, MineItemAttr_MoveSpeed, 0) if not moveSpeed: return curPos passSeconds = curTime - mineItemData.UpdTime @@ -530,6 +530,9 @@ battleRatio = workerBattleRatioList[len(workerBattleRatioList) - 1] if batWorkerCount > len(workerBattleRatioList) else workerBattleRatioList[batWorkerCount - 1] needSeconds = int(dist * itemWeight * baseTime * workRatio * battleRatio) # 还需工作时长,秒 + if needSeconds <= 0: + return 0, 0 + moveSpeed = dist / float(needSeconds) # 移动速度 x格/秒 needHms = "%02d:%02d:%02d" % (needSeconds / 3600, needSeconds % 3600 / 60, needSeconds % 60) @@ -556,7 +559,7 @@ GameWorld.Log("福地系统定时刷新! %s" % str(curHourMinute)) mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager() for playerID in mineItemMgr.playerMineItemDict.keys(): - __DoMineItemRefresh(playerID, isSuper=True) + __DoMineItemRefresh(playerID, isSys=True) return def OnMineItemTimeProcess(curTime, tick): @@ -633,7 +636,7 @@ while doCount > 0 and allMineItemByEndTimeList: doCount -= 1 mineItemData = allMineItemByEndTimeList[index] - endTime = getattr(mineItemData, MineItemAttr_EndTime) + endTime = getattr(mineItemData, MineItemAttr_EndTime, 0) if curTime < endTime: break @@ -790,22 +793,22 @@ def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList): - # 摇人帮助请求 - if funcLineID == 0: + # 摇人帮助请求、自己驱赶请求 + if funcLineID == 0 or funcLineID == 1: return __OnMineHelpRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList) return def OnTurnFightOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList): - # 摇人帮助结果 - if funcLineID == 0: + # 摇人帮助结果、自己驱赶结果 + if funcLineID == 0 or funcLineID == 1: return __OnMineHelpOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList) return def __OnMineHelpRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList): - # 摇人帮助请求 + # 摇人帮助请求、自己驱赶请求 playerID = curPlayer.GetPlayerID() if not valueList or len(valueList) < 2: GameWorld.DebugLog("没有指定valueList!", playerID) @@ -813,10 +816,15 @@ areaPlayerID = valueList[0] itemIndex = valueList[1] - if playerID == areaPlayerID: - GameWorld.DebugLog("不能帮助自己!", playerID) - return - + if funcLineID == 0: + if playerID == areaPlayerID: + GameWorld.DebugLog("不能帮助自己! areaPlayerID=%s" % areaPlayerID, playerID) + return + elif funcLineID == 1: + if playerID != areaPlayerID: + GameWorld.DebugLog("不是自己的福地,无法自己驱赶! areaPlayerID=%s" % areaPlayerID, playerID) + return + mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager() mineItemData = mineItemMgr.GetMineItem(areaPlayerID, itemIndex) mineID = mineItemData.MineID @@ -832,7 +840,7 @@ return tick = GameWorld.GetGameWorld().GetTick() - helpTick = getattr(mineItemData, MineItemAttr_HelpTick) + helpTick = getattr(mineItemData, MineItemAttr_HelpTick, 0) if helpTick and tick - helpTick < 10000: GameWorld.DebugLog("已经有其他人在帮助中!", playerID) return @@ -841,7 +849,7 @@ return True def __OnMineHelpOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList): - # 摇人帮助结果 + # 摇人帮助结果、自己驱赶结果 playerID = curPlayer.GetPlayerID() helpPlayerName = curPlayer.GetName() @@ -863,17 +871,25 @@ if robPlayerID and robPlayerID == tagPlayerID: __DoCancelPull(tagPlayerID, areaPlayerID, itemIndex) - robCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(tagPlayerID)) - robPlayerName = robCacheDict.get("Name", "") + # 帮助的发奖 + if funcLineID == 0: + robCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(tagPlayerID)) + robPlayerName = robCacheDict.get("Name", "") + + areaCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(areaPlayerID)) + areaPlayerName = areaCacheDict.get("Name", "") + + # 邮件发放奖励 + PlayerCompensation.SendMailByKey("MineHelpAward", [playerID], awardItemList, [areaPlayerName, robPlayerName]) + + # 通知福地玩家 + PlayerCompensation.SendMailByKey("MineHelpReqOK", [areaPlayerID], [], [helpPlayerName, robPlayerName]) + + # 自己驱赶的 + elif funcLineID == 1: + # 自己驱赶的,不用再通知地图,直接return + return - areaCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(areaPlayerID)) - areaPlayerName = areaCacheDict.get("Name", "") - - # 邮件发放奖励 - PlayerCompensation.SendMailByKey("MineHelpAward", [playerID], awardItemList, [areaPlayerName, robPlayerName]) - - # 通知福地玩家 - PlayerCompensation.SendMailByKey("MineHelpReqOK", [areaPlayerID], [], [helpPlayerName, robPlayerName]) return True def MapServer_MineArea(curPlayer, msgList): @@ -888,7 +904,7 @@ # 拉物品 if msgType == "Pull": - __DoPullItem(playerID, curPlayer, dataMsg) + ret = __DoPullItem(playerID, curPlayer, dataMsg) # 刷新福地物品 elif msgType == "MineItemRefresh": @@ -1001,7 +1017,7 @@ __RefreshMineItemSpeed(mineItemData, True) SyncMineAreaItemInfo(areaPlayerID, [itemIndex], notifyPlayerIDListEx) - return + return True def __DoCancelPull(playerID, areaPlayerID, itemIndex): ## 取消拉取 @@ -1348,9 +1364,9 @@ mineItem.UpdTime = mineItemData.UpdTime mineItem.Position = mineItemData.Position mineItem.PosLen = len(mineItem.Position) - mineItem.MoveSpeed = "%s" % getattr(mineItemData, MineItemAttr_MoveSpeed) + mineItem.MoveSpeed = "%s" % getattr(mineItemData, MineItemAttr_MoveSpeed, 0) mineItem.SpeedLen = len(mineItem.MoveSpeed) - mineItem.EndTime = getattr(mineItemData, MineItemAttr_EndTime) + mineItem.EndTime = getattr(mineItemData, MineItemAttr_EndTime, 0) mineItem.WorkerCount = mineItemData.WorkerCount mineItem.RobPlayerID = mineItemData.RobPlayerID mineItem.RobWorkerCount = mineItemData.RobWorkerCount -- Gitblit v1.8.0