From 718f530accc19969f39d1a8ce199fe947508e29a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 16 十月 2025 19:19:09 +0800
Subject: [PATCH] 237 【福利内容】每日任务/每周任务/章节奖励-服务端(每日任务、每周奖励;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py                             |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py                        |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py                        | 1088 ++++------------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py                                  |  204 -----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                              |  340 ++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py                        |   31 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py                            |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py     |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                                |  165 ---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py                        |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py                              |   10 
 PySysDB/PySysDBPY.h                                                                                                 |   69 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py                         |    6 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                                  |   56 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddActivity.py                      |   26 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py                    |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py                           |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py            |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py                                    |    3 
 /dev/null                                                                                                           |   59 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                                          |   24 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py                                |   69 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py                    |   13 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                                     |   51 
 25 files changed, 413 insertions(+), 1,829 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 3dfd5f3..eb7fbde 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1249,25 +1249,6 @@
 	DWORD		ADMapID;	//对应副本ID,默认给该副本1次次数
 };
 
-//日常活动表
-
-struct tagDailyAction
-{
-	DWORD		_DailyID;	//活动ID
-	dict		OpenTimeDict;	//开启时间
-	DWORD		Duration;	//持续时间, 0为不限制
-	DWORD		DayTimes;	//每日次数, 0为不限制
-	DWORD		DayBuyTimes;	//每日可购买次数
-	BYTE		BuyTimesPrivilegeID;	//购买次数VIP权限ID
-	BYTE		MoneyType;	//货币类型
-	list		BuyNeedMoney;	//购买次数需要仙玉
-	DWORD		DayItemAddTimes;	//每日可用物品增加次数
-	DWORD		DayItemID;	//增加次数的物品ID
-	BYTE		DayResetType;	//每日次数重置类型; 0-不重置,1-0点,2-5点
-	DWORD		WeekTimes;	//每周次数, 0为不限制
-	BYTE		WeekResetType;	//每周次数重置类型; 0-不重置,1-0点,2-5点
-};
-
 //装备评分属性系数表
 
 struct tagEquipGSParam
@@ -1478,50 +1459,24 @@
 	list		MailItemPrize;		//活动更新时发送邮件奖励物品
 };
 
-//任务列表
+//每日任务表
 
-struct tagTaskList
+struct DailyTask
 {
-	DWORD		_TaskID;	//任务ID
+	WORD		TaskID;	//任务ID
+	BYTE		_TaskType;	//任务类型
+	list		TaskConds;	//任务条件[...]
+	DWORD		NeedValue;	//所需任务值
+	BYTE		AwardLiveness;	//奖励活跃度
 };
 
-//日常任务表
+//每日活跃奖励表
 
-struct tagDailyQuest
+struct DailyLivenessReward
 {
-	DWORD		_ID;	//ID
-	BYTE		RelatedType;	//关联类型
-	DWORD		RelatedID;	//关联ID
-	WORD		UnLockFuncID;	//解锁功能ID
-	BYTE		OnceActivityTime;	//增加活跃所需次数
-	BYTE		OnceActivity;	//单次活跃值
-	WORD		TotalActiveValue;	//总活跃
-};
-
-//日常活跃奖励表
-
-struct tagDailyLivenessReward
-{
-	BYTE		_ID;	//ID
-	WORD		Liveness;	//所需活跃度
-	list		StageLV;	//阶段等级
-	list		ItemID;	//物品ID
-	list		ItemCount;	//物品数量
-	list		ItemBind;	//是否绑定
-};
-
-//日常活跃放置表
-
-struct tagActivityPlaceReward
-{
-	BYTE		_ID;	//ID
-	BYTE		PlaceCount;	//放置定制次数
-	WORD		PlaceMaxLV;	//最大等级
-	list		FixedItemRewardList;	//固定奖励 [[物品ID, 个数], ...]
-	BYTE		RandItemCountA;	//饼图奖励次数A
-	list		RandItemRewardListA;	//饼图奖励库A [[饼图概率,物品ID], ...]  物品ID支持0
-	BYTE		RandItemCountB;	//饼图奖励次数B
-	list		RandItemRewardListB;	//饼图奖励库B [[饼图概率,物品ID], ...]  物品ID支持0
+	BYTE		_AwardID;	//奖励ID
+	WORD		NeedLiveness;	//所需活跃度
+	list		AwardItemList;	//奖励物品列表 [[物品ID,个数], ...]
 };
 
 //BOSS信息表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index a0e502a..226c70d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -1141,30 +1141,6 @@
 PacketSubCMD_1=0x08
 PacketCallFunc_1=OnStartLuckyTreasure
 
-;日常活动
-[PlayerActivity]
-ScriptName = Player\PlayerActivity.py
-Writer = xdh
-Releaser = xdh
-RegType = 0
-RegisterPackCount = 4
-
-PacketCMD_1=0xA5
-PacketSubCMD_1=0x25
-PacketCallFunc_1=OnDailyActionBuyCnt
-
-PacketCMD_2=0xB0
-PacketSubCMD_2=0x27
-PacketCallFunc_2=OnActivityPlaceStart
-
-PacketCMD_3=0xB0
-PacketSubCMD_3=0x28
-PacketCallFunc_3=OnActivityPlaceQuickFinish
-
-PacketCMD_4=0xB0
-PacketSubCMD_4=0x29
-PacketCallFunc_4=OnActivityPlaceQuery
-
 ;转盘活动
 [PlayerActTurntable]
 ScriptName = Player\PlayerActTurntable.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
index 53167bd..4e4123c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -21,6 +21,7 @@
 
 import ChConfig
 import PlayerTask
+import PlayerActivity
 import PlayerViewCache
 import ChPyNetSendPack
 import NetPackCommon
@@ -1652,7 +1653,8 @@
     
     # 暂时只算主线小怪
     if curPlayer and turnFight.mapID == ChConfig.Def_FBMapID_Main and gameObj.GetFaction() != ChConfig.Def_FactionA:
-        PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_KillNPC, 1)  
+        PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_KillNPC, 1)
+        PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_KillNPC, 1)
     return True
 
 def OnTurnAllOver(guid):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 8b1c571..0b78227 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3796,36 +3796,6 @@
 
 Def_PDict_FightPower_List = [Def_PDict_FightPower_Total, Def_PDict_FightPower_TotalEx]
 
-# 每日活跃度
-Def_PDict_Activity_FinishCnt = "Activity_FinishCnt_%s"  # 活跃度类型对应完成次数
-Def_PDict_Activity_AddTotal = "Activity_AddTotal_%s"  # 活跃度类型对应获得活跃度总
-Def_PDict_Activity_TotalPoint = "Activity_TotalPoint"  # 当前总活跃值(不可消耗)
-Def_PDict_ActivityAwardRecord = "ActivityAwardRecord"  # 活跃度奖励领取记录,按二进制位标识
-Def_PDict_Activity_AwardStage = "Activity_AwardStage"  # 当前活跃奖励阶段,对应不同境界段
-Def_PDict_Activity_ExtraRealmPoint = "Activity_ExtraRealmPoint"  # 多倍活动额外获得的修行点
-
-# 活跃放置
-Def_PDict_ActivityCountTotal = "ActivityCountTotal"  # 累计活跃放置修炼次数
-Def_PDict_ActivityCanCostTotalPoint = "ActivityCanCostTotalPoint"  # 当前总活跃值(可消耗)
-Def_PDict_ActivityPlaceStartTime = "ActivityPlaceStartTime" # 活跃放置开始time值
-Def_PDict_ActivityPlaceRemainCount = "ActivityPlaceRemainCount" # 活跃放置剩余进行次数
-Def_PDict_ActivityPlaceRewardCount = "ActivityPlaceRewardCount" # 活跃放置本次启动已累计奖励次数
-Def_PDict_ActivityPlaceRewardTotalCount = "ActivityPlaceRewardTotalCount" # 活跃放置历史总共累计奖励次数
-Def_PDict_ActivityPlaceRewardItem = "ActivityPlaceItem" # 奖励物品个数
-Def_PDict_ActivityPlaceRewardItemID = "ActivityPlaceItemID_%s" # 奖励物品ID,参数(index)
-Def_PDict_ActivityPlaceRewardItemCount = "ActivityPlaceItemCount_%s" # 奖励物品个数,参数(index)
-Def_PDict_ActivityPlaceExpCount = "ActivityPlaceExpCount" # 活跃放置获得exp次数
-Def_PDict_ActivityPlaceTodayExp = "ActivityPlaceTodayExp" # 活跃放置今日获得exp
-Def_PDict_ActivityPlaceTodayExpPoint = "ActivityPlaceTodayExpPoint" # 活跃放置昨日获得exp 扩展值
-Def_PDict_ActivityPlaceYestorDayExp = "ActivityPlaceYestorDayExp" # 活跃放置昨日获得exp
-Def_PDict_ActivityPlaceYestorDayExpPoint = "ActivityPlaceYestorDayExpP" # 活跃放置昨日获得exp 扩展值
-
-# 每日活动
-Def_PDict_DailyActionDayTimes = "DailyActionDayTimes_%s"  # 每日活动今日完成次数 参数每日活动ID
-Def_PDict_DailyActionDayBuyTimes = "DADayBuyTimes_%s"  # 每日活动今日购买次数 参数每日活动ID
-Def_PDict_DailyActionDayItemTimes = "DADayItemTimes_%s"  # 每日活动今日物品增加次数 参数每日活动ID
-Def_PDict_DailyActionWeekTimes = "DailyActionWeekTimes_%s"  # 每日活动本周完成次数 参数每日活动ID
-
 # 投资理财
 Def_PDict_InvestTime = "InvestTime_%s"  # 投资时的时间,参数为投资类型
 Def_PDict_InvestProgress = "InvestProgress_%s_%s"  # 投资可领奖进度值,参数为(投资类型, key编号)
@@ -3967,6 +3937,13 @@
 Def_PDict_TaskID = "TaskID_%s" # 当前进行中的任务ID,参数(任务组)
 Def_PDict_TaskValue = "TaskValue_%s" # 当前进行中的任务进度,参数(任务组)
 Def_PDict_TaskState = "TaskState_%s" # 当前进行中的任务状态 0-无;1-进行中;2-已完成,参数(任务组)
+
+#每日任务,按任务类型累加进度
+Def_PDict_DailyTaskValue = "DTaskV_%s_%s" # 任务类型进度,参数(任务类型, 条件信息)
+Def_PDict_DailyTaskState = "DTaskState" # 每日任务是否已领取奖励,按任务ID二进制位存储是否已领取
+Def_PDict_ActivityTotal = "ActivityTotal"  # 今日累计获得活跃度
+Def_PDict_ActivityAward = "ActivityAward"  # 活跃度奖励领取记录,按二进制位标识
+Def_PDict_ActivityWeek = "ActivityWeek"  # 每周活跃奖励第x轮,默认0第1轮
 
 #淘金
 Def_PDict_GoldRushCampState = "GoldRushCampState" # 已解锁营地状态,按营地ID二进制位运算判断是否已解锁
@@ -4361,7 +4338,7 @@
 Def_Cost_LuckyTreasure, #幸运鉴宝
 Def_Cost_MysteryShopRefresh, # 神秘商店刷新
 Def_Cost_AuctionBid, # 拍卖行竞价
-Def_Cost_BuyDailyActionCnt, # 购买活动次数 45
+Def_Cost_45, # 购买活动次数 45
 Def_Cost_46, # 副本买buff
 Def_Cost_CreatFamily, # 创建仙盟
 Def_Cost_BuyKillBossCnt, #购买boss次数
@@ -4458,7 +4435,6 @@
 Def_Cost_LuckyTreasure:"LuckyTreasure",
 Def_Cost_MysteryShopRefresh:"MysteryShopRefresh",
 Def_Cost_AuctionBid:"AuctionBid",
-Def_Cost_BuyDailyActionCnt:"BuyDailyActionCnt",
 Def_Cost_CreatFamily:"CreatFamily",
 Def_Cost_BuyKillBossCnt:"BuyKillBossCnt",
 Def_Cost_EquipStar:"EquipStar",
@@ -4972,7 +4948,7 @@
 # 游戏功能奖励定义
 (
 Def_RewardType_Activity,  # 活跃度奖励 0
-Def_RewardType_1,  # 1
+Def_RewardType_DailyTask,  # 每日任务奖励 1
 Def_RewardType_ChampionFamilyDailyReward,  # 仙盟联赛冠军仙盟每日俸禄奖励 2
 Def_RewardType_XMZZWinCnt,  # 仙魔之争胜利场数奖励 3
 Def_RewardType_FamilyDayAward,  # 仙盟每日福利奖励 4
@@ -5304,6 +5280,15 @@
 TTLTaskType_CrossBoss, # 跨服boss击杀x次 18
 ) = range(1, 1 + 18)
 
+# 每日任务类型
+DailyTaskList = (
+DailyTask_KillNPC, # 击败X只怪物 1
+DailyTask_EquipDecompose, # 分解装备x次 2
+DailyTask_HeroCall, # 武将招募 3
+DailyTask_Arena, # 演武场 4
+DailyTask_GoldRush, # 淘金 5
+) = range(1, 1 + 5)
+
 # 任务类型定义
 TaskTypeList = (
 TaskType_MainLevel, # 主线过关到xxx 1
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 4b5679d..0d42cf8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -5280,62 +5280,6 @@
 
 
 #------------------------------------------------------
-# A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt
-
-class  tagCMBuyDailyActionCnt(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActionID", c_int),    # ID
-                  ("AddType", c_ubyte),    # 0-花仙玉 1-用物品
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA5
-        self.SubCmd = 0x25
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA5
-        self.SubCmd = 0x25
-        self.ActionID = 0
-        self.AddType = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMBuyDailyActionCnt)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A5 25 购买日常活动次数 //tagCMBuyDailyActionCnt:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActionID:%d,
-                                AddType:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActionID,
-                                self.AddType
-                                )
-        return DumpString
-
-
-m_NAtagCMBuyDailyActionCnt=tagCMBuyDailyActionCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyDailyActionCnt.Cmd,m_NAtagCMBuyDailyActionCnt.SubCmd))] = m_NAtagCMBuyDailyActionCnt
-
-
-#------------------------------------------------------
 #A5 75 购买副本进入次数#tagCMBuyEnterCount
 
 class  tagCMBuyEnterCount(Structure):
