From 40f2e314ff6df3d45e643419c6f155bb665b78dc Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 14 九月 2024 13:34:19 +0800
Subject: [PATCH] 10249 【越南】【砍树】【英文】仙宫(增加获得气运提示;)
---
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