From e4fc3ac2dea951d1345acb647cf9bc36142951e9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 二月 2026 11:41:47 +0800
Subject: [PATCH] 16 卡牌服务端(删除不需要的旧活动:成长必买、限时特惠、限时礼包、每日礼包、限时抢购、极品白拿、运势活动、天帝礼包、转盘、许愿池、幸运鉴宝;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py               |   49 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py               |  602 -----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py           | 4016 -------------------------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py     |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py        |    2 
 /dev/null                                                                                        |  453 ----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                       |   76 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py             |  716 ------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py           |   44 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py         |   44 
 PySysDB/PySysDBPY.h                                                                              |  281 --
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py      |    6 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                  |  145 -
 14 files changed, 30 insertions(+), 6,418 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 6e349c9..0156339 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1286,23 +1286,6 @@
 	DWORD		UnlockValue;	//解锁所需值
 };
 
-//限时特惠表
-
-struct tagActSpringSale
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	list		StartTimeList;	//开启时间列表, 支持多个时段
-	list		EndTimeList;	//结束时间列表, 支持多个时段
-	WORD		AdvanceMinutes;	//前端提前X分钟展示活动
-	WORD		LVLimit;	//限制等级
-	BYTE		IsDayReset;	//是否每天重置
-	dict		ShopTypeList;	//商店类型列表
-	char		MailKey;		//活动更新时发送邮件key
-	list		MailItemPrize;		//活动更新时发送邮件奖励物品
-};
-
 //每日任务表
 
 struct DailyTask
@@ -1572,78 +1555,6 @@
 	list		AwardItemList;	//奖励物品信息列表 [[物品ID,个数,是否拍品],...]
 };
 
-//极品白拿表
-
-struct tagFreeGoods
-{
-	BYTE		_ID;	//ID
-	dict		AwardItem;	//奖励 {"职业":[[物品ID,个数],...], ...}
-	WORD		NeedMoney;	//需要仙玉
-	DWORD		ReturnDays;	//返还所需天
-};
-
-//限时礼包活动表
-
-struct tagActFlashGiftbag
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	list		StartTimeList;	//开启时间列表, 支持多个时段
-	list		EndTimeList;	//结束时间列表, 支持多个时段
-	WORD		AdvanceMinutes;	//前端提前X分钟展示活动
-	WORD		LVLimit;	//限制等级
-	BYTE		IsDayReset;	//是否每天重置
-	BYTE		IsJueban;	//是否绝版礼包
-	dict		GiftbagTypeList;	//礼包类型列表
-	char		MailKey;		//活动更新时发送邮件key
-	list		MailItemPrize;		//活动更新时发送邮件奖励物品
-};
-
-//限时礼包模板表
-
-struct tagFlashGiftbag
-{
-	DWORD		_GiftbagID;	//礼包编号
-	WORD		GiftbagType;	//礼包类型
-	float		OriginalRMB;	//原价(RMB)
-	WORD		BuyCountLimit;		//限购次数,0不限购
-	list		GiftItemList;	//礼包物品信息列表 [(物品ID,个数,是否绑定),...]
-	DWORD		MainItemID;	//标的物品ID
-	char		NotifyKey;		//全服广播key,默认两个参数(玩家名, 档位额度)
-};
-
-//每日礼包活动表
-
-struct tagActDailyGiftbag
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	WORD		LVLimit;	//限制等级
-	WORD		GiftbagType;	//礼包模板类型
-};
-
-//每日礼包模板表
-
-struct tagDailyGiftbag
-{
-	WORD		_GiftbagType;	//礼包模板类型
-	DWORD		_GiftbagID;	//礼包编号
-	WORD		BuyCountLimit;		//限购次数,0不限购
-	eval		GiftItemList;	//礼包物品信息列表 [(物品ID,个数,是否绑定),...]
-	WORD		Discount;	//折扣百分比
-};
-
-//双倍经验活动表
-
-struct tagActExpRate
-{
-	DWORD		_CfgID;	//配置ID
-	WORD		LVLimit;	//限制等级
-	DWORD		AddExpRate;	//经验倍率加成,万分率
-};
-
 //买一送多活动表
 
 struct tagActBuyOne
@@ -1742,46 +1653,6 @@
 	list		LayerWeightItemList;	//通关该层额外随机奖励 [[权重,物品ID,个数], ...]
 };
 
-//天帝礼包活动时间表
-
-struct tagActGodGift
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	BYTE		IsDayReset;	//是否每天重置
-	WORD		LVLimit;	//限制等级
-	BYTE		UseMoneyType;	//消耗货币类型
-	list		UseGoldList;	//抽奖消耗货币列表
-	BYTE		PrizeMoneyType;	//奖励货币类型
-	list		PrizeMoneyList;	//奖励货币列表
-	BYTE		ResetLimitTimes;	//至少抽几次可重置
-	BYTE		ResetCountMax;	//可重置次数
-	dict		TemplateIDInfo;	//奖池模板信息 {(世界等级A,B):[模板编号列表, ...], ...}
-};
-
-//天帝礼包奖池表
-
-struct tagActGodGiftAward
-{
-	DWORD		_TemplateID;	//奖池模板编号
-	BYTE		AwardLibType;	//奖励库类型
-	BYTE		UnlockAwardLimitTimes;	//抽X次后可产出本库
-	BYTE		ChooseItemCount;	//选择个数
-	dict		LibItemInfo;	//物品编号对应物品信息 {物品编号:[物品ID,个数,是否拍品,可选次数], ...}  0不限次数
-	list		NotifyItemNumList;	//需要广播的编号列表
-};
-
-//多倍修行点活动时间表
-
-struct tagActRealmPoint
-{
-	DWORD		_CfgID;	//配置ID
-	WORD		Multiple;	//倍数
-	WORD		LVLimit;	//限制等级
-	DWORD		PointLimit;	//限制额外修行点
-};
-
 //宗门试炼兑换表
 
 struct tagTrialExchange
@@ -1794,25 +1665,6 @@
 	DWORD		CostItemCount;	//消耗物品个数
 };
 
-//仙界盛典-全民来嗨表
-
-struct tagAllPeopleParty
-{
-	BYTE		_ID;	//ID
-	WORD		TotalTimes;	//总次数
-	WORD		AddPoint;	//每完成次数获得嗨点
-};
-
-//仙界盛典-全民来嗨奖励表
-
-struct tagAllPeoplePartyAward
-{
-	BYTE		_WorldLvNum;	//世界等级档
-	DWORD		_Index;	//索引
-	DWORD		NeedPoint;	//需要点数
-	dict		Award;	//奖励 {"职业":[[物品ID,个数,是否绑定],...], ...}
-};
-
 //地图NPC配置表-挂机点
 
 struct tagMapEventPoint
@@ -1822,51 +1674,6 @@
 	WORD	LowLV;	// 推荐最低等级
 	WORD	HighestLV;	// 推荐最高等级
 	DWORD	Defense;	// 推荐防御
-};
-
-//限时抢购表
-
-struct tagActFlashSale
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	list		StartTimeList;	//开启时间列表, 支持多个时段
-	list		EndTimeList;	//结束时间列表, 支持多个时段
-	WORD		AdvanceMinutes;	//前端提前X分钟展示活动
-	WORD		LVLimit;	//限制等级
-	BYTE		IsDayReset;	//是否每天重置
-	dict		ShopTypeList;	//商店类型列表
-	char		MailKey;		//活动更新时发送邮件key
-	list		MailItemPrize;		//活动更新时发送邮件奖励物品
-};
-
-//许愿池活动时间表
-
-struct tagActWishingWell
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	BYTE		IsDayReset;	//是否每天重置
-	BYTE		ResetType;	//重置类型,0-0点重置;1-5点重置
-	WORD		LVLimit;	//限制等级
-	BYTE		TemplateID;	//模板编号
-};
-
-//许愿池库模板表
-
-struct tagWishingWell
-{
-	BYTE		_TemplateID;	//模板ID
-	BYTE		IsFree;	//是否免费库
-	list		WorldLVLimit;	//世界等级范围
-	DWORD		ItemID;	//物品ID
-	WORD		ItemCnt;	//物品数量
-	BYTE		IsBind;	//是否绑定
-	DWORD		Weight;	//权重
-	DWORD		Mark;	//排序用标识
-	BYTE		Rare;	//珍稀值
 };
 
 //表情包表
@@ -1903,17 +1710,6 @@
 	char		NotifyKey;		//全服广播key,默认两个参数(玩家名, 档位额度)
 };
 
-//成长必买活动表
-
-struct tagActGrowupBuy
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	WORD		LVLimit;	//限制等级
-	list		CTGIDGroupList;	//充值编号组列表 [[ctgID, ...], ...]
-};
-
 //多日连充活动表
 
 struct tagActManyDayRecharge
@@ -1935,27 +1731,6 @@
 	BYTE		AwardIndex;	//奖励索引
 	dict		AwardItemInfo;	//奖励物品信息  {世界等级范围:[[物品ID,个数,是否拍品], ...]}
 	char 		NotifyKey;	//广播
-};
-
-//转盘活动表
-
-struct tagActTurntable
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	WORD		LVLimit;	//限制等级
-	BYTE		IsDayReset;	//是否每天重置
-	BYTE		CTGTypeEffValue;	//充值有效类型值
-	list		CTGPrizeList;	//累计充值奖励次数
-	BYTE		UseMoneyType;	//累计消费货币类型
-	list		UseMoneyPrizeList;	//累计消费X货币奖励次数
-	list		LibChooseCountList;	//各道具库选择个数
-	list		SuperItemLimitRule;	//终极库产出万分率|至少X次后可产出
-	dict		CommItemLib;	//普通道具库 {(世界等级A,世界等级B):[[可选物品ID, 个数, 是否拍品], ...], ...}
-	dict		GoodItemLib;	//极品道具库 {(世界等级A,世界等级B):[[可选物品ID, 个数, 是否拍品], ...], ...}
-	dict		SuperItemLib;	//超级道具库 {(世界等级A,世界等级B):[[可选物品ID, 个数, 是否拍品], ...], ...}
-	char		WorldNotifyKey;	//好物品全服广播mark,极品及超级道具默认全服广播
 };
 
 //单笔累充活动表
@@ -2087,18 +1862,6 @@
 	WORD		PosY;	//坐标Y
 };
 
-//运势活动时间表
-
-struct tagActYunshi
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	WORD		LVLimit;	//限制等级
-	BYTE		ResetType;	//重置类型,0-0点重置;1-5点重置
-	DWORD		TreasureType;	//商城类型
-};
-
 //轮回殿活动时间表
 
 struct ActLunhuidian
@@ -2198,50 +1961,6 @@
 	BYTE		DayNum;	//第X天从1开始
 	list		LoginAwardItemList;	//奖励列表[[物品ID,个数,是否拍品], ...]
 	list		LoginAwardItemListEx;	//扩展奖励列表[[物品ID,个数,是否拍品], ...]
-};
-
-//新仙界盛典-全民来嗨表
-
-struct tagNewAllPeopleParty
-{
-	BYTE		_ID;	//ID
-	WORD		TotalTimes;	//总次数
-	WORD		AddPoint;	//每完成次数获得嗨点
-};
-
-//新仙界盛典-全民来嗨奖励表
-
-struct tagNewAllPeoplePartyAward
-{
-	BYTE		_WorldLvNum;	//世界等级档
-	DWORD		_Index;	//索引
-	DWORD		NeedPoint;	//需要点数
-	dict		Award;	//奖励 {"职业":[[物品ID,个数,是否绑定],...], ...}
-};
-
-//幸运鉴宝活动时间表
-
-struct tagActLuckyTreasure
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	BYTE		ResetType;	//重置类型,0-0点重置;1-5点重置
-	WORD		LVLimit;	//限制等级
-	BYTE		TemplateID;	//模板编号
-	WORD		LuckyPoint;	//总幸运值
-};
-
-//幸运鉴宝库模板表
-
-struct tagLuckyTreasureTemplate
-{
-	BYTE		_TemplateID;	//模板ID
-	list		WorldLVLimit;	//世界等级范围
-	DWORD		ItemID;	//物品ID
-	WORD		ItemCnt;	//物品数量
-	BYTE		IsBind;	//是否绑定
-	DWORD		Weight;	//权重
 };
 
 //装备位背包索引映射表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index b2832bd..3461340 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -727,54 +727,6 @@
 PacketSubCMD_4=0x06
 PacketCallFunc_4=OnQueryRecharge
 
-;限时抢购
-[PlayerFlashSale]
-ScriptName = Player\PlayerFlashSale.py
-Writer = xdh
-Releaser = xdh
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xAA
-PacketSubCMD_1=0x05
-PacketCallFunc_1=OnFlashSaleAppointment
-
-;许愿池
-[PlayerWishingWell]
-ScriptName = Player\PlayerWishingWell.py
-Writer = xdh
-Releaser = xdh
-RegType = 0
-RegisterPackCount = 2
-
-PacketCMD_1=0xAA
-PacketSubCMD_1=0x07
-PacketCallFunc_1=OnActWishingRefresh
-
-PacketCMD_2=0xAA
-PacketSubCMD_2=0x06
-PacketCallFunc_2=OnActWishingDrag
-
-;天帝礼包活动
-[PlayerActGodGift]
-ScriptName = Player\PlayerActGodGift.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 3
-
-PacketCMD_1=0xAA
-PacketSubCMD_1=0x20
-PacketCallFunc_1=OnActGodGiftChooseItem
-
-PacketCMD_2=0xAA
-PacketSubCMD_2=0x21
-PacketCallFunc_2=OnActGodGiftlottery
-
-PacketCMD_3=0xAA
-PacketSubCMD_3=0x22
-PacketCallFunc_3=OnActGodGiftReset
-
 ;炼器活动
 [PlayerActLianqi]
 ScriptName = Player\PlayerActLianqi.py
@@ -798,34 +750,6 @@
 PacketCMD_1=0xAA
 PacketSubCMD_1=0x09
 PacketCallFunc_1=OnActCollectWordsExchange
-
-;幸运鉴宝
-[PlayerLuckyTreasure]
-ScriptName = Player\PlayerLuckyTreasure.py
-Writer = xdh
-Releaser = xdh
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xAA
-PacketSubCMD_1=0x08
-PacketCallFunc_1=OnStartLuckyTreasure
-
-;转盘活动
-[PlayerActTurntable]
-ScriptName = Player\PlayerActTurntable.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 2
-
-PacketCMD_1=0xAA
-PacketSubCMD_1=0x12
-PacketCallFunc_1=OnTurntableChooseItem
-
-PacketCMD_2=0xAA
-PacketSubCMD_2=0x13
-PacketCallFunc_2=OnTurntableStart
 
 ;竞技场
 [PlayerArena]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 45e4e42..ca959be 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3419,20 +3419,12 @@
 #物品个数
 Def_PDict_ItemCount = "ItemCount_%s" # 存储不放在背包的物品个数, 参数(物品ID)
 
-#极品白拿
-Def_PDict_FreeGoodsOpenTime = "FreeGoodsOpenTime" #极品白拿开启时间
-Def_PDict_FreeGoodsBuyState = "FreeGoodsBuyState_%s" #极品白拿购买状态,参数编号  0-未买 time值-购买时间 1-已返还
-
 #累计充值活动
 Def_PDict_TotalRechargeID = "TotalRechargeID_%s"  # 玩家身上的累计充值活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
 Def_PDict_TotalRechargeTemplateID = "TotalRechargeTemplateID_%s"  # 玩家身上的累计充值模板ID,参数:(活动编号)
 Def_PDict_TotalRechargeGold = "TotalRechargeGold_%s"  # 消费返利总累计充值X元,参数:(活动编号)
 Def_PDict_TotalRechargeAwardRecord = "TotalRechargeAwardRecord_%s"  # 累计充值领奖记录,参数:(活动编号)
 Def_PDict_TotalRechargeWorldLV = "TotalRechargeWorldLV_%s" #累计充值活动开启时世界等级,参数:(活动编号)
-
-#成长必买活动
-Def_PDict_GrowupBuyID = "GrowupBuyID"  # 玩家身上的重置成长必买活动ID,唯一标识,取活动开始日期time值
-Def_PDict_GrowupBuyState = "GrowupBuyState"  # 当前可购买的活动充值ID索引状态,按组索引位存储对应组可购买的充值ID所对应的索引
 
 #买一送多
 Def_PDict_BuyOneID = "BuyOneID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time,参数(活动编号)
@@ -3442,37 +3434,10 @@
 Def_PDict_FamilyCTGAssistID = "FamilyCTGAssistID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time,参数(活动编号)
 Def_PDict_FamilyCTGAssistAward = "FamilyCTGAssistAward_%s"  # 玩家领取记录,参数(活动编号)
 
-#限时特惠活动
-Def_PDict_SpringSaleID = "SpringSaleID_%s"  # 玩家身上的限时特惠活动ID,唯一标识,取活动开始日期time,参数(活动编号)
-Def_PDict_SpringSaleMailState = "SpringSaleMailState_%s"  # 玩家身上的活动更新提醒邮件状态,参数(活动编号)
-
-#限时礼包活动
-Def_PDict_FlashGiftbagID = "FlashGiftbagID_%s"  # 玩家身上的限时礼包活动ID,唯一标识,取活动开始日期time,参数(活动编号)
-Def_PDict_FlashGiftbagBuyCount = "FlashGiftbagBuy_%s_%s"  # 限时礼包已购买次数,参数(活动编号, 礼包ID)
-Def_PDict_FlashGiftbagMailState = "FlashGiftbagMail_%s"  # 玩家身上的活动更新提醒邮件状态,参数(活动编号)
-
-#每日礼包活动
-Def_PDict_DailyGiftbagID = "DailyGiftbagID"  # 玩家身上的每日礼包活动ID,唯一标识,取活动开始日期time
-Def_PDict_DailyGiftbagBuyCount = "DailyGiftbagBuyCount_%s"  # 每日礼包已购买次数,参数(礼包ID)
-
 #集字活动
 Def_PDict_CollectWordsID = "CollectWordsID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数(活动编号 1 或  2)
 Def_PDict_CollectWordsExchangeCount = "CollectWordsCount_%s_%s"  # 兑换编号对应已兑换次数,参数(活动编号, 兑换编号)
 Def_PDict_CollectWordsGJSeconds = "CollectWordsGJSeconds_%s"  # 挂机未处理收益的秒数,参数(活动编号)
-
-#限时抢购活动
-Def_PDict_FlashSaleID = "FlashSaleID_%s"  # 玩家身上的限时抢购活动ID,唯一标识,取活动开始日期time,参数(活动编号)
-Def_PDict_FlashSaleState = "FlashSaleState_%s"  # 玩家身上的限时抢购活动state,参数(活动编号)
-Def_PDict_FlashSaleMailState = "FlashSaleMailState_%s"  # 玩家身上的活动更新提醒邮件状态,参数(活动编号)
-Def_PDict_FlashSaleYY = "FlashSaleYY_%s_%s"  # 玩家预约限时抢购商品,参数(活动编号, 商品标识)
-
-#许愿池活动
-Def_PDict_WishingWellID = "WishingWellID"  # 玩家身上的许愿池活动ID,唯一标识,取活动开始日期time值
-Def_PDict_WishingWellFreeTime = "WishingWellFreeTime"  # 许愿池免费开始计时时间
-Def_PDict_WishingWellAwardTime = "WishingWellAwardTime"  # 许愿池许愿时间
-Def_PDict_WishingWellRefreshCnt = "WishingWellRefreshCnt"  # 付费刷新次数
-Def_PDict_WishingWellItem = "WishingWellItem_%s_%s"  # 物品ID,是否极品、是否绑定信息 参数(类型,物品数据)
-Def_PDict_WishingWellItemCnt = "WishingWellItemCnt_%s_%s"  # 物品数量记录 参数(类型,物品数据)
 
 # 称号
 Def_PDict_TitleState = "TitleState_%s"  # 称号状态,参数(key编号)
@@ -3513,12 +3478,6 @@
 Def_PDict_TravelGridInfo = "TravelGridInfo_%s_%s"  # 格子信息,参数(行, 列) 事件ID*100+是否双倍*10+开启状态
 Def_PDict_TravelState = "TravelState"  # 本盘游历记录,1-已领取景观奖励
 
-#幸运鉴宝
-Def_PDict_LuckyTreasureID = "LuckyTreasureID"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值
-Def_PDict_LuckyTreasureFree = "LuckyTreasureFree" #是否免费过
-Def_PDict_LuckyTreasurePoint = "LuckyTreasurePoint" #幸运值
-Def_PDict_LuckyTreasureCnt = "LuckyTreasureCnt" #鉴宝次数
-
 #多日连充活动
 Def_PDict_ManyDayRechargeID = "ManyDayRechargeID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
 Def_PDict_ManyDayRechargeTempID = "ManyDayRechargeTempID_%s"  # 玩家身上的模板ID,参数:(活动编号)
@@ -3532,17 +3491,6 @@
 Def_PDict_SingleRechargeWorldLV = "SingleRechargeWorldLV_%s" #玩家身上的活动世界等级,参数:(活动编号)
 Def_PDict_SingleRechargeValue = "SingleRechargeValue_%s_%s"  # 领奖值,已领奖次数*1000+可领奖次数,参数:(活动编号,档位索引)
 
-#转盘活动
-Def_PDict_TurntableID = "TurntableID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
-Def_PDict_TurntableWorldLV = "TurntableWorldLV_%s" #玩家身上的活动世界等级,参数:(活动编号)
-Def_PDict_TurntableLoginState = "TurntableLoginState_%s"  # 登录加次数状态,参数:(活动编号)
-Def_PDict_TurntableCTGValue = "TurntableCTGValue_%s"  # 累计充值,参数:(活动编号)
-Def_PDict_TurntableUseGold = "TurntableUseGold_%s"  # 累计消费仙玉,参数:(活动编号)
-Def_PDict_TurntableCanUseCount = "TurntableCanUseCount_%s"  # 可使用转盘次数,参数:(活动编号)
-Def_PDict_TurntableItemID = "TurntableItemID_%s_%s"  # 转盘物品ID*10+物品库类型,参数:(活动编号, 物品编号)
-Def_PDict_TurntableItemCount = "TurntableCount_%s_%s"  # 转盘物品个数,参数:(活动编号, 物品编号)
-Def_PDict_TurntableItemState = "TurntableItemState_%s"  # 转盘物品是否已抽中,按物品编号二进制位代表是否已抽中,参数:(活动编号)
-
 #炼器活动
 Def_PDict_CA_LianqiID = "CA_LianqiID"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值
 Def_PDict_LianqiScore = "LianqiScore"  # 当前积分
@@ -3553,13 +3501,6 @@
 Def_PDict_LianqiItemUse = "LianqiItemUse_%s"  # 辅助道具单局已使用次数,参数:(物品ID)
 Def_PDict_LianqiLVAwardMax = "LianqiLVAwardMax"  # 激活的最大合成奖励等级
 Def_PDict_LianqiLVAwardState = "LianqiLVAwardState"  # 最大合成等级奖励领取记录,按二进制位存储是否已领取
-
-#天帝礼包活动
-Def_PDict_GodGiftID = "ActGodGiftID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
-Def_PDict_GodGiftWorldLV = "ActGodGiftWorldLV_%s" #玩家身上的活动世界等级,参数:(活动编号)
-Def_PDict_GodGiftResetCount = "ActGodGiftResetCount_%s" #已重置次数,参数:(活动编号)
-Def_PDict_GodGiftAwardPool = "ActGodGiftAwardPool_%s" #奖池状态,参数:(活动编号) 0-未选择;1-已选择;2-已抽完
-Def_PDict_GodGiftItemState = "ActGodGiftItemState_%s_%s_%s" #库物品状态,参数:(活动编号, 库, 编号) 已被选择次数*100+本奖池是否被选择*10+本奖池是否已被抽中
 
 #每日打包直购礼包
 Def_PDict_DailyPackBuyGiftBuy = "DailyPackBuyGiftBuy"  # 每日打包直购礼包 - 今日购买状态,按索引位记录今日是否已购买
@@ -3587,10 +3528,6 @@
 Def_PDict_ActTaskValue = "ActTaskValue_%s_%s"  # 任务活动当前任务进度值,参数:(活动编号, 任务类型)
 Def_PDict_ActTaskAward = "ActTaskAward_%s_%s"  # 任务活动奖励记录,按位记录任务ID是否已领取,参数:(活动编号,key编号)
 Def_PDict_ActTaskRound = "ActTaskRound_%s"  # 任务轮次,参数:(活动编号)
-
-#运势活动
-Def_PDict_ActYunshiID = "ActYunshiID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
-Def_PDict_ActYunshiTreasureType = "ActYunshiTreasureType_%s"  # 活动寻宝类型,参数:(活动编号)
 
 #轮回殿活动
 Def_PDict_ActLunhuidianID = "ActLunhuidianID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
@@ -4202,18 +4139,18 @@
 Def_Cost_28, # 发家族钻石红包
 Def_Cost_EnterFB, # 进入副本
 Def_Cost_GameServer, # GameServer 30
-Def_Cost_FreeGoods, # 极品白拿
+Def_Cost_31, # 极品白拿
 Def_Cost_DogzEquipPlus, # 神兽装备强化
 Def_Cost_RuneHole, # 符印孔解锁
 Def_Cost_AlchemyPray, # 丹药祈福
 Def_Cost_ResetGreatMasterSkill, # 重置天赋技能 35
 Def_Cost_BindJadeWheel, # 绑玉转盘
-Def_Cost_WishingWell, # 许愿池刷新
+Def_Cost_37, # 许愿池刷新
 Def_Cost_38, # 神兵
 Def_Cost_FBHelpBattle, # 副本助战
 Def_Cost_FBGatherSoulBoss, # 聚魂副本BOSS召唤 40
 Def_Cost_CrossRealmPK, # 跨服PK
-Def_Cost_LuckyTreasure, #幸运鉴宝
+Def_Cost_42, #幸运鉴宝
 Def_Cost_43, # 神秘商店刷新
 Def_Cost_AuctionBid, # 拍卖行竞价
 Def_Cost_45, # 购买活动次数 45
@@ -4225,7 +4162,7 @@
 Def_Cost_FaQi, # 法器
 Def_Cost_Love, # 情缘
 Def_Cost_BuyOrderInfo, # 购买充值商品
-Def_Cost_ActGodGift, # 天帝礼包活动
+Def_Cost_54, # 天帝礼包活动
 Def_Cost_CrossBattlefield, # 跨服战场
 Def_Cost_TongTianLing, # 通天令
 Def_Cost_LianTi, # 炼体
@@ -4244,7 +4181,7 @@
 Def_Cost_Reason_SonKey = "reason_name_son" # 消费点原因子类说明key
 
 # 消费返利不处理的消费类型列表
-CostRebate_DisableType = [Def_Cost_BourseBuy, Def_Cost_BourseCharge, Def_Cost_FreeGoods,
+CostRebate_DisableType = [Def_Cost_BourseBuy, Def_Cost_BourseCharge,
                           Def_Cost_Unknown, "GMSetMoney", "Warehouse", Def_Cost_AuctionBid]
 
 # 可在跨服中消费的类型列表
@@ -4298,16 +4235,13 @@
 Def_Cost_Rename:"Rename",
 Def_Cost_SkillLvUp:"SkillLvUp",
 Def_Cost_FamilyBroadcast:"FamilyBroadcast",
-Def_Cost_FreeGoods:"FreeGoods",
 Def_Cost_DogzEquipPlus:"DogzEquipPlus",
 Def_Cost_RuneHole:"RuneHole",
 Def_Cost_AlchemyPray:"AlchemyPray",
 Def_Cost_BindJadeWheel:"BindJadeWheel",
-Def_Cost_WishingWell:"WishingWell",
 Def_Cost_FBHelpBattle:"FBHelpBattle",
 Def_Cost_FBGatherSoulBoss:"FBGatherSoulBoss",
 Def_Cost_CrossRealmPK:"CrossRealmPK",
-Def_Cost_LuckyTreasure:"LuckyTreasure",
 Def_Cost_AuctionBid:"AuctionBid",
 Def_Cost_CreatFamily:"CreatFamily",
 Def_Cost_BuyKillBossCnt:"BuyKillBossCnt",
@@ -4316,7 +4250,6 @@
 Def_Cost_FaQi:"FaQi",
 Def_Cost_Love:"Love",
 Def_Cost_BuyOrderInfo:"BuyOrderInfo",
-Def_Cost_ActGodGift:"ActGodGift",
 Def_Cost_CrossBattlefield:"CrossBattlefield",
 Def_Cost_LianTi:"LianTi",
 }
@@ -4348,13 +4281,13 @@
 Def_GiveMoney_21,
 Def_GiveMoney_Trade, # 交易
 Def_GiveMoney_23,
-Def_GiveMoney_FreeGoods, # 极品白拿 
+Def_GiveMoney_24, # 极品白拿 
 Def_GiveMoney_BindJadeWheel, # 绑玉转盘 25
 Def_GiveMoney_GatherSoulDecompose, #聚魂分解 26
 Def_GiveMoney_AuctionBidReturn, #拍卖竞价返还
 Def_GiveMoney_AuctionGain, #拍卖获得利润
 Def_GiveMoney_TransformItem, #物品直接转化
-Def_GiveMoney_ActGodGift, #天帝礼包
+Def_GiveMoney_30, #天帝礼包
 Def_GiveMoney_BuyOrderInfo, #购买充值商品编号
 ) = range(1000, 1000 + 32)
 
@@ -4380,13 +4313,11 @@
 Def_GiveMoney_SellPackItem:"SellPackItem",
 Def_GiveMoney_CollectNPC:"CollectNPC",
 Def_GiveMoney_Trade:"Trade",
-Def_GiveMoney_FreeGoods:"FreeGoods",
 Def_GiveMoney_BindJadeWheel:"BindJadeWheel",
 Def_GiveMoney_GatherSoulDecompose:"GatherSoulDecompose",
 Def_GiveMoney_AuctionBidReturn:"AuctionBidReturn",
 Def_GiveMoney_AuctionGain:"AuctionGain",
 Def_GiveMoney_TransformItem:"TransformItem",
-Def_GiveMoney_ActGodGift:"ActGodGift",
 Def_GiveMoney_BuyOrderInfo:"BuyOrderInfo",
 }
 
@@ -4414,7 +4345,7 @@
 ItemGive_Refine, # 炼丹
 ItemGive_Chests, # 宝箱
 ItemGive_TrialExchange, # 宗门兑换
-ItemGive_LuckyTreasure, #幸运鉴宝
+ItemGive_20, #幸运鉴宝
 ItemGive_LingQiEquipBreak, #灵器突破
 ) = range(1000, 1000 + 22)
 
@@ -4438,7 +4369,6 @@
                     ItemGive_Refine:"Refine",
                     ItemGive_Chests:"Chests",
                     ItemGive_TrialExchange:"TrialExchange",
-                    ItemGive_LuckyTreasure:"LuckyTreasure",
                     ItemGive_LingQiEquipBreak:"LingQiEquipBreak",
                     }
 
@@ -4765,27 +4695,27 @@
 Def_RewardType_LineupRecommend,  # 阵容推荐奖励 4
 Def_RewardType_LVAward,  # 玩家等级奖励5
 Def_RewardType_BeautyLVAward, # 红颜等级奖励 6
-Def_RewardType_DayRealmPoint, # 每日任务修行点奖励7
+Def_RewardType_7, # 每日任务修行点奖励7
 Def_RewardType_FirstCharge, # 首充礼包奖励8
 Def_RewardType_OSACelebrationPointAward, # 开服庆典积分阶段奖励 9
-Def_RewardType_FreeGoods, # 极品白拿10
+Def_RewardType_10, # 极品白拿10
 Def_RewardType_CostRebate, # 消费返利11
 Def_RewardType_BossReborn, # BOSS复活12
-Def_RewardType_FCRecharge, # 仙界盛典充值大礼13
-Def_RewardType_FCParty, # 仙界盛典全民来嗨14
+Def_RewardType_13, # 仙界盛典充值大礼13
+Def_RewardType_14, # 仙界盛典全民来嗨14
 Def_RewardType_DownLoad, # 分包下载奖励15
-Def_RewardType_WishingWell, # 许愿池奖励16
+Def_RewardType_16,
 Def_RewardType_OpenFunc, # 功能开启奖励17
 Def_RewardType_TotalRecharge, # 累计充值奖励18
 Def_RewardType_IceLodeStar, # 冰晶矿脉星级奖励19
 Def_RewardType_20,
 Def_RewardType_21,
 Def_RewardType_ActLoginAwardAct, # 领取登录奖励活动奖励22
-Def_RewardType_NewFairyCRecharge, # 新仙界盛典充值大礼23
-Def_RewardType_NewFairyCParty, # 新仙界盛典全民来嗨24
+Def_RewardType_23, # 新仙界盛典充值大礼23
+Def_RewardType_24, # 新仙界盛典全民来嗨24
 Def_RewardType_25,
 Def_RewardType_26,
-Def_RewardType_FairyAdventuresAward, #缥缈奇遇领取27
+Def_RewardType_27, #缥缈奇遇领取27
 Def_RewardType_HistoryChargeAward, #历史累计充值领取28
 Def_RewardType_DayFreeGoldGift, #每日免费直购礼包29
 Def_RewardType_ActivityPlace, #活跃放置奖励30
@@ -4842,49 +4772,6 @@
 Def_RewardType_ADAward, # 广告奖励 81
 Def_RewardType_TreeFreeTime, # 仙树免费减时 82
 )= range(83)
-
-#全民来嗨活动定义(仙界盛典)
-PeoplePartyActIDList = (
-Def_PPAct_Fireworks,  #购买烟花 1
-Def_PPAct_Treasure,  #极品寻宝 2
-Def_PPAct_RuneTreasure,  #符印寻宝 3
-Def_PPAct_GodArea,  #古神禁地 4
-Def_PPAct_XJMJ,  #仙界秘境 5
-Def_PPAct_RunTask,  #师门悬赏 6
-Def_PPAct_WorldBoss,  #世界BOSS 7
-Def_PPAct_FMT,  #封魔坛 8
-Def_PPAct_FamilyParty,  #仙盟宴会 9
-Def_PPAct_RefineStove,  #炼丹 10
-Def_PPAct_Pray,  #祈愿 11
-Def_PPAct_BossHome,  #boss之家 12
-Def_PPAct_VIPBoss,  #vipBOSS 13
-Def_PPAct_RunFamilyTask, #仙盟任务 14
-Def_PPAct_FamilyBoss,  #仙盟Boss 15
-Def_PPAct_FairyDomain,  #缥缈仙域 16  
-Def_PPAct_JSTreasure,  #绝世寻宝 17  
-) = range(1, 17+1)
-
-#登录奖励活动定义
-LoginAwardActIDList = (
-Def_LoginAct_Login,  #每日登录1
-Def_LoginAct_Pray, #祈愿2
-Def_LoginAct_TowerSweep, #符印塔扫荡 3
-Def_LoginAct_KirinHome, #麒麟之府 4
-Def_LoginAct_RunTask, #师门悬赏5
-Def_LoginAct_XJMJ, #仙境秘境 6
-Def_LoginAct_FMT, #封魔坛7
-Def_LoginAct_MunekadoTrial, #宗门试炼8
-Def_LoginAct_FamilyParty, #仙盟宴会9
-Def_LoginAct_WorldBOSS, #世界boss 10
-Def_LoginAct_QueenRelices, #娲皇遗迹 11
-Def_LoginAct_IceLode, #冰晶矿脉 12
-Def_LoginAct_GodArea, #古神禁地 13
-Def_LoginAct_ZhuXianTower, #诛仙塔挑战 14
-Def_LoginAct_ZhuXianBOSS, #诛仙boss 15
-Def_LoginAct_Alchemy, #炼丹 16
-Def_LoginAct_EquipPlus, #强化 17
-Def_LoginAct_EquipWash, #洗炼 18
-) = range(1, 18+1)
 
 #任务活动 - 任务类型
 ActTaskTypeList = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index b820f08..7f6125f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -8887,241 +8887,6 @@
 
 
 #------------------------------------------------------
