From aad1382a82aecd2acc312bf81727882c9eadbdd6 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 04 十一月 2025 15:43:18 +0800
Subject: [PATCH] 237 【福利内容】每日任务/每周任务/章节奖励-服务端(修复有配置任务条件的任务无法取到任务值的bug;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameServerRefresh.py | 472 +---------------------------------------------------------
1 files changed, 9 insertions(+), 463 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 98b53fa..cae2a59 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,61 +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)
-
GameWorld.Log('GameSever_PlayerInitOK' , curPlayer.GetID())
ChPlayer.DoPlayerRealLoginOK(curPlayer, tick)
return
@@ -545,97 +208,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 +261,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