From 8166d5b7bc084e0e6bdf65c54ffd0391ccb8b66a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 24 一月 2025 19:09:17 +0800
Subject: [PATCH] 1111 【越南】【英语】【BT】【砍树】增加功能开启触发任务事件;
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py | 30 +++++++++++++++++++++---------
1 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py
index 4d4b839..a96d46f 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
@@ -837,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
@@ -866,7 +869,7 @@
robPlayerID = mineItemData.RobPlayerID
# 赶走抢夺者
if robPlayerID and robPlayerID == tagPlayerID:
- __DoCancelPull(tagPlayerID, areaPlayerID, itemIndex)
+ __DoCancelPull(tagPlayerID, areaPlayerID, itemIndex, "out")
# 帮助的发奖
if funcLineID == 0:
@@ -923,7 +926,7 @@
return
if workerCount <= 0:
if not isPreview:
- __DoCancelPull(playerID, areaPlayerID, itemIndex)
+ __DoCancelPull(playerID, areaPlayerID, itemIndex, "cancel")
return
GameWorld.DebugLog("请求福地拉物品! areaPlayerID=%s,itemIndex=%s,workerCount=%s,workerState=%s,workerTotal=%s,isPreview=%s"
% (areaPlayerID, itemIndex, workerCount, workerState, workerTotal, isPreview), playerID)
@@ -1016,7 +1019,7 @@
SyncMineAreaItemInfo(areaPlayerID, [itemIndex], notifyPlayerIDListEx)
return True
-def __DoCancelPull(playerID, areaPlayerID, itemIndex):
+def __DoCancelPull(playerID, areaPlayerID, itemIndex, reason=""):
## 取消拉取
mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager()
mineItemData = mineItemMgr.GetMineItem(areaPlayerID, itemIndex)
@@ -1051,6 +1054,9 @@
__RefreshMineItemSpeed(mineItemData, True)
SyncMineAreaItemInfo(areaPlayerID, [itemIndex], notifyPlayerIDListEx)
+ curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
+ if curPlayer:
+ MapServer_QueryPlayerResult(curPlayer, "MineAreaCancelPull", [areaPlayerID, reason])
return
def __DoMineItemRefresh(areaPlayerID, areaPlayer=None, isSys=False, isSuper=False, isNotify=True, refreshIndexList=None, setPosition=None, setItemLV=None, setMineID=None):
@@ -1347,7 +1353,9 @@
if areaPlayerID > Def_FakeAreaCount:
cacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(areaPlayerID))
areaInfo.PlayerName = cacheDict.get("Name", "")
+ areaInfo.Job = cacheDict.get("Job", 0)
areaInfo.Face = cacheDict.get("Face", 0)
+ areaInfo.FacePic = cacheDict.get("FacePic", 0)
areaInfo.MineItemList = []
if not mineIndexList:
@@ -1361,16 +1369,18 @@
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
if mineItemData.RobPlayerID:
robCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(mineItemData.RobPlayerID))
mineItem.RobPlayerName = robCacheDict.get("Name", "")
+ mineItem.RobJob = robCacheDict.get("Job", 0)
mineItem.RobFace = robCacheDict.get("Face", 0)
+ mineItem.RobFacePic = robCacheDict.get("FacePic", 0)
areaInfo.MineItemList.append(mineItem)
areaInfo.MineCount = len(areaInfo.MineItemList)
@@ -1394,7 +1404,9 @@
if playerID != recordInfo.TagPlayerID and recordInfo.TagPlayerID > Def_FakeAreaCount:
tagCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(recordInfo.TagPlayerID))
recordInfo.TagPlayerName = tagCacheDict.get("Name", "")
+ recordInfo.TagJob = tagCacheDict.get("Job", 0)
recordInfo.TagFace = tagCacheDict.get("Face", 0)
+ recordInfo.TagFacePic = tagCacheDict.get("FacePic", 0)
clientPack.AreaRecordList.append(recordInfo)
clientPack.RecordCount = len(clientPack.AreaRecordList)
NetPackCommon.SendFakePack(curPlayer, clientPack)
--
Gitblit v1.8.0