-# AA 20 天帝礼包选择物品 #tagCMActGodGiftChooseItem
-
-class  tagCMActGodGiftChooseItemInfo(Structure):
-    ItemLibType = 0    #(BYTE ItemLibType)//物品库类型
-    Count = 0    #(BYTE Count)//选择个数
-    ItemNumList = list()    #(vector<BYTE> ItemNumList)//选择物品编号列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.ItemNumList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.ItemLibType = 0
-        self.Count = 0
-        self.ItemNumList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        length += 1 * self.Count
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.ItemLibType)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteBYTE(data, self.ItemNumList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                ItemLibType:%d,
-                                Count:%d,
-                                ItemNumList:%s
-                                '''\
-                                %(
-                                self.ItemLibType,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagCMActGodGiftChooseItem(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)//活动编号
-    ChooseLibCount = 0    #(BYTE ChooseLibCount)//选择库个数	
-    ChooseItemList = list()    #(vector<tagCMActGodGiftChooseItemInfo> ChooseItemList)//选择库物品信息列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x20
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ChooseLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ChooseLibCount):
-            temChooseItemList = tagCMActGodGiftChooseItemInfo()
-            _pos = temChooseItemList.ReadData(_lpData, _pos)
-            self.ChooseItemList.append(temChooseItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x20
-        self.ActNum = 0
-        self.ChooseLibCount = 0
-        self.ChooseItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        for i in range(self.ChooseLibCount):
-            length += self.ChooseItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteBYTE(data, self.ChooseLibCount)
-        for i in range(self.ChooseLibCount):
-            data = CommFunc.WriteString(data, self.ChooseItemList[i].GetLength(), self.ChooseItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                ChooseLibCount:%d,
-                                ChooseItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.ChooseLibCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagCMActGodGiftChooseItem=tagCMActGodGiftChooseItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftChooseItem.Head.Cmd,m_NAtagCMActGodGiftChooseItem.Head.SubCmd))] = m_NAtagCMActGodGiftChooseItem
-
-
-#------------------------------------------------------
-# AA 21 天帝礼包抽奖 #tagCMActGodGiftlottery
-
-class  tagCMActGodGiftlottery(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActNum", c_ubyte),    #活动编号
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x21
-        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 = 0xAA
-        self.SubCmd = 0x21
-        self.ActNum = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActGodGiftlottery)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 21 天帝礼包抽奖 //tagCMActGodGiftlottery:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActNum:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActNum
-                                )
-        return DumpString
-
-
-m_NAtagCMActGodGiftlottery=tagCMActGodGiftlottery()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftlottery.Cmd,m_NAtagCMActGodGiftlottery.SubCmd))] = m_NAtagCMActGodGiftlottery
-
-
-#------------------------------------------------------
-# AA 22 天帝礼包重置 #tagCMActGodGiftReset
-
-class  tagCMActGodGiftReset(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActNum", c_ubyte),    #活动编号
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x22
-        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 = 0xAA
-        self.SubCmd = 0x22
-        self.ActNum = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActGodGiftReset)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 22 天帝礼包重置 //tagCMActGodGiftReset:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActNum:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActNum
-                                )
-        return DumpString
-
-
-m_NAtagCMActGodGiftReset=tagCMActGodGiftReset()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActGodGiftReset.Cmd,m_NAtagCMActGodGiftReset.SubCmd))] = m_NAtagCMActGodGiftReset
-
-
-#------------------------------------------------------
 # AA 25 炼器操作 #tagCMActLianqiOP
 
 class  tagCMActLianqiOP(Structure):
@@ -9183,373 +8948,6 @@
 
 m_NAtagCMActLianqiOP=tagCMActLianqiOP()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActLianqiOP.Cmd,m_NAtagCMActLianqiOP.SubCmd))] = m_NAtagCMActLianqiOP
-
-
-#------------------------------------------------------
-# AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
-
-class  tagCMActTurntableChooseItem(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)// 活动编号
-    GoodItemNumCount = 0    #(BYTE GoodItemNumCount)
-    GoodItemNumList = list()    #(vector<BYTE> GoodItemNumList)// 选择的极品物品编号列表
-    SuperItemNumCount = 0    #(BYTE SuperItemNumCount)
-    SuperItemNumList = list()    #(vector<BYTE> SuperItemNumList)// 选择的终极物品编号列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x12
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.GoodItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GoodItemNumCount):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.GoodItemNumList.append(value)
-        self.SuperItemNumCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.SuperItemNumCount):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.SuperItemNumList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x12
-        self.ActNum = 0
-        self.GoodItemNumCount = 0
-        self.GoodItemNumList = list()
-        self.SuperItemNumCount = 0
-        self.SuperItemNumList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 1 * self.GoodItemNumCount
-        length += 1
-        length += 1 * self.SuperItemNumCount
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteBYTE(data, self.GoodItemNumCount)
-        for i in range(self.GoodItemNumCount):
-            data = CommFunc.WriteBYTE(data, self.GoodItemNumList[i])
-        data = CommFunc.WriteBYTE(data, self.SuperItemNumCount)
-        for i in range(self.SuperItemNumCount):
-            data = CommFunc.WriteBYTE(data, self.SuperItemNumList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                GoodItemNumCount:%d,
-                                GoodItemNumList:%s,
-                                SuperItemNumCount:%d,
-                                SuperItemNumList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.GoodItemNumCount,
-                                "...",
-                                self.SuperItemNumCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagCMActTurntableChooseItem=tagCMActTurntableChooseItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableChooseItem.Head.Cmd,m_NAtagCMActTurntableChooseItem.Head.SubCmd))] = m_NAtagCMActTurntableChooseItem
-
-
-#------------------------------------------------------
-# AA 13 启动转盘 #tagCMActTurntableStart
-
-class  tagCMActTurntableStart(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActNum", c_ubyte),    # 活动编号
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x13
-        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 = 0xAA
-        self.SubCmd = 0x13
-        self.ActNum = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActTurntableStart)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 13 启动转盘 //tagCMActTurntableStart:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActNum:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActNum
-                                )
-        return DumpString
-
-
-m_NAtagCMActTurntableStart=tagCMActTurntableStart()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActTurntableStart.Cmd,m_NAtagCMActTurntableStart.SubCmd))] = m_NAtagCMActTurntableStart
-
-
-#------------------------------------------------------
-# AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
-
-class  tagCMActWishingRefresh(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("IsFree", c_ubyte),    # 是否免费刷新
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x07
-        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 = 0xAA
-        self.SubCmd = 0x07
-        self.IsFree = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActWishingRefresh)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 07 许愿池活动刷新奖池 //tagCMActWishingRefresh:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                IsFree:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.IsFree
-                                )
-        return DumpString
-
-
-m_NAtagCMActWishingRefresh=tagCMActWishingRefresh()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishingRefresh.Cmd,m_NAtagCMActWishingRefresh.SubCmd))] = m_NAtagCMActWishingRefresh
-
-
-#------------------------------------------------------
-# AA 06 许愿池活动许愿 #tagCMActWishing
-
-class  tagCMActWishing(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("SrcWellType", c_ubyte),    # 来源库 0-可选库 1-结果库
-                  ("SrcIndex", c_ubyte),    # 来源索引
-                  ("DesWellType", c_ubyte),    # 目标库 0-可选库 1-结果库
-                  ("DesIndex", c_ubyte),    # 目标索引
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x06
-        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 = 0xAA
-        self.SubCmd = 0x06
-        self.SrcWellType = 0
-        self.SrcIndex = 0
-        self.DesWellType = 0
-        self.DesIndex = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMActWishing)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 06 许愿池活动许愿 //tagCMActWishing:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                SrcWellType:%d,
-                                SrcIndex:%d,
-                                DesWellType:%d,
-                                DesIndex:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.SrcWellType,
-                                self.SrcIndex,
-                                self.DesWellType,
-                                self.DesIndex
-                                )
-        return DumpString
-
-
-m_NAtagCMActWishing=tagCMActWishing()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActWishing.Cmd,m_NAtagCMActWishing.SubCmd))] = m_NAtagCMActWishing
-
-
-#------------------------------------------------------
-# AA 05 限时抢购预约 #tagCMFlashSaleAppointment
-
-class  tagCMFlashSaleAppointment(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActNum", c_ubyte),    #活动编号
-                  ("GoodsID", c_int),    # 抢购商品标识
-                  ("State", c_ubyte),    # 1-预约 0-取消
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x05
-        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 = 0xAA
-        self.SubCmd = 0x05
-        self.ActNum = 0
-        self.GoodsID = 0
-        self.State = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMFlashSaleAppointment)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 05 限时抢购预约 //tagCMFlashSaleAppointment:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActNum:%d,
-                                GoodsID:%d,
-                                State:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActNum,
-                                self.GoodsID,
-                                self.State
-                                )
-        return DumpString
-
-
-m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
-
-
-#------------------------------------------------------
-# AA 08 开始幸运鉴宝 #tagCMStartLuckyTreasure
-
-class  tagCMStartLuckyTreasure(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x08
-        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 = 0xAA
-        self.SubCmd = 0x08
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMStartLuckyTreasure)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 08 开始幸运鉴宝 //tagCMStartLuckyTreasure:
-                                Cmd:%s,
-                                SubCmd:%s
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd
-                                )
-        return DumpString
-
-
-m_NAtagCMStartLuckyTreasure=tagCMStartLuckyTreasure()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMStartLuckyTreasure.Cmd,m_NAtagCMStartLuckyTreasure.SubCmd))] = m_NAtagCMStartLuckyTreasure
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 6f221a9..aad6ec3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -5238,121 +5238,6 @@
 
 
 #------------------------------------------------------
-# A3 18 极品白拿信息 #tagMCFreeGoodsInfo
-
-class  tagMCFreeGoods(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ID", c_ubyte),    # 礼包ID
-                  ("BuyState", c_int),    # 购买状态 0-未购买 1-已领返还 time值-购买时间
-                  ]
-
-    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.ID = 0
-        self.BuyState = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFreeGoods)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// A3 18 极品白拿信息 //tagMCFreeGoodsInfo:
-                                ID:%d,
-                                BuyState:%d
-                                '''\
-                                %(
-                                self.ID,
-                                self.BuyState
-                                )
-        return DumpString
-
-
-class  tagMCFreeGoodsInfo(Structure):
-    Head = tagHead()
-    OpenTime = 0    #(DWORD OpenTime)// 活动开启时间
-    Count = 0    #(BYTE Count)// 个数
-    FreeGoodsList = list()    #(vector<tagMCFreeGoods> FreeGoodsList)// 信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x18
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.OpenTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temFreeGoodsList = tagMCFreeGoods()
-            _pos = temFreeGoodsList.ReadData(_lpData, _pos)
-            self.FreeGoodsList.append(temFreeGoodsList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x18
-        self.OpenTime = 0
-        self.Count = 0
-        self.FreeGoodsList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.FreeGoodsList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.OpenTime)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.FreeGoodsList[i].GetLength(), self.FreeGoodsList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                OpenTime:%d,
-                                Count:%d,
-                                FreeGoodsList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.OpenTime,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFreeGoodsInfo=tagMCFreeGoodsInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFreeGoodsInfo.Head.Cmd,m_NAtagMCFreeGoodsInfo.Head.SubCmd))] = m_NAtagMCFreeGoodsInfo
-
-
-#------------------------------------------------------
 # A3 22 功能NPC已采集次数 #tagMCFuncNPCCollectionCnt
 
 class  tagMCFuncNPCCollectionCnt(Structure):
@@ -18887,671 +18772,6 @@
 
 
 #------------------------------------------------------
-# AA 60 天帝礼包活动信息 #tagMCActGodGiftInfo
-
-class  tagMCActGodGiftItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemNum", c_ubyte),    # 物品在本库中的编号
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ("IsBind", c_ubyte),    
-                  ("CanChooseTimes", c_ubyte),    #可选择次数,0代表不限次数
-                  ("ChooseTimes", c_ubyte),    #已选次数
-                  ("IsChoose", c_ubyte),    #本次奖池是否被选择
-                  ]
-
-    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.ItemNum = 0
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        self.CanChooseTimes = 0
-        self.ChooseTimes = 0
-        self.IsChoose = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActGodGiftItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 60 天帝礼包活动信息 //tagMCActGodGiftInfo:
-                                ItemNum:%d,
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d,
-                                CanChooseTimes:%d,
-                                ChooseTimes:%d,
-                                IsChoose:%d
-                                '''\
-                                %(
-                                self.ItemNum,
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind,
-                                self.CanChooseTimes,
-                                self.ChooseTimes,
-                                self.IsChoose
-                                )
-        return DumpString
-
-
-class  tagMCActGodGiftItemLib(Structure):
-    ItemLibType = 0    #(BYTE ItemLibType)//物品库类型
-    NeedChooseCount = 0    #(BYTE NeedChooseCount)//需要选择个数
-    GodGiftItemCount = 0    #(BYTE GodGiftItemCount)//可选择物品个数
-    GodGiftItemList = list()    #(vector<tagMCActGodGiftItem> GodGiftItemList)//可选物品列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.GodGiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GodGiftItemCount):
-            temGodGiftItemList = tagMCActGodGiftItem()
-            _pos = temGodGiftItemList.ReadData(_lpData, _pos)
-            self.GodGiftItemList.append(temGodGiftItemList)
-        return _pos
-
-    def Clear(self):
-        self.ItemLibType = 0
-        self.NeedChooseCount = 0
-        self.GodGiftItemCount = 0
-        self.GodGiftItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        length += 1
-        for i in range(self.GodGiftItemCount):
-            length += self.GodGiftItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.ItemLibType)
-        data = CommFunc.WriteBYTE(data, self.NeedChooseCount)
-        data = CommFunc.WriteBYTE(data, self.GodGiftItemCount)
-        for i in range(self.GodGiftItemCount):
-            data = CommFunc.WriteString(data, self.GodGiftItemList[i].GetLength(), self.GodGiftItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                ItemLibType:%d,
-                                NeedChooseCount:%d,
-                                GodGiftItemCount:%d,
-                                GodGiftItemList:%s
-                                '''\
-                                %(
-                                self.ItemLibType,
-                                self.NeedChooseCount,
-                                self.GodGiftItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCActGodGiftInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)// 活动编号
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    IsDayReset = 0    #(BYTE IsDayReset)// 是否每日重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    CostMoneyType = 0    #(BYTE CostMoneyType)//消耗货币类型
-    CostMoneyValueCount = 0    #(BYTE CostMoneyValueCount)
-    CostMoneyValueList = list()    #(vector<DWORD> CostMoneyValueList)//消耗货币值列表
-    PrizeMoneyType = 0    #(BYTE PrizeMoneyType)//奖励货币类型
-    PrizeMoneyValueCount = 0    #(BYTE PrizeMoneyValueCount)
-    PrizeMoneyValueList = list()    #(vector<DWORD> PrizeMoneyValueList)//奖励货币值列表
-    ResetLimitTimes = 0    #(BYTE ResetLimitTimes)//至少抽几次才可重置奖池
-    ResetCountMax = 0    #(BYTE ResetCountMax)//最大可重置奖池次数
-    IsAwardPoolOK = 0    #(BYTE IsAwardPoolOK)//奖池是否选择完毕,否的话需要先选择奖池才可抽奖
-    ItemLibCount = 0    #(BYTE ItemLibCount)//奖池库个数	
-    ItemLibList = list()    #(vector<tagMCActGodGiftItemLib> ItemLibList)//奖池库信息列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x60
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.CostMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.CostMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.CostMoneyValueCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.CostMoneyValueList.append(value)
-        self.PrizeMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.PrizeMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.PrizeMoneyValueCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.PrizeMoneyValueList.append(value)
-        self.ResetLimitTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ResetCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.IsAwardPoolOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ItemLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ItemLibCount):
-            temItemLibList = tagMCActGodGiftItemLib()
-            _pos = temItemLibList.ReadData(_lpData, _pos)
-            self.ItemLibList.append(temItemLibList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x60
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.IsDayReset = 0
-        self.LimitLV = 0
-        self.CostMoneyType = 0
-        self.CostMoneyValueCount = 0
-        self.CostMoneyValueList = list()
-        self.PrizeMoneyType = 0
-        self.PrizeMoneyValueCount = 0
-        self.PrizeMoneyValueList = list()
-        self.ResetLimitTimes = 0
-        self.ResetCountMax = 0
-        self.IsAwardPoolOK = 0
-        self.ItemLibCount = 0
-        self.ItemLibList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 10
-        length += 10
-        length += 1
-        length += 2
-        length += 1
-        length += 1
-        length += 4 * self.CostMoneyValueCount
-        length += 1
-        length += 1
-        length += 4 * self.PrizeMoneyValueCount
-        length += 1
-        length += 1
-        length += 1
-        length += 1
-        for i in range(self.ItemLibCount):
-            length += self.ItemLibList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.CostMoneyType)
-        data = CommFunc.WriteBYTE(data, self.CostMoneyValueCount)
-        for i in range(self.CostMoneyValueCount):
-            data = CommFunc.WriteDWORD(data, self.CostMoneyValueList[i])
-        data = CommFunc.WriteBYTE(data, self.PrizeMoneyType)
-        data = CommFunc.WriteBYTE(data, self.PrizeMoneyValueCount)
-        for i in range(self.PrizeMoneyValueCount):
-            data = CommFunc.WriteDWORD(data, self.PrizeMoneyValueList[i])
-        data = CommFunc.WriteBYTE(data, self.ResetLimitTimes)
-        data = CommFunc.WriteBYTE(data, self.ResetCountMax)
-        data = CommFunc.WriteBYTE(data, self.IsAwardPoolOK)
-        data = CommFunc.WriteBYTE(data, self.ItemLibCount)
-        for i in range(self.ItemLibCount):
-            data = CommFunc.WriteString(data, self.ItemLibList[i].GetLength(), self.ItemLibList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                IsDayReset:%d,
-                                LimitLV:%d,
-                                CostMoneyType:%d,
-                                CostMoneyValueCount:%d,
-                                CostMoneyValueList:%s,
-                                PrizeMoneyType:%d,
-                                PrizeMoneyValueCount:%d,
-                                PrizeMoneyValueList:%s,
-                                ResetLimitTimes:%d,
-                                ResetCountMax:%d,
-                                IsAwardPoolOK:%d,
-                                ItemLibCount:%d,
-                                ItemLibList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.IsDayReset,
-                                self.LimitLV,
-                                self.CostMoneyType,
-                                self.CostMoneyValueCount,
-                                "...",
-                                self.PrizeMoneyType,
-                                self.PrizeMoneyValueCount,
-                                "...",
-                                self.ResetLimitTimes,
-                                self.ResetCountMax,
-                                self.IsAwardPoolOK,
-                                self.ItemLibCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActGodGiftInfo=tagMCActGodGiftInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftInfo.Head.Cmd,m_NAtagMCActGodGiftInfo.Head.SubCmd))] = m_NAtagMCActGodGiftInfo
-
-
-#------------------------------------------------------
-# AA 61 天帝礼包活动玩家信息 #tagMCActGodGiftPlayerInfo
-
-class  tagMCActGodGiftAwardItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemLibType", c_ubyte),    #物品库类型
-                  ("ItemNum", c_ubyte),    #物品在本库中的编号
-                  ]
-
-    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.ItemLibType = 0
-        self.ItemNum = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActGodGiftAwardItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 61 天帝礼包活动玩家信息 //tagMCActGodGiftPlayerInfo:
-                                ItemLibType:%d,
-                                ItemNum:%d
-                                '''\
-                                %(
-                                self.ItemLibType,
-                                self.ItemNum
-                                )
-        return DumpString
-
-
-class  tagMCActGodGiftPlayerInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)// 活动编号
-    ResetCount = 0    #(BYTE ResetCount)// 本次活动已重置次数
-    AwardItemCount = 0    #(BYTE AwardItemCount)// 本次奖池已抽中奖品个数,也代表本次奖池已抽奖次数
-    AwardItemList = list()    #(vector<tagMCActGodGiftAwardItem> AwardItemList)// 本次奖池已抽中物品列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x61
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ResetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardItemCount):
-            temAwardItemList = tagMCActGodGiftAwardItem()
-            _pos = temAwardItemList.ReadData(_lpData, _pos)
-            self.AwardItemList.append(temAwardItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x61
-        self.ActNum = 0
-        self.ResetCount = 0
-        self.AwardItemCount = 0
-        self.AwardItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 1
-        for i in range(self.AwardItemCount):
-            length += self.AwardItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteBYTE(data, self.ResetCount)
-        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
-        for i in range(self.AwardItemCount):
-            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                ResetCount:%d,
-                                AwardItemCount:%d,
-                                AwardItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.ResetCount,
-                                self.AwardItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActGodGiftPlayerInfo=tagMCActGodGiftPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftPlayerInfo.Head.Cmd,m_NAtagMCActGodGiftPlayerInfo.Head.SubCmd))] = m_NAtagMCActGodGiftPlayerInfo
-
-
-#------------------------------------------------------
-# AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo
-
-class  tagMCActGrowupBuyCTGItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ("IsBind", c_ubyte),    
-                  ]
-
-    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.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActGrowupBuyCTGItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 31 成长必买活动信息 //tagMCActGrowupBuyInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCActGrowupBuyCTGInfo(Structure):
-    CTGID = 0    #(WORD CTGID)// 充值表ID
-    GainItemCount = 0    #(BYTE GainItemCount)// 获得物品数
-    GainItemList = list()    #(vector<tagMCActGrowupBuyCTGItem> GainItemList)// 获得物品列表,替换充值表中的 GainItemList 字段信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.CTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.GainItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GainItemCount):
-            temGainItemList = tagMCActGrowupBuyCTGItem()
-            _pos = temGainItemList.ReadData(_lpData, _pos)
-            self.GainItemList.append(temGainItemList)
-        return _pos
-
-    def Clear(self):
-        self.CTGID = 0
-        self.GainItemCount = 0
-        self.GainItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 2
-        length += 1
-        for i in range(self.GainItemCount):
-            length += self.GainItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteWORD(data, self.CTGID)
-        data = CommFunc.WriteBYTE(data, self.GainItemCount)
-        for i in range(self.GainItemCount):
-            data = CommFunc.WriteString(data, self.GainItemList[i].GetLength(), self.GainItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                CTGID:%d,
-                                GainItemCount:%d,
-                                GainItemList:%s
-                                '''\
-                                %(
-                                self.CTGID,
-                                self.GainItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCActGrowupBuyGroup(Structure):
-    BuyCount = 0    #(BYTE BuyCount)// 循环购买礼包数
-    BuyCTGIDList = list()    #(vector<tagMCActGrowupBuyCTGInfo> BuyCTGIDList)// 循环购买礼包充值ID信息列表
-    PlayerBuyIndex = 0    #(BYTE PlayerBuyIndex)// 玩家当前可购买的礼包充值ID在列表中索引
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.BuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.BuyCount):
-            temBuyCTGIDList = tagMCActGrowupBuyCTGInfo()
-            _pos = temBuyCTGIDList.ReadData(_lpData, _pos)
-            self.BuyCTGIDList.append(temBuyCTGIDList)
-        self.PlayerBuyIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.BuyCount = 0
-        self.BuyCTGIDList = list()
-        self.PlayerBuyIndex = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        for i in range(self.BuyCount):
-            length += self.BuyCTGIDList[i].GetLength()
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.BuyCount)
-        for i in range(self.BuyCount):
-            data = CommFunc.WriteString(data, self.BuyCTGIDList[i].GetLength(), self.BuyCTGIDList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.PlayerBuyIndex)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                BuyCount:%d,
-                                BuyCTGIDList:%s,
-                                PlayerBuyIndex:%d
-                                '''\
-                                %(
-                                self.BuyCount,
-                                "...",
-                                self.PlayerBuyIndex
-                                )
-        return DumpString
-
-
-class  tagMCActGrowupBuyInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    GroupCount = 0    #(BYTE GroupCount)// 循环购买礼包组数
-    GroupList = list()    #(vector<tagMCActGrowupBuyGroup> GroupList)//循环购买礼包组列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x31
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.GroupCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GroupCount):
-            temGroupList = tagMCActGrowupBuyGroup()
-            _pos = temGroupList.ReadData(_lpData, _pos)
-            self.GroupList.append(temGroupList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x31
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.GroupCount = 0
-        self.GroupList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        for i in range(self.GroupCount):
-            length += self.GroupList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.GroupCount)
-        for i in range(self.GroupCount):
-            data = CommFunc.WriteString(data, self.GroupList[i].GetLength(), self.GroupList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                GroupCount:%d,
-                                GroupList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.GroupCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActGrowupBuyInfo=tagMCActGrowupBuyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGrowupBuyInfo.Head.Cmd,m_NAtagMCActGrowupBuyInfo.Head.SubCmd))] = m_NAtagMCActGrowupBuyInfo
-
-
-#------------------------------------------------------
 # AA 69 登录活动信息新 #tagMCActLoginNew
 
 class  tagMCActLoginNewItem(Structure):
@@ -21864,983 +21084,6 @@
 
 
 #------------------------------------------------------
-# AA 52 转盘活动信息 #tagMCActTurntableInfo
-
-class  tagMCActTurntableItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemNum", c_ubyte),    #物品编号 1~n;注意转盘已确定物品编号 与 极品终极物品待选择库编号可能相同,但并不代表同一物品
-                  ("ItemLibType", c_ubyte),    #物品库类型;1-常规,2-极品,3-终极
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ]
-
-    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.ItemNum = 0
-        self.ItemLibType = 0
-        self.ItemID = 0
-        self.ItemCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActTurntableItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 52 转盘活动信息 //tagMCActTurntableInfo:
-                                ItemNum:%d,
-                                ItemLibType:%d,
-                                ItemID:%d,
-                                ItemCount:%d
-                                '''\
-                                %(
-                                self.ItemNum,
-                                self.ItemLibType,
-                                self.ItemID,
-                                self.ItemCount
-                                )
-        return DumpString
-
-
-class  tagMCActTurntableInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)// 活动编号
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    IsDayReset = 0    #(BYTE IsDayReset)// 是否每天重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    CTGPrizeCount = 0    #(BYTE CTGPrizeCount)
-    CTGPrizeList = list()    #(vector<DWORD> CTGPrizeList)// 累计充值额度奖励次数列表 [奖励第1次所需累计充值额度, 第2次, ...]
-    UseMoneyType = 0    #(BYTE UseMoneyType)// 累计消费货币类型
-    UseMoneyPrizeCount = 0    #(BYTE UseMoneyPrizeCount)
-    UseMoneyPrizeList = list()    #(vector<DWORD> UseMoneyPrizeList)// 累计消费货币奖励次数列表 [奖励第1次所需累计消费货币, 第2次, ...]
-    TurnItemCount = 0    #(BYTE TurnItemCount)
-    TurnItemList = list()    #(vector<tagMCActTurntableItem> TurnItemList)// 转盘已确定的物品列表,包含常规物品+极品物品+终极物品,活动开始时,后端直接随机生成常规物品,已确定的物品不包含极品、终极物品时需要先选择才能使用转盘;
-    GoodItemCount = 0    #(BYTE GoodItemCount)
-    GoodItemList = list()    #(vector<tagMCActTurntableItem> GoodItemList)// 极品物品待选择库,由玩家从库中选择放入转盘的物品;注意此库中的物品编号仅表示在该库中的编号,可能与转盘已确定的物品编号重复,但并不代表同一物品;
-    GoodItemCanChooseCount = 0    #(BYTE GoodItemCanChooseCount)// 极品物品可选择个数
-    SuperItemCount = 0    #(BYTE SuperItemCount)
-    SuperItemList = list()    #(vector<tagMCActTurntableItem> SuperItemList)// 终极物品待选择库,由玩家从库中选择放入转盘的物品;注意此库中的物品编号仅表示在该库中的编号,可能与转盘已确定的物品编号重复,但并不代表同一物品;
-    SuperItemCanChooseCount = 0    #(BYTE SuperItemCanChooseCount)// 终极物品可选择个数
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x52
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.CTGPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.CTGPrizeCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.CTGPrizeList.append(value)
-        self.UseMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.UseMoneyPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.UseMoneyPrizeCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.UseMoneyPrizeList.append(value)
-        self.TurnItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TurnItemCount):
-            temTurnItemList = tagMCActTurntableItem()
-            _pos = temTurnItemList.ReadData(_lpData, _pos)
-            self.TurnItemList.append(temTurnItemList)
-        self.GoodItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GoodItemCount):
-            temGoodItemList = tagMCActTurntableItem()
-            _pos = temGoodItemList.ReadData(_lpData, _pos)
-            self.GoodItemList.append(temGoodItemList)
-        self.GoodItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.SuperItemCount):
-            temSuperItemList = tagMCActTurntableItem()
-            _pos = temSuperItemList.ReadData(_lpData, _pos)
-            self.SuperItemList.append(temSuperItemList)
-        self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x52
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.IsDayReset = 0
-        self.LimitLV = 0
-        self.CTGPrizeCount = 0
-        self.CTGPrizeList = list()
-        self.UseMoneyType = 0
-        self.UseMoneyPrizeCount = 0
-        self.UseMoneyPrizeList = list()
-        self.TurnItemCount = 0
-        self.TurnItemList = list()
-        self.GoodItemCount = 0
-        self.GoodItemList = list()
-        self.GoodItemCanChooseCount = 0
-        self.SuperItemCount = 0
-        self.SuperItemList = list()
-        self.SuperItemCanChooseCount = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 10
-        length += 10
-        length += 1
-        length += 2
-        length += 1
-        length += 4 * self.CTGPrizeCount
-        length += 1
-        length += 1
-        length += 4 * self.UseMoneyPrizeCount
-        length += 1
-        for i in range(self.TurnItemCount):
-            length += self.TurnItemList[i].GetLength()
-        length += 1
-        for i in range(self.GoodItemCount):
-            length += self.GoodItemList[i].GetLength()
-        length += 1
-        length += 1
-        for i in range(self.SuperItemCount):
-            length += self.SuperItemList[i].GetLength()
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.CTGPrizeCount)
-        for i in range(self.CTGPrizeCount):
-            data = CommFunc.WriteDWORD(data, self.CTGPrizeList[i])
-        data = CommFunc.WriteBYTE(data, self.UseMoneyType)
-        data = CommFunc.WriteBYTE(data, self.UseMoneyPrizeCount)
-        for i in range(self.UseMoneyPrizeCount):
-            data = CommFunc.WriteDWORD(data, self.UseMoneyPrizeList[i])
-        data = CommFunc.WriteBYTE(data, self.TurnItemCount)
-        for i in range(self.TurnItemCount):
-            data = CommFunc.WriteString(data, self.TurnItemList[i].GetLength(), self.TurnItemList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.GoodItemCount)
-        for i in range(self.GoodItemCount):
-            data = CommFunc.WriteString(data, self.GoodItemList[i].GetLength(), self.GoodItemList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.GoodItemCanChooseCount)
-        data = CommFunc.WriteBYTE(data, self.SuperItemCount)
-        for i in range(self.SuperItemCount):
-            data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                IsDayReset:%d,
-                                LimitLV:%d,
-                                CTGPrizeCount:%d,
-                                CTGPrizeList:%s,
-                                UseMoneyType:%d,
-                                UseMoneyPrizeCount:%d,
-                                UseMoneyPrizeList:%s,
-                                TurnItemCount:%d,
-                                TurnItemList:%s,
-                                GoodItemCount:%d,
-                                GoodItemList:%s,
-                                GoodItemCanChooseCount:%d,
-                                SuperItemCount:%d,
-                                SuperItemList:%s,
-                                SuperItemCanChooseCount:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.IsDayReset,
-                                self.LimitLV,
-                                self.CTGPrizeCount,
-                                "...",
-                                self.UseMoneyType,
-                                self.UseMoneyPrizeCount,
-                                "...",
-                                self.TurnItemCount,
-                                "...",
-                                self.GoodItemCount,
-                                "...",
-                                self.GoodItemCanChooseCount,
-                                self.SuperItemCount,
-                                "...",
-                                self.SuperItemCanChooseCount
-                                )
-        return DumpString
-
-
-m_NAtagMCActTurntableInfo=tagMCActTurntableInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTurntableInfo.Head.Cmd,m_NAtagMCActTurntableInfo.Head.SubCmd))] = m_NAtagMCActTurntableInfo
-
-
-#------------------------------------------------------
-# AA 53 转盘活动玩家信息 #tagMCActTurntablePlayerInfo
-
-class  tagMCActTurntablePlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("ActNum", c_ubyte),    #活动编号
-                  ("CanUseCount", c_ubyte),    #可转盘次数
-                  ("CTGTotal", c_int),    #累计充值额度
-                  ("UseMoneyTotal", c_int),    #累计消费货币额度
-                  ("TurnItemState", c_int),    #转盘物品已抽中记录,按转盘物品编号二进制位代表是否已抽中
-                  ("GetItemNum", c_ubyte),    #本次抽中的物品编号,非转盘结果时为0,大于0时为通知本次转到的物品编号
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x53
-        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 = 0xAA
-        self.SubCmd = 0x53
-        self.ActNum = 0
-        self.CanUseCount = 0
-        self.CTGTotal = 0
-        self.UseMoneyTotal = 0
-        self.TurnItemState = 0
-        self.GetItemNum = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActTurntablePlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 53 转盘活动玩家信息 //tagMCActTurntablePlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                ActNum:%d,
-                                CanUseCount:%d,
-                                CTGTotal:%d,
-                                UseMoneyTotal:%d,
-                                TurnItemState:%d,
-                                GetItemNum:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.ActNum,
-                                self.CanUseCount,
-                                self.CTGTotal,
-                                self.UseMoneyTotal,
-                                self.TurnItemState,
-                                self.GetItemNum
-                                )
-        return DumpString
-
-
-m_NAtagMCActTurntablePlayerInfo=tagMCActTurntablePlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTurntablePlayerInfo.Cmd,m_NAtagMCActTurntablePlayerInfo.SubCmd))] = m_NAtagMCActTurntablePlayerInfo
-
-
-#------------------------------------------------------
-# AA 1B 许愿池拖动结果 #tagMCActWishingDragResult
-
-class  tagMCPlayerWishingDragInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("WellType", c_ubyte),    # 库 0-可选库 1-结果库
-                  ("Index", c_ubyte),    # 索引
-                  ("ItemID", c_int),    # 物品ID
-                  ("ItemCnt", c_ushort),    # 物品数量
-                  ("IsBind", c_ubyte),    # 是否绑定
-                  ("IsSpecial", c_ubyte),    # 是否极品
-                  ]
-
-    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.WellType = 0
-        self.Index = 0
-        self.ItemID = 0
-        self.ItemCnt = 0
-        self.IsBind = 0
-        self.IsSpecial = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCPlayerWishingDragInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 1B 许愿池拖动结果 //tagMCActWishingDragResult:
-                                WellType:%d,
-                                Index:%d,
-                                ItemID:%d,
-                                ItemCnt:%d,
-                                IsBind:%d,
-                                IsSpecial:%d
-                                '''\
-                                %(
-                                self.WellType,
-                                self.Index,
-                                self.ItemID,
-                                self.ItemCnt,
-                                self.IsBind,
-                                self.IsSpecial
-                                )
-        return DumpString
-
-
-class  tagMCActWishingDragResult(Structure):
-    Head = tagHead()
-    Cnt = 0    #(BYTE Cnt)
-    InfoList = list()    #(vector<tagMCPlayerWishingDragInfo> InfoList)
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x1B
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Cnt):
-            temInfoList = tagMCPlayerWishingDragInfo()
-            _pos = temInfoList.ReadData(_lpData, _pos)
-            self.InfoList.append(temInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x1B
-        self.Cnt = 0
-        self.InfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Cnt):
-            length += self.InfoList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.Cnt)
-        for i in range(self.Cnt):
-            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Cnt:%d,
-                                InfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Cnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActWishingDragResult=tagMCActWishingDragResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingDragResult.Head.Cmd,m_NAtagMCActWishingDragResult.Head.SubCmd))] = m_NAtagMCActWishingDragResult
-
-
-#------------------------------------------------------
-# AA 19 许愿池活动信息 #tagMCActWishingWellInfo
-
-class  tagMCWishingWellItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    # 物品ID
-                  ("ItemCnt", c_ushort),    # 物品数量
-                  ("IsBind", c_ubyte),    # 是否绑定
-                  ("Mark", c_int),    # 排序标识
-                  ("Rare", c_ubyte),    # 珍稀值
-                  ]
-
-    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.ItemID = 0
-        self.ItemCnt = 0
-        self.IsBind = 0
-        self.Mark = 0
-        self.Rare = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCWishingWellItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 19 许愿池活动信息 //tagMCActWishingWellInfo:
-                                ItemID:%d,
-                                ItemCnt:%d,
-                                IsBind:%d,
-                                Mark:%d,
-                                Rare:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCnt,
-                                self.IsBind,
-                                self.Mark,
-                                self.Rare
-                                )
-        return DumpString
-
-
-class  tagMCActWishingWellInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    Count = 0    #(WORD Count)// 物品数
-    WellItemInfo = list()    #(vector<tagMCWishingWellItem> WellItemInfo)// 随机库物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x19
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.Count):
-            temWellItemInfo = tagMCWishingWellItem()
-            _pos = temWellItemInfo.ReadData(_lpData, _pos)
-            self.WellItemInfo.append(temWellItemInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x19
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.LimitLV = 0
-        self.Count = 0
-        self.WellItemInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 1
-        length += 1
-        length += 2
-        length += 2
-        for i in range(self.Count):
-            length += self.WellItemInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteWORD(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.WellItemInfo[i].GetLength(), self.WellItemInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                IsDayReset:%d,
-                                ResetType:%d,
-                                LimitLV:%d,
-                                Count:%d,
-                                WellItemInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.IsDayReset,
-                                self.ResetType,
-                                self.LimitLV,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActWishingWellInfo=tagMCActWishingWellInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellInfo.Head.Cmd,m_NAtagMCActWishingWellInfo.Head.SubCmd))] = m_NAtagMCActWishingWellInfo
-
-
-#------------------------------------------------------
-# AA 1A 许愿池活动玩家信息 #tagMCActWishingWellPlayerInfo
-
-class  tagMCPlayerWishingWellItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    # 物品ID
-                  ("ItemCnt", c_ushort),    # 物品数量
-                  ("IsBind", c_ubyte),    # 是否绑定
-                  ("IsSpecial", c_ubyte),    # 是否极品
-                  ]
-
-    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.ItemID = 0
-        self.ItemCnt = 0
-        self.IsBind = 0
-        self.IsSpecial = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCPlayerWishingWellItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 1A 许愿池活动玩家信息 //tagMCActWishingWellPlayerInfo:
-                                ItemID:%d,
-                                ItemCnt:%d,
-                                IsBind:%d,
-                                IsSpecial:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCnt,
-                                self.IsBind,
-                                self.IsSpecial
-                                )
-        return DumpString
-
-
-class  tagMCActWishingWellPlayerInfo(Structure):
-    Head = tagHead()
-    FreeStartTime = 0    #(DWORD FreeStartTime)// 免费开始倒计时时间
-    WishCnt = 0    #(DWORD WishCnt)// 许愿付费刷新次数
-    WellItemCnt = 0    #(BYTE WellItemCnt)//许愿池物品数量
-    WellItemInfo = list()    #(vector<tagMCPlayerWishingWellItem> WellItemInfo)// 随机库物品信息
-    CurAwardCnt = 0    #(BYTE CurAwardCnt)// 当前奖励物品数量
-    CurAwardItemInfo = list()    #(vector<tagMCPlayerWishingWellItem> CurAwardItemInfo)// 当前奖励物品
-    LastAwardCnt = 0    #(BYTE LastAwardCnt)// 可领取奖励物品数量
-    LastAwardItemInfo = list()    #(vector<tagMCPlayerWishingWellItem> LastAwardItemInfo)// 可领取奖励物品
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x1A
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.FreeStartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.WishCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.WellItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.WellItemCnt):
-            temWellItemInfo = tagMCPlayerWishingWellItem()
-            _pos = temWellItemInfo.ReadData(_lpData, _pos)
-            self.WellItemInfo.append(temWellItemInfo)
-        self.CurAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.CurAwardCnt):
-            temCurAwardItemInfo = tagMCPlayerWishingWellItem()
-            _pos = temCurAwardItemInfo.ReadData(_lpData, _pos)
-            self.CurAwardItemInfo.append(temCurAwardItemInfo)
-        self.LastAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.LastAwardCnt):
-            temLastAwardItemInfo = tagMCPlayerWishingWellItem()
-            _pos = temLastAwardItemInfo.ReadData(_lpData, _pos)
-            self.LastAwardItemInfo.append(temLastAwardItemInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x1A
-        self.FreeStartTime = 0
-        self.WishCnt = 0
-        self.WellItemCnt = 0
-        self.WellItemInfo = list()
-        self.CurAwardCnt = 0
-        self.CurAwardItemInfo = list()
-        self.LastAwardCnt = 0
-        self.LastAwardItemInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.WellItemCnt):
-            length += self.WellItemInfo[i].GetLength()
-        length += 1
-        for i in range(self.CurAwardCnt):
-            length += self.CurAwardItemInfo[i].GetLength()
-        length += 1
-        for i in range(self.LastAwardCnt):
-            length += self.LastAwardItemInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.FreeStartTime)
-        data = CommFunc.WriteDWORD(data, self.WishCnt)
-        data = CommFunc.WriteBYTE(data, self.WellItemCnt)
-        for i in range(self.WellItemCnt):
-            data = CommFunc.WriteString(data, self.WellItemInfo[i].GetLength(), self.WellItemInfo[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.CurAwardCnt)
-        for i in range(self.CurAwardCnt):
-            data = CommFunc.WriteString(data, self.CurAwardItemInfo[i].GetLength(), self.CurAwardItemInfo[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.LastAwardCnt)
-        for i in range(self.LastAwardCnt):
-            data = CommFunc.WriteString(data, self.LastAwardItemInfo[i].GetLength(), self.LastAwardItemInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                FreeStartTime:%d,
-                                WishCnt:%d,
-                                WellItemCnt:%d,
-                                WellItemInfo:%s,
-                                CurAwardCnt:%d,
-                                CurAwardItemInfo:%s,
-                                LastAwardCnt:%d,
-                                LastAwardItemInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.FreeStartTime,
-                                self.WishCnt,
-                                self.WellItemCnt,
-                                "...",
-                                self.CurAwardCnt,
-                                "...",
-                                self.LastAwardCnt,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActWishingWellPlayerInfo=tagMCActWishingWellPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellPlayerInfo.Head.Cmd,m_NAtagMCActWishingWellPlayerInfo.Head.SubCmd))] = m_NAtagMCActWishingWellPlayerInfo
-
-
-#------------------------------------------------------
-# AA 87 运势活动信息 #tagMCActYunshiInfo
-
-class  tagMCActYunshiInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)// 活动编号
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    TreasureType = 0    #(BYTE TreasureType)// 活动寻宝类型
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x87
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x87
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.ResetType = 0
-        self.LimitLV = 0
-        self.TreasureType = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 10
-        length += 10
-        length += 1
-        length += 2
-        length += 1
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.TreasureType)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                ResetType:%d,
-                                LimitLV:%d,
-                                TreasureType:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.ResetType,
-                                self.LimitLV,
-                                self.TreasureType
-                                )
-        return DumpString
-
-
-m_NAtagMCActYunshiInfo=tagMCActYunshiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActYunshiInfo.Head.Cmd,m_NAtagMCActYunshiInfo.Head.SubCmd))] = m_NAtagMCActYunshiInfo
-
-
-#------------------------------------------------------
-# AA 15 仙界盛典全民来嗨玩家信息 #tagMCAllPeoplePartyInfo
-
-class  tagMCAllPeoplePartyCount(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ActID", c_int),    #活动ID
-                  ("CurTimes", c_ushort),    #已完成次数
-                  ]
-
-    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.ActID = 0
-        self.CurTimes = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCAllPeoplePartyCount)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 15 仙界盛典全民来嗨玩家信息 //tagMCAllPeoplePartyInfo:
-                                ActID:%d,
-                                CurTimes:%d
-                                '''\
-                                %(
-                                self.ActID,
-                                self.CurTimes
-                                )
-        return DumpString
-
-
-class  tagMCAllPeoplePartyInfo(Structure):
-    Head = tagHead()
-    CurPoint = 0    #(DWORD CurPoint)//当前总点数
-    AwardRecord = 0    #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
-    Count = 0    #(BYTE Count)
-    BuyCountList = list()    #(vector<tagMCAllPeoplePartyCount> BuyCountList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x15
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temBuyCountList = tagMCAllPeoplePartyCount()
-            _pos = temBuyCountList.ReadData(_lpData, _pos)
-            self.BuyCountList.append(temBuyCountList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x15
-        self.CurPoint = 0
-        self.AwardRecord = 0
-        self.Count = 0
-        self.BuyCountList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.BuyCountList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.CurPoint)
-        data = CommFunc.WriteDWORD(data, self.AwardRecord)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                CurPoint:%d,
-                                AwardRecord:%d,
-                                Count:%d,
-                                BuyCountList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.CurPoint,
-                                self.AwardRecord,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCAllPeoplePartyInfo=tagMCAllPeoplePartyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllPeoplePartyInfo.Head.Cmd,m_NAtagMCAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCAllPeoplePartyInfo
-
-
-#------------------------------------------------------
 # AA 90 炼器跨服活动信息 #tagMCCrossActLianqiInfo
 
 class  tagMCCrossActLianqiItem(Structure):
