From 33afb14fa1def4e211793532bbeb463f9a0deaf8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 11 二月 2026 20:05:46 +0800
Subject: [PATCH] 16 卡牌服务端(删除旧的七天登录、活动登录、节日登录、节日祝福、等级奖励;)

---
 /dev/null                                                                                        |  113 ---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                       |   28 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py               |    9 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py               |  160 ----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py           | 1200 ------------------------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py            |   22 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py             |  265 --------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py           |   26 
 PySysDB/PySysDBPY.h                                                                              |  101 ---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                  |   21 
 11 files changed, 2 insertions(+), 1,946 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 9a713be..6e349c9 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1446,14 +1446,6 @@
 	DWORD		AddMaxAtk;	//增加最大攻击
 };
 
-//七天登录奖励表
-
-struct tagLoginDayAward
-{
-	BYTE		_DayID;	//天数
-	dict		Reward;	//奖励 {"职业":[[物品ID,个数],...], ...}
-};
-
 //充值商品编号表
 
 struct OrderInfo
@@ -1507,18 +1499,6 @@
 	list		AwardListDay1;	//第1天奖励 [[物品ID,个数,装备定制ID], ...]
 	list		AwardListDay2;	//第2天奖励 [[物品ID,个数,装备定制ID], ...]
 	list		AwardListDay3;	//第3天奖励 [[物品ID,个数,装备定制ID], ...]
-};
-
-//等级奖励表
-
-struct tagLVAward
-{
-	BYTE		_AwardID;	//奖励ID
-	WORD		LV;	//等级
-	WORD		LimitCnt;	//全服限制数量
-	dict		Reward;	//奖励 {"职业":[[物品ID,个数],...], ...}
-	BYTE		VIPLimit;	//需要VIP几
-	list		VIPAward;	//vip奖励[[物品ID,个数],...]
 };
 
 //寻宝设定表
@@ -2218,87 +2198,6 @@
 	BYTE		DayNum;	//第X天从1开始
 	list		LoginAwardItemList;	//奖励列表[[物品ID,个数,是否拍品], ...]
 	list		LoginAwardItemListEx;	//扩展奖励列表[[物品ID,个数,是否拍品], ...]
-};
-
-//登录奖励时间表
-
-struct tagActLoginAward
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	WORD		AdvanceMinutes;	//前端提前X分钟展示活动
-	BYTE		IsDayReset;	//是否每天重置
-	BYTE		ResetType;	//重置类型,0-0点重置;1-5点重置
-	WORD		LVLimit;	//限制等级
-	list		TemplateID;	//模板编号
-};
-
-//登录奖励模板表
-
-struct tagLoginAward
-{
-	BYTE		_TemplateID;	//模板ID
-	BYTE		ActionType;	//活动条目ID
-	DWORD		TotalTimes;	//可完成的总次数,0表示不限次数
-	WORD		SingleTimes;	//单次领奖需要的次数
-	char		Reward;	//奖励物品
-};
-
-//节日登录奖励时间表
-
-struct tagActFeastLogin
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	WORD		LVLimit;	//限制等级
-	dict		TemplateIDInfo;	//模板信息 {(世界等级A,B):奖励模板编号, ...}
-};
-
-//节日登录奖励模板表
-
-struct tagActFeastLoginAward
-{
-	BYTE		_TemplateID;	//模板ID
-	BYTE		DayNum;	//第X天从1开始
-	list		LoginAwardItemList;	//奖励列表[[物品ID,个数,是否拍品], ...]
-};
-
-//节日祝福时间表
-
-struct tagActFeastWish
-{
-	DWORD		_CfgID;	//配置ID
-	char		StartDate;	//开启日期
-	char		EndDate;	//结束日期
-	WORD		LVLimit;	//限制等级
-	BYTE		ResetType;	//重置类型,0-0点重置;1-5点重置
-	dict		TemplateIDInfo;	//模板信息 {(世界等级A,B):模板编号, ...}
-};
-
-//节日祝福瓶模板表
-
-struct tagActFeastWishBottle
-{
-	BYTE		_TemplateID;	//模板ID
-	BYTE		WishBottleNum;	//祝福瓶编号
-	WORD		NeedWishValue;	//单次领奖所需祝福值
-	BYTE		ChooseTimeMax;	//最大可领奖次数
-	dict		ChoosePrizeItem;	//选择奖励物品信息,选完为止 {记录索引:[物品ID,个数,是否拍品], ...}
-	list		GoodItemIDList;	//需要广播的物品ID列表 [物品ID, ...]
-	char		WorldNotifyKey;	//全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,)
-};
-
-//节日祝福池模板表
-
-struct tagActFeastWishPool
-{
-	BYTE		_TemplateID;	//模板ID
-	list		WishPoolItemWeightInfo;	//祝福池产出物品权重 [[权重, [物品ID,个数]], ..]
-	list		WishPoolClientItemShow;	//前端展示物品列表 [物品ID, ...]
-	list		GoodItemIDList;	//需要广播的物品ID列表 [物品ID, ...]
-	char		WorldNotifyKey;	//全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,)
 };
 
 //新仙界盛典-全民来嗨表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index 4e44c8d..b2832bd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -474,18 +474,6 @@
 PacketSubCMD_2 = 0x34
 PacketCallFunc_2 = OnLianTiLVUp
 
-;累计登陆礼
-[PlayerLoginDayAward]
-ScriptName = Player\PlayerLoginDayAward.py
-Writer = alee
-Releaser = alee
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1 = 0xAA
-PacketSubCMD_1 = 0x01
-PacketCallFunc_1 = GetTotalLoginDayAward
-
 ;改名功能
 [UpdatePlayerName]
 ScriptName = Player\UpdatePlayerName.py
@@ -854,22 +842,6 @@
 PacketCMD_2=
 PacketSubCMD_2=
 PacketCallFunc_2=
-
-;节日祝福
-[PlayerFeastWish]
-ScriptName = Player\PlayerFeastWish.py
-Writer = hxp
-Releaser = hxp
-RegType = 0
-RegisterPackCount = 2
-
-PacketCMD_1=0xAA
-PacketSubCMD_1=0x10
-PacketCallFunc_1=OnFeastWishBottleChooseItem
-
-PacketCMD_2=0xAA
-PacketSubCMD_2=0x11
-PacketCallFunc_2=OnFeastWishPoolWish
 
 ;功能系统特权
 [PlayerFuncSysPrivilege]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 040bea5..45e4e42 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3297,8 +3297,6 @@
 Def_PDict_PackDataSyncFightPower = "PackDataSyncFightPower"  # 本次上线打包数据同步时的战力,用于对比,只对比求余亿部分即可
 Def_PDict_DayOnlineTime = "DayOnlineTime"  # 当日在线时长
 Def_PDict_DayOnlineCalcTime = "DayOLCalcTime"        # 当日在线计算时间
-Def_PDict_LVAwardGetRecord = "LVAwardGetRecord"  # 等级奖励领取信息记录,按二进制位标示
-Def_PDict_LVAwardVIPGetRecord = "LVAwardVIPGetRecord"  # 等级奖励vip领取信息记录,按二进制位标示
 Def_PDict_HistoryChargeAwardGetRecord = "HTotalGoldAwardRecord"  # 历史累计充值奖励领取信息记录,按二进制位标示
 Def_PDict_CTGCountResetTime = "CTGCountResetTime"  # CTG次数重置时间time值
 Def_PDict_CTGRealToday = "CTGRealToday"  # 当日真实货币充值Coin数 ,不含后台充值 - 今日
@@ -3515,28 +3513,11 @@
 Def_PDict_TravelGridInfo = "TravelGridInfo_%s_%s"  # 格子信息,参数(行, 列) 事件ID*100+是否双倍*10+开启状态
 Def_PDict_TravelState = "TravelState"  # 本盘游历记录,1-已领取景观奖励
 
-#登录奖励运营活动
-Def_PDict_LoginAwardID = "LoginAwardID"  # 玩家身上的BOSS复活活动ID,唯一标识,取活动开始日期time值
-Def_PDict_LoginAwardCurTimes = "LoginAwardCurTimes_%s_%s" #当前完成次数 参数(第X天,模板ID)
-Def_PDict_LoginAwardGotTimes = "LoginAwardGotTimes_%s_%s" #当前已领次数 参数(第X天,模板ID)
-Def_PDict_LoginAwardWorldLV = "LoginAwardWorldLV%s" #活动开启时世界等级参数(第X天)
-
 #幸运鉴宝
 Def_PDict_LuckyTreasureID = "LuckyTreasureID"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值
 Def_PDict_LuckyTreasureFree = "LuckyTreasureFree" #是否免费过
 Def_PDict_LuckyTreasurePoint = "LuckyTreasurePoint" #幸运值
 Def_PDict_LuckyTreasureCnt = "LuckyTreasureCnt" #鉴宝次数
-
-#节日登录活动
-Def_PDict_FeastLoginID = "FeastLoginID"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值
-Def_PDict_FeastLoginState = "FeastLoginState"  # 活动登录记录,十位-已累计登录天数,个位-上次记录的登录天
-Def_PDict_FeastLoginAwardState = "FeastLoginAwardState"  # 活动登录领奖记录,按天编号-1为索引进行二进制位运算记录当天是否已领奖
-
-#节日祝福活动
-Def_PDict_FeastWishID = "FeastWishID"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值
-Def_PDict_FeastWishTemplateID = "FeastWishTemplateID" # 玩家身上的模板ID
-Def_PDict_FeastWishBottleValue = "FeastWishBottleValue_%s"  # 祝福瓶当前祝福值,参数(瓶子编号)
-Def_PDict_FeastWishBottleGetState = "FeastWishBottleGetState_%s"  # 祝福瓶已领取记录,参数(瓶子编号),按记录索引二进制位存储是否已领取
 
 #多日连充活动
 Def_PDict_ManyDayRechargeID = "ManyDayRechargeID_%s"  # 玩家身上的活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
@@ -4814,7 +4795,7 @@
 Def_RewardType_ShareGame, #每日分享奖励34
 Def_RewardType_GoodGame, #游戏好评奖励35
 Def_RewardType_CACTGBillboardDabiao, #跨服充值排行活动达标奖励36
-Def_RewardType_FeastLogin, #节日登录奖励37
+Def_RewardType_37,
 Def_RewardType_38,
 Def_RewardType_DailyRecharge, #永久每日累充奖励39
 Def_RewardType_RechargeGold30, #1元送30倍充值券每日奖励40
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index fa266ef..b820f08 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -9445,114 +9445,6 @@
 
 
 #------------------------------------------------------
-# AA 10 节日祝福瓶选择奖励物品 #tagCMFeastWishBottleChooseItem
-
-class  tagCMFeastWishBottleChooseItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("BottleNum", c_ubyte),    #瓶子编号
-                  ("RecordIndex", c_ubyte),    #物品索引,用于选择及记录是否已选择
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x10
-        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 = 0x10
-        self.BottleNum = 0
-        self.RecordIndex = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMFeastWishBottleChooseItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 10 节日祝福瓶选择奖励物品 //tagCMFeastWishBottleChooseItem:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                BottleNum:%d,
-                                RecordIndex:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.BottleNum,
-                                self.RecordIndex
-                                )
-        return DumpString
-
-
-m_NAtagCMFeastWishBottleChooseItem=tagCMFeastWishBottleChooseItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishBottleChooseItem.Cmd,m_NAtagCMFeastWishBottleChooseItem.SubCmd))] = m_NAtagCMFeastWishBottleChooseItem
-
-
-#------------------------------------------------------
-# AA 11 节日祝福池祝福 #tagCMFeastWishPoolWish
-
-class  tagCMFeastWishPoolWish(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("WishCount", c_ubyte),    #祝福次数
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x11
-        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 = 0x11
-        self.WishCount = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMFeastWishPoolWish)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 11 节日祝福池祝福 //tagCMFeastWishPoolWish:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                WishCount:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.WishCount
-                                )
-        return DumpString
-
-
-m_NAtagCMFeastWishPoolWish=tagCMFeastWishPoolWish()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFeastWishPoolWish.Cmd,m_NAtagCMFeastWishPoolWish.SubCmd))] = m_NAtagCMFeastWishPoolWish
-
-
-#------------------------------------------------------
 # AA 05 限时抢购预约 #tagCMFlashSaleAppointment
 
 class  tagCMFlashSaleAppointment(Structure):
@@ -9610,58 +9502,6 @@
 
 m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
-
-
-#------------------------------------------------------
-#AA 01 领取累计登陆礼 # tagCMGetTotalLoginDayAward
-
-class  tagCMGetTotalLoginDayAward(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("Index", c_ubyte),    # 领取礼物
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x01
-        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 = 0x01
-        self.Index = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagCMGetTotalLoginDayAward)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//AA 01 领取累计登陆礼 // tagCMGetTotalLoginDayAward:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                Index:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.Index
-                                )
-        return DumpString
-
-
-m_NAtagCMGetTotalLoginDayAward=tagCMGetTotalLoginDayAward()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetTotalLoginDayAward.Cmd,m_NAtagCMGetTotalLoginDayAward.SubCmd))] = m_NAtagCMGetTotalLoginDayAward
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index f3609e7..6f221a9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -7164,62 +7164,6 @@
 
 
 #------------------------------------------------------