@@ -11781,154 +11725,6 @@
 
 m_NAtagCMMixCampaignAward=tagCMMixCampaignAward()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMixCampaignAward.Cmd,m_NAtagCMMixCampaignAward.SubCmd))] = m_NAtagCMMixCampaignAward
-
-
-#------------------------------------------------------
-# B0 29 活跃放置明细查询 #tagCMActivityPlaceQuery
-
-class  tagCMActivityPlaceQuery(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB0
-        self.SubCmd = 0x29
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB0
-        self.SubCmd = 0x29
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActivityPlaceQuery)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B0 29 活跃放置明细查询 //tagCMActivityPlaceQuery:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMActivityPlaceQuery=tagCMActivityPlaceQuery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuery.Cmd,m_NAtagCMActivityPlaceQuery.SubCmd))] = m_NAtagCMActivityPlaceQuery
-
-
-#------------------------------------------------------
-# B0 28 活跃放置快速完成 #tagCMActivityPlaceQuickFinish
-
-class  tagCMActivityPlaceQuickFinish(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("FinishCount", c_ubyte),    #完成次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB0
-        self.SubCmd = 0x28
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB0
-        self.SubCmd = 0x28
-        self.FinishCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActivityPlaceQuickFinish)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B0 28 活跃放置快速完成 //tagCMActivityPlaceQuickFinish:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                FinishCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.FinishCount
-                                )
-        return DumpString
-
-
-m_NAtagCMActivityPlaceQuickFinish=tagCMActivityPlaceQuickFinish()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuickFinish.Cmd,m_NAtagCMActivityPlaceQuickFinish.SubCmd))] = m_NAtagCMActivityPlaceQuickFinish
-
-
-#------------------------------------------------------
-# B0 27 活跃放置启动 #tagCMActivityPlaceStart
-
-class  tagCMActivityPlaceStart(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xB0
-        self.SubCmd = 0x27
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xB0
-        self.SubCmd = 0x27
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActivityPlaceStart)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B0 27 活跃放置启动 //tagCMActivityPlaceStart:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMActivityPlaceStart=tagCMActivityPlaceStart()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceStart.Cmd,m_NAtagCMActivityPlaceStart.SubCmd))] = m_NAtagCMActivityPlaceStart
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 7e7309c..bb7adba 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -4207,194 +4207,6 @@
 
 
 #------------------------------------------------------