@@ -23345,321 +21588,6 @@
 
 
 #------------------------------------------------------
-# AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo
-
-class  tagMCDailyGiftbagItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ]
-
-    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.ItemID = 0
-        self.ItemCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDailyGiftbagItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 25 每日礼包活动信息 //tagMCDailyGiftbagInfo:
-                                ItemID:%d,
-                                ItemCount:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount
-                                )
-        return DumpString
-
-
-class  tagMCDailyGiftbag(Structure):
-    GiftID = 0    #(DWORD GiftID)//礼包ID,0为免费
-    OrderInfoLen = 0    #(BYTE OrderInfoLen)
-    OrderInfo = ""    #(String OrderInfo)//商品编号
-    BuyCountLimit = 0    #(BYTE BuyCountLimit)//限购数
-    RMB = 0    #(DWORD RMB)//所需RMB,元
-    GiftItemCount = 0    #(BYTE GiftItemCount)// 礼包物品数
-    ItemInfo = list()    #(vector<tagMCDailyGiftbagItem> ItemInfo)// 物品信息
-    Discount = 0    #(WORD Discount)// 折扣力度百分比
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
-        self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GiftItemCount):
-            temItemInfo = tagMCDailyGiftbagItem()
-            _pos = temItemInfo.ReadData(_lpData, _pos)
-            self.ItemInfo.append(temItemInfo)
-        self.Discount,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.GiftID = 0
-        self.OrderInfoLen = 0
-        self.OrderInfo = ""
-        self.BuyCountLimit = 0
-        self.RMB = 0
-        self.GiftItemCount = 0
-        self.ItemInfo = list()
-        self.Discount = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 1
-        length += len(self.OrderInfo)
-        length += 1
-        length += 4
-        length += 1
-        for i in range(self.GiftItemCount):
-            length += self.ItemInfo[i].GetLength()
-        length += 2
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.GiftID)
-        data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
-        data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
-        data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
-        data = CommFunc.WriteDWORD(data, self.RMB)
-        data = CommFunc.WriteBYTE(data, self.GiftItemCount)
-        for i in range(self.GiftItemCount):
-            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
-        data = CommFunc.WriteWORD(data, self.Discount)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                GiftID:%d,
-                                OrderInfoLen:%d,
-                                OrderInfo:%s,
-                                BuyCountLimit:%d,
-                                RMB:%d,
-                                GiftItemCount:%d,
-                                ItemInfo:%s,
-                                Discount:%d
-                                '''\
-                                %(
-                                self.GiftID,
-                                self.OrderInfoLen,
-                                self.OrderInfo,
-                                self.BuyCountLimit,
-                                self.RMB,
-                                self.GiftItemCount,
-                                "...",
-                                self.Discount
-                                )
-        return DumpString
-
-
-class  tagMCDailyGiftbagInfo(Structure):
-    Head = tagHead()
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    GiftbagCount = 0    #(BYTE GiftbagCount)// 礼包数
-    GiftbagInfo = list()    #(vector<tagMCDailyGiftbag> GiftbagInfo)// 礼包信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x25
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GiftbagCount):
-            temGiftbagInfo = tagMCDailyGiftbag()
-            _pos = temGiftbagInfo.ReadData(_lpData, _pos)
-            self.GiftbagInfo.append(temGiftbagInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x25
-        self.LimitLV = 0
-        self.GiftbagCount = 0
-        self.GiftbagInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += 1
-        for i in range(self.GiftbagCount):
-            length += self.GiftbagInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.GiftbagCount)
-        for i in range(self.GiftbagCount):
-            data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                LimitLV:%d,
-                                GiftbagCount:%d,
-                                GiftbagInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.LimitLV,
-                                self.GiftbagCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCDailyGiftbagInfo=tagMCDailyGiftbagInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagInfo.Head.Cmd,m_NAtagMCDailyGiftbagInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagInfo
-
-
-#------------------------------------------------------
-# AA 26 每日礼包玩家活动信息 #tagMCDailyGiftbagPlayerInfo
-
-class  tagMCDailyGiftbagBuyCount(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GiftbagID", c_int),    #礼包ID
-                  ("BuyCount", c_ushort),    #本次活动已购买次数
-                  ]
-
-    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.GiftbagID = 0
-        self.BuyCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCDailyGiftbagBuyCount)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 26 每日礼包玩家活动信息 //tagMCDailyGiftbagPlayerInfo:
-                                GiftbagID:%d,
-                                BuyCount:%d
-                                '''\
-                                %(
-                                self.GiftbagID,
-                                self.BuyCount
-                                )
-        return DumpString
-
-
-class  tagMCDailyGiftbagPlayerInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    BuyCountList = list()    #(vector<tagMCDailyGiftbagBuyCount> BuyCountList)//礼包购买次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x26
-        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):
-            temBuyCountList = tagMCDailyGiftbagBuyCount()
-            _pos = temBuyCountList.ReadData(_lpData, _pos)
-            self.BuyCountList.append(temBuyCountList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x26
-        self.Count = 0
-        self.BuyCountList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.BuyCountList[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.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                BuyCountList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCDailyGiftbagPlayerInfo=tagMCDailyGiftbagPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagPlayerInfo.Head.Cmd,m_NAtagMCDailyGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagPlayerInfo
-
-
-#------------------------------------------------------
 # AA 03 每日打包直购礼包 #tagMCDailyPackBuyGiftInfo
 
 class  tagMCDailyPackBuyGiftInfo(Structure):
@@ -23832,1659 +21760,6 @@
 
 
 #------------------------------------------------------
-# AA 12 限时礼包活动信息 #tagMCFlashGiftbagInfo
-
-class  tagMCFlashGiftbagItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ("IsBind", c_ubyte),    
-                  ("IsMainItem", c_ubyte),    #是否标的物
-                  ]
-
-    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.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        self.IsMainItem = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFlashGiftbagItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 12 限时礼包活动信息 //tagMCFlashGiftbagInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d,
-                                IsMainItem:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind,
-                                self.IsMainItem
-                                )
-        return DumpString
-
-
-class  tagMCFlashGiftbag(Structure):
-    GiftID = 0    #(DWORD GiftID)//礼包ID
-    OrderInfoLen = 0    #(BYTE OrderInfoLen)
-    OrderInfo = ""    #(String OrderInfo)//商品编号
-    BuyCountLimit = 0    #(BYTE BuyCountLimit)//限购数
-    RMB = 0    #(DWORD RMB)//所需RMB,元
-    RMBOriginal = 0    #(DWORD RMBOriginal)//原价
-    GiftItemCount = 0    #(BYTE GiftItemCount)// 礼包物品数
-    ItemInfo = list()    #(vector<tagMCFlashGiftbagItem> ItemInfo)// 物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
-        self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.RMBOriginal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GiftItemCount):
-            temItemInfo = tagMCFlashGiftbagItem()
-            _pos = temItemInfo.ReadData(_lpData, _pos)
-            self.ItemInfo.append(temItemInfo)
-        return _pos
-
-    def Clear(self):
-        self.GiftID = 0
-        self.OrderInfoLen = 0
-        self.OrderInfo = ""
-        self.BuyCountLimit = 0
-        self.RMB = 0
-        self.RMBOriginal = 0
-        self.GiftItemCount = 0
-        self.ItemInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 1
-        length += len(self.OrderInfo)
-        length += 1
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.GiftItemCount):
-            length += self.ItemInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.GiftID)
-        data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
-        data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
-        data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
-        data = CommFunc.WriteDWORD(data, self.RMB)
-        data = CommFunc.WriteDWORD(data, self.RMBOriginal)
-        data = CommFunc.WriteBYTE(data, self.GiftItemCount)
-        for i in range(self.GiftItemCount):
-            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                GiftID:%d,
-                                OrderInfoLen:%d,
-                                OrderInfo:%s,
-                                BuyCountLimit:%d,
-                                RMB:%d,
-                                RMBOriginal:%d,
-                                GiftItemCount:%d,
-                                ItemInfo:%s
-                                '''\
-                                %(
-                                self.GiftID,
-                                self.OrderInfoLen,
-                                self.OrderInfo,
-                                self.BuyCountLimit,
-                                self.RMB,
-                                self.RMBOriginal,
-                                self.GiftItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFlashGiftbagType(Structure):
-    GiftbagCount = 0    #(BYTE GiftbagCount)// 礼包数
-    GiftbagInfo = list()    #(vector<tagMCFlashGiftbag> GiftbagInfo)// 礼包信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GiftbagCount):
-            temGiftbagInfo = tagMCFlashGiftbag()
-            _pos = temGiftbagInfo.ReadData(_lpData, _pos)
-            self.GiftbagInfo.append(temGiftbagInfo)
-        return _pos
-
-    def Clear(self):
-        self.GiftbagCount = 0
-        self.GiftbagInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        for i in range(self.GiftbagCount):
-            length += self.GiftbagInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.GiftbagCount)
-        for i in range(self.GiftbagCount):
-            data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                GiftbagCount:%d,
-                                GiftbagInfo:%s
-                                '''\
-                                %(
-                                self.GiftbagCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFlashGiftbagTime(Structure):
-    StartTime = ""    #(char StartTime[5])// 开始时间 H:M
-    EndtTime = ""    #(char EndtTime[5])// 结束时间 H:M
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        return _pos
-
-    def Clear(self):
-        self.StartTime = ""
-        self.EndtTime = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 5
-        length += 5
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, 5, self.StartTime)
-        data = CommFunc.WriteString(data, 5, self.EndtTime)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                StartTime:%s,
-                                EndtTime:%s
-                                '''\
-                                %(
-                                self.StartTime,
-                                self.EndtTime
-                                )
-        return DumpString
-
-
-class  tagMCFlashGiftbagInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)//活动编号
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
-    ActivityTimeCount = 0    #(BYTE ActivityTimeCount)
-    ActivityTime = list()    #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    GiftbagTypeCount = 0    #(BYTE GiftbagTypeCount)// 礼包类型数
-    GiftbagTypeInfo = list()    #(vector<tagMCFlashGiftbagType> GiftbagTypeInfo)// 礼包类型信息, 当有多个且有多个活动时间段时则每个时间段对应一个礼包类型;
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x12
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ActivityTimeCount):
-            temActivityTime = tagMCFlashGiftbagTime()
-            _pos = temActivityTime.ReadData(_lpData, _pos)
-            self.ActivityTime.append(temActivityTime)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.GiftbagTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GiftbagTypeCount):
-            temGiftbagTypeInfo = tagMCFlashGiftbagType()
-            _pos = temGiftbagTypeInfo.ReadData(_lpData, _pos)
-            self.GiftbagTypeInfo.append(temGiftbagTypeInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x12
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.AdvanceMinutes = 0
-        self.ActivityTimeCount = 0
-        self.ActivityTime = list()
-        self.IsDayReset = 0
-        self.LimitLV = 0
-        self.GiftbagTypeCount = 0
-        self.GiftbagTypeInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        for i in range(self.ActivityTimeCount):
-            length += self.ActivityTime[i].GetLength()
-        length += 1
-        length += 2
-        length += 1
-        for i in range(self.GiftbagTypeCount):
-            length += self.GiftbagTypeInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
-        data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
-        for i in range(self.ActivityTimeCount):
-            data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.GiftbagTypeCount)
-        for i in range(self.GiftbagTypeCount):
-            data = CommFunc.WriteString(data, self.GiftbagTypeInfo[i].GetLength(), self.GiftbagTypeInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                AdvanceMinutes:%d,
-                                ActivityTimeCount:%d,
-                                ActivityTime:%s,
-                                IsDayReset:%d,
-                                LimitLV:%d,
-                                GiftbagTypeCount:%d,
-                                GiftbagTypeInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.AdvanceMinutes,
-                                self.ActivityTimeCount,
-                                "...",
-                                self.IsDayReset,
-                                self.LimitLV,
-                                self.GiftbagTypeCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFlashGiftbagInfo=tagMCFlashGiftbagInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashGiftbagInfo.Head.Cmd,m_NAtagMCFlashGiftbagInfo.Head.SubCmd))] = m_NAtagMCFlashGiftbagInfo
-
-
-#------------------------------------------------------
-# AA 13 限时礼包玩家活动信息 #tagMCFlashGiftbagPlayerInfo
-
-class  tagMCFlashGiftbagBuyCount(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GiftbagID", c_int),    #礼包ID
-                  ("BuyCount", c_ushort),    #本次活动已购买次数
-                  ]
-
-    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.GiftbagID = 0
-        self.BuyCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFlashGiftbagBuyCount)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 13 限时礼包玩家活动信息 //tagMCFlashGiftbagPlayerInfo:
-                                GiftbagID:%d,
-                                BuyCount:%d
-                                '''\
-                                %(
-                                self.GiftbagID,
-                                self.BuyCount
-                                )
-        return DumpString
-
-
-class  tagMCFlashGiftbagPlayerInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)//活动编号
-    Count = 0    #(BYTE Count)
-    BuyCountList = list()    #(vector<tagMCFlashGiftbagBuyCount> BuyCountList)//礼包购买次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x13
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temBuyCountList = tagMCFlashGiftbagBuyCount()
-            _pos = temBuyCountList.ReadData(_lpData, _pos)
-            self.BuyCountList.append(temBuyCountList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x13
-        self.ActNum = 0
-        self.Count = 0
-        self.BuyCountList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        for i in range(self.Count):
-            length += self.BuyCountList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                Count:%d,
-                                BuyCountList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFlashGiftbagPlayerInfo=tagMCFlashGiftbagPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashGiftbagPlayerInfo.Head.Cmd,m_NAtagMCFlashGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCFlashGiftbagPlayerInfo
-
-
-#------------------------------------------------------
-# AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo
-
-class  tagMCFlashSaleAppointmentState(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GoodsMark", c_int),    # 商品标识
-                  ("State", c_ubyte),    # 是否预约
-                  ]
-
-    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.GoodsMark = 0
-        self.State = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFlashSaleAppointmentState)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 18 限时抢购活动玩家预约信息 //tagMCFlashSaleAppointmentInfo:
-                                GoodsMark:%d,
-                                State:%d
-                                '''\
-                                %(
-                                self.GoodsMark,
-                                self.State
-                                )
-        return DumpString
-
-
-class  tagMCFlashSaleAppointmentInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)//活动编号
-    IsAll = 0    #(BYTE IsAll)// 是否全部
-    GoodsCount = 0    #(WORD GoodsCount)// 商品数
-    GoodsList = list()    #(vector<tagMCFlashSaleAppointmentState> GoodsList)// 预约的商品
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x18
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.GoodsCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.GoodsCount):
-            temGoodsList = tagMCFlashSaleAppointmentState()
-            _pos = temGoodsList.ReadData(_lpData, _pos)
-            self.GoodsList.append(temGoodsList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x18
-        self.ActNum = 0
-        self.IsAll = 0
-        self.GoodsCount = 0
-        self.GoodsList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 2
-        for i in range(self.GoodsCount):
-            length += self.GoodsList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteBYTE(data, self.IsAll)
-        data = CommFunc.WriteWORD(data, self.GoodsCount)
-        for i in range(self.GoodsCount):
-            data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                IsAll:%d,
-                                GoodsCount:%d,
-                                GoodsList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.IsAll,
-                                self.GoodsCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFlashSaleAppointmentInfo=tagMCFlashSaleAppointmentInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleAppointmentInfo.Head.Cmd,m_NAtagMCFlashSaleAppointmentInfo.Head.SubCmd))] = m_NAtagMCFlashSaleAppointmentInfo
-
-
-#------------------------------------------------------
-# AA 17 限时抢购活动信息 #tagMCFlashSaleInfo
-
-class  tagMCFlashSaleGiftbag(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("GiftID", c_int),    #商城表的物品ID
-                  ("BuyCountLimit", c_ubyte),    #限购数
-                  ("ServerBuyCountLimit", c_ushort),    #全服限购数
-                  ("MoneyType", c_ubyte),    #消耗货币类型
-                  ("MoneyNumber", c_int),    #消耗货币数量
-                  ("MoneyOriginal", c_int),    #原价
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ("IsBind", c_ubyte),    
-                  ]
-
-    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.GiftID = 0
-        self.BuyCountLimit = 0
-        self.ServerBuyCountLimit = 0
-        self.MoneyType = 0
-        self.MoneyNumber = 0
-        self.MoneyOriginal = 0
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFlashSaleGiftbag)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 17 限时抢购活动信息 //tagMCFlashSaleInfo:
-                                GiftID:%d,
-                                BuyCountLimit:%d,
-                                ServerBuyCountLimit:%d,
-                                MoneyType:%d,
-                                MoneyNumber:%d,
-                                MoneyOriginal:%d,
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.GiftID,
-                                self.BuyCountLimit,
-                                self.ServerBuyCountLimit,
-                                self.MoneyType,
-                                self.MoneyNumber,
-                                self.MoneyOriginal,
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCFlashSaleShop(Structure):
-    DayIndex = 0    #(BYTE DayIndex)// 活动第几天
-    TimeIndex = 0    #(BYTE TimeIndex)// 第几个时间段
-    GiftbagCount = 0    #(BYTE GiftbagCount)// 商店礼包数
-    GiftbagInfo = list()    #(vector<tagMCFlashSaleGiftbag> GiftbagInfo)// 礼包信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.DayIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.TimeIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GiftbagCount):
-            temGiftbagInfo = tagMCFlashSaleGiftbag()
-            _pos = temGiftbagInfo.ReadData(_lpData, _pos)
-            self.GiftbagInfo.append(temGiftbagInfo)
-        return _pos
-
-    def Clear(self):
-        self.DayIndex = 0
-        self.TimeIndex = 0
-        self.GiftbagCount = 0
-        self.GiftbagInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        length += 1
-        for i in range(self.GiftbagCount):
-            length += self.GiftbagInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.DayIndex)
-        data = CommFunc.WriteBYTE(data, self.TimeIndex)
-        data = CommFunc.WriteBYTE(data, self.GiftbagCount)
-        for i in range(self.GiftbagCount):
-            data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                DayIndex:%d,
-                                TimeIndex:%d,
-                                GiftbagCount:%d,
-                                GiftbagInfo:%s
-                                '''\
-                                %(
-                                self.DayIndex,
-                                self.TimeIndex,
-                                self.GiftbagCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFlashSaleTime(Structure):
-    StartTime = ""    #(char StartTime[5])// 开始时间 H:M
-    EndtTime = ""    #(char EndtTime[5])// 结束时间 H:M
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        return _pos
-
-    def Clear(self):
-        self.StartTime = ""
-        self.EndtTime = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 5
-        length += 5
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, 5, self.StartTime)
-        data = CommFunc.WriteString(data, 5, self.EndtTime)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                StartTime:%s,
-                                EndtTime:%s
-                                '''\
-                                %(
-                                self.StartTime,
-                                self.EndtTime
-                                )
-        return DumpString
-
-
-class  tagMCFlashSaleInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)//活动编号
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
-    ActivityTimeCount = 0    #(BYTE ActivityTimeCount)
-    ActivityTime = list()    #(vector<tagMCFlashSaleTime> ActivityTime)//活动时间
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    ShopCount = 0    #(BYTE ShopCount)// 商店数
-    ShopInfo = list()    #(vector<tagMCFlashSaleShop> ShopInfo)// 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店;
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x17
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ActivityTimeCount):
-            temActivityTime = tagMCFlashSaleTime()
-            _pos = temActivityTime.ReadData(_lpData, _pos)
-            self.ActivityTime.append(temActivityTime)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ShopCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ShopCount):
-            temShopInfo = tagMCFlashSaleShop()
-            _pos = temShopInfo.ReadData(_lpData, _pos)
-            self.ShopInfo.append(temShopInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x17
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.AdvanceMinutes = 0
-        self.ActivityTimeCount = 0
-        self.ActivityTime = list()
-        self.IsDayReset = 0
-        self.LimitLV = 0
-        self.ShopCount = 0
-        self.ShopInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        for i in range(self.ActivityTimeCount):
-            length += self.ActivityTime[i].GetLength()
-        length += 1
-        length += 2
-        length += 1
-        for i in range(self.ShopCount):
-            length += self.ShopInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
-        data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
-        for i in range(self.ActivityTimeCount):
-            data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.ShopCount)
-        for i in range(self.ShopCount):
-            data = CommFunc.WriteString(data, self.ShopInfo[i].GetLength(), self.ShopInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                AdvanceMinutes:%d,
-                                ActivityTimeCount:%d,
-                                ActivityTime:%s,
-                                IsDayReset:%d,
-                                LimitLV:%d,
-                                ShopCount:%d,
-                                ShopInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.AdvanceMinutes,
-                                self.ActivityTimeCount,
-                                "...",
-                                self.IsDayReset,
-                                self.LimitLV,
-                                self.ShopCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFlashSaleInfo=tagMCFlashSaleInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleInfo.Head.Cmd,m_NAtagMCFlashSaleInfo.Head.SubCmd))] = m_NAtagMCFlashSaleInfo
-
-
-#------------------------------------------------------
-# AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
-
-class  tagMCLuckyTreasureItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    # 物品ID
-                  ("ItemCnt", c_ushort),    # 物品数量
-                  ("IsBind", c_ubyte),    # 是否绑定
-                  ]
-
-    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.ItemID = 0
-        self.ItemCnt = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCLuckyTreasureItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo:
-                                ItemID:%d,
-                                ItemCnt:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCnt,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCLuckyTreasureInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    LuckyPoint = 0    #(WORD LuckyPoint)// 总幸运值
-    Count = 0    #(WORD Count)// 物品数
-    ItemList = list()    #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x1F
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.Count):
-            temItemList = tagMCLuckyTreasureItem()
-            _pos = temItemList.ReadData(_lpData, _pos)
-            self.ItemList.append(temItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x1F
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.ResetType = 0
-        self.LimitLV = 0
-        self.LuckyPoint = 0
-        self.Count = 0
-        self.ItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 1
-        length += 2
-        length += 2
-        length += 2
-        for i in range(self.Count):
-            length += self.ItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteWORD(data, self.LuckyPoint)
-        data = CommFunc.WriteWORD(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                ResetType:%d,
-                                LimitLV:%d,
-                                LuckyPoint:%d,
-                                Count:%d,
-                                ItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.ResetType,
-                                self.LimitLV,
-                                self.LuckyPoint,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo
-
-
-#------------------------------------------------------
-# AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
-
-class  tagMCLuckyTreasureResultInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("LuckyPoint", c_ushort),    # 当前幸运点
-                  ("HasFree", c_ubyte),    # 是否免费过
-                  ("ItemID", c_int),    # 物品ID
-                  ("ItemCnt", c_ushort),    #物品数量
-                  ("IsBind", c_ubyte),    # 是否绑定
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x1E
-        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 = 0xAA
-        self.SubCmd = 0x1E
-        self.LuckyPoint = 0
-        self.HasFree = 0
-        self.ItemID = 0
-        self.ItemCnt = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCLuckyTreasureResultInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                LuckyPoint:%d,
-                                HasFree:%d,
-                                ItemID:%d,
-                                ItemCnt:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.LuckyPoint,
-                                self.HasFree,
-                                self.ItemID,
-                                self.ItemCnt,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo
-
-
-#------------------------------------------------------
-# AA 23 新仙界盛典全民来嗨玩家信息 #tagMCNewAllPeoplePartyInfo
-
-class  tagMCNewAllPeoplePartyCount(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ActID", c_int),    #活动ID
-                  ("CurTimes", c_ushort),    #已完成次数
-                  ]
-
-    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.ActID = 0
-        self.CurTimes = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCNewAllPeoplePartyCount)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 23 新仙界盛典全民来嗨玩家信息 //tagMCNewAllPeoplePartyInfo:
-                                ActID:%d,
-                                CurTimes:%d
-                                '''\
-                                %(
-                                self.ActID,
-                                self.CurTimes
-                                )
-        return DumpString
-
-
-class  tagMCNewAllPeoplePartyInfo(Structure):
-    Head = tagHead()
-    CurPoint = 0    #(DWORD CurPoint)//当前总点数
-    AwardRecord = 0    #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
-    Count = 0    #(BYTE Count)
-    BuyCountList = list()    #(vector<tagMCNewAllPeoplePartyCount> BuyCountList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x23
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.Count):
-            temBuyCountList = tagMCNewAllPeoplePartyCount()
-            _pos = temBuyCountList.ReadData(_lpData, _pos)
-            self.BuyCountList.append(temBuyCountList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x23
-        self.CurPoint = 0
-        self.AwardRecord = 0
-        self.Count = 0
-        self.BuyCountList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.Count):
-            length += self.BuyCountList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteDWORD(data, self.CurPoint)
-        data = CommFunc.WriteDWORD(data, self.AwardRecord)
-        data = CommFunc.WriteBYTE(data, self.Count)
-        for i in range(self.Count):
-            data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                CurPoint:%d,
-                                AwardRecord:%d,
-                                Count:%d,
-                                BuyCountList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.CurPoint,
-                                self.AwardRecord,
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCNewAllPeoplePartyInfo=tagMCNewAllPeoplePartyInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewAllPeoplePartyInfo.Head.Cmd,m_NAtagMCNewAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCNewAllPeoplePartyInfo
-
-
-#------------------------------------------------------
-# AA 22 新仙界盛典充值大礼 #tagMCNewXJSDRecharge
-
-class  tagMCNewXJSDRecharge(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("State", c_ubyte),    #0-不可领 1-可领 2-已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x22
-        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 = 0xAA
-        self.SubCmd = 0x22
-        self.State = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCNewXJSDRecharge)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 22 新仙界盛典充值大礼 //tagMCNewXJSDRecharge:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                State:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.State
-                                )
-        return DumpString
-
-
-m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
-
-
-#------------------------------------------------------
-# AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
-
-class  tagMCSpringSaleItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("ItemCount", c_ushort),    
-                  ("IsBind", c_ubyte),    
-                  ("IsMainItem", c_ubyte),    #是否标的物
-                  ]
-
-    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.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        self.IsMainItem = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCSpringSaleItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 11 限时特惠活动信息 //tagMCSpringSaleInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d,
-                                IsMainItem:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind,
-                                self.IsMainItem
-                                )
-        return DumpString
-
-
-class  tagMCSpringSaleGiftbag(Structure):
-    GiftID = 0    #(DWORD GiftID)//商城表的物品ID
-    BuyCountLimit = 0    #(BYTE BuyCountLimit)//限购数
-    MoneyType = 0    #(BYTE MoneyType)//消耗货币类型
-    MoneyNumber = 0    #(DWORD MoneyNumber)//消耗货币数量
-    MoneyOriginal = 0    #(DWORD MoneyOriginal)//原价
-    GiftItemCount = 0    #(BYTE GiftItemCount)// 礼包物品数
-    ItemInfo = list()    #(vector<tagMCSpringSaleItem> ItemInfo)// 物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.MoneyNumber,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.MoneyOriginal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GiftItemCount):
-            temItemInfo = tagMCSpringSaleItem()
-            _pos = temItemInfo.ReadData(_lpData, _pos)
-            self.ItemInfo.append(temItemInfo)
-        return _pos
-
-    def Clear(self):
-        self.GiftID = 0
-        self.BuyCountLimit = 0
-        self.MoneyType = 0
-        self.MoneyNumber = 0
-        self.MoneyOriginal = 0
-        self.GiftItemCount = 0
-        self.ItemInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 1
-        length += 1
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.GiftItemCount):
-            length += self.ItemInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.GiftID)
-        data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
-        data = CommFunc.WriteBYTE(data, self.MoneyType)
-        data = CommFunc.WriteDWORD(data, self.MoneyNumber)
-        data = CommFunc.WriteDWORD(data, self.MoneyOriginal)
-        data = CommFunc.WriteBYTE(data, self.GiftItemCount)
-        for i in range(self.GiftItemCount):
-            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                GiftID:%d,
-                                BuyCountLimit:%d,
-                                MoneyType:%d,
-                                MoneyNumber:%d,
-                                MoneyOriginal:%d,
-                                GiftItemCount:%d,
-                                ItemInfo:%s
-                                '''\
-                                %(
-                                self.GiftID,
-                                self.BuyCountLimit,
-                                self.MoneyType,
-                                self.MoneyNumber,
-                                self.MoneyOriginal,
-                                self.GiftItemCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCSpringSaleShop(Structure):
-    GiftbagCount = 0    #(BYTE GiftbagCount)// 商店礼包数
-    GiftbagInfo = list()    #(vector<tagMCSpringSaleGiftbag> GiftbagInfo)// 礼包信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.GiftbagCount):
-            temGiftbagInfo = tagMCSpringSaleGiftbag()
-            _pos = temGiftbagInfo.ReadData(_lpData, _pos)
-            self.GiftbagInfo.append(temGiftbagInfo)
-        return _pos
-
-    def Clear(self):
-        self.GiftbagCount = 0
-        self.GiftbagInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        for i in range(self.GiftbagCount):
-            length += self.GiftbagInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.GiftbagCount)
-        for i in range(self.GiftbagCount):
-            data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                GiftbagCount:%d,
-                                GiftbagInfo:%s
-                                '''\
-                                %(
-                                self.GiftbagCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCSpringSaleTime(Structure):
-    StartTime = ""    #(char StartTime[5])// 开始时间 H:M
-    EndtTime = ""    #(char EndtTime[5])// 结束时间 H:M
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        return _pos
-
-    def Clear(self):
-        self.StartTime = ""
-        self.EndtTime = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 5
-        length += 5
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, 5, self.StartTime)
-        data = CommFunc.WriteString(data, 5, self.EndtTime)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                StartTime:%s,
-                                EndtTime:%s
-                                '''\
-                                %(
-                                self.StartTime,
-                                self.EndtTime
-                                )
-        return DumpString
-
-
-class  tagMCSpringSaleInfo(Structure):
-    Head = tagHead()
-    ActNum = 0    #(BYTE ActNum)//活动编号
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
-    ActivityTimeCount = 0    #(BYTE ActivityTimeCount)
-    ActivityTime = list()    #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    ShopCount = 0    #(BYTE ShopCount)// 商店数
-    ShopInfo = list()    #(vector<tagMCSpringSaleShop> ShopInfo)// 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店;
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x11
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ActivityTimeCount):
-            temActivityTime = tagMCSpringSaleTime()
-            _pos = temActivityTime.ReadData(_lpData, _pos)
-            self.ActivityTime.append(temActivityTime)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ShopCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ShopCount):
-            temShopInfo = tagMCSpringSaleShop()
-            _pos = temShopInfo.ReadData(_lpData, _pos)
-            self.ShopInfo.append(temShopInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x11
-        self.ActNum = 0
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.AdvanceMinutes = 0
-        self.ActivityTimeCount = 0
-        self.ActivityTime = list()
-        self.IsDayReset = 0
-        self.LimitLV = 0
-        self.ShopCount = 0
-        self.ShopInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        for i in range(self.ActivityTimeCount):
-            length += self.ActivityTime[i].GetLength()
-        length += 1
-        length += 2
-        length += 1
-        for i in range(self.ShopCount):
-            length += self.ShopInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ActNum)
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
-        data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
-        for i in range(self.ActivityTimeCount):
-            data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.ShopCount)
-        for i in range(self.ShopCount):
-            data = CommFunc.WriteString(data, self.ShopInfo[i].GetLength(), self.ShopInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ActNum:%d,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                AdvanceMinutes:%d,
-                                ActivityTimeCount:%d,
-                                ActivityTime:%s,
-                                IsDayReset:%d,
-                                LimitLV:%d,
-                                ShopCount:%d,
-                                ShopInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ActNum,
-                                self.StartDate,
-                                self.EndtDate,
-                                self.AdvanceMinutes,
-                                self.ActivityTimeCount,
-                                "...",
-                                self.IsDayReset,
-                                self.LimitLV,
-                                self.ShopCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCSpringSaleInfo=tagMCSpringSaleInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSpringSaleInfo.Head.Cmd,m_NAtagMCSpringSaleInfo.Head.SubCmd))] = m_NAtagMCSpringSaleInfo
-
-
-#------------------------------------------------------
 # AA 16 通知超值礼包信息 #tagMCSuperGiftInfo
 
 class  tagMCSuperGiftInfo(Structure):
@@ -25594,70 +21869,6 @@
 
 m_NAtagMCTotalRechargePlayerInfo=tagMCTotalRechargePlayerInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTotalRechargePlayerInfo.Cmd,m_NAtagMCTotalRechargePlayerInfo.SubCmd))] = m_NAtagMCTotalRechargePlayerInfo
-
-
-#------------------------------------------------------
-# AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge
-
-class  tagMCXJSDRecharge(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("State", c_ubyte),    #0-不可领 1-可领 2-已领取
-                  ("CTGTotal", c_int),    #本次活动已累计充值,单位元
-                  ("FireworksBuyCount", c_ushort),    #已购买高级烟花数
-                  ("FirewordsScore", c_int),    #当前累计所有烟花总积分
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x14
-        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 = 0xAA
-        self.SubCmd = 0x14
-        self.State = 0
-        self.CTGTotal = 0
-        self.FireworksBuyCount = 0
-        self.FirewordsScore = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCXJSDRecharge)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                State:%d,
-                                CTGTotal:%d,
-                                FireworksBuyCount:%d,
-                                FirewordsScore:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.State,
-                                self.CTGTotal,
-                                self.FireworksBuyCount,
-                                self.FirewordsScore
-                                )
-        return DumpString
-
-
-m_NAtagMCXJSDRecharge=tagMCXJSDRecharge()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge
 
 
 #------------------------------------------------------
@@ -25778,233 +21989,6 @@
 
 m_NAtagGCCrossActEnd=tagGCCrossActEnd()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActEnd.Head.Cmd,m_NAtagGCCrossActEnd.Head.SubCmd))] = m_NAtagGCCrossActEnd
-
-
-#------------------------------------------------------
-# AC 06 多倍经验活动信息 #tagGCMultiExpRateInfo
-
-class  tagGCMultiExpRateTime(Structure):
-    StartTime = ""    #(char StartTime[5])// 开始时间 H:M
-    EndtTime = ""    #(char EndtTime[5])// 结束时间 H:M
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
-        return _pos
-
-    def Clear(self):
-        self.StartTime = ""
-        self.EndtTime = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 5
-        length += 5
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, 5, self.StartTime)
-        data = CommFunc.WriteString(data, 5, self.EndtTime)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                StartTime:%s,
-                                EndtTime:%s
-                                '''\
-                                %(
-                                self.StartTime,
-                                self.EndtTime
-                                )
-        return DumpString
-
-
-class  tagGCMultiExpRateInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    ActivityTimeCount = 0    #(BYTE ActivityTimeCount)
-    ActivityTime = list()    #(vector<tagGCMultiExpRateTime> ActivityTime)//活动时间
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    AddExpRate = 0    #(DWORD AddExpRate)// 增加的经验倍率,万分率
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x06
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ActivityTimeCount):
-            temActivityTime = tagGCMultiExpRateTime()
-            _pos = temActivityTime.ReadData(_lpData, _pos)
-            self.ActivityTime.append(temActivityTime)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.AddExpRate,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x06
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.ActivityTimeCount = 0
-        self.ActivityTime = list()
-        self.LimitLV = 0
-        self.AddExpRate = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 1
-        for i in range(self.ActivityTimeCount):
-            length += self.ActivityTime[i].GetLength()
-        length += 2
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
-        for i in range(self.ActivityTimeCount):
-            data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteDWORD(data, self.AddExpRate)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                ActivityTimeCount:%d,
-                                ActivityTime:%s,
-                                LimitLV:%d,
-                                AddExpRate:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.ActivityTimeCount,
-                                "...",
-                                self.LimitLV,
-                                self.AddExpRate
-                                )
-        return DumpString
-
-
-m_NAtagGCMultiExpRateInfo=tagGCMultiExpRateInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiExpRateInfo.Head.Cmd,m_NAtagGCMultiExpRateInfo.Head.SubCmd))] = m_NAtagGCMultiExpRateInfo
-
-
-#------------------------------------------------------
-# AC 0A 多倍修行点活动信息 #tagGCMultiRealmPointInfo
-
-class  tagGCMultiRealmPointInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    Multiple = 0    #(BYTE Multiple)// 倍数
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    LimitPoint = 0    #(DWORD LimitPoint)// 限制获得修行点
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x0A
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
-        self.Multiple,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.LimitPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAC
-        self.Head.SubCmd = 0x0A
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.Multiple = 0
-        self.LimitLV = 0
-        self.LimitPoint = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 1
-        length += 2
-        length += 4
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 10, self.StartDate)
-        data = CommFunc.WriteString(data, 10, self.EndtDate)
-        data = CommFunc.WriteBYTE(data, self.Multiple)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteDWORD(data, self.LimitPoint)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                Multiple:%d,
-                                LimitLV:%d,
-                                LimitPoint:%d
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.Multiple,
-                                self.LimitLV,
-                                self.LimitPoint
-                                )
-        return DumpString
-
-
-m_NAtagGCMultiRealmPointInfo=tagGCMultiRealmPointInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiRealmPointInfo.Head.Cmd,m_NAtagGCMultiRealmPointInfo.Head.SubCmd))] = m_NAtagGCMultiRealmPointInfo
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFreeGoods.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFreeGoods.py
deleted file mode 100644
index b8f115b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFreeGoods.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.ClearFreeGoods
-#
-# @todo:重置极品白拿
-# @author xdh
-# @date 2018-07-11
-# @version 1.0
-#
-# 详细描述: 重置极品白拿
-#
-#---------------------------------------------------------------------
-"""Version = 2018-07-11 11:30"""
-
-import PlayerControl
-import time
-import ChConfig
-import GameWorld
-import IpyGameDataPY
-import PlayerFreeGoods
-#---------------------------------------------------------------------
-#逻辑实现
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param list 参数列表 [npcID]
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, list):
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreeGoodsOpenTime, int(time.time()))
-    for i in xrange(IpyGameDataPY.IPY_Data().GetFreeGoodsCount()):
-        ipyData = IpyGameDataPY.IPY_Data().GetFreeGoodsByIndex(i)
-        goodsID = ipyData.GetID()
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreeGoodsBuyState % goodsID, 0)
-    
-    GameWorld.DebugAnswer(curPlayer, "重置极品白拿成功!")
-    PlayerFreeGoods.Sync_FreeGoodsInfo(curPlayer)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 1092cb9..6ae3f33 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1057,20 +1057,6 @@
                         ("DWORD", "UnlockValue", 0),
                         ),
 