-#A3 0B 玩家等级奖励领取记录信息 #tagMCPlayerLVAwardGetRecord
-
-class  tagMCPlayerLVAwardGetRecord(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("LVAwardGetRecord", c_int),    # 按二进制位标示领取记录,每位对应的等级在配表中配置,服务端客户端对应
-                  ("VIPAwardRecord", c_int),    # 按二进制位标示vip领取记录,每位对应的等级在配表中配置,服务端客户端对应
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xA3
-        self.SubCmd = 0x0B
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.Cmd = 0xA3
-        self.SubCmd = 0x0B
-        self.LVAwardGetRecord = 0
-        self.VIPAwardRecord = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCPlayerLVAwardGetRecord)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//A3 0B 玩家等级奖励领取记录信息 //tagMCPlayerLVAwardGetRecord:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                LVAwardGetRecord:%d,
-                                VIPAwardRecord:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.LVAwardGetRecord,
-                                self.VIPAwardRecord
-                                )
-        return DumpString
-
-
-m_NAtagMCPlayerLVAwardGetRecord=tagMCPlayerLVAwardGetRecord()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerLVAwardGetRecord.Cmd,m_NAtagMCPlayerLVAwardGetRecord.SubCmd))] = m_NAtagMCPlayerLVAwardGetRecord
-
-
-#------------------------------------------------------
 #A3 0C 玩家各奖励类型领取记录信息 #tagMCPlayerRewardGetRecord
 
 class  tagMCPlayerRewardGetRecord(Structure):
@@ -19608,433 +19552,6 @@
 
 
 #------------------------------------------------------
-# AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
-
-class  tagMCActLoginAwardAction(Structure):
-    TemplateID = 0    #(DWORD TemplateID)// 模板ID
-    ActionType = 0    #(WORD ActionType)// 活动类别
-    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
-    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
-    Count = 0    #(WORD Count)// 物品配置长度
-    ItemInfo = ""    #(String ItemInfo)// 物品信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count)
-        return _pos
-
-    def Clear(self):
-        self.TemplateID = 0
-        self.ActionType = 0
-        self.TotalTimes = 0
-        self.SingleTimes = 0
-        self.Count = 0
-        self.ItemInfo = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 2
-        length += 4
-        length += 4
-        length += 2
-        length += len(self.ItemInfo)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.TemplateID)
-        data = CommFunc.WriteWORD(data, self.ActionType)
-        data = CommFunc.WriteDWORD(data, self.TotalTimes)
-        data = CommFunc.WriteDWORD(data, self.SingleTimes)
-        data = CommFunc.WriteWORD(data, self.Count)
-        data = CommFunc.WriteString(data, self.Count, self.ItemInfo)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                TemplateID:%d,
-                                ActionType:%d,
-                                TotalTimes:%d,
-                                SingleTimes:%d,
-                                Count:%d,
-                                ItemInfo:%s
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.ActionType,
-                                self.TotalTimes,
-                                self.SingleTimes,
-                                self.Count,
-                                self.ItemInfo
-                                )
-        return DumpString
-
-
-class  tagMCActLoginAwardDayInfo(Structure):
-    ActCnt = 0    #(BYTE ActCnt)// 数量
-    TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
-    WorldLV = 0    #(WORD WorldLV)// 世界等级
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ActCnt):
-            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
-            self.TemplateList.append(value)
-        self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        return _pos
-
-    def Clear(self):
-        self.ActCnt = 0
-        self.TemplateList = list()
-        self.WorldLV = 0
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 2 * self.ActCnt
-        length += 2
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.ActCnt)
-        for i in range(self.ActCnt):
-            data = CommFunc.WriteWORD(data, self.TemplateList[i])
-        data = CommFunc.WriteWORD(data, self.WorldLV)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                ActCnt:%d,
-                                TemplateList:%s,
-                                WorldLV:%d
-                                '''\
-                                %(
-                                self.ActCnt,
-                                "...",
-                                self.WorldLV
-                                )
-        return DumpString
-
-
-class  tagMCActLoginAwardInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
-    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    DayCnt = 0    #(BYTE DayCnt)// 天数
-    DayInfoList = list()    #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
-    TCount = 0    #(BYTE TCount)// 模板数
-    ActionInfo = list()    #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0C
-        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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.DayCnt):
-            temDayInfoList = tagMCActLoginAwardDayInfo()
-            _pos = temDayInfoList.ReadData(_lpData, _pos)
-            self.DayInfoList.append(temDayInfoList)
-        self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.TCount):
-            temActionInfo = tagMCActLoginAwardAction()
-            _pos = temActionInfo.ReadData(_lpData, _pos)
-            self.ActionInfo.append(temActionInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0C
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.AdvanceMinutes = 0
-        self.IsDayReset = 0
-        self.ResetType = 0
-        self.LimitLV = 0
-        self.DayCnt = 0
-        self.DayInfoList = list()
-        self.TCount = 0
-        self.ActionInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        length += 1
-        length += 2
-        length += 1
-        for i in range(self.DayCnt):
-            length += self.DayInfoList[i].GetLength()
-        length += 1
-        for i in range(self.TCount):
-            length += self.ActionInfo[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.AdvanceMinutes)
-        data = CommFunc.WriteBYTE(data, self.IsDayReset)
-        data = CommFunc.WriteBYTE(data, self.ResetType)
-        data = CommFunc.WriteWORD(data, self.LimitLV)
-        data = CommFunc.WriteBYTE(data, self.DayCnt)
-        for i in range(self.DayCnt):
-            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.TCount)
-        for i in range(self.TCount):
-            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                AdvanceMinutes:%d,
-                                IsDayReset:%d,
-                                ResetType:%d,
-                                LimitLV:%d,
-                                DayCnt:%d,
-                                DayInfoList:%s,
-                                TCount:%d,
-                                ActionInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.AdvanceMinutes,
-                                self.IsDayReset,
-                                self.ResetType,
-                                self.LimitLV,
-                                self.DayCnt,
-                                "...",
-                                self.TCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
-
-
-#------------------------------------------------------
-# AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
-
-class  tagMCActLoginAwardTaskInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("TemplateID", c_ushort),    # 模板ID
-                  ("CurTimes", c_ushort),    #已完成次数
-                  ("GotTimes", 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.TemplateID = 0
-        self.CurTimes = 0
-        self.GotTimes = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCActLoginAwardTaskInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
-                                TemplateID:%d,
-                                CurTimes:%d,
-                                GotTimes:%d
-                                '''\
-                                %(
-                                self.TemplateID,
-                                self.CurTimes,
-                                self.GotTimes
-                                )
-        return DumpString
-
-
-class  tagMCActLoginAwardDayPlayerInfo(Structure):
-    DayIndex = 0    #(DWORD DayIndex)//第X天
-    ACount = 0    #(DWORD ACount)//任务条目数
-    TaskList = list()    #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        for i in range(self.ACount):
-            temTaskList = tagMCActLoginAwardTaskInfo()
-            _pos = temTaskList.ReadData(_lpData, _pos)
-            self.TaskList.append(temTaskList)
-        return _pos
-
-    def Clear(self):
-        self.DayIndex = 0
-        self.ACount = 0
-        self.TaskList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 4
-        length += 4
-        for i in range(self.ACount):
-            length += self.TaskList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteDWORD(data, self.DayIndex)
-        data = CommFunc.WriteDWORD(data, self.ACount)
-        for i in range(self.ACount):
-            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                DayIndex:%d,
-                                ACount:%d,
-                                TaskList:%s
-                                '''\
-                                %(
-                                self.DayIndex,
-                                self.ACount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCActLoginAwardPlayerInfo(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)
-    DayInfoList = list()    #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0D
-        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):
-            temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
-            _pos = temDayInfoList.ReadData(_lpData, _pos)
-            self.DayInfoList.append(temDayInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x0D
-        self.Count = 0
-        self.DayInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.Count):
-            length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                DayInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
-
-
-#------------------------------------------------------
 # AA 69 登录活动信息新 #tagMCActLoginNew
 
 class  tagMCActLoginNewItem(Structure):
@@ -24203,667 +23720,6 @@
 
 
 #------------------------------------------------------
-# AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
-
-class  tagMCFeastLoginDayAwardItem(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(tagMCFeastLoginDayAwardItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 42 节日登录奖励活动信息 //tagMCFeastLoginInfo:
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCFeastLoginDayAward(Structure):
-    DayNum = 0    #(BYTE DayNum)//天编号,从1开始,活动第X天只能领对应第X天的奖励
-    AwardCount = 0    #(BYTE AwardCount)
-    AwardItemList = list()    #(vector<tagMCFeastLoginDayAwardItem> AwardItemList)// 奖励物品列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.AwardCount):
-            temAwardItemList = tagMCFeastLoginDayAwardItem()
-            _pos = temAwardItemList.ReadData(_lpData, _pos)
-            self.AwardItemList.append(temAwardItemList)
-        return _pos
-
-    def Clear(self):
-        self.DayNum = 0
-        self.AwardCount = 0
-        self.AwardItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        for i in range(self.AwardCount):
-            length += self.AwardItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.DayNum)
-        data = CommFunc.WriteBYTE(data, self.AwardCount)
-        for i in range(self.AwardCount):
-            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                DayNum:%d,
-                                AwardCount:%d,
-                                AwardItemList:%s
-                                '''\
-                                %(
-                                self.DayNum,
-                                self.AwardCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFeastLoginInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    DayCount = 0    #(BYTE DayCount)// 总共几天
-    DayAwardList = list()    #(vector<tagMCFeastLoginDayAward> DayAwardList)//登录天奖励列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x42
-        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.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.DayCount):
-            temDayAwardList = tagMCFeastLoginDayAward()
-            _pos = temDayAwardList.ReadData(_lpData, _pos)
-            self.DayAwardList.append(temDayAwardList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x42
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.DayCount = 0
-        self.DayAwardList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        for i in range(self.DayCount):
-            length += self.DayAwardList[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.DayCount)
-        for i in range(self.DayCount):
-            data = CommFunc.WriteString(data, self.DayAwardList[i].GetLength(), self.DayAwardList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                DayCount:%d,
-                                DayAwardList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.DayCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastLoginInfo=tagMCFeastLoginInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginInfo.Head.Cmd,m_NAtagMCFeastLoginInfo.Head.SubCmd))] = m_NAtagMCFeastLoginInfo
-
-
-#------------------------------------------------------
-# AA 39 节日登录奖励活动玩家信息 #tagMCFeastLoginPlayerInfo
-
-class  tagMCFeastLoginPlayerInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("LoginState", c_int),    # 是否已登录,按天索引0代表第1天记录当天是否已登录
-                  ("LoginAward", c_int),    # 是否已领取,按天索引0代表第1天记录当天是否已领取
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x39
-        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 = 0x39
-        self.LoginState = 0
-        self.LoginAward = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastLoginPlayerInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 39 节日登录奖励活动玩家信息 //tagMCFeastLoginPlayerInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                LoginState:%d,
-                                LoginAward:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.LoginState,
-                                self.LoginAward
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
-
-
-#------------------------------------------------------
-# AA 43 节日祝福活动信息 #tagMCFeastWishInfo
-
-class  tagMCFeastWishBottleItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("RecordIndex", c_ubyte),    #物品索引,用于选择及记录是否已选择
-                  ("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.RecordIndex = 0
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.IsBind = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastWishBottleItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 43 节日祝福活动信息 //tagMCFeastWishInfo:
-                                RecordIndex:%d,
-                                ItemID:%d,
-                                ItemCount:%d,
-                                IsBind:%d
-                                '''\
-                                %(
-                                self.RecordIndex,
-                                self.ItemID,
-                                self.ItemCount,
-                                self.IsBind
-                                )
-        return DumpString
-
-
-class  tagMCFeastWishBottleInfo(Structure):
-    BottleNum = 0    #(BYTE BottleNum)//瓶子编号
-    NeedWishValue = 0    #(WORD NeedWishValue)//单次领奖所需祝福值
-    ChooseTimeMax = 0    #(BYTE ChooseTimeMax)//最大可领奖次数
-    ChoosePrizeCount = 0    #(BYTE ChoosePrizeCount)//可选择奖励个数
-    ChoosePrizeList = list()    #(vector<tagMCFeastWishBottleItem> ChoosePrizeList)// 选择奖励物品列表,已选过的无法再选
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.BottleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NeedWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ChooseTimeMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ChoosePrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ChoosePrizeCount):
-            temChoosePrizeList = tagMCFeastWishBottleItem()
-            _pos = temChoosePrizeList.ReadData(_lpData, _pos)
-            self.ChoosePrizeList.append(temChoosePrizeList)
-        return _pos
-
-    def Clear(self):
-        self.BottleNum = 0
-        self.NeedWishValue = 0
-        self.ChooseTimeMax = 0
-        self.ChoosePrizeCount = 0
-        self.ChoosePrizeList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 2
-        length += 1
-        length += 1
-        for i in range(self.ChoosePrizeCount):
-            length += self.ChoosePrizeList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.BottleNum)
-        data = CommFunc.WriteWORD(data, self.NeedWishValue)
-        data = CommFunc.WriteBYTE(data, self.ChooseTimeMax)
-        data = CommFunc.WriteBYTE(data, self.ChoosePrizeCount)
-        for i in range(self.ChoosePrizeCount):
-            data = CommFunc.WriteString(data, self.ChoosePrizeList[i].GetLength(), self.ChoosePrizeList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                BottleNum:%d,
-                                NeedWishValue:%d,
-                                ChooseTimeMax:%d,
-                                ChoosePrizeCount:%d,
-                                ChoosePrizeList:%s
-                                '''\
-                                %(
-                                self.BottleNum,
-                                self.NeedWishValue,
-                                self.ChooseTimeMax,
-                                self.ChoosePrizeCount,
-                                "..."
-                                )
-        return DumpString
-
-
-class  tagMCFeastWishInfo(Structure):
-    Head = tagHead()
-    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
-    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
-    LimitLV = 0    #(WORD LimitLV)// 限制等级
-    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
-    WishPoolShowCount = 0    #(BYTE WishPoolShowCount)//祝福池展示物品数
-    WishPoolShowItemList = list()    #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
-    BottleCount = 0    #(BYTE BottleCount)// 祝福瓶个数
-    BottleInfoList = list()    #(vector<tagMCFeastWishBottleInfo> BottleInfoList)// 祝福瓶信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x43
-        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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.WishPoolShowCount):
-            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
-            self.WishPoolShowItemList.append(value)
-        self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.BottleCount):
-            temBottleInfoList = tagMCFeastWishBottleInfo()
-            _pos = temBottleInfoList.ReadData(_lpData, _pos)
-            self.BottleInfoList.append(temBottleInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x43
-        self.StartDate = ""
-        self.EndtDate = ""
-        self.LimitLV = 0
-        self.ResetType = 0
-        self.WishPoolShowCount = 0
-        self.WishPoolShowItemList = list()
-        self.BottleCount = 0
-        self.BottleInfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 10
-        length += 10
-        length += 2
-        length += 1
-        length += 1
-        length += 4 * self.WishPoolShowCount
-        length += 1
-        for i in range(self.BottleCount):
-            length += self.BottleInfoList[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.ResetType)
-        data = CommFunc.WriteBYTE(data, self.WishPoolShowCount)
-        for i in range(self.WishPoolShowCount):
-            data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
-        data = CommFunc.WriteBYTE(data, self.BottleCount)
-        for i in range(self.BottleCount):
-            data = CommFunc.WriteString(data, self.BottleInfoList[i].GetLength(), self.BottleInfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                StartDate:%s,
-                                EndtDate:%s,
-                                LimitLV:%d,
-                                ResetType:%d,
-                                WishPoolShowCount:%d,
-                                WishPoolShowItemList:%s,
-                                BottleCount:%d,
-                                BottleInfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.StartDate,
-                                self.EndtDate,
-                                self.LimitLV,
-                                self.ResetType,
-                                self.WishPoolShowCount,
-                                "...",
-                                self.BottleCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastWishInfo=tagMCFeastWishInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishInfo.Head.Cmd,m_NAtagMCFeastWishInfo.Head.SubCmd))] = m_NAtagMCFeastWishInfo
-
-
-#------------------------------------------------------
-# AA 44 节日祝福活动玩家信息 #tagMCFeastWishPlayerInfo
-
-class  tagMCFeastWishPlayerBottle(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("BottleNum", c_ubyte),    #瓶子编号
-                  ("WishValue", c_ushort),    #当前可用祝福值
-                  ("ChooseRecord", c_int),    #已选物品索引记录,与记录索引位运算判断是否已选择;累计已选择次数前端自己计算,通过该值可算出
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.BottleNum = 0
-        self.WishValue = 0
-        self.ChooseRecord = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCFeastWishPlayerBottle)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// AA 44 节日祝福活动玩家信息 //tagMCFeastWishPlayerInfo:
-                                BottleNum:%d,
-                                WishValue:%d,
-                                ChooseRecord:%d
-                                '''\
-                                %(
-                                self.BottleNum,
-                                self.WishValue,
-                                self.ChooseRecord
-                                )
-        return DumpString
-
-
-class  tagMCFeastWishPlayerInfo(Structure):
-    Head = tagHead()
-    BottleCount = 0    #(BYTE BottleCount)// 祝福瓶个数
-    PlayerBottleInfo = list()    #(vector<tagMCFeastWishPlayerBottle> PlayerBottleInfo)// 祝福瓶信息
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x44
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.BottleCount):
-            temPlayerBottleInfo = tagMCFeastWishPlayerBottle()
-            _pos = temPlayerBottleInfo.ReadData(_lpData, _pos)
-            self.PlayerBottleInfo.append(temPlayerBottleInfo)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x44
-        self.BottleCount = 0
-        self.PlayerBottleInfo = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        for i in range(self.BottleCount):
-            length += self.PlayerBottleInfo[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.BottleCount)
-        for i in range(self.BottleCount):
-            data = CommFunc.WriteString(data, self.PlayerBottleInfo[i].GetLength(), self.PlayerBottleInfo[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                BottleCount:%d,
-                                PlayerBottleInfo:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.BottleCount,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastWishPlayerInfo=tagMCFeastWishPlayerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishPlayerInfo.Head.Cmd,m_NAtagMCFeastWishPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWishPlayerInfo
-
-
-#------------------------------------------------------
-# AA 45 节日祝福祝福结果 #tagMCFeastWishResult
-
-class  tagMCFeastWishResult(Structure):
-    Head = tagHead()
-    AddWishValue = 0    #(WORD AddWishValue)// 本次增加的祝福值
-    WishResultLen = 0    #(WORD WishResultLen)
-    WishResult = ""    #(String WishResult)//  获得物品结果[[物品ID,个数,是否绑定], ...]
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x45
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.AddWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.WishResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.WishResult,_pos = CommFunc.ReadString(_lpData, _pos,self.WishResultLen)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xAA
-        self.Head.SubCmd = 0x45
-        self.AddWishValue = 0
-        self.WishResultLen = 0
-        self.WishResult = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        length += 2
-        length += len(self.WishResult)
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteWORD(data, self.AddWishValue)
-        data = CommFunc.WriteWORD(data, self.WishResultLen)
-        data = CommFunc.WriteString(data, self.WishResultLen, self.WishResult)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                AddWishValue:%d,
-                                WishResultLen:%d,
-                                WishResult:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.AddWishValue,
-                                self.WishResultLen,
-                                self.WishResult
-                                )
-        return DumpString
-
-
-m_NAtagMCFeastWishResult=tagMCFeastWishResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishResult.Head.Cmd,m_NAtagMCFeastWishResult.Head.SubCmd))] = m_NAtagMCFeastWishResult
-
-
-#------------------------------------------------------
 # AA 02 首充信息 #tagSCFirstChargeInfo
 
 class  tagSCFirstCharge(Structure):
@@ -26678,62 +25534,6 @@
 
 m_NAtagMCSuperGiftInfo=tagMCSuperGiftInfo()
 ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Cmd,m_NAtagMCSuperGiftInfo.SubCmd))] = m_NAtagMCSuperGiftInfo
-
-
-#------------------------------------------------------
-#AA 01 累计登陆天数信息 #tagMCTotalLoginDayCntInfo
-
-class  tagMCTotalLoginDayCntInfo(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("Cmd", c_ubyte),
-                  ("SubCmd", c_ubyte),
-                  ("DayCnt", c_ushort),    #累计登陆天数
-                  ("AwardInfo", c_ushort),    #登陆领取情况
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        self.Cmd = 0xAA
-        self.SubCmd = 0x01
-        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 = 0x01
-        self.DayCnt = 0
-        self.AwardInfo = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCTotalLoginDayCntInfo)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''//AA 01 累计登陆天数信息 //tagMCTotalLoginDayCntInfo:
-                                Cmd:%s,
-                                SubCmd:%s,
-                                DayCnt:%d,
-                                AwardInfo:%d
-                                '''\
-                                %(
-                                self.Cmd,
-                                self.SubCmd,
-                                self.DayCnt,
-                                self.AwardInfo
-                                )
-        return DumpString
-
-
-m_NAtagMCTotalLoginDayCntInfo=tagMCTotalLoginDayCntInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTotalLoginDayCntInfo.Cmd,m_NAtagMCTotalLoginDayCntInfo.SubCmd))] = m_NAtagMCTotalLoginDayCntInfo
 
 
 #------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index 2639a37..7365f9b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -321,28 +321,6 @@
                 #SendEventPack("FightFail_%s" % mapID, failDRDict, checkBatServer=False)
     return
 