-# A3 15 日常活动次数通知 #tagMCDailyActionCnt
-
-class  tagMCDailyActionInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ActionID", c_int),    # ID
-                  ("DayFinishCnt", c_ushort),    # 今日已完成次数
-                  ("DayBuyTimes", c_ubyte),    # 今日购买次数
-                  ("DayItemTimes", c_ubyte),    # 今日物品增加次数
-                  ("WeekFinishCnt", c_int),    # 本周已完成次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ActionID = 0
-        self.DayFinishCnt = 0
-        self.DayBuyTimes = 0
-        self.DayItemTimes = 0
-        self.WeekFinishCnt = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDailyActionInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt:
-                                ActionID:%d,
-                                DayFinishCnt:%d,
-                                DayBuyTimes:%d,
-                                DayItemTimes:%d,
-                                WeekFinishCnt:%d
-                                '''\
-                                %(
-                                self.ActionID,
-                                self.DayFinishCnt,
-                                self.DayBuyTimes,
-                                self.DayItemTimes,
-                                self.WeekFinishCnt
-                                )
-        return DumpString
-
-
-class  tagMCDailyActionCnt(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)// 个数
-    ActionInfo = list()    #(vector<tagMCDailyActionInfo> ActionInfo)// 活动信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x15
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temActionInfo = tagMCDailyActionInfo()
-            _pos = temActionInfo.ReadData(_lpData, _pos)
-            self.ActionInfo.append(temActionInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x15
-        self.Count = 0
-        self.ActionInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.ActionInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                ActionInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCDailyActionCnt=tagMCDailyActionCnt()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyActionCnt.Head.Cmd,m_NAtagMCDailyActionCnt.Head.SubCmd))] = m_NAtagMCDailyActionCnt
-
-
-#------------------------------------------------------
-#A3 33 玩家每日活跃度 #tagMCDailyActivityInfoList
-
-class  tagMCDailyActivityInfoList(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("CurValue", c_int),    # 当前总活跃度
-                  ("RealmPoint", c_int),    # 可领取修行点
-                  ("StageIndex", c_ubyte),    # 当前阶段索引
-                  ("AwardRecord", c_int),    # 领奖记录 按位存储
-                  ("ExtraPoint", c_int),    # 多倍活动获得的额外修行点
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x33
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x33
-        self.CurValue = 0
-        self.RealmPoint = 0
-        self.StageIndex = 0
-        self.AwardRecord = 0
-        self.ExtraPoint = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDailyActivityInfoList)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 33 玩家每日活跃度 //tagMCDailyActivityInfoList:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                CurValue:%d,
-                                RealmPoint:%d,
-                                StageIndex:%d,
-                                AwardRecord:%d,
-                                ExtraPoint:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.CurValue,
-                                self.RealmPoint,
-                                self.StageIndex,
-                                self.AwardRecord,
-                                self.ExtraPoint
-                                )
-        return DumpString
-
-
-m_NAtagMCDailyActivityInfoList=tagMCDailyActivityInfoList()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyActivityInfoList.Cmd,m_NAtagMCDailyActivityInfoList.SubCmd))] = m_NAtagMCDailyActivityInfoList
-
-
-#------------------------------------------------------
 #A3 0D 玩家签到信息记录 # tagSCDaySignInfo
 
 class  tagSCDaySignInfo(Structure):
@@ -35812,6 +35624,158 @@
 
 
 #------------------------------------------------------
+# B1 09 每日活跃任务信息 #tagSCDailyTaskInfo
+
+class  tagSCDailyTask(Structure):
+    TaskType = 0    #(BYTE TaskType)// 任务类型
+    CLen = 0    #(BYTE CLen)
+    Conds = list()    #(vector<DWORD> Conds)// 条件列表
+    CurValue = 0    #(DWORD CurValue)// 进度值,相同任务类型条件的进度值共享
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.TaskType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.CLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CLen):
+            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+            self.Conds.append(value)
+        self.CurValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.TaskType = 0
+        self.CLen = 0
+        self.Conds = list()
+        self.CurValue = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += 1
+        length += 4 * self.CLen
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.TaskType)
+        data = CommFunc.WriteBYTE(data, self.CLen)
+        for i in range(self.CLen):
+            data = CommFunc.WriteDWORD(data, self.Conds[i])
+        data = CommFunc.WriteDWORD(data, self.CurValue)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                TaskType:%d,
+                                CLen:%d,
+                                Conds:%s,
+                                CurValue:%d
+                                '''\
+                                %(
+                                self.TaskType,
+                                self.CLen,
+                                "...",
+                                self.CurValue
+                                )
+        return DumpString
+
+
+class  tagSCDailyTaskInfo(Structure):
+    Head = tagHead()
+    ActivityTotal = 0    #(DWORD ActivityTotal)// 今日累计获得活跃度
+    ActivityAward = 0    #(DWORD ActivityAward)// 累计活跃领奖记录,按活跃ID奖励二进制位存储是否已领取
+    DailyTaskState = 0    #(DWORD DailyTaskState)// 今日任务是否已领取奖励,按任务ID二进制位存储是否已领取
+    TaskCount = 0    #(BYTE TaskCount)
+    TaskList = list()    #(vector<tagSCDailyTask> TaskList)// 差异更新的任务信息
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x09
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActivityTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ActivityAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.DailyTaskState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.TaskCount):
+            temTaskList = tagSCDailyTask()
+            _pos = temTaskList.ReadData(_lpData, _pos)
+            self.TaskList.append(temTaskList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB1
+        self.Head.SubCmd = 0x09
+        self.ActivityTotal = 0
+        self.ActivityAward = 0
+        self.DailyTaskState = 0
+        self.TaskCount = 0
+        self.TaskList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 4
+        length += 4
+        length += 4
+        length += 1
+        for i in range(self.TaskCount):
+            length += self.TaskList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteDWORD(data, self.ActivityTotal)
+        data = CommFunc.WriteDWORD(data, self.ActivityAward)
+        data = CommFunc.WriteDWORD(data, self.DailyTaskState)
+        data = CommFunc.WriteBYTE(data, self.TaskCount)
+        for i in range(self.TaskCount):
+            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ActivityTotal:%d,
+                                ActivityAward:%d,
+                                DailyTaskState:%d,
+                                TaskCount:%d,
+                                TaskList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ActivityTotal,
+                                self.ActivityAward,
+                                self.DailyTaskState,
+                                self.TaskCount,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagSCDailyTaskInfo=tagSCDailyTaskInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCDailyTaskInfo.Head.Cmd,m_NAtagSCDailyTaskInfo.Head.SubCmd))] = m_NAtagSCDailyTaskInfo
+
+
+#------------------------------------------------------
 # B1 23 每日掉落战利品信息 #tagSCDropBootyInfo
 
 class  tagSCDropBooty(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivityPlace.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivityPlace.py
deleted file mode 100644
index 4117d43..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ActivityPlace.py
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.ActivityPlace
-#
-# @todo:活跃放置
-# @author hxp
-# @date 2019-12-19
-# @version 1.0
-#
-# 详细描述: 活跃放置
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2019-12-19 16:30"""
-#-------------------------------------------------------------------------------
-
-
-import GameWorld
-import PlayerActivity
-import ChConfig
-import PlayerControl
-
-#逻辑实现
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param msgList 参数列表 [npcID]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-    
-    if not msgList:
-        GameWorld.DebugAnswer(curPlayer, "重置放置: ActivityPlace 0")
-        return
-    
-    if len(msgList) == 1 and not msgList[0]:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceStartTime, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRemainCount, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardCount, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardTotalCount, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExp, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExpPoint, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceYestorDayExp, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceYestorDayExpPoint, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityCountTotal, 0)
-        
-        rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem)
-        for i in xrange(rewardItemCount):
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemID % i, 0)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItem, 0)
-        
-        GameWorld.DebugAnswer(curPlayer, "重置活跃放置成功!")
-        PlayerActivity.Sync_ActivityPlaceInfo(curPlayer)
-        return
-    
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddActivity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddActivity.py
index a95d716..58c8d05 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddActivity.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddActivity.py
@@ -17,20 +17,24 @@
 
 import GameWorld
 import PlayerActivity
+import ChConfig
 
-#逻辑实现
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param msgList 参数列表 [npcID]
-#  @return None
-#  @remarks 函数详细说明.
 def OnExec(curPlayer, msgList):
-    
     if not msgList:
-        GameWorld.DebugAnswer(curPlayer, "AddActivity 增加活跃度 是否可溢出")
+        GameWorld.DebugAnswer(curPlayer, "增加活跃: AddActivity 活跃度")
+        GameWorld.DebugAnswer(curPlayer, "每日任务: AddActivity t 任务类型 进度 [条件 ...]")
         return
     addValue = msgList[0]
-    isLVUp = msgList[1] if len(msgList) > 1 else 0
-    PlayerActivity.DoAddActivity(curPlayer, addValue, isLVUp=isLVUp)
+    if addValue == "t":
+        taskType = msgList[1] if len(msgList) > 1 else 0
+        taskValue = msgList[2] if len(msgList) > 2 else 0
+        conds = msgList[3:]
+        if taskType not in ChConfig.DailyTaskList:
+            return
+        PlayerActivity.SetDailyTaskValue(curPlayer, taskType, conds, taskValue)
+        PlayerActivity.SyncDailyTaskInfo(curPlayer, taskType, conds)
+        GameWorld.DebugAnswer(curPlayer, "设置每日任务进度:%s, TypeC=%s,%s" % (taskValue, taskType, conds))
+        return
+    updValue = PlayerActivity.DoAddActivity(curPlayer, addValue)
+    GameWorld.DebugAnswer(curPlayer, "增加活跃:%s, 当前活跃:%s" % (addValue, updValue))
     return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index 1134db7..c101b19 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -1549,7 +1549,6 @@
         addCount = updCnt-enterCnt
         PlayerControl.NomalDictSetProperty(curPlayer, enterCntKey, updCnt)
         
-        #PlayerActivity.OnEnterFBActivity(curPlayer, fbID, updCnt, addCountEx)
         #PlayerSuccess.AddEnterFBSuccess(curPlayer, fbID, addCountEx)
         updValue = updCnt
     GameWorld.DebugLog("    AddEnterFBCount fbID=%s, addCount=%s, lineBit=%s, enterCnt=%s,updValue=%s" 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
index d073275..f17bec4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Arena.py
@@ -21,6 +21,7 @@
 import ShareDefine
 import PlayerControl
 import IpyGameDataPY
+import PlayerActivity
 import PlayerBillboard
 import PlayerZhanling
 import ItemControler
@@ -142,6 +143,7 @@
     
     PlayerZhanling.AddZhanlingValue(curPlayer, PlayerZhanling.ZhanlingType_ArenaCnt, 1)
     PlayerGubao.AddGubaoSpecEffLayer(curPlayer, PlayerGubao.GubaoEffType_Arena, 1)
+    PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_Arena, 1)
     return
 
 def __updArenaBatRecord(curPlayer, turnFight, tagPlayerID, isWin, atkAddScore, defDecScore):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
index 15c11a5..60ad60c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_MainLevel.py
@@ -21,6 +21,7 @@
 import ShareDefine
 import IpyGameDataPY
 import PlayerControl
+import PlayerActivity
 import ChPyNetSendPack
 import ItemControler
 import IPY_GameWorld
@@ -482,6 +483,7 @@
             
     PlayerControl.GiveMoney(curPlayer, moneyType, moneyTotal, "DecomposeMainEquip", isSysHint=False)
     PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_EquipDecompose, decomposeCnt)
+    PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_EquipDecompose, decomposeCnt)
     return
 
 def __doPickupMainItem(curPlayer, itemIndexList):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index fe91e04..06e009f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1023,22 +1023,6 @@
                         ("DWORD", "ADMapID", 0),
                         ),
 
-                "DailyAction":(
-                        ("DWORD", "DailyID", 1),
-                        ("dict", "OpenTimeDict", 0),
-                        ("DWORD", "Duration", 0),
-                        ("DWORD", "DayTimes", 0),
-                        ("DWORD", "DayBuyTimes", 0),
-                        ("BYTE", "BuyTimesPrivilegeID", 0),
-                        ("BYTE", "MoneyType", 0),
-                        ("list", "BuyNeedMoney", 0),
-                        ("DWORD", "DayItemAddTimes", 0),
-                        ("DWORD", "DayItemID", 0),
-                        ("BYTE", "DayResetType", 0),
-                        ("DWORD", "WeekTimes", 0),
-                        ("BYTE", "WeekResetType", 0),
-                        ),
-
                 "EquipGSParam":(
                         ("BYTE", "ClassLV", 1),
                         ("BYTE", "EquipColor", 1),
@@ -1213,38 +1197,18 @@
                         ("list", "MailItemPrize", 0),
                         ),
 
-                "TaskList":(
-                        ("DWORD", "TaskID", 1),
-                        ),
-
-                "DailyQuest":(
-                        ("DWORD", "ID", 1),
-                        ("BYTE", "RelatedType", 0),
-                        ("DWORD", "RelatedID", 0),
-                        ("WORD", "UnLockFuncID", 0),
-                        ("BYTE", "OnceActivityTime", 0),
-                        ("BYTE", "OnceActivity", 0),
-                        ("WORD", "TotalActiveValue", 0),
+                "DailyTask":(
+                        ("WORD", "TaskID", 0),
+                        ("BYTE", "TaskType", 1),
+                        ("list", "TaskConds", 0),
+                        ("DWORD", "NeedValue", 0),
+                        ("BYTE", "AwardLiveness", 0),
                         ),
 
                 "DailyLivenessReward":(
-                        ("BYTE", "ID", 1),
-                        ("WORD", "Liveness", 0),
-                        ("list", "StageLV", 0),
-                        ("list", "ItemID", 0),
-                        ("list", "ItemCount", 0),
-                        ("list", "ItemBind", 0),
-                        ),
-
-                "ActivityPlaceReward":(
-                        ("BYTE", "ID", 1),
-                        ("BYTE", "PlaceCount", 0),
-                        ("WORD", "PlaceMaxLV", 0),
-                        ("list", "FixedItemRewardList", 0),
-                        ("BYTE", "RandItemCountA", 0),
-                        ("list", "RandItemRewardListA", 0),
-                        ("BYTE", "RandItemCountB", 0),
-                        ("list", "RandItemRewardListB", 0),
+                        ("BYTE", "AwardID", 1),
+                        ("WORD", "NeedLiveness", 0),
+                        ("list", "AwardItemList", 0),
                         ),
 
                 "BOSSInfo":(
@@ -3950,27 +3914,6 @@
     def GetADAwardItemList(self): return self.attrTuple[2] # 广告奖励物品列表 list
     def GetADMapID(self): return self.attrTuple[3] # 对应副本ID,默认给该副本1次次数 DWORD
 
-# 日常活动表
-class IPY_DailyAction():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetDailyID(self): return self.attrTuple[0] # 活动ID DWORD
-    def GetOpenTimeDict(self): return self.attrTuple[1] # 开启时间 dict
-    def GetDuration(self): return self.attrTuple[2] # 持续时间, 0为不限制 DWORD
-    def GetDayTimes(self): return self.attrTuple[3] # 每日次数, 0为不限制 DWORD
-    def GetDayBuyTimes(self): return self.attrTuple[4] # 每日可购买次数 DWORD
-    def GetBuyTimesPrivilegeID(self): return self.attrTuple[5] # 购买次数VIP权限ID BYTE
-    def GetMoneyType(self): return self.attrTuple[6] # 货币类型 BYTE
-    def GetBuyNeedMoney(self): return self.attrTuple[7] # 购买次数需要仙玉 list
-    def GetDayItemAddTimes(self): return self.attrTuple[8] # 每日可用物品增加次数 DWORD
-    def GetDayItemID(self): return self.attrTuple[9] # 增加次数的物品ID DWORD
-    def GetDayResetType(self): return self.attrTuple[10] # 每日次数重置类型; 0-不重置,1-0点,2-5点 BYTE
-    def GetWeekTimes(self): return self.attrTuple[11] # 每周次数, 0为不限制 DWORD
-    def GetWeekResetType(self): return self.attrTuple[12] # 每周次数重置类型; 0-不重置,1-0点,2-5点 BYTE
-
 # 装备评分属性系数表
 class IPY_EquipGSParam():
     
@@ -4205,59 +4148,29 @@
     def GetMailKey(self): return self.attrTuple[9] # 活动更新时发送邮件key char
     def GetMailItemPrize(self): return self.attrTuple[10] # 活动更新时发送邮件奖励物品 list
 
-# 任务列表
-class IPY_TaskList():
+# 每日任务表
+class IPY_DailyTask():
     
     def __init__(self):
         self.attrTuple = None
         return
         
-    def GetTaskID(self): return self.attrTuple[0] # 任务ID DWORD
+    def GetTaskID(self): return self.attrTuple[0] # 任务ID WORD
+    def GetTaskType(self): return self.attrTuple[1] # 任务类型 BYTE
+    def GetTaskConds(self): return self.attrTuple[2] # 任务条件[...] list
+    def GetNeedValue(self): return self.attrTuple[3] # 所需任务值 DWORD
+    def GetAwardLiveness(self): return self.attrTuple[4] # 奖励活跃度 BYTE
 
-# 日常任务表
-class IPY_DailyQuest():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetID(self): return self.attrTuple[0] # ID DWORD
-    def GetRelatedType(self): return self.attrTuple[1] # 关联类型 BYTE
-    def GetRelatedID(self): return self.attrTuple[2] # 关联ID DWORD
-    def GetUnLockFuncID(self): return self.attrTuple[3] # 解锁功能ID WORD
-    def GetOnceActivityTime(self): return self.attrTuple[4] # 增加活跃所需次数 BYTE
-    def GetOnceActivity(self): return self.attrTuple[5] # 单次活跃值 BYTE
-    def GetTotalActiveValue(self): return self.attrTuple[6] # 总活跃 WORD
-
-# 日常活跃奖励表
+# 每日活跃奖励表
 class IPY_DailyLivenessReward():
     
     def __init__(self):
         self.attrTuple = None
         return
         
-    def GetID(self): return self.attrTuple[0] # ID BYTE
-    def GetLiveness(self): return self.attrTuple[1] # 所需活跃度 WORD
-    def GetStageLV(self): return self.attrTuple[2] # 阶段等级 list
-    def GetItemID(self): return self.attrTuple[3] # 物品ID list
-    def GetItemCount(self): return self.attrTuple[4] # 物品数量 list
-    def GetItemBind(self): return self.attrTuple[5] # 是否绑定 list
-
-# 日常活跃放置表
-class IPY_ActivityPlaceReward():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetID(self): return self.attrTuple[0] # ID BYTE
-    def GetPlaceCount(self): return self.attrTuple[1] # 放置定制次数 BYTE
-    def GetPlaceMaxLV(self): return self.attrTuple[2] # 最大等级 WORD
-    def GetFixedItemRewardList(self): return self.attrTuple[3] # 固定奖励 [[物品ID, 个数], ...] list
-    def GetRandItemCountA(self): return self.attrTuple[4] # 饼图奖励次数A BYTE
-    def GetRandItemRewardListA(self): return self.attrTuple[5] # 饼图奖励库A [[饼图概率,物品ID], ...]  物品ID支持0 list
-    def GetRandItemCountB(self): return self.attrTuple[6] # 饼图奖励次数B BYTE
-    def GetRandItemRewardListB(self): return self.attrTuple[7] # 饼图奖励库B [[饼图概率,物品ID], ...]  物品ID支持0 list
+    def GetAwardID(self): return self.attrTuple[0] # 奖励ID BYTE
+    def GetNeedLiveness(self): return self.attrTuple[1] # 所需活跃度 WORD
+    def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表 [[物品ID,个数], ...] list
 
 # BOSS信息表
 class IPY_BOSSInfo():
@@ -6378,7 +6291,6 @@
         self.__LoadFileData("FBLine", onlyCheck)
         self.__LoadFileData("Tianzi", onlyCheck)
         self.__LoadFileData("ADAward", onlyCheck)
-        self.__LoadFileData("DailyAction", onlyCheck)
         self.__LoadFileData("EquipGSParam", onlyCheck)
         self.__LoadFileData("Success", onlyCheck)
         self.__LoadFileData("TongTianLV", onlyCheck)
@@ -6391,10 +6303,8 @@
         self.__LoadFileData("VipPrivilege", onlyCheck)
         self.__LoadFileData("Store", onlyCheck)
         self.__LoadFileData("ActSpringSale", onlyCheck)
-        self.__LoadFileData("TaskList", onlyCheck)
-        self.__LoadFileData("DailyQuest", onlyCheck)
+        self.__LoadFileData("DailyTask", onlyCheck)
         self.__LoadFileData("DailyLivenessReward", onlyCheck)
-        self.__LoadFileData("ActivityPlaceReward", onlyCheck)
         self.__LoadFileData("BOSSInfo", onlyCheck)
         self.__LoadFileData("BOSSFirstKill", onlyCheck)
         self.__LoadFileData("FamilyRedPack", onlyCheck)
@@ -7393,13 +7303,6 @@
         self.CheckLoadData("ADAward")
         return self.ipyADAwardCache[index]
 
-    def GetDailyActionCount(self):
-        self.CheckLoadData("DailyAction")
-        return self.ipyDailyActionLen
-    def GetDailyActionByIndex(self, index):
-        self.CheckLoadData("DailyAction")
-        return self.ipyDailyActionCache[index]
-
     def GetEquipGSParamCount(self):
         self.CheckLoadData("EquipGSParam")
         return self.ipyEquipGSParamLen
@@ -7484,19 +7387,12 @@
         self.CheckLoadData("ActSpringSale")
         return self.ipyActSpringSaleCache[index]
 
-    def GetTaskListCount(self):
-        self.CheckLoadData("TaskList")
-        return self.ipyTaskListLen
-    def GetTaskListByIndex(self, index):
-        self.CheckLoadData("TaskList")
-        return self.ipyTaskListCache[index]
-
-    def GetDailyQuestCount(self):
-        self.CheckLoadData("DailyQuest")
-        return self.ipyDailyQuestLen
-    def GetDailyQuestByIndex(self, index):
-        self.CheckLoadData("DailyQuest")
-        return self.ipyDailyQuestCache[index]
+    def GetDailyTaskCount(self):
+        self.CheckLoadData("DailyTask")
+        return self.ipyDailyTaskLen
+    def GetDailyTaskByIndex(self, index):
+        self.CheckLoadData("DailyTask")
+        return self.ipyDailyTaskCache[index]
 
     def GetDailyLivenessRewardCount(self):
         self.CheckLoadData("DailyLivenessReward")
@@ -7504,13 +7400,6 @@
     def GetDailyLivenessRewardByIndex(self, index):
         self.CheckLoadData("DailyLivenessReward")
         return self.ipyDailyLivenessRewardCache[index]
-
-    def GetActivityPlaceRewardCount(self):
-        self.CheckLoadData("ActivityPlaceReward")
-        return self.ipyActivityPlaceRewardLen
-    def GetActivityPlaceRewardByIndex(self, index):
-        self.CheckLoadData("ActivityPlaceReward")
-        return self.ipyActivityPlaceRewardCache[index]
 
     def GetBOSSInfoCount(self):
         self.CheckLoadData("BOSSInfo")
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
index 2f9aa9a..fc4683a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
@@ -36,7 +36,6 @@
 import NPCCommon
 import time
 import math
-import PlayerActivity
 import GameObj
 import SkillShell
 import FBLogic
@@ -128,8 +127,6 @@
         return None
     
     callFunc(atkObj, curNPC, skill, tick)
-    
-    PlayerActivity.OnAttackNPCActivity(atkObj, curNPC)
     return
 
 def OnCheckCanDie(atkObj, curNPC, skill, tick):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index defb857..31aeca5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -40,7 +40,6 @@
 import DataRecordPack
 import NetPackCommon
 import FBCommon
-import PlayerActivity
 import PlayerSuccess
 import PlayerPrestigeSys
 import GY_Query_BossFirstKill
@@ -905,73 +904,6 @@
     return
 
 def OnPlayerKillBoss(curPlayer, npcID, mapID, isCrossServer):
-    npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
-    if not npcData:
-        return
-    killBossCntLimitDict = IpyGameDataPY.GetFuncCfg('KillBossCntLimit', 1)
-    limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, npcID)
-    if limitIndex != None:
-        totalKey = ChConfig.Def_PDict_Boss_KillCntTotal % limitIndex
-        totalCnt = min(curPlayer.NomalDictGetProperty(totalKey, 0) + 1, ChConfig.Def_UpperLimit_DWord)
-        PlayerControl.NomalDictSetProperty(curPlayer, totalKey, totalCnt)
-        #今日杀怪次数+1
-        key = ChConfig.Def_PDict_Boss_KillCnt % limitIndex
-        newCnt = curPlayer.NomalDictGetProperty(key, 0) + 1
-        PlayerControl.NomalDictSetProperty(curPlayer, key, newCnt)
-        GameWorld.DebugLog("更新击杀Boss次数: index=%s, todayCnt=%s, totalCnt=%s" % (limitIndex, newCnt, totalCnt), curPlayer.GetPlayerID())
-        
-        dataDict = {"objID":npcID, "bossID":npcID, "touchCnt":newCnt, "totalCnt":totalCnt,
-                    "AccID":curPlayer.GetAccID(), "PlayerID":curPlayer.GetPlayerID()}
-        DataRecordPack.SendEventPack("AddKillBossCnt", dataDict, curPlayer)
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillBoss, 1, [limitIndex])
-        PlayerState.SetBossStateExit(curPlayer)
-        
-    if isCrossServer:
-        return
-    
-    if limitIndex == ShareDefine.Def_Boss_Func_World:
-        # 世界BOSS击杀成就
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillWorldBoss, 1)
-        # 每日活动
-        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_WorldBOSS)
-        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_WorldBOSS, 1)
-        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
-        PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_WorldBoss, 1)
-        PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_WorldBOSS, 1)
-        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_WorldBoss, 1)
-        #PlayerZhanling.AddZhanlingValue(curPlayer, PlayerZhanling.ZhanlingType_Huanjingge, 1)
-        PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_WorldBoss, 1)
-        
-    elif limitIndex == ShareDefine.Def_Boss_Func_Home:
-        #BOSS之家
-        # BOSS之家BOSS击杀成就
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillBossHomeBoss, 1)
-        # 每日活动
-        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
-        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
-        PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
-        PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_BossHome, 1)
-        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_BossHome, 1)
-        
-#    if mapID == ChConfig.Def_FBMapID_CrossPenglai:
-#        #跨服蓬莱仙境
-#        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossPenglai)
-#        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillCrossPenglaiBoss, 1)
-#        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_CrossPenglaiBoss, 1)
-#    elif mapID == ChConfig.Def_FBMapID_CrossDemonLand:
-#        #跨服魔化之地
-#        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossDemonLand)
-#        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillCrossDemonLandBoss, 1)
-#        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_CrossDemonLandBoss, 1)
-#    if mapID in [ChConfig.Def_FBMapID_CrossPenglai, ChConfig.Def_FBMapID_CrossDemonLand]:
-#        PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossBoss, 1)
-        
-    # 个人首杀记录
-    ipyData = IpyGameDataPY.GetIpyGameDataNotLog("BOSSFirstKill", npcID)
-    if ipyData:
-        GY_Query_BossFirstKill.SetPlayerFirstKillBoss(curPlayer, npcID)
-    #Boss投资
-    PlayerGoldInvest.OnKillBoss(curPlayer, npcID)
     return
     
 #################################################
@@ -3200,7 +3132,6 @@
             FBLogic.DoFB_DropOwner(curPlayer , curNPC)
         else:
             if GetNPCLV(curNPC) >= curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'):
-                PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC)
                 PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_KillNPC)
             PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
         #PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 42629f2..461d7a6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -554,9 +554,6 @@
     # 采集NPC次数通知
     #NPCCommon.SyncCollNPCTime(curPlayer)
     
-    # 每日活跃度
-    PlayerActivity.OnLogin(curPlayer)
-    
     # 副本进入时间
     FBCommon.FBOnLogin(curPlayer)
     
@@ -753,6 +750,7 @@
         PlayerTalk.OnPlayerLogin(curPlayer)
         SyncADCntInfo(curPlayer)
         UpdatePlayerName.OnPlayerLogin(curPlayer)
+        PlayerActivity.OnPlayerLogin(curPlayer)
         
         # 上线查询一次充值订单
         curPlayer.SendDBQueryRecharge()
@@ -3269,9 +3267,9 @@
     # 活跃度奖励
     if rewardType == ChConfig.Def_RewardType_Activity:
         PlayerActivity.GetActivityAward(curPlayer, dataEx)
-    # 活跃放置奖励
-    elif rewardType == ChConfig.Def_RewardType_ActivityPlace:
-        PlayerActivity.GetActivityPlaceReward(curPlayer)
+    # 每日任务奖励
+    elif rewardType == ChConfig.Def_RewardType_DailyTask:
+        PlayerActivity.GetDailyTaskAward(curPlayer, dataEx)
     # 仙树免费减时
     elif rewardType == ChConfig.Def_RewardType_TreeFreeTime:
         PlayerTree.FreeReduceTreeLVTime(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
index fb587b1..f9ea573 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
@@ -2,974 +2,194 @@
 # -*- coding: GBK -*-
 #-------------------------------------------------------------------------------
 #
-#-------------------------------------------------------------------------------
-#
 ##@package Player.PlayerActivity
 #
-# @todo:玩家每日活跃度
-# @author xdh
-# @date 2014-07-14
+# @todo:日常活跃任务
+# @author hxp
+# @date 2025-10-16
 # @version 1.0
 #
-# 详细描述: 玩家每日活跃度、每日活动
-#---------------------------------------------------------------------
-#"""Version = 2017-02-25 11:30"""
-#---------------------------------------------------------------------
+# 详细描述: 日常活跃任务
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-10-16 19:30"""
+#-------------------------------------------------------------------------------
 
 import ChConfig
-import ChPyNetSendPack
-import NetPackCommon
 import ShareDefine
-import GameWorld
-import ItemCommon
-import IPY_GameWorld
+import NetPackCommon
 import PlayerControl
+import ChPyNetSendPack
+import PlayerZhanling
 import ItemControler
 import IpyGameDataPY
-import PyGameData
-import GameFuncComm
-import PlayerPet
-import datetime
-import time
-import FormulaControl
-import PlayerBossReborn
-import PlayerTongTianLing
-import PlayerActTask
-import PlayerSuccess
+import GameWorld
+import DBDataMgr
+import ObjPool
 
-#关联类型
-(
-RelatedType_1,  # 1关联日常活动表
-RelatedType_2,  # 2关联副本总表
-) = range(1, 3)
-
-
-def OnWeek(curPlayer, onWeekType):
-    actionIDInfo = []
+def OnDay(curPlayer):
+    CheckResetWeekActivity(curPlayer)
+    
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityTotal, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityAward, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyTaskState, 0)
+    
+    syncTaskCondList = []
     ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for i in xrange(ipyDataMgr.GetDailyActionCount()):