-                "ActSpringSale":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("list", "StartTimeList", 0),
-                        ("list", "EndTimeList", 0),
-                        ("WORD", "AdvanceMinutes", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "IsDayReset", 0),
-                        ("dict", "ShopTypeList", 0),
-                        ("char", "MailKey", 0),
-                        ("list", "MailItemPrize", 0),
-                        ),
-
                 "DailyTask":(
                         ("WORD", "TaskID", 0),
                         ("BYTE", "TaskType", 1),
@@ -1286,60 +1272,6 @@
                         ("list", "AwardItemList", 0),
                         ),
 
-                "FreeGoods":(
-                        ("BYTE", "ID", 1),
-                        ("dict", "AwardItem", 0),
-                        ("WORD", "NeedMoney", 0),
-                        ("DWORD", "ReturnDays", 0),
-                        ),
-
-                "ActFlashGiftbag":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("list", "StartTimeList", 0),
-                        ("list", "EndTimeList", 0),
-                        ("WORD", "AdvanceMinutes", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "IsDayReset", 0),
-                        ("BYTE", "IsJueban", 0),
-                        ("dict", "GiftbagTypeList", 0),
-                        ("char", "MailKey", 0),
-                        ("list", "MailItemPrize", 0),
-                        ),
-
-                "FlashGiftbag":(
-                        ("DWORD", "GiftbagID", 1),
-                        ("WORD", "GiftbagType", 0),
-                        ("float", "OriginalRMB", 0),
-                        ("WORD", "BuyCountLimit", 0),
-                        ("list", "GiftItemList", 0),
-                        ("DWORD", "MainItemID", 0),
-                        ("char", "NotifyKey", 0),
-                        ),
-
-                "ActDailyGiftbag":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("WORD", "GiftbagType", 0),
-                        ),
-
-                "DailyGiftbag":(
-                        ("WORD", "GiftbagType", 1),
-                        ("DWORD", "GiftbagID", 1),
-                        ("WORD", "BuyCountLimit", 0),
-                        ("eval", "GiftItemList", 0),
-                        ("WORD", "Discount", 0),
-                        ),
-
-                "ActExpRate":(
-                        ("DWORD", "CfgID", 1),
-                        ("WORD", "LVLimit", 0),
-                        ("DWORD", "AddExpRate", 0),
-                        ),
-
                 "ActBuyOne":(
                         ("DWORD", "CfgID", 1),
                         ("char", "StartDate", 0),
@@ -1414,37 +1346,6 @@
                         ("list", "LayerWeightItemList", 0),
                         ),
 
-                "ActGodGift":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("BYTE", "IsDayReset", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "UseMoneyType", 0),
-                        ("list", "UseGoldList", 0),
-                        ("BYTE", "PrizeMoneyType", 0),
-                        ("list", "PrizeMoneyList", 0),
-                        ("BYTE", "ResetLimitTimes", 0),
-                        ("BYTE", "ResetCountMax", 0),
-                        ("dict", "TemplateIDInfo", 0),
-                        ),
-
-                "ActGodGiftAward":(
-                        ("DWORD", "TemplateID", 1),
-                        ("BYTE", "AwardLibType", 0),
-                        ("BYTE", "UnlockAwardLimitTimes", 0),
-                        ("BYTE", "ChooseItemCount", 0),
-                        ("dict", "LibItemInfo", 0),
-                        ("list", "NotifyItemNumList", 0),
-                        ),
-
-                "ActRealmPoint":(
-                        ("DWORD", "CfgID", 1),
-                        ("WORD", "Multiple", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("DWORD", "PointLimit", 0),
-                        ),
-
                 "TrialExchange":(
                         ("DWORD", "ID", 1),
                         ("list", "ExchangeItemIDList", 0),
@@ -1454,61 +1355,12 @@
                         ("DWORD", "CostItemCount", 0),
                         ),
 
-                "AllPeopleParty":(
-                        ("BYTE", "ID", 1),
-                        ("WORD", "TotalTimes", 0),
-                        ("WORD", "AddPoint", 0),
-                        ),
-
-                "AllPeoplePartyAward":(
-                        ("BYTE", "WorldLvNum", 1),
-                        ("DWORD", "Index", 1),
-                        ("DWORD", "NeedPoint", 0),
-                        ("dict", "Award", 0),
-                        ),
-
                 "MapEventPoint":(
                         ("DWORD", "MapID", 1),
                         ("DWORD", "NPCID", 1),
                         ("WORD", "LowLV", 0),
                         ("WORD", "HighestLV", 0),
                         ("DWORD", "Defense", 0),
-                        ),
-
-                "ActFlashSale":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("list", "StartTimeList", 0),
-                        ("list", "EndTimeList", 0),
-                        ("WORD", "AdvanceMinutes", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "IsDayReset", 0),
-                        ("dict", "ShopTypeList", 0),
-                        ("char", "MailKey", 0),
-                        ("list", "MailItemPrize", 0),
-                        ),
-
-                "ActWishingWell":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("BYTE", "IsDayReset", 0),
-                        ("BYTE", "ResetType", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "TemplateID", 0),
-                        ),
-
-                "WishingWell":(
-                        ("BYTE", "TemplateID", 1),
-                        ("BYTE", "IsFree", 0),
-                        ("list", "WorldLVLimit", 0),
-                        ("DWORD", "ItemID", 0),
-                        ("WORD", "ItemCnt", 0),
-                        ("BYTE", "IsBind", 0),
-                        ("DWORD", "Weight", 0),
-                        ("DWORD", "Mark", 0),
-                        ("BYTE", "Rare", 0),
                         ),
 
                 "EmojiPack":(
@@ -1536,14 +1388,6 @@
                         ("char", "NotifyKey", 0),
                         ),
 
-                "ActGrowupBuy":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("list", "CTGIDGroupList", 0),
-                        ),
-
                 "ActManyDayRecharge":(
                         ("DWORD", "CfgID", 1),
                         ("char", "StartDate", 0),
@@ -1559,24 +1403,6 @@
                         ("BYTE", "AwardIndex", 0),
                         ("dict", "AwardItemInfo", 0),
                         ("char", "NotifyKey", 0),
-                        ),
-
-                "ActTurntable":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "IsDayReset", 0),
-                        ("BYTE", "CTGTypeEffValue", 0),
-                        ("list", "CTGPrizeList", 0),
-                        ("BYTE", "UseMoneyType", 0),
-                        ("list", "UseMoneyPrizeList", 0),
-                        ("list", "LibChooseCountList", 0),
-                        ("list", "SuperItemLimitRule", 0),
-                        ("dict", "CommItemLib", 0),
-                        ("dict", "GoodItemLib", 0),
-                        ("dict", "SuperItemLib", 0),
-                        ("char", "WorldNotifyKey", 0),
                         ),
 
                 "ActSingleRecharge":(
@@ -1671,15 +1497,6 @@
                         ("WORD", "PosY", 0),
                         ),
 
-                "ActYunshi":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "ResetType", 0),
-                        ("DWORD", "TreasureType", 0),
-                        ),
-
                 "ActLunhuidian":(
                         ("DWORD", "CfgID", 1),
                         ("list", "PlatformList", 0),
@@ -1758,38 +1575,6 @@
                         ("BYTE", "DayNum", 0),
                         ("list", "LoginAwardItemList", 0),
                         ("list", "LoginAwardItemListEx", 0),
-                        ),
-
-                "NewAllPeopleParty":(
-                        ("BYTE", "ID", 1),
-                        ("WORD", "TotalTimes", 0),
-                        ("WORD", "AddPoint", 0),
-                        ),
-
-                "NewAllPeoplePartyAward":(
-                        ("BYTE", "WorldLvNum", 1),
-                        ("DWORD", "Index", 1),
-                        ("DWORD", "NeedPoint", 0),
-                        ("dict", "Award", 0),
-                        ),
-
-                "ActLuckyTreasure":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("BYTE", "ResetType", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "TemplateID", 0),
-                        ("WORD", "LuckyPoint", 0),
-                        ),
-
-                "LuckyTreasureTemplate":(
-                        ("BYTE", "TemplateID", 1),
-                        ("list", "WorldLVLimit", 0),
-                        ("DWORD", "ItemID", 0),
-                        ("WORD", "ItemCnt", 0),
-                        ("BYTE", "IsBind", 0),
-                        ("DWORD", "Weight", 0),
                         ),
 
                 "EquipPlaceIndexMap":(
@@ -3530,25 +3315,6 @@
     def GetUnlockType(self): return self.attrTuple[10] # 解锁类型 BYTE
     def GetUnlockValue(self): return self.attrTuple[11] # 解锁所需值 DWORD
 
-# 限时特惠表
-class IPY_ActSpringSale():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetStartTimeList(self): return self.attrTuple[3] # 开启时间列表, 支持多个时段 list
-    def GetEndTimeList(self): return self.attrTuple[4] # 结束时间列表, 支持多个时段 list
-    def GetAdvanceMinutes(self): return self.attrTuple[5] # 前端提前X分钟展示活动 WORD
-    def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD
-    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE
-    def GetShopTypeList(self): return self.attrTuple[8] # 商店类型列表 dict
-    def GetMailKey(self): return self.attrTuple[9] # 活动更新时发送邮件key char
-    def GetMailItemPrize(self): return self.attrTuple[10] # 活动更新时发送邮件奖励物品 list
-
 # 每日任务表
 class IPY_DailyTask():
     
@@ -3854,90 +3620,6 @@
     def GetAwardIndex(self): return self.attrTuple[2] # 奖励记录索引 0~30 BYTE
     def GetAwardItemList(self): return self.attrTuple[3] # 奖励物品信息列表 [[物品ID,个数,是否拍品],...] list
 
-# 极品白拿表
-class IPY_FreeGoods():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetID(self): return self.attrTuple[0] # ID BYTE
-    def GetAwardItem(self): return self.attrTuple[1] # 奖励 {"职业":[[物品ID,个数],...], ...} dict
-    def GetNeedMoney(self): return self.attrTuple[2] # 需要仙玉 WORD
-    def GetReturnDays(self): return self.attrTuple[3] # 返还所需天 DWORD
-
-# 限时礼包活动表
-class IPY_ActFlashGiftbag():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetStartTimeList(self): return self.attrTuple[3] # 开启时间列表, 支持多个时段 list
-    def GetEndTimeList(self): return self.attrTuple[4] # 结束时间列表, 支持多个时段 list
-    def GetAdvanceMinutes(self): return self.attrTuple[5] # 前端提前X分钟展示活动 WORD
-    def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD
-    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE
-    def GetIsJueban(self): return self.attrTuple[8] # 是否绝版礼包 BYTE
-    def GetGiftbagTypeList(self): return self.attrTuple[9] # 礼包类型列表 dict
-    def GetMailKey(self): return self.attrTuple[10] # 活动更新时发送邮件key char
-    def GetMailItemPrize(self): return self.attrTuple[11] # 活动更新时发送邮件奖励物品 list
-
-# 限时礼包模板表
-class IPY_FlashGiftbag():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetGiftbagID(self): return self.attrTuple[0] # 礼包编号 DWORD
-    def GetGiftbagType(self): return self.attrTuple[1] # 礼包类型 WORD
-    def GetOriginalRMB(self): return self.attrTuple[2] # 原价(RMB) float
-    def GetBuyCountLimit(self): return self.attrTuple[3] # 限购次数,0不限购 WORD
-    def GetGiftItemList(self): return self.attrTuple[4] # 礼包物品信息列表 [(物品ID,个数,是否绑定),...] list
-    def GetMainItemID(self): return self.attrTuple[5] # 标的物品ID DWORD
-    def GetNotifyKey(self): return self.attrTuple[6] # 全服广播key,默认两个参数(玩家名, 档位额度) char
-
-# 每日礼包活动表
-class IPY_ActDailyGiftbag():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD
-    def GetGiftbagType(self): return self.attrTuple[4] # 礼包模板类型 WORD
-
-# 每日礼包模板表
-class IPY_DailyGiftbag():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetGiftbagType(self): return self.attrTuple[0] # 礼包模板类型 WORD
-    def GetGiftbagID(self): return self.attrTuple[1] # 礼包编号 DWORD
-    def GetBuyCountLimit(self): return self.attrTuple[2] # 限购次数,0不限购 WORD
-    def GetGiftItemList(self): return self.attrTuple[3] # 礼包物品信息列表 [(物品ID,个数,是否绑定),...] eval
-    def GetDiscount(self): return self.attrTuple[4] # 折扣百分比 WORD
-
-# 双倍经验活动表
-class IPY_ActExpRate():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetLVLimit(self): return self.attrTuple[1] # 限制等级 WORD
-    def GetAddExpRate(self): return self.attrTuple[2] # 经验倍率加成,万分率 DWORD
-
 # 买一送多活动表
 class IPY_ActBuyOne():
     
@@ -4052,52 +3734,6 @@
     def GetLayerAwardItemList(self): return self.attrTuple[5] # 通关该层固定奖励 [[物品ID,个数,是否拍品], ...] list
     def GetLayerWeightItemList(self): return self.attrTuple[6] # 通关该层额外随机奖励 [[权重,物品ID,个数], ...] list
 
-# 天帝礼包活动时间表
-class IPY_ActGodGift():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetIsDayReset(self): return self.attrTuple[3] # 是否每天重置 BYTE
-    def GetLVLimit(self): return self.attrTuple[4] # 限制等级 WORD
-    def GetUseMoneyType(self): return self.attrTuple[5] # 消耗货币类型 BYTE
-    def GetUseGoldList(self): return self.attrTuple[6] # 抽奖消耗货币列表 list
-    def GetPrizeMoneyType(self): return self.attrTuple[7] # 奖励货币类型 BYTE
-    def GetPrizeMoneyList(self): return self.attrTuple[8] # 奖励货币列表 list
-    def GetResetLimitTimes(self): return self.attrTuple[9] # 至少抽几次可重置 BYTE
-    def GetResetCountMax(self): return self.attrTuple[10] # 可重置次数 BYTE
-    def GetTemplateIDInfo(self): return self.attrTuple[11] # 奖池模板信息 {(世界等级A,B):[模板编号列表, ...], ...} dict
-
-# 天帝礼包奖池表
-class IPY_ActGodGiftAward():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetTemplateID(self): return self.attrTuple[0] # 奖池模板编号 DWORD
-    def GetAwardLibType(self): return self.attrTuple[1] # 奖励库类型 BYTE
-    def GetUnlockAwardLimitTimes(self): return self.attrTuple[2] # 抽X次后可产出本库 BYTE
-    def GetChooseItemCount(self): return self.attrTuple[3] # 选择个数 BYTE
-    def GetLibItemInfo(self): return self.attrTuple[4] # 物品编号对应物品信息 {物品编号:[物品ID,个数,是否拍品,可选次数], ...}  0不限次数 dict
-    def GetNotifyItemNumList(self): return self.attrTuple[5] # 需要广播的编号列表 list
-
-# 多倍修行点活动时间表
-class IPY_ActRealmPoint():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetMultiple(self): return self.attrTuple[1] # 倍数 WORD
-    def GetLVLimit(self): return self.attrTuple[2] # 限制等级 WORD
-    def GetPointLimit(self): return self.attrTuple[3] # 限制额外修行点 DWORD
-
 # 宗门试炼兑换表
 class IPY_TrialExchange():
     
@@ -4112,29 +3748,6 @@
     def GetCostItemID(self): return self.attrTuple[4] # 消耗物品ID DWORD
     def GetCostItemCount(self): return self.attrTuple[5] # 消耗物品个数 DWORD
 
-# 仙界盛典-全民来嗨表
-class IPY_AllPeopleParty():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetID(self): return self.attrTuple[0] # ID BYTE
-    def GetTotalTimes(self): return self.attrTuple[1] # 总次数 WORD
-    def GetAddPoint(self): return self.attrTuple[2] # 每完成次数获得嗨点 WORD
-
-# 仙界盛典-全民来嗨奖励表
-class IPY_AllPeoplePartyAward():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetWorldLvNum(self): return self.attrTuple[0] # 世界等级档 BYTE
-    def GetIndex(self): return self.attrTuple[1] # 索引 DWORD
-    def GetNeedPoint(self): return self.attrTuple[2] # 需要点数 DWORD
-    def GetAward(self): return self.attrTuple[3] # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...} dict
-
 # 地图NPC配置表-挂机点
 class IPY_MapEventPoint():
     
@@ -4147,57 +3760,6 @@
     def GetLowLV(self): return self.attrTuple[2] #  推荐最低等级 WORD
     def GetHighestLV(self): return self.attrTuple[3] #  推荐最高等级 WORD
     def GetDefense(self): return self.attrTuple[4] #  推荐防御 DWORD
-
-# 限时抢购表
-class IPY_ActFlashSale():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetStartTimeList(self): return self.attrTuple[3] # 开启时间列表, 支持多个时段 list
-    def GetEndTimeList(self): return self.attrTuple[4] # 结束时间列表, 支持多个时段 list
-    def GetAdvanceMinutes(self): return self.attrTuple[5] # 前端提前X分钟展示活动 WORD
-    def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD
-    def GetIsDayReset(self): return self.attrTuple[7] # 是否每天重置 BYTE
-    def GetShopTypeList(self): return self.attrTuple[8] # 商店类型列表 dict
-    def GetMailKey(self): return self.attrTuple[9] # 活动更新时发送邮件key char
-    def GetMailItemPrize(self): return self.attrTuple[10] # 活动更新时发送邮件奖励物品 list
-
-# 许愿池活动时间表
-class IPY_ActWishingWell():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetIsDayReset(self): return self.attrTuple[3] # 是否每天重置 BYTE
-    def GetResetType(self): return self.attrTuple[4] # 重置类型,0-0点重置;1-5点重置 BYTE
-    def GetLVLimit(self): return self.attrTuple[5] # 限制等级 WORD
-    def GetTemplateID(self): return self.attrTuple[6] # 模板编号 BYTE
-
-# 许愿池库模板表
-class IPY_WishingWell():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
-    def GetIsFree(self): return self.attrTuple[1] # 是否免费库 BYTE
-    def GetWorldLVLimit(self): return self.attrTuple[2] # 世界等级范围 list
-    def GetItemID(self): return self.attrTuple[3] # 物品ID DWORD
-    def GetItemCnt(self): return self.attrTuple[4] # 物品数量 WORD
-    def GetIsBind(self): return self.attrTuple[5] # 是否绑定 BYTE
-    def GetWeight(self): return self.attrTuple[6] # 权重 DWORD
-    def GetMark(self): return self.attrTuple[7] # 排序用标识 DWORD
-    def GetRare(self): return self.attrTuple[8] # 珍稀值 BYTE
 
 # 表情包表
 class IPY_EmojiPack():
@@ -4239,19 +3801,6 @@
     def GetAwardItem(self): return self.attrTuple[3] # 返利物品信息列表 {职业:[(物品ID,个数,是否绑定),...]} dict
     def GetNotifyKey(self): return self.attrTuple[4] # 全服广播key,默认两个参数(玩家名, 档位额度) char
 
-# 成长必买活动表
-class IPY_ActGrowupBuy():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD
-    def GetCTGIDGroupList(self): return self.attrTuple[4] # 充值编号组列表 [[ctgID, ...], ...] list
-
 # 多日连充活动表
 class IPY_ActManyDayRecharge():
     
@@ -4278,29 +3827,6 @@
     def GetAwardIndex(self): return self.attrTuple[3] # 奖励索引 BYTE
     def GetAwardItemInfo(self): return self.attrTuple[4] # 奖励物品信息  {世界等级范围:[[物品ID,个数,是否拍品], ...]} dict
     def GetNotifyKey(self): return self.attrTuple[5] # 广播 char
-
-# 转盘活动表
-class IPY_ActTurntable():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD
-    def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE
-    def GetCTGTypeEffValue(self): return self.attrTuple[5] # 充值有效类型值 BYTE
-    def GetCTGPrizeList(self): return self.attrTuple[6] # 累计充值奖励次数 list
-    def GetUseMoneyType(self): return self.attrTuple[7] # 累计消费货币类型 BYTE
-    def GetUseMoneyPrizeList(self): return self.attrTuple[8] # 累计消费X货币奖励次数 list
-    def GetLibChooseCountList(self): return self.attrTuple[9] # 各道具库选择个数 list
-    def GetSuperItemLimitRule(self): return self.attrTuple[10] # 终极库产出万分率|至少X次后可产出 list
-    def GetCommItemLib(self): return self.attrTuple[11] # 普通道具库 {(世界等级A,世界等级B):[[可选物品ID, 个数, 是否拍品], ...], ...} dict
-    def GetGoodItemLib(self): return self.attrTuple[12] # 极品道具库 {(世界等级A,世界等级B):[[可选物品ID, 个数, 是否拍品], ...], ...} dict
-    def GetSuperItemLib(self): return self.attrTuple[13] # 超级道具库 {(世界等级A,世界等级B):[[可选物品ID, 个数, 是否拍品], ...], ...} dict
-    def GetWorldNotifyKey(self): return self.attrTuple[14] # 好物品全服广播mark,极品及超级道具默认全服广播 char
 
 # 单笔累充活动表
 class IPY_ActSingleRecharge():
@@ -4454,20 +3980,6 @@
     def GetPosX(self): return self.attrTuple[4] # 坐标X WORD
     def GetPosY(self): return self.attrTuple[5] # 坐标Y WORD
 
-# 运势活动时间表
-class IPY_ActYunshi():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD
-    def GetResetType(self): return self.attrTuple[4] # 重置类型,0-0点重置;1-5点重置 BYTE
-    def GetTreasureType(self): return self.attrTuple[5] # 商城类型 DWORD
-
 # 轮回殿活动时间表
 class IPY_ActLunhuidian():
     
@@ -4582,58 +4094,6 @@
     def GetDayNum(self): return self.attrTuple[1] # 第X天从1开始 BYTE
     def GetLoginAwardItemList(self): return self.attrTuple[2] # 奖励列表[[物品ID,个数,是否拍品], ...] list
     def GetLoginAwardItemListEx(self): return self.attrTuple[3] # 扩展奖励列表[[物品ID,个数,是否拍品], ...] list
-
-# 新仙界盛典-全民来嗨表
-class IPY_NewAllPeopleParty():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetID(self): return self.attrTuple[0] # ID BYTE
-    def GetTotalTimes(self): return self.attrTuple[1] # 总次数 WORD
-    def GetAddPoint(self): return self.attrTuple[2] # 每完成次数获得嗨点 WORD
-
-# 新仙界盛典-全民来嗨奖励表
-class IPY_NewAllPeoplePartyAward():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetWorldLvNum(self): return self.attrTuple[0] # 世界等级档 BYTE
-    def GetIndex(self): return self.attrTuple[1] # 索引 DWORD
-    def GetNeedPoint(self): return self.attrTuple[2] # 需要点数 DWORD
-    def GetAward(self): return self.attrTuple[3] # 奖励 {"职业":[[物品ID,个数,是否绑定],...], ...} dict
-
-# 幸运鉴宝活动时间表
-class IPY_ActLuckyTreasure():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetCfgID(self): return self.attrTuple[0] # 配置ID DWORD
-    def GetStartDate(self): return self.attrTuple[1] # 开启日期 char
-    def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
-    def GetResetType(self): return self.attrTuple[3] # 重置类型,0-0点重置;1-5点重置 BYTE
-    def GetLVLimit(self): return self.attrTuple[4] # 限制等级 WORD
-    def GetTemplateID(self): return self.attrTuple[5] # 模板编号 BYTE
-    def GetLuckyPoint(self): return self.attrTuple[6] # 总幸运值 WORD
-
-# 幸运鉴宝库模板表
-class IPY_LuckyTreasureTemplate():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
-    def GetWorldLVLimit(self): return self.attrTuple[1] # 世界等级范围 list
-    def GetItemID(self): return self.attrTuple[2] # 物品ID DWORD
-    def GetItemCnt(self): return self.attrTuple[3] # 物品数量 WORD
-    def GetIsBind(self): return self.attrTuple[4] # 是否绑定 BYTE
-    def GetWeight(self): return self.attrTuple[5] # 权重 DWORD
 
 # 装备位背包索引映射表
 class IPY_EquipPlaceIndexMap():
@@ -5175,7 +4635,6 @@
         self.__LoadFileData("VIPAward", onlyCheck)
         self.__LoadFileData("VipPrivilege", onlyCheck)
         self.__LoadFileData("Store", onlyCheck)
-        self.__LoadFileData("ActSpringSale", onlyCheck)
         self.__LoadFileData("DailyTask", onlyCheck)
         self.__LoadFileData("DailyLivenessReward", onlyCheck)
         self.__LoadFileData("BOSSInfo", onlyCheck)
@@ -5194,12 +4653,6 @@
         self.__LoadFileData("TreasureHouse", onlyCheck)
         self.__LoadFileData("TreasureItemLib", onlyCheck)
         self.__LoadFileData("TreasureCntAward", onlyCheck)
-        self.__LoadFileData("FreeGoods", onlyCheck)
-        self.__LoadFileData("ActFlashGiftbag", onlyCheck)
-        self.__LoadFileData("FlashGiftbag", onlyCheck)
-        self.__LoadFileData("ActDailyGiftbag", onlyCheck)
-        self.__LoadFileData("DailyGiftbag", onlyCheck)
-        self.__LoadFileData("ActExpRate", onlyCheck)
         self.__LoadFileData("ActBuyOne", onlyCheck)
         self.__LoadFileData("ActBuyOneTemplate", onlyCheck)
         self.__LoadFileData("ActFamilyCTGAssist", onlyCheck)
@@ -5208,23 +4661,13 @@
         self.__LoadFileData("CollectWordsExchange", onlyCheck)
         self.__LoadFileData("ActLianqiBillTemp", onlyCheck)
         self.__LoadFileData("CrossActFamilyGCZSQ", onlyCheck)
-        self.__LoadFileData("ActGodGift", onlyCheck)
-        self.__LoadFileData("ActGodGiftAward", onlyCheck)
-        self.__LoadFileData("ActRealmPoint", onlyCheck)
         self.__LoadFileData("TrialExchange", onlyCheck)
-        self.__LoadFileData("AllPeopleParty", onlyCheck)
-        self.__LoadFileData("AllPeoplePartyAward", onlyCheck)
         self.__LoadFileData("MapEventPoint", onlyCheck)
-        self.__LoadFileData("ActFlashSale", onlyCheck)
-        self.__LoadFileData("ActWishingWell", onlyCheck)
-        self.__LoadFileData("WishingWell", onlyCheck)
         self.__LoadFileData("EmojiPack", onlyCheck)
         self.__LoadFileData("ActTotalRecharge", onlyCheck)
         self.__LoadFileData("TotalRechargeTemplate", onlyCheck)
-        self.__LoadFileData("ActGrowupBuy", onlyCheck)
         self.__LoadFileData("ActManyDayRecharge", onlyCheck)
         self.__LoadFileData("ActManyDayRechargeAward", onlyCheck)
-        self.__LoadFileData("ActTurntable", onlyCheck)
         self.__LoadFileData("ActSingleRecharge", onlyCheck)
         self.__LoadFileData("ActSingleRechargeAward", onlyCheck)
         self.__LoadFileData("IceLodeStarAward", onlyCheck)
@@ -5237,7 +4680,6 @@
         self.__LoadFileData("CrossPenglaiZoneMap", onlyCheck)
         self.__LoadFileData("CrossDemonLandZoneMap", onlyCheck)
         self.__LoadFileData("CrossFamilyFlagwarZoneMap", onlyCheck)
-        self.__LoadFileData("ActYunshi", onlyCheck)
         self.__LoadFileData("ActLunhuidian", onlyCheck)
         self.__LoadFileData("ActLunhuidianAward", onlyCheck)
         self.__LoadFileData("ActBuyCountGift", onlyCheck)
@@ -5245,10 +4687,6 @@
         self.__LoadFileData("ActTaskTemp", onlyCheck)
         self.__LoadFileData("ActLoginNew", onlyCheck)
         self.__LoadFileData("ActLoginNewAward", onlyCheck)
-        self.__LoadFileData("NewAllPeopleParty", onlyCheck)
-        self.__LoadFileData("NewAllPeoplePartyAward", onlyCheck)
-        self.__LoadFileData("ActLuckyTreasure", onlyCheck)
-        self.__LoadFileData("LuckyTreasureTemplate", onlyCheck)
         self.__LoadFileData("EquipPlaceIndexMap", onlyCheck)
         self.__LoadFileData("EquipShenAttr", onlyCheck)
         self.__LoadFileData("EquipShenEvolve", onlyCheck)
@@ -6170,13 +5608,6 @@
         self.CheckLoadData("Store")
         return self.ipyStoreCache[index]
 
-    def GetActSpringSaleCount(self):
-        self.CheckLoadData("ActSpringSale")
-        return self.ipyActSpringSaleLen
-    def GetActSpringSaleByIndex(self, index):
-        self.CheckLoadData("ActSpringSale")
-        return self.ipyActSpringSaleCache[index]
-
     def GetDailyTaskCount(self):
         self.CheckLoadData("DailyTask")
         return self.ipyDailyTaskLen
@@ -6303,48 +5734,6 @@
         self.CheckLoadData("TreasureCntAward")
         return self.ipyTreasureCntAwardCache[index]
 
-    def GetFreeGoodsCount(self):
-        self.CheckLoadData("FreeGoods")
-        return self.ipyFreeGoodsLen
-    def GetFreeGoodsByIndex(self, index):
-        self.CheckLoadData("FreeGoods")
-        return self.ipyFreeGoodsCache[index]
-
-    def GetActFlashGiftbagCount(self):
-        self.CheckLoadData("ActFlashGiftbag")
-        return self.ipyActFlashGiftbagLen
-    def GetActFlashGiftbagByIndex(self, index):
-        self.CheckLoadData("ActFlashGiftbag")
-        return self.ipyActFlashGiftbagCache[index]
-
-    def GetFlashGiftbagCount(self):
-        self.CheckLoadData("FlashGiftbag")
-        return self.ipyFlashGiftbagLen
-    def GetFlashGiftbagByIndex(self, index):
-        self.CheckLoadData("FlashGiftbag")
-        return self.ipyFlashGiftbagCache[index]
-
-    def GetActDailyGiftbagCount(self):
-        self.CheckLoadData("ActDailyGiftbag")
-        return self.ipyActDailyGiftbagLen
-    def GetActDailyGiftbagByIndex(self, index):
-        self.CheckLoadData("ActDailyGiftbag")
-        return self.ipyActDailyGiftbagCache[index]
-
-    def GetDailyGiftbagCount(self):
-        self.CheckLoadData("DailyGiftbag")
-        return self.ipyDailyGiftbagLen
-    def GetDailyGiftbagByIndex(self, index):
-        self.CheckLoadData("DailyGiftbag")
-        return self.ipyDailyGiftbagCache[index]
-
-    def GetActExpRateCount(self):
-        self.CheckLoadData("ActExpRate")
-        return self.ipyActExpRateLen
-    def GetActExpRateByIndex(self, index):
-        self.CheckLoadData("ActExpRate")
-        return self.ipyActExpRateCache[index]
-
     def GetActBuyOneCount(self):
         self.CheckLoadData("ActBuyOne")
         return self.ipyActBuyOneLen
@@ -6401,27 +5790,6 @@
         self.CheckLoadData("CrossActFamilyGCZSQ")
         return self.ipyCrossActFamilyGCZSQCache[index]
 
-    def GetActGodGiftCount(self):
-        self.CheckLoadData("ActGodGift")
-        return self.ipyActGodGiftLen
-    def GetActGodGiftByIndex(self, index):
-        self.CheckLoadData("ActGodGift")
-        return self.ipyActGodGiftCache[index]
-
-    def GetActGodGiftAwardCount(self):
-        self.CheckLoadData("ActGodGiftAward")
-        return self.ipyActGodGiftAwardLen
-    def GetActGodGiftAwardByIndex(self, index):
-        self.CheckLoadData("ActGodGiftAward")
-        return self.ipyActGodGiftAwardCache[index]
-
-    def GetActRealmPointCount(self):
-        self.CheckLoadData("ActRealmPoint")
-        return self.ipyActRealmPointLen
-    def GetActRealmPointByIndex(self, index):
-        self.CheckLoadData("ActRealmPoint")
-        return self.ipyActRealmPointCache[index]
-
     def GetTrialExchangeCount(self):
         self.CheckLoadData("TrialExchange")
         return self.ipyTrialExchangeLen
@@ -6429,47 +5797,12 @@
         self.CheckLoadData("TrialExchange")
         return self.ipyTrialExchangeCache[index]
 
-    def GetAllPeoplePartyCount(self):
-        self.CheckLoadData("AllPeopleParty")
-        return self.ipyAllPeoplePartyLen
-    def GetAllPeoplePartyByIndex(self, index):
-        self.CheckLoadData("AllPeopleParty")
-        return self.ipyAllPeoplePartyCache[index]
-
-    def GetAllPeoplePartyAwardCount(self):
-        self.CheckLoadData("AllPeoplePartyAward")
-        return self.ipyAllPeoplePartyAwardLen
-    def GetAllPeoplePartyAwardByIndex(self, index):
-        self.CheckLoadData("AllPeoplePartyAward")
-        return self.ipyAllPeoplePartyAwardCache[index]
-
     def GetMapEventPointCount(self):
         self.CheckLoadData("MapEventPoint")
         return self.ipyMapEventPointLen
     def GetMapEventPointByIndex(self, index):
         self.CheckLoadData("MapEventPoint")
         return self.ipyMapEventPointCache[index]
-
-    def GetActFlashSaleCount(self):
-        self.CheckLoadData("ActFlashSale")
-        return self.ipyActFlashSaleLen
-    def GetActFlashSaleByIndex(self, index):
-        self.CheckLoadData("ActFlashSale")
-        return self.ipyActFlashSaleCache[index]
-
-    def GetActWishingWellCount(self):
-        self.CheckLoadData("ActWishingWell")
-        return self.ipyActWishingWellLen
-    def GetActWishingWellByIndex(self, index):
-        self.CheckLoadData("ActWishingWell")
-        return self.ipyActWishingWellCache[index]
-
-    def GetWishingWellCount(self):
-        self.CheckLoadData("WishingWell")
-        return self.ipyWishingWellLen
-    def GetWishingWellByIndex(self, index):
-        self.CheckLoadData("WishingWell")
-        return self.ipyWishingWellCache[index]
 
     def GetEmojiPackCount(self):
         self.CheckLoadData("EmojiPack")
@@ -6492,13 +5825,6 @@
         self.CheckLoadData("TotalRechargeTemplate")
         return self.ipyTotalRechargeTemplateCache[index]
 
-    def GetActGrowupBuyCount(self):
-        self.CheckLoadData("ActGrowupBuy")
-        return self.ipyActGrowupBuyLen
-    def GetActGrowupBuyByIndex(self, index):
-        self.CheckLoadData("ActGrowupBuy")
-        return self.ipyActGrowupBuyCache[index]
-
     def GetActManyDayRechargeCount(self):
         self.CheckLoadData("ActManyDayRecharge")
         return self.ipyActManyDayRechargeLen
@@ -6512,13 +5838,6 @@
     def GetActManyDayRechargeAwardByIndex(self, index):
         self.CheckLoadData("ActManyDayRechargeAward")
         return self.ipyActManyDayRechargeAwardCache[index]
-
-    def GetActTurntableCount(self):
-        self.CheckLoadData("ActTurntable")
-        return self.ipyActTurntableLen
-    def GetActTurntableByIndex(self, index):
-        self.CheckLoadData("ActTurntable")
-        return self.ipyActTurntableCache[index]
 
     def GetActSingleRechargeCount(self):
         self.CheckLoadData("ActSingleRecharge")
@@ -6604,13 +5923,6 @@
         self.CheckLoadData("CrossFamilyFlagwarZoneMap")
         return self.ipyCrossFamilyFlagwarZoneMapCache[index]
 
-    def GetActYunshiCount(self):
-        self.CheckLoadData("ActYunshi")
-        return self.ipyActYunshiLen
-    def GetActYunshiByIndex(self, index):
-        self.CheckLoadData("ActYunshi")
-        return self.ipyActYunshiCache[index]
-
     def GetActLunhuidianCount(self):
         self.CheckLoadData("ActLunhuidian")
         return self.ipyActLunhuidianLen
@@ -6659,34 +5971,6 @@
     def GetActLoginNewAwardByIndex(self, index):
         self.CheckLoadData("ActLoginNewAward")
         return self.ipyActLoginNewAwardCache[index]
-
-    def GetNewAllPeoplePartyCount(self):
-        self.CheckLoadData("NewAllPeopleParty")
-        return self.ipyNewAllPeoplePartyLen
-    def GetNewAllPeoplePartyByIndex(self, index):
-        self.CheckLoadData("NewAllPeopleParty")
-        return self.ipyNewAllPeoplePartyCache[index]
-
-    def GetNewAllPeoplePartyAwardCount(self):
-        self.CheckLoadData("NewAllPeoplePartyAward")
-        return self.ipyNewAllPeoplePartyAwardLen
-    def GetNewAllPeoplePartyAwardByIndex(self, index):
-        self.CheckLoadData("NewAllPeoplePartyAward")
-        return self.ipyNewAllPeoplePartyAwardCache[index]
-
-    def GetActLuckyTreasureCount(self):
-        self.CheckLoadData("ActLuckyTreasure")
-        return self.ipyActLuckyTreasureLen
-    def GetActLuckyTreasureByIndex(self, index):
-        self.CheckLoadData("ActLuckyTreasure")
-        return self.ipyActLuckyTreasureCache[index]
-
-    def GetLuckyTreasureTemplateCount(self):
-        self.CheckLoadData("LuckyTreasureTemplate")
-        return self.ipyLuckyTreasureTemplateLen
-    def GetLuckyTreasureTemplateByIndex(self, index):
-        self.CheckLoadData("LuckyTreasureTemplate")
-        return self.ipyLuckyTreasureTemplateCache[index]
 
     def GetEquipPlaceIndexMapCount(self):
         self.CheckLoadData("EquipPlaceIndexMap")
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 3731bd0..2764be9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -42,31 +42,21 @@
 import PlayerGoldInvest
 import PlayerActivity
 import FBCommon
-import PlayerWishingWell
 import PlayerSuccess
-import PlayerFreeGoods
 import GameFuncComm
 import PlayerFamilyTaofa
 import PlayerTreasure
 import IpyGameDataPY
 import EventReport
 import PassiveBuffEffMng
-import PlayerFlashSale
-import PlayerFlashGiftbag
-import PlayerDailyGiftbag
 import PlayerActBuyOne
-import PlayerActGrowupBuy
 import PlayerActCollectWords
 import PlayerActTotalRecharge
 import PlayerActLianqi
-import PlayerActGodGift
 import PlayerActFamilyCTGAssist
 import PlayerActManyDayRecharge
 import PlayerActSingleRecharge
-import PlayerSpringSale
-import PlayerLuckyTreasure
 import PlayerFuncSysPrivilege
-import PlayerActTurntable
 import OpenServerActivity
 import ChNetSendPack
 import PlayerArena
@@ -94,7 +84,6 @@
 import PlayerActBuyCountGift
 import PlayerActLunhuidian
 import PlayerActFamilyGCZ
-import PlayerActYunshi
 import PlayerActTask
 import PlayerMail
 import DBDataMgr
@@ -537,16 +526,6 @@
     #NotifyPlayerBasePoint(curPlayer)
     #累计充值
     PlayerActTotalRecharge.OnPlayerLogin(curPlayer)
-    #成长必买
-    PlayerActGrowupBuy.OnPlayerLogin(curPlayer)
-    #限时特惠
-    PlayerSpringSale.OnPlayerLogin(curPlayer)
-    #限时礼包
-    PlayerFlashGiftbag.OnPlayerLogin(curPlayer)
-    #每日礼包
-    PlayerDailyGiftbag.OnPlayerLogin(curPlayer)
-    #限时抢购
-    PlayerFlashSale.OnPlayerLogin(curPlayer)
     #买一送多活动
     PlayerActBuyOne.OnPlayerLogin(curPlayer)
     #仙盟充值互助
@@ -558,36 +537,24 @@
     FunctionNPCCommon.ShopItemOnLogin(curPlayer)
     # 通知设置的被动功法
     #PassiveBuffEffMng.OnLoginGFPassive(curPlayer)
-    # 极品白拿
-    PlayerFreeGoods.OnLogin(curPlayer)
     # 购买次数礼包活动
     PlayerActBuyCountGift.OnPlayerLogin(curPlayer)
     # 任务活动
     PlayerActTask.OnPlayerLogin(curPlayer)
-    # 运势活动
-    PlayerActYunshi.OnPlayerLogin(curPlayer)
     # 登录活动
     PlayerActLoginNew.OnPlayerLogin(curPlayer)
     # 炼器活动
     PlayerActLianqi.OnPlayerLogin(curPlayer)
-    # 天帝礼包活动
-    PlayerActGodGift.OnPlayerLogin(curPlayer)
     # 多日连充活动
     PlayerActManyDayRecharge.OnPlayerLogin(curPlayer)
     # 单笔累充活动
     PlayerActSingleRecharge.OnPlayerLogin(curPlayer)
-    # 转盘活动
-    PlayerActTurntable.OnPlayerLogin(curPlayer)
     # 分支下载奖励记录通知
     SyncPackDownloadAward(curPlayer)
     # 登录触发功能开启(老号处理)
     GameFuncComm.DoFuncOpenLogic(curPlayer)
     # 神兽
     PlayerDogz.OnPlayerLogin(curPlayer)
-    # 许愿池
-    PlayerWishingWell.OnLogin(curPlayer)
-    #幸运鉴宝
-    PlayerLuckyTreasure.OnLogin(curPlayer)
     # 小助手
     SyncLittleHelper(curPlayer)
     PlayerFB.OnLogin(curPlayer)
@@ -3386,16 +3353,10 @@
     elif rewardType == ChConfig.Def_RewardType_LunhuidianAward:
         PlayerActLunhuidian.GetLunhuidianAward(curPlayer, dataEx, dataExStr)
         
-        
-    # 每日免费直购礼包
-    elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift:
-        PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer)
+    
     # 首充礼包奖励
     elif rewardType == ChConfig.Def_RewardType_FirstCharge:
         PlayerGoldGift.GetPlayerFirstCharge(curPlayer, dataEx, dataExStr)