-##累计登陆礼包
-def DR_LoginDayAward(curPlayer, dayIndex):
-    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 
-                'PlayerName':curPlayer.GetPlayerName(), 
-                'AccID':curPlayer.GetAccID(),
-                "DayIndex":dayIndex
-                }
-    
-    SendEventPack("LoginDayAward", dataDict, curPlayer)
-    return
-
-##等级礼包
-def DR_LVAward(curPlayer, awardID):
-    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 
-                'PlayerName':curPlayer.GetPlayerName(), 
-                'AccID':curPlayer.GetAccID(),
-                "AwardID":awardID
-                }
-    
-    SendEventPack("LVAward", dataDict, curPlayer)
-    return
-
 ## GM执行命令操作
 #  @param playerID: 玩家ID
 #  @param playerName:玩家名字
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastWish.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastWish.py
deleted file mode 100644
index cec730d..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastWish.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.FeastWish
-#
-# @todo:节日祝福
-# @author hxp
-# @date 2021-01-29
-# @version 1.0
-#
-# 详细描述: 节日祝福
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-01-29 11:30"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import PlayerControl
-import PlayerFeastWish
-import ChConfig
-
-
-def __Help(curPlayer):
-    GameWorld.DebugAnswer(curPlayer, "重置祝福瓶: FeastWish 0")
-    GameWorld.DebugAnswer(curPlayer, "设置祝福瓶: FeastWish 编号 祝福值")
-    GameWorld.DebugAnswer(curPlayer, "祝福瓶领取: FeastWish 编号 记录索引 是否领取")
-    return
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param paramList 参数列表 []
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, paramList):
-    
-    if not paramList:
-        __Help(curPlayer)
-        return
-    
-    if paramList[0] == 0:
-        bottleNumList = PlayerFeastWish.GetWishBottleNumList()
-        for bottleNum in bottleNumList:
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleValue % bottleNum, 0)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum, 0)
-        GameWorld.DebugAnswer(curPlayer, "重置OK!")
-    elif len(paramList) == 2:
-        bottleNum, wishValue = paramList
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleValue % bottleNum, wishValue)
-        GameWorld.DebugAnswer(curPlayer, "设置祝福瓶(%s),祝福值=%s" % (bottleNum, wishValue))
-    elif len(paramList) == 3:
-        bottleNum, recordIndex, isGet = paramList
-        getState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum)
-        updState = GameWorld.SetBitValue(getState, recordIndex, isGet)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum, updState)
-        GameWorld.DebugAnswer(curPlayer, "设置祝福瓶(%s),getState=%s,updState=%s" % (bottleNum, getState, updState))
-    else:
-        __Help(curPlayer)
-        return
-    
-    PlayerFeastWish.Sync_FeastWishActionInfo(curPlayer)
-    PlayerFeastWish.Sync_FeastWishPlayerInfo(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 9e8588d..1092cb9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1184,11 +1184,6 @@
                         ("DWORD", "AddMaxAtk", 0),
                         ),
 