-        ipyData = ipyDataMgr.GetDailyActionByIndex(i)
-        weekTimesLimit = ipyData.GetWeekTimes()
-        if not weekTimesLimit:
+    for index in range(ipyDataMgr.GetDailyTaskCount()):
+        ipyData = ipyDataMgr.GetDailyTaskByIndex(index)
+        taskType = ipyData.GetTaskType()
+        conds = ipyData.GetTaskConds()
+        tcList = [taskType, conds]
+        if tcList in syncTaskCondList:
             continue
-        # 重置类型不同的不处理
-        if ipyData.GetWeekResetType() != onWeekType:
+        if not GetDailyTaskValue(curPlayer, taskType, conds):
             continue
-        key = ChConfig.Def_PDict_DailyActionWeekTimes % ipyData.GetDailyID()
-        __SetPDictValue(curPlayer, key, 0)
-    
-        actionIDInfo.append(ipyData.GetDailyID())
-            
-    if actionIDInfo:
-        SyncDailyActionInfo(curPlayer, actionIDInfo)
-        
+        SetDailyTaskValue(curPlayer, taskType, conds, 0)
+        syncTaskCondList.append(tcList)
+    SyncDailyTaskInfo(curPlayer, isAll=True)
     return
 
-
-## OnDay
-#  @param curPlayer 玩家实例
-#  @return
-def OnDay(curPlayer, onEventType):
-    
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    if onEventType == ShareDefine.Def_OnEventTypeEx:
-        # 重置完成次数
-        for i in xrange(ipyDataMgr.GetDailyQuestCount()):
-            ipyData = ipyDataMgr.GetDailyQuestByIndex(i)
-            
-            key = ChConfig.Def_PDict_Activity_FinishCnt % ipyData.GetID()
-            curPBCnt = __GetPDictValue(curPlayer, key)  #单次进度值
-            if curPBCnt:
-                __SetPDictValue(curPlayer, key, 0)
-            key = ChConfig.Def_PDict_Activity_AddTotal % ipyData.GetID()
-            if __GetPDictValue(curPlayer, key):
-                __SetPDictValue(curPlayer, key, 0)
-        #总活跃度重置
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, 0)
-        # 重置领奖记录
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityAwardRecord, 0)
-        #重置额外获得修行点数
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_ExtraRealmPoint, 0)
-        #重新计算奖励阶段
-        __CalcAwardStage(curPlayer)
-        
-        SyncDailyActivityInfo(curPlayer)
-        
-        # 记录昨日活跃吸纳经验
-        todayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExp)
-        todayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExpPoint)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExp, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExpPoint, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceYestorDayExp, todayExp)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceYestorDayExpPoint, todayExpPoint)
-        #活跃放置
-        Sync_ActivityPlaceInfo(curPlayer)
-        
-    #else:
-    #    SendDayActionMail(curPlayer)
-    
-    #日常活动重置
-    actionIDInfo = []
-    for i in xrange(ipyDataMgr.GetDailyActionCount()):
-        ipyData = ipyDataMgr.GetDailyActionByIndex(i)
-        dayTimesLimit = GetMaxDayTimes(ipyData)  #ipyData.GetDayTimes()
-        if not dayTimesLimit:
-            continue
-        # 重置类型不同的不处理
-        if ipyData.GetDayResetType() != onEventType:
-            continue
-        dailyID = ipyData.GetDailyID()
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayTimes % dailyID, 0)
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID, 0)
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID, 0)
-        
-        actionIDInfo.append(ipyData.GetDailyID())
-    if actionIDInfo:
-        SyncDailyActionInfo(curPlayer, actionIDInfo)
+def OnPlayerLogin(curPlayer):
+    CheckResetWeekActivity(curPlayer)
+    SyncDailyTaskInfo(curPlayer, isAll=True)
     return
 
-
-def SendDayActionMail(curPlayer):
-    ##发送每日活动邮件
-    #if curPlayer.GetLV() >= IpyGameDataPY.GetFuncCfg('DailyQuestMailLvLimit'):
-    #    PlayerControl.SendMailByKey('TodayDailyTask', [curPlayer.GetID()], [])
+def CheckResetWeekActivity(curPlayer):
+    ## 检查重置每周活跃奖励战令
+    playerActivityWeek = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityWeek)
+    serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
+    nowActivityWeek = (serverDay - 1) / 7 # 暂定7天一轮,按开服天算
+    GameWorld.DebugLog("检查重置周活跃奖励战令! serverDay=%s,nowActivityWeek=%s,playerActivityWeek=%s" 
+                       % (serverDay, nowActivityWeek, playerActivityWeek), curPlayer.GetPlayerID())
+    if nowActivityWeek and playerActivityWeek != nowActivityWeek:
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityWeek, nowActivityWeek)
+        PlayerZhanling.ResetZhanling(curPlayer, PlayerZhanling.ZhanlingType_WeekActivity)
     return
 
+def AddDailyTaskValue(curPlayer, taskType, addValue=1, conds=[]):
+    ## 增加任务进度
+    ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("DailyTask", taskType)
+    if not ipyDataList:
+        return
+    
+    maxValue = 0
+    for ipyData in ipyDataList:
+        taskConds = ipyData.GetTaskConds()
+        if conds or taskConds:
+            # 可按任务类型扩展不同的条件验证方式
+            if taskConds != conds:
+                continue
+        needValue = ipyData.GetNeedValue()
+        maxValue = max(maxValue, needValue)
+        
+    curValue = GetDailyTaskValue(curPlayer, taskType, conds)
+    if curValue >= maxValue:
+        return
+    updValue = min(curValue + addValue, maxValue)
+    SetDailyTaskValue(curPlayer, taskType, conds, updValue)
+    SyncDailyTaskInfo(curPlayer, taskType, conds)
+    return
 
-#重新计算奖励阶段
-def __CalcAwardStage(curPlayer):
-    realmLV = curPlayer.GetOfficialRank()
-    ipyData = IpyGameDataPY.IPY_Data().GetDailyLivenessRewardByIndex(0)
+def GetDailyTaskValue(curPlayer, taskType, conds=[]):
+    ##获取完成度
+    condition = "" if not conds else str(conds).replace(" ", "")[1:-1]
+    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyTaskValue % (taskType, condition))
+def SetDailyTaskValue(curPlayer, taskType, conds, value):
+    ##设置完成度
+    condition = "" if not conds else str(conds).replace(" ", "")[1:-1]
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyTaskValue % (taskType, condition), value)
+    GameWorld.DebugLog("更新每日任务进度值: taskType=%s,conds=%s,value=%s" % (taskType, condition, value), curPlayer.GetPlayerID())
+    return
+
+def GetDailyTaskAward(curPlayer, taskID):
+    playerID = curPlayer.GetPlayerID()
+    ipyData = IpyGameDataPY.GetIpyGameDataByCondition("DailyTask", {"TaskID":taskID})
     if not ipyData:
         return