-    # 领取极品白拿
-    elif rewardType == ChConfig.Def_RewardType_FreeGoods:
-        PlayerFreeGoods.OnGetFreeGoods(curPlayer, dataEx)
     # 领取累计充值奖励
     elif rewardType == ChConfig.Def_RewardType_TotalRecharge:
         PlayerActTotalRecharge.OnGetTotalRechargeAward(curPlayer, dataEx, dataExStr)
@@ -3405,9 +3366,6 @@
     # 领取单笔累充领取
     elif rewardType == ChConfig.Def_RewardType_SingleRecharge:
         PlayerActSingleRecharge.OnGetSingleRechargeAward(curPlayer, dataEx, dataExStr)
-    # 领取许愿池奖励
-    elif rewardType == ChConfig.Def_RewardType_WishingWell:
-        PlayerWishingWell.DoGetWishingAward(curPlayer)
     # 领取登录活动奖励
     elif rewardType == ChConfig.Def_RewardType_ActLoginAwardNew:
         PlayerActLoginNew.OnGetActLoginAward(curPlayer, dataEx, dataExStr)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGodGift.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGodGift.py
deleted file mode 100644
index 5807545..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGodGift.py
+++ /dev/null
@@ -1,479 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerActGodGift
-#
-# @todo:天帝礼包活动
-# @author hxp
-# @date 2022-01-14
-# @version 1.0
-#
-# 详细描述: 天帝礼包活动
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2022-01-14 15:00"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ItemControler
-import ChPyNetSendPack
-import NetPackCommon
-import IPY_GameWorld
-import ItemCommon
-import GameWorld
-import ChConfig
-
-def OnPlayerLogin(curPlayer):
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_GodGift, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        __CheckPlayerGodGiftAction(curPlayer, actNum)
-        
-    return
-
-def RefreshGodGiftActionInfo(actNum):
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerGodGiftAction(curPlayer, actNum)
-    return
-
-def __CheckPlayerGodGiftAction(curPlayer, actNum):
-    ## 检查玩家活动数据信息
-    
-    playerID = curPlayer.GetPlayerID()
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_GodGift, actNum)
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodGiftID % actNum) # 玩家身上的活动ID
-    
-    # 活动ID 相同的话不处理
-    if actID == playerActID:
-        GameWorld.DebugLog("天帝礼包活动ID不变,不处理!actNum=%s,actID=%s" % (actNum, actID), playerID)
-    else:
-        actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-        templateID = __GetActTemplateID(actInfo)
-        GameWorld.DebugLog("天帝礼包重置! actNum=%s,actID=%s,playerActID=%s,state=%s,cfgID=%s,actWorldLV=%s,templateID=%s" 
-                           % (actNum, actID, playerActID, state, cfgID, actWorldLV, templateID), playerID)
-        
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftID % actNum, actID)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftWorldLV % actNum, actWorldLV)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftResetCount % actNum, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftAwardPool % actNum, 0)
-        
-        awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGodGiftAward", templateID) if templateID else []
-        if awardIpyDataList:
-            for awardIpyData in awardIpyDataList:
-                libType = awardIpyData.GetAwardLibType()
-                libItemInfoDict = awardIpyData.GetLibItemInfo()
-                for num in libItemInfoDict.keys():
-                    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftItemState % (actNum, libType, num), 0)
-                
-    if state:
-        Sync_GodGifActionInfo(curPlayer, actNum)
-        Sync_GodGiftPlayerInfo(curPlayer, actNum)
-        
-    return True
-
-def __GetActTemplateID(actInfo):
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
-    worldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    if cfgID == None or dayIndex == None:
-        return 0
-    ipyData = IpyGameDataPY.GetIpyGameData("ActGodGift", cfgID)
-    if not ipyData:
-        return 0
-    templateIDInfo = ipyData.GetTemplateIDInfo()
-    templateIDList = GameWorld.GetDictValueByRangeKey(templateIDInfo, worldLV)
-    if not templateIDList:
-        return 0
-    templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]
-    return templateID
-
-def GetGodGiftItemState(curPlayer, actNum, libType, num):
-    itemState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodGiftItemState % (actNum, libType, num))
-    chooseTimes = itemState / 100
-    isChoose = (itemState - chooseTimes * 100) / 10
-    isGot = itemState % 10
-    return chooseTimes, isChoose, isGot
-
-def SetGodGiftItemState(curPlayer, actNum, libType, num, chooseTimes, isChoose, isGot):
-    updItemState = chooseTimes * 100 + isChoose * 10 + isGot
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftItemState % (actNum, libType, num), updItemState)
-    return updItemState
-
-
-#// AA 20 天帝礼包选择物品 #tagCMActGodGiftChooseItem
-#
-#struct    tagCMActGodGiftChooseItemInfo
-#{
-#    BYTE        ItemLibType;    //物品库类型
-#    BYTE        Count;        //选择个数
-#    BYTE        ItemNumList[Count];    //选择物品编号列表
-#};
-#
-#struct    tagCMActGodGiftChooseItem
-#{
-#    tagHead        Head;
-#    BYTE        ActNum;        //活动编号
-#    BYTE        ChooseLibCount;    //选择库个数    
-#    tagCMActGodGiftChooseItemInfo    ChooseItemList[ChooseLibCount];    //选择库物品信息列表
-#};
-def OnActGodGiftChooseItem(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    playerID = curPlayer.GetPlayerID()
-    actNum = clientData.ActNum
-    chooseItemNumDict = {info.ItemLibType:info.ItemNumList for info in clientData.ChooseItemList}
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_GodGift, actNum)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    templateID = __GetActTemplateID(actInfo)
-    GameWorld.DebugLog("天帝礼包选择物品: actNum=%s,state=%s,cfgID=%s,templateID=%s,chooseItemNumDict=%s" 
-                       % (actNum, state, cfgID, templateID, chooseItemNumDict), playerID)
-    if not state or not cfgID or not templateID:
-        GameWorld.DebugLog("天帝礼包活动状态异常!", playerID)
-        return
-    
-    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodGiftAwardPool % actNum):
-        GameWorld.DebugLog("天帝礼包奖池已经选择完毕,无法重复选择!", playerID)
-        return
-    
-    awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGodGiftAward", templateID) if templateID else []
-    if not awardIpyDataList:
-        return
-    
-    chooseOKLibList = []
-    for awardIpyData in awardIpyDataList:
-        libType = awardIpyData.GetAwardLibType()
-        chooseItemNumList = chooseItemNumDict.get(libType, [])
-        
-        libItemInfoDict = awardIpyData.GetLibItemInfo()
-        needChooseCount = awardIpyData.GetChooseItemCount()
-        hadChooseNumList, canChooseNumList = [], []
-        for num, itemInfo in libItemInfoDict.items():
-            canChooseTimes = itemInfo[4]
-            chooseTimes, isChoose, _ = GetGodGiftItemState(curPlayer, actNum, libType, num)
-            if isChoose:
-                hadChooseNumList.append(num)
-            elif not canChooseTimes or chooseTimes < canChooseTimes:
-                canChooseNumList.append(num)
-                
-        GameWorld.DebugLog("天帝礼包选择库奖品! libType=%s,chooseItemNumList=%s" % (libType, chooseItemNumList), playerID)
-        GameWorld.DebugLog("    needChooseCount=%s,hadChooseNumList=%s,canChooseNumList=%s" % (needChooseCount, hadChooseNumList, str(canChooseNumList)), playerID)
-        hadChooseCount = len(hadChooseNumList)
-        if hadChooseCount >= needChooseCount:
-            GameWorld.DebugLog("    该库已超过选择完毕! libType=%s" % libType, playerID)
-            chooseOKLibList.append(libType)
-            continue
-        
-        for num in chooseItemNumList:
-            if num in hadChooseNumList:
-                GameWorld.DebugLog("    已被选择! libType=%s,num=%s" % (libType, num), playerID)
-                continue
-            if num not in canChooseNumList:
-                GameWorld.DebugLog("    不可选择! libType=%s,num=%s not in %s" % (libType, num, canChooseNumList), playerID)
-                continue
-            
-            chooseTimes, isChoose, isGot = GetGodGiftItemState(curPlayer, actNum, libType, num)
-            chooseTimes += 1
-            isChoose = 1
-            updItemState = SetGodGiftItemState(curPlayer, actNum, libType, num, chooseTimes, isChoose, isGot)
-            GameWorld.DebugLog("    选择奖品! libType=%s,num=%s,chooseTimes=%s,isChoose=%s,isGot=%s,updItemState=%s" 
-                               % (libType, num, chooseTimes, isChoose, isGot, updItemState), playerID)
-            
-            canChooseNumList.remove(num)
-            hadChooseCount += 1
-            if hadChooseCount >= needChooseCount or not canChooseNumList:
-                chooseOKLibList.append(libType)
-                break
-                
-    if chooseOKLibList and len(chooseOKLibList) == len(awardIpyDataList):
-        GameWorld.DebugLog("天帝礼包生成奖池OK!", playerID)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftAwardPool % actNum, 1)
-    else:        
-        GameWorld.DebugLog("天帝礼包奖池未选择完毕! chooseOKLibList=%s" % chooseOKLibList, playerID)
-        
-    Sync_GodGifActionInfo(curPlayer, actNum)
-    return
-
-#// AA 21 天帝礼包抽奖 #tagCMActGodGiftlottery
-#
-#struct    tagCMActGodGiftlottery
-#{
-#    tagHead        Head;
-#    BYTE        ActNum;        //活动编号
-#};
-def OnActGodGiftlottery(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    playerID = curPlayer.GetPlayerID()
-    actNum = clientData.ActNum
-        
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_GodGift, actNum)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    templateID = __GetActTemplateID(actInfo)
-    GameWorld.DebugLog("天帝礼包活动抽奖: actNum=%s,state=%s,cfgID=%s,templateID=%s" % (actNum, state, cfgID, templateID), playerID)
-    if not state or not cfgID or not templateID:
-        GameWorld.DebugLog("天帝礼包活动状态异常!", playerID)
-        return
-    
-    if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodGiftAwardPool % actNum):
-        GameWorld.DebugLog("天帝礼包奖池未选择完毕,无法抽奖!", playerID)
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActGodGift", cfgID)
-    if not ipyData:
-        return
-    CostMoneyType = ipyData.GetUseMoneyType()
-    costMoneyValueList = ipyData.GetUseGoldList()
-    PrizeMoneyType = ipyData.GetPrizeMoneyType()
-    prizeMoneyValueList = ipyData.GetPrizeMoneyList()
-    
-    awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGodGiftAward", templateID) if templateID else []
-    if not awardIpyDataList:
-        return
-    
-    gotAwardList = [] # 已抽奖品次数
-    randItemWeightList = []
-    for awardIpyData in awardIpyDataList:
-        libType = awardIpyData.GetAwardLibType()
-        libItemInfoDict = awardIpyData.GetLibItemInfo()
-        notifyItemNumList = awardIpyData.GetNotifyItemNumList()
-        
-        for num, itemInfo in libItemInfoDict.items():
-            weight, itemID, itemCount, isBind = itemInfo[:4]
-            chooseTimes, isChoose, isGot = GetGodGiftItemState(curPlayer, actNum, libType, num)
-            if isGot:
-                gotAwardList.append([libType, num])
-                continue
-            if not isChoose:
-                continue
-            isNotify = num in notifyItemNumList
-            randItemWeightList.append([weight, libType, num, itemID, itemCount, isBind, chooseTimes, isChoose, isGot, isNotify])
-            
-    if not randItemWeightList:
-        GameWorld.DebugLog("本次奖池已抽完!", playerID)
-        return
-    
-    awardCount = len(gotAwardList) # 已抽奖次数
-    
-    costMoneyValue = costMoneyValueList[awardCount] if awardCount < len(costMoneyValueList) else costMoneyValueList[-1]
-    prizeMoneyValue = prizeMoneyValueList[awardCount] if awardCount < len(prizeMoneyValueList) else prizeMoneyValueList[-1]
-    
-    if not PlayerControl.HaveMoney(curPlayer, CostMoneyType, costMoneyValue):
-        return
-    
-    if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem, True):
-        return
-    
-    GameWorld.DebugLog("    已抽库,编号列表: awardCount=%s, %s" % (awardCount, gotAwardList), playerID)
-    GameWorld.DebugLog("    costMoneyValue=%s,prizeMoneyValue=%s" % (costMoneyValue, prizeMoneyValue), playerID)
-    GameWorld.DebugLog("    randItemWeightList=%s" % randItemWeightList, playerID)
-    randItemInfo = GameWorld.GetResultByWeightList(randItemWeightList)
-    if not randItemInfo:
-        return
-    libType, num, itemID, itemCount, isBind, chooseTimes, isChoose, isGot, isNotify = randItemInfo
-    GameWorld.DebugLog("    抽中: libType=%s,num=%s,itemID=%s,itemCount=%s,isBind=%s,chooseTimes=%s,isChoose=%s,isGot=%s" 
-                       % (libType, num, itemID, itemCount, isBind, chooseTimes, isChoose, isGot), playerID)
-    
-    infoDict = {"actNum":actNum, "awardCount":awardCount}
-    if not PlayerControl.PayMoney(curPlayer, CostMoneyType, costMoneyValue, ChConfig.Def_Cost_ActGodGift, infoDict):
-        return
-    
-    isGot = 1
-    updItemState = SetGodGiftItemState(curPlayer, actNum, libType, num, chooseTimes, isChoose, isGot)
-    GameWorld.DebugLog("    更新库编号物品状态: libType=%s,num=%s,updItemState=%s" % (libType, num, updItemState), playerID)
-    Sync_GodGiftPlayerInfo(curPlayer, actNum)
-    
-    addDataDict = {"actNum":actNum, "awardCount":awardCount}
-    PlayerControl.GiveMoney(curPlayer, PrizeMoneyType, prizeMoneyValue, ChConfig.Def_GiveMoney_ActGodGift, addDataDict)
-    
-    if ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], event=["ActGodGift", False, {}]):
-        if isNotify:
-            PlayerControl.WorldNotify(0, "ActGodGiftNotify", [curPlayer.GetPlayerName(), itemID, itemCount])
-            
-    if len(randItemWeightList) == 1:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftAwardPool % actNum, 2)
-        GameWorld.DebugLog("    奖池已被抽完!", playerID)
-        
-    return
-
-#// AA 22 天帝礼包重置 #tagCMActGodGiftReset
-#
-#struct    tagCMActGodGiftReset
-#{
-#    tagHead        Head;
-#    BYTE        ActNum;        //活动编号
-#};
-def OnActGodGiftReset(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    playerID = curPlayer.GetPlayerID()
-    actNum = clientData.ActNum
-        
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_GodGift, actNum)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    templateID = __GetActTemplateID(actInfo)
-    GameWorld.DebugLog("天帝礼包重置奖池: actNum=%s,state=%s,cfgID=%s,templateID=%s" % (actNum, state, cfgID, templateID), playerID)
-    if not state or not cfgID or not templateID:
-        GameWorld.DebugLog("天帝礼包活动状态异常!", playerID)
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActGodGift", cfgID)
-    if not ipyData:
-        return
-    resetLimitTimes = ipyData.GetResetLimitTimes()
-    resetCountMax = ipyData.GetResetCountMax()
-    
-    resetCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodGiftResetCount % actNum)
-    if resetCount >= resetCountMax:
-        GameWorld.DebugLog("天帝礼包已超过最大重置奖池次数! cfgID=%s,resetCount=%s >= %s" % (cfgID, resetCount, resetCountMax), playerID)
-        return
-    
-    awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGodGiftAward", templateID) if templateID else []
-    if not awardIpyDataList:
-        return
-    
-    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodGiftAwardPool % actNum) != 2:
-        awardCount = 0
-        for awardIpyData in awardIpyDataList:
-            libType = awardIpyData.GetAwardLibType()
-            libItemInfoDict = awardIpyData.GetLibItemInfo()
-            for num in libItemInfoDict.keys():
-                _, _, isGot = GetGodGiftItemState(curPlayer, actNum, libType, num)
-                if isGot:
-                    awardCount += 1
-                    
-        if awardCount < resetLimitTimes:
-            GameWorld.DebugLog("天帝礼包已抽奖次数不足,无法重置奖池! cfgID=%s,awardCount=%s < %s" % (cfgID, awardCount, resetLimitTimes), playerID)
-            return
-    else:
-        GameWorld.DebugLog("奖池已抽完,重置时不需要判断次数!", playerID)
-        
-    # 重置奖池
-    for awardIpyData in awardIpyDataList:
-        libType = awardIpyData.GetAwardLibType()
-        libItemInfoDict = awardIpyData.GetLibItemInfo()
-        for num in libItemInfoDict.keys():
-            chooseTimes, isChoose, isGot = GetGodGiftItemState(curPlayer, actNum, libType, num)
-            if not isChoose and not isGot:
-                continue
-            isChoose, isGot = 0, 0
-            updItemState = SetGodGiftItemState(curPlayer, actNum, libType, num, chooseTimes, isChoose, isGot)
-            GameWorld.DebugLog("    重置库奖品状态: libType=%s,num=%s,chooseTimes=%s,updItemState=%s" 
-                               % (libType, num, chooseTimes, updItemState), playerID)
-            
-    updResetCount = resetCount + 1
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftResetCount % actNum, updResetCount)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GodGiftAwardPool % actNum, 0)
-    GameWorld.DebugLog("    重置奖池成功: updResetCount=%s" % updResetCount, playerID)
-    
-    Sync_GodGifActionInfo(curPlayer, actNum)
-    Sync_GodGiftPlayerInfo(curPlayer, actNum)
-    return
-
-def Sync_GodGifActionInfo(curPlayer, actNum):
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_GodGift, actNum)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not state or not cfgID:
-        return
-    
-    templateID = __GetActTemplateID(actInfo)
-    if not templateID:
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActGodGift", cfgID)
-    if not ipyData:
-        return 0
-    
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
-    clientPack = ChPyNetSendPack.tagMCActGodGiftInfo()
-    clientPack.ActNum = actNum
-    clientPack.StartDate = startDateStr
-    clientPack.EndtDate = endDateStr
-    clientPack.IsDayReset = ipyData.GetIsDayReset()
-    clientPack.LimitLV = ipyData.GetLVLimit()
-    clientPack.CostMoneyType = ipyData.GetUseMoneyType()
-    clientPack.CostMoneyValueList = ipyData.GetUseGoldList()
-    clientPack.CostMoneyValueCount = len(clientPack.CostMoneyValueList)
-    clientPack.PrizeMoneyType = ipyData.GetPrizeMoneyType()
-    clientPack.PrizeMoneyValueList = ipyData.GetPrizeMoneyList()
-    clientPack.PrizeMoneyValueCount = len(clientPack.PrizeMoneyValueList)
-    clientPack.ResetLimitTimes = ipyData.GetResetLimitTimes()
-    clientPack.ResetCountMax = ipyData.GetResetCountMax()
-    clientPack.ItemLibList = []
-    awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGodGiftAward", templateID) if templateID else []
-    if awardIpyDataList:
-        for awardIpyData in awardIpyDataList:
-            libType = awardIpyData.GetAwardLibType()
-            libItemInfoDict = awardIpyData.GetLibItemInfo()
-            needChooseCount = awardIpyData.GetChooseItemCount()
-            
-            itemLib = ChPyNetSendPack.tagMCActGodGiftItemLib()
-            itemLib.ItemLibType = libType
-            itemLib.NeedChooseCount = needChooseCount
-            itemLib.GodGiftItemList = []
-            for num, itemInfo in libItemInfoDict.items():
-                _, itemID, itemCount, isBind, canChooseTimes = itemInfo
-                chooseTimes, isChoose, _ = GetGodGiftItemState(curPlayer, actNum, libType, num)
-                item = ChPyNetSendPack.tagMCActGodGiftItem()
-                item.ItemNum = num
-                item.ItemID = itemID
-                item.ItemCount = itemCount
-                item.IsBind = isBind
-                item.CanChooseTimes = canChooseTimes
-                item.ChooseTimes = chooseTimes
-                item.IsChoose = isChoose
-                itemLib.GodGiftItemList.append(item)
-                
-            itemLib.GodGiftItemCount = len(itemLib.GodGiftItemList)
-            clientPack.ItemLibList.append(itemLib)
-            
-    clientPack.ItemLibCount = len(clientPack.ItemLibList)
-    clientPack.IsAwardPoolOK = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodGiftAwardPool % actNum)
-    NetPackCommon.SendFakePack(curPlayer, clientPack)
-    return
-
-def Sync_GodGiftPlayerInfo(curPlayer, actNum):
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_GodGift, actNum)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    if not state:
-        return
-    
-    templateID = __GetActTemplateID(actInfo)
-    if not templateID:
-        return
-    
-    clientPack = ChPyNetSendPack.tagMCActGodGiftPlayerInfo()
-    clientPack.ActNum = actNum
-    clientPack.ResetCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodGiftResetCount % actNum)
-    clientPack.AwardItemList = []
-    
-    awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGodGiftAward", templateID) if templateID else []
-    if awardIpyDataList:
-        for awardIpyData in awardIpyDataList:
-            libType = awardIpyData.GetAwardLibType()
-            libItemInfoDict = awardIpyData.GetLibItemInfo()
-            for num in libItemInfoDict.keys():
-                _, _, isGot = GetGodGiftItemState(curPlayer, actNum, libType, num)
-                if not isGot:
-                    continue
-                awardItem = ChPyNetSendPack.tagMCActGodGiftAwardItem()
-                awardItem.ItemLibType = libType
-                awardItem.ItemNum = num
-                clientPack.AwardItemList.append(awardItem)
-                
-    clientPack.AwardItemCount = len(clientPack.AwardItemList)
-    NetPackCommon.SendFakePack(curPlayer, clientPack)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGrowupBuy.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGrowupBuy.py
deleted file mode 100644
index 4e47cc6..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGrowupBuy.py
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerActGrowupBuy
-#
-# @todo:运营活动 - 成长必买
-# @author hxp
-# @date 2020-11-23
-# @version 1.0
-#
-# 详细描述: 运营活动 - 成长必买
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2020-11-23 21:00"""
-#-------------------------------------------------------------------------------
-
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ChPyNetSendPack
-import NetPackCommon
-import GameWorld
-import ChConfig
-
-def OnPlayerLogin(curPlayer):
-    isReset = __CheckPlayerGrowupBuyAction(curPlayer)
-    if not isReset:
-        actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_GrowupBuy, {})
-        # 活动中同步活动信息
-        if actInfo.get(ShareDefine.ActKey_State):
-            Sync_GrowupActionInfo(curPlayer)
-    return
-
-def RefreshGrowupBuyActionInfo():
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerGrowupBuyAction(curPlayer)
-    return
-
-def __CheckPlayerGrowupBuyAction(curPlayer):
-    ## 检查玩家充值返利活动数据信息
-    
-    playerID = curPlayer.GetPlayerID()
-    
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_GrowupBuy, {})
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrowupBuyID) # 玩家身上的活动ID
-    
-    # 活动ID 相同的话不处理
-    if actID == playerActID:
-        GameWorld.DebugLog("成长必买活动ID不变,不处理!", curPlayer.GetPlayerID())
-        return
-    GameWorld.DebugLog("成长必买重置! actID=%s,playerActID=%s,state=%s" % (actID, playerActID, state), playerID)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GrowupBuyID, actID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GrowupBuyState, 0)
-    
-    Sync_GrowupActionInfo(curPlayer)
-    return True
-
-def DoUpdateGrowupBuyStateOnDay(curPlayer):
-    ## 成长必买过天更新购买状态
-    
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_GrowupBuy, {})
-    if not actInfo:
-        return
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    ipyData = IpyGameDataPY.GetIpyGameData("ActGrowupBuy", cfgID)
-    if not ipyData:
-        return
-    ctgIDGroupList = ipyData.GetCTGIDGroupList()
-    
-    buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrowupBuyState)
-    GameWorld.DebugLog("更新成长必买今日可购买礼包索引! buyState=%s,ctgIDGroupList=%s" % (buyState, ctgIDGroupList))
-    
-    for i, ctgIDList in enumerate(ctgIDGroupList):
-        
-        buyIndex = GameWorld.GetDataByDigitPlace(buyState, i)
-        updBuyIndex = 0
-        yestodayCtgID = ctgIDList[buyIndex]
-        if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % yestodayCtgID):
-            updBuyIndex = 0
-            GameWorld.DebugLog("    昨日礼包没买,重置!yestodayCtgID=%s" % yestodayCtgID)
-        else:
-            if buyIndex >= len(ctgIDList) - 1:
-                updBuyIndex = len(ctgIDList) - 1
-                GameWorld.DebugLog("    昨日礼包已买,最后一档礼包保持不变! yestodayCtgID=%s,updBuyIndex=%s" % (yestodayCtgID, updBuyIndex))
-            else:
-                updBuyIndex = buyIndex + 1
-                GameWorld.DebugLog("    昨日礼包已买,更新后续礼包索引! yestodayCtgID=%s,updBuyIndex=%s" % (yestodayCtgID, updBuyIndex))
-                
-        buyState = GameWorld.ChangeDataByDigitPlace(buyState, i, updBuyIndex)
-        GameWorld.DebugLog("    updState=%s" % buyState)
-        
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GrowupBuyState, buyState)
-    Sync_GrowupActionInfo(curPlayer)
-    return
-
-def CheckGrowupBuyState(curPlayer, ctgID):
-    ## 检查是否可购买成长必买礼包ID
-    # @return: 是否可买, 不可买原因说明
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_GrowupBuy, {})
-    if not actInfo:
-        return False, "not grow up buy action info!"
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return False, "grow up buy action state is 0!"
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    ipyData = IpyGameDataPY.GetIpyGameData("ActGrowupBuy", cfgID)
-    if not ipyData:
-        return False, "not grow up buy action ipyData cfgID(%s)!" % cfgID
-    ctgIDGroupList = ipyData.GetCTGIDGroupList()
-    buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrowupBuyState)
-    curCTGIDList = []
-    playerBuyIndex = -1
-    for i, ctgIDList in enumerate(ctgIDGroupList):
-        if ctgID in ctgIDList:
-            curCTGIDList = ctgIDList
-            playerBuyIndex = GameWorld.GetDataByDigitPlace(buyState, i)
-            break
-    if not curCTGIDList:
-        return False, "ctgID(%s) is not in this grow up buy action ctgIDGroupList(%s)!" % (ctgID, ctgIDGroupList)
-    ctgIDIndex = curCTGIDList.index(ctgID)
-    if playerBuyIndex != ctgIDIndex:
-        return False, "ctgIDIndex(%s) is not equal to playerBuyIndex(%s) !" % (ctgIDIndex, playerBuyIndex)
-    
-    return True, ""
-
-def Sync_GrowupActionInfo(curPlayer):
-    ## 通知活动信息  - 成长必买
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_GrowupBuy, {})
-    if not actInfo:
-        return
-    
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActGrowupBuy", cfgID)
-    if not ipyData:
-        return
-    ctgIDGroupList = ipyData.GetCTGIDGroupList()
-    if not ctgIDGroupList:
-        return
-    
-    import PlayerCoin
-    buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrowupBuyState)
-    
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
-    actPack = ChPyNetSendPack.tagMCActGrowupBuyInfo()
-    actPack.StartDate = startDateStr
-    actPack.EndtDate = endDateStr
-    actPack.LimitLV = ipyData.GetLVLimit()
-    actPack.GroupList = []
-    for i, ctgIDList in enumerate(ctgIDGroupList):
-        groupInfo = ChPyNetSendPack.tagMCActGrowupBuyGroup()
-        groupInfo.BuyCTGIDList = []
-        for ctgID in ctgIDList:
-            ctgIpyData = IpyGameDataPY.GetIpyGameData("CTG", ctgID)
-            ctgGiveItemList = PlayerCoin.GetCTGGiveItemList(ctgIpyData)
-            ctgInfo = ChPyNetSendPack.tagMCActGrowupBuyCTGInfo()
-            ctgInfo.CTGID = ctgID
-            ctgInfo.GainItemList = []
-            for itemID, itemCount, isAuctionItem in ctgGiveItemList:
-                ctgItem = ChPyNetSendPack.tagMCActGrowupBuyCTGItem()
-                ctgItem.ItemID = itemID
-                ctgItem.ItemCount = itemCount
-                ctgItem.IsBind = isAuctionItem
-                ctgInfo.GainItemList.append(ctgItem)
-            ctgInfo.GainItemCount = len(ctgInfo.GainItemList)
-            groupInfo.BuyCTGIDList.append(ctgInfo)
-        groupInfo.BuyCount = len(groupInfo.BuyCTGIDList)
-        groupInfo.PlayerBuyIndex = GameWorld.GetDataByDigitPlace(buyState, i)
-        actPack.GroupList.append(groupInfo)
-    actPack.GroupCount = len(actPack.GroupList)
-    NetPackCommon.SendFakePack(curPlayer, actPack)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py
deleted file mode 100644
index db34ee5..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTurntable.py
+++ /dev/null
@@ -1,549 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerActTurntable
-#
-# @todo:转盘活动
-# @author hxp
-# @date 2021-05-06
-# @version 1.0
-#
-# 详细描述: 转盘活动
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-05-06 16:30"""
-#-------------------------------------------------------------------------------
-
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ItemControler
-import ChPyNetSendPack
-import IPY_GameWorld
-import NetPackCommon
-import GameWorld
-import ChConfig
-import CommFunc
-
-import random
-
-# 物品库类型
-(
-ItemLibType_Comm, # 常规物品
-ItemLibType_Good, # 极品物品
-ItemLibType_Super, # 终极物品
-) = range(1, 3 + 1)
-
-def OnPlayerLogin(curPlayer):
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_Turntable, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        isReset = __CheckPlayerTurntableAction(curPlayer, actNum)
-        if not isReset:
-            # 活动中同步活动信息
-            if actInfo.get(ShareDefine.ActKey_State):
-                AddTurntableUseCountByLogin(curPlayer, actNum)
-                Sync_TurntableActionInfo(curPlayer, actNum)
-                Sync_TurntablePlayerInfo(curPlayer, actNum)
-                
-    return
-
-def PlayerOnDay(curPlayer):
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_Turntable, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        if not actInfo.get(ShareDefine.ActKey_State):
-            continue
-        
-        # 过天重置
-        AddTurntableUseCountByLogin(curPlayer, actNum)
-        Sync_TurntablePlayerInfo(curPlayer, actNum)
-        
-    return
-    
-def RefreshTurntableActionInfo(actNum):
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerTurntableAction(curPlayer, actNum)
-    return
-
-def __CheckPlayerTurntableAction(curPlayer, actNum):
-    ## 检查玩家活动数据信息
-    
-    playerID = curPlayer.GetPlayerID()
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Turntable, actNum)
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableID % actNum) # 玩家身上的活动ID
-    
-    # 活动ID 相同的话不处理
-    if actID == playerActID:
-        GameWorld.DebugLog("转盘活动ID不变,不处理!actNum=%s,actID=%s" % (actNum, actID), playerID)
-        return
-        
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    
-    GameWorld.DebugLog("转盘活动重置! cfgID=%s,actNum=%s,actID=%s,playerActID=%s,state=%s" % (cfgID, actNum, actID, playerActID, state), playerID)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableID % actNum, actID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableWorldLV % actNum, actWorldLV)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableLoginState % actNum, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableCTGValue % actNum, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableUseGold % actNum, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableCanUseCount % actNum, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemState % actNum, 0)
-    
-    ipyData = None if not cfgID else IpyGameDataPY.GetIpyGameData("ActTurntable", cfgID)
-    if ipyData:
-        numCountList = ipyData.GetLibChooseCountList()
-        numCountTotal = sum([numCount for numCount in numCountList])
-        for num in xrange(1, numCountTotal + 1):
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemID % (actNum, num), 0)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemCount % (actNum, num), 0)
-            
-        if state:
-            # 随机生成常规物品
-            commItemCount = numCountList[0]
-            commItemLib = GameWorld.GetDictValueByRangeKey(ipyData.GetCommItemLib(), actWorldLV, [])
-            random.shuffle(commItemLib) # 打乱下顺序
-            commItemList = commItemLib[:commItemCount]
-            GameWorld.DebugLog("    随机生成常规物品: %s, %s" % (commItemCount, commItemList))
-            for num, itemInfo in enumerate(commItemList, 1):
-                itemID, itemCount, _ = itemInfo
-                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemID % (actNum, num), itemID * 10 + ItemLibType_Comm)
-                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemCount % (actNum, num), itemCount)
-                
-            # 增加登录奖励转盘次数
-            AddTurntableUseCountByLogin(curPlayer, actNum)
-            
-    Sync_TurntableActionInfo(curPlayer, actNum)
-    Sync_TurntablePlayerInfo(curPlayer, actNum)
-    return True
-
-def AddTurntableUseCountByLogin(curPlayer, actNum):
-    ## 登录增加转盘次数
-    todayTime = GameWorld.GetTodayTime()
-    loginState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableLoginState % actNum)
-    if loginState == todayTime:
-        GameWorld.DebugLog("登录增加转盘次数,已经增加过: actNum=%s,todayTime=%s" % (actNum, todayTime))
-        return
-    GameWorld.DebugLog("登录增加转盘次数: actNum=%s,todayTime=%s" % (actNum, todayTime))
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableLoginState % actNum, todayTime)
-    AddTurntableUseCount(curPlayer, actNum, 1)
-    return
-
-def AddTurntableUseCount(curPlayer, actNum, addCount):
-    ## 增加转盘次数
-    canUseCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableCanUseCount % actNum) + addCount
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableCanUseCount % actNum, canUseCount)
-    GameWorld.DebugLog("    增加转盘活动次数: actNum=%s,addCount=%s,canUseCount=%s" % (actNum, addCount, canUseCount))
-    return
-
-def OnPlayerRecharge(curPlayer, curRechargeValue, coinType):
-    ## 玩家充值
-    if curRechargeValue <= 0:
-        return
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_Turntable, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        if not actInfo.get(ShareDefine.ActKey_State):
-            GameWorld.DebugLog("转盘当前未开启! actNum=%s" % actNum)
-            continue
-        
-        cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-        if not cfgID:
-            continue
-        
-        ipyData = IpyGameDataPY.GetIpyGameData("ActTurntable", cfgID)
-        if not ipyData:
-            continue
-        
-        ctgTypeEffValue = ipyData.GetCTGTypeEffValue()
-        if not ctgTypeEffValue & pow(2, coinType):
-            GameWorld.DebugLog("转盘活动充值类型对该活动无效! actNum=%s,coinType=%s,ctgTypeEffValue=%s" 
-                               % (actNum, coinType, ctgTypeEffValue), curPlayer.GetPlayerID())
-            continue
-        
-        ctgPrizeList = [CommFunc.RMBToCoin(floatRMB) for floatRMB in ipyData.GetCTGPrizeList()]
-        nowCTGValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableCTGValue % actNum)
-        if nowCTGValue >= max(ctgPrizeList):
-            GameWorld.DebugLog("转盘活动充值已达最大记录,actNum=%s,nowCTGValue=%s,maxCTGValue=%s" 
-                               % (actNum, nowCTGValue, max(ctgPrizeList)))
-            continue
-        
-        updCTGValue = nowCTGValue + curRechargeValue
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableCTGValue % actNum, updCTGValue)
-        GameWorld.DebugLog("转盘活动充值,actNum=%s,nowCTGValue=%s,updCTGValue=%s,curRechargeValue=%s" 
-                           % (actNum, nowCTGValue, updCTGValue, curRechargeValue))
-        
-        addTurntableCount = 0
-        for ctgValue in ctgPrizeList:
-            if updCTGValue < ctgValue:
-                break
-            
-            if nowCTGValue < ctgValue and updCTGValue >= ctgValue:
-                addTurntableCount += 1
-                GameWorld.DebugLog("    ctgValue=%s,addTurntableCount=%s" % (ctgValue, addTurntableCount))
-                
-        if addTurntableCount > 0:
-            AddTurntableUseCount(curPlayer, actNum, addTurntableCount)
-        Sync_TurntablePlayerInfo(curPlayer, actNum)
-        
-    return
-
-def OnPlayerUseGold(curPlayer, moneyType, addUseGold):
-    ## 玩家消耗货币
-    
-    if addUseGold <= 0:
-        return
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_Turntable, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        if not actInfo.get(ShareDefine.ActKey_State):
-            GameWorld.DebugLog("转盘当前未开启! actNum=%s" % actNum)
-            continue
-        
-        cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-        if not cfgID:
-            continue
-        
-        ipyData = IpyGameDataPY.GetIpyGameData("ActTurntable", cfgID)
-        if not ipyData:
-            continue
-        
-        if moneyType != ipyData.GetUseMoneyType():
-            continue
-        
-        useMoneyPrizeList = ipyData.GetUseMoneyPrizeList()
-        nowUseGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableUseGold % actNum)
-        if nowUseGold >= max(useMoneyPrizeList):
-            GameWorld.DebugLog("转盘活动消耗货币已达最大记录,actNum=%s,moneyType=%s,nowUseGold=%s,maxUseMoneyValue=%s" 
-                               % (actNum, moneyType, nowUseGold, max(useMoneyPrizeList)))
-            continue
-        
-        updUseGold = nowUseGold + addUseGold
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableUseGold % actNum, updUseGold)
-        GameWorld.DebugLog("转盘活动消耗货币,actNum=%s,moneyType=%s,nowUseGold=%s,updUseGold=%s,addUseGold=%s" 
-                           % (actNum, moneyType, nowUseGold, updUseGold, addUseGold))
-        
-        addTurntableCount = 0
-        for useGold in useMoneyPrizeList:
-            if updUseGold < useGold:
-                break
-            
-            if nowUseGold < useGold and updUseGold >= useGold:
-                addTurntableCount += 1
-                GameWorld.DebugLog("    useGold=%s,addTurntableCount=%s" % (useGold, addTurntableCount))
-                
-        if addTurntableCount > 0:
-            AddTurntableUseCount(curPlayer, actNum, addTurntableCount)
-        Sync_TurntablePlayerInfo(curPlayer, actNum)
-        
-    return
-
-#// AA 12 选择转盘活动物品 #tagCMActTurntableChooseItem
-#
-#struct    tagCMActTurntableChooseItem
-#{
-#    tagHead        Head;
-#    BYTE        ActNum;        // 活动编号
-#    BYTE        GoodItemNumCount;
-#    BYTE        GoodItemNumList[GoodItemNumCount];    // 选择的极品物品编号列表
-#    BYTE        SuperItemNumCount;
-#    BYTE        SuperItemNumList[SuperItemNumCount];    // 选择的终极物品编号列表
-#};
-def OnTurntableChooseItem(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    actNum = clientData.ActNum
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Turntable, actNum)
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    if not cfgID:
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActTurntable", cfgID)
-    if not ipyData:
-        return
-    
-    numCountList = ipyData.GetLibChooseCountList()
-    numCountTotal = sum([numCount for numCount in numCountList])
-    if len(numCountList) != 3:
-        return
-    commCount, goodCount, superCount = numCountList
-    
-    canChoose = True
-    for num in xrange(1, numCountTotal + 1):
-        itemIDInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableItemID % (actNum, num))
-        itemID, itemLibType = itemIDInfo / 10, itemIDInfo % 10
-        if itemID and itemLibType != ItemLibType_Comm:
-            canChoose = False
-            GameWorld.DebugLog("    已经选择过了转盘物品了,无法重复选择!")
-            break
-        
-    if not canChoose:
-        return
-    
-    actWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableWorldLV % actNum)
-    goodItemLib = GameWorld.GetDictValueByRangeKey(ipyData.GetGoodItemLib(), actWorldLV, [])
-    chooseGoodItemNumList = clientData.GoodItemNumList
-    if not chooseGoodItemNumList or len(chooseGoodItemNumList) != goodCount or min(chooseGoodItemNumList) <= 0 or max(chooseGoodItemNumList) > len(goodItemLib):
-        GameWorld.ErrLog("    转盘活动极品物品选择错误!actNum=%s,chooseGoodItemNumList=%s,goodCount=%s,goodItemLibLen=%s" 
-                         % (actNum, chooseGoodItemNumList, goodCount, len(goodItemLib)))
-        return
-    
-    superItemLib = GameWorld.GetDictValueByRangeKey(ipyData.GetSuperItemLib(), actWorldLV, [])
-    chooseSuperItemNumList = clientData.SuperItemNumList
-    if not chooseSuperItemNumList or len(chooseSuperItemNumList) != superCount or min(chooseSuperItemNumList) <= 0 or max(chooseSuperItemNumList) > len(superItemLib):
-        GameWorld.ErrLog("    转盘活动终极物品选择错误!actNum=%s,chooseSuperItemNumList=%s,superCount=%s,superItemLibLen=%s" 
-                         % (actNum, chooseSuperItemNumList, superCount, len(superItemLib)))
-        return
-    
-    useNum = commCount # 以普通物品个数为编号,递增
-    GameWorld.DebugLog("转盘活动选择物品: actNum=%s,chooseGoodItemNumList=%s,chooseSuperItemNumList=%s" % (actNum, chooseGoodItemNumList, chooseSuperItemNumList))
-    for chooseGoodNum in chooseGoodItemNumList:
-        useNum += 1
-        itemID, itemCount, _ = goodItemLib[chooseGoodNum - 1]
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemID % (actNum, useNum), itemID * 10 + ItemLibType_Good)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemCount % (actNum, useNum), itemCount)
-        GameWorld.DebugLog("    存储选择极品物品: useNum=%s,itemID=%s,itemCount=%s" % (useNum, itemID, itemCount))
-        
-    for chooseSuperNum in chooseSuperItemNumList:
-        useNum += 1
-        itemID, itemCount, _ = superItemLib[chooseSuperNum - 1]
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemID % (actNum, useNum), itemID * 10 + ItemLibType_Super)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemCount % (actNum, useNum), itemCount)
-        GameWorld.DebugLog("    存储选择终极物品: useNum=%s,itemID=%s,itemCount=%s" % (useNum, itemID, itemCount))
-        
-    Sync_TurntableActionInfo(curPlayer, actNum)
-    return
-
-#// AA 13 启动转盘 #tagCMActTurntableStart
-#
-#struct    tagCMActTurntableStart
-#{
-#    tagHead        Head;
-#    BYTE        ActNum;        // 活动编号
-#};
-def OnTurntableStart(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    actNum = clientData.ActNum
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Turntable, actNum)
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    if not cfgID:
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActTurntable", cfgID)
-    if not ipyData:
-        return
-    
-    canUseCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableCanUseCount % actNum)
-    if canUseCount <= 0:
-        GameWorld.DebugLog("没有转盘活动次数!actNum=%s" % actNum)
-        return
-    
-    itemState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableItemState % actNum)
-    
-    numCountList = ipyData.GetLibChooseCountList()
-    numCountTotal = sum([numCount for numCount in numCountList])
-    
-    canStart = False
-    hadGetCount = 0
-    isAuctionItem = 0 # 默认非拍品
-    canGetItemInfoDict = {} # 还可以获得的物品信息 {itemLibType:{num:itemInfo, ...}, ...}
-    for num in xrange(1, numCountTotal + 1):
-        itemIDInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableItemID % (actNum, num))
-        itemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableItemCount % (actNum, num))
-        itemID, itemLibType = itemIDInfo / 10, itemIDInfo % 10
-        if not itemID or not itemCount:
-            continue
-        
-        if itemLibType != ItemLibType_Comm:
-            canStart = True
-            
-        if itemState & pow(2, num):
-            hadGetCount += 1
-            continue
-        
-        if itemLibType not in canGetItemInfoDict:
-            canGetItemInfoDict[itemLibType] = {}
-        canGetItemInfoDict[itemLibType][num] = [itemID, itemCount, isAuctionItem]
-        
-    if not canStart:
-        GameWorld.DebugLog("未选择转盘活动极品终极物品,无法启动转盘!")
-        return
-    
-    if not ItemControler.CheckPackHasSpace(curPlayer, isNotify=True):
-        return
-    
-    superRate, superLimitTurnCount = ipyData.GetSuperItemLimitRule() # 终极库产出万分率|至少X次后可产出
-    
-    GameWorld.DebugLog("启动转盘活动! actNum=%s,itemState=%s,hadGetCount=%s, superLimitTurnCount=%s,superRate=%s" 
-                       % (actNum, itemState, hadGetCount, superLimitTurnCount, superRate))
-    GameWorld.DebugLog("    canGetItemInfoDict=%s" % canGetItemInfoDict)
-    
-    if not canGetItemInfoDict:
-        return
-    
-    randNum = 0
-    worldNotifyKey = ""
-    giveItemInfo = []
-    canGetCommNumList = canGetItemInfoDict.get(ItemLibType_Comm, {}).keys()
-    canGetGoodNumList = canGetItemInfoDict.get(ItemLibType_Good, {}).keys()
-    randNumWithoutSuperList = canGetCommNumList + canGetGoodNumList
-    GameWorld.DebugLog("    不含终极物品的编号: %s" % (randNumWithoutSuperList))
-    
-    if hadGetCount >= superLimitTurnCount and ItemLibType_Super in canGetItemInfoDict:
-        GameWorld.DebugLog("    有机会获得终极物品: superRate=%s" % superRate)
-        if not randNumWithoutSuperList or GameWorld.CanHappen(superRate): # 没有其他物品了必出终极
-            randNum = random.choice(canGetItemInfoDict[ItemLibType_Super].keys())
-            giveItemInfo = canGetItemInfoDict[ItemLibType_Super][randNum]
-            GameWorld.DebugLog("    获得终极物品! randNum=%s,giveItemInfo=%s" % (randNum, giveItemInfo))
-            worldNotifyKey = ipyData.GetWorldNotifyKey()
-        
-    if not giveItemInfo and randNumWithoutSuperList:
-        randNum = random.choice(randNumWithoutSuperList)
-        
-        if randNum in canGetGoodNumList:
-            giveItemInfo = canGetItemInfoDict[ItemLibType_Good][randNum]
-            GameWorld.DebugLog("    获得极品物品! randNum=%s,giveItemInfo=%s" % (randNum, giveItemInfo))
-            worldNotifyKey = ipyData.GetWorldNotifyKey()
-        else:
-            giveItemInfo = canGetItemInfoDict[ItemLibType_Comm][randNum]
-            GameWorld.DebugLog("    获得常规物品! randNum=%s,giveItemInfo=%s" % (randNum, giveItemInfo))
-                
-    if not giveItemInfo or not randNum:
-        return
-    
-    updItemState = itemState | pow(2, randNum)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableItemState % actNum, updItemState)
-    updCanUseCount = canUseCount - 1
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TurntableCanUseCount % actNum, updCanUseCount)
-    GameWorld.DebugLog("    randNum=%s,updItemState=%s,updCanUseCount=%s" % (randNum, updItemState, updCanUseCount))
-    
-    itemID, itemCount, isAuctionItem = giveItemInfo
-    ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem], event=["ActTurntable", False, {}])
-    
-    if worldNotifyKey:
-        PlayerControl.WorldNotify(0, worldNotifyKey, [curPlayer.GetPlayerName(), itemID, itemCount])
-        
-    Sync_TurntablePlayerInfo(curPlayer, actNum, randNum)
-    return
-
-
-def Sync_TurntablePlayerInfo(curPlayer, actNum, getItemNum=0):
-    ## 通知玩家数据信息
-    # @param getItemNum: 本次转盘获得的对应物品编号
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Turntable, actNum)
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    if not cfgID:
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActTurntable", cfgID)
-    if not ipyData:
-        return
-    
-    playerActInfo = ChPyNetSendPack.tagMCActTurntablePlayerInfo()
-    playerActInfo.ActNum = actNum
-    playerActInfo.CanUseCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableCanUseCount % actNum)
-    playerActInfo.CTGTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableCTGValue % actNum)
-    playerActInfo.UseMoneyTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableUseGold % actNum)
-    playerActInfo.TurnItemState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableItemState % actNum)
-    playerActInfo.GetItemNum = getItemNum
-    NetPackCommon.SendFakePack(curPlayer, playerActInfo)
-    return
-
-def Sync_TurntableActionInfo(curPlayer, actNum):
-    ## 通知活动信息
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Turntable, actNum)
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    if not cfgID:
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActTurntable", cfgID)
-    if not ipyData:
-        return
-    
-    actWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableWorldLV % actNum)
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
-    
-    clientPack = ChPyNetSendPack.tagMCActTurntableInfo()
-    clientPack.ActNum = actNum
-    clientPack.StartDate = startDateStr
-    clientPack.EndtDate = endDateStr
-    clientPack.IsDayReset = ipyData.GetIsDayReset()
-    clientPack.LimitLV = ipyData.GetLVLimit()
-    clientPack.CTGPrizeList = [CommFunc.RMBToCoin(floatRMB) for floatRMB in ipyData.GetCTGPrizeList()]
-    clientPack.CTGPrizeCount = len(clientPack.CTGPrizeList)
-    clientPack.UseMoneyType = ipyData.GetUseMoneyType()
-    clientPack.UseMoneyPrizeList = ipyData.GetUseMoneyPrizeList()
-    clientPack.UseMoneyPrizeCount = len(clientPack.UseMoneyPrizeList)
-    
-    numCountList = ipyData.GetLibChooseCountList()
-    numCountTotal = sum([numCount for numCount in numCountList])
-    
-    clientPack.TurnItemList = []
-    for num in xrange(1, numCountTotal + 1):
-        itemIDInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableItemID % (actNum, num))
-        itemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TurntableItemCount % (actNum, num))
-        itemID, itemLibType = itemIDInfo / 10, itemIDInfo % 10
-        if not itemID:
-            break
-        packItem = ChPyNetSendPack.tagMCActTurntableItem()
-        packItem.ItemNum = num
-        packItem.ItemLibType = itemLibType
-        packItem.ItemID = itemID
-        packItem.ItemCount = itemCount
-        clientPack.TurnItemList.append(packItem)
-    clientPack.TurnItemCount = len(clientPack.TurnItemList)
-    
-    clientPack.GoodItemCanChooseCount = numCountList[1] if len(numCountList) > 1 else 0
-    goodItemLib = GameWorld.GetDictValueByRangeKey(ipyData.GetGoodItemLib(), actWorldLV, [])
-    for num, itemInfo in enumerate(goodItemLib, 1):
-        itemID, itemCount, _ = itemInfo
-        packItem = ChPyNetSendPack.tagMCActTurntableItem()
-        packItem.ItemNum = num
-        packItem.ItemLibType = ItemLibType_Good
-        packItem.ItemID = itemID
-        packItem.ItemCount = itemCount
-        clientPack.GoodItemList.append(packItem)
-    clientPack.GoodItemCount = len(clientPack.GoodItemList)
-    
-    clientPack.SuperItemCanChooseCount = numCountList[2] if len(numCountList) > 2 else 0
-    superItemLib = GameWorld.GetDictValueByRangeKey(ipyData.GetSuperItemLib(), actWorldLV, [])
-    for num, itemInfo in enumerate(superItemLib, 1):
-        itemID, itemCount, _ = itemInfo
-        packItem = ChPyNetSendPack.tagMCActTurntableItem()
-        packItem.ItemNum = num
-        packItem.ItemLibType = ItemLibType_Super
-        packItem.ItemID = itemID
-        packItem.ItemCount = itemCount
-        clientPack.SuperItemList.append(packItem)
-    clientPack.SuperItemCount = len(clientPack.SuperItemList)
-    
-    NetPackCommon.SendFakePack(curPlayer, clientPack)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActYunshi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActYunshi.py
deleted file mode 100644
index 879c89a..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActYunshi.py
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerActYunshi
-#
-# @todo:运势活动
-# @author hxp
-# @date 2024-11-08
-# @version 1.0
-#
-# 详细描述: 运势活动
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-11-08 15:00"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ChPyNetSendPack
-import PlayerTreasure
-import NetPackCommon
-import GameWorld
-import ChConfig
-
-def OnPlayerLogin(curPlayer):
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_Yunshi, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        isReset = __CheckPlayerActYunshiAction(curPlayer, actNum)
-        # 活动中同步活动信息
-        if not isReset and actInfo.get(ShareDefine.ActKey_State):
-            Sync_ActYunshiActionInfo(curPlayer, actNum)
-    return
-
-def RefreshActYunshiActionInfo(actNum):
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerActYunshiAction(curPlayer, actNum)
-    return
-
-def __CheckPlayerActYunshiAction(curPlayer, actNum):
-    ## 检查玩活动数据信息
-    
-    playerID = curPlayer.GetPlayerID()
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Yunshi, actNum)
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActYunshiID % actNum) # 玩家身上的活动ID
-    lastTreasureType = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActYunshiTreasureType % actNum)
-    
-    # 活动ID 相同的话不处理
-    if actID == playerActID:
-        GameWorld.DebugLog("运势活动ID不变,不处理! actNum=%s,cfgID=%s,actID=%s" % (actNum, cfgID, actID), playerID)
-        return
-    GameWorld.DebugLog("运势活动重置! actNum=%s,cfgID=%s,actID=%s,playerActID=%s,state=%s,lastTreasureType=%s" 
-                       % (actNum, cfgID, actID, playerActID, state, lastTreasureType), playerID)
-    if lastTreasureType:
-        PlayerTreasure.ResetTreasureType(curPlayer, [lastTreasureType])
-        
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActYunshiID % actNum, actID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActYunshiTreasureType % actNum, 0)
-    
-    if state:
-        ipyData = IpyGameDataPY.GetIpyGameData("ActYunshi", cfgID)
-        if ipyData:
-            treasureType = ipyData.GetTreasureType()
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActYunshiTreasureType % actNum, treasureType)
-            PlayerTreasure.ResetTreasureType(curPlayer, [treasureType])
-            
-        Sync_ActYunshiActionInfo(curPlayer, actNum)
-    return True
-
-def IsActTreasureType(curPlayer, treasureType):
-    ## 是否活动中的寻宝类型
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_Yunshi, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        if not actInfo.get(ShareDefine.ActKey_State):
-            continue
-        if treasureType == curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActYunshiTreasureType % actNum):
-            return True
-    return False
-
-def Sync_ActYunshiActionInfo(curPlayer, actNum):
-    ## 通知活动信息
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Yunshi, actNum)
-    if not actInfo:
-        return
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    ipyData = IpyGameDataPY.GetIpyGameData("ActYunshi", cfgID)
-    if not ipyData:
-        return
-    
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
-    actPack = ChPyNetSendPack.tagMCActYunshiInfo()
-    actPack.Clear()
-    actPack.ActNum = actNum
-    actPack.StartDate = startDateStr
-    actPack.EndtDate = endDateStr
-    actPack.ResetType = ipyData.GetResetType()
-    actPack.LimitLV = ipyData.GetLVLimit()
-    actPack.TreasureType = ipyData.GetTreasureType()
-    NetPackCommon.SendFakePack(curPlayer, actPack)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
index 0996c27..db22045 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -41,15 +41,11 @@
 import NetPackCommon
 import IpyGameDataPY
 import ShareDefine