-                "LoginDayAward":(
-                        ("BYTE", "DayID", 1),
-                        ("dict", "Reward", 0),
-                        ),
-
                 "OrderInfo":(
                         ("char", "OrderInfo", 1),
                         ("char", "AppID", 1),
@@ -1230,15 +1225,6 @@
                         ("list", "AwardListDay1", 0),
                         ("list", "AwardListDay2", 0),
                         ("list", "AwardListDay3", 0),
-                        ),
-
-                "LVAward":(
-                        ("BYTE", "AwardID", 1),
-                        ("WORD", "LV", 0),
-                        ("WORD", "LimitCnt", 0),
-                        ("dict", "Reward", 0),
-                        ("BYTE", "VIPLimit", 0),
-                        ("list", "VIPAward", 0),
                         ),
 
                 "TreasureSet":(
@@ -1772,66 +1758,6 @@
                         ("BYTE", "DayNum", 0),
                         ("list", "LoginAwardItemList", 0),
                         ("list", "LoginAwardItemListEx", 0),
-                        ),
-
-                "ActLoginAward":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("WORD", "AdvanceMinutes", 0),
-                        ("BYTE", "IsDayReset", 0),
-                        ("BYTE", "ResetType", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("list", "TemplateID", 0),
-                        ),
-
-                "LoginAward":(
-                        ("BYTE", "TemplateID", 1),
-                        ("BYTE", "ActionType", 0),
-                        ("DWORD", "TotalTimes", 0),
-                        ("WORD", "SingleTimes", 0),
-                        ("char", "Reward", 0),
-                        ),
-
-                "ActFeastLogin":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("dict", "TemplateIDInfo", 0),
-                        ),
-
-                "ActFeastLoginAward":(
-                        ("BYTE", "TemplateID", 1),
-                        ("BYTE", "DayNum", 0),
-                        ("list", "LoginAwardItemList", 0),
-                        ),
-
-                "ActFeastWish":(
-                        ("DWORD", "CfgID", 1),
-                        ("char", "StartDate", 0),
-                        ("char", "EndDate", 0),
-                        ("WORD", "LVLimit", 0),
-                        ("BYTE", "ResetType", 0),
-                        ("dict", "TemplateIDInfo", 0),
-                        ),
-
-                "ActFeastWishBottle":(
-                        ("BYTE", "TemplateID", 1),
-                        ("BYTE", "WishBottleNum", 0),
-                        ("WORD", "NeedWishValue", 0),
-                        ("BYTE", "ChooseTimeMax", 0),
-                        ("dict", "ChoosePrizeItem", 0),
-                        ("list", "GoodItemIDList", 0),
-                        ("char", "WorldNotifyKey", 0),
-                        ),
-
-                "ActFeastWishPool":(
-                        ("BYTE", "TemplateID", 1),
-                        ("list", "WishPoolItemWeightInfo", 0),
-                        ("list", "WishPoolClientItemShow", 0),
-                        ("list", "GoodItemIDList", 0),
-                        ("char", "WorldNotifyKey", 0),
                         ),
 
                 "NewAllPeopleParty":(
@@ -3786,16 +3712,6 @@
     def GetAddMinAtk(self): return self.attrTuple[3] # 增加最小攻击 DWORD
     def GetAddMaxAtk(self): return self.attrTuple[4] # 增加最大攻击 DWORD
 
-# 七天登录奖励表
-class IPY_LoginDayAward():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetDayID(self): return self.attrTuple[0] # 天数 BYTE
-    def GetReward(self): return self.attrTuple[1] # 奖励 {"职业":[[物品ID,个数],...], ...} dict
-
 # 充值商品编号表
 class IPY_OrderInfo():
     
@@ -3858,20 +3774,6 @@
     def GetAwardListDay1(self): return self.attrTuple[2] # 第1天奖励 [[物品ID,个数,装备定制ID], ...] list
     def GetAwardListDay2(self): return self.attrTuple[3] # 第2天奖励 [[物品ID,个数,装备定制ID], ...] list
     def GetAwardListDay3(self): return self.attrTuple[4] # 第3天奖励 [[物品ID,个数,装备定制ID], ...] list
-
-# 等级奖励表
-class IPY_LVAward():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetAwardID(self): return self.attrTuple[0] # 奖励ID BYTE
-    def GetLV(self): return self.attrTuple[1] # 等级 WORD
-    def GetLimitCnt(self): return self.attrTuple[2] # 全服限制数量 WORD
-    def GetReward(self): return self.attrTuple[3] # 奖励 {"职业":[[物品ID,个数],...], ...} dict
-    def GetVIPLimit(self): return self.attrTuple[4] # 需要VIP几 BYTE
-    def GetVIPAward(self): return self.attrTuple[5] # vip奖励[[物品ID,个数],...] list
 
 # 寻宝设定表
 class IPY_TreasureSet():
@@ -4681,101 +4583,6 @@
     def GetLoginAwardItemList(self): return self.attrTuple[2] # 奖励列表[[物品ID,个数,是否拍品], ...] list
     def GetLoginAwardItemListEx(self): return self.attrTuple[3] # 扩展奖励列表[[物品ID,个数,是否拍品], ...] list
 
-# 登录奖励时间表
-class IPY_ActLoginAward():
-    
-    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 GetAdvanceMinutes(self): return self.attrTuple[3] # 前端提前X分钟展示活动 WORD
-    def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE
-    def GetResetType(self): return self.attrTuple[5] # 重置类型,0-0点重置;1-5点重置 BYTE
-    def GetLVLimit(self): return self.attrTuple[6] # 限制等级 WORD
-    def GetTemplateID(self): return self.attrTuple[7] # 模板编号 list
-
-# 登录奖励模板表
-class IPY_LoginAward():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
-    def GetActionType(self): return self.attrTuple[1] # 活动条目ID BYTE
-    def GetTotalTimes(self): return self.attrTuple[2] # 可完成的总次数,0表示不限次数 DWORD
-    def GetSingleTimes(self): return self.attrTuple[3] # 单次领奖需要的次数 WORD
-    def GetReward(self): return self.attrTuple[4] # 奖励物品 char
-
-# 节日登录奖励时间表
-class IPY_ActFeastLogin():
-    
-    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 GetTemplateIDInfo(self): return self.attrTuple[4] # 模板信息 {(世界等级A,B):奖励模板编号, ...} dict
-
-# 节日登录奖励模板表
-class IPY_ActFeastLoginAward():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
-    def GetDayNum(self): return self.attrTuple[1] # 第X天从1开始 BYTE
-    def GetLoginAwardItemList(self): return self.attrTuple[2] # 奖励列表[[物品ID,个数,是否拍品], ...] list
-
-# 节日祝福时间表
-class IPY_ActFeastWish():
-    
-    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 GetTemplateIDInfo(self): return self.attrTuple[5] # 模板信息 {(世界等级A,B):模板编号, ...} dict
-
-# 节日祝福瓶模板表
-class IPY_ActFeastWishBottle():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
-    def GetWishBottleNum(self): return self.attrTuple[1] # 祝福瓶编号 BYTE
-    def GetNeedWishValue(self): return self.attrTuple[2] # 单次领奖所需祝福值 WORD
-    def GetChooseTimeMax(self): return self.attrTuple[3] # 最大可领奖次数 BYTE
-    def GetChoosePrizeItem(self): return self.attrTuple[4] # 选择奖励物品信息,选完为止 {记录索引:[物品ID,个数,是否拍品], ...} dict
-    def GetGoodItemIDList(self): return self.attrTuple[5] # 需要广播的物品ID列表 [物品ID, ...] list
-    def GetWorldNotifyKey(self): return self.attrTuple[6] # 全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,) char
-
-# 节日祝福池模板表
-class IPY_ActFeastWishPool():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetTemplateID(self): return self.attrTuple[0] # 模板ID BYTE
-    def GetWishPoolItemWeightInfo(self): return self.attrTuple[1] # 祝福池产出物品权重 [[权重, [物品ID,个数]], ..] list
-    def GetWishPoolClientItemShow(self): return self.attrTuple[2] # 前端展示物品列表 [物品ID, ...] list
-    def GetGoodItemIDList(self): return self.attrTuple[3] # 需要广播的物品ID列表 [物品ID, ...] list
-    def GetWorldNotifyKey(self): return self.attrTuple[4] # 全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,) char
-
 # 新仙界盛典-全民来嗨表
 class IPY_NewAllPeopleParty():
     
@@ -5379,12 +5186,10 @@
         self.__LoadFileData("Chests", onlyCheck)
         self.__LoadFileData("ChestsAward", onlyCheck)
         self.__LoadFileData("VIPKillNPC", onlyCheck)
-        self.__LoadFileData("LoginDayAward", onlyCheck)
         self.__LoadFileData("OrderInfo", onlyCheck)
         self.__LoadFileData("CTG", onlyCheck)
         self.__LoadFileData("CTGSelectItem", onlyCheck)
         self.__LoadFileData("FirstCharge", onlyCheck)
-        self.__LoadFileData("LVAward", onlyCheck)
         self.__LoadFileData("TreasureSet", onlyCheck)
         self.__LoadFileData("TreasureHouse", onlyCheck)
         self.__LoadFileData("TreasureItemLib", onlyCheck)
@@ -5440,13 +5245,6 @@
         self.__LoadFileData("ActTaskTemp", onlyCheck)
         self.__LoadFileData("ActLoginNew", onlyCheck)
         self.__LoadFileData("ActLoginNewAward", onlyCheck)
-        self.__LoadFileData("ActLoginAward", onlyCheck)
-        self.__LoadFileData("LoginAward", onlyCheck)
-        self.__LoadFileData("ActFeastLogin", onlyCheck)
-        self.__LoadFileData("ActFeastLoginAward", onlyCheck)
-        self.__LoadFileData("ActFeastWish", onlyCheck)
-        self.__LoadFileData("ActFeastWishBottle", onlyCheck)
-        self.__LoadFileData("ActFeastWishPool", onlyCheck)
         self.__LoadFileData("NewAllPeopleParty", onlyCheck)
         self.__LoadFileData("NewAllPeoplePartyAward", onlyCheck)
         self.__LoadFileData("ActLuckyTreasure", onlyCheck)
@@ -6449,13 +6247,6 @@
         self.CheckLoadData("VIPKillNPC")
         return self.ipyVIPKillNPCCache[index]
 
-    def GetLoginDayAwardCount(self):
-        self.CheckLoadData("LoginDayAward")
-        return self.ipyLoginDayAwardLen
-    def GetLoginDayAwardByIndex(self, index):
-        self.CheckLoadData("LoginDayAward")
-        return self.ipyLoginDayAwardCache[index]
-
     def GetOrderInfoCount(self):
         self.CheckLoadData("OrderInfo")
         return self.ipyOrderInfoLen
@@ -6483,13 +6274,6 @@
     def GetFirstChargeByIndex(self, index):
         self.CheckLoadData("FirstCharge")
         return self.ipyFirstChargeCache[index]
-
-    def GetLVAwardCount(self):
-        self.CheckLoadData("LVAward")
-        return self.ipyLVAwardLen
-    def GetLVAwardByIndex(self, index):
-        self.CheckLoadData("LVAward")
-        return self.ipyLVAwardCache[index]
 
     def GetTreasureSetCount(self):
         self.CheckLoadData("TreasureSet")
@@ -6875,55 +6659,6 @@
     def GetActLoginNewAwardByIndex(self, index):
         self.CheckLoadData("ActLoginNewAward")
         return self.ipyActLoginNewAwardCache[index]
-
-    def GetActLoginAwardCount(self):
-        self.CheckLoadData("ActLoginAward")
-        return self.ipyActLoginAwardLen
-    def GetActLoginAwardByIndex(self, index):
-        self.CheckLoadData("ActLoginAward")
-        return self.ipyActLoginAwardCache[index]
-
-    def GetLoginAwardCount(self):
-        self.CheckLoadData("LoginAward")
-        return self.ipyLoginAwardLen
-    def GetLoginAwardByIndex(self, index):
-        self.CheckLoadData("LoginAward")
-        return self.ipyLoginAwardCache[index]
-
-    def GetActFeastLoginCount(self):
-        self.CheckLoadData("ActFeastLogin")
-        return self.ipyActFeastLoginLen
-    def GetActFeastLoginByIndex(self, index):
-        self.CheckLoadData("ActFeastLogin")
-        return self.ipyActFeastLoginCache[index]
-
-    def GetActFeastLoginAwardCount(self):
-        self.CheckLoadData("ActFeastLoginAward")
-        return self.ipyActFeastLoginAwardLen
-    def GetActFeastLoginAwardByIndex(self, index):
-        self.CheckLoadData("ActFeastLoginAward")
-        return self.ipyActFeastLoginAwardCache[index]
-
-    def GetActFeastWishCount(self):
-        self.CheckLoadData("ActFeastWish")
-        return self.ipyActFeastWishLen
-    def GetActFeastWishByIndex(self, index):
-        self.CheckLoadData("ActFeastWish")
-        return self.ipyActFeastWishCache[index]
-
-    def GetActFeastWishBottleCount(self):
-        self.CheckLoadData("ActFeastWishBottle")
-        return self.ipyActFeastWishBottleLen
-    def GetActFeastWishBottleByIndex(self, index):
-        self.CheckLoadData("ActFeastWishBottle")
-        return self.ipyActFeastWishBottleCache[index]
-
-    def GetActFeastWishPoolCount(self):
-        self.CheckLoadData("ActFeastWishPool")
-        return self.ipyActFeastWishPoolLen
-    def GetActFeastWishPoolByIndex(self, index):
-        self.CheckLoadData("ActFeastWishPool")
-        return self.ipyActFeastWishPoolCache[index]
 
     def GetNewAllPeoplePartyCount(self):
         self.CheckLoadData("NewAllPeopleParty")
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 6ad9ddc..3731bd0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -35,12 +35,10 @@
 import ChPyNetSendPack
 import DataRecordPack
 import PlayerBillboard
-import PlayerLVAward
 import PlayerGoldGift
 import PlayerSignDay
 import PlayerPrestigeSys
 import PlayerFamily
-import PlayerLoginDayAward
 import PlayerGoldInvest
 import PlayerActivity
 import FBCommon
@@ -49,9 +47,6 @@
 import PlayerFreeGoods
 import GameFuncComm
 import PlayerFamilyTaofa
-import PlayerFeastLogin
-import PlayerFeastWish
-import PlayerActLogin
 import PlayerTreasure
 import IpyGameDataPY
 import EventReport
@@ -490,9 +485,6 @@
     #PK模式
     #SyncPKModel(curPlayer)
     
-    # 通知等级奖励领取记录
-    PlayerLVAward.Sync_LVAwardGetRecordInfo(curPlayer)
-    
     PlayerCoin.OnLogin(curPlayer)
     # 首充/天天首充/充值豪礼
     PlayerGoldGift.OnLogin(curPlayer)
@@ -516,9 +508,6 @@
     PlayerLianTi.OnPlayerLogin(curPlayer)
     
     PlayerTreasure.OnTreasureLogin(curPlayer)
-    
-    # 通知累计登陆礼
-    PlayerLoginDayAward.OnLoginNotifyLoginDayAward(curPlayer)
     
     # 副本进入时间
     FBCommon.FBOnLogin(curPlayer)
@@ -579,12 +568,6 @@
     PlayerActYunshi.OnPlayerLogin(curPlayer)
     # 登录活动
     PlayerActLoginNew.OnPlayerLogin(curPlayer)
-    # 节日登录活动
-    PlayerFeastLogin.OnPlayerLogin(curPlayer)
-    # 节日祝福活动
-    PlayerFeastWish.OnPlayerLogin(curPlayer)
-    # 登录奖励活动
-    PlayerActLogin.OnLogin(curPlayer)
     # 炼器活动
     PlayerActLianqi.OnPlayerLogin(curPlayer)
     # 天帝礼包活动
@@ -3407,9 +3390,6 @@
     # 每日免费直购礼包
     elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift:
         PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer)