-    stageLVList = ipyData.GetStageLV()
-    curStage = 0
-    for i, lv in enumerate(stageLVList):
-        if realmLV < lv:
-            break
-        if realmLV >= lv:
-            curStage = i
-    __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_AwardStage, curStage)
-    GameWorld.DebugLog('    重新计算活跃奖励阶段 curStage=%s,realmLV=%s' % (curStage, realmLV))
-    return
-
-
-## OnLogin
-#  @param curPlayer 玩家实例
-#  @return
-def OnLogin(curPlayer):
-    # 同步完成度及领奖记录
-    SyncDailyActivityInfo(curPlayer)
-    #同步日常活动次数
-    SyncDailyActionInfo(curPlayer)
-    #活跃放置
-    Sync_ActivityPlaceInfo(curPlayer)
-    return
-
-
-## 获取活跃度玩家数据库字典信息值
-#  @param curPlayer 玩家实例
-#  @param key 字典key
-#  @param defaultValue 默认值
-#  @return
-def __GetPDictValue(curPlayer, key, defaultValue=0):
-    return curPlayer.NomalDictGetProperty(key, defaultValue)
-
-
-## 设置活跃度玩家数据库字典信息值
-#  @param curPlayer 玩家实例
-#  @param key 字典key
-#  @param value 设置的值
-#  @return
-def __SetPDictValue(curPlayer, key, value):
-    PlayerControl.NomalDictSetProperty(curPlayer, key, value)
-    return
-
-
-## 扣除货币获得活跃度
-#  @param curPlayer 玩家实例
-#  @param type_Price 
-#  @param price 
-#  @return
-def OnPayMoneyActivity(curPlayer, type_Price, price):
-    #金子支付
-#    if type_Price == IPY_GameWorld.TYPE_Price_Gold_Money:
-#        AddActivityFinishCnt(curPlayer, ShareDefine.ActivityNum_UseGoldCnt)
-#    #金票支付
-#    elif type_Price == IPY_GameWorld.TYPE_Price_Gold_Paper:
-#        AddActivityFinishCnt(curPlayer, ShareDefine.ActivityNum_UseGoldPaperCnt)
-        
-    return
-
-
-## 摸NPC获得活跃度
-#  @param atkObj
-#  @param curNPC 
-#  @return
-def OnAttackNPCActivity(atkObj, curNPC):
-    atkObjType = atkObj.GetGameObjType()
     
-    # 不是玩家暂不处理
-    if atkObjType != IPY_GameWorld.gotPlayer:
-        return
-                
-    # 击杀boss
-#    if curNPC.GetIsBoss():
-#        canAddBossIDList = ReadChConfig.GetEvalChConfig("Activity_BossID")
-#        
-#        if curNPC.GetNPCID() in canAddBossIDList:
-#            AddActivityFinishCnt(atkObj, ShareDefine.ActivityNum_KillBoss)
-        
-    return
-
-
-## 增加完成活跃度次数
-#  @param curPlayer 玩家实例
-#  @param activityNum 活跃度编号 
-#  @param finishCnt 已完成次数
-#  @param addCnt 增加次数,默认1 
-#  @return
-def AddActivityFinishCnt(curPlayer, activityNum, finishCnt, addCnt):
-    
-    dailyQuestData = IpyGameDataPY.GetIpyGameDataNotLog('DailyQuest', activityNum)
-    if not dailyQuestData:
+    taskState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyTaskState)
+    if taskState&pow(2, taskID):
+        GameWorld.DebugLog("每日任务已经领取过奖励! taskID=%s,taskState=%s" % (taskID, taskState), playerID)
         return
     
-    maxActiveValue = dailyQuestData.GetTotalActiveValue()
-    onceActivity = dailyQuestData.GetOnceActivity()
-    onceActivityTime = dailyQuestData.GetOnceActivityTime()
-    if not onceActivity:
-        return
-    curAddTotal = None
-    if maxActiveValue:
-        if dailyQuestData.GetRelatedType() == RelatedType_1 and dailyQuestData.GetRelatedID() in [ShareDefine.DailyActionID_CrossBattlefield]:
-            curAddTotal = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_AddTotal % activityNum)  #单次进度值
-            if curAddTotal >= maxActiveValue:
-                GameWorld.DebugLog("活跃度可完成次数已达到上限,activityNum=%s,curAddTotal=%s >= %s" % (activityNum, curAddTotal, maxActiveValue))
-                return
-        else:
-            if finishCnt > maxActiveValue / onceActivity * onceActivityTime:
-                #GameWorld.DebugLog("活跃度可完成次数已达到上限,activityNum=%s" % (activityNum))
-                return
-            
-    key = ChConfig.Def_PDict_Activity_FinishCnt % activityNum
-    curPBCnt = __GetPDictValue(curPlayer, key)  #单次进度值
-    
-    addValue = (addCnt + curPBCnt) / onceActivityTime * onceActivity  #增加的活跃度
-    addPbCnt = (addCnt + curPBCnt) % onceActivityTime
-    
-    __SetPDictValue(curPlayer, key, addPbCnt)
-    
-    if curAddTotal != None:
-        curAddTotal += addValue
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_AddTotal % activityNum, curAddTotal)
-        
-    #
-    DoAddActivity(curPlayer, addValue, True)
-    return
-
-def DoAddActivityByLV(curPlayer, befLV, aftLV):
-    ##升级增加活跃点
-    perLVAddPoint = IpyGameDataPY.GetFuncCfg('ImmortalDomainActivePoint', 3)
-    skillTypeID, perAddLV, addPoint, maxPoint = IpyGameDataPY.GetFuncEvalCfg('ImmortalDomainActivePoint', 4)
-    learnSkillList, passiveSkillList = PlayerPet.GetPetLearnSkill(curPlayer)
-    addValue = (aftLV-befLV)*perLVAddPoint
-    if skillTypeID in passiveSkillList:
-        for lv in xrange(befLV+1, aftLV+1):
-            addValue += min(((lv-1)/perAddLV+1) * addPoint, maxPoint)
-    DoAddActivity(curPlayer, addValue, False, True)
-    return
-
-def AddActivityByLVOnLearnSkill(curPlayer, skillID):
-    ## 获得技能时,处理增加升级获得活跃点效果
-    skillTypeID, perAddLV, addPoint, maxPoint = IpyGameDataPY.GetFuncEvalCfg('ImmortalDomainActivePoint', 4)
-    if skillID != skillTypeID:
-        return
-    curLV = curPlayer.GetLV()
-    addValue = 0
-    for lv in xrange(2, curLV+1):
-        addValue += min(((lv-1)/perAddLV+1) * addPoint, maxPoint)
-    DoAddActivity(curPlayer, addValue, False, True)
-    return
-
-def DoAddActivity(curPlayer, addValue, isMultiple=False, isLVUp=False):
-    if not addValue:
-        return
-    multiple = 1
-    addExtraPoint = 0
-    if isMultiple:
-        multiple, extraPointLimit = __GetActionAddPer(curPlayer)
-        curExtraPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_ExtraRealmPoint)
-        addExtraPoint = max(0, min(addValue * (multiple - 1),
-                                   extraPointLimit - curExtraPoint)) if extraPointLimit else addValue * (multiple - 1)
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_ExtraRealmPoint, curExtraPoint + addExtraPoint)
-        addValue = addValue + addExtraPoint
-    curTotalPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint)
-    __SetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint, curTotalPoint + addValue)
-    __AddCanCostActivityPoint(curPlayer, addValue, isLVUp)
-    PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_Activity, addValue)
-    PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_Activity, addValue)
-    #PlayerControl.NotifyCode(curPlayer, "GetActivity", [addValue])
-    SyncDailyActivityInfo(curPlayer)
-    GameWorld.DebugLog("增加活跃度,addValue=%s,multiple=%s,addExtraPoint=%s,isLVUp=%s" 
-                       % (addValue, multiple, addExtraPoint, isLVUp), curPlayer.GetPlayerID())
-    return
-
-def __GetActionAddPer(curPlayer):
-    multiple, extraPointLimit = 1, 0  #倍数、额外可获得修行点上限
-    actRealmPointInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_RealmPoint, {})  # 多倍修行点活动
-    if not actRealmPointInfo:
-        return multiple, extraPointLimit
-    if not actRealmPointInfo.get(ShareDefine.ActKey_State):
-        return multiple, extraPointLimit
-    actRealmPointIpyData = IpyGameDataPY.GetIpyGameData("ActRealmPoint", actRealmPointInfo.get(ShareDefine.ActKey_CfgID, 0))
-    if not actRealmPointIpyData:
-        return multiple, extraPointLimit
-    if curPlayer.GetLV() < actRealmPointIpyData.GetLVLimit():
-        return multiple, extraPointLimit
-    return actRealmPointIpyData.GetMultiple(), actRealmPointIpyData.GetPointLimit()
-
-def __AddCanCostActivityPoint(curPlayer, addValue, isLVUp):
-    # 增加可消耗的活跃点
-    curPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint)
-    if isLVUp:
-        updPoint = min(ChConfig.Def_UpperLimit_DWord, curPoint + addValue)
-    else:
-        maxPoint = IpyGameDataPY.GetFuncCfg('ActivityPlace', 1)
-        if maxPoint and curPoint >= maxPoint:
-            GameWorld.DebugLog("可消耗的活跃点超出上限,不增加! curPoint=%s,maxPoint=%s" % (curPoint, maxPoint))
-            return
-        updPoint = curPoint + addValue
-    __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint, updPoint)
-    return
-
-def CostActivityPoint(curPlayer, costPoint, isOnlyCheck=False):
-    # 消耗活跃点
-    curPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint)
-    if curPoint < costPoint:
-        return
-    if not isOnlyCheck:
-        __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint,
-                        curPoint - costPoint)
-        SyncDailyActivityInfo(curPlayer)
-    return True
-
-## 同步活跃度信息
-#  @param curPlayer
-#  @param syncNum 默认-1时全部同步
-#  @return None
-def SyncDailyActivityInfo(curPlayer):
-    sendPack = ChPyNetSendPack.tagMCDailyActivityInfoList()
-    sendPack.Clear()
-    sendPack.CurValue = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint)
-    sendPack.StageIndex = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_AwardStage)
-    sendPack.AwardRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityAwardRecord)
-    sendPack.RealmPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityCanCostTotalPoint)
-    sendPack.ExtraPoint = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_ExtraRealmPoint)
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
-    return
-
-
-## 领取活跃度奖励
-#  @param curPlayer
-#  @param awardIndex
-#  @return None
-def GetActivityAward(curPlayer, awardIndex):
-    rewardCount = IpyGameDataPY.IPY_Data().GetDailyLivenessRewardCount()
- 
-    if awardIndex < 0 or awardIndex >= rewardCount:
-        GameWorld.ErrLog("活跃度奖励索引不合法,index=%s,Len=%s" % (awardIndex, rewardCount))
+    taskType = ipyData.GetTaskType()
+    conds = ipyData.GetTaskConds()
+    needValue = ipyData.GetNeedValue()
+    curValue = GetDailyTaskValue(curPlayer, taskType, conds)
+    if curValue < needValue:
+        GameWorld.DebugLog("每日任务进度不足,无法领奖! taskID=%s,taskType=%s,conds=%s,curValue=%s < %s" % (taskID, taskType, conds, curValue, needValue), playerID)
         return
     
-    # 判断是否已领取
-    getAwardRecord = __GetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityAwardRecord)
-    if getAwardRecord & pow(2, awardIndex):
-        GameWorld.Log("已经领取过该活跃度奖励,index=%s" % (awardIndex))
+    updState = taskState|pow(2, taskID)
+    GameWorld.DebugLog("每日任务领奖! taskID=%s,updState=%s" % (taskID, updState), playerID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyTaskState, updState)
+    DoAddActivity(curPlayer, ipyData.GetAwardLiveness())
+    return
+
+def DoAddActivity(curPlayer, addValue):
+    ## 增加活跃值
+    updValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityTotal) + addValue
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityTotal, updValue)
+    SyncDailyTaskInfo(curPlayer)
+    GameWorld.DebugLog("增加活跃度: addValue=%s,updValue=%s" % (addValue, updValue), curPlayer.GetPlayerID())
+    PlayerZhanling.AddZhanlingValue(curPlayer, PlayerZhanling.ZhanlingType_WeekActivity, addValue)
+    return updValue
+
+def GetActivityAward(curPlayer, awardID):
+    ## 领取活跃度奖励
+    
+    playerID = curPlayer.GetPlayerID()
+    ipyData = IpyGameDataPY.GetIpyGameData("DailyLivenessReward", awardID)
+    if not ipyData:
         return
     
-    ipyData = IpyGameDataPY.IPY_Data().GetDailyLivenessRewardByIndex(awardIndex)
-    
-    needActivity = ipyData.GetLiveness()
-    totalActivity = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_TotalPoint)
-    
+    awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityAward)
+    if awardState&pow(2, awardID):
+        GameWorld.DebugLog("活跃奖励ID已领取! awardID=%s,awardState=%s" % (awardID, awardState), playerID)
+        return
+    needActivity = ipyData.GetNeedLiveness()
+    activityTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityTotal)
     # 判断活跃度
-    if totalActivity < needActivity:
-        GameWorld.Log("领奖活跃度不足,index=%s,needActivity=%s,totalActivity=%s" 
-                      % (awardIndex, needActivity, totalActivity))
+    if activityTotal < needActivity:
+        GameWorld.DebugLog("领奖活跃度不足! awardID=%s,activityTotal=%s < %s" % (awardID, activityTotal, needActivity), playerID)
         return
     
-    awardStage = __GetPDictValue(curPlayer, ChConfig.Def_PDict_Activity_AwardStage)
-   
-    itemIDList = ipyData.GetItemID()
-    itemCntList = ipyData.GetItemCount()
-    itemIsBindList = ipyData.GetItemBind()
-    if awardStage >= len(itemIDList) or awardStage >= len(itemCntList) or awardStage >= len(itemIsBindList):
-        return
-
-    itemID = itemIDList[awardStage]
-    itemCnt = itemCntList[awardStage]
-    isBind = itemIsBindList[awardStage]
-    # 检查背包
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
-    if 1 > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    
-    # 给物品
-    ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
-
-    # 更新已领取成功标记
-    updAwardRecord = getAwardRecord | (1 << awardIndex)
-    __SetPDictValue(curPlayer, ChConfig.Def_PDict_ActivityAwardRecord, updAwardRecord)
-    SyncDailyActivityInfo(curPlayer)
-    GameWorld.DebugLog("领取活跃度奖励OK!awardStage=%s, index=%s,needActivity=%s,totalActivity=%s,awardRecord=%s" 
-                       % (awardStage, awardIndex, needActivity, totalActivity, updAwardRecord))
+    awardItemList = ipyData.GetAwardItemList()
+    updState = awardState|pow(2, awardID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityAward, updState)
+    GameWorld.DebugLog("领奖活跃度! awardID=%s,updState=%s,awardItemList=%s" % (awardID, updState, awardItemList), playerID)
+    ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["ActivityAward", False, {}])
+    SyncDailyTaskInfo(curPlayer)
     return
 