-import PlayerFlashGiftbag
-import PlayerDailyGiftbag
 import PlayerGoldGift
 import PlayerActTotalRecharge
 import PlayerActManyDayRecharge
 import PlayerActSingleRecharge
-import PlayerActGrowupBuy
 import PlayerGoldInvest
-import PlayerActTurntable
 import PlayerZhanling
 import PlayerGoldRush
 import PlayerLLMJ
@@ -173,7 +169,6 @@
     ## 充值相关过天
     
     #在重置之前需要处理的
-    PlayerActGrowupBuy.DoUpdateGrowupBuyStateOnDay(curPlayer) # 成长必买
     
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCoinTotal, 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGRealToday, 0)
@@ -485,13 +480,6 @@
             return
         moneyType, addGold, prizeGold, giveItemList, ctgIpyData = ctgResultInfo
         
-    elif ipyData.GetGiftbagID():
-        giftbagID = ipyData.GetGiftbagID()
-        if 100 <= giftbagID < 199:
-            if not PlayerDailyGiftbag.OnPlayerOrderDailyGiftbag(curPlayer, giftbagID, addDRDict):
-                return
-        elif not PlayerFlashGiftbag.OnPlayerOrderGiftbag(curPlayer, [ipyData.GetGiftbagID()], addDRDict):
-            return
     else:
         #用于支付其他的商品,待扩展...
         DataRecordPack.DR_CTGError(curPlayer, "The orderInfo is useless!", addDRDict)
@@ -524,13 +512,6 @@
     
     addDRDict.update({"recordID":recordID})
     
-    # 成长必买类型
-    if ipyData.GetPayType() == PayType_GrowupBuy:
-        canBuy, errInfo = PlayerActGrowupBuy.CheckGrowupBuyState(curPlayer, recordID)
-        if not canBuy:
-            DataRecordPack.DR_CTGError(curPlayer, errInfo, addDRDict)
-            return
-        
     totalBuyCountLimit = ipyData.GetTotalBuyCount()
     totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID)
     if totalBuyCountLimit:
@@ -664,27 +645,9 @@
         return []
     
     gainItemList = ipyData.GetGainItemList()
-    actWorldLVGainItemInfo = ipyData.GetActWorldLVGainItemInfo()
-    giveItemList = []
-    # 活动世界等级对应物品信息,如果有对应活动支持 且 该配置有配,则默认走该配置,否则使用常规的默认物品配置
-    payTypeActNameDict = {PayType_GrowupBuy:ShareDefine.OperationActionName_GrowupBuy,
-                          
-                          # ... 有新增的活动需要支持,则在此新增配置上即可,后面取物品的逻辑都是一样的
-                          }
-    if actWorldLVGainItemInfo and ipyData.GetPayType() in payTypeActNameDict:
-        actName = payTypeActNameDict[ipyData.GetPayType()]
-        actInfo = PyGameData.g_operationActionDict.get(actName, {}) # 注:相关状态在前置逻辑已经判断过,这里不再判断
-        actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-        actWorldLVList = [int(strWorldLV) for strWorldLV in actWorldLVGainItemInfo.keys()]
-        actWorldLVList.sort() # 使用 int 的值排,否则可能引起排序错误
-        for worldLV in actWorldLVList:
-            if actWorldLV <= worldLV:
-                giveItemList = actWorldLVGainItemInfo[str(worldLV)]
-                break
-        if not giveItemList:
-            giveItemList = actWorldLVGainItemInfo[str(actWorldLVList[-1])] # 没有匹配到的话默认取最后一个等级配置
-    else:
-        giveItemList = gainItemList
+    #actWorldLVGainItemInfo = ipyData.GetActWorldLVGainItemInfo()
+    #giveItemList = []
+    giveItemList = gainItemList
     return giveItemList
 
 def __OnCTGReal(curPlayer, orderCoin):
@@ -813,7 +776,6 @@
     #累积充值X元
     PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin, coinType)
     PlayerActSingleRecharge.UpdSingleRechargeValue(curPlayer, orderCoin, coinType) # 单笔累充
-    PlayerActTurntable.OnPlayerRecharge(curPlayer, orderCoin, coinType) # 转盘
     #投资
     if ctgIpyData:
         ctgID = ctgIpyData.GetRecordID()
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 aff7785..143459c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3959,12 +3959,6 @@
     totalExpRate = GetPlayerExpRate(curPlayer)
     fightExpRate = curPlayer.GetFightExpRate() # 系统及功能累加
     
-    actExpRateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ExpRate, {})# 多倍经验活动加成
-    if actExpRateInfo.get(ShareDefine.ActKey_State):
-        actExpIpyData = IpyGameDataPY.GetIpyGameData("ActExpRate", actExpRateInfo.get(ShareDefine.ActKey_CfgID))
-        if actExpIpyData and curPlayer.GetLV() >= actExpIpyData.GetLVLimit():
-            fightExpRate += actExpIpyData.GetAddExpRate()
-            
     #if curPlayer.GetMapID() not in [ChConfig.Def_FBMapID_FamilyInvade]: #守卫人皇不加组队加成
     #    fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDailyGiftbag.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDailyGiftbag.py
deleted file mode 100644
index 7c81f58..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDailyGiftbag.py
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerDailyGiftbag
-#
-# @todo:每日礼包
-# @author hxp
-# @date 2020年3月12日
-# @version 1.0
-#
-# 详细描述: 每日礼包
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2020年3月12日 12:00"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import NetPackCommon
-import ChPyNetSendPack
-import DataRecordPack
-import ItemControler
-import IPY_GameWorld
-import ItemCommon
-import GameWorld
-import ChConfig
-import CommFunc
-import PlayerCoin
-
-def OnPlayerLogin(curPlayer):
-    __CheckPlayerDailyGiftbagAction(curPlayer)
-    return
-
-def RefreshDailyGiftbagActionInfo():
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerDailyGiftbagAction(curPlayer)
-    return
-
-def __CheckPlayerDailyGiftbagAction(curPlayer):
-    ## 检查玩家每日礼包活动数据信息
-    
-    playerID = curPlayer.GetPlayerID()
-    
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_DailyGiftbag, {})
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not state or not cfgID:
-        return
-    
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGiftbagID) # 玩家身上的活动ID
-    cfgIpyData = IpyGameDataPY.GetIpyGameData("ActDailyGiftbag", cfgID)
-    if not cfgIpyData:
-        return
-    giftbagType = cfgIpyData.GetGiftbagType()
-    
-    isReset = False
-    if actID != playerActID:
-        isReset = True
-        __ResetGiftbagItemBuyCount(curPlayer, giftbagType)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGiftbagID, actID)
-        GameWorld.DebugLog("每日礼包重置! actID=%s,playerActID=%s,state=%s,giftbagType=%s" % (actID, playerActID, state, giftbagType), playerID)
-    else:
-        GameWorld.DebugLog("每日礼包活动ID不变,不处理!", curPlayer.GetPlayerID())
-        SyncDailyGiftbagBuyCount(curPlayer, giftbagType)
-        
-    Sync_DailyGiftbagActionInfo(curPlayer)
-    return isReset
-
-def __ResetGiftbagItemBuyCount(curPlayer, giftbagType):
-    ##重置每日礼包限购物品次数
-    
-    giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("DailyGiftbag", {"GiftbagType":giftbagType}, True, True)
-    if not giftbagIpyDataList:
-        return
-    for giftIpyData in giftbagIpyDataList:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGiftbagBuyCount % giftIpyData.GetGiftbagID(), 0)
-    SyncDailyGiftbagBuyCount(curPlayer, giftbagType)
-    return
-
-def OnPlayerOrderDailyGiftbag(curPlayer, giftbagID, addDRDict, isCTG=True):
-    ## 玩家订购每日礼包
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_DailyGiftbag, {})
-    if not actInfo:
-        if isCTG:
-            DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag action info is null!", addDRDict)
-        return
-    
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    if not state:
-        if isCTG:
-            DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag state is 0!", addDRDict)
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    cfgIpyData = IpyGameDataPY.GetIpyGameData("ActDailyGiftbag", cfgID)
-    if not cfgIpyData:
-        if isCTG:
-            DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag GiftbagType is null!", addDRDict)
-        return
-    giftbagType = cfgIpyData.GetGiftbagType()
-    
-    giftbagIpyData = IpyGameDataPY.GetIpyGameData("DailyGiftbag", giftbagType, giftbagID)
-    if not giftbagIpyData:
-        if isCTG:
-            DataRecordPack.DR_CTGError(curPlayer, "DailyGiftbag giftbagType=%s giftbagID=%s can not found!" 
-                                       % (giftbagType, giftbagID), addDRDict)
-        return
-    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    giftItemList = __GetJobItemList(giftbagIpyData.GetGiftItemList(), curPlayer.GetJob(), actWorldLV)
-    addDRDict.update({"giftbagType":giftbagType, "giftbagID":giftbagID, "giftItemList":giftItemList})
-    buyCountLimit = giftbagIpyData.GetBuyCountLimit()
-    buyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGiftbagBuyCount % giftbagID)
-    if buyCountLimit:
-        addDRDict.update({"buyCountLimit":buyCountLimit, "buyCount":buyCount})
-        if buyCount >= buyCountLimit:
-            if isCTG:
-                PlayerCoin.ExchangePayCoin(curPlayer, "DailyGiftbag Pay count limit !buyCount=%s,buyCountLimit=%s" 
-                                           % (buyCount, buyCountLimit), addDRDict)
-            return
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGiftbagBuyCount % giftbagID, buyCount + 1)
-    
-    if giftItemList:
-        eventName = "DailyGiftbag" if not isCTG else ChConfig.ItemGive_CTG
-        ItemControler.GivePlayerItemOrMail(curPlayer, giftItemList, "", event=[eventName, True, addDRDict])
-        
-    SyncDailyGiftbagBuyCount(curPlayer, giftbagType)
-    return True
-
-def OnGetDailyFreeGiftbag(curPlayer):
-    ## 领取每日免费直购礼包
-    giftbagID = 0 # 免费礼包ID固定为0
-    addDRDict = {}
-    OnPlayerOrderDailyGiftbag(curPlayer, giftbagID, addDRDict, False)
-    return
-
-def __GetJobItemList(giftItemInfo, job, worldLV):
-    jobItemList = []
-    if isinstance(giftItemInfo, dict):
-        itemList = GameWorld.GetDictValueByRangeKey(giftItemInfo, worldLV, [])
-    else:
-        itemList = giftItemInfo
-    for itemID, itemCnt, isBind in itemList:
-        if type(itemID) == int:
-            jobItemList.append([itemID, itemCnt, isBind])
-        elif job in itemID:
-            jobItemList.append([itemID[job], itemCnt, isBind])
-    return jobItemList
-
-def SyncDailyGiftbagBuyCount(curPlayer, giftbagType):
-    ## 通知每日礼包玩家活动信息
-    
-    giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("DailyGiftbag", {"GiftbagType":giftbagType}, True, True)
-    if not giftbagIpyDataList:
-        return
-    
-    giftbagBuyInfo = ChPyNetSendPack.tagMCDailyGiftbagPlayerInfo()
-    giftbagBuyInfo.BuyCountList = []
-    for giftIpyData in giftbagIpyDataList:
-        giftbagID = giftIpyData.GetGiftbagID()
-        buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGiftbagBuyCount % giftbagID)
-        if buyCnt <= 0:
-            continue
-        buyCountInfo = ChPyNetSendPack.tagMCDailyGiftbagBuyCount()
-        buyCountInfo.GiftbagID = giftbagID
-        buyCountInfo.BuyCount = buyCnt
-        giftbagBuyInfo.BuyCountList.append(buyCountInfo)
-    giftbagBuyInfo.Count = len(giftbagBuyInfo.BuyCountList)
-    NetPackCommon.SendFakePack(curPlayer, giftbagBuyInfo)
-    return
-
-def Sync_DailyGiftbagActionInfo(curPlayer):
-    ## 通知每日礼包活动信息
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_DailyGiftbag, {})
-    if not actInfo:
-        return
-    
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not cfgID:
-        return
-    
-    cfgIpyData = IpyGameDataPY.GetIpyGameData("ActDailyGiftbag", cfgID)
-    if not cfgIpyData:
-        return
-    giftbagType = cfgIpyData.GetGiftbagType()
-    
-    giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("DailyGiftbag", {"GiftbagType":giftbagType}, True, True)
-    if not giftbagIpyDataList:
-        return
-    
-    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    # 取玩家APPID,混服使用
-    appID = GameWorld.GetPlayerPlatform(curPlayer)
-    
-    packInfo = ChPyNetSendPack.tagMCDailyGiftbagInfo()
-    packInfo.GiftbagInfo = []
-    packInfo.LimitLV = cfgIpyData.GetLVLimit()
-    for giftIpyData in giftbagIpyDataList:
-        giftbagID = giftIpyData.GetGiftbagID()
-        orderIpyData = GetGiftbagIDOrderInfoIpyData(giftbagID, appID)
-        
-        giftBag = ChPyNetSendPack.tagMCDailyGiftbag()
-        giftBag.GiftID = giftbagID
-        giftBag.OrderInfo = "" if not orderIpyData else orderIpyData.GetOrderInfo()
-        giftBag.OrderInfoLen = len(giftBag.OrderInfo)
-        giftBag.BuyCountLimit = giftIpyData.GetBuyCountLimit()
-        giftBag.RMB = 0 if not orderIpyData else CommFunc.RMBToCoin(orderIpyData.GetPayRMBNum())
-        giftBag.ItemInfo = []
-        for itemID, itemCount, isBind in __GetJobItemList(giftIpyData.GetGiftItemList(), curPlayer.GetJob(), actWorldLV):
-            item = ChPyNetSendPack.tagMCDailyGiftbagItem()
-            item.ItemID = itemID
-            item.ItemCount = itemCount
-            giftBag.ItemInfo.append(item)
-        giftBag.GiftItemCount = len(giftBag.ItemInfo)
-        giftBag.Discount = giftIpyData.GetDiscount()
-        packInfo.GiftbagInfo.append(giftBag)
-        
-    packInfo.GiftbagCount = len(packInfo.GiftbagInfo)
-    NetPackCommon.SendFakePack(curPlayer, packInfo)
-    return
-
-def GetGiftbagIDOrderInfoIpyData(giftbagID, appID):
-    ## 获取礼包ID对应数据配置
-    key = "GiftbagIpyDataDict"
-    GiftbagIpyDataDict = IpyGameDataPY.GetConfigEx(key)
-    if not GiftbagIpyDataDict:
-        GiftbagIpyDataDict = {}
-        ipyDataMgr = IpyGameDataPY.IPY_Data()
-        for i in xrange(ipyDataMgr.GetOrderInfoCount()):
-            ipyData = ipyDataMgr.GetOrderInfoByIndex(i)
-            if not ipyData.GetGiftbagID():
-                continue
-            GiftbagIpyDataDict[(ipyData.GetGiftbagID(), ipyData.GetAppID())] = ipyData
-        IpyGameDataPY.SetConfigEx(key, GiftbagIpyDataDict)
-    return GiftbagIpyDataDict.get((giftbagID, appID))
-
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 36abc3f..e191eca 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -32,16 +32,13 @@
 import PlayerGoldGift
 import PlayerActivity
 import FBCommon
-import PlayerFreeGoods
 import ChItem
 import GameLogic_Tianzi
 import PlayerGoldInvest
-import PlayerActTurntable
 import PlayerActTask
 import PlayerActBuyCountGift
 import PlayerActLoginNew
 import PlayerOfflineSupport
-import PlayerWishingWell
 import PlayerTreasure
 import PlayerZhanling
 import PlayerLove
@@ -291,8 +288,6 @@
     #寻宝
     PlayerTreasure.OnDay(curPlayer)
     PlayerGoldGift.OnDay(curPlayer)
-    #转盘
-    PlayerActTurntable.PlayerOnDay(curPlayer)
     #情缘
     PlayerLove.DoPlayerOnDay(curPlayer)
     #仙宫
@@ -311,8 +306,6 @@
     PlayerFamily.PlayerOnDay(curPlayer)
     # 重置物品每日使用次数
     ChItem.ResetItemUseCntToday(curPlayer)
-    # 极品白拿
-    PlayerFreeGoods.OnDay(curPlayer)
     #采集次数重置
     NPCCommon.PlayerOnDay(curPlayer)
     #竞技场
@@ -320,8 +313,6 @@
     
     # 以下为支持两种重置模式切换配置的
     FBCommon.FBOnDay(curPlayer, onEventType)