-    # 玩家等级奖励
-    elif rewardType == ChConfig.Def_RewardType_LVAward:
-        PlayerLVAward.GetPlayerLVAward(curPlayer, dataEx)
     # 首充礼包奖励
     elif rewardType == ChConfig.Def_RewardType_FirstCharge:
         PlayerGoldGift.GetPlayerFirstCharge(curPlayer, dataEx, dataExStr)
@@ -3428,12 +3408,6 @@
     # 领取许愿池奖励
     elif rewardType == ChConfig.Def_RewardType_WishingWell:
         PlayerWishingWell.DoGetWishingAward(curPlayer)
-    # 领取登录奖励活动奖励
-    elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct:
-        PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr)
-    # 领取节日登录奖励
-    elif rewardType == ChConfig.Def_RewardType_FeastLogin:
-        PlayerFeastLogin.GetFeastLoginAward(curPlayer, dataEx)
     # 领取登录活动奖励
     elif rewardType == ChConfig.Def_RewardType_ActLoginAwardNew:
         PlayerActLoginNew.OnGetActLoginAward(curPlayer, dataEx, dataExStr)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLogin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLogin.py
deleted file mode 100644
index a7b3432..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActLogin.py
+++ /dev/null
@@ -1,318 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerActLogin
-#
-# @todo:登录奖励
-# @author xdh
-# @date 2018-07-12 16:50
-# @version 1.0
-#
-#
-# 详细描述: 登录奖励
-#
-#---------------------------------------------------------------------
-"""Version = 2018-07-12 16:50"""
-#---------------------------------------------------------------------
-
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import IpyGameDataPY
-import PlayerControl
-import ItemControler
-import ChPyNetSendPack
-import NetPackCommon
-import ShareDefine
-import PyGameData
-import ItemCommon
-
-import json
-
-def OnLogin(curPlayer):
-    isReset = __CheckPlayerLoginAwardAction(curPlayer)
-    if not isReset:
-        actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
-        # 活动中同步活动信息
-        SyncLoginAwardInfo(curPlayer)
-        if actCostRebateInfo.get(ShareDefine.ActKey_State):
-            SyncLoginAwardPlayerInfo(curPlayer)
-    return
-
-
-def RefreshOperationAction_LoginAward():
-    playerManager = GameWorld.GetPlayerManager()
-    for i in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(i)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerLoginAwardAction(curPlayer)
-    return
-
-
-def __CheckPlayerLoginAwardAction(curPlayer):
-    ## 检查玩家登录奖励活动数据信息
-    playerID = curPlayer.GetPlayerID()
-    
-    actLoginAwardInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
-    #loginAwardID = actLoginAwardInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actLoginAwardInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actLoginAwardInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if state:
-        #每天都要触发
-        AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_Login, 1, False, False)
-        SyncLoginAwardPlayerInfo(curPlayer)
-
-    playerLoginAwardID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardID, 0, ChConfig.Def_PDictType_LoginAward)  # 玩家身上的活动ID
-    # 活动ID 相同的话不处理
-    if cfgID == playerLoginAwardID:
-        #GameWorld.DebugLog("登录奖励活动ID不变,不处理!", curPlayer.GetPlayerID())
-        return
-    actWorldLVList = actLoginAwardInfo.get(ShareDefine.ActKey_WorldLVList, [])
-    # 未领取的奖励邮件发放
-    if playerLoginAwardID:
-        __SendLoginAwardMail(curPlayer, playerLoginAwardID)
-    
-    #if not cfgID:
-    GameWorld.DebugLog('    登录奖励活动重置!')
-    curPlayer.ClearNomalDict(ChConfig.Def_PDictType_LoginAward)
-    
-    GameWorld.DebugLog("登录奖励变更! state=%s,cfgID=%s,playerLoginAwardID=%s,actWorldLVList=%s" % (state, cfgID, playerLoginAwardID, actWorldLVList), playerID)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginAwardID, cfgID, ChConfig.Def_PDictType_LoginAward)
-    for i, actWorldLV in enumerate(actWorldLVList):
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginAwardWorldLV % i, actWorldLV, ChConfig.Def_PDictType_LoginAward)
-        
-    SyncLoginAwardInfo(curPlayer)
-    return True
-
-
-def __SendLoginAwardMail(curPlayer, cfgID):
-    # 未领取的奖励邮件发放
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActLoginAward", cfgID)
-    if not actIpyData:
-        return
-    templateIDList = actIpyData.GetTemplateID()
-    if not templateIDList:
-        return
-    
-    totalItemDict = {}
-    for day, tidList in enumerate(templateIDList):
-        playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardWorldLV % day, 0, ChConfig.Def_PDictType_LoginAward)
-
-        for tid in tidList:
-            ipyData = IpyGameDataPY.GetIpyGameData('LoginAward', tid)
-            if not ipyData:
-                continue
-            singleTimes = ipyData.GetSingleTimes()
-            curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardCurTimes % (day, tid), 0, ChConfig.Def_PDictType_LoginAward)
-            gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardGotTimes % (day, tid), 0, ChConfig.Def_PDictType_LoginAward)
-            canGotCnt = (curTimes - gotTimes) / singleTimes
-            if not canGotCnt:
-                continue
-            itemDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV, canGotCnt)
-            GameWorld.AddDictValue(totalItemDict, itemDict)
-    
-    if not totalItemDict:
-        return
-    totalItemList = [[itemID, itemCnt, 1] for itemID, itemCnt in totalItemDict.items()]
-    PlayerControl.SendMailByKey('LoginAward_1', [curPlayer.GetID()], totalItemList)
-    return
-
-
-def AddLoginAwardActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isSync=True):
-    '''增加登录奖励相关活动完成次数'''
-    #判断活动是否开启
-    if not addCnt:
-        return
-    actLoginAwardInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
-    state = actLoginAwardInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actLoginAwardInfo.get(ShareDefine.ActKey_CfgID, 0)
-    
-    if not state or not cfgID:
-        return
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActLoginAward", cfgID)
-    if not actIpyData:
-        return
-    templateIDList = actIpyData.GetTemplateID()
-    dayIndex = actLoginAwardInfo.get(ShareDefine.ActKey_DayIndex, 0)
-    if dayIndex >= len(templateIDList):
-        return
-    dayTidList = templateIDList[dayIndex]
-    findTid = 0
-    for tid in dayTidList:
-        if tid / 100 == actionID:
-            findTid = tid
-            break
-    if not findTid:
-        return
-    ipyData = IpyGameDataPY.GetIpyGameData('LoginAward', findTid)
-    if not ipyData:
-        return
-    totalTimes = ipyData.GetTotalTimes()
-    curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardCurTimes % (dayIndex, findTid), 0, ChConfig.Def_PDictType_LoginAward)
-    if isAdd:
-        addCnt = addCnt if totalTimes == 0 else min(totalTimes - curTimes, addCnt)
-        if addCnt <= 0:
-            return
-        updTimes = curTimes + addCnt
-    else:
-        updTimes = min(addCnt, totalTimes)
-    realAddCnt = updTimes - curTimes
-    if realAddCnt <= 0:
-        return
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginAwardCurTimes % (dayIndex, findTid), updTimes, ChConfig.Def_PDictType_LoginAward)
-    GameWorld.DebugLog('   增加登录奖励相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s' % (dayIndex, findTid, realAddCnt))
-    if isSync:
-        SyncLoginAwardPlayerInfo(curPlayer, dayIndex, findTid)
-    return True
-
-
-def GetLoginAwardActionAward(curPlayer, day, templateID):
-    '''领取登录奖励活动奖励'''
-    templateID = GameWorld.ToIntDef(templateID, 0)
-    ipyData = IpyGameDataPY.GetIpyGameData('LoginAward', templateID)
-    if not ipyData:
-        return
-    singleTimes = ipyData.GetSingleTimes()
-    curTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardCurTimes % (day, templateID), 0, ChConfig.Def_PDictType_LoginAward)
-    gotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardGotTimes % (day, templateID), 0, ChConfig.Def_PDictType_LoginAward)
-    if curTimes - gotTimes < singleTimes:
-        return
-    playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardWorldLV % day, 0, ChConfig.Def_PDictType_LoginAward)
-    #给奖励
-    awardDict = __GetAwardItem(curPlayer, ipyData, playerWorldLV)
-    # 检查背包
-    needSpace = len(awardDict)
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-    if needSpace > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    #更新次数 每次领奖只领一次
-    newGotTimes = gotTimes + singleTimes
-    
-    #GameWorld.Log('  actionID=%s,curTimes=%s,gotTimes=%s,singleTimes=%s,newGotTimes=%s'%(actionID, curTimes, gotTimes,singleTimes, newGotTimes))
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginAwardGotTimes % (day, templateID), newGotTimes, ChConfig.Def_PDictType_LoginAward)
-    for itemID, itemCnt in awardDict.items():
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
-    SyncLoginAwardPlayerInfo(curPlayer, day, templateID)
-    return
-
-
-def __GetAwardItem(curPlayer, ipyData, worldLV, times=1):
-    awardItemDict = {}
-    awardDict = eval(ipyData.GetReward())
-    wlvList = [int(lv) for lv in awardDict]
-    wlvList.sort()
-    findWlv = wlvList[-1]
-    for wlv in wlvList:
-        if worldLV <= wlv:
-            findWlv = wlv
-            break
-    itemList = awardDict[str(findWlv)]
-    for itemID, itemCnt, isbind in itemList:
-        if not itemID or not itemCnt:
-            continue
-        awardItemDict[itemID] = awardItemDict.get(itemID, 0) + itemCnt * times
-        
-    return awardItemDict
-
-
-def SyncLoginAwardPlayerInfo(curPlayer, day=-1, templateID=-1):
-    #通知当前次数、已领次数 
-    actLoginAwardInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
-    state = actLoginAwardInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actLoginAwardInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not state or not cfgID:
-        return
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActLoginAward", cfgID)
-    if not actIpyData:
-        return
-    templateIDList = actIpyData.GetTemplateID()
-    if not templateIDList:
-        return
-    if day != -1:
-        if day >= len(templateIDList):
-            return
-        syncDayList = [day]
-    else:
-        syncDayList = range(len(templateIDList))
-        
-    packData = ChPyNetSendPack.tagMCActLoginAwardPlayerInfo()
-    packData.DayInfoList = []
-    for cday in syncDayList:
-        tiemInfo = ChPyNetSendPack.tagMCActLoginAwardDayPlayerInfo()
-        tiemInfo.DayIndex = cday
-        tiemInfo.TaskList = []
-        for tID in templateIDList[cday]:
-            if templateID != -1 and tID != templateID:
-                continue
-            tipyData = IpyGameDataPY.GetIpyGameData('LoginAward', tID)
-            if not tipyData:
-                continue
-            taskInfo = ChPyNetSendPack.tagMCActLoginAwardTaskInfo()
-            taskInfo.TemplateID = tID
-            taskInfo.CurTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardCurTimes % (cday, tID), 0, ChConfig.Def_PDictType_LoginAward)
-            taskInfo.GotTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginAwardGotTimes % (cday, tID), 0, ChConfig.Def_PDictType_LoginAward)
-            tiemInfo.TaskList.append(taskInfo)
-        tiemInfo.ACount = len(tiemInfo.TaskList)
-        packData.DayInfoList.append(tiemInfo)
-    packData.Count = len(packData.DayInfoList)
-    NetPackCommon.SendFakePack(curPlayer, packData)
-    return
-
-
-def SyncLoginAwardInfo(curPlayer):
-    actLoginAwardInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_LoginAward, {})
-    state = actLoginAwardInfo.get(ShareDefine.ActKey_State, 0)
-    cfgID = actLoginAwardInfo.get(ShareDefine.ActKey_CfgID, 0)
-    if not cfgID:
-        return
-    actIpyData = IpyGameDataPY.GetIpyGameData("ActLoginAward", cfgID)
-    if not actIpyData:
-        return
-    templateIDList = actIpyData.GetTemplateID()
-    if not templateIDList:
-        return
-    actWorldLVList = actLoginAwardInfo.get(ShareDefine.ActKey_WorldLVList, [])
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(actIpyData)
-    actInfo = ChPyNetSendPack.tagMCActLoginAwardInfo()
-    actInfo.Clear()
-    actInfo.StartDate = startDateStr
-    actInfo.EndtDate = endDateStr
-    actInfo.AdvanceMinutes = actIpyData.GetAdvanceMinutes()
-    actInfo.IsDayReset = actIpyData.GetIsDayReset()
-    actInfo.ResetType = actIpyData.GetResetType()
-    actInfo.LimitLV = actIpyData.GetLVLimit()
-    actInfo.DayInfoList = []
-    tidList = []
-    for day, dayActList in enumerate(templateIDList):
-        dayInfo = ChPyNetSendPack.tagMCActLoginAwardDayInfo()
-        dayInfo.TemplateList = dayActList
-        dayInfo.ActCnt = len(dayActList)
-        for tid in dayActList:
-            if tid not in tidList:
-                tidList.append(tid)
-        dayInfo.WorldLV = actWorldLVList[day] if day < len(actWorldLVList) else 0
-        actInfo.DayInfoList.append(dayInfo)
-    actInfo.DayCnt = len(actInfo.DayInfoList)
-    actInfo.ActionInfo = []
-    for tid in tidList:
-        ipyData = IpyGameDataPY.GetIpyGameData('LoginAward', tid)
-        if not ipyData:
-            GameWorld.ErrLog('    登录奖励模板表找不到模板%s' % tid)
-            continue
-        tInfo = ChPyNetSendPack.tagMCActLoginAwardAction()
-        tInfo.TemplateID = tid
-        tInfo.ActionType = ipyData.GetActionType()
-        tInfo.TotalTimes = ipyData.GetTotalTimes()
-        tInfo.SingleTimes = ipyData.GetSingleTimes()
-        tInfo.ItemInfo = ipyData.GetReward()
-        tInfo.Count = len(tInfo.ItemInfo)
-        actInfo.ActionInfo.append(tInfo)
-    actInfo.TCount = len(actInfo.ActionInfo)
-    NetPackCommon.SendFakePack(curPlayer, actInfo)
-    return
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 54ae28a..36abc3f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -27,7 +27,6 @@
 import PlayerCoin
 import PlayerControl
 import PlayerFamily