-
-def GetActivityNum(relatedType, relatedID):
-    ## 获取日常任务ID(活跃ID)
-    ipyData = IpyGameDataPY.GetIpyGameDataByCondition('DailyQuest', {"RelatedID":relatedID, "RelatedType":relatedType}, False, False)
-    if not ipyData:
-        return 0
-    return ipyData.GetID()
-
-#########################################日常活动###########################################
-
-def GetDailyActionOpenEndTime(dailyID):
-    ## 获取日常活动开启结束时间点
-    ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID)
-    if not ipyData:
-        return
-    openTimeDict = ipyData.GetOpenTimeDict()
-    duration = ipyData.GetDuration()
-    if not openTimeDict or not duration:
-        return
-    allOpenTimeList = openTimeDict.values()
-    if not allOpenTimeList:
-        return
-    openTimeList = allOpenTimeList[0] # 这边默认为每日的开启时间段一样,直接取第一日
-    if len(openTimeList) == 1:
-        openHour, openMinute = openTimeList[0]
-    else:
-        #openHour, openMinute = 
-        # 每天多个时间段的再说,暂时没用到
-        return
-    
-    curDateTime = GameWorld.GetCurrentTime()
-    openTimeStr = "%d-%d-%d %02d:%02d:00" % (curDateTime.year, curDateTime.month, curDateTime.day, openHour, openMinute)
-    openDateTime = datetime.datetime.strptime(openTimeStr, ChConfig.TYPE_Time_Format)
-    endDateTime = openDateTime + datetime.timedelta(minutes=duration)
-    return openDateTime, endDateTime
-
-def GetDailyActionRemainSeconds(dailyID):
-    ## 获取日常活动当前剩余秒数
-    openEndTimeInfo = GetDailyActionOpenEndTime(dailyID)
-    if not openEndTimeInfo:
-        return 0
-    openDateTime, endDateTime = openEndTimeInfo
-    curDateTime = GameWorld.GetCurrentTime()
-    if curDateTime < openDateTime or curDateTime >= endDateTime:
-        return 0
-    remainDateTime = endDateTime - curDateTime
-    return remainDateTime.seconds
-
-def AddDailyActionFinishCnt(curPlayer, dailyID, addCnt=1):
-    ##增加日常活动完成次数
-    ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID)
-    if not ipyData:
-        return
-    
-    # 由GameServer决定
-    # 目前跨服PK暂不需要判断,因为跨服PK次数结算在本服,玩家可能上次未结算离线,等非匹配期间上线,也需要加上,所以暂不判断
-    if dailyID not in [ShareDefine.DailyActionID_CrossReamPK, ShareDefine.DailyActionID_CrossBattlefield]:
-        if not GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % dailyID):
-            GameWorld.DebugLog("日常活动未开启!dailyID=%s" % dailyID)
-            return
-    
-    dayTimesLimit = GetMaxDayTimes(ipyData)  #ipyData.GetDayTimes()
-    weekTimesLimit = ipyData.GetWeekTimes()
-    if not dayTimesLimit and not weekTimesLimit:
-        return
-    #对应的日常任务表ID
-    activityNum = GetActivityNum(RelatedType_1, dailyID)
-    dailyQuestData = IpyGameDataPY.GetIpyGameDataNotLog('DailyQuest', activityNum)
-    unLimitCnt = dailyQuestData and not dailyQuestData.GetTotalActiveValue()
-    funcID = dailyQuestData.GetUnLockFuncID() if dailyQuestData else 0
-    #封魔坛活跃不判断功能开启 特殊处理
-    if funcID and dailyID != ShareDefine.DailyActionID_SealDemon and not GameFuncComm.GetFuncCanUse(curPlayer, funcID) :
-        return
+def SyncDailyTaskInfo(curPlayer, taskType=0, conds=[], isAll=False):
+    clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCDailyTaskInfo)
+    clientPack.ActivityTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityTotal)
+    clientPack.ActivityAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityAward)
+    clientPack.DailyTaskState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyTaskState)
+    syncTaskCondList = []
+    if isAll:
+        ipyDataMgr = IpyGameDataPY.IPY_Data()
+        for index in range(ipyDataMgr.GetDailyTaskCount()):
+            ipyData = ipyDataMgr.GetDailyTaskByIndex(index)
+            taskType = ipyData.GetTaskType()
+            conds = ipyData.GetTaskConds()
+            tcList = [taskType, conds]
+            if tcList in syncTaskCondList:
+                continue
+            syncTaskCondList.append(tcList)
+    elif taskType:
+        syncTaskCondList = [[taskType, conds]]
         
-    updDayTimes = 0
-    if dayTimesLimit:
-        key = ChConfig.Def_PDict_DailyActionDayTimes % dailyID
-        curDayTimes = curPlayer.NomalDictGetProperty(key)
-        curDayBuyTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID)
-        curDayItemTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID)
-        if not unLimitCnt and curDayTimes >= dayTimesLimit + curDayBuyTimes + curDayItemTimes:
-            return
-        updDayTimes = curDayTimes + addCnt if unLimitCnt else min(dayTimesLimit + curDayBuyTimes + curDayItemTimes, curDayTimes + addCnt)
-        addCnt = updDayTimes - curDayTimes
-        PlayerControl.NomalDictSetProperty(curPlayer, key, updDayTimes)
-        GameWorld.DebugLog('增加日常活动完成次数 dailyID=%s, curDayTimes=%s, updDayTimes=%s' % (dailyID, curDayTimes, updDayTimes))
-    updWeekTimes = 0
-    if weekTimesLimit:
-        key = ChConfig.Def_PDict_DailyActionWeekTimes % dailyID
-        curWeekTimes = curPlayer.NomalDictGetProperty(key)
-        if not unLimitCnt and curWeekTimes >= weekTimesLimit:
-            return
-        updWeekTimes = curWeekTimes + addCnt if unLimitCnt else min(weekTimesLimit, curWeekTimes + addCnt)
-        addCnt = updWeekTimes - curWeekTimes
-        PlayerControl.NomalDictSetProperty(curPlayer, key, updWeekTimes)
-        GameWorld.DebugLog('增加日常活动完成次数 dailyID=%s, curWeekTimes=%s, updWeekTimes=%s' % (dailyID, curWeekTimes, updWeekTimes))
-
-    SyncDailyActionInfo(curPlayer, [dailyID])
-    
-    #对应的日常任务表ID
-    updTimes = updDayTimes or updWeekTimes
-    if addCnt and updTimes and dailyQuestData:
-        AddActivityFinishCnt(curPlayer, activityNum, updTimes, addCnt)
-    return True
-
-
-def GetDailyActionFinishCnt(curPlayer, dailyID):
-    key = ChConfig.Def_PDict_DailyActionDayTimes % dailyID
-    curDayTimes = __GetPDictValue(curPlayer, key)
-    ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID)
-    if not ipyData:
-        return 0, 0
-    dayTimesLimit = GetMaxDayTimes(ipyData)  #ipyData.GetDayTimes()
-    return curDayTimes, dayTimesLimit
-
-def GetDailyActionrRemainCnt(curPlayer, dailyID):
-    ##获取活动剩余次数
-    curDayTimes = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayTimes % dailyID)
-    curDayBuyTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID)
-    curDayItemTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID)
-    ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID)
-    dayTimesLimit = GetMaxDayTimes(ipyData)
-    return max(0, dayTimesLimit+curDayBuyTimes+curDayItemTimes-curDayTimes)
-
-def GetMaxDayTimes(ipyData):
-    dayTimesLimit = ipyData.GetDayTimes()
-    if ipyData.GetDailyID() == ShareDefine.DailyActionID_TowerSD:
-        dayTimesLimit += IpyGameDataPY.GetFuncCfg('RuneTowerSweepBuy')
-    return dayTimesLimit
-
-
-#// A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt
-#
-#struct    tagCMBuyDailyActionCnt
-#{
-#    tagHead        Head;
-#    DWORD    ActionID;    // ID
-#    BYTE    AddType;    // 0-花仙玉 1-用物品
-#};
-def OnDailyActionBuyCnt(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    dailyID = clientData.ActionID
-    addType = clientData.AddType  #0花仙玉 1使用物品
-    ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID)
-    if not ipyData:
-        return
-    curDayTimes = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayTimes % dailyID)
-    curDayBuyTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID)
-    curDayItemTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID)
-    if curDayBuyTimes + curDayItemTimes - curDayTimes >= 0:
-        GameWorld.DebugLog('剩余次数已达上限,不可增加!')
-        return
-    
-    if addType == 0:
-        dayBuyTimesLimit = ipyData.GetDayBuyTimes()
-        moneyType = ipyData.GetMoneyType()
-        buyNeedMoneyList = ipyData.GetBuyNeedMoney()
-        if not dayBuyTimesLimit or not buyNeedMoneyList:
-            GameWorld.DebugLog("无法购买! dayBuyTimesLimit=%s,buyNeedMoneyList=%s" % (dayBuyTimesLimit, buyNeedMoneyList))
-            return
-        if curDayBuyTimes >= dayBuyTimesLimit:
-            GameWorld.DebugLog('今日购买次数已达上限,不可增加!')
-            return
-        buyNeedMoney = buyNeedMoneyList[curDayBuyTimes] if len(buyNeedMoneyList) > curDayBuyTimes else buyNeedMoneyList[-1]
-        if not PlayerControl.PayMoney(curPlayer, moneyType, buyNeedMoney, ChConfig.Def_Cost_BuyDailyActionCnt, {'dailyID':dailyID, 'curDayBuyTimes':curDayBuyTimes}):
-            return
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyActionDayBuyTimes % dailyID, curDayBuyTimes + 1)
-        
-    elif addType == 1:
-        dayItemAddTimesLimit = ipyData.GetDayItemAddTimes()
-        dayItemID = ipyData.GetDayItemID()
-        if not dayItemAddTimesLimit or not dayItemID:
-            return
-        if curDayItemTimes >= dayItemAddTimesLimit:
-            GameWorld.DebugLog('今日使用物品增加次数已达上限,不可增加!')
-            return
-        itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-        enough, indexList, hasBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(dayItemID, itemPack, 1)
-        if not enough:
-            return
-        ItemCommon.ReduceItem(curPlayer, itemPack, indexList, 1, False, "DailyActionCnt")
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyActionDayItemTimes % dailyID, curDayItemTimes + 1)
-
-    else:
-        return
-    SyncDailyActionInfo(curPlayer, [dailyID])
+    clientPack.TaskList = []
+    for taskType, conds in syncTaskCondList:
+        task = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCDailyTask)
+        task.TaskType = taskType
+        task.Conds = conds
+        task.CLen = len(task.Conds)
+        task.CurValue = GetDailyTaskValue(curPlayer, taskType, conds)
+        clientPack.TaskList.append(task)
+    clientPack.TaskCount = len(clientPack.TaskList)
+    NetPackCommon.SendFakePack(curPlayer, clientPack)
     return