-    #许愿池
-    PlayerWishingWell.OnDay(curPlayer)
     #任务活动
     PlayerActTask.OnDay(curPlayer)
     #登录活动
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
deleted file mode 100644
index 43af6b8..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
+++ /dev/null
@@ -1,338 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFlashGiftbag
-#
-# @todo:限时礼包
-# @author hxp
-# @date 2018-7-20
-# @version 1.0
-#
-# 详细描述: 限时礼包
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-7-20 17:30"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import NetPackCommon
-import ChPyNetSendPack
-import DataRecordPack
-import ItemControler
-import GameWorld
-import ChConfig
-import CommFunc
-import PlayerCoin
-
-
-def GetGiftbagTypeList(cfgID, dayIndex, woldLV):
-    if cfgID == None or dayIndex == None:
-        return []
-    ipyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)
-    if not ipyData:
-        return []
-    giftbagTypeList = GameWorld.GetDictValueByRangeKey(ipyData.GetGiftbagTypeList(), woldLV, [])
-    todayGiftbag = giftbagTypeList[-1] if dayIndex >= len(giftbagTypeList) else giftbagTypeList[dayIndex]
-    return todayGiftbag
-
-def OnPlayerLogin(curPlayer):
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashGiftbag, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        isReset = __CheckPlayerFlashGiftbagAction(curPlayer, actNum)
-        if not isReset:
-            pass
-        
-    return
-
-def RefreshFlashGiftbagActionInfo(actNum):
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerFlashGiftbagAction(curPlayer, actNum)
-    return
-
-def __CheckPlayerFlashGiftbagAction(curPlayer, actNum):
-    ## 检查玩家显示礼包活动数据信息
-    
-    playerID = curPlayer.GetPlayerID()
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FlashGiftbag, actNum)
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagID % actNum) # 玩家身上的活动ID
-    giftbagTypeList = [] if not cfgID else GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
-    isReset = False
-    if actID != playerActID:
-        isReset = True
-        Sync_FlashGiftbagActionInfo(curPlayer, actNum)
-        __ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList, actNum)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagID % actNum, actID)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState % actNum, 0)
-        GameWorld.DebugLog("限时礼包重置! actNum=%s,actID=%s,playerActID=%s,state=%s,giftbagTypeList=%s" 
-                           % (actNum, actID, playerActID, state, giftbagTypeList), playerID)
-    else:
-        GameWorld.DebugLog("限时礼包活动ID不变,不处理!actNum=%s,playerActID=%s" % (actNum, playerActID), curPlayer.GetPlayerID())
-        
-    playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagMailState % actNum) # 玩家身上的活动提醒邮件状态
-    if actID and state and state != playerMailState:
-        flashGiftbagIpyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)
-        if flashGiftbagIpyData and flashGiftbagIpyData.GetMailKey() and curPlayer.GetLV() >= flashGiftbagIpyData.GetLVLimit():
-            PlayerControl.SendMailByKey(flashGiftbagIpyData.GetMailKey(), [playerID], flashGiftbagIpyData.GetMailItemPrize())
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState % actNum, state)
-            GameWorld.DebugLog("    发送新限时礼包邮件提醒! state=%s,playerMailState=%s" % (state, playerMailState), playerID)
-            
-    if not isReset and cfgID:
-        Sync_FlashGiftbagActionInfo(curPlayer, actNum)
-        if giftbagTypeList:
-            SyncFlashGiftbagBuyCount(curPlayer, actNum, giftbagTypeList=giftbagTypeList)
-    return isReset
-
-def __ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList, actNum):
-    ##重置限时礼包限购物品次数
-    syncIDList = []
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for i in xrange(ipyDataMgr.GetFlashGiftbagCount()):
-        giftbag = ipyDataMgr.GetFlashGiftbagByIndex(i)
-        if not giftbag.GetBuyCountLimit():
-            continue
-        if giftbag.GetGiftbagType() not in giftbagTypeList:
-            continue
-        buyCntKey = ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftbag.GetGiftbagID())
-        if curPlayer.NomalDictGetProperty(buyCntKey) <= 0:
-            continue
-        PlayerControl.NomalDictSetProperty(curPlayer, buyCntKey, 0)
-        syncIDList.append(giftbag.GetGiftbagID())
-    if syncIDList:
-        SyncFlashGiftbagBuyCount(curPlayer, actNum, syncIDList)
-    return
-
-def OnPlayerOrderGiftbag(curPlayer, giftbagIDList, addDRDict):
-    ## 玩家订购限时礼包
-    
-    canBuy = False
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashGiftbag, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        
-        state = actInfo.get(ShareDefine.ActKey_State, 0)
-        if not state:
-            continue
-        
-        cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-        giftbagTypeList = GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
-        
-        if not giftbagTypeList:
-            continue
-        actGiftbagType = giftbagTypeList[-1] if state > len(giftbagTypeList) else giftbagTypeList[state - 1]
-        giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("FlashGiftbag", {"GiftbagType":actGiftbagType}, True, True)
-        actGiftbagIDList = []
-        giftbagIpyData = None
-        for ipyData in giftbagIpyDataList:
-            actGiftbagIDList.append(ipyData.GetGiftbagID())
-            if ipyData.GetGiftbagID() in giftbagIDList:
-                giftbagIpyData = ipyData
-                break
-            
-        if not giftbagIpyData:
-            continue
-        
-        flashGiftbagIpyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)
-        if not flashGiftbagIpyData:
-            continue
-        isJueban = flashGiftbagIpyData.GetIsJueban()
-        if isJueban:
-            for ipyData in giftbagIpyDataList:
-                juebanGiftbagID = ipyData.GetGiftbagID()
-                juebanBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, juebanGiftbagID))
-                if juebanGiftbagID not in giftbagIDList and juebanBuyCount > 0:
-                    DataRecordPack.DR_CTGError(curPlayer, "FlashGiftbag JueBan pay limit! have already bought other giftbagID=%s" % juebanGiftbagID, addDRDict)
-                    return
-                
-        giftbagID = giftbagIpyData.GetGiftbagID()
-        giftItemList = __GetJobItemList(giftbagIpyData.GetGiftItemList(), curPlayer.GetJob()) 
-        addDRDict.update({"giftbagID":giftbagID, "giftItemList":giftItemList})
-        buyCountLimit = giftbagIpyData.GetBuyCountLimit()
-        buyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftbagID))
-        if buyCountLimit:
-            addDRDict.update({"buyCountLimit":buyCountLimit, "buyCount":buyCount})
-            if buyCount >= buyCountLimit:
-                PlayerCoin.ExchangePayCoin(curPlayer, "FlashGiftbag Pay count limit !buyCount=%s,buyCountLimit=%s" 
-                                           % (buyCount, buyCountLimit), addDRDict)
-                return
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftbagID), buyCount + 1)
-        
-        if giftItemList:
-            ItemControler.GivePlayerItemOrMail(curPlayer, giftItemList, "", event=[ChConfig.ItemGive_CTG, True, addDRDict])
-        
-        # 取玩家APPID,混服使用
-        appID = GameWorld.GetPlayerPlatform(curPlayer)
-        notifyKey = giftbagIpyData.GetNotifyKey()
-        if notifyKey:
-            orderIpyData = GetFlashGiftbagIDOrderInfoIpyData(giftbagID, appID)
-            rmb = "0" if not orderIpyData else str(orderIpyData.GetPayRMBNum()) # RMB支持小数,这里直接转str广播
-            PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), rmb, giftbagIpyData.GetMainItemID()])
-        
-        SyncFlashGiftbagBuyCount(curPlayer, actNum, [giftbagID])
-        
-        canBuy = True
-        GameWorld.DebugLog("    购买限时礼包: actNum=%s,actGiftbagType=%s,giftbagID=%s,buyCount=%s,isJueban=%s" 
-                           % (actNum, actGiftbagType, giftbagID, buyCount + 1, isJueban))
-        break
-    
-    if not canBuy:
-        DataRecordPack.DR_CTGError(curPlayer, "FlashGiftbag can not buy!", addDRDict)
-        return
-    
-    return True
-
-def __GetJobItemList(itemList, job):
-    jobItemList = []
-    for itemID, itemCnt, isBind in itemList:
-        if type(itemID) == int:
-            jobItemList.append([itemID, itemCnt, isBind])
-        elif job in itemID:
-            jobItemList.append([itemID[job], itemCnt, isBind])
-    return jobItemList
-
-def SyncFlashGiftbagBuyCount(curPlayer, actNum, syncIDList=[], giftbagTypeList=[]):
-    ## 通知限时礼包玩家活动信息
-    giftbagBuyInfo = ChPyNetSendPack.tagMCFlashGiftbagPlayerInfo()
-    giftbagBuyInfo.ActNum = actNum
-    giftbagBuyInfo.BuyCountList = []
-    if syncIDList:
-        for giftID in syncIDList:
-            buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftID))
-            buyCountInfo = ChPyNetSendPack.tagMCFlashGiftbagBuyCount()
-            buyCountInfo.GiftbagID = giftID
-            buyCountInfo.BuyCount = buyCnt
-            giftbagBuyInfo.BuyCountList.append(buyCountInfo)
-    else:
-        ipyDataMgr = IpyGameDataPY.IPY_Data()
-        for i in xrange(ipyDataMgr.GetFlashGiftbagCount()):
-            giftbag = ipyDataMgr.GetFlashGiftbagByIndex(i)
-            if not giftbag.GetBuyCountLimit():
-                continue
-            if giftbagTypeList and giftbag.GetGiftbagType() not in giftbagTypeList:
-                continue
-            giftID = giftbag.GetGiftbagID()
-            buyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagBuyCount % (actNum, giftID))
-            if buyCnt <= 0:
-                continue
-            buyCountInfo = ChPyNetSendPack.tagMCFlashGiftbagBuyCount()
-            buyCountInfo.GiftbagID = giftID
-            buyCountInfo.BuyCount = buyCnt
-            giftbagBuyInfo.BuyCountList.append(buyCountInfo)
-    giftbagBuyInfo.Count = len(giftbagBuyInfo.BuyCountList)
-    NetPackCommon.SendFakePack(curPlayer, giftbagBuyInfo)
-    return
-
-def Sync_FlashGiftbagActionInfo(curPlayer, actNum):
-    ## 通知限时礼包活动信息
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FlashGiftbag, actNum)
-    if not actInfo:
-        return
-    
-    #需要提前通知,所以去掉此限制
-    #if not actInfo.get(ShareDefine.ActKey_State):
-    #    return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not cfgID:
-        return
-    giftbagTypeList = GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
-    
-    if not giftbagTypeList:
-        return
-    
-    flashGiftbagIpyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)
-    if not flashGiftbagIpyData:
-        return
-    
-    startTimeList = flashGiftbagIpyData.GetStartTimeList()
-    endTimeList = flashGiftbagIpyData.GetEndTimeList()
-    if len(startTimeList) != len(endTimeList):
-        GameWorld.ErrLog("限时礼包开关时间时分配置错误!cfgID=%s" % cfgID)
-        return
-    
-    # 取玩家APPID,混服使用
-    appID = GameWorld.GetPlayerPlatform(curPlayer)
-    
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(flashGiftbagIpyData)
-    packInfo = ChPyNetSendPack.tagMCFlashGiftbagInfo()
-    packInfo.ActNum = actNum
-    packInfo.StartDate = startDateStr
-    packInfo.EndtDate = endDateStr
-    packInfo.AdvanceMinutes = flashGiftbagIpyData.GetAdvanceMinutes()
-    packInfo.ActivityTime = []
-    for i, startTime in enumerate(startTimeList):
-        timeInfo = ChPyNetSendPack.tagMCFlashGiftbagTime()
-        timeInfo.StartTime = startTime
-        timeInfo.EndtTime = endTimeList[i]
-        packInfo.ActivityTime.append(timeInfo)
-    packInfo.ActivityTimeCount = len(packInfo.ActivityTime)
-    packInfo.IsDayReset = flashGiftbagIpyData.GetIsDayReset()
-    packInfo.LimitLV = flashGiftbagIpyData.GetLVLimit()
-    packInfo.GiftbagTypeInfo = []
-    for giftbagType in giftbagTypeList:
-        
-        giftbagIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("FlashGiftbag", {"GiftbagType":giftbagType}, True, True)
-        if not giftbagIpyDataList:
-            continue
-        
-        giftType = ChPyNetSendPack.tagMCFlashGiftbagType()
-        giftType.GiftbagInfo = []
-        
-        for giftIpyData in giftbagIpyDataList:
-            giftbagID = giftIpyData.GetGiftbagID()
-            orderIpyData = GetFlashGiftbagIDOrderInfoIpyData(giftbagID, appID)
-            giftBag = ChPyNetSendPack.tagMCFlashGiftbag()
-            giftBag.GiftID = giftbagID
-            giftBag.OrderInfo = "" if not orderIpyData else orderIpyData.GetOrderInfo()
-            giftBag.OrderInfoLen = len(giftBag.OrderInfo)
-            giftBag.BuyCountLimit = giftIpyData.GetBuyCountLimit()
-            giftBag.RMB = 0 if not orderIpyData else CommFunc.RMBToCoin(orderIpyData.GetPayRMBNum())
-            giftBag.RMBOriginal = CommFunc.RMBToCoin(giftIpyData.GetOriginalRMB())
-            giftBag.ItemInfo = []
-            for itemID, itemCount, isBind in __GetJobItemList(giftIpyData.GetGiftItemList(), curPlayer.GetJob()):
-                item = ChPyNetSendPack.tagMCFlashGiftbagItem()
-                item.ItemID = itemID
-                item.ItemCount = itemCount
-                item.IsBind = isBind
-                item.IsMainItem = int(itemID == giftIpyData.GetMainItemID())
-                giftBag.ItemInfo.append(item)
-            giftBag.GiftItemCount = len(giftBag.ItemInfo)
-            giftType.GiftbagInfo.append(giftBag)
-            
-        giftType.GiftbagCount = len(giftType.GiftbagInfo)
-        packInfo.GiftbagTypeInfo.append(giftType)
-        
-    packInfo.GiftbagTypeCount = len(packInfo.GiftbagTypeInfo)
-    NetPackCommon.SendFakePack(curPlayer, packInfo)
-    return
-
-def GetFlashGiftbagIDOrderInfoIpyData(giftbagID, appID):
-    ## 获取礼包ID对应实际售价
-    key = "FlashGiftbagIDRMB"
-    FlashGiftbagIDRMBDict = IpyGameDataPY.GetConfigEx(key)
-    if not FlashGiftbagIDRMBDict:
-        FlashGiftbagIDRMBDict = {}
-        ipyDataMgr = IpyGameDataPY.IPY_Data()
-        for i in xrange(ipyDataMgr.GetOrderInfoCount()):
-            ipyData = ipyDataMgr.GetOrderInfoByIndex(i)
-            #if ipyData.GetAppID() != appID:
-            #    continue
-            if not ipyData.GetGiftbagID():
-                continue
-            FlashGiftbagIDRMBDict[(ipyData.GetGiftbagID(), ipyData.GetAppID())] = ipyData
-        IpyGameDataPY.SetConfigEx(key, FlashGiftbagIDRMBDict)
-    return FlashGiftbagIDRMBDict.get((giftbagID, appID))
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py
deleted file mode 100644
index 400d4e8..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py
+++ /dev/null
@@ -1,323 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFlashSale
-#
-# @todo:限时抢购活动
-# @author xdh
-# @date 2018-7-17
-# @version 1.0
-#
-# 详细描述: 限时抢购活动
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-7-17 12:00"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import FunctionNPCCommon
-import ChPyNetSendPack
-import NetPackCommon
-import GameWorld
-import ChConfig
-
-import datetime
-
-def GetActNumDictType(actNum):
-    '''获取活动分组编号对应的字典类型
-    因为本功能用了 ClearNomalDict 不同的活动分组必须不一样的字典类型,不能可能导致不同活动分组数据异常
-    '''
-    actType = actNum / 10
-    if actType == ShareDefine.ActType_OpenComm:
-        return ChConfig.Def_PDictType_FlashSale
-    if actType == ShareDefine.ActType_MixServer:
-        return ChConfig.Def_PDictType_FlashSaleMix
-    if actType == ShareDefine.ActType_Feast:
-        return ChConfig.Def_PDictType_FlashSaleFeast
-    return 0
-
-def GetShopTypeList(cfgID, dayIndex, state, woldLV):
-    if cfgID == 0 or state == 0:
-        return []
-    ipyData = IpyGameDataPY.GetIpyGameData("ActFlashSale", cfgID)
-    if not ipyData:
-        return []
-    shopTypeList = GameWorld.GetDictValueByRangeKey(ipyData.GetShopTypeList(), woldLV, [])
-    if not shopTypeList:
-        return []
-    todayShopTypeList = shopTypeList[-1] if dayIndex >= len(shopTypeList) else shopTypeList[dayIndex]
-    return [todayShopTypeList[state - 1] if state - 1 < len(todayShopTypeList) else todayShopTypeList[-1]]
-
-
-def OnPlayerLogin(curPlayer):
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashSale, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        __CheckPlayerflashSaleAction(curPlayer, actNum)
-        
-    return
-
-def RefreshflashSaleActionInfo(actNum):
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerflashSaleAction(curPlayer, actNum)
-    return
-
-
-def __CheckPlayerflashSaleAction(curPlayer, actNum):
-    ## 检查玩家限时抢购活动数据信息
-    
-    playerID = curPlayer.GetPlayerID()
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FlashSale, actNum)
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
-    woldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    dType = GetActNumDictType(actNum)
-    
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleID % actNum, 0, dType)  # 玩家身上的活动ID
-    playerActState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleState % actNum, 0, dType)  # 玩家身上的活动State
-    playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleMailState % actNum, 0, dType)  # 玩家身上的活动提醒邮件状态
-    isReset = False
-    if actID != playerActID or (state != playerActState):
-        isReset = True
-        if cfgID:
-            flashSaleIpyData = IpyGameDataPY.GetIpyGameData("ActFlashSale", cfgID)
-            if not flashSaleIpyData:
-                return
-            startDate, _ = GameWorld.GetOperationActionDateStr(flashSaleIpyData)
-            startTimeNum = GameWorld.ChangeTimeStrToNum(startDate, timeFormat=ChConfig.TYPE_Time_Format_Day)
-        else:
-            startTimeNum = 0
-        if playerMailState != startTimeNum:
-            GameWorld.DebugLog('    限时抢购活动重置! actNum=%s,dType=%s' % (actNum, dType), playerID)
-            curPlayer.ClearNomalDict(dType)
-            
-        shopTypeList = GetShopTypeList(cfgID, dayIndex, state, woldLV)
-        if shopTypeList:
-            FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashSaleID % actNum, actID, dType)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashSaleState % actNum, state, dType)
-        #Sync_flashSaleActionInfo(curPlayer)
-        GameWorld.DebugLog("限时抢购单场重置! actNum=%s,actID=%s,playerActID=%s,dayIndex=%s,state=%s,playerActState=%s,shopTypeList=%s,playerMailState=%s" % (actNum, actID, playerActID, dayIndex, state, playerActState, shopTypeList,playerMailState), playerID)
-    else:
-        GameWorld.DebugLog("限时抢购活动ID不变,不处理!actNum=%s,actID=%s,state=%s" % (actNum, actID, state), playerID)
-        
-    if cfgID:
-        Sync_flashSaleActionInfo(curPlayer, actNum)
-        Sync_FlashSaleAppointmentInfo(curPlayer, actNum)
-    return isReset
-
-def IsFlashSaleShopType(shopType):
-    ## 判断是否活动中的商店
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashSale, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        
-        state = actInfo.get(ShareDefine.ActKey_State, 0)
-        if not state:
-            continue
-        shopTypeList = GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), state, actInfo.get(ShareDefine.ActKey_WorldLV, 0))
-        if not shopTypeList:
-            continue
-        actShopType = shopTypeList[0]
-        if shopType == actShopType:
-            GameWorld.DebugLog("限时抢购活动中的商店类型: actNum=%s,shopType=%s" % (actNum, shopType))
-            return True
-        
-    GameWorld.DebugLog("限时抢购非活动中或非活动中的商店类型!shopType=%s" % (shopType))
-    return False
-
-def ProcessFlashSaleMail(curPlayer, tick):
-    if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_FlashSale, tick):
-        return
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashSale, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        if not actInfo:
-            continue
-        cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-        if not cfgID:
-            continue
-        dType = GetActNumDictType(actNum)
-        playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleMailState % actNum, 0, dType)  # 玩家身上的活动提醒邮件状态
-        if playerMailState:
-            continue
-        flashSaleIpyData = IpyGameDataPY.GetIpyGameData("ActFlashSale", cfgID)
-        if not flashSaleIpyData:
-            continue
-        mailKey = flashSaleIpyData.GetMailKey()
-        LVLimit = flashSaleIpyData.GetLVLimit()
-        if not mailKey or curPlayer.GetLV() < LVLimit:
-            continue
-        startDate, endDate = GameWorld.GetOperationActionDateStr(flashSaleIpyData)
-        startTimeList = flashSaleIpyData.GetStartTimeList()
-        endTimeList = flashSaleIpyData.GetEndTimeList()
-        if not startTimeList or not endTimeList:
-            continue
-        advanceMinutes = flashSaleIpyData.GetAdvanceMinutes()
-        startTime = datetime.datetime.strptime("%s %s:00" % (startDate, startTimeList[0]), ChConfig.TYPE_Time_Format) + datetime.timedelta(minutes=-advanceMinutes)
-        endTime = datetime.datetime.strptime("%s %s:00" % (endDate, endTimeList[-1]), ChConfig.TYPE_Time_Format)
-        curDateTime = GameWorld.GetCurrentTime()
-        if startTime <= curDateTime <= endTime:
-            paramList = [startDate.replace('-','/'), endDate.replace('-','/'), GameWorld.GbkToCode('、').join(startTimeList)]
-            PlayerControl.SendMailByKey(mailKey, [curPlayer.GetID()], flashSaleIpyData.GetMailItemPrize(), paramList)
-            startTimeNum = GameWorld.ChangeTimeStrToNum(startDate, timeFormat=ChConfig.TYPE_Time_Format_Day)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashSaleMailState % actNum, startTimeNum, dType)
-            GameWorld.DebugLog("    发送新限时抢购邮件提醒!", curPlayer.GetID())
-    #    else:
-    #        GameWorld.DebugLog("    发送新限时抢购邮件提醒  时间没到!startTime=%s,endTime=%s,curDateTime=%s"%(startTime,endTime,curDateTime), curPlayer.GetID())
-    return
-
-
-def Sync_flashSaleActionInfo(curPlayer, actNum):
-    ## 通知限时抢购活动信息
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FlashSale, actNum)
-    if not actInfo:
-        return
-    
-    #需要提前通知,所以去掉此限制
-    #if not actInfo.get(ShareDefine.ActKey_State):
-    #    return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not cfgID:
-        return
-
-    flashSaleIpyData = IpyGameDataPY.GetIpyGameData("ActFlashSale", cfgID)
-    if not flashSaleIpyData:
-        return
-    woldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    shopTypeList = GameWorld.GetDictValueByRangeKey(flashSaleIpyData.GetShopTypeList(), woldLV, [])
-    startTimeList = flashSaleIpyData.GetStartTimeList()
-    endTimeList = flashSaleIpyData.GetEndTimeList()
-    if len(startTimeList) != len(endTimeList):
-        GameWorld.ErrLog("限时抢购开关时间时分配置错误!cfgID=%s" % cfgID)
-        return
-    job = curPlayer.GetJob()
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(flashSaleIpyData)
-    packInfo = ChPyNetSendPack.tagMCFlashSaleInfo()
-    packInfo.ActNum = actNum
-    packInfo.StartDate = startDateStr
-    packInfo.EndtDate = endDateStr
-    packInfo.AdvanceMinutes = flashSaleIpyData.GetAdvanceMinutes()
-    packInfo.ActivityTime = []
-    for i, startTime in enumerate(startTimeList):
-        timeInfo = ChPyNetSendPack.tagMCFlashSaleTime()
-        timeInfo.StartTime = startTime
-        timeInfo.EndtTime = endTimeList[i]
-        packInfo.ActivityTime.append(timeInfo)
-    packInfo.ActivityTimeCount = len(packInfo.ActivityTime)
-    packInfo.IsDayReset = flashSaleIpyData.GetIsDayReset()
-    packInfo.LimitLV = flashSaleIpyData.GetLVLimit()
-    packInfo.ShopInfo = []
-    for dayIndex, shopList in enumerate(shopTypeList):
-        for timeIndex, shopType in enumerate(shopList): 
-            shopItemIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType}, True, True)
-            if not shopItemIpyDataList:
-                continue
-            
-            shop = ChPyNetSendPack.tagMCFlashSaleShop()
-            shop.DayIndex = dayIndex
-            shop.TimeIndex = timeIndex
-            shop.GiftbagInfo = []
-            
-            for itemIpyData in shopItemIpyDataList:
-                giftBag = ChPyNetSendPack.tagMCFlashSaleGiftbag()
-                giftBag.GiftID = itemIpyData.GetID()
-                giftBag.BuyCountLimit = itemIpyData.GetLimitCnt()
-                giftBag.ServerBuyCountLimit = 0
-                giftBag.MoneyType = itemIpyData.GetMoneyType()
-                giftBag.MoneyNumber = itemIpyData.GetMoneyNum()
-                giftBag.MoneyOriginal = itemIpyData.GetMoneyOriginal()
-                giftBag.ItemID = itemIpyData.GetItemID()
-                giftBag.ItemCount = itemIpyData.GetItemCnt()
-                giftBag.IsBind = 0
-                shop.GiftbagInfo.append(giftBag)
-                
-            shop.GiftbagCount = len(shop.GiftbagInfo)
-            packInfo.ShopInfo.append(shop)
-        
-    packInfo.ShopCount = len(packInfo.ShopInfo)
-    NetPackCommon.SendFakePack(curPlayer, packInfo)
-    return
-
-
-#// AA 05 限时抢购预约 #tagCMFlashSaleAppointment
-#
-#struct     tagCMFlashSaleAppointment
-#{
-#    tagHead        Head;
-#    BYTE        ActNum;        //活动编号
-#    DWORD        GoodsID;         // 抢购商品标识
-#    BYTE        State;         // 1-预约 0-取消
-#};
-def OnFlashSaleAppointment(index, packData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    actNum = packData.ActNum
-    goodsID = packData.GoodsID
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FlashSale, actNum)
-    if not actInfo:
-        return
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not cfgID:
-        return
-    dType = GetActNumDictType(actNum)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashSaleYY % (actNum, goodsID), packData.State, dType)
-    Sync_FlashSaleAppointmentInfo(curPlayer, actNum, goodsID)
-    return
-
-
-def Sync_FlashSaleAppointmentInfo(curPlayer, actNum, goodsID=0):
-    ##通知限时抢购预约情况
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FlashSale, actNum)
-    if not actInfo:
-        return
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not cfgID:
-        return
-    flashSaleIpyData = IpyGameDataPY.GetIpyGameData("ActFlashSale", cfgID)
-    if not flashSaleIpyData:
-        return
-    woldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    dType = GetActNumDictType(actNum)
-    
-    packInfo = ChPyNetSendPack.tagMCFlashSaleAppointmentInfo()
-    packInfo.ActNum = actNum
-    packInfo.GoodsList = []
-    if goodsID == 0:
-        packInfo.IsAll = 1
-        shopTypeList = GameWorld.GetDictValueByRangeKey(flashSaleIpyData.GetShopTypeList(), woldLV, [])
-        for dayIndex, shopList in enumerate(shopTypeList):
-            for timeIndex, shopType in enumerate(shopList):
-                shopItemIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType}, True, True)
-                if not shopItemIpyDataList:
-                    continue
-                for i in xrange(len(shopItemIpyDataList)):
-                    goodsMark = dayIndex * 10000 + timeIndex * 100 + i  #商品标识
-                    isAppointment = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleYY % (actNum, goodsMark), 0, dType)
-                    if isAppointment:
-                        appoinetmentPack = ChPyNetSendPack.tagMCFlashSaleAppointmentState()
-                        appoinetmentPack.GoodsMark = goodsMark
-                        appoinetmentPack.State = 1
-                        packInfo.GoodsList.append(appoinetmentPack)
-    else:
-        packInfo.IsAll = 0
-        isAppointment = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleYY % (actNum, goodsID), 0, dType)
-        appoinetmentPack = ChPyNetSendPack.tagMCFlashSaleAppointmentState()
-        appoinetmentPack.GoodsMark = goodsID
-        appoinetmentPack.State = isAppointment
-        packInfo.GoodsList.append(appoinetmentPack)
-    packInfo.GoodsCount = len(packInfo.GoodsList)
-    NetPackCommon.SendFakePack(curPlayer, packInfo)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFreeGoods.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFreeGoods.py
deleted file mode 100644
index ff2cbd0..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFreeGoods.py
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFreeGoods
-#
-# @todo:极品白拿
-# @author xdh
-# @date 2018-07-10 16:50
-# @version 1.0
-#
-#
-# 详细描述: 极品白拿
-#
-#---------------------------------------------------------------------
-"""Version = 2018-07-10 16:50"""
-#---------------------------------------------------------------------
-
-import GameWorld
-import ChConfig
-import IPY_GameWorld
-import IpyGameDataPY
-import ChPyNetSendPack
-import PlayerControl
-import ItemControler
-import NetPackCommon
-
-import time
-
-
-
-def DoFreeGoodsOpen(curPlayer):
-    ## 极品白拿开启  记录开启时间
-    
-    FreeGoodsOpenTime = IpyGameDataPY.GetFuncCfg("FreeGoodsOpenTime")
-    if not FreeGoodsOpenTime:
-        return
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreeGoodsOpenTime, int(time.time()))
-    
-    Sync_FreeGoodsInfo(curPlayer)
-    return
-
-## 登陆通知
-#  @param curPlayer
-#  @return None
-def OnLogin(curPlayer):
-    openTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsOpenTime)
-    if not openTime:
-        return
-    Sync_FreeGoodsInfo(curPlayer)
-    return
-
-## 过天
-#  @param curPlayer
-#  @return None
-def OnDay(curPlayer):
-    '''当抢购倒计时结束,玩家有可领取返还的仙玉,且没有在可领取倒计时中的仙玉时,
-        若玩家在最后一个可领取返还仙玉倒计时结束的当天未领取仙玉,则在隔天凌晨5:00帮其把所有未领取仙玉领取通过邮件发放
-    '''
-    openTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsOpenTime)
-    if not openTime:
-        return
-    curTimeNum = int(time.time())
-    if curTimeNum - openTime <= IpyGameDataPY.GetFuncCfg('FreeGoodsOpenTime'):
-        #GameWorld.DebugLog("极品白拿购买时间未到期,不处理!")
-        return
-    giveMoney = 0
-    giveGoodsIDList = []
-    for i in xrange(IpyGameDataPY.IPY_Data().GetFreeGoodsCount()):
-        ipyData = IpyGameDataPY.IPY_Data().GetFreeGoodsByIndex(i)
-        goodsID = ipyData.GetID()
-        goodsState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsBuyState % goodsID)
-        if goodsState in [0, 1]:
-            continue
-        buyTime = goodsState
-        passDays = GameWorld.GetDiff_Day(curTimeNum, buyTime)
-        if passDays <= ipyData.GetReturnDays():
-            giveMoney = 0
-            giveGoodsIDList = []
-            #GameWorld.DebugLog("    还有白拿奖励领奖时间未预期,不处理! goodsID=%s,passDays=%s" % (goodsID, passDays))
-            break
-        giveMoney += ipyData.GetNeedMoney()
-        giveGoodsIDList.append(goodsID)
-    if giveMoney:
-        GameWorld.DebugLog('    极品白拿邮件返还 giveMoney=%s,giveGoodsIDList=%s' % (giveMoney, giveGoodsIDList), curPlayer.GetID())
-        for goodsID in giveGoodsIDList:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreeGoodsBuyState % goodsID, 1)
-        PlayerControl.SendMailByKey('WhiteTakeJade', [curPlayer.GetID()], [], [], giveMoney)
-        
-        Sync_FreeGoodsInfo(curPlayer)
-    return
-
-def OnGetFreeGoods(curPlayer, freeGoodsID):
-    #购买or领取返还
-    openTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsOpenTime)
-    if not openTime:
-        GameWorld.DebugLog(' 极品白拿活动未开启!', curPlayer.GetID())
-        return
-    ipyData = IpyGameDataPY.GetIpyGameData('FreeGoods', freeGoodsID)
-    if not ipyData:
-        return
-    curTimeNum = int(time.time())
-    goodsState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsBuyState % freeGoodsID)
-    addDataDict = {"freeGoodsID":freeGoodsID}
-    if goodsState == 1:
-        GameWorld.DebugLog(' 极品白拿已领取该奖励!', curPlayer.GetID())
-        return
-    if goodsState != 0:
-        #领取返还
-        buyTime = goodsState
-        passDays = GameWorld.GetDiff_Day(curTimeNum, buyTime)
-        if passDays < ipyData.GetReturnDays():
-            GameWorld.DebugLog(' 极品白拿 未到返还时间!freeGoodsID=%s, buyTime=%s, passDays=%s < %s' 
-                               % (freeGoodsID, GameWorld.ChangeTimeNumToStr(buyTime), passDays, ipyData.GetReturnDays()), curPlayer.GetID())
-            return
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreeGoodsBuyState % freeGoodsID, 1)
-        returnMoney = ipyData.GetNeedMoney()
-        
-        PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, returnMoney, ChConfig.Def_GiveMoney_FreeGoods, addDataDict)
-        
-    else:
-        #购买
-        if curTimeNum - openTime > IpyGameDataPY.GetFuncCfg('FreeGoodsOpenTime'):
-            GameWorld.DebugLog(' 极品白拿活动已过期!', curPlayer.GetID())
-            return
-        needMoney = ipyData.GetNeedMoney()
-        if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, needMoney, ChConfig.Def_Cost_FreeGoods, addDataDict):
-            return
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FreeGoodsBuyState % freeGoodsID, curTimeNum)
-        #给物品
-        awardItemDict = ipyData.GetAwardItem()
-        awardItemList = awardItemDict.get(str(curPlayer.GetJob()), [])
-        ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, "WhiteTakeBagFull", event=["FreeGoods", False, addDataDict])
-        
-    Sync_FreeGoodsInfo(curPlayer, [freeGoodsID])
-    return
-
-def Sync_FreeGoodsInfo(curPlayer, freeGoodsIDList=[]):
-    #通知极品白拿信息
-    sendPack = ChPyNetSendPack.tagMCFreeGoodsInfo()
-    sendPack.Clear()
-    sendPack.OpenTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsOpenTime)
-    sendPack.FreeGoodsList = []
-    for i in xrange(IpyGameDataPY.IPY_Data().GetFreeGoodsCount()):
-        ipyData = IpyGameDataPY.IPY_Data().GetFreeGoodsByIndex(i)
-        goodsID = ipyData.GetID()
-        if freeGoodsIDList and goodsID not in freeGoodsIDList:
-            continue
-        goodsInfo = ChPyNetSendPack.tagMCFreeGoods()
-        goodsInfo.ID = goodsID
-        goodsInfo.BuyState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FreeGoodsBuyState % goodsID)
-        sendPack.FreeGoodsList.append(goodsInfo)
-    
-    sendPack.Count = len(sendPack.FreeGoodsList)
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLuckyTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLuckyTreasure.py
deleted file mode 100644
index 4418f33..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLuckyTreasure.py
+++ /dev/null
@@ -1,242 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerLuckyTreasure
-#
-# @todo:幸运鉴宝
-# @author xdh
-# @date 2019-2-12 19:50
-# @version 1.0
-#
-#
-# 详细描述: 幸运鉴宝
-#
-#---------------------------------------------------------------------
-"""Version = 2019-2-12 19:50"""
-#---------------------------------------------------------------------
-
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import IpyGameDataPY
-import PlayerControl
-import ChPyNetSendPack
-import NetPackCommon
-import ShareDefine
-import PyGameData
-import ItemControler
-import ItemCommon
-
-
-
-def OnLogin(curPlayer):
-    isReset = __CheckPlayerLuckyTreasureAction(curPlayer)
-    if not isReset:
-        actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LuckyTreasure, {})
-        # 活动中同步活动信息
-        if actCostRebateInfo.get(ShareDefine.ActKey_State):
-            SyncLuckyTreasureInfo(curPlayer)
-            SyncLuckyTreasureResultInfo(curPlayer)
-        
-    return
-
-def RefreshLuckyTreasureAction():
-    __InitLuckyTreasureRateList()
-    playerManager = GameWorld.GetPlayerManager()
-    for i in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(i)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerLuckyTreasureAction(curPlayer)
-    return
-
-def __CheckPlayerLuckyTreasureAction(curPlayer):
-    ## 检查玩家幸运鉴宝活动数据信息
-    global g_randomWellDict
-
-    playerID = curPlayer.GetPlayerID()
-    
-    actLuckyTreasureInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LuckyTreasure, {})
-    LuckyTreasureID = actLuckyTreasureInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actLuckyTreasureInfo.get(ShareDefine.ActKey_State, 0)
-    #cfgID = actLuckyTreasureInfo.get(ShareDefine.ActKey_CfgID, 0)
-    worldLV = actLuckyTreasureInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    playerLuckyTreasureID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyTreasureID)  # 玩家身上的活动ID
-    
-    # 活动ID 相同的话不处理
-    if LuckyTreasureID == playerLuckyTreasureID:
-        #GameWorld.DebugLog("幸运鉴宝活动ID不变,不处理!", curPlayer.GetPlayerID())
-        return
-    msgStr = str([ShareDefine.Def_UniversalGameRecType_LuckyTreasure, 2])
-    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'DelUniversalGameRec', msgStr, len(msgStr))
-    GameWorld.DebugLog("幸运鉴宝重置! LuckyTreasureID=%s,playerLuckyTreasureID=%s,state=%s,worldLv=%s" 
-                       % (LuckyTreasureID, playerLuckyTreasureID, state, worldLV), playerID)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyTreasureID, LuckyTreasureID)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyTreasureFree, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyTreasurePoint, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyTreasureCnt, 0)
-    
-    
-    SyncLuckyTreasureInfo(curPlayer)
-    SyncLuckyTreasureResultInfo(curPlayer)
-    return True
-
-def __InitLuckyTreasureRateList():
-    global g_itemRateList
-    actLuckyTreasureInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LuckyTreasure, {})
-    state = actLuckyTreasureInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actLuckyTreasureInfo.get(ShareDefine.ActKey_CfgID, 0)
-    worldLV = actLuckyTreasureInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    if not cfgID or not worldLV or not state:
-        return
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActLuckyTreasure", cfgID)
-    if not actIpyData:
-        return
-    templateID = actIpyData.GetTemplateID()
-    ipyDataList = IpyGameDataPY.GetIpyGameDataList('LuckyTreasureTemplate', templateID)
-    if not ipyDataList:
-        return
-    tWeight = 0
-    g_itemRateList = []
-    for ipyData in ipyDataList:
-        worldLVLimit = ipyData.GetWorldLVLimit()
-        if worldLV < worldLVLimit[0] or worldLV > worldLVLimit[1]:
-            continue
-        itemID = ipyData.GetItemID()
-        itemCnt = ipyData.GetItemCnt()
-        isBind = ipyData.GetIsBind()
-        weight = ipyData.GetWeight()
-        tWeight += weight
-        g_itemRateList.append([tWeight, [itemID, itemCnt, isBind]])
-    return
-
-def __GetRandomRateList():
-    if not g_itemRateList:
-        __InitLuckyTreasureRateList()
-    return g_itemRateList
-
-
-#// AA 08 开始幸运鉴宝 #tagCMStartLuckyTreasure
-#struct    tagCMStartLuckyTreasure
-#{
-#    tagHead        Head;
-#};
-def OnStartLuckyTreasure(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LuckyTreasure, {})
-    state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not state or not cfgID:
-        return
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActLuckyTreasure", cfgID)
-    if not actIpyData:
-        return
-    
-    hasFree = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyTreasureFree)
-    if hasFree:
-        costMoney = IpyGameDataPY.GetFuncCfg('LuckyAppraisal')
-        if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costMoney):
-            return
-    # 检查背包
-    needSpace = 1
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-    if needSpace > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    
-    randomRateList = __GetRandomRateList()
-    if not randomRateList:
-        return
-    greatItem = randomRateList[-1][1]
-    
-    curLuckyPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyTreasurePoint)
-    curLuckyCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyTreasureCnt)
-    
-    maxLuckyPoint = actIpyData.GetLuckyPoint()
-    singlePoint = IpyGameDataPY.GetFuncCfg('LuckyAppraisal', 2)
-    if curLuckyPoint + singlePoint >= maxLuckyPoint:
-        giveItem = greatItem
-        newLuckyPoint = 0
-    else:
-        if curLuckyCnt < IpyGameDataPY.GetFuncCfg('LuckyAppraisal', 3):
-            #前X次鉴宝不能出大奖
-            randomResultList = GameWorld.GetResultByRandomListEx(randomRateList[:-1], 1, [])
-        else:
-            randomResultList = GameWorld.GetResultByRandomListEx(randomRateList, 1, [])
-        if len(randomResultList) != 1:
-            GameWorld.DebugLog('    开始幸运鉴宝 随机库结果 获取错误 !')
-            return
-        giveItem = randomResultList[0]
-    if giveItem == greatItem:
-        newLuckyPoint = 0
-        playerName = curPlayer.GetName()
-        PlayerControl.WorldNotify(0, 'LuckyAppraisal_1', [playerName, greatItem[0]])
-        msgStr = str([ShareDefine.Def_UniversalGameRecType_LuckyTreasure, [], [curPlayer.GetName()], 2, 0])
-        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'AddUniversalGameRec', msgStr, len(msgStr))
-
-    else:
-        newLuckyPoint = curLuckyPoint + singlePoint
-    if hasFree:
-        PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costMoney, ChConfig.Def_Cost_LuckyTreasure)
-    else:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyTreasureFree, 1)
-    #更新幸运值
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyTreasurePoint, newLuckyPoint)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LuckyTreasureCnt, curLuckyCnt + 1)
-    
-    for itemID, itemCount, isBind in [giveItem]:
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem], event=[ChConfig.ItemGive_LuckyTreasure, False, {"isFree":not hasFree}])
-    
-    SyncLuckyTreasureResultInfo(curPlayer, giveItem)
-    return
-
-
-def SyncLuckyTreasureInfo(curPlayer):
-    ##同步幸运鉴宝活动信息
-    actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LuckyTreasure, {})
-    state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not state or not cfgID:
-        return
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActLuckyTreasure", cfgID)
-    if not actIpyData:
-        return
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actIpyData)
-    actInfo = ChPyNetSendPack.tagMCLuckyTreasureInfo()
-    actInfo.Clear()
-    actInfo.StartDate = startDateStr
-    actInfo.EndtDate = endDateStr
-    actInfo.ResetType = actIpyData.GetResetType()
-    actInfo.LimitLV = actIpyData.GetLVLimit()
-    actInfo.LuckyPoint = actIpyData.GetLuckyPoint()
-    actInfo.ItemList = []
-    randomItemList = __GetRandomRateList()
-    for itemInfo in randomItemList:
-        itemID, itemCnt, isBind = itemInfo[1]
-        wellItemInfo = ChPyNetSendPack.tagMCLuckyTreasureItem()
-        wellItemInfo.ItemID = itemID
-        wellItemInfo.ItemCnt = itemCnt
-        wellItemInfo.IsBind = isBind
-        actInfo.ItemList.append(wellItemInfo)
-    actInfo.Count = len(actInfo.ItemList)
-    NetPackCommon.SendFakePack(curPlayer, actInfo)
-    return
-
-
-def SyncLuckyTreasureResultInfo(curPlayer, itemInfo=[]):
-    ##同步幸运鉴宝玩家信息
-    packInfo = ChPyNetSendPack.tagMCLuckyTreasureResultInfo()
-    packInfo.Clear()
-    packInfo.LuckyPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyTreasurePoint)
-    packInfo.HasFree = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LuckyTreasureFree)
-    if itemInfo:
-        packInfo.ItemID = itemInfo[0]
-        packInfo.ItemCnt = itemInfo[1]
-        packInfo.IsBind = itemInfo[2]
-    NetPackCommon.SendFakePack(curPlayer, packInfo)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py
deleted file mode 100644
index 8abbaef..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerSpringSale
-#
-# @todo:限时特惠活动
-# @author hxp
-# @date 2018-7-17
-# @version 1.0
-#
-# 详细描述: 限时特惠活动
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-7-17 12:00"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import FunctionNPCCommon
-import ChPyNetSendPack
-import NetPackCommon
-import GameWorld
-import ChConfig
-
-def GetShopTypeList(cfgID, dayIndex, woldLV):
-    if cfgID == None or dayIndex == None:
-        return []
-    ipyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID)
-    if not ipyData:
-        return []
-    shopTypeList = GameWorld.GetDictValueByRangeKey(ipyData.GetShopTypeList(), woldLV, [])
-    todayShopType = shopTypeList[-1] if dayIndex >= len(shopTypeList) else shopTypeList[dayIndex]
-    return todayShopType
-
-def OnPlayerLogin(curPlayer):
-    
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SpringSale, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        __CheckPlayerSpringSaleAction(curPlayer, actNum)
-        
-    return
-
-def RefreshSpringSaleActionInfo(actNum):
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerSpringSaleAction(curPlayer, actNum)
-    return
-
-def __CheckPlayerSpringSaleAction(curPlayer, actNum):
-    ## 检查玩家限时特惠活动数据信息
-    
-    playerID = curPlayer.GetPlayerID()
-    
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_SpringSale, actNum)
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    woldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleID % actNum) # 玩家身上的活动ID
-    isReset = False
-    if actID != playerActID:
-        isReset = True
-        shopTypeList = GetShopTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), woldLV)
-        FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID % actNum, actID)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState % actNum, 0)
-        #Sync_SpringSaleActionInfo(curPlayer)
-        GameWorld.DebugLog("限时特惠重置! actNum=%s,actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actNum, actID, playerActID, state, shopTypeList), playerID)
-    else:
-        GameWorld.DebugLog("限时特惠活动ID不变,不处理!actNum=%s,actID=%s" % (actNum, actID), playerID)
-        
-    playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleMailState % actNum) # 玩家身上的活动提醒邮件状态
-    if actID and state and state != playerMailState:
-        springSaleIpyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID)
-        if springSaleIpyData and springSaleIpyData.GetMailKey() and curPlayer.GetLV() >= springSaleIpyData.GetLVLimit():
-            PlayerControl.SendMailByKey(springSaleIpyData.GetMailKey(), [playerID], springSaleIpyData.GetMailItemPrize())
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState % actNum, state)
-            GameWorld.DebugLog("    发送新限时特惠邮件提醒! state=%s,playerMailState=%s" % (state, playerMailState), playerID)
-            
-    if cfgID:
-        Sync_SpringSaleActionInfo(curPlayer, actNum)
-    return isReset
-
-def IsSpringSaleShopType(shopType):
-    ## 判断是否活动中的商店
-    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SpringSale, {}).values():
-        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        
-        state = actInfo.get(ShareDefine.ActKey_State, 0)
-        if not state:
-            continue
-        shopTypeList = GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
-        if not shopTypeList:
-            continue
-        actShopType = shopTypeList[-1] if state > len(shopTypeList) else shopTypeList[state - 1]
-        if shopType == actShopType:
-            GameWorld.DebugLog("限时特惠活动中的商店类型: actNum=%s,shopType=%s" % (actNum, shopType))
-            return True
-        
-    GameWorld.DebugLog("限时特惠非活动中或非活动中的商店类型!shopType=%s" % (shopType))
-    return False
-
-def Sync_SpringSaleActionInfo(curPlayer, actNum):
-    ## 通知限时特惠活动信息
-    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_SpringSale, actNum)
-    if not actInfo:
-        return
-    
-    #需要提前通知,所以去掉此限制
-    #if not actInfo.get(ShareDefine.ActKey_State):
-    #    return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not cfgID:
-        return
-    shopTypeList = GetShopTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
-    if not shopTypeList:
-        return
-    
-    springSaleIpyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID)
-    if not springSaleIpyData:
-        return
-    
-    startTimeList = springSaleIpyData.GetStartTimeList()
-    endTimeList = springSaleIpyData.GetEndTimeList()
-    if len(startTimeList) != len(endTimeList):
-        GameWorld.ErrLog("限时特惠开关时间时分配置错误!cfgID=%s" % cfgID)
-        return
-    job = curPlayer.GetJob()
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(springSaleIpyData)
-    packInfo = ChPyNetSendPack.tagMCSpringSaleInfo()
-    packInfo.ActNum = actNum
-    packInfo.StartDate = startDateStr
-    packInfo.EndtDate = endDateStr
-    packInfo.AdvanceMinutes = springSaleIpyData.GetAdvanceMinutes()
-    packInfo.ActivityTime = []
-    for i, startTime in enumerate(startTimeList):
-        timeInfo = ChPyNetSendPack.tagMCSpringSaleTime()
-        timeInfo.StartTime = startTime
-        timeInfo.EndtTime = endTimeList[i]
-        packInfo.ActivityTime.append(timeInfo)
-    packInfo.ActivityTimeCount = len(packInfo.ActivityTime)
-    packInfo.IsDayReset = springSaleIpyData.GetIsDayReset()
-    packInfo.LimitLV = springSaleIpyData.GetLVLimit()
-    packInfo.ShopInfo = []
-    for shopType in shopTypeList:
-        
-        shopItemIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType}, True, True)
-        if not shopItemIpyDataList:
-            continue
-        
-        shop = ChPyNetSendPack.tagMCSpringSaleShop()
-        shop.GiftbagInfo = []
-        
-        for itemIpyData in shopItemIpyDataList:
-            giftBag = ChPyNetSendPack.tagMCSpringSaleGiftbag()
-            giftBag.GiftID = itemIpyData.GetID()
-            giftBag.BuyCountLimit = itemIpyData.GetLimitCnt()
-            giftBag.MoneyType = itemIpyData.GetMoneyType()
-            giftBag.MoneyNumber = itemIpyData.GetMoneyNum()
-            giftBag.MoneyOriginal = itemIpyData.GetMoneyOriginal()
-            giftBag.ItemInfo = []
-            itemList = [[itemIpyData.GetItemID(), itemIpyData.GetItemCnt(), 0]]
-            itemList += itemIpyData.GetItemListEx()
-            for itemID, itemCount, isBind in itemList:
-                item = ChPyNetSendPack.tagMCSpringSaleItem()
-                item.ItemID = itemID
-                item.ItemCount = itemCount
-                item.IsBind = isBind
-                #item.IsMainItem = int(itemID == FunctionNPCCommon.GetShopJobItem(job, itemIpyData.GetMainItemID(), jobItemList))
-                giftBag.ItemInfo.append(item)
-            giftBag.GiftItemCount = len(giftBag.ItemInfo)
-            shop.GiftbagInfo.append(giftBag)
-            
-        shop.GiftbagCount = len(shop.GiftbagInfo)
-        packInfo.ShopInfo.append(shop)
-        
-    packInfo.ShopCount = len(packInfo.ShopInfo)
-    NetPackCommon.SendFakePack(curPlayer, packInfo)
-    return
-
-
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 20d6a29..f72b7e7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1041,8 +1041,6 @@
     
     #成就
     PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick, False)
