From dc0b92c1e2fe9f3d24c183b325dad54d088735c1 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 10 七月 2025 17:01:24 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_ServerCode --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py | 469 +--------------------------------------------------------- 1 files changed, 9 insertions(+), 460 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py index 94eeee2..9834fa0 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py @@ -31,14 +31,11 @@ """Version = 2016-07-20 14:30""" #------------------------------------------------------------------------------ import GameWorld -import EventShell import PlayerControl -import IPY_GameWorld import PlayerEventCounter import ChConfig import PlayerCoin import ChPlayer -import ShareDefine #--------------------------------------------------------------------- #记录玩家初始化过程中。积累的封包 OnHourKey = 'PlayerGSInitOK_OnHourKey' @@ -50,306 +47,8 @@ OnWeekExKey = 'PlayerGSInitOK_OnWeekExKey' OnMonthExKey = 'PlayerGSInitOK_OnMonthExKey' #--------------------------------------------------------------------- -#记录玩家任务信息,积累的封包( 无任务ID ) -Mission_No_ID_OnLeaveFamily = 'Mission_No_ID_OnLeaveFamily' #离开家族触发 -Mission_No_ID_OnMemberChange = 'Mission_No_ID_OnMemberChange' #家族长变更 -#--------------------------------------------------------------------- -#记录玩家任务信息,积累的封包( 有任务ID ) -Mission_Have_ID_OnActive = 'Mission_Have_ID_OnActive' #GM开启活动 -Mission_Have_ID_OnDeActive = 'Mission_Have_ID_OnDeActive' #GM关闭活动 -Mission_Have_ID_OnMissionPub = 'Mission_Have_ID_OnMissionPub' #发布任务 -#--------------------------------------------------------------------- #玩家离开副本 Def_RouteServerInitOK_LeaveFBKey = 'RouteServerInitOK_LeaveFBKey' #玩家离开副本 -#--------------------------------------------------------------------- -#class IPY_MLeaveEvent -#{ -#public: -# -# int GetPlayerID(); -# -# int GetType(); -#}; - - -## GameServer通知玩家离开事件 -# @param index 玩家索引 -# @param tick 当前时间 -# @return None -# @remarks 函数详细说明. -def GameServer_LeaveEvent(index, tick): - curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - pack = IPY_GameWorld.IPY_MLeaveEvent() - if curPlayer.GetID() != pack.GetPlayerID(): - #不是自己 - return - - EventShell.DoExitEvent(curPlayer) - return - -#////////////////////////////////////////////////////////////// -#//04 02 玩家扣钱#tagMPayMoney -#tagMPayMoney * GettagMPayMoney(); -# -#class IPY_MPayMoney -#{ -#public: -# //金钱类型 -# int GetMoneyType(); -# //金钱 -# int GetMoney(); -#}; - - -## 付钱 04 02 玩家扣钱 -# @param index 玩家索引 -# @param tick 当前时间 -# @return None -# @remarks 函数详细说明. -def GameServer_PayMoney(index, tick): - curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - pack = IPY_GameWorld.IPY_MPayMoney() - - if curPlayer.GetID() != pack.GetPlayerID(): - #不是自己 - return - moneyType = pack.GetMoneyType() - moneyNum = pack.GetMoney() - if moneyType == ShareDefine.TYPE_Price_Gold_Paper_Money: - costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, ShareDefine.TYPE_Price_Gold_Paper_Money, moneyNum) - else: - costMoneyList = [[moneyType, moneyNum]] - if not costMoneyList: - return - for moneyType, moneyCnt in costMoneyList: - PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_GameServer) - return - -#////////////////////////////////////////////////////////////// -#//01 07 经验倍率改变#tagMExpRateChange -#tagMExpRateChange * GettagMExpRateChange(); -# -#class IPY_MExpRateChange -#{ -#public: -# -# int GetExpRate(); -#}; - -## 01 07 经验倍率改变 -# @param index 玩家索引 -# @param tick 当前时间 -# @return None -# @remarks 函数详细说明. -def GameServer_SetExpRate(index, tick): - gameServerPack = IPY_GameWorld.IPY_MExpRateChange() - expRate = gameServerPack.GetExpRate() - #---同步世界服务器经验倍率--- - GameWorld.GetGameWorld().SetExpRate(expRate) - GameWorld.Log("通知地图服务器经验倍率变更 = %s"%(expRate)) - - #---通知全服玩家经验倍率变更--- - playerManager = GameWorld.GetPlayerManager() - - for i in range(0, playerManager.GetActivePlayerCount()): - curPlayer = playerManager.GetActivePlayerByIndex(i) - - if not GameWorld.IsNormalPlayer(curPlayer): - continue - - PlayerControl.Sync_ExpRateChange(curPlayer) - - return - - -#////////////////////////////////////////////////////////////// -#//01 08 激活活动#tagMActiveEvent -#tagMActiveEvent * GettagMActiveEvent(); -# -#class IPY_MActiveEvent -#{ -#public: -# -# int GetEventID(); -# //是否激活 -# int GetIsActive(); -# //是否只针对所选地图 -# int GetSelectMap(); -# //地图数目 -# int GetMapListCount(); -# //size = MapListCount -# int GetMapList(int index); -#}; - -## 活动地图时当前地图 -# @param pack 封包 -# @return True or False -# @remarks 函数详细说明. -def __IsCurrentMapInGameEventSelectMap(pack): - for i in range(pack.GetMapListCount()): - if pack.GetMapList(i) == GameWorld.GetGameWorld().GetMapID(): - return True - - return False - -## 01 08 激活活动 -# @param index 玩家索引 -# @param tick 当前时间 -# @return None -# @remarks 函数详细说明. -def GameServer_ActiveEvent(index, tick): - pack = IPY_GameWorld.IPY_MActiveEvent() - - if pack.GetSelectMap(): - #要选择地图的 - if not __IsCurrentMapInGameEventSelectMap(pack): - return - - if pack.GetIsActive(): - GameWorld.GetGameWorld().AddActiveEvent(pack.GetEventID()) - __ActiveGMEvent(pack.GetEventID()) - else: - __DeActiveGMEvent(pack.GetEventID()) - GameWorld.GetGameWorld().DelActiveEvent(pack.GetEventID()) - - return - -## 全服玩家都触发这个任务 -# @param missionID 事件ID -# @return None -# @remarks 函数详细说明. -def __ActiveGMEvent(missionID): - #全服玩家都触发这个任务 - playerManager = GameWorld.GetPlayerManager() - - for i in range(playerManager.OnlineCount()): - curPlayer = playerManager.OnlineAt(i) - if curPlayer.IsEmpty(): - continue - - EventShell.EventResponse_OnActive(curPlayer, missionID) - - return - -## 全服玩家都取消这个任务 -# @param missionID 事件ID -# @return None -# @remarks 函数详细说明. -def __DeActiveGMEvent(missionID): - #全服玩家都触发这个任务 - playerManager = GameWorld.GetPlayerManager() - - for i in range(playerManager.OnlineCount()): - curPlayer = playerManager.OnlineAt(i) - if curPlayer.IsEmpty(): - continue - - EventShell.EventResponse_OnDeActive(curPlayer, missionID) - - return - -#////////////////////////////////////////////////////////////// -#//01 10 任务发布#tagMMissionPub -#tagMMissionPub * GettagMMissionPub(); -# -#class IPY_MMissionPub -#{ -#public: -# //发布任务ID -# int GetMissionID(); -# //发布类型(家族, 国家) TMissinoPubType -# int GetMissinoPubType(); -# //发布ID -# int GetPubID(); -#}; -## 01 10 任务发布 -# @param index 玩家索引 -# @param tick 当前时间 -# @return None -# @remarks 函数详细说明. -def GameServer_MissionPub(index, tick): - pack = IPY_GameWorld.IPY_MMissionPub() - missionPubManager = GameWorld.GetGameWorld().GetDBMissionPubManager() - curMissionPub = missionPubManager.AddDBMissionPub(pack.GetMissionID()) - curMissionPub.SetMissinoPubType(pack.GetMissinoPubType()) - curMissionPub.SetPubID(pack.GetPubID()) - GameWorld.Log('任务发布, ID = %s'%pack.GetPubID()) - __MissionPub(curMissionPub) - return - -## 全服玩家都触发这个任务 -# @param curMissionPub 任务发布表 -# @return None -# @remarks 函数详细说明. -def __MissionPub(curMissionPub): - #全服玩家都触发这个任务 - playerManager = GameWorld.GetPlayerManager() - - for i in range(playerManager.OnlineCount()): - curPlayer = playerManager.OnlineAt(i) - if curPlayer.IsEmpty(): - continue - - EventShell.CheckTrigMissionPub(curPlayer, curMissionPub) - - return - -#////////////////////////////////////////////////////////////// -#//04 03 禁止继续掉落#tagMForbiddenDrop -#tagMForbiddenDrop * GettagMForbiddenDrop(); -# -#class IPY_MForbiddenDrop -#{ -#public: -# //是否能够继续掉落 -# int GetCanDrop(); -# -# int GetItemID(); -# -# int GetDropFunctionType(); -#}; -## 04 03 禁止继续掉落 -# @param index 玩家索引 -# @param tick 当前时间 -# @return None -# @remarks 函数详细说明. -def GameServer_ForbiddenDrop(index, tick): - pack = IPY_GameWorld.IPY_MForbiddenDrop() - itemID = pack.GetItemID() - functionType = pack.GetDropFunctionType() - gameWorld = GameWorld.GetGameWorld() - if pack.GetCanDrop(): - gameWorld.DelForbiddenDrop(itemID, functionType) - else: - gameWorld.AddForbiddenDrop(itemID, functionType) - - return - -## 清空禁止掉落物品 -# @param index 玩家索引 -# @param tick 当前时间 -# @return None -# @remarks 函数详细说明. -def GameServer_ClearForbiddenDrop(index, tick): - GameWorld.GetGameWorld().ClearForbiddenDrop() - return - -## GameServer通知地图服务器, 玩家保存数据到数据库 -# @param index 玩家索引 -# @param tick 当前时间 -# @return None -# @remarks 函数详细说明. -def GameServer_PlayerSave(index, tick): - curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - #2009-07-04 因地图服务器有可能关闭重开,这里要判定空 - if not curPlayer: - return - - # 1为保存 0为正常下线 - curPlayer.SetCountryLastWeekHornor(1) # 利用此字段通知为保存数据,非下线数据 - curPlayer.PushSaveData() - curPlayer.SetCountryLastWeekHornor(0) # 利用此字段通知为保存数据,非下线数据 - return #=============================================================================== # ////////////////////////////////////////////////////////////// @@ -378,11 +77,6 @@ #设置初始化成功 curPlayer.SetGameServerInitOK(True) - #触发GM开关活动 - #EventShell.PlayerGMEventTrig(curPlayer) - #触发他人发布活动 - #EventShell.PlayerMissionPubEventTrig(curPlayer) - #时间缓存封包 if Get_PlayerGameServerInitOK_OnHour(curPlayer): PlayerEventCounter.PlayerOnHour(curPlayer) @@ -392,58 +86,30 @@ PlayerEventCounter.PlayerOnDay(curPlayer) Set_PlayerGameServerInitOK_OnDay(curPlayer, 0) - if Get_PlayerGameServerInitOK_OnDayEx(curPlayer): - PlayerEventCounter.PlayerOnDayEx(curPlayer) - Set_PlayerGameServerInitOK_OnDayEx(curPlayer, 0) + #if Get_PlayerGameServerInitOK_OnDayEx(curPlayer): + # PlayerEventCounter.PlayerOnDayEx(curPlayer) + # Set_PlayerGameServerInitOK_OnDayEx(curPlayer, 0) if Get_PlayerGameServerInitOK_OnWeek(curPlayer): PlayerEventCounter.PlayerOnWeek(curPlayer) Set_PlayerGameServerInitOK_OnWeek(curPlayer, 0) - if Get_PlayerGameServerInitOK_OnWeekEx(curPlayer): - PlayerEventCounter.PlayerOnWeekEx(curPlayer) - Set_PlayerGameServerInitOK_OnWeekEx(curPlayer, 0) + #if Get_PlayerGameServerInitOK_OnWeekEx(curPlayer): + # PlayerEventCounter.PlayerOnWeekEx(curPlayer) + # Set_PlayerGameServerInitOK_OnWeekEx(curPlayer, 0) if Get_PlayerGameServerInitOK_OnMonth(curPlayer): PlayerEventCounter.PlayerOnMonth(curPlayer) Set_PlayerGameServerInitOK_OnMonth(curPlayer, 0) - if Get_PlayerGameServerInitOK_OnMonthEx(curPlayer): - PlayerEventCounter.PlayerOnMonthEx(curPlayer) - Set_PlayerGameServerInitOK_OnMonthEx(curPlayer, 0) + #if Get_PlayerGameServerInitOK_OnMonthEx(curPlayer): + # PlayerEventCounter.PlayerOnMonthEx(curPlayer) + # Set_PlayerGameServerInitOK_OnMonthEx(curPlayer, 0) if Get_PlayerGameServerInitOK_OnYear(curPlayer): PlayerEventCounter.PlayerOnYear(curPlayer) Set_PlayerGameServerInitOK_OnYear(curPlayer, 0) - #无任务ID的任务缓存处理 - #=========================================================================== - # if Get_Mission_No_ID_OnLeaveFamily(curPlayer): - # EventShell.EventResponse_OnLeaveFamily(curPlayer) - # Set_Mission_No_ID_OnLeaveFamily(curPlayer, 0) - # - # if Get_Mission_No_ID_OnMemberChange(curPlayer): - # EventShell.EventResponse_OnMemberChange(curPlayer) - # Set_Mission_No_ID_OnMemberChange(curPlayer, 0) - # - # #有任务ID的任务缓存处理 - # if Get_Mission_Have_ID_OnActive(curPlayer): - # EventShell.EventResponse_OnActive(curPlayer , Get_Mission_Have_ID_OnActive(curPlayer)) - # Set_Mission_Have_ID_OnActive(curPlayer, 0) - # - # if Get_Mission_Have_ID_OnDeActive(curPlayer): - # EventShell.EventResponse_OnDeActive(curPlayer , Get_Mission_Have_ID_OnDeActive(curPlayer)) - # Set_Mission_Have_ID_OnDeActive(curPlayer, 0) - # - # if Get_Mission_Have_ID_OnMissionPub(curPlayer): - # EventShell.EventResponse_OnMissionPub(curPlayer , Get_Mission_Have_ID_OnMissionPub(curPlayer)) - # Set_Mission_Have_ID_OnMissionPub(curPlayer, 0) - #=========================================================================== - - #查询是否还在申请家族列表中 - ChPlayer.QueryIsResFamily(curPlayer) - #邮件 - PlayerControl.SendUnLoginOKPlayerMailCache(curPlayer) #刷新排行榜称号 #PlayerDienstgrad.RefreshBillBoardDienstgrad(curPlayer) @@ -545,97 +211,6 @@ def Get_PlayerGameServerInitOK_OnYear(curPlayer): return curPlayer.GetDictByKey(OnYearKey) -#--------------------------------------------------------------------- - -## 设置离开家族触发 -# @param curPlayer 当前玩家 -# @param value key值 -# @return None -# @remarks 函数详细说明. -def Set_Mission_No_ID_OnLeaveFamily(curPlayer, value): - curPlayer.SetDict(Mission_No_ID_OnLeaveFamily, value) - #GameWorld.Log('Set_Mission_No_ID_OnLeaveFamily, value = %s'%( value ) , curPlayer.GetID()) - return - -## 获取玩家字典 离开家族 -# @param curPlayer 当前玩家 -# @return None -# @remarks 函数详细说明. -def Get_Mission_No_ID_OnLeaveFamily(curPlayer): - return curPlayer.GetDictByKey(Mission_No_ID_OnLeaveFamily) - -## 设置家族长变更 -# @param curPlayer 当前玩家 -# @param value key值 -# @return None -# @remarks 函数详细说明. -def Set_Mission_No_ID_OnMemberChange(curPlayer, value): - curPlayer.SetDict(Mission_No_ID_OnMemberChange, value) - #GameWorld.Log('Set_Mission_No_ID_OnMemberChange, value = %s'%( value ) , curPlayer.GetID()) - return - -## 获取玩家字典 家族长变更 -# @param curPlayer 当前玩家 -# @return None -# @remarks 函数详细说明. -def Get_Mission_No_ID_OnMemberChange(curPlayer): - return curPlayer.GetDictByKey(Mission_No_ID_OnMemberChange) -#--------------------------------------------------------------------- -# -## 设置GM开启活动 -# @param curPlayer 当前玩家 -# @param value key值 -# @return None -# @remarks 函数详细说明. -def Set_Mission_Have_ID_OnActive(curPlayer, value): - curPlayer.SetDict(Mission_Have_ID_OnActive, value) - #GameWorld.Log('Set_Mission_Have_ID_OnActive, value = %s'%( value ) , curPlayer.GetID()) - return - -## 获取玩家字典 GM开启活动 -# @param curPlayer 当前玩家 -# @return None -# @remarks 函数详细说明. -def Get_Mission_Have_ID_OnActive(curPlayer): - return curPlayer.GetDictByKey(Mission_Have_ID_OnActive) - -#GM关闭活动 -## 设置GM关闭活动 -# @param curPlayer 当前玩家 -# @param value key值 -# @return None -# @remarks 函数详细说明. -def Set_Mission_Have_ID_OnDeActive(curPlayer, value): - curPlayer.SetDict(Mission_Have_ID_OnDeActive, value) - #GameWorld.Log('Set_Mission_Have_ID_OnDeActive, value = %s'%( value ) , curPlayer.GetID()) - return - -## 获取玩家字典 GM关闭活动 -# @param curPlayer 当前玩家 -# @return None -# @remarks 函数详细说明. -def Get_Mission_Have_ID_OnDeActive(curPlayer): - return curPlayer.GetDictByKey(Mission_Have_ID_OnDeActive) - -#发布任务 -## 设置发布任务 -# @param curPlayer 当前玩家 -# @param value key值 -# @return None -# @remarks 函数详细说明. -def Set_Mission_Have_ID_OnMissionPub(curPlayer, value): - curPlayer.SetDict(Mission_Have_ID_OnMissionPub, value) - #GameWorld.Log('Set_Mission_Have_ID_OnMissionPub, value = %s'%( value ) , curPlayer.GetID()) - return - -## 获取玩家字典 发布任务 -# @param curPlayer 当前玩家 -# @return None -# @remarks 函数详细说明. -def Get_Mission_Have_ID_OnMissionPub(curPlayer): - return curPlayer.GetDictByKey(Mission_Have_ID_OnMissionPub) - -#--------------------------------------------------------------------- #=============================================================================== # //01 15 玩家在RouteServer初始化成功#tagPlayerRouteServerInitOK # structtagPlayerRouteServerInitOK @@ -689,32 +264,6 @@ # @remarks 函数详细说明. def Get_PlayerRouteServerInitOK_OnLeaveFB(curPlayer): return curPlayer.GetDictByKey(Def_RouteServerInitOK_LeaveFBKey) - -#--------------------------------------------------------------------- -#=============================================================================== -# //04 05玩家点券兑换元宝#tagPlayerCoinToGold -# struct tagPlayerCoinToGold -# { -# tagHead Head; -# DWORD PlayerID; -# DWORD Coin;//本次兑换的点数 -# DWORD PrizeCoin; //赠送的点数 -# }; -#=============================================================================== -##04 05玩家点券兑换元宝#tagPlayerCoinToGold -# @param index 玩家索引 -# @param tick 时间戳 -# @return 返回值无意义 -# @remarks 客户端封包响应 04 05玩家点券兑换元宝#tagPlayerCoinToGold -def GameServer_PlayerCoinToGold(index, tick): - #=========================================================================== - # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - # pack = IPY_GameWorld.IPY_PlayerCoinToGold() - # if curPlayer.GetLastOrderId() == "": - # return - # PlayerCoin.PlayerCoinToGold(curPlayer, pack, ChConfig.Def_GiveMoney_CoinToGold) - #=========================================================================== - return # DB推送过来的充值信息 def PushRecharge(index, tick): -- Gitblit v1.8.0