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