-
-
-## 同步活跃度信息
-#  @param curPlayer
-#  @param syncNum 默认-1时全部同步
-#  @return None
-def SyncDailyActionInfo(curPlayer, syncNumList=[]):
-    sendPack = ChPyNetSendPack.tagMCDailyActionCnt()
-    sendPack.Clear()
-    sendPack.ActionInfo = []
-    syncNumList = syncNumList if syncNumList else ShareDefine.DailyActionIDList
-
-    for activityNum in syncNumList:
-        activityInfo = ChPyNetSendPack.tagMCDailyActionInfo()
-        activityInfo.Clear()
-        activityInfo.ActionID = activityNum
-        activityInfo.DayFinishCnt = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayTimes % activityNum)
-        activityInfo.DayBuyTimes = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayBuyTimes % activityNum)
-        activityInfo.DayItemTimes = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionDayItemTimes % activityNum)
-        activityInfo.WeekFinishCnt = __GetPDictValue(curPlayer, ChConfig.Def_PDict_DailyActionWeekTimes % activityNum)
-        sendPack.ActionInfo.append(activityInfo)
-    
-    sendPack.Count = len(sendPack.ActionInfo)
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
-    return
-
-
-##################################副本类增加活跃##########################################
-## 参加副本获得活跃度
-#  @param curPlayer 玩家实例
-#  @param tick 
-#  @return
-def OnEnterFBActivity(curPlayer, mapID, curDayTimes, addCount):
-    activityNum = GetActivityNum(RelatedType_2, mapID)
-    if activityNum: 
-        AddActivityFinishCnt(curPlayer, activityNum, curDayTimes, addCount)
-    return
-
-
-################################## 活跃放置 ##############################################
-
-#// B0 29 活跃放置明细查询 #tagCMActivityPlaceQuery
-#
-#struct    tagCMActivityPlaceQuery
-#{
-#    tagHead        Head;
-#};
-def OnActivityPlaceQuery(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    Sync_ActivityPlaceInfo(curPlayer)
-    return
-
-#// B0 27 活跃放置启动 #tagCMActivityPlaceStart
-#
-#struct    tagCMActivityPlaceStart
-#{
-#    tagHead        Head;
-#};
-def OnActivityPlaceStart(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    
-    maxRewardCount = IpyGameDataPY.GetFuncCfg("ActivityPlace", 4) # 最大累计放置奖励次数        
-    remainCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRemainCount)
-    rewardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount)
-    
-    maxCanStartCount = maxRewardCount - remainCount - rewardCount
-    if maxCanStartCount <= 0:
-        GameWorld.DebugLog("活跃放置奖励累计次数已达上限,无法启动!remainCount=%s + rewardCount=%s >= maxRewardCount=%s" 
-                           % (remainCount, rewardCount, maxRewardCount))
-        return
-            
-    costPoint = IpyGameDataPY.GetFuncCfg("ActivityPlace", 2) # 单次放置消耗的活跃点数
-    canUseActivityPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityCanCostTotalPoint)
-    pointCanUseCount = canUseActivityPoint / costPoint
-    startCount = min(maxCanStartCount, pointCanUseCount)
-    if startCount <= 0:
-        GameWorld.DebugLog("可用活跃不足,无法添加次数启动!canUseActivityPoint=%s,costPoint=%s" % (canUseActivityPoint, costPoint))
-        return
-    
-    updRemainCount = remainCount + startCount
-    GameWorld.DebugLog("添加活跃放置次数: startCount=%s,rewardCount=%s,remainCount=%s,updRemainCount=%s" 
-                       % (startCount, rewardCount, remainCount, updRemainCount))
-    
-    costPointTotal = costPoint * startCount
-    CostActivityPoint(curPlayer, costPointTotal)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRemainCount, updRemainCount)
-    
-    if not remainCount:
-        curTime = int(time.time())
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceStartTime, curTime)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, 0)
-        GameWorld.DebugLog("    没有剩余次数,更新启动时间: %s" % curTime)
-        
-    Sync_ActivityPlaceInfo(curPlayer)
-    return
-
-#// B0 28 活跃放置快速完成 #tagCMActivityPlaceQuickFinish
-#
-#struct    tagCMActivityPlaceQuickFinish
-#{
-#    tagHead        Head;
-#    BYTE        FinishCount;    //完成次数
-#};
-def OnActivityPlaceQuickFinish(index, clientData, tick):
-    ## 经验改为实时获取,暂屏蔽快速完成
-    return
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    finishCount = clientData.FinishCount
-    remainCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRemainCount)
-    if not remainCount:
-        GameWorld.DebugLog("没有剩余活跃放置次数,无法快速完成!")
-        return
-    finishCount = min(finishCount, remainCount)
-    if not finishCount:
-        return
-    
-    costItemID, costGoldParper = IpyGameDataPY.GetFuncEvalCfg("ActivityPlace", 5)
-    costItemCount = finishCount # 每次扣一个
-    
-    costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, costItemCount)
-    lackCnt = costItemCount - bindCnt - unBindCnt
-    delItemCount = costItemCount
-    if lackCnt > 0:
-        costGoldParperTotal = costGoldParper * lackCnt
-        if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, costGoldParperTotal, ChConfig.Def_Cost_ActivityPlace):
-            return
-        delItemCount -= lackCnt
-        
-    if delItemCount > 0:
-        ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delItemCount, ChConfig.ItemDel_ActivityPlace)
-        
-    __DoActivityPlaceRewardEnd(curPlayer, finishCount, isQuick=True)
-    return
-
-def ProcessActivityPlace(curPlayer):
-    ## 活跃放置定时处理
-    
-    remainCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRemainCount)
-    if remainCount <= 0:
-        #GameWorld.DebugLog("没有剩余放置次数不处理!")
-        return
-    
-    curTime = int(time.time())
-    startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceStartTime)
-    if not startTime:
-        startTime = curTime
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceStartTime, curTime)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, 0)
-        
-    needSeconds = IpyGameDataPY.GetFuncCfg("ActivityPlace", 3) # 单次放置奖励持续时间,秒
-    expSeconds = IpyGameDataPY.GetFuncCfg("ActivityPlaceExp", 1) # 活跃放置获得经验多少秒一次
-    passTime = curTime - startTime
-    
-    endCount = passTime / needSeconds
-    endCount = min(endCount, remainCount)
-    
-    expCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceExpCount)
-    maxExpCount = needSeconds / expSeconds # 单次放置最多可获得经验次数
-    # 由于结算时重置了开启下次的时间及经验次数,所以如果有需要结算,则溢出时间不计,放置多算经验次数
-    if endCount >= 1:
-        maxExpCount *= endCount
-    canGetExpCount = min(maxExpCount, passTime / expSeconds)
-    addExpCount = canGetExpCount - expCount
-    if addExpCount > 0:
-        #GameWorld.DebugLog("活跃放置定时处理 : curTime=%s,startTime=%s,passTime=%s,endCount=%s,expCount=%s,canGetExpCount=%s,maxExpCount=%s,addExpCount=%s" 
-        #                   % (curTime, startTime, passTime, endCount, expCount, canGetExpCount, maxExpCount, addExpCount))
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, expCount + addExpCount)
-        lv = curPlayer.GetLV()
-        reExp = PlayerControl.GetPlayerReExp(curPlayer)
-        expLV, expFormat = 0, ""
-        lvFormatList = IpyGameDataPY.GetFuncEvalCfg("ActivityPlaceExp", 2) # [[小于等于等级, "公式"],...]
-        for eLV, eFormat in lvFormatList:
-            if lv <= eLV:
-                expLV, expFormat = eLV, eFormat
-                break
-        if not expLV:
-            expLV, expFormat = lvFormatList[-1]
-        addExp = eval(FormulaControl.GetCompileFormula("ActivityPlaceExp_%s" % expLV, expFormat)) * expSeconds * addExpCount
-        playerControl = PlayerControl.PlayerControl(curPlayer)
-        addExp = playerControl.AddExp(addExp, ShareDefine.Def_ViewExpType_Activity)
-        
-        todayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExp)
-        todayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExpPoint)
-        todayTotalExp = todayExpPoint * ChConfig.Def_PerPointValue + todayExp + addExp
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExp, todayTotalExp % ChConfig.Def_PerPointValue)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceTodayExpPoint, todayTotalExp / ChConfig.Def_PerPointValue)
-        
-        #GameWorld.DebugLog("passTime=%s,canGetExpCount=%s,expCount=%s,addExpCount=%s,addExp=%s,todayTotalExp=%s" 
-        #                   % (passTime, canGetExpCount, expCount, addExpCount, addExp, todayTotalExp))
-        
-    if endCount > 0:
-        __DoActivityPlaceRewardEnd(curPlayer, endCount)
-    return
-
-def __DoActivityPlaceRewardEnd(curPlayer, endCount, isQuick=False):
-    ## 放置活跃奖励结算
-    
-    remainCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRemainCount)
-    endCount = min(endCount, remainCount)
-    if endCount <= 0:
-        return
-    
-    countDataDict = {}
-    lvDataDict = {}
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for index in xrange(ipyDataMgr.GetActivityPlaceRewardCount()):
-        ipyData = ipyDataMgr.GetActivityPlaceRewardByIndex(index)
-        placeCount = ipyData.GetPlaceCount()
-        placeMaxLV = ipyData.GetPlaceMaxLV()
-        if placeCount:
-            countDataDict[placeCount] = ipyData
-        else:
-            lvDataDict[placeMaxLV] = ipyData
-            
-    lvRewardIpyData = None
-    playerLV = curPlayer.GetLV()
-    lvList = sorted(lvDataDict.keys())
-    for lv in lvList:
-        if playerLV <= lv:
-            lvRewardIpyData = lvDataDict[lv]
-            break
-    if not lvRewardIpyData:
-        lvRewardIpyData = lvDataDict[lvList[-1]]
-        
-    maxAppointCount = max(countDataDict) # 最大定制奖励次数
-    rewardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount)
-    rewardTotalCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardTotalCount)
-    
-    rewardItemDict = {}
-    GameWorld.DebugLog("结算放置活跃奖励: remainCount=%s,rewardCount=%s,endCount=%s,maxAppointCount=%s" % (remainCount, rewardCount, endCount, maxAppointCount))
-    for _ in xrange(endCount):
-        
-        rewardIpyData = None
-        
-        # 加奖励次数
-        remainCount -= 1
-        rewardCount += 1
-        if rewardTotalCount < maxAppointCount:
-            rewardTotalCount += 1
-            if rewardTotalCount in countDataDict:
-                rewardIpyData = countDataDict[rewardTotalCount]
-                #GameWorld.DebugLog("    取定制次数奖励: rewardTotalCount=%s" % rewardTotalCount)
-                
-        if not rewardIpyData:
-            rewardIpyData = lvRewardIpyData
-            #GameWorld.DebugLog("    取等级奖励: maxLV=%s" % rewardIpyData.GetPlaceMaxLV())
-            
-        # 固定奖励
-        for itemID, itemCount in rewardIpyData.GetFixedItemRewardList():
-            rewardItemDict[itemID] = rewardItemDict.get(itemID, 0) + itemCount
-        # 饼图库A
-        for _ in xrange(rewardIpyData.GetRandItemCountA()):
-            itemID = GameWorld.GetResultByRandomList(rewardIpyData.GetRandItemRewardListA())
-            if itemID:
-                rewardItemDict[itemID] = rewardItemDict.get(itemID, 0) + 1
-        # 饼图库B
-        for _ in xrange(rewardIpyData.GetRandItemCountB()):
-            itemID = GameWorld.GetResultByRandomList(rewardIpyData.GetRandItemRewardListB())
-            if itemID:
-                rewardItemDict[itemID] = rewardItemDict.get(itemID, 0) + 1
-                
-        GameWorld.DebugLog("    remainCount=%s,rewardCount=%s,rewardTotalCount=%s, %s" % (remainCount, rewardCount, rewardTotalCount, rewardItemDict))
-        
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRemainCount, remainCount)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardCount, rewardCount)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardTotalCount, rewardTotalCount)
-    
-    if remainCount > 0:
-        nextStartTime = int(time.time())
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceStartTime, nextStartTime)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceExpCount, 0)
-        GameWorld.DebugLog("    还有剩余次数,更新启动时间: %s" % (nextStartTime))
-        
-    # 存储奖励
-    rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem)
-    for i in xrange(rewardItemCount):
-        itemID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemID % i)
-        if itemID not in rewardItemDict:
-            continue
-        addCount = rewardItemDict.pop(itemID)
-        itemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i)
-        updCount = itemCount + addCount
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i, updCount)
-        #GameWorld.DebugLog("    更新探索奖励: itemID=%s,itemCount=%s,addCount=%s,updCount=%s" % (itemID, itemCount, addCount, updCount))
-        
-    for itemID, itemCount in rewardItemDict.items():
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemID % rewardItemCount, itemID)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemCount % rewardItemCount, itemCount)
-        rewardItemCount += 1
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItem, rewardItemCount)
-        #GameWorld.DebugLog("    新增探索奖励: itemID=%s,itemCount=%s,rewardItemCount=%s" % (itemID, itemCount, rewardItemCount))
-        
-    if isQuick:
-        PlayerControl.NotifyCode(curPlayer, "ActivityPlaceQuickFinishOK")
-        
-    Sync_ActivityPlaceInfo(curPlayer)
-    
-    PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_ActivityPlace, endCount)
-    return
-
-def GetActivityPlaceReward(curPlayer):
-    ## 领取活跃放置奖励
-    
-    rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem)
-    if not rewardItemCount:
-        GameWorld.DebugLog("没有活跃放置奖励,无法领取!")
-        return
-    
-    rewardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount)
-    isAppointItem = 0
-    rewardItemList = []
-    for i in xrange(rewardItemCount):
-        itemID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemID % i)
-        itemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i)
-        if not itemID or not itemCount:
-            break
-        rewardItemList.append([itemID, itemCount, isAppointItem])
-        
-        # 领取后需要重置为0
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemID % i, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardItem, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityPlaceRewardCount, 0)
-    totalCount = min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityCountTotal) + rewardCount, ChConfig.Def_UpperLimit_DWord)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActivityCountTotal, totalCount)
-    
-    GameWorld.DebugLog("领取活跃放置奖励: totalCount=%s,rewardCount=%s,rewardItemCount=%s,rewardItemList=%s" % (totalCount, rewardCount, rewardItemCount, rewardItemList))
-    ItemControler.GivePlayerItemOrMail(curPlayer, rewardItemList, event=["ActivityPlace", False, {}])
-    
-    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_ActivityPlace, rewardCount)
-    
-    Sync_ActivityPlaceInfo(curPlayer)
-    return
-
-def Sync_ActivityPlaceInfo(curPlayer):
-    ## 同步活跃放置信息
-    rewardItemInfo = []
-    rewardItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItem)
-    for i in xrange(rewardItemCount):
-        itemID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemID % i)
-        itemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardItemCount % i)
-        rewardItemInfo.append([itemID, itemCount])
-    placeInfo = ChPyNetSendPack.tagMCActivityPlaceInfo()
-    placeInfo.StartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceStartTime)
-    placeInfo.PlaceCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRemainCount)
-    placeInfo.RewardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceRewardCount)
-    placeInfo.RewardInfo = str(rewardItemInfo)
-    placeInfo.RewardLen = len(placeInfo.RewardInfo)
-    placeInfo.TodayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExp)
-    placeInfo.TodayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceTodayExpPoint)
-    placeInfo.YestordayExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceYestorDayExp)
-    placeInfo.YestordayExpPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityPlaceYestorDayExpPoint)
-    placeInfo.TotalCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityCountTotal)
-    NetPackCommon.SendFakePack(curPlayer, placeInfo)
-    return
-
-#########################################################################################
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 97f1f95..d4fde0d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -37,7 +37,6 @@
 import NetPackCommon
 import DataRecordPack
 import PlayerPrestigeSys
-import PlayerActivity
 import FBCommon
 import PassiveBuffEffMng
 import EventReport
