From d7e6ef56122500442ccee80ffeb29091e3fd0ce9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 06 六月 2024 11:17:58 +0800
Subject: [PATCH] 10130 【后端】福地争夺资源功能(增加摇人功能)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MineArea.py | 75 ++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 40 +++++
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTurnFight.py | 62 ++++++++
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py | 21 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 11 +
ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py | 5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TurnFight.py | 47 ++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MineArea.py | 7 +
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 11 +
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py | 96 +++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py | 2
11 files changed, 364 insertions(+), 13 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
index c13904f..c8f0cb2 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChConfig.py
@@ -718,6 +718,11 @@
#情缘副本
Def_FBMapID_Love = 31300
+#回合战斗自定义地图ID
+TurnFightMapIDList = (
+Def_TFMapID_MineArea, # 福地 1
+) = range(1, 1 + 1)
+
#需要刷世界BOSS的副本
WorldBossFBMapIDList = [Def_FBMapID_SealDemon, Def_FBMapID_ZhuXianBoss, Def_FBMapID_DemonKing]
#跨服地图
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index d308982..34d8143 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -44582,6 +44582,7 @@
TreasureState = list() #(vector<BYTE> TreasureState)// 聚宝盆是否已激活列表,[类型0是否已激活, ...]
TreasureAward = list() #(vector<BYTE> TreasureAward)// 聚宝盆奖励是否已领取列表,[类型0是否已领取, ...]
TreasureProgress = list() #(vector<BYTE> TreasureProgress)// 聚宝盆进度值列表,[类型0进度值, ...],满进度100
+ HelpAwardCount = 0 #(BYTE HelpAwardCount)// 今日已帮助别人奖励次数
data = None
def __init__(self):
@@ -44607,6 +44608,7 @@
for i in range(self.TreasureCount):
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.TreasureProgress.append(value)
+ self.HelpAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -44622,6 +44624,7 @@
self.TreasureState = list()
self.TreasureAward = list()
self.TreasureProgress = list()
+ self.HelpAwardCount = 0
return
def GetLength(self):
@@ -44635,6 +44638,7 @@
length += 1 * self.TreasureCount
length += 1 * self.TreasureCount
length += 1 * self.TreasureCount
+ length += 1
return length
@@ -44652,6 +44656,7 @@
data = CommFunc.WriteBYTE(data, self.TreasureAward[i])
for i in range(self.TreasureCount):
data = CommFunc.WriteBYTE(data, self.TreasureProgress[i])
+ data = CommFunc.WriteBYTE(data, self.HelpAwardCount)
return data
def OutputString(self):
@@ -44664,7 +44669,8 @@
TreasureCount:%d,
TreasureState:%s,
TreasureAward:%s,
- TreasureProgress:%s
+ TreasureProgress:%s,
+ HelpAwardCount:%d
'''\
%(
self.Head.OutputString(),
@@ -44675,7 +44681,8 @@
self.TreasureCount,
"...",
"...",
- "..."
+ "...",
+ self.HelpAwardCount
)
return DumpString
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py
index 5973fab..d89f323 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py
@@ -20,6 +20,7 @@
import PyDataManager
import ChPyNetSendPack
import PyGameDataStruct
+import PlayerCompensation
import PlayerViewCache
import PlayerDBGSEvent
import PlayerControl
@@ -42,6 +43,7 @@
# 物品实例额外属性名
MineItemAttr_MoveSpeed = "MoveSpeed"
MineItemAttr_EndTime = "EndTime"
+MineItemAttr_HelpTick = "HelpTick"
# 物品类型
MineType_Normal = 0 # 常规物品
@@ -226,6 +228,7 @@
# 不入库的属性
setattr(mineItemData, MineItemAttr_EndTime, 0)
setattr(mineItemData, MineItemAttr_MoveSpeed, 0)
+ setattr(mineItemData, MineItemAttr_HelpTick, 0)
return
def GetMineItem(self, playerID, index):
@@ -331,10 +334,7 @@
def DoMineAreaFuncOpen(curPlayer):
## 福地功能开启
playerID = curPlayer.GetPlayerID()
- mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager()
- # 还没有福地物品数据,则刷新初始化
- if playerID not in mineItemMgr.playerMineItemDict:
- __DoMineItemRefresh(playerID, curPlayer)
+ __DoMineItemRefresh(playerID, curPlayer)
return
def OnPlayerLogin(curPlayer):
@@ -788,6 +788,94 @@
mineItemMgr.socialIDListDict[playerID] = socialIDList
return socialIDList
+def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList):
+
+ # 摇人帮助请求
+ if funcLineID == 0:
+ return __OnMineHelpRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList)
+
+ return
+
+def OnTurnFightOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList):
+
+ # 摇人帮助结果
+ if funcLineID == 0:
+ 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)
+ return
+ areaPlayerID = valueList[0]
+ itemIndex = valueList[1]
+
+ if playerID == areaPlayerID:
+ GameWorld.DebugLog("不能帮助自己!", playerID)
+ return
+
+ mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager()
+ mineItemData = mineItemMgr.GetMineItem(areaPlayerID, itemIndex)
+ mineID = mineItemData.MineID
+ if not mineID:
+ # 该资源已消失
+ PlayerControl.NotifyCode(curPlayer, "MineDisappeared")
+ return
+
+ robPlayerID = mineItemData.RobPlayerID
+ if not robPlayerID or robPlayerID != tagPlayerID:
+ # 当前资源无争夺者或已被其他玩家完成
+ PlayerControl.NotifyCode(curPlayer, "MineHelpFinished")
+ return
+
+ tick = GameWorld.GetGameWorld().GetTick()
+ helpTick = getattr(mineItemData, MineItemAttr_HelpTick)
+ if helpTick and tick - helpTick < 10000:
+ GameWorld.DebugLog("已经有其他人在帮助中!", playerID)
+ return
+ setattr(mineItemData, MineItemAttr_HelpTick, tick)
+
+ return True
+
+def __OnMineHelpOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList):
+ # 摇人帮助结果
+
+ playerID = curPlayer.GetPlayerID()
+ helpPlayerName = curPlayer.GetName()
+
+ areaPlayerID = valueList[0]
+ itemIndex = valueList[1]
+ isWin = fightRet[0]
+
+ mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager()
+ mineItemData = mineItemMgr.GetMineItem(areaPlayerID, itemIndex)
+ setattr(mineItemData, MineItemAttr_HelpTick, 0)
+
+ if not isWin:
+ #GameWorld.DebugLog("帮助失败")
+ return
+
+ robPlayerID = mineItemData.RobPlayerID
+ # 赶走抢夺者
+ if robPlayerID and robPlayerID == tagPlayerID:
+ __DoCancelPull(tagPlayerID, areaPlayerID, itemIndex)
+
+ 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])
+ return True
+
def MapServer_MineArea(curPlayer, msgList):
mapID = curPlayer.GetRealMapID()
playerID = curPlayer.GetPlayerID()
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
index 7211e0f..18822d5 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
@@ -82,6 +82,7 @@
import PlayerFairyDomain
import GameWorldSkyTower
import GameWorldMineArea
+import PlayerTurnFight
import GameWorldArena
import GameWorldItem
import PlayerAssist
@@ -992,7 +993,7 @@
# 副本助战
- if callName =="FBHelpBattle":
+ if callName == "FBHelpBattle":
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
if not curPlayer:
return
@@ -1002,7 +1003,7 @@
resultName = '%s' % ret
# 竞技场
- if callName =="Arena":
+ if callName == "Arena":
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
if not curPlayer:
return
@@ -1010,14 +1011,14 @@
resultName = '%s' % ret if ret != None else '' # 需要重置间隔,每次都回复
# 仙盟boss
- if callName =="FamilyBoss":
+ if callName == "FamilyBoss":
ret = PlayerFamilyBoss.MapServer_FamilyBoss(eval(resultName), tick)
if ret == None:
return
resultName = '%s' % ret
# 情缘
- if callName =="Love":
+ if callName == "Love":
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
if not curPlayer:
return
@@ -1026,8 +1027,18 @@
return
resultName = '%s' % ret
+ # 回合制
+ if callName == "TurnFight":
+ curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
+ if not curPlayer:
+ return
+ ret = PlayerTurnFight.MapServer_TurnFight(curPlayer, eval(resultName))
+ if ret == None:
+ return
+ resultName = '%s' % ret
+
# 福地
- if callName =="MineArea":
+ if callName == "MineArea":
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
if not curPlayer:
return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTurnFight.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTurnFight.py
new file mode 100644
index 0000000..ffe290e
--- /dev/null
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTurnFight.py
@@ -0,0 +1,62 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package PlayerTurnFight
+#
+# @todo:回合制
+# @author hxp
+# @date 2024-04-10
+# @version 1.0
+#
+# 详细描述: 回合制
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2024-04-10 14:00"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import GameWorldMineArea
+import ChConfig
+
+def MapServer_TurnFight(curPlayer, msgList):
+ mapID = curPlayer.GetRealMapID()
+ playerID = curPlayer.GetPlayerID()
+ GameWorld.DebugLog("MapServer_TurnFight mapID=%s,msgList=%s" % (mapID, msgList), playerID)
+ if not msgList:
+ return
+
+ msgType, dataMsg = msgList
+ ret = None
+
+ if msgType == "TurnFightRequest":
+ ret = __OnTurnFightRequest(curPlayer, dataMsg)
+
+ elif msgType == "TurnFightOver":
+ ret = __OnTurnFightOver(curPlayer, dataMsg)
+
+ if ret == None:
+ return
+ return msgList + (ret if isinstance(ret, list) else [ret])
+
+def __OnTurnFightRequest(curPlayer, dataMsg):
+ ## 回合战斗请求
+ # @return: None-不允许战斗;非None-允许战斗,具体返回内容功能自己决定
+
+ mapID, funcLineID, tagPlayerID, valueList = dataMsg
+ if mapID == ChConfig.Def_TFMapID_MineArea:
+ return GameWorldMineArea.OnTurnFightRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList)
+
+ return
+
+def __OnTurnFightOver(curPlayer, dataMsg):
+ ## 回合战斗结束
+
+ mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList = dataMsg
+
+ if mapID == ChConfig.Def_TFMapID_MineArea:
+ return GameWorldMineArea.OnTurnFightOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList)
+
+ return
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index d308982..34d8143 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -44582,6 +44582,7 @@
TreasureState = list() #(vector<BYTE> TreasureState)// 聚宝盆是否已激活列表,[类型0是否已激活, ...]
TreasureAward = list() #(vector<BYTE> TreasureAward)// 聚宝盆奖励是否已领取列表,[类型0是否已领取, ...]
TreasureProgress = list() #(vector<BYTE> TreasureProgress)// 聚宝盆进度值列表,[类型0进度值, ...],满进度100
+ HelpAwardCount = 0 #(BYTE HelpAwardCount)// 今日已帮助别人奖励次数
data = None
def __init__(self):
@@ -44607,6 +44608,7 @@
for i in range(self.TreasureCount):
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.TreasureProgress.append(value)
+ self.HelpAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -44622,6 +44624,7 @@
self.TreasureState = list()
self.TreasureAward = list()
self.TreasureProgress = list()
+ self.HelpAwardCount = 0
return
def GetLength(self):
@@ -44635,6 +44638,7 @@
length += 1 * self.TreasureCount
length += 1 * self.TreasureCount
length += 1 * self.TreasureCount
+ length += 1
return length
@@ -44652,6 +44656,7 @@
data = CommFunc.WriteBYTE(data, self.TreasureAward[i])
for i in range(self.TreasureCount):
data = CommFunc.WriteBYTE(data, self.TreasureProgress[i])
+ data = CommFunc.WriteBYTE(data, self.HelpAwardCount)
return data
def OutputString(self):
@@ -44664,7 +44669,8 @@
TreasureCount:%d,
TreasureState:%s,
TreasureAward:%s,
- TreasureProgress:%s
+ TreasureProgress:%s,
+ HelpAwardCount:%d
'''\
%(
self.Head.OutputString(),
@@ -44675,7 +44681,8 @@
self.TreasureCount,
"...",
"...",
- "..."
+ "...",
+ self.HelpAwardCount
)
return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MineArea.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MineArea.py
index a89ab18..fa38bc0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MineArea.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/MineArea.py
@@ -35,12 +35,14 @@
GameWorld.DebugAnswer(curPlayer, "设置工人数量: MineArea w 数量")
GameWorld.DebugAnswer(curPlayer, "设置刷新次数: MineArea r 次数 [是否超级]")
GameWorld.DebugAnswer(curPlayer, "设置聚宝进度: MineArea t 类型 进度值")
+ GameWorld.DebugAnswer(curPlayer, "设置帮助次数: MineArea h 次数")
return True
value1 = msgList[0]
if value1 == 0:
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineWorkerCount, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineWorkerEnergyUsed, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineHelpAwardCount, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineRefreshCount % 0, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineRefreshCount % 1, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineTreasureState, 0)
@@ -73,6 +75,11 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineTreasureProgess % treasureType, setProgress)
GameWorld.DebugAnswer(curPlayer, "设置聚宝进度: Type:%s,进度=%s" % (treasureType, setProgress))
+ elif value1 == "h":
+ helpAwardCount = msgList[1] if len(msgList) > 1 else 0
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineHelpAwardCount, helpAwardCount)
+ GameWorld.DebugAnswer(curPlayer, "设置帮助次数: %s" % helpAwardCount)
+
else:
return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index ab5c956..ca0555f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -2423,4 +2423,44 @@
if callFunc == None:
return False
return callFunc(curPlayer)
+
+def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList):
+ ## 回合战斗请求 - 地图验证
+ # @return: 是否允许
+ do_FBLogic_ID = __GetFBLogic_MapID(mapID)
+
+ callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnTurnFightRequest"))
+
+ if callFunc == None:
+ # 默认不限制
+ return True
+
+ return callFunc(curPlayer, mapID, funcLineID, tagPlayerID, valueList)
+
+def OnTurnFightOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet):
+ ## 回合战斗结束
+ # @return: 是否需要同步GameServer, 奖励列表, 发放方式(0-不发放, 1-TurnAttack模块统一发放, 2-功能自己决定发放逻辑)
+ # @return: None - 无结算逻辑,可走TurnAttack模块通用逻辑
+
+ do_FBLogic_ID = __GetFBLogic_MapID(mapID)
+
+ callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnTurnFightOver"))
+
+ if callFunc == None:
+ return
+
+ return callFunc(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet)
+
+def OnTurnFightOver_GameServerRet(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList, ret):
+ ## 回合战斗结束 - GameServer处理完毕返回
+
+ do_FBLogic_ID = __GetFBLogic_MapID(mapID)
+
+ callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnTurnFightOver_GameServerRet"))
+
+ if callFunc == None:
+ return
+
+ return callFunc(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList, ret)
+
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MineArea.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MineArea.py
new file mode 100644
index 0000000..d4c7296
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MineArea.py
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GameWorldLogic.FBProcess.GameLogic_MineArea
+#
+# @todo:福地
+# @author hxp
+# @date 2024-04-10
+# @version 1.0
+#
+# 详细描述: 福地
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2024-04-10 14:00"""
+#-------------------------------------------------------------------------------
+
+import ChConfig
+import IpyGameDataPY
+import PlayerMineArea
+import PlayerControl
+import GameWorld
+
+def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList):
+ ## 回合战斗请求 - 地图验证
+
+ # 摇人帮助
+ if funcLineID == 0:
+ if not tagPlayerID:
+ return
+ awardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MineHelpAwardCount)
+ awardCountMax = IpyGameDataPY.GetFuncCfg("MineAreaHelp", 1)
+ if awardCountMax and awardCount >= awardCountMax:
+ GameWorld.DebugLog("已达到今日福地帮助奖励次数上限! awardCount=%s" % awardCount, curPlayer.GetPlayerID())
+ return
+ else:
+ # 通过lineID扩展同个功能系统下的不同战斗需求
+ pass
+
+ return True
+
+def OnTurnFightOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet):
+ ## 回合战斗结束
+ # @return: 是否需要同步GameServer, 奖励列表, 发放方式(0-不发放, 1-TurnAttack模块统一发放, 2-功能自己决定发放逻辑)
+
+ # 摇人帮助
+ if funcLineID == 0:
+ # 无论胜负都要同步GameServer汇报结果
+ isWin = fightRet[0]
+ if not isWin:
+ return True, [], 0
+
+ awardItemList = IpyGameDataPY.GetFuncEvalCfg("MineAreaHelp", 2)
+ return True, awardItemList, 2
+
+ return
+
+def OnTurnFightOver_GameServerRet(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList, ret):
+ ## 回合战斗结束 - GameServer处理完毕返回
+
+ # 摇人帮助
+ if funcLineID == 0:
+ isWin = fightRet[0]
+ if not isWin or not ret:
+ return
+
+ # 增加奖励次数
+ awardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MineHelpAwardCount) + 1
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineHelpAwardCount, awardCount)
+ GameWorld.DebugLog("更新福地帮助他人奖励次数: awardCount=%s" % awardCount, curPlayer.GetPlayerID())
+ PlayerMineArea.SyncPlayerMineAreaInfo(curPlayer)
+
+ return
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py
index 93016c2..ee34b98 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMineArea.py
@@ -33,6 +33,7 @@
return
def PlayerOnDay(curPlayer):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineHelpAwardCount, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineWorkerEnergyUsed, 0)
for refreshType in [0, 1]:
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MineRefreshCount % refreshType, 0)
@@ -296,6 +297,7 @@
clientPack = ChPyNetSendPack.tagMCPlayerMineAreaInfo()
clientPack.WorkerCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MineWorkerCount)
clientPack.EnergyUsed = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MineWorkerEnergyUsed)
+ clientPack.HelpAwardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MineHelpAwardCount)
clientPack.RefreshCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MineRefreshCount % 0)
clientPack.RefreshCountSuper = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MineRefreshCount % 1)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TurnFight.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TurnFight.py
new file mode 100644
index 0000000..e7db6c9
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_TurnFight.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Player.RemoteQuery.GY_Query_TurnFight
+#
+# @todo:回合制
+# @author hxp
+# @date 2024-04-10
+# @version 1.0
+#
+# 详细描述: 回合制
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2024-04-10 14:00"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import TurnAttack
+
+#---------------------------------------------------------------------
+#逻辑实现
+## 请求逻辑
+# @param query_Type 请求类型
+# @param query_ID 请求的玩家ID
+# @param packCMDList 发包命令 [ ]
+# @param tick 当前时间
+# @return "True" or "False" or ""
+# @remarks 函数详细说明.
+def DoLogic(query_Type, query_ID, packCMDList, tick):
+ return ""
+
+#---------------------------------------------------------------------
+#执行结果
+## 执行结果
+# @param curPlayer 发出请求的玩家
+# @param callFunName 功能名称
+# @param funResult 查询的结果
+# @param tick 当前时间
+# @return None
+# @remarks 函数详细说明.
+def DoResult(curPlayer, callFunName, funResult, tick):
+ GameWorld.DebugLog("GY_Query_TurnFight DoResult %s" % str(funResult), curPlayer.GetPlayerID())
+ if funResult != "":
+ TurnAttack.GameServer_TurnFight_DoResult(curPlayer, eval(funResult), tick)
+ return
+
--
Gitblit v1.8.0