-    #限时抢购
-    #PlayerFlashSale.ProcessFlashSaleMail(curPlayer, tick)
     #淘金
     PlayerGoldRush.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 ae679c0..b710702 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -24,7 +24,6 @@
 import ItemControler
 import NetPackCommon
 import PlayerActLunhuidian
-import PlayerActYunshi
 import PlayerActivity
 import PlayerSuccess
 import PlayerGoldInvest
@@ -127,8 +126,8 @@
 
 def IsActTreasureType(curPlayer, treasureType):
     ## 是否活动中的寻宝类型
-    if PlayerActYunshi.IsActTreasureType(curPlayer, treasureType):
-        return True
+    #if PlayerActYunshi.IsActTreasureType(curPlayer, treasureType):
+    #    return True
     return False
 
 #// A5 69 寻宝心愿物品选择 #tagCSTreasureWishSelect
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py
deleted file mode 100644
index 599b016..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py
+++ /dev/null
@@ -1,453 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerWishingWell
-#
-# @todo:许愿池
-# @author xdh
-# @date 2018-10-18 19:50
-# @version 1.0
-#
-#
-# 详细描述: 许愿池
-#
-#---------------------------------------------------------------------
-"""Version = 2018-10-18 19:50"""
-#---------------------------------------------------------------------
-
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import IpyGameDataPY
-import PlayerControl
-import ChPyNetSendPack
-import NetPackCommon
-import ShareDefine
-import PyGameData
-import ItemControler
-import ItemCommon
-
-import datetime
-import time
-
-g_randomWellDict = {}
-
-
-(
-WellType_Select,  #可选库
-WellType_Result,  #结果库
-WellType_Get,  #可领取库
-) = range(3)
-
-
-def __GetItemInfoByData(curPlayer, wellType, i):
-    itemData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WishingWellItem % (wellType, i))
-    itemCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WishingWellItemCnt % (wellType, i))
-    itemID, isBind, isSpecial = itemData / 100, itemData % 100 / 10, itemData % 10
-    return itemID, itemCnt, isBind, isSpecial
-
-
-def __SetItemData(curPlayer, wellType, i, itemID, itemCnt, isBind, isSpecial):
-    itemID = __GetJobItemID(curPlayer, itemID)
-    itemData = itemID * 100 + isBind * 10 + isSpecial
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellItem % (wellType, i), itemData)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellItemCnt % (wellType, i), itemCnt)
-    return
-
-
-def __GetJobItemID(curPlayer, itemID):
-    if type(itemID) == int:
-        return itemID
-    if type(itemID) != dict:
-        return 0
-    return itemID.get(curPlayer.GetJob(), 0)
-
-
-def OnLogin(curPlayer):
-    isReset = __CheckPlayerWishingWellAction(curPlayer)
-    if not isReset:
-        actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
-        # 活动中同步活动信息
-        if actCostRebateInfo.get(ShareDefine.ActKey_State):
-            SyncWishingWellInfo(curPlayer)
-            SyncWishingWellPlayerInfo(curPlayer)
-        elif __GetItemInfoByData(curPlayer, WellType_Get, 0)[0]:
-            SyncWishingWellPlayerInfo(curPlayer)
-    return
-
-def OnDay(curPlayer):
-    actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
-    if not actCostRebateInfo.get(ShareDefine.ActKey_State):
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellFreeTime, 0)
-        __SendWishingWellMail(curPlayer, int(time.time()))
-    return
-
-def RefreshWishingWellAction():
-    __InitWishRateList()
-    playerManager = GameWorld.GetPlayerManager()
-    for i in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(i)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerWishingWellAction(curPlayer)
-    return
-
-
-def __CheckPlayerWishingWellAction(curPlayer):
-    ## 检查玩家许愿池活动数据信息
-    global g_randomWellDict
-
-    playerID = curPlayer.GetPlayerID()
-    
-    actWishingWellInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
-    WishingWellID = actWishingWellInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actWishingWellInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actWishingWellInfo.get(ShareDefine.ActKey_CfgID, 0)
-    worldLV = actWishingWellInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    playerWishingWellID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WishingWellID)  # 玩家身上的活动ID
-    
-    # 活动ID 相同的话不处理
-    if WishingWellID == playerWishingWellID:
-        #GameWorld.DebugLog("许愿池活动ID不变,不处理!", curPlayer.GetPlayerID())
-        return
-    
-    GameWorld.DebugLog("许愿池重置! WishingWellID=%s,playerWishingWellID=%s,state=%s,worldLv=%s" 
-                       % (WishingWellID, playerWishingWellID, state, worldLV), playerID)
-    
-    # 未领取的奖励邮件发放
-    curDataTime = GameWorld.GetCurrentTime()
-    curDayTime = datetime.datetime(curDataTime.year, curDataTime.month, curDataTime.day, 0, 0, 0)
-    curDayTimeNum = GameWorld.ChangeTimeStrToNum(str(curDayTime))
-    __SendWishingWellMail(curPlayer, WishingWellID or curDayTimeNum, state)
-        
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellID, WishingWellID)
-    #每天开始随机一次免费盘
-    if state:
-        #g_randomWellDict = {}
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellRefreshCnt, 0)
-        __DoActWishingRefresh(curPlayer, 1, True)
- 
-        SyncWishingWellInfo(curPlayer)
-    SyncWishingWellPlayerInfo(curPlayer)
-    return True
-
-
-def __SendWishingWellMail(curPlayer, curTime, state=-1):
-    lastAwardTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WishingWellAwardTime)
-    
-    if not lastAwardTime:
-        if state != -1:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellAwardTime, curTime)
-            GameWorld.DebugLog('__SendWishingWellMail curTime =%s'%curTime)
-        return
-    GameWorld.DebugLog('许愿池未领取的奖励邮件发放检查 lastAwardTime=%s,state=%s,pass=%s'%(lastAwardTime, state, curTime - lastAwardTime))
-    passDay = (curTime - lastAwardTime)/86000
-    if passDay <= 0:
-        return
-    isOver = True
-    count = IpyGameDataPY.GetFuncCfg('WishingWellCfg', 4)
-    mailItemList = []
-    saveItemList = []
-    for i in xrange(count):
-        itemID, itemCnt, isBind, isSpecial = __GetItemInfoByData(curPlayer, WellType_Get, i)
-        if itemID:
-            mailItemList.append([itemID, itemCnt, isBind])
-            __SetItemData(curPlayer, WellType_Get, i, 0, 0, 0, 0)
-    j = 0
-    for i in xrange(count):
-        itemID, itemCnt, isBind, isSpecial = __GetItemInfoByData(curPlayer, WellType_Result, i)
-        if not itemID:
-            continue
-        
-        if passDay == 1: #相差一天,存储奖励 
-            __SetItemData(curPlayer, WellType_Get, j, itemID, itemCnt, isBind, isSpecial)
-            saveItemList.append([itemID, itemCnt, isBind])
-            isOver = False
-        elif passDay > 1: #大于1天,直接邮件发奖励
-            mailItemList.append([itemID, itemCnt, isBind])
-        __SetItemData(curPlayer, WellType_Result, i, 0, 0, 0, 0)
-        j +=1
-    if state > 0:
-        isOver = False
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellAwardTime, 0 if isOver else curTime)
-    if mailItemList:
-        PlayerControl.SendMailByKey('WishPool', [curPlayer.GetID()], mailItemList)
-        if state == -1:
-            SyncWishingWellPlayerInfo(curPlayer)
-    GameWorld.DebugLog('许愿池距离时间 passDay=%s,mailItemList=%s,saveItemList=%s,isOver=%s,curTime=%s'%(passDay, mailItemList, saveItemList, isOver, curTime), curPlayer.GetID())
-    return
-
-
-def __InitWishRateList():
-    ## 初始许愿池随机库
-    global g_randomWellDict
-    actWishingWellInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
-    state = actWishingWellInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actWishingWellInfo.get(ShareDefine.ActKey_CfgID, 0)
-    worldLV = actWishingWellInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    if not cfgID or not state:
-        return
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActWishingWell", cfgID)
-    if not actIpyData:
-        return
-    templateID = actIpyData.GetTemplateID()
-    ipyDataList = IpyGameDataPY.GetIpyGameDataList('WishingWell', templateID)
-    if not ipyDataList:
-        return
-    g_randomWellDict = {}  # {是否免费:[[权重,[物品ID,数量,是否绑定,标识]]]}
-    weightDict = {}
-    for ipyData in ipyDataList:
-        worldLVLimit = ipyData.GetWorldLVLimit()
-        if worldLV < worldLVLimit[0] or worldLV > worldLVLimit[1]:
-            continue
-        isFree = ipyData.GetIsFree()
-        itemID = ipyData.GetItemID()
-        itemCnt = ipyData.GetItemCnt()
-        isBind = ipyData.GetIsBind()
-        weight = ipyData.GetWeight()
-        mark = ipyData.GetMark()
-        rare = ipyData.GetRare()
-        weightDict[isFree] = weightDict.get(isFree, 0) + weight
-        if isFree not in g_randomWellDict:
-            g_randomWellDict[isFree] = []
-        g_randomWellDict[isFree].append([weightDict[isFree], [itemID, itemCnt, isBind, mark, rare]])
-        
-        
-    GameWorld.DebugLog('    初始许愿池随机库 g_randomWellDict=%s' % (g_randomWellDict))
-    return
-
-
-def __GetRandomRateList(isFree):
-    ## 获取增长列表
-    if not g_randomWellDict:
-        __InitWishRateList()
-    return g_randomWellDict.get(isFree, [])
-
-
-#// AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh
-#struct     tagCMActWishingRefresh
-#{
-#    tagHead        Head;
-#    BYTE        IsFree;         // 是否免费刷新
-#};
-def OnActWishingRefresh(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
-    state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not state or not cfgID:
-        return
-    
-    isFree = clientData.IsFree
-    __DoActWishingRefresh(curPlayer, isFree)
-    #通知
-    SyncWishingWellPlayerInfo(curPlayer)
-    return
-
-def __DoActWishingRefresh(curPlayer, isFree, isSystem=False):
-    randomRateList = __GetRandomRateList(isFree)
-    if not randomRateList:
-        GameWorld.DebugLog('    许愿池活动刷新奖池 随机库获取错误 !')
-        return
-    playerID = curPlayer.GetID()
-    GameWorld.DebugLog(' isFree=%s, randomRateList=%s' % (isFree, randomRateList))
-    
-    if isFree:
-        if not isSystem:
-            freeStartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WishingWellFreeTime)
-            curTime = int(time.time())
-            freeCountCD = IpyGameDataPY.GetFuncCfg('WishingWellCfg')
-            if curTime - freeStartTime < freeCountCD:
-                GameWorld.DebugLog('许愿池活动免费刷新奖池, 免费CD未到! freeCountCD=%s, passTime=%s' % (freeCountCD, curTime - freeStartTime), playerID)
-                return
-    else:
-        refreshCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WishingWellRefreshCnt)
-        infoDict = {'refreshCnt':refreshCnt}
-        costMoney = eval(IpyGameDataPY.GetFuncCompileCfg('WishingWellCfg', 2))
-        if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costMoney):
-            return
-        
-    randomCnt = IpyGameDataPY.GetFuncCfg('WishingWellCfg', 3)
-    randomResultList = GameWorld.GetResultByRandomListEx(randomRateList, randomCnt, [])
-    if len(randomResultList) != randomCnt:
-        GameWorld.DebugLog('    许愿池活动刷新奖池 随机库结果 获取错误 !randomCnt=%s, randomResultList=%s' % (randomCnt, randomResultList))
-        return
-    
-    if not isFree:
-        PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, costMoney, ChConfig.Def_Cost_WishingWell, infoDict)
-        #增加次数
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellRefreshCnt, refreshCnt+1)
-    elif not isSystem:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellFreeTime, int(time.time()))
-        
-    for i, info in enumerate(randomResultList):
-        itemID, itemCnt, isBind, mark, rare = info
-        isSpecial = rare
-        __SetItemData(curPlayer, WellType_Select, i, itemID, itemCnt, isBind, isSpecial)
-    GameWorld.DebugLog(' 许愿池活动刷新 isFree=%s, randomResultList=%s' % (isFree, randomResultList), playerID)
-    return
-
-#// AA 06 许愿池活动许愿 #tagCMActWishing
-#struct     tagCMActWishing
-#{
-#    tagHead        Head;
-#    BYTE        SrcWellType;         // 来源库 0-可选库 1-结果库
-#    BYTE        SrcIndex;         // 来源索引
-#    BYTE        DesWellType;         // 目标库 0-可选库 1-结果库
-#    BYTE        DesIndex;         // 目标索引
-#};
-def OnActWishingDrag(index, clientData, tick):
-    srcWellType = clientData.SrcWellType
-    srcIndex = clientData.SrcIndex
-    desWellType = clientData.DesWellType
-    desIndex = clientData.DesIndex
-    if srcWellType not in [WellType_Select, WellType_Result] or desWellType not in [WellType_Select, WellType_Result]:
-        return
-    if srcWellType == desWellType:
-        return
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    playerID = curPlayer.GetID()
-    srcitemID, srcitemCnt, srcisBind, srcisSpecial = __GetItemInfoByData(curPlayer, srcWellType, srcIndex)
-    if not srcitemID:
-        GameWorld.DebugLog('许愿池活动拖拽物品 来源位置没有物品 srcWellType=%s, srcIndex=%s' % (srcWellType, srcIndex), playerID)
-        return
-    desitemID, desitemCnt, desisBind, desisSpecial = __GetItemInfoByData(curPlayer, desWellType, desIndex)
-    __SetItemData(curPlayer, desWellType, desIndex, srcitemID, srcitemCnt, srcisBind, srcisSpecial)
-    if desitemID:
-        __SetItemData(curPlayer, srcWellType, srcIndex, desitemID, desitemCnt, desisBind, desisSpecial)
-    else:
-        __SetItemData(curPlayer, srcWellType, srcIndex, 0, 0, 0, 0)
-    GameWorld.DebugLog('许愿池活动拖拽物品 desWellType=%s,desIndex=%s,srcitemID=%s'%(desWellType, desIndex,srcitemID))
-    #通知
-    SyncWellItemChange(curPlayer, [[srcWellType, srcIndex],[desWellType, desIndex]])
-    return
-
-def SyncWellItemChange(curPlayer, changeList):
-    packData = ChPyNetSendPack.tagMCActWishingDragResult()
-    packData.InfoList = []
-    for wellType, index in changeList:
-        itemID, itemCnt, isBind, isSpecial = __GetItemInfoByData(curPlayer, wellType, index)
-        changeInfo = ChPyNetSendPack.tagMCPlayerWishingDragInfo()
-        changeInfo.WellType = wellType
-        changeInfo.Index = index
-        changeInfo.ItemID = itemID
-        changeInfo.ItemCnt = itemCnt
-        changeInfo.IsBind = isBind
-        changeInfo.IsSpecial = isSpecial
-        packData.InfoList.append(changeInfo)
-    packData.Cnt = len(packData.InfoList)
-    NetPackCommon.SendFakePack(curPlayer, packData)
-    return
-
-def DoGetWishingAward(curPlayer):
-    ## 领取许愿池奖励
-    count = IpyGameDataPY.GetFuncCfg('WishingWellCfg', 4)
-    giveItemList = []
-    for i in xrange(count):
-        itemID, itemCnt, isBind, isSpecial = __GetItemInfoByData(curPlayer, WellType_Get, i)
-        if itemID:
-            giveItemList.append([itemID, itemCnt, isBind])
-    if not giveItemList:
-        GameWorld.Log('领取许愿池奖励 没有奖励可领取!', curPlayer.GetID())
-        return
-    
-    needSpace = len(giveItemList)
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-    if needSpace > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    for itemID, itemCnt, isBind in giveItemList:
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
-    for i in xrange(count):
-        __SetItemData(curPlayer, WellType_Get, i, 0, 0, 0, 0)
-    SyncWishingWellPlayerInfo(curPlayer)
-    return
-
-
-def SyncWishingWellInfo(curPlayer):
-    ##同步许愿池活动信息
-    actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
-    state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not state or not cfgID:
-        return
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActWishingWell", cfgID)
-    if not actIpyData:
-        return
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actIpyData)
-    actInfo = ChPyNetSendPack.tagMCActWishingWellInfo()
-    actInfo.Clear()
-    actInfo.StartDate = startDateStr
-    actInfo.EndtDate = endDateStr
-    actInfo.IsDayReset = actIpyData.GetIsDayReset()
-    actInfo.ResetType = actIpyData.GetResetType()
-    actInfo.LimitLV = actIpyData.GetLVLimit()
-    actInfo.WellItemInfo = []
-    randomItemList = __GetRandomRateList(0)
-    for itemInfo in randomItemList:
-        itemID, itemCnt, isBind, mark, rare = itemInfo[1]
-        wellItemInfo = ChPyNetSendPack.tagMCWishingWellItem()
-        wellItemInfo.ItemID = itemID
-        wellItemInfo.ItemCnt = itemCnt
-        wellItemInfo.IsBind = isBind
-        wellItemInfo.Mark = mark
-        wellItemInfo.Rare = rare
-        actInfo.WellItemInfo.append(wellItemInfo)
-    actInfo.Count = len(actInfo.WellItemInfo)
-    NetPackCommon.SendFakePack(curPlayer, actInfo)
-    return
-
-
-def SyncWishingWellPlayerInfo(curPlayer):
-    ##同步许愿池玩家信息
-    packData = ChPyNetSendPack.tagMCActWishingWellPlayerInfo()
-    freeStartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WishingWellFreeTime)
-    if not freeStartTime:#没有则默认活动开始时间
-        actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
-        cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
-        actIpyData = IpyGameDataPY.GetIpyGameData("ActWishingWell", cfgID)
-        if actIpyData:
-            startDate, _ = GameWorld.GetOperationActionDateStr(actIpyData)
-            
-            resetType = actIpyData.GetResetType() # 重置类型,0-0点重置;1-5点重置
-            if resetType == 1:
-                startDayDate = "%s 05:00:00" % (startDate)
-            else:
-                startDayDate = "%s 00:00:00" % (startDate)
-            freeStartTime = GameWorld.ChangeTimeStrToNum(startDayDate, timeFormat=ChConfig.TYPE_Time_Format)
-            GameWorld.DebugLog('许愿池活动开始时间 startDayDate=%s'%startDayDate)
-                
-        
-    packData.FreeStartTime = freeStartTime
-    packData.WishCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WishingWellRefreshCnt)
-    packData.WellItemInfo = []
-    __AddWishingWellItemPackInfo(curPlayer, packData.WellItemInfo, WellType_Select)
-    packData.WellItemCnt = len(packData.WellItemInfo)
-    packData.CurAwardItemInfo = []
-    __AddWishingWellItemPackInfo(curPlayer, packData.CurAwardItemInfo, WellType_Result)
-    packData.CurAwardCnt = len(packData.CurAwardItemInfo)
-    packData.LastAwardItemInfo = []
-    __AddWishingWellItemPackInfo(curPlayer, packData.LastAwardItemInfo, WellType_Get)
-    packData.LastAwardCnt = len(packData.LastAwardItemInfo)
-    NetPackCommon.SendFakePack(curPlayer, packData)
-    return
-
-
-def __AddWishingWellItemPackInfo(curPlayer, itemList, wellType):
-    if wellType == WellType_Select:
-        count = IpyGameDataPY.GetFuncCfg('WishingWellCfg', 3)
-    else:
-        count = IpyGameDataPY.GetFuncCfg('WishingWellCfg', 4)
-    for i in xrange(count):
-        itemID, itemCnt, isBind, isSpecial = __GetItemInfoByData(curPlayer, wellType, i)
-        packData = ChPyNetSendPack.tagMCPlayerWishingWellItem()
-        packData.ItemID = itemID
-        packData.ItemCnt = itemCnt
-        packData.IsBind = isBind
-        packData.IsSpecial = isSpecial
-        itemList.append(packData)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index aa92533..7b4759e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -215,62 +215,30 @@
 #所有的运营活动列表,默认都支持多活动分组编号的活动名
 OperationActionNameList = [OperationActionName_Lunhuidian]
 
-OperationActionName_ExpRate = "ActExpRate" # 多倍经验活动
-OperationActionName_SpringSale = "ActSpringSale" # 限时特惠活动
-OperationActionName_FlashGiftbag = "ActFlashGiftbag" # 限时礼包活动
-OperationActionName_DailyGiftbag = "ActDailyGiftbag" # 每日礼包活动
-OperationActionName_FairyCeremony = "ActFairyCeremony" # 仙界盛典活动
-OperationActionName_NewFairyCeremony = "ActNewFairyCeremony" # 仙界盛典活动
-OperationActionName_RealmPoint = "ActRealmPoint" # 多倍修行点活动
-OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
-OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
 OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
 OperationActionName_CollectWords = "ActCollectWords" # 集字活动
-OperationActionName_LuckyTreasure = "ActLuckyTreasure" # 幸运鉴宝活动
-OperationActionName_GrowupBuy = "ActGrowupBuy" # 成长必买活动
 OperationActionName_ManyDayRecharge = "ActManyDayRecharge" # 多日连充活动
 OperationActionName_SingleRecharge = "ActSingleRecharge" # 单笔累充活动
-OperationActionName_Turntable = "ActTurntable" # 转盘活动
-OperationActionName_GodGift = "ActGodGift" # 天帝礼包活动
 OperationActionName_BuyOne = "ActBuyOne" # 买一送多活动
 OperationActionName_ActLoginNew = "ActLoginNew" # 登录活动-新
 OperationActionName_ActTask = "ActTask" # 活动任务
 OperationActionName_BuyCountGift = "ActBuyCountGift" # 购买次数礼包活动
 OperationActionName_FamilyCTGAssist = "ActFamilyCTGAssist" # 仙盟充值协助
-OperationActionName_Yunshi = "ActYunshi" # 运势活动
 
-##节日活动类型列表 - 该类型无视开服天,日期到了就开启
-#FeastOperationActionNameList = [OperationActionName_GrowupBuy,
-#                                ]
 ##所有的运营活动列表,含节日活动
-#OperationActionNameList = [OperationActionName_ExpRate, 
-#                           OperationActionName_SpringSale, 
-#                           OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
-#                           OperationActionName_RealmPoint, OperationActionName_FlashSale,
-#                           OperationActionName_WishingWell, OperationActionName_TotalRecharge,
-#                           OperationActionName_LoginAward, 
-#                           OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
-#                           OperationActionName_DailyGiftbag, OperationActionName_SingleRecharge,
+#OperationActionNameList = [
+#                           OperationActionName_TotalRecharge,
+#                           OperationActionName_SingleRecharge,
 #                           OperationActionName_CollectWords, OperationActionName_ManyDayRecharge,
-#                           OperationActionName_Turntable,
-#                           OperationActionName_GodGift,
 #                           OperationActionName_BuyOne,
 #                           OperationActionName_ActLoginNew, OperationActionName_ActTask,
 #                           OperationActionName_BuyCountGift, OperationActionName_FamilyCTGAssist,
-#                           OperationActionName_Yunshi,
 #                           OperationActionName_Lunhuidian,
-#                           ] + FeastOperationActionNameList
+#                           ]
 ##需要记录开启活动时的世界等级的运营活动
-#NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, 
-#                                   OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
-#                                   OperationActionName_TotalRecharge,
-#                                   OperationActionName_FlashGiftbag,
-#                                   OperationActionName_SpringSale, OperationActionName_LuckyTreasure,
-#                                   OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
-#                                   OperationActionName_Turntable,
+#NeedWorldLVOperationActNameList = [OperationActionName_TotalRecharge,
 #                                   OperationActionName_CollectWords,
 #                                   OperationActionName_ManyDayRecharge, OperationActionName_SingleRecharge,
-#                                   OperationActionName_GodGift,
 #                                   ]
 
 #跨服运营活动表名定义
@@ -513,7 +481,7 @@
 CDBPlayerRefresh_168,                   # 战盟仓库积分
 CDBPlayerRefresh_Rune,                  # 符印精华点
 CDBPlayerRefresh_RuneSplinters,         # 符印碎片 170
-CDBPlayerRefresh_RealmPoint,            # 境界修炼点
+CDBPlayerRefresh_171,                   # 境界修炼点
 CDBPlayerRefresh_Ysog,                  # 魔精
 CDBPlayerRefresh_FamilyCoin,            # 仙盟公会币
 CDBPlayerRefresh_ParryRateDef,          # 抗格挡
@@ -636,7 +604,7 @@
 TYPE_Price_Gold_Paper_Money = 5    # 金钱类型,(先用礼券,再用金子)
 TYPE_Price_FamilyExp = 6 # 战盟经验
 TYPE_Price_10 = 10    # 战盟仓库积分
-TYPE_Price_RealmPoint = 13    # 境界修炼点
+TYPE_Price_13 = 13    # 境界修炼点
 TYPE_Price_Ysog = 14    # 魔精
 TYPE_Price_FamilyCoin = 15    # 仙盟公会贡献币
 TYPE_Price_FBHelpPoint = 16    # 副本助战积分, 废弃
@@ -712,7 +680,6 @@
                            #TYPE_Price_RuneSplinters:CDBPlayerRefresh_RuneSplinters,
                            #TYPE_Price_TreasureScore:CDBPlayerRefresh_TreasureScore,
                            #TYPE_Price_BourseMoney:None,
-                           #TYPE_Price_RealmPoint:CDBPlayerRefresh_RealmPoint,
                            #TYPE_Price_Ysog:CDBPlayerRefresh_Ysog,
                            #TYPE_Price_Danjing:CDBPlayerRefresh_Danjing,
                            #TYPE_Price_SoulDust:CDBPlayerRefresh_SoulDust,
@@ -844,7 +811,7 @@
                                 Def_UniversalGameRecType_FBHelpBattleCheckInPlayer, #助战玩家登记记录9
                                 Def_UniversalGameRecType_SkyTowerPassPlayer, #天星塔过关玩家记录10
                                 Def_UniversalGameRecType_ZhuXianBossRecord, #诛仙BOSS结算记录11
-                                Def_UniversalGameRecType_LuckyTreasure, #幸运鉴宝大奖记录12
+                                Def_UniversalGameRecType_12,
                                 Def_UniversalGameRecType_FairyDomain, #缥缈仙域事件次数记录13
                                 Def_UniversalGameRecType_Reward,    # 通用奖励表(TopBar)14
                                 Def_UniversalGameRecType_ArenaBattleRecord, # 竞技场玩家挑战记录 15

--
Gitblit v1.8.0