-import PlayerLoginDayAward
 import NPCCommon
 import FunctionNPCCommon
 import PlayerGoldGift
@@ -280,8 +279,6 @@
     
     #OnDay时清除每日签到的信息
     PlayerSignDay.SignDayOnDay(curPlayer)
-    # 累计登陆礼包登陆次数刷新
-    PlayerLoginDayAward.NotePlayerLoginDayCnt(curPlayer)
     
     #------------------------------------------------------------------------------ 
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastLogin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastLogin.py
deleted file mode 100644
index 9839238..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastLogin.py
+++ /dev/null
@@ -1,215 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFeastLogin
-#
-# @todo:节日登录
-# @author hxp
-# @date 2021-01-27
-# @version 1.0
-#
-# 详细描述: 节日登录
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-01-27 17:00"""
-#-------------------------------------------------------------------------------
-
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ChPyNetSendPack
-import ItemControler
-import IPY_GameWorld
-import NetPackCommon
-import GameWorld
-import ChConfig
-
-def OnPlayerLogin(curPlayer):
-    isReset = __CheckPlayerFeastLoginAction(curPlayer)
-    if not isReset:
-        actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastLogin, {})
-        # 活动中同步活动信息
-        if actInfo.get(ShareDefine.ActKey_State):
-            __SetLoginByDayIndex(curPlayer, actInfo)
-            Sync_FeastLoginActionInfo(curPlayer)
-            Sync_FeastLoginPlayerInfo(curPlayer)
-    return
-
-def RefreshFeastLoginActionInfo():
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerFeastLoginAction(curPlayer)
-    return
-
-def __CheckPlayerFeastLoginAction(curPlayer):
-    ## 检查玩家活动信息
-    
-    playerID = curPlayer.GetPlayerID()
-    
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastLogin, {})
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastLoginID) # 玩家身上的活动ID
-    # 活动ID 相同的话不处理
-    if actID == playerActID:
-        GameWorld.DebugLog("节日登录活动ID不变,不处理!", curPlayer.GetPlayerID())
-        if state:
-            if __SetLoginByDayIndex(curPlayer, actInfo):
-                Sync_FeastLoginPlayerInfo(curPlayer)
-        return
-    GameWorld.DebugLog("节日登录活动重置! actID=%s,playerActID=%s,state=%s" % (actID, playerActID, state), playerID)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastLoginID, actID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastLoginState, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastLoginAwardState, 0)
-    
-    if state:
-        __SetLoginByDayIndex(curPlayer, actInfo)
-        Sync_FeastLoginActionInfo(curPlayer)
-        Sync_FeastLoginPlayerInfo(curPlayer)
-    return True
-
-def __SetLoginByDayIndex(curPlayer, actInfo):
-    ## 设置某一天已登录,可领奖
-    dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
-    loginState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastLoginState)
-    loginCount, lastRecordDay = loginState / 10, loginState % 10
-    curDay = dayIndex + 1
-    if lastRecordDay >= curDay:
-        GameWorld.DebugLog("    节日登录未达记录录登天或已记录登录! dayIndex=%s,loginState=%s,lastRecordDay(%s) >= curDay(%s)" % (dayIndex, loginState, lastRecordDay, curDay))
-        return
-    loginCount += 1
-    updLoginState = loginCount * 10 + curDay
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastLoginState, updLoginState)
-    GameWorld.DebugLog("    节日登录设置天登录: dayIndex=%s,loginState=%s,updLoginState=%s,loginCount=%s" % (dayIndex, loginState, updLoginState, loginCount))
-    return True
-
-def GetFeastLoginAward(curPlayer, dayNum):
-    ## 领取活动奖励
-    
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastLogin, {})
-    if not actInfo:
-        return
-    
-    if not actInfo.get(ShareDefine.ActKey_State):
-        GameWorld.DebugLog("非节日登录活动中!")
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActFeastLogin", cfgID)
-    if not ipyData:
-        return
-    
-    worldLV = actInfo.get(ShareDefine.ActKey_WorldLV)
-    templateID = GameWorld.GetDictValueByRangeKey(ipyData.GetTemplateIDInfo(), worldLV, 0)
-    if not templateID:
-        return
-    
-    dayIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastLoginAward", templateID)
-    if not dayIpyDataList:
-        return
-    
-    findIpyData = None
-    for dayIpyData in dayIpyDataList:
-        if dayIpyData.GetDayNum() == dayNum:
-            findIpyData = dayIpyData
-            break
-        
-    if not findIpyData:
-        GameWorld.DebugLog("找不到对应的天奖励! dayNum=%s" % dayNum)
-        return
-    
-    awardIndex = dayNum - 1
-    loginState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastLoginState)
-    loginCount = loginState / 10
-    if dayNum > loginCount:
-        GameWorld.DebugLog("节日登录活动登录天不足,无法领奖!dayNum=%s > loginCount=%s,loginState=%s" % (dayNum, loginCount, loginState))
-        return
-    
-    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastLoginAwardState)
-    if awardRecord & pow(2, awardIndex):
-        GameWorld.DebugLog("节日登录活动该天已领奖!dayNum=%s,awardIndex=%s,awardRecord=%s" % (dayNum, awardIndex, awardRecord))
-        return
-    
-    awardItemList = findIpyData.GetLoginAwardItemList()
-    if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList):
-        return
-    
-    updAwardRecord = awardRecord | pow(2, awardIndex)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastLoginAwardState, updAwardRecord)
-    Sync_FeastLoginPlayerInfo(curPlayer)
-    
-    GameWorld.DebugLog("领取节日登录奖励!dayNum=%s,awardIndex=%s,awardItemList=%s" % (dayNum, awardIndex, awardItemList))
-    
-    for itemID, itemCount, isAuctionItem in awardItemList:
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem], 
-                                     event=["FeastLogin", False, {}])
-        
-    return
-
-def Sync_FeastLoginPlayerInfo(curPlayer):
-    ## 通知活动玩家信息
-    loginState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastLoginState)
-    loginCount = loginState / 10
-    clientPack = ChPyNetSendPack.tagMCFeastLoginPlayerInfo()
-    clientPack.LoginState = pow(2, loginCount) - 1
-    clientPack.LoginAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastLoginAwardState)
-    NetPackCommon.SendFakePack(curPlayer, clientPack)
-    return
-
-def Sync_FeastLoginActionInfo(curPlayer):
-    ## 通知活动信息
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastLogin, {})
-    if not actInfo:
-        return
-    
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    
-    ipyData = IpyGameDataPY.GetIpyGameData("ActFeastLogin", cfgID)
-    if not ipyData:
-        return
-    
-    worldLV = actInfo.get(ShareDefine.ActKey_WorldLV)
-    templateID = GameWorld.GetDictValueByRangeKey(ipyData.GetTemplateIDInfo(), worldLV, 0)
-    if not templateID:
-        return
-    
-    dayIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastLoginAward", templateID)
-    if not dayIpyDataList:
-        return
-    
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
-    actPack = ChPyNetSendPack.tagMCFeastLoginInfo()
-    actPack.Clear()
-    actPack.StartDate = startDateStr
-    actPack.EndtDate = endDateStr
-    actPack.LimitLV = ipyData.GetLVLimit()
-    actPack.DayAwardList = []
-    for dayIpyData in dayIpyDataList:
-        dayInfo = ChPyNetSendPack.tagMCFeastLoginDayAward()
-        dayInfo.DayNum = dayIpyData.GetDayNum()
-        dayInfo.AwardItemList = []
-        for itemID, itemCount, isAuctionItem in dayIpyData.GetLoginAwardItemList():
-            itemInfo = ChPyNetSendPack.tagMCFeastLoginDayAwardItem()
-            itemInfo.ItemID = itemID
-            itemInfo.ItemCount = itemCount
-            itemInfo.IsBind = isAuctionItem
-            dayInfo.AwardItemList.append(itemInfo)
-        dayInfo.AwardCount = len(dayInfo.AwardItemList)
-        
-        actPack.DayAwardList.append(dayInfo)
-    actPack.DayCount = len(actPack.DayAwardList)
-    NetPackCommon.SendFakePack(curPlayer, actPack)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py
deleted file mode 100644
index 6fc74f1..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py
+++ /dev/null
@@ -1,477 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerFeastWish
-#
-# @todo:节日祝福
-# @author hxp
-# @date 2021-01-29
-# @version 1.0
-#
-# 详细描述: 节日祝福
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2021-01-29 11:30"""
-#-------------------------------------------------------------------------------
-
-import ItemCommon
-import PyGameData
-import ShareDefine
-import PlayerControl
-import IpyGameDataPY
-import ItemControler
-import ChPyNetSendPack
-import IPY_GameWorld
-import NetPackCommon
-import GameWorld
-import ChConfig
-
-import random
-
-def OnPlayerLogin(curPlayer):
-    isReset = __CheckPlayerFeastWishAction(curPlayer)
-    if not isReset:
-        actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWish, {})
-        # 活动中同步活动信息
-        if actInfo.get(ShareDefine.ActKey_State):
-            Sync_FeastWishActionInfo(curPlayer)
-            Sync_FeastWishPlayerInfo(curPlayer)
-    return
-
-def RefreshFeastWishActionInfo():
-    ## 收到GameServer同步的活动信息,刷新活动信息
-    playerManager = GameWorld.GetPlayerManager()
-    for index in xrange(playerManager.GetPlayerCount()):
-        curPlayer = playerManager.GetPlayerByIndex(index)
-        if not GameWorld.IsNormalPlayer(curPlayer):
-            continue
-        __CheckPlayerFeastWishAction(curPlayer)
-    return
-
-def __CheckPlayerFeastWishAction(curPlayer):
-    ## 检查玩家活动信息
-    
-    playerID = curPlayer.GetPlayerID()
-    
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWish, {})
-    actID = actInfo.get(ShareDefine.ActKey_ID, 0)
-    state = actInfo.get(ShareDefine.ActKey_State, 0)
-    
-    templateID = __GetWishTemplateID()
-    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishID) # 玩家身上的活动ID
-    playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishTemplateID) # 玩家身上的模板ID
-    # 活动ID 相同的话不处理
-    if actID == playerActID:
-        GameWorld.DebugLog("节日祝福活动ID不变,不处理!", curPlayer.GetPlayerID())
-        if state:
-            if templateID and templateID != playerTemplateID:
-                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishTemplateID, templateID)
-        return
-    GameWorld.DebugLog("节日祝福活动重置! actID=%s,playerActID=%s,state=%s,templateID=%s,playerTemplateID=%s" 
-                       % (actID, playerActID, state, templateID, playerTemplateID), playerID)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishID, actID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishTemplateID, templateID)
-    if playerTemplateID:
-        __SendWishBottleItemMail(curPlayer, playerTemplateID)
-        
-    bottleNumList = GetWishBottleNumList()
-    for bottleNum in bottleNumList:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleValue % bottleNum, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum, 0)
-        
-    if state:
-        Sync_FeastWishActionInfo(curPlayer)
-        Sync_FeastWishPlayerInfo(curPlayer)
-    return True
-
-def __SendWishBottleItemMail(curPlayer, playerTemplateID):
-    # 未领取的奖励邮件发放
-    
-    if not playerTemplateID:
-        return
-    
-    bottleIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastWishBottle", playerTemplateID)
-    if not bottleIpyDataList:
-        return
-    
-    playerID = curPlayer.GetPlayerID()
-    batchPlayerIDList, batchAddItemList, batchParamList = [], [], []
-    for ipyData in bottleIpyDataList:
-        bottleNum = ipyData.GetWishBottleNum()
-        choosePrizeItemDict = ipyData.GetChoosePrizeItem()
-        
-        curWishValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleValue % bottleNum)
-        getState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum)
-        
-        getIndexList = []
-        for recordIndex in choosePrizeItemDict.keys():
-            if getState & pow(2, recordIndex):
-                getIndexList.append(recordIndex)
-                
-        getTimes = len(getIndexList)
-        maxTimes = ipyData.GetChooseTimeMax()
-        if getTimes >= maxTimes:
-            continue
-        
-        needGiveTimes = min(maxTimes - getTimes, curWishValue / ipyData.GetNeedWishValue())
-        if not needGiveTimes:
-            continue
-        
-        awardItemList = []
-        for recordIndex, itemInfo in choosePrizeItemDict.items():
-            if recordIndex in getIndexList:
-                continue
-            awardItemList.append(itemInfo)
-            
-            curWishValue = curWishValue - ipyData.GetNeedWishValue()
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleValue % bottleNum, curWishValue)
-            
-            getState = getState | pow(2, recordIndex)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum, getState)
-            
-            if len(awardItemList) >= needGiveTimes:
-                break
-            
-        if not awardItemList:
-            continue
-        
-        batchPlayerIDList.append([playerID])
-        batchAddItemList.append(awardItemList)
-        batchParamList.append([bottleNum])
-        
-    if batchPlayerIDList:
-        PlayerControl.SendMailBatch("FeastWishBottleAwardMail", batchPlayerIDList, batchAddItemList, batchParamList)
-        
-    return
-
-#// AA 10 节日祝福瓶选择奖励物品 #tagCMFeastWishBottleChooseItem
-#
-#struct    tagCMFeastWishBottleChooseItem
-#{
-#    tagHead        Head;
-#    BYTE        BottleNum;    //瓶子编号
-#    BYTE        RecordIndex;    //物品索引,用于选择及记录是否已选择
-#};
-def OnFeastWishBottleChooseItem(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    bottleNum = clientData.BottleNum
-    getRecordIndex = clientData.RecordIndex
-    
-    templateID = __GetWishTemplateID()
-    GameWorld.DebugLog("节日祝福瓶选择奖励! templateID=%s,bottleNum=%s,getRecordIndex=%s" % (templateID, bottleNum, getRecordIndex))
-    if not templateID:
-        return
-    
-    bottleIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastWishBottle", templateID)
-    if not bottleIpyDataList:
-        return
-    
-    findIpyData = None
-    for bottleIpyData in bottleIpyDataList:
-        if bottleNum == bottleIpyData.GetWishBottleNum():
-            findIpyData = bottleIpyData
-            break
-        
-    if not findIpyData:
-        GameWorld.DebugLog("    找不到对应节日祝福瓶! bottleNum=%s" % bottleNum)
-        return
-    
-    choosePrizeItemDict = findIpyData.GetChoosePrizeItem()
-    if getRecordIndex not in choosePrizeItemDict:
-        GameWorld.DebugLog("    找不到对应节日祝福瓶奖励物品! getRecordIndex=%s" % getRecordIndex)
-        return
-    
-    curWishValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleValue % bottleNum)
-    getState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum)
-    getTimes = 0
-    for recordIndex in choosePrizeItemDict.keys():
-        if getState & pow(2, recordIndex):
-            getTimes += 1
-            if getRecordIndex == recordIndex:
-                GameWorld.DebugLog("    该物品已经选择过! getRecordIndex=%s,getState=%s" % (getRecordIndex, getState))
-                return
-            
-    if getTimes >= findIpyData.GetChooseTimeMax():
-        GameWorld.DebugLog("    已没有领取次数! getState=%s,getTimes=%s >= %s" % (getState, getTimes, findIpyData.GetChooseTimeMax()))
-        return
-    
-    if curWishValue < findIpyData.GetNeedWishValue():
-        GameWorld.DebugLog("    祝福值不足领取! curWishValue=%s < %s" % (curWishValue, findIpyData.GetNeedWishValue()))
-        return
-    
-    if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem):
-        return
-    itemInfo = choosePrizeItemDict[getRecordIndex]
-    itemID, itemCount, isAuctionItem = itemInfo
-    if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem], ["", False, {}]):
-        return
-    
-    updWishValue = curWishValue - findIpyData.GetNeedWishValue()
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleValue % bottleNum, updWishValue)
-    
-    updGetState = getState | pow(2, getRecordIndex)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum, updGetState)
-    
-    Sync_FeastWishPlayerInfo(curPlayer, [bottleNum])
-    
-    GameWorld.DebugLog("    选择成功: getState=%s,updGetState=%s,curWishValue=%s,updWishValue=%s,itemInfo=%s" 
-                       % (getState, updGetState, curWishValue, updWishValue, itemInfo))
-    
-    if itemID in findIpyData.GetGoodItemIDList():
-        recFromType = 1 # 记录来源: 1-祝福瓶,2-祝福池
-        valueList = [itemID, itemCount, recFromType]
-        strValueList = [curPlayer.GetPlayerName()]
-        notifyType = 4 # 通知全服单条
-        GameWorld.AddUniversalGameRec(0, ShareDefine.Def_UniversalGameRecType_FeastWish, valueList, strValueList, notifyType)
-        
-        notifyKey = findIpyData.GetWorldNotifyKey()
-        if notifyKey:
-            PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), itemID, "", itemCount])
-            
-    return
-
-#// AA 11 节日祝福池祝福 #tagCMFeastWishPoolWish
-#
-#struct    tagCMFeastWishPoolWish
-#{
-#    tagHead        Head;
-#    BYTE        WishCount;    //祝福次数
-#};
-def OnFeastWishPoolWish(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    wishCount = clientData.WishCount
-    
-    templateID = __GetWishTemplateID()
-    GameWorld.DebugLog("玩家节日祝福: wishCount=%s,templateID=%s" % (wishCount, templateID))
-    if not templateID:
-        return
-    
-    bottleIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastWishBottle", templateID)
-    poolIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWishPool", templateID)
-    if not bottleIpyDataList or not poolIpyData:
-        return
-    
-    canWishCountList = IpyGameDataPY.GetFuncEvalCfg("FeastWishCfg", 2)
-    if wishCount not in canWishCountList:
-        return
-    
-    costItemID = IpyGameDataPY.GetFuncCfg("FeastWishCfg", 1)
-    
-    costItemNeedCount = wishCount
-    costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID)
-    lackCount = max(0, costItemNeedCount - bindCnt - unBindCnt)
-    if lackCount > 0:
-        GameWorld.DebugLog("    所需祝福道具不足!costItemID=%s,costItemNeedCount=%s,lackCount=%s" 
-                           % (costItemID, costItemNeedCount, lackCount))
-        return
-    
-    giveWishValueTotal = 0
-    wishValueRange = IpyGameDataPY.GetFuncEvalCfg("FeastWishCfg", 3)
-    
-    giveItemDict = {} # 用于判断占用背包用
-    giveItemList = [] # 用于实际给物品及通知前端用,一个个给
-    isAuctionItem = 0 # 默认给非拍品
-    itemWeightInfoList = poolIpyData.GetWishPoolItemWeightInfo()
-    for _ in xrange(wishCount):
-        randItemInfo = GameWorld.GetResultByWeightList(itemWeightInfoList)
-        if not randItemInfo:
-            GameWorld.ErrLog("节日祝福池物品权重配置异常! %s" % itemWeightInfoList)
-            return
-        itemID, itemCount = randItemInfo
-        giveItemList.append([itemID, itemCount, isAuctionItem])
-        giveItemDict[itemID] = giveItemDict.get(itemID, 0) + itemCount
-        giveWishValueTotal += random.randint(wishValueRange[0], wishValueRange[1])
-        
-    checkSpaceList = [[itemID, itemCount, isAuctionItem] for itemID, itemCount in giveItemDict.items()]
-    if not ItemControler.CheckPackSpaceEnough(curPlayer, checkSpaceList):
-        return
-    
-    GameWorld.DebugLog("    giveWishValueTotal=%s,giveItemList=%s" % (giveWishValueTotal, giveItemList))
-    
-    # 扣除消耗
-    ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, costItemNeedCount, "FeastWish")
-    
-    # 加祝福值
-    syncBottleNumList = []
-    for bottleIpyData in bottleIpyDataList:
-        bottleNum = bottleIpyData.GetWishBottleNum()
-        curWishValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleValue % bottleNum)
-        getState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum)
-        getTimes = 0
-        for recordIndex in bottleIpyData.GetChoosePrizeItem().keys():
-            if getState & pow(2, recordIndex):
-                getTimes += 1
-        canGetTimes = max(0, bottleIpyData.GetChooseTimeMax() - getTimes)
-        wishValueMax = bottleIpyData.GetNeedWishValue() * canGetTimes
-        if curWishValue >= wishValueMax:
-            GameWorld.DebugLog("    瓶子祝福值已满! bottleNum=%s,canGetTimes=%s,wishValueMax=%s <= curWishValue=%s" 
-                               % (bottleNum, canGetTimes, wishValueMax, curWishValue))
-            continue
-        updWishValue = min(wishValueMax, curWishValue + giveWishValueTotal)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastWishBottleValue % bottleNum, updWishValue)
-        GameWorld.DebugLog("    瓶子祝福值更新! bottleNum=%s,canGetTimes=%s,wishValueMax=%s,curWishValue=%s,updWishValue=%s" 
-                           % (bottleNum, canGetTimes, wishValueMax, curWishValue, updWishValue))
-        syncBottleNumList.append(bottleNum)
-        
-    # 给物品
-    goodItemIDList = poolIpyData.GetGoodItemIDList()
-    notifyKey = poolIpyData.GetWorldNotifyKey()
-    for itemID, itemCount, isAuctionItem in giveItemList:
-        itemObj = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer)
-        itemUserData = itemObj.GetUserData()
-        isOK = ItemControler.DoLogic_PutItemInPack(curPlayer, itemObj, ["FeastWish", False, {}], [IPY_GameWorld.rptItem])
-        
-        if isOK and itemID in goodItemIDList:
-            # 通知GameServer记录好物品轮播
-            recFromType = 2 # 记录来源: 1-祝福瓶,2-祝福池
-            valueList = [itemID, itemCount, recFromType]
-            strValueList = [curPlayer.GetPlayerName()]
-            notifyType = 4 # 通知全服单条
-            GameWorld.AddUniversalGameRec(0, ShareDefine.Def_UniversalGameRecType_FeastWish, valueList, strValueList, notifyType)
-            
-            if notifyKey:
-                PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), itemID, itemUserData, itemCount])
-                
-    # 通知前端结果
-    retPack = ChPyNetSendPack.tagMCFeastWishResult()
-    retPack.AddWishValue = giveWishValueTotal
-    retPack.WishResult = str(giveItemList)
-    retPack.WishResultLen = len(retPack.WishResult)
-    NetPackCommon.SendFakePack(curPlayer, retPack)
-    
-    if syncBottleNumList:
-        Sync_FeastWishPlayerInfo(curPlayer, syncBottleNumList)
-        
-    return
-
-def GetFeastWishDropItemIDList(curPlayer, npcData):
-    ## 获取掉落祝福道具ID列表
-    ## @return: [itemID, ...]
-    
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWish, {})
-    if not actInfo:
-        return []
-    
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return []
-    
-    if not ChConfig.IsGameBoss(npcData):
-        return []
-    
-    npcID = npcData.GetNPCID()
-    killBossCntLimitDict = IpyGameDataPY.GetFuncCfg('KillBossCntLimit', 1)
-    limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, npcID)
-    if limitIndex not in [ShareDefine.Def_Boss_Func_World, ShareDefine.Def_Boss_Func_Home]:
-        # 规定只有世界boss、boss之家可掉落
-        return
-    
-    dropRate = IpyGameDataPY.GetFuncCfg("FeastWishCfg", 4)
-    if not GameWorld.CanHappen(dropRate):
-        return
-    wishItemID = IpyGameDataPY.GetFuncCfg("FeastWishCfg", 1) # 默认掉1个
-    #GameWorld.DebugLog("掉落节日祝福道具: npcID=%s,dropRate=%s,wishItemID=%s" % (npcID, dropRate, wishItemID))
-    return [wishItemID]
-
-def Sync_FeastWishPlayerInfo(curPlayer, bottleNumList=[]):
-    ## 通知活动玩家信息
-    
-    if bottleNumList:
-        syncBottleNumList = bottleNumList
-    else:
-        syncBottleNumList = GetWishBottleNumList()
-    
-    playerPack = ChPyNetSendPack.tagMCFeastWishPlayerInfo()
-    playerPack.PlayerBottleInfo = []
-    for bottleNum in syncBottleNumList:
-        playerBottle = ChPyNetSendPack.tagMCFeastWishPlayerBottle()
-        playerBottle.BottleNum = bottleNum
-        playerBottle.WishValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleValue % bottleNum)
-        playerBottle.ChooseRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastWishBottleGetState % bottleNum)
-        playerPack.PlayerBottleInfo.append(playerBottle)
-    playerPack.BottleCount = len(playerPack.PlayerBottleInfo)
-    NetPackCommon.SendFakePack(curPlayer, playerPack)
-    return
-
-def GetWishBottleNumList():
-    templateID = __GetWishTemplateID()
-    if not templateID:
-        return []
-    
-    bottleIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastWishBottle", templateID)
-    if not bottleIpyDataList:
-        return []
-    return [bottleIpyData.GetWishBottleNum() for bottleIpyData in bottleIpyDataList]
-
-def __GetWishTemplateID():
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWish, {})
-    if not actInfo:
-        return 0
-    
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return 0
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    ipyData = IpyGameDataPY.GetIpyGameData("ActFeastWish", cfgID)
-    if not ipyData:
-        return 0
-    
-    worldLV = actInfo.get(ShareDefine.ActKey_WorldLV)
-    templateID = GameWorld.GetDictValueByRangeKey(ipyData.GetTemplateIDInfo(), worldLV, 0)
-    return templateID
-
-def Sync_FeastWishActionInfo(curPlayer):
-    ## 通知活动信息
-    actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastWish, {})
-    if not actInfo:
-        return
-    
-    if not actInfo.get(ShareDefine.ActKey_State):
-        return
-    
-    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    ipyData = IpyGameDataPY.GetIpyGameData("ActFeastWish", cfgID)
-    if not ipyData:
-        return
-    
-    worldLV = actInfo.get(ShareDefine.ActKey_WorldLV)
-    templateID = GameWorld.GetDictValueByRangeKey(ipyData.GetTemplateIDInfo(), worldLV, 0)
-    if not templateID:
-        return
-    
-    bottleIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastWishBottle", templateID)
-    poolIpyData = IpyGameDataPY.GetIpyGameData("ActFeastWishPool", templateID)
-    
-    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)
-    actPack = ChPyNetSendPack.tagMCFeastWishInfo()
-    actPack.Clear()
-    actPack.StartDate = startDateStr
-    actPack.EndtDate = endDateStr
-    actPack.LimitLV = ipyData.GetLVLimit()
-    actPack.ResetType = ipyData.GetResetType()
-    actPack.WishPoolShowItemList = poolIpyData.GetWishPoolClientItemShow() if poolIpyData else []
-    actPack.WishPoolShowCount = len(actPack.WishPoolShowItemList)
-    actPack.BottleInfoList = []
-    if bottleIpyDataList:
-        for bottleIpyData in bottleIpyDataList:
-            bottleInfo = ChPyNetSendPack.tagMCFeastWishBottleInfo()
-            bottleInfo.BottleNum = bottleIpyData.GetWishBottleNum()
-            bottleInfo.NeedWishValue = bottleIpyData.GetNeedWishValue()
-            bottleInfo.ChooseTimeMax = bottleIpyData.GetChooseTimeMax()
-            bottleInfo.ChoosePrizeList = []
-            prizeItemDict = bottleIpyData.GetChoosePrizeItem()
-            for recordIndex, itemInfo in prizeItemDict.items():
-                itemID, itemCount, isAuctionItem = itemInfo
-                itemInfo = ChPyNetSendPack.tagMCFeastWishBottleItem()
-                itemInfo.RecordIndex = recordIndex
-                itemInfo.ItemID = itemID
-                itemInfo.ItemCount = itemCount
-                itemInfo.IsBind = isAuctionItem
-                bottleInfo.ChoosePrizeList.append(itemInfo)
-            bottleInfo.ChoosePrizeCount = len(bottleInfo.ChoosePrizeList)
-            actPack.BottleInfoList.append(bottleInfo)
-    actPack.BottleCount = len(actPack.BottleInfoList)
-    NetPackCommon.SendFakePack(curPlayer, actPack)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLVAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLVAward.py
deleted file mode 100644
index d4acaee..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLVAward.py
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package PlayerLVAward
-#
-# @todo: 记录玩家的等级奖励信息,二进制位标示,目前用了一个字典
-# @author xdh
-# @date 2018-03-07 13:50
-# 简要说明:
-# @version 1.0
-#
-# 详细描述: 
-#
-"""Version = 2018-03-07 13:50"""
-#------------------------------------------------------------------------------ 
-import GameWorld
-import IPY_GameWorld
-import ItemControler
-import ChConfig
-import ChPyNetSendPack
-import NetPackCommon
-import ItemCommon
-import PlayerControl
-import IpyGameDataPY
-import DataRecordPack
-
-
-
-
-## 领取玩家等级奖励
-#  @param getLV:领取的等级
-#  @return None
-def GetPlayerLVAward(curPlayer, awardID):
-    ipyData = IpyGameDataPY.GetIpyGameData('LVAward', awardID)
-    if not ipyData:
-        return
-    
-    getLV = ipyData.GetLV()
-    # 检查可否领取
-    
-    # 玩家等级小于领取等级
-    if curPlayer.GetLV() < getLV:
-        GameWorld.ErrLog("GetLVAward error:getLV=%s greater than heroLV=%s" % (getLV, curPlayer.GetLV()))
-        return
-    awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardGetRecord, 0,
-                                              ChConfig.Def_PDictType_LVAward)
-    vipAwardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardVIPGetRecord, 0,
-                                              ChConfig.Def_PDictType_LVAward)
-    awardMark = pow(2, awardID - 1)
-    if awardInfo & awardMark and vipAwardInfo & awardMark:
-        #已领取
-        GameWorld.DebugLog("领取玩家等级奖励已领取奖励!awardID=%s,getLV=%s" % (awardID, getLV))
-        return
-    itemList = []
-    if not awardInfo & awardMark:
-        #非vip奖励
-        job = curPlayer.GetJob()
-        awardDict = ipyData.GetReward()
-        if str(job) not in awardDict:
-            return
-        itemList += awardDict[str(job)]
-    hasVIPAward = False #是否有VIP奖励
-    if not vipAwardInfo & awardMark:
-        if curPlayer.GetVIPLv() >= ipyData.GetVIPLimit():
-            itemList += ipyData.GetVIPAward()
-            hasVIPAward = True
-    if not itemList:
-        return
-    # 检查背包
-    needSpace = len(itemList)
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-    if needSpace > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    
-    serverLimitCnt = ipyData.GetLimitCnt()
-    if serverLimitCnt > 0:
-        if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_LvAwardQueryState) == 1:
-            #已经在查询中, 不重复查询
-            GameWorld.DebugLog("已经在查询中, 不重复查询 awardID=%s" % awardID)
-            return
-        cmdStr = '%s' % ([awardID, serverLimitCnt, getLV])
-        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0,
-                                        "GetPlayerLVAward", cmdStr, len(cmdStr))
-        #设置状态查询中
-        curPlayer.SetDict(ChConfig.Def_PlayerKey_LvAwardQueryState, 1)
-        return
-    
-    # 给物品
-    GiveLVAward(curPlayer, awardID, itemList, hasVIPAward)
-    return
-
-def GiveLVAward(curPlayer, awardID, itemList=[], hasVIPAward=False):
-    if not itemList:
-        ipyData = IpyGameDataPY.GetIpyGameData('LVAward', awardID)
-        job = curPlayer.GetJob()
-        awardDict = ipyData.GetReward()
-        itemList = awardDict[str(job)]
-    
-    # 给物品
-    for itemID, itemCount in itemList:
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
-    ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "LVAward")
-    
-    # 更新已领取成功标记
-    awardMark = pow(2, awardID - 1)
-    awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardGetRecord, 0,
-                                              ChConfig.Def_PDictType_LVAward)
-    vipAwardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardVIPGetRecord, 0,
-                                              ChConfig.Def_PDictType_LVAward)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LVAwardGetRecord, awardInfo | awardMark, ChConfig.Def_PDictType_LVAward)
-    if hasVIPAward:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LVAwardVIPGetRecord, vipAwardInfo | awardMark, ChConfig.Def_PDictType_LVAward)
-    # 通知客户端
-    Sync_LVAwardGetRecordInfo(curPlayer)
-    
-    # 记录领取事件
-    DataRecordPack.DR_LVAward(curPlayer, awardID)
-    return
-
-## 通知等级奖励领取记录信息
-#  @param None
-#  @return None
-def Sync_LVAwardGetRecordInfo(curPlayer):
-    sendPack = ChPyNetSendPack.tagMCPlayerLVAwardGetRecord()
-    sendPack.Clear()
-    sendPack.LVAwardGetRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardGetRecord, 0,
-                                              ChConfig.Def_PDictType_LVAward)
-    sendPack.VIPAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LVAwardVIPGetRecord, 0,
-                                              ChConfig.Def_PDictType_LVAward)
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLoginDayAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLoginDayAward.py
deleted file mode 100644
index 71df261..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLoginDayAward.py
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package PlayerLoginDayAward
-#
-# @todo: 累计登陆礼
-# @author xdh
-# @date 2018-03-05 20:30
-# @version 1.0
-#
-# 详细描述:
-#"""Version = 2018-03-05 20:30"""
-#------------------------------------------------------------------------------ 
-
-import ChConfig
-import GameWorld
-import NetPackCommon
-import ChPyNetSendPack
-import ItemCommon
-import IPY_GameWorld
-import PlayerControl
-import ItemControler
-import DataRecordPack
-import IpyGameDataPY
-
-
-## onday添加累计登陆天数
-#  @param curPlayer
-#  @return None
-def NotePlayerLoginDayCnt(curPlayer):
-    cnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginDayCnt) + 1
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginDayCnt, cnt)
-    
-    NotifyPlayerLoginDayAward(curPlayer)
-    return
-
-
-
-## 登陆通知累计奖励信息
-#  @param curPlayer
-#  @return None
-def OnLoginNotifyLoginDayAward(curPlayer):
-    NotifyPlayerLoginDayAward(curPlayer)
-    return
-    
-    
-## 通知累计登陆信息
-#  @param curPlayer
-#  @return None
-def NotifyPlayerLoginDayAward(curPlayer):
-    sendPack = ChPyNetSendPack.tagMCTotalLoginDayCntInfo()
-    sendPack.Clear()
-    sendPack.DayCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginDayCnt)    
-    sendPack.AwardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginDayAward)
-    
-    #通知客户端时间
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
-    return
-
-
-## 领取累计登陆奖励
-#  @param curPlayer
-#  @return None
-def GetTotalLoginDayAward(index, clientPack, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    # 第一天为1
-    cnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginDayCnt)
-    
-    index = clientPack.Index
-    if index > cnt:
-        #登陆次数不够
-        return
-    
-    awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LoginDayAward)
-    awardMark = pow(2, index-1)
-    if awardInfo & awardMark:
-        #已领取
-        return
-    
-    ipyData = IpyGameDataPY.GetIpyGameData('LoginDayAward', index)
-    if not ipyData:
-        return
-    job = curPlayer.GetJob()
-    awardDict = ipyData.GetReward()
-    if str(job) not in awardDict:
-        return
-    itemList = awardDict[str(job)]
-    
-    # 检查背包
-    needSpace = len(itemList)
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
-    if needSpace > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    
-    # 给物品
-    for itemID, itemCount in itemList:
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
-    ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "LoginDayAward")
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LoginDayAward, awardInfo | awardMark)
-    
-
-    # 记录领取事件
-    DataRecordPack.DR_LoginDayAward(curPlayer, index)
-    
-    NotifyPlayerLoginDayAward(curPlayer)
-    return
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index e0fb6cb..aa92533 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -225,12 +225,9 @@
 OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
 OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
 OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
-OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
 OperationActionName_CollectWords = "ActCollectWords" # 集字活动
 OperationActionName_LuckyTreasure = "ActLuckyTreasure" # 幸运鉴宝活动
 OperationActionName_GrowupBuy = "ActGrowupBuy" # 成长必买活动
-OperationActionName_FeastLogin = "ActFeastLogin" # 节日登录活动
-OperationActionName_FeastWish = "ActFeastWish" # 节日祝福活动
 OperationActionName_ManyDayRecharge = "ActManyDayRecharge" # 多日连充活动
 OperationActionName_SingleRecharge = "ActSingleRecharge" # 单笔累充活动
 OperationActionName_Turntable = "ActTurntable" # 转盘活动
@@ -244,8 +241,6 @@
 
 ##节日活动类型列表 - 该类型无视开服天,日期到了就开启
 #FeastOperationActionNameList = [OperationActionName_GrowupBuy,
-#                                OperationActionName_FeastLogin,
-#                                OperationActionName_FeastWish,
 #                                ]
 ##所有的运营活动列表,含节日活动
 #OperationActionNameList = [OperationActionName_ExpRate, 
@@ -274,8 +269,6 @@
 #                                   OperationActionName_DailyGiftbag, OperationActionName_GrowupBuy,
 #                                   OperationActionName_Turntable,
 #                                   OperationActionName_CollectWords,
-#                                   OperationActionName_FeastLogin,
-#                                   OperationActionName_FeastWish,
 #                                   OperationActionName_ManyDayRecharge, OperationActionName_SingleRecharge,
 #                                   OperationActionName_GodGift,
 #                                   ]
@@ -856,7 +849,7 @@
                                 Def_UniversalGameRecType_Reward,    # 通用奖励表(TopBar)14
                                 Def_UniversalGameRecType_ArenaBattleRecord, # 竞技场玩家挑战记录 15
                                 Def_UniversalGameRecType_CrossActInfo, # 跨服运营活动信息记录 16
-                                Def_UniversalGameRecType_FeastWish, #节日祝福大奖记录17
+                                Def_UniversalGameRecType_17,
                                 Def_UniversalGameRecType_ActWorldLVLimitInfo, # 运营活动世界等级限制开启信息 18
                                 Def_UniversalGameRecType_19,
                                 Def_UniversalGameRecType_20,

--
Gitblit v1.8.0