@@ -2776,9 +2775,7 @@
     #银票支付
     elif type_Price == IPY_GameWorld.TYPE_Price_Silver_Paper:
         __PayMoneyAfterBySilverPaper(curPlayer, price)
-    
-    #活跃度处理
-    PlayerActivity.OnPayMoneyActivity(curPlayer, type_Price, price)
+        
     #转盘活动
     PlayerActTurntable.OnPlayerUseGold(curPlayer, type_Price, price)
     #轮回殿
@@ -3515,7 +3512,6 @@
                 PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_LVUp, aftLV - befLV)
                 PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_LV)
                 PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_HeroLV, aftLV)
-                PlayerActivity.DoAddActivityByLV(curPlayer, befLV, aftLV)
                 
             #if aftFreePoint > befFreePoint:
             #    curPlayer.SetFreePoint(aftFreePoint)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
index de7214a..a093c36 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCrossRealmPK.py
@@ -19,7 +19,6 @@
 import PlayerControl
 import NetPackCommon
 import IpyGameDataPY
-import PlayerActivity
 import ChPyNetSendPack
 import CrossRealmPlayer
 import PlayerTongTianLing
@@ -85,8 +84,7 @@
 
 def IsCrossRealmPKMatchState():
     ## 跨服PK匹配赛是否开启
-    return GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossDailyActionState \
-                                                          % ShareDefine.DailyActionID_CrossReamPK) == ChConfig.Def_Action_Open
+    return False
 
 def GetCrossPKDanAwardIpyData(seasonID, awardDanLV, isLog):
     ## 获取跨服段位奖励配置信息
@@ -357,7 +355,6 @@
             todayWinCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CrossPK_TodayWinCount) + 1
             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CrossPK_TodayWinCount, todayWinCount)
             GameWorld.Log("    增加今日已获胜次数: todayWinCount=%s" % todayWinCount, playerID)
-        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossReamPK)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_CrossPK, 1)
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_CrossPK, 1)
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_CrossPK, 1)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 37bb1fa..599f138 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -77,7 +77,6 @@
 import PlayerDailyGiftbag
 import PlayerOfflineSupport
 import PlayerFeastRedPacket
-import PlayerCrossYaomoBoss
 import PlayerLuckyCloudBuy
 import PlayerLuckyTreasure
 import PlayerTongTianLing
@@ -287,6 +286,7 @@
         PlayerXiangong.PlayerOnDay(curPlayer)
         PlayerControl.PayCoinOnDay(curPlayer)
         ChPlayer.PlayerOnDay(curPlayer)
+        PlayerActivity.OnDay(curPlayer)
         
     # 特殊时间点X点过天
     elif onEventType == ShareDefine.Def_OnEventTypeEx:
@@ -310,9 +310,6 @@
         
     # 以下为支持两种重置模式切换配置的
     FBCommon.FBOnDay(curPlayer, onEventType)
-    
-    #日常活动OnDay
-    PlayerActivity.OnDay(curPlayer, onEventType)
         
     # 商店物品购买兑换OnDay
     FunctionNPCCommon.ShopItemOnDay(curPlayer, onEventType)
@@ -420,9 +417,6 @@
         
     # 以下为支持两种重置模式切换配置的
     FBCommon.FBOnWeek(curPlayer, onEventType)
-    
-    #日常活动OnWeek
-    PlayerActivity.OnWeek(curPlayer, onEventType)
     
     # 商店物品购买兑换OnDay
     FunctionNPCCommon.ShopItemOnWeek(curPlayer, onEventType)
@@ -1080,11 +1074,6 @@
     # 跨服PK
     elif key == ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID:
         PlayerCrossRealmPK.OnCrossRealmPKSeasonChange(value)
-          
-    # 跨服妖魔boss
-    elif key == ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % ShareDefine.CrossDailyActionID_YaomoBoss:
-        if gameWorldMgr.GetGameWorldDictByKey(key) != value:
-            PlayerCrossYaomoBoss.OnYaomoBossStateChange(value, tick)
             
     #通用设置
     befValue = gameWorldMgr.GetGameWorldDictByKey(key)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py
index 872f3a8..0966036 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldRush.py
@@ -21,6 +21,7 @@
 import IpyGameDataPY
 import ItemControler
 import ChPyNetSendPack
+import PlayerActivity
 import PlayerControl
 import GameFuncComm
 import PlayerGubao
@@ -502,6 +503,7 @@
         syncCampIDList.append(campID)
         GameWorld.DebugLog("淘金结束: campID=%s,goldID=%s,放入淘金仓库index=%s,panningCnt=%s" % (campID, goldID, index, panningCnt))
         PlayerGubao.AddGubaoSpecEffLayer(curPlayer, PlayerGubao.GubaoEffType_GoldRush, 1)
+        PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_GoldRush, 1)
         
     if not syncCampIDList:
         return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
index 7707b0b..24bb5cd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -39,7 +39,6 @@
 import PassiveBuffEffMng
 import CrossPlayerData
 import CalcLineEffect
-import PlayerActivity
 import ChPyNetSendPack
 import NetPackCommon
 import PlayerActLunhuidian
@@ -744,8 +743,6 @@
             #广播
             sysMark = sysMarkList[i] if i < len(sysMarkList) else 'PetUpLv'
             PlayerControl.WorldNotify(0, sysMark, [playerName, petNPCID, limitPetClassLV, skillid])
-            #增加升级活跃点效果
-            PlayerActivity.AddActivityByLVOnLearnSkill(curPlayer, skillid)
             
         if not learnSkillList and updClassLV + 1 == maxClassLV:
             PlayerControl.WorldNotify(0, 'PetUpLvMax', [playerName, petNPCID])
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
index 7ed5d99..35f83ff 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1031,9 +1031,7 @@
     
     #恶意攻击时间处理
     #AttackCommon.ProcessMaliciousAttackPlayer(curPlayer, tick)
-
-    #活跃放置
-    #PlayerActivity.ProcessActivityPlace(curPlayer)
+    
     #炼器
     #PlayerActLianqi.OnProcess(curPlayer)
     #仙盟攻城战
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index a6ead2c..1fca1bb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -23,12 +23,9 @@
 import PlayerControl
 import ItemControler
 import NetPackCommon
-import PlayerBossReborn
-import PlayerFeastTravel
 import PlayerActLunhuidian
 import PlayerActYunshi
-import PlayerActTask
-import PlayerGubao
+import PlayerActivity
 import ItemCommon
 import PlayerHero
 import PyGameData
@@ -397,18 +394,20 @@
     if addScoreType and addScore:
         PlayerControl.GiveMoney(curPlayer, addScoreType, addScore * treasureCount)
         
-    if treasureType == TreasureType_Rune:
-        PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RuneTreasure, treasureCount)
-        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount)
-        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureRune, treasureCount)
-    elif treasureType == TreasureType_Jipin:
-        PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Treasure, treasureCount)
-        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount)
-        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureJipin, treasureCount)
-    elif treasureType == TreasureType_Jueshi:
-        PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_JSTreasure, treasureCount)
-        PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_JSTreasure, treasureCount)
-        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureJueshi, treasureCount)
+    if treasureType in [TreasureType_HeroComm, TreasureType_HeroHigh, TreasureType_HeroScore]:
+        PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_HeroCall, treasureCount)
+    #if treasureType == TreasureType_Rune:
+    #    PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RuneTreasure, treasureCount)
+    #    PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount)
+    #    PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureRune, treasureCount)
+    #elif treasureType == TreasureType_Jipin:
+    #    PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Treasure, treasureCount)
+    #    PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount)
+    #    PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureJipin, treasureCount)
+    #elif treasureType == TreasureType_Jueshi:
+    #    PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_JSTreasure, treasureCount)
+    #    PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_JSTreasure, treasureCount)
+    #    PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureJueshi, treasureCount)
     #elif treasureType == TreasureType_Gubao:
     #    PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_TreasureGubao, treasureCount)
         
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py
index 15f5a30..4506dce 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py
@@ -35,10 +35,11 @@
 ZhanlingType_MainLevel, # 主线关卡 3
 ZhanlingType_GubaoCnt, # 古宝数量 4
 ZhanlingType_ArenaCnt, # 演武场次数 5
-) = range(1, 1 + 5)
+ZhanlingType_WeekActivity, # 周活跃 6
+) = range(1, 1 + 6)
 
 # 用Value1记录进度的战令类型
-ZhanlingValue1TypeList = [ZhanlingType_ArenaCnt]
+ZhanlingValue1TypeList = [ZhanlingType_ArenaCnt, ZhanlingType_WeekActivity]
 
 def OnPlayerLogin(curPlayer):
     for zhanlingType in ZhanlingTypeList:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 56276a1..bd52d76 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -187,8 +187,6 @@
 Def_Notify_WorldKey_OperationActionInfo = "OperationActionInfo_%s" # 运营活动信息,参数为运营活动名
 Def_Notify_WorldKey_CrossActInfo = "CrossActInfo_%s" # 跨服运营活动信息,参数为运营活动名
 Def_Notify_WorldKey_ActionBossRebornSign = "ActBossSign_%s" # 活动boss重生标记,参数为日常活动ID 或 运营活动名
-Def_Notify_WorldKey_DailyActionState = "DailyActionState_%s" # 日常活动状态,参数为日常活动ID
-Def_Notify_WorldKey_CrossDailyActionState = "CrossDailyActionState_%s" # 跨服日常活动状态,参数为日常活动ID
 Def_Notify_WorldKey_FBEnterTimeLimiitMapID = "FBEnterTimeLimiitMapID" # 进入副本有时间限制的地图ID列表
 Def_Notify_WorldKey_FBCanEnter = "FBCanEnter_%s" # 副本是否可进入,参数为副本DataMapID
 Def_Notify_WorldKey_FBFuncState = "FBFuncState_%s" # 副本状态,参数为副本DataMapID
@@ -1168,7 +1166,6 @@
 CrossServerMsg_ChampionshipOfficial = "ChampionshipOfficial"  # 跨服排位争霸赛官职信息
 CrossServerMsg_ChampionshipDailyOfficial = "ChampionshipDailyOfficial"  # 跨服排位争霸赛每日官职信息
 CrossServerMsg_ActAllRechargeInfo = "ActAllRechargeInfo"# 跨服全民充值信息
-CrossServerMsg_CrossDailyActionState = "CrossDailyActionState" # 跨服日常任务状态信息
 CrossServerMsg_CrossYaomoBossHurtInfo = "CrossYaomoBossHurtInfo" # 跨服妖魔boss玩家伤害信息
 CrossServerMsg_FamilyFlagwarOver = "FamilyFlagwarOver"  # 逐鹿万界结算信息
 CrossServerMsg_Worship = "Worship"  # 膜拜信息
@@ -1459,59 +1456,6 @@
 Def_UserAction_Money_Use = 0    # 货币消费
 Def_UserAction_Money_Get = 1    # 货币产出
 #------------------------------------------------------------------------
-
-# 难度定义
-DifficultyList = (
-Difficulty_Common, # 普通
-Difficulty_Elite, # 精英 
-Difficulty_Hero, # 英雄 
-) = range(3)
-
-# 每日活动编号定义
-DailyActionIDList = (
-DailyActionID_DailyRunMission, # 赏金跑环任务
-DailyActionID_FamilyRunMission, # 战盟跑环任务
-DailyActionID_EquipPlus, # 强化
-DailyActionID_FieldFight, # 野外挂机
-DailyActionID_OfflineFight, # 脱机挂机
-DailyActionID_RefineStove, # 炼丹材料消耗 6(废弃)
-DailyActionID_Dice, # 我要太极
-DailyActionID_Pray, # 祈愿
-DailyActionID_WorldBOSS, # 世界BOSS
-DailyActionID_SealDemon, # 封魔坛 10
-DailyActionID_TowerSD, # 符印塔扫荡
-DailyActionID_XXX12, # 废弃12
-DailyActionID_Tower, # 符印塔
-DailyActionID_MagicWeapon, # 法宝集魂
-DailyActionID_FBHelp, # 助战副本 15
-DailyActionID_BOSSHome, # BOSS之家
-DailyActionID_FamilyRobBoss, # 仙盟抢boss
-DailyActionID_KillNPC, # 野外怪物
-DailyActionID_IceLode, # 冰晶矿脉
-DailyActionID_HelpBattleCheckIn, # 助战登记  20
-DailyActionID_CrossReamPK, # 跨服PK  21
-DailyActionID_FamilyBoss1, # 仙盟BOSS  22
-DailyActionID_SkyTower, # 天星塔  23
-DailyActionID_HorsePetBoss, # 骑宠BOSS  24
-DailyActionID_FairyDomain, # 缥缈仙域  25
-DailyActionID_AuctionItem, # 拍卖行上架/竞拍  26
-DailyActionID_LeiFaBoss, # 雷罚boss 27
-DailyActionID_CrossPenglai, # 跨服蓬莱仙境Boss 28
-DailyActionID_FamilyChuanGong, # 仙盟传功 29
-DailyActionID_FamilyParty, # 仙盟宴会 30
-DailyActionID_31, # 活跃修炼 31
-DailyActionID_SkyTreasureBox, # 天降宝箱 32
-DailyActionID_Arena, # 竞技场 33
-DailyActionID_CrossDemonLand, # 跨服魔化之地Boss 34
-DailyActionID_CrossBattlefield, # 跨服战场 35
-DailyActionID_FamilySit, # 跨服战场 36
-) = range(1, 36 + 1)
-
-# 跨服每日活动编号定义, 从150开始
-CrossDailyActionIDList = (
-CrossDailyActionID_YaomoBoss, # 妖魔boss 150
-CrossDailyActionID_FamilyWarFlag, # 跨服仙盟夺旗战/逐鹿万界 151
-) = range(150, 150 + 2)
 
 # 成就类型定义
 SuccessTypeList = (

--
Gitblit v1.8.0