From 0b314dd1d9f0c39e8d86de7e996c62836aa19aca Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 03 十一月 2025 15:01:04 +0800
Subject: [PATCH] 16 卡牌服务端(删除翅膀;)

---
 /dev/null                                                                                     |   50 --
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py |   15 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                    |   12 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py            |  530 ----------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py            |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py            |   67 --
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py          |  411 -----------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py          |   55 --
 PySysDB/PySysDBPY.h                                                                           |  175 -------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py   |   18 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py               |   84 ---
 11 files changed, 3 insertions(+), 1,421 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 26a1480..4200710 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -431,14 +431,6 @@
     list		AttrPerStarAddList;	//每星加成值列表
 };
 
-//技能搭配表
-
-struct	tagSkillMatch
-{
-	BYTE		_IDIndex;
-	list		Skills;	//主动技能(职业1id|职业2id)
-};
-
 //灵根表 #tagRolePoint
 
 struct	tagRolePoint
@@ -1064,112 +1056,6 @@
 	dict		AttrExDict;	//特殊属性值字典 {attrKey:value, ...}
 };
 
-//成长型境界怪物表
-
-struct tagNPCRealmStrengthen
-{
-	DWORD		_NPCID;	//NPCID
-	BYTE		_RealmDifficulty;	//境界难度
-	DWORD		MapID;
-	DWORD		LV;	//NPC等级
-	DWORD		Exp;//基础经验
-	WORD		MaxDrapLV;//玩家最大可掉落等级
-	BYTE		EquipClassLV;	//掉落装备阶
-	DWORD		DropMoneyMin;//最小金币
-	DWORD		DropMoneyMax;//最大金币
-	WORD		LowLV;	// 推荐最低等级
-	WORD		HighestLV;	// 推荐最高等级
-	DWORD		Defense;	// 推荐防御
-	DWORD		MDef;	// 标准击杀时间/毫秒
-	DWORD		FireDef;	// 脱机挂经验计算战力
-	DWORD		SP;	// SP
-};
-
-//NPC时间掉血表
-
-struct tagNPCTimeLostHP
-{
-	DWORD		_NPCID;	//NPCID
-	DWORD		LostHPPerSecond;	//单人每秒掉血量
-	BYTE		MaxPlayerCount;	//最大人数
-	DWORD		LostHPPerSecondEx;	//每增加一人附加掉血量
-	BYTE		FightPowerMinByLV;	//标准战力是否取等级表
-	DWORD		FightPowerMin;	//标准战力
-	DWORD		FightPowerMax;	//上限战力
-	DWORD		EveryFightPower;	//每x点战力
-	DWORD		EveryFightPowerLostHPEx;	//每x点战力附加伤害
-};
-
-//装备套装属性表
-
-struct tagEquipSuitAttr
-{
-	WORD		_SuiteID;	//套装ID
-	BYTE		SuiteCnt;	//套装件数
-	BYTE		Star;	//星数
-	dict		AttrInfo;	//属性
-	DWORD		SkillID;	//技能ID
-	BYTE		IsNotify;	//是否广播
-	WORD		ActivateIndex;	//激活索引
-};
-
-
-//羽翼精炼属性表
-
-struct tagWingRefineAttr
-{
-	BYTE		_WingClassLV;	//翅膀阶级
-	dict		AttrInfo;	//精炼属性信息
-	dict		ItemColorInfo;	//精炼经验对应颜色信息
-	DWORD		MaxRefineExp;	//本阶最大精炼值
-};
-
-//羽翼精炼经验表
-
-struct tagWingRefineExp
-{
-	DWORD		_ItemID;	//精炼物品ID
-	DWORD		RandExpMin;	//最小随机精炼值
-	DWORD		RandExpMax;	//最大随机精炼值
-	dict		ExpMaterial; //翅膀代数对应精炼值
-};
-
-//NPC掉落表
-
-struct tagNPCDropItem
-{
-	DWORD		_NPCID;	//NPCID
-	WORD		MaxWorldLV;	//最大世界等级,0为不限制,不受最大掉落等级影响
-	WORD		MaxDropLV;	//最大可掉落的玩家等级, 不影响世界等级
-	BYTE		CanDropRatePlus;	//额外提升掉率的是否有效
-	BYTE		IsDropJobSelf;	//是否只掉落本职业
-	list		PieRateDrop;	//饼图概率掉落信息 [(概率,0),(概率,(阶,颜色)),...]
-	BYTE		PieRateDoCnt;	//饼图概率执行次数
-	dict		IndepRateDrop;	//独立概率掉落信息 {(阶,颜色):概率,...}
-	BYTE		IndepRateDoCnt;		//独立概率执行次数
-	dict		EquipColorMaxDropCount;	//装备颜色最大掉落物品数 {颜色:上限数量,...}
-	list		TianxuanEquipRateList;	//天玄丹装备掉落饼图 [[概率,(阶,品质)], ...]
-	dict		EquipColorSuitInfo;	//装备颜色对应套装概率 {颜色:套装概率, ...}
-	dict		EquipPartKeyRateInfo;	//装备部位集合信息 {(颜色,是否套装):部位集合key, ...}
-	BYTE		ColorSuitPartOptimization;	//部位颜色套评分优选掉落,十位代表颜色,个位代表套装
-	dict		KillCountDropEquipPub;	//第x次击杀附加必掉装备 {次数:[阶,颜色,是否套装,部位集合key], ...}
-	dict		ItemIDDropRate;	//指定物品ID掉率信息 {物品ID:概率, ...}
-	dict		TianxuanItemIDRate;	//天玄丹指定ID概率 {物品ID:概率, ...}
-	dict		ItemIDMaxDropCount;	//指定物品ID最大掉落个数,没配默认1次 {物品ID:随机次数,...}
-	dict		ItemKeyDropRate;	//物品ID集合Key概率, 随机一个, 优先级低 {物品ID集合key:概率, ...} 
-	dict		ItemKeyDropRateJob;	//物品ID集合Key概率, 自身职业, 优先级高 {物品ID集合key:概率, ...}
-	dict		TianxuanItemKeyRate;	//天玄丹指定ID集合Key概率{物品ID集合key:概率, ...}
-	dict		ItemKeyMaxDropCount;	//物品ID集合Key随机次数,没配默认1次 {物品ID集合key:随机次数,...}
-	BYTE		DropMoneyDoCnt;		//掉落金币执行次数
-	WORD		DropMoneyRate;		//掉落金币概率
-	WORD		DropMoneyMin;		//掉落金币最小值
-	WORD		DropMoneyMax;		//掉落金币最大值
-	dict		KillCountDropPub;	//击杀次数必掉(公共){击杀次数:[[物品ID, ...], [随机物品ID, ...]], ...}
-	list		KillCountDropPri;	//击杀次数必掉(私有)[击杀次数,[物品ID,...],是否直接放入背包]
-	list		PriItemIDDrop;		//所有归属者私有掉落物品ID列表,每人一份,默认绑定,没有职业区分[物品ID, ...]
-	BYTE		AucionItemCanSell;	//掉落拍品可否上架集市
-};
-
 //符印塔表
 
 struct tagRuneTower
@@ -1242,58 +1128,6 @@
 	BYTE		ADCntMax;	//每日次数
 	list		ADAwardItemList;	//广告奖励物品列表
 	DWORD		ADMapID;	//对应副本ID,默认给该副本1次次数
-};
-
-//装备评分属性系数表
-
-struct tagEquipGSParam
-{
-	BYTE		_ClassLV;		// 装备阶级
-	BYTE		_EquipColor;	// 装备颜色
-	BYTE		_IsSuit;	// 是否套装
-	BYTE		_ItemQuality;	//物品星级
-	DWORD		BaseEquipMaxHPAddPerC;	// 基础防具生命百分比系数
-	DWORD		BaseEquipAtkAddPerC;	// 基础武器攻击百分比系数
-	DWORD		SuperHitC;	// 暴击值系数
-	DWORD		SuperHitPerC;	// 暴击值百分比系数
-	DWORD		LuckyHitRateC;	// 会心一击率系数
-	DWORD		LuckyHitRateReduceC;	// 会心一击抗性系数
-	DWORD		LuckPerC;	// 气运百分比系数
-	DWORD		PerLVAtkC;	// 每级增加攻击力系数
-	DWORD		PerLVMaxHPC;	// 每级增加生命值系数
-	DWORD		DropMoneyPerC;	// 增加掉落金币量百分比系数
-	DWORD		SuperHitReduceC;	// 暴击减伤百分比系数
-	DWORD		SuperHitRateReduceC;	// 暴击抗性系数
-	DWORD		HitC;	// 命中系数
-	DWORD		MissC;	// 闪避系数
-	DWORD		PetDamPerC;	// 灵宠增伤百分比系数
-	DWORD		MaxHPPerC;	// 生命加成系数
-	DWORD		AtkPerC;	// 攻击加成系数
-	DWORD		SkillAtkRateC;	// 技能加成系数
-	DWORD		SkillAtkRateReduceC;	// 技能减免系数
-	DWORD		SkillAddPer1C;	// 技能伤害增强1系数
-	DWORD		SkillAddPer2C;	// 技能伤害增强2系数
-	DWORD		SkillAddPer3C;	// 技能伤害增强3系数
-	DWORD		SkillAddPer4C;	// 技能伤害增强4系数
-	DWORD		SkillAddPer5C;	// 技能伤害增强5系数
-	DWORD		SkillAddPer6C;	// 技能伤害增强6系数
-	DWORD		SkillAddPer7C;	// 技能伤害增强7系数
-	DWORD		SkillReducePer1C;	// 受到技能伤害减少1系数
-	DWORD		SkillReducePer2C;	// 受到技能伤害减少2系数
-	DWORD		SkillReducePer3C;	// 受到技能伤害减少3系数
-	DWORD		SkillReducePer4C;	// 受到技能伤害减少4系数
-	DWORD		SkillReducePer5C;	// 受到技能伤害减少5系数
-	DWORD		SkillReducePer6C;	// 受到技能伤害减少6系数
-	DWORD		SkillReducePer7C;	// 受到技能伤害减少7系数
-	DWORD		ReduceSkillCDPerC;	// 减少所有技能CD系数
-	DWORD		LuckyHitPerC;	// 会心伤害加成系数
-	DWORD		FaintDefRateC;	// 控制抵抗系数
-	DWORD		SuperHitRateC;	// 暴击率加成系数
-	DWORD		IgnoreDefRateC;	// 无视防御系数
-	DWORD		IgnoreDefRateReduceC;	// 无视防御减免系数
-	DWORD		ProDefPerC;	// 防护百分比系数
-	DWORD		FinalHurtPerC;	// 最终伤害加成系数
-	DWORD		FinalHurtReducePerC;	// 最终伤害减免系数
 };
 
 //成就表
@@ -2062,15 +1896,6 @@
 	WORD	LowLV;	// 推荐最低等级
 	WORD	HighestLV;	// 推荐最高等级
 	DWORD	Defense;	// 推荐防御
-};
-
-//天赋技能表
-
-struct tagTalentSkill
-{
-	DWORD		_SkillID;	//技能ID
-	BYTE		TalentType;	//天赋类型
-	BYTE		Series;	//天赋系别
 };
 
 //限时抢购表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index fa4e673..a774ee1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -816,18 +816,6 @@
 PacketSubCMD_2=0x20
 PacketCallFunc_2=OnCoatDecompose
 
-;羽翼精炼
-[PlayerWing]
-ScriptName = Player\PlayerWing.py
-Writer = sgj
-Releaser = sgj
-RegType = 0
-RegisterPackCount = 1
-
-PacketCMD_1=0xA3
-PacketSubCMD_1=0x2E
-PacketCallFunc_1=OnWingJingLian
-
 ;新定义攻击
 [NewAttack]
 ScriptName = Skill\SkillShell.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 38e0459..c941776 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -720,11 +720,9 @@
 #Def_ItemEff_WeaponType = 2808   # 武器类型分类(非物品类型)
 #Def_ItemEff_Flower = 2816   # 鲜花
 #Def_Effect_AddMagicJifen = 1916      #使用道具给予幸运宝藏积分
-#Def_Effect_WingSkin = 1918   #翅膀皮肤
 #Def_Effect_AddSkyGodExp = 2854   #增加天神经验 A值天神经验
 #Def_Effect_SummonNPC = 2855   #召唤NPC A值NPCID B值持续时间 C值是否不删除物品,默认0删除
 #Def_Effect_AddOfficialExp = 2859   #增加爵位经验
-#Def_Effect_AddWingClassLV = 2862   #增加翅膀阶级 A值: N阶及N阶以下使用时翅膀直接升一阶; B值:是否保留祝福值
 
 #---------------------------------------------------------------------
 Def_Max_Update_Talent_Time = 3    #最大使用造化丹次数
@@ -2465,21 +2463,6 @@
 ## 装备位 - 灵器
 EquipPlace_LingQi = []
 
-#装备物品位置,不需要重刷属性
-EquipItemNoRefreshState = [
-    ShareDefine.retHorse,        #19 坐骑
-    ShareDefine.retWeaponSkin,   #20 时装武器
-    ShareDefine.retClothesSkin,  #21 时装衣服
-    ShareDefine.retWeapon2Skin,  #22 时装副手
-                           ]
-
-# 需要广播外观的装备部位(除了境界装备3部位)
-Def_SyncEquipStateByIndex = [
-    ShareDefine.retWing,        #13 翅膀
-    ShareDefine.retGuard1,    #14 守护1
-    ShareDefine.retHorse,        #19 坐骑
-                             ]
-
 #---------------------------------------------------------------------
 #特殊物品光环,永久存在
 Def_SuperBuffList = []
@@ -4199,8 +4182,6 @@
 ) = range(1001, 1091)
 
 
-#不可以佩戴翅膀的地图
-CanNotWearWingMapIDList = []
 #不可以佩戴武器时装的地图
 CanNotWearWeaponCoatMapIDList = []
 #不可以使用恢复物品或技能的地图
@@ -4550,7 +4531,7 @@
 ItemDel_EquipDecompose, # 装备分解
 ItemDel_20, # 捐献装备 20
 ItemDel_Treasure, # 寻宝
-ItemDel_WingExp, # 翅膀精炼经验
+ItemDel_22, # 翅膀精炼经验
 ItemDel_StoneUpgrade, # 宝石升级
 ItemDel_ItemCompound, # 合成
 ItemDel_Horse, # 坐骑 25
@@ -4599,7 +4580,6 @@
                    ItemDel_AddBourseItem:"AddBourseItem",
                    ItemDel_EquipDecompose:"EquipDecompose",
                    ItemDel_Treasure:"Treasure",
-                   ItemDel_WingExp:"WingExp",
                    ItemDel_StoneUpgrade:"StoneUpgrade",
                    ItemDel_ItemCompound:"ItemCompound",
                    ItemDel_Horse:"Horse",
@@ -4635,53 +4615,6 @@
 FB_JoinType_Multi, # 多人
 FB_JoinType_Help, # 助战
 ) = range(4)
-
-# 自定义任务事件记录 custom_mission_event
-CME_Log_Type_List = (
-CME_Log_Start, # 开始
-CME_Log_End, # 结束
-CME_Log_Acceptable, # 可接, 仅在OnDay及功能开启的时候发送
-) = range(3)
-
-CME_Type_List = (
-CME_Known, # 未知 0
-CME_FB_XXX1, # 1
-CME_FB_XXX2, # 2
-CME_FB_3,
-CME_FB_XXX4, # 4
-CME_FB_XXX5, # 5
-CME_FB_XXX6, # 6
-CME_FB_XXX7, # 7
-CME_FB_XXX8, # 8
-CME_FB_XXX9, # 9
-CME_FB_XXX10, # 10
-CME_FB_XXX11, # 11
-CME_Class_Horse, # 坐骑阶级
-CME_Class_Wing, # 翅膀阶级
-CME_Class_Official, # 爵位阶级
-CME_Class_XXX15, # 废弃 15
-CME_Class_XXX16, # 废弃
-CME_FB_XXX17, #17
-CME_FB_XXX18, #18
-CME_FB_XXX19, #19
-CME_FB_XXX20,  #20
-CME_FB_XXX21,  #21
-CME_FB_XXX22,  #22
-CME_FB_RunDaily,  #日常跑环,只记录可接
-CME_FB_RunFamily,  #战盟跑环,只记录可接
-) = range(3,28) # 后台只收集ID改成从3开始,不然会和任务1冲突
-
-CME_Type_Dict = {
-CME_Known:"未知",
-CME_Class_Horse:"坐骑",
-CME_Class_Wing:"翅膀",
-CME_Class_Official:"爵位",
-CME_FB_RunDaily:"日常跑环",
-CME_FB_RunFamily:"战盟跑环",
-}
-
-# 需要发送到任务事件扩展记录的类型 ShareDefine.Def_UserAction_ExMissionLog
-CME_Ex_Log_List = [CME_Class_Horse, CME_Class_Wing, CME_Class_Official]
 
 # 竖杠
 Def_Str_Montant = "|"
@@ -4855,21 +4788,6 @@
 InvestType_Boss, # Boss 11
 InvestType_Life, # 终身卡 12
 ) = range(7, 7 + 6)
-
-# 法宝特权
-MWPrivilegeList = (
-MWPrivilege_FixedAttr, # 本源之魂(固定属性)
-MWPrivilege_SealDemonAddAttr, # 封魔坛每进入1次增加攻击
-MWPrivilege_EquipPlus, # 强化之魂
-MWPrivilege_RuneDecompose, # 符印分解经验加成
-MWPrivilege_Horse, # 坐骑每提升5级攻击提升点数
-MWPrivilege_Pet, # 每激活1只宠物,生命上限提升
-MWPrivilege_MWSkillUp, # 每提升5级技能潜力,真实伤害+200(最高18000)
-MWPrivilege_WingHP, # 翅膀生命属性+30%
-MWPrivilege_EquipSuit, # 套装基础属性+20%
-MWPrivilege_EquipWash, # 每日免费领取50个洗练石
-MWPrivilege_SignDayAddAttr, # 每日签到加属性 11
-) = range(1,11+1)
 
 (
 tttLeaveMap, # 退出倒计时 0
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 4d3eaf0..102acde 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -3961,73 +3961,6 @@
 
 
 #------------------------------------------------------
-#A3 2E 羽翼精炼 #tagCMWingUp
-
-class  tagCMWingUp(Structure):
-    Head = tagHead()
-    Count = 0    #(BYTE Count)//索引个数
-    WingIndexList = list()    #(vector<BYTE> WingIndexList)//材料翅膀在背包中的索引列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x2E
-        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):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.WingIndexList.append(value)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA3
-        self.Head.SubCmd = 0x2E
-        self.Count = 0
-        self.WingIndexList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1 * self.Count
-
-        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.WriteBYTE(data, self.WingIndexList[i])
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                WingIndexList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagCMWingUp=tagCMWingUp()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWingUp.Head.Cmd,m_NAtagCMWingUp.Head.SubCmd))] = m_NAtagCMWingUp
-
-
-#------------------------------------------------------
 #A4 06 变更家族成员加入审核方式#tagCGChangeFamilyAcceptJoinType
 
 class  tagCGChangeFamilyAcceptJoinType(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py
index e1a0e41..0ef37e8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py
@@ -707,95 +707,6 @@
                 PlayerControl.GetMoneyReal(curPlayer, type_name), json.dumps(extraDict, ensure_ascii=False)), curPlayer)
     return
 
-## 写任务事件记录
-#  @param startType: 0 任务开始 1 任务结束
-#  @param isFinish: 当任务结束,任务结果 0:失败 1:成功
-#  @param failReason: 当任务结束且任务失败时的原因
-def WriteEvent_mission_log(curPlayer, missionData, startType, isFinish=0, failReason=""):
-    if startType not in [0, 1] or isFinish not in [0, 1]:
-        return
-    
-    if not missionData:
-        return
-    
-    #missionName = "0%s%s" % (missionData.ID, missionData.Name)
-    missionName = missionData.ID
-    __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason)
-    return
-
-def WriteEvent_MWSuccess(curPlayer, mwID, succID, logType, isFinish=0):
-    '''写自定义任务 - 法宝成就事件, 事件ID格式:  91+法宝ID+至少4位的成就ID
-    '''
-    cmeType = "91%d%04d" % (mwID, succID)
-    WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish)
-    return
-
-def WriteEvent_FB(curPlayer, mapID, funcLineID, logType, joinType=0, isFinish=0, failReason=""):
-    '''写自定义任务 - 副本事件, 事件ID格式: 90+mapID+joinType+funcLineID
-    @param joinType: 0-默认无; 1-单人; 2-多人; 3-助战;   注意单人队伍算单人
-    '''
-    cmeType = "90%d%d%02d" % (mapID, joinType, funcLineID)
-    WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish, failReason=failReason)
-    return
-
-## 写自定义任务事件记录
-#  @param cmeType: 自定义类型, 对应 ChConfig.CME_Type_List
-#  @param logType: 记录类型, 对应 ChConfig.CME_Log_Type_List
-#  @param cmeInfoEx: 扩展自定义信息, 一般用于需要分子项记录的类型
-#  @param isFinish: 当事件结束时结果 0:失败 1:成功
-#  @param failReason: 当事件结束时失败的原因
-def WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish=0, failReason="", cmeInfoEx=None):
-    #if cmeType not in ChConfig.CME_Type_List:
-    #    return
-    
-    if logType not in ChConfig.CME_Log_Type_List:
-        return
-    
-    startType = 1 if logType == ChConfig.CME_Log_End else 0 
-    #===========================================================================
-    # missionName = ChConfig.CME_Type_Dict.get(cmeType, "未知")
-    # if cmeInfoEx != None:
-    #    missionName = "%s:%s" % (missionName, cmeInfoEx)
-    # if logType == ChConfig.CME_Log_Acceptable:
-    #    missionName = "%s_可挑战" % missionName
-    #===========================================================================
-        
-    missionName = cmeType
-    __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason, cmeType in ChConfig.CME_Ex_Log_List)
-    return
-
-## 写任务事件记录
-#  @param startType: 0 任务开始 1 任务结束
-#  @param missionName: 任务名
-#  @param isFinish: 当任务结束,任务结果 0:失败 1:成功
-#  @param failReason: 当任务结束且任务失败时的原因
-def __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason, isExLog=False):
-    isFinish = 1 if isFinish else 0
-    exDict = {"Fail":failReason}
-    resultMsg = json.dumps(exDict, ensure_ascii=False)
-    EventReport(ShareDefine.Def_UserAction_MissionLog, 
-                "MissionStep=%s&MissionID=%s&MissionResult=%s&MissionExtra=%s"%(startType, missionName, isFinish, resultMsg), curPlayer)
-    #===========================================================================
-    # missionlogEvent = missionlog()
-    # missionlogEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # missionlogEvent.scribeEventName = ShareDefine.Def_UserAction_ExMissionLog if isExLog else \
-    #                                    ShareDefine.Def_UserAction_MissionLog
-    # missionlogEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # missionlogEvent.chr_level = GetScribeEvent_chr_level(curPlayer)
-    # missionlogEvent.type = startType
-    # missionlogEvent.mission_name = missionName
-    # missionlogEvent.session_id = GameWorld.GetSessionID(curPlayer)
-    # 
-    # missionlogEvent.ip = curPlayer.GetIP()
-    # missionlogEvent.account_name = missionlogEvent.account_id
-    # missionlogEvent.account_type = GameWorld.GetAccountType(curPlayer)
-    # missionlogEvent.chr_name = curPlayer.GetPlayerName()
-    # missionlogEvent.mission_result = isFinish
-    # missionlogEvent.mission_reason = failReason
-    # WriteEvent(missionlogEvent)
-    #===========================================================================
-    return
-
 def WriteEvent_level_up(curPlayer):
     EventReport(ShareDefine.Def_UserAction_LVUP, "", curPlayer)
     #===========================================================================
@@ -812,180 +723,11 @@
     #===========================================================================
     return
 
-def WriteEvent_chat_log(curPlayer, content, cmc_name, tagName="", addinfo=""):
-    return
-    #===========================================================================
-    # '''
-    # @todo: 写聊天监控记录
-    # @param content: 聊天内容
-    # @param cmc_name: 聊天频道标识
-    # @param tagName: 私聊对象
-    # @param addinfo: 额外信息
-    # '''
-    # chatlogEvent = chat_log()
-    # chatlogEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # chatlogEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # chatlogEvent.chr_name = curPlayer.GetName()
-    # chatlogEvent.content = __GetEventChatContent(content)
-    # chatlogEvent.cmc_name = cmc_name
-    # chatlogEvent.ip = curPlayer.GetIP()
-    # chatlogEvent.account_name = chatlogEvent.account_id
-    # chatlogEvent.account_type = GameWorld.GetAccountType(curPlayer)
-    # chatlogEvent.chr_level = GetScribeEvent_chr_level(curPlayer)
-    # chatlogEvent.object = tagName
-    # chatlogEvent.addinfo = addinfo
-    # WriteEvent(chatlogEvent)
-    #===========================================================================
-    return
-
-def __GetEventChatContent(content):
-    '''
-    <a color="255,255,0" href="GOTO 10000,74,60">[地图:暮光之城(74,60)]</a>
-    <A color="205,0,0" onmouseover="ShowInfo ITEM,55986" DATA="07 04 01 00 B2 DA 00 00 00 01 00 01 
-        28 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
-        00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 3C 00 00 00 7B 27 32 38 27 3A 5B 
-        27 31 30 32 33 34 27 5D 2C 27 31 39 27 3A 5B 27 33 35 34 27 2C 27 38 35 36 27 2C 27 33 35 
-        34 27 2C 27 37 35 38 27 2C 27 39 35 31 27 2C 27 31 30 35 32 27 5D 7D 04 00 00 00 00 00 00 
-        00 00 00 00 00 00 00 00 00 00 ">[神圣的傲世之弓 +40]</a>
-    '''
-    tempMatch = re.search("<a color=.*?>.*?</a>", content)
-    if tempMatch:
-        tempStr = tempMatch.group()
-        markIndex = tempStr.index(">") + 1
-        repStr = tempStr[markIndex:tempStr.index("<", markIndex)]
-        content = content.replace(tempStr, repStr)
-        
-    tempMatch = re.search("<A color=.*?>.*?</a>", content)
-    if tempMatch:
-        tempStr = tempMatch.group()
-        markIndex = tempStr.index(">") + 1
-        repStr = tempStr[markIndex:tempStr.index("<", markIndex)]
-        content = content.replace(tempStr, repStr)
-        
-    # 替换换行
-    content = content.replace("\r", "") 
-    content = content.replace("\n", "") 
-    return content
-
-## 写自定义事件记录
-#  @param event_name: 事件名称
-#  @param comments: 备注或附加信息
-def WriteEvent_custom_events(curPlayer, event_name, comments):
-    #===========================================================================
-    # customEvent = custom_events()
-    # customEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # customEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # customEvent.event_name = event_name
-    # customEvent.session_id = GameWorld.GetSessionID(curPlayer)
-    # 
-    # customEvent.ip = curPlayer.GetIP()
-    # customEvent.account_name = customEvent.account_id
-    # customEvent.account_type = GameWorld.GetAccountType(curPlayer)
-    # customEvent.chr_name = curPlayer.GetPlayerName()
-    # customEvent.chr_level = GetScribeEvent_chr_level(curPlayer)
-    # customEvent.comments = CommFunc.GetStrCutoff(comments, 255)
-    # WriteEvent(customEvent)
-    #===========================================================================
-    return
-
 def GetScribeEvent_chr_level(curPlayer):
     transCnt, showLV = GameWorld.GetClientLV(curPlayer)
     return transCnt * 1000 + showLV
 
-
 ## -------------------------------------- 扩展自定义 ---------------------------------------
-
-class horse_class(ScribeEvent):
-    # 坐骑进阶记录
-    def __init__(self):
-        #必须字段
-        super(horse_class, self).__init__()
-        self.account_id = "" # 账号 ID,平台下唯一,且终生不变
-        self.chr_name = "" # 玩家角色名
-        
-        self.bef_class_lv = 0 # 此次进阶操作前的坐骑等阶, 0代表1阶
-        self.bef_exp = 0 # 此次进阶操作前的坐骑等阶星数的经验值
-        self.cost_item_cnt = 0 # 此次进阶消耗的进阶道具数量
-        self.aft_class_lv = 0 # 此次进阶操作后的坐骑等阶, 0代表1阶
-        self.aft_exp = 0 # 此次进阶操作后的坐骑等阶星数的经验值
-        
-        #非必须字段
-
-        #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
-        return
-    
-    def GetCurEventStr(self):
-        if not self.time:
-            self.time = GameWorld.GetCurrentDataTimeStr()
-        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name, 
-                   str(self.bef_class_lv), str(self.bef_exp), str(self.cost_item_cnt),
-                   str(self.aft_class_lv), str(self.aft_exp), self.time]
-        
-        return super(horse_class, self).GetEventStr(tmpList)
-    
-    def GetScribeEventName(self): return ShareDefine.Def_UserAction_HorseClass
-    
-def WriteEvent_horse_class(curPlayer, befClassLV, befExp, costCnt, aftClassLV, aftExp):
-    ## 写坐骑进阶记录
-    #===========================================================================
-    # horseClass = horse_class()
-    # horseClass.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # horseClass.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # horseClass.chr_name = curPlayer.GetPlayerName()
-    # horseClass.bef_class_lv = befClassLV
-    # horseClass.bef_exp = befExp
-    # horseClass.cost_item_cnt = costCnt
-    # horseClass.aft_class_lv = aftClassLV
-    # horseClass.aft_exp = aftExp
-    # WriteEvent(horseClass)
-    #===========================================================================
-    return
-
-class wing_class(ScribeEvent):
-    # 翅膀进阶记录
-    def __init__(self):
-        #必须字段
-        super(wing_class, self).__init__()
-        self.account_id = "" # 账号 ID,平台下唯一,且终生不变
-        self.chr_name = "" # 玩家角色名
-        
-        self.bef_class_lv = 0 # 当前翅膀等阶, 0代表1阶
-        self.bef_exp = 0 # 进阶操作前的祝福值
-        self.cost_item_cnt = 0 # 此次进阶消耗的进阶道具数量
-        self.aft_class_lv = 0 # 此次进阶操作后翅膀的等阶, 0代表1阶
-        self.aft_exp = 0 # 进阶操作后的祝福值
-        
-        #非必须字段
-
-        #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
-        return
-    
-    def GetCurEventStr(self):
-        if not self.time:
-            self.time = GameWorld.GetCurrentDataTimeStr()
-        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name, 
-                   str(self.bef_class_lv), str(self.bef_exp), str(self.cost_item_cnt),
-                   str(self.aft_class_lv), str(self.aft_exp), self.time]
-        
-        return super(wing_class, self).GetEventStr(tmpList)
-    
-    def GetScribeEventName(self): return ShareDefine.Def_UserAction_WingClass
-    
-def WriteEvent_wing_class(curPlayer, befClassLV, befExp, costCnt, aftClassLV, aftExp):
-    ## 写翅膀进阶记录
-    #===========================================================================
-    # wingClass = wing_class()
-    # wingClass.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # wingClass.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # wingClass.chr_name = curPlayer.GetPlayerName()
-    # wingClass.bef_class_lv = befClassLV
-    # wingClass.bef_exp = befExp
-    # wingClass.cost_item_cnt = costCnt
-    # wingClass.aft_class_lv = aftClassLV
-    # wingClass.aft_exp = aftExp
-    # WriteEvent(wingClass)
-    #===========================================================================
-    return
 
 class pet_lv(ScribeEvent):
     # 宠物升级记录
@@ -1301,278 +1043,6 @@
     # WriteEvent(coinToGold)
     #===========================================================================
     return
-
-class rune_lv(ScribeEvent):
-    # 符印升级记录
-    def __init__(self):
-        #必须字段
-        super(rune_lv, self).__init__()
-        self.account_id = "" # 账号 ID,平台下唯一,且终生不变
-        self.chr_name = "" # 玩家角色名
-        
-        self.rune_name = "" # 符印名称
-        self.cost_rune_money = 0 # 此次消耗的符印精华
-        self.aft_lv = 0 # 此次操作后的等级, 0代表1级
-        self.aft_rune_money = 0 # 此次操作后的符印精华
-        
-        #非必须字段
-        
-        #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
-        return
-    
-    def GetCurEventStr(self):
-        if not self.time:
-            self.time = GameWorld.GetCurrentDataTimeStr()
-        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name, 
-                   self.rune_name, str(self.cost_rune_money), str(self.aft_lv), str(self.aft_rune_money), self.time]
-        
-        return super(rune_lv, self).GetEventStr(tmpList)
-    
-    def GetScribeEventName(self): return ShareDefine.Def_UserAction_RuneLV
-    
-def WriteEvent_rune_lv(curPlayer, runeName, costruneMoney, aftLV, aftruneMoney):
-    ## 写符印升级记录
-    #===========================================================================
-    # runeLV = rune_lv()
-    # runeLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # runeLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # runeLV.chr_name = curPlayer.GetPlayerName()
-    # runeLV.rune_name = runeName
-    # runeLV.cost_rune_money = costruneMoney
-    # runeLV.aft_lv = aftLV
-    # runeLV.aft_rune_money = aftruneMoney
-    # WriteEvent(runeLV)
-    #===========================================================================
-    return
-
-class change_name(ScribeEvent):
-    # 改名记录
-    def __init__(self):
-        #必须字段
-        super(change_name, self).__init__()
-        self.account_id = "" # 账号 ID,平台下唯一,且终生不变
-        self.chr_name = "" # 玩家角色名
-        
-        self.old_name = "" # 原来的名字
-        self.new_name = "" # 新的名字
-        #非必须字段
-        
-        #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
-        return
-    
-    def GetCurEventStr(self):
-        if not self.time:
-            self.time = GameWorld.GetCurrentDataTimeStr()
-        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name, 
-                   self.old_name, self.new_name, self.time]
-        
-        return super(change_name, self).GetEventStr(tmpList)
-    
-    def GetScribeEventName(self): return ShareDefine.Def_UserAction_ChangeName
-    
-def WriteEvent_change_name(curPlayer, oldName, newName):
-    ## 改名记录
-    #===========================================================================
-    # changeName = change_name()
-    # changeName.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # changeName.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # changeName.chr_name = curPlayer.GetPlayerName()
-    # changeName.old_name = oldName
-    # changeName.new_name = newName    
-    # WriteEvent(changeName)
-    #===========================================================================
-    return
-
-class add_zhenqi(ScribeEvent):
-    # 真气产出记录
-    def __init__(self):
-        #必须字段
-        super(add_zhenqi, self).__init__()
-        self.account_id = "" # 账号 ID,平台下唯一,且终生不变
-        self.chr_name = "" # 玩家角色名
-        
-        self.eventName = "" # 来源
-        self.eventData = "" # 来源附加信息
-        self.addValue = 0 # 产出数量
-        self.totalValue = 0 # 剩余总量
-        
-        #非必须字段
-
-        #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
-        return
-    
-    def GetCurEventStr(self):
-        if not self.time:
-            self.time = GameWorld.GetCurrentDataTimeStr()
-        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name, 
-                   self.eventName, str(self.eventData), str(self.addValue), str(self.totalValue), self.time]
-        
-        return super(add_zhenqi, self).GetEventStr(tmpList)
-    
-    def GetScribeEventName(self): return ShareDefine.Def_UserAction_AddZhenqi
-    
-def WriteEvent_add_zhenqi(curPlayer, eventName, eventData, addValue, totalValue):
-    ## 真气产出记录
-    #===========================================================================
-    # if eventData:
-    #    eventData = str(eventData)
-    #    eventData = eventData.replace("\"", "'")
-    #    eventData = eventData.replace(",", "|")
-    #    
-    # addZhenQi = add_zhenqi()
-    # addZhenQi.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # addZhenQi.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # addZhenQi.chr_name = curPlayer.GetPlayerName()
-    # addZhenQi.eventName = eventName
-    # addZhenQi.eventData = eventData
-    # addZhenQi.addValue = addValue
-    # addZhenQi.totalValue = totalValue
-    # WriteEvent(addZhenQi)
-    #===========================================================================
-    return
-
-class lost_zhenqi(ScribeEvent):
-    # 真气消耗记录
-    def __init__(self):
-        #必须字段
-        super(lost_zhenqi, self).__init__()
-        self.account_id = "" # 账号 ID,平台下唯一,且终生不变
-        self.chr_name = "" # 玩家角色名
-        
-        self.eventName = "" # 消耗点
-        self.eventData = "" # 消耗点附加信息
-        self.lostValue = 0 # 消耗数量
-        self.totalValue = 0 # 剩余总量
-        
-        #非必须字段
-
-        #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
-        return
-    
-    def GetCurEventStr(self):
-        if not self.time:
-            self.time = GameWorld.GetCurrentDataTimeStr()
-        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name, 
-                   self.eventName, str(self.eventData), str(self.lostValue), str(self.totalValue), self.time]
-        
-        return super(lost_zhenqi, self).GetEventStr(tmpList)
-    
-    def GetScribeEventName(self): return ShareDefine.Def_UserAction_LostZhenqi
-    
-def WriteEvent_lost_zhenqi(curPlayer, eventName, eventData, lostValue, totalValue):
-    ## 真气消耗记录
-    #===========================================================================
-    # if eventData:
-    #    eventData = str(eventData)
-    #    eventData = eventData.replace("\"", "'")
-    #    eventData = eventData.replace(",", "|")
-    #    
-    # lostZhenQi = lost_zhenqi()
-    # lostZhenQi.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # lostZhenQi.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # lostZhenQi.chr_name = curPlayer.GetPlayerName()
-    # lostZhenQi.eventName = eventName
-    # lostZhenQi.eventData = eventData
-    # lostZhenQi.lostValue = lostValue
-    # lostZhenQi.totalValue = totalValue
-    # WriteEvent(lostZhenQi)
-    #===========================================================================
-    return
-
-class coat_lv(ScribeEvent):
-    # 时装升级记录
-    def __init__(self):
-        #必须字段
-        super(coat_lv, self).__init__()
-        self.account_id = "" # 账号 ID,平台下唯一,且终生不变
-        self.chr_name = "" # 玩家角色名
-        
-        self.coat_name = "" # 时装名称
-        self.bef_lv = 0 # 此次进阶操作前的等级
-        self.bef_exp = 0 # 此次进阶操作前的经验值
-        self.cost_item_cnt = 0 # 此次消耗的道具数量
-        self.aft_lv = 0 # 此次操作后的等级, 0代表0级, 1代表+1级
-        self.aft_exp = 0 #此次进阶操作后的经验值
-        #非必须字段
-        
-        #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
-        return
-    
-    def GetCurEventStr(self):
-        if not self.time:
-            self.time = GameWorld.GetCurrentDataTimeStr()
-        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name, 
-                   self.coat_name, str(self.bef_lv), str(self.bef_exp), str(self.cost_item_cnt), str(self.aft_lv), str(self.aft_exp), self.time]
-        
-        return super(coat_lv, self).GetEventStr(tmpList)
-    
-    def GetScribeEventName(self): return ShareDefine.Def_UserAction_CoatLV
-    
-def WriteEvent_coat_lv(curPlayer, coatName, befLV, befExp, costItemCnt, aftLV, aftExp):
-    return
-    ## 写时装升级记录
-    #===========================================================================
-    # coatLV = coat_lv()
-    # coatLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # coatLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # coatLV.chr_name = curPlayer.GetPlayerName()
-    # coatLV.coat_name = coatName
-    # coatLV.bef_lv = befLV
-    # coatLV.bef_exp = befExp
-    # coatLV.cost_item_cnt = costItemCnt
-    # coatLV.aft_lv = aftLV
-    # coatLV.aft_exp = aftExp
-    # WriteEvent(coatLV)
-    #===========================================================================
-
-
-
-class wingskin_lv(ScribeEvent):
-    # 时装升级记录
-    def __init__(self):
-        #必须字段
-        super(wingskin_lv, self).__init__()
-        self.account_id = "" # 账号 ID,平台下唯一,且终生不变
-        self.chr_name = "" # 玩家角色名
-        
-        self.skin_name = "" # 幻化翅膀名称
-        self.bef_lv = 0 # 此次进阶操作前的等级
-        self.bef_exp = 0 # 此次进阶操作前的经验值
-        self.cost_item_cnt = 0 # 此次消耗的道具数量
-        self.aft_lv = 0 # 此次操作后的等级, 0代表0级, 1代表+1级
-        self.aft_exp = 0 #此次进阶操作后的经验值
-        #非必须字段
-        
-        #即时是非必须字段也应该传送,各字段用,分隔,并且用双引号包含,参考格式'"1","","","12314"'
-        return
-    
-    def GetCurEventStr(self):
-        if not self.time:
-            self.time = GameWorld.GetCurrentDataTimeStr()
-        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name, 
-                   self.skin_name, str(self.bef_lv), str(self.bef_exp), str(self.cost_item_cnt), str(self.aft_lv), str(self.aft_exp), self.time]
-        
-        return super(wingskin_lv, self).GetEventStr(tmpList)
-    
-    def GetScribeEventName(self): return ShareDefine.Def_UserAction_WingSkinLV
-    
-def WriteEvent_wingskin_lv(curPlayer, skinName, befLV, befExp, costItemCnt, aftLV, aftExp):
-    ## 写幻化翅膀升级记录
-    #===========================================================================
-    # wingskinLV = wingskin_lv()
-    # wingskinLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))
-    # wingskinLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())
-    # wingskinLV.chr_name = curPlayer.GetPlayerName()
-    # wingskinLV.skin_name = skinName
-    # wingskinLV.bef_lv = befLV
-    # wingskinLV.bef_exp = befExp
-    # wingskinLV.cost_item_cnt = costItemCnt
-    # wingskinLV.aft_lv = aftLV
-    # wingskinLV.aft_exp = aftExp
-    # WriteEvent(wingskinLV)
-    #===========================================================================
-    return
-
 
 class horseskin_lv(ScribeEvent):
     # 时装升级记录
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCHP.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCHP.py
deleted file mode 100644
index 3b2d47b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCHP.py
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.SetNPCHP
-#
-# @todo:设置屏幕周围NPC血量
-# @author hxp
-# @date 2015-3-22
-# @version 1.0
-#
-# 详细描述: 设置屏幕周围NPC血量
-#
-#---------------------------------------------------------------------
-#"""Version = 2015-03-22 23:00"""
-#---------------------------------------------------------------------
-
-import IpyGameDataPY
-import IPY_GameWorld
-import GameWorld
-import ChConfig
-import GameObj
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param msgList 参数列表
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-    if len(msgList) != 2:
-        GameWorld.DebugAnswer(curPlayer, "SetNPCHP NPCID HP")
-        return
-    
-    npcID, setHP = msgList
-    setHP = max(1, setHP)
-    
-    curNPC = GameWorld.GetObj(npcID, IPY_GameWorld.gotNPC)
-    if curNPC:
-        __GMSetNPCHP(curPlayer, curNPC, setHP)
-        return
-    
-    gameMap = GameWorld.GetMap()
-    
-    for i in range(curPlayer.GetPosX() - ChConfig.Def_Screen_Area, curPlayer.GetPosX() + ChConfig.Def_Screen_Area):
-        for j in range(curPlayer.GetPosY() - ChConfig.Def_Screen_Area, curPlayer.GetPosY() + ChConfig.Def_Screen_Area):
-            tempObj = gameMap.GetPosObj(i, j)
-            if not tempObj:
-                continue
-            for k in range(0, tempObj.GetObjCount()):
-                curObj = tempObj.GetObjByIndex(k)
-                if curObj == None:
-                    continue
-                
-                if curObj.GetGameObjType() != IPY_GameWorld.gotNPC:
-                    continue
-                
-                curNPC = GameWorld.GetObj(curObj.GetID(), IPY_GameWorld.gotNPC)
-                if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie:
-                    continue
-                
-                #不杀功能NPC
-                if curNPC.GetType() == IPY_GameWorld.ntFunctionNPC:
-                    continue 
-                
-                if curNPC.GetNPCID() != npcID:
-                    continue
-                
-                __GMSetNPCHP(curPlayer, curNPC, setHP)
-    
-    return
-
-def __GMSetNPCHP(curPlayer, curNPC, setHP):
-    npcID = curNPC.GetNPCID()
-    isByTime = True if IpyGameDataPY.GetIpyGameDataNotLog("NPCTimeLostHP", npcID) else False
-    GameObj.SetHP(curNPC, setHP, isByTime=isByTime)
-    curNPC.Notify_HP()
-    GameWorld.DebugAnswer(curPlayer, "SetNPCHP ID=%s(%s),HP=%s" % (curNPC.GetID(), curNPC.GetNPCID(), setHP))
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCKillDrop.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCKillDrop.py
deleted file mode 100644
index 31dbf78..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetNPCKillDrop.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.SetNPCKillDrop
-#
-# @todo:设置NPC击杀掉落记录信息
-# @author hxp
-# @date 2018-02-10
-# @version 1.0
-#
-# 详细描述: 设置NPC击杀掉落记录信息
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-02-10 10:00"""
-#-------------------------------------------------------------------------------
-
-import PlayerControl
-import IpyGameDataPY
-import GameWorld
-import ChConfig
-import ShareDefine
-
-#---------------------------------------------------------------------
-#逻辑实现
-
-## GM命令执行入口
-#  @param curPlayer 当前玩家
-#  @param msgList 参数列表
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, msgList):
-    if not msgList:
-        GameWorld.DebugAnswer(curPlayer, "设置次数: SetNPCKillDrop npcID 击杀次数")
-        GameWorld.DebugAnswer(curPlayer, "重置所有: SetNPCKillDrop 0")
-        return
-    
-    if len(msgList) == 1 and not msgList[0]:
-        resetNPCIDList = []
-        ipyDataMgr = IpyGameDataPY.IPY_Data()
-        for i in xrange(ipyDataMgr.GetNPCDropItemCount()):
-            ipyData = ipyDataMgr.GetNPCDropItemByIndex(i)
-            npcID = ipyData.GetNPCID()
-            if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_NPCKillCount % npcID):
-                continue
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NPCKillCount % npcID, 0)
-            resetNPCIDList.append(npcID)
-            
-        gw = GameWorld.GetGameWorld()
-        globalKillDropDict = IpyGameDataPY.GetFuncEvalCfg("GlobalDropCD", 2)
-        for npcID in globalKillDropDict.keys():
-            killedCount = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_NPCKilledCount % npcID)
-            if not killedCount:
-                continue
-            msgInfo = str([npcID, 0])
-            GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "GlobalKillCount", msgInfo, len(msgInfo))
-            resetNPCIDList.append(npcID)
-            
-        GameWorld.DebugAnswer(curPlayer, "重置OK: %s" % resetNPCIDList)
-        return
-    
-    npcID = msgList[0]
-    ipyData = IpyGameDataPY.GetIpyGameData("NPCDropItem", npcID)
-    if not ipyData:
-        GameWorld.DebugAnswer(curPlayer, "没有配置掉落:%s" % npcID)
-        return
-    
-    if not ipyData.GetKillCountDropPri() and not ipyData.GetKillCountDropEquipPub() and not ipyData.GetKillCountDropPub():
-        GameWorld.DebugAnswer(curPlayer, "不需要设置击杀掉落次数信息!%s" % npcID)
-    else:
-        killCount = msgList[1] if len(msgList) > 1 else 0
-        setValue = killCount * 10000 + killCount * 100 + killCount
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_NPCKillCount % npcID, setValue)
-        GameWorld.DebugAnswer(curPlayer, "击杀掉落值(%s)=%s" % (npcID, killCount))
-        
-    return
-
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWingJL.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWingJL.py
deleted file mode 100644
index c856c9b..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetWingJL.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package GM.Commands.SetWingJL
-#
-# @todo:设置翅膀精炼
-# @author hxp
-# @date 2018-04-03
-# @version 1.0
-#
-# 详细描述: 设置翅膀精炼
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2018-04-03 20:00"""
-#-------------------------------------------------------------------------------
-
-import GameWorld
-import ShareDefine
-import IPY_GameWorld
-import ItemCommon
-import IpyGameDataPY
-import PlayerWing
-#---------------------------------------------------------------------
-#全局变量
-#---------------------------------------------------------------------
-
-#---------------------------------------------------------------------
-#逻辑实现
-## 设置技能等级
-#  @param curPlayer 当前玩家
-#  @param dataList 参数列表
-#  @return None
-#  @remarks 函数详细说明.
-def OnExec(curPlayer, dataList):
-    if not dataList:
-        GameWorld.DebugAnswer(curPlayer, "SetWingJL 精炼值 可选[特殊材料ID 个数 特殊材料ID 个数]")
-        return
-    
-    equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    curWing = equipPack.GetAt(ShareDefine.retWing)
-    if not ItemCommon.CheckItemCanUse(curWing):
-        GameWorld.DebugAnswer(curPlayer, "没有穿戴翅膀!无法设置!")
-        return
-    
-    wingClassLV = curWing.GetLV()
-    exp = dataList[0]
-    materialDict = {}
-    paramLen = len(dataList)
-    if paramLen > 1:
-        curWing.ClearUserAttr(ShareDefine.Def_IudetWingMaterialItemID)
-        curWing.ClearUserAttr(ShareDefine.Def_IudetWingMaterialItemCount)
-        for i in range(1, paramLen, 2):
-            if i + 1 >= paramLen:
-                break
-            
-            materialItemID = dataList[i]
-            materialCount = dataList[i + 1]
-            materialDict[materialItemID] = materialCount
-            materialExp = GetWingMaterialItemExp(materialItemID, wingClassLV) * materialCount
-            exp += materialExp
-            
-            curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemID, materialItemID)
-            curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemCount, materialCount)
-            
-    curWing.SetUserAttr(ShareDefine.Def_IudetWingProgressValue, exp)
-    PlayerWing.UpdWingColor(curPlayer, curWing, 0, exp)
-    GameWorld.DebugAnswer(curPlayer, "精炼:%s,%s" % (exp, materialDict))
-    return
-
-def GetWingMaterialItemExp(materialItemID, wingClassLV):
-    wingAttrIpyData = IpyGameDataPY.GetIpyGameData("WingRefineExp", materialItemID)
-    if wingAttrIpyData == None:
-        return 0
-    expDict = wingAttrIpyData.GetExpMaterial()
-    if not expDict:
-        return 0
-    if wingClassLV not in expDict:
-        return 0
-    return expDict[wingClassLV]
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index fb10f06..abb555a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -1474,21 +1474,6 @@
     
     return callFunc()
 
-
-## 获得特殊副本npc掉落金钱
-#  @param curPlayer 
-#  @return None
-def OnGetNPCExp(curPlayer, curNPC):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnGetNPCExp"))
-    
-    if not callFunc:
-        return 0
-        
-    
-    return callFunc(curPlayer, curNPC)
-
 ## 获得外层经验倍率
 def OnGetOuterExpRate(curPlayer):
     do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 8a1d35c..ab12435 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -404,11 +404,6 @@
                         ("list", "AttrPerStarAddList", 0),
                         ),
 
-                "SkillMatch":(
-                        ("BYTE", "IDIndex", 1),
-                        ("list", "Skills", 0),
-                        ),
-
                 "RolePoint":(
                         ("BYTE", "AttrID", 1),
                         ("dict", "AddAttrInfoPerPoint", 0),
@@ -877,93 +872,6 @@
                         ("dict", "AttrExDict", 0),
                         ),
 
-                "NPCRealmStrengthen":(
-                        ("DWORD", "NPCID", 1),
-                        ("BYTE", "RealmDifficulty", 1),
-                        ("DWORD", "MapID", 0),
-                        ("DWORD", "LV", 0),
-                        ("DWORD", "Exp", 0),
-                        ("WORD", "MaxDrapLV", 0),
-                        ("BYTE", "EquipClassLV", 0),
-                        ("DWORD", "DropMoneyMin", 0),
-                        ("DWORD", "DropMoneyMax", 0),
-                        ("WORD", "LowLV", 0),
-                        ("WORD", "HighestLV", 0),
-                        ("DWORD", "Defense", 0),
-                        ("DWORD", "MDef", 0),
-                        ("DWORD", "FireDef", 0),
-                        ("DWORD", "SP", 0),
-                        ),
-
-                "NPCTimeLostHP":(
-                        ("DWORD", "NPCID", 1),
-                        ("DWORD", "LostHPPerSecond", 0),
-                        ("BYTE", "MaxPlayerCount", 0),
-                        ("DWORD", "LostHPPerSecondEx", 0),
-                        ("BYTE", "FightPowerMinByLV", 0),
-                        ("DWORD", "FightPowerMin", 0),
-                        ("DWORD", "FightPowerMax", 0),
-                        ("DWORD", "EveryFightPower", 0),
-                        ("DWORD", "EveryFightPowerLostHPEx", 0),
-                        ),
-
-                "EquipSuitAttr":(
-                        ("WORD", "SuiteID", 1),
-                        ("BYTE", "SuiteCnt", 0),
-                        ("BYTE", "Star", 0),
-                        ("dict", "AttrInfo", 0),
-                        ("DWORD", "SkillID", 0),
-                        ("BYTE", "IsNotify", 0),
-                        ("WORD", "ActivateIndex", 0),
-                        ),
-
-                "WingRefineAttr":(
-                        ("BYTE", "WingClassLV", 1),
-                        ("dict", "AttrInfo", 0),
-                        ("dict", "ItemColorInfo", 0),
-                        ("DWORD", "MaxRefineExp", 0),
-                        ),
-
-                "WingRefineExp":(
-                        ("DWORD", "ItemID", 1),
-                        ("DWORD", "RandExpMin", 0),
-                        ("DWORD", "RandExpMax", 0),
-                        ("dict", "ExpMaterial", 0),
-                        ),
-
-                "NPCDropItem":(
-                        ("DWORD", "NPCID", 1),
-                        ("WORD", "MaxWorldLV", 0),
-                        ("WORD", "MaxDropLV", 0),
-                        ("BYTE", "CanDropRatePlus", 0),
-                        ("BYTE", "IsDropJobSelf", 0),
-                        ("list", "PieRateDrop", 0),
-                        ("BYTE", "PieRateDoCnt", 0),
-                        ("dict", "IndepRateDrop", 0),
-                        ("BYTE", "IndepRateDoCnt", 0),
-                        ("dict", "EquipColorMaxDropCount", 0),
-                        ("list", "TianxuanEquipRateList", 0),
-                        ("dict", "EquipColorSuitInfo", 0),
-                        ("dict", "EquipPartKeyRateInfo", 0),
-                        ("BYTE", "ColorSuitPartOptimization", 0),
-                        ("dict", "KillCountDropEquipPub", 0),
-                        ("dict", "ItemIDDropRate", 0),
-                        ("dict", "TianxuanItemIDRate", 0),
-                        ("dict", "ItemIDMaxDropCount", 0),
-                        ("dict", "ItemKeyDropRate", 0),
-                        ("dict", "ItemKeyDropRateJob", 0),
-                        ("dict", "TianxuanItemKeyRate", 0),
-                        ("dict", "ItemKeyMaxDropCount", 0),
-                        ("BYTE", "DropMoneyDoCnt", 0),
-                        ("WORD", "DropMoneyRate", 0),
-                        ("WORD", "DropMoneyMin", 0),
-                        ("WORD", "DropMoneyMax", 0),
-                        ("dict", "KillCountDropPub", 0),
-                        ("list", "KillCountDropPri", 0),
-                        ("list", "PriItemIDDrop", 0),
-                        ("BYTE", "AucionItemCanSell", 0),
-                        ),
-
                 "RuneTower":(
                         ("DWORD", "ID", 1),
                         ("DWORD", "RunePoint", 0),
@@ -1017,55 +925,6 @@
                         ("BYTE", "ADCntMax", 0),
                         ("list", "ADAwardItemList", 0),
                         ("DWORD", "ADMapID", 0),
-                        ),
-
-                "EquipGSParam":(
-                        ("BYTE", "ClassLV", 1),
-                        ("BYTE", "EquipColor", 1),
-                        ("BYTE", "IsSuit", 1),
-                        ("BYTE", "ItemQuality", 1),
-                        ("DWORD", "BaseEquipMaxHPAddPerC", 0),
-                        ("DWORD", "BaseEquipAtkAddPerC", 0),
-                        ("DWORD", "SuperHitC", 0),
-                        ("DWORD", "SuperHitPerC", 0),
-                        ("DWORD", "LuckyHitRateC", 0),
-                        ("DWORD", "LuckyHitRateReduceC", 0),
-                        ("DWORD", "LuckPerC", 0),
-                        ("DWORD", "PerLVAtkC", 0),
-                        ("DWORD", "PerLVMaxHPC", 0),
-                        ("DWORD", "DropMoneyPerC", 0),
-                        ("DWORD", "SuperHitReduceC", 0),
-                        ("DWORD", "SuperHitRateReduceC", 0),
-                        ("DWORD", "HitC", 0),
-                        ("DWORD", "MissC", 0),
-                        ("DWORD", "PetDamPerC", 0),
-                        ("DWORD", "MaxHPPerC", 0),
-                        ("DWORD", "AtkPerC", 0),
-                        ("DWORD", "SkillAtkRateC", 0),
-                        ("DWORD", "SkillAtkRateReduceC", 0),
-                        ("DWORD", "SkillAddPer1C", 0),
-                        ("DWORD", "SkillAddPer2C", 0),
-                        ("DWORD", "SkillAddPer3C", 0),
-                        ("DWORD", "SkillAddPer4C", 0),
-                        ("DWORD", "SkillAddPer5C", 0),
-                        ("DWORD", "SkillAddPer6C", 0),
-                        ("DWORD", "SkillAddPer7C", 0),
-                        ("DWORD", "SkillReducePer1C", 0),
-                        ("DWORD", "SkillReducePer2C", 0),
-                        ("DWORD", "SkillReducePer3C", 0),
-                        ("DWORD", "SkillReducePer4C", 0),
-                        ("DWORD", "SkillReducePer5C", 0),
-                        ("DWORD", "SkillReducePer6C", 0),
-                        ("DWORD", "SkillReducePer7C", 0),
-                        ("DWORD", "ReduceSkillCDPerC", 0),
-                        ("DWORD", "LuckyHitPerC", 0),
-                        ("DWORD", "FaintDefRateC", 0),
-                        ("DWORD", "SuperHitRateC", 0),
-                        ("DWORD", "IgnoreDefRateC", 0),
-                        ("DWORD", "IgnoreDefRateReduceC", 0),
-                        ("DWORD", "ProDefPerC", 0),
-                        ("DWORD", "FinalHurtPerC", 0),
-                        ("DWORD", "FinalHurtReducePerC", 0),
                         ),
 
                 "Success":(
@@ -1654,12 +1513,6 @@
                         ("WORD", "LowLV", 0),
                         ("WORD", "HighestLV", 0),
                         ("DWORD", "Defense", 0),
-                        ),
-
-                "TalentSkill":(
-                        ("DWORD", "SkillID", 1),
-                        ("BYTE", "TalentType", 0),
-                        ("BYTE", "Series", 0),
                         ),
 
                 "ActFlashSale":(
@@ -2913,16 +2766,6 @@
     def GetInitAttrValueList(self): return self.attrTuple[8] # 初始属性值列表 list
     def GetAttrPerStarAddList(self): return self.attrTuple[9] # 每星加成值列表 list
 
-# 技能搭配表
-class IPY_SkillMatch():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetIDIndex(self): return self.attrTuple[0] # BYTE
-    def GetSkills(self): return self.attrTuple[1] # 主动技能(职业1id|职业2id) list
-
 # 灵根表
 class IPY_RolePoint():
     
@@ -3641,123 +3484,6 @@
     def GetAttrSpecDict(self): return self.attrTuple[6] # 特殊属性值字典 {attrKey:value, ...} dict
     def GetAttrExDict(self): return self.attrTuple[7] # 特殊属性值字典 {attrKey:value, ...} dict
 
-# 成长型境界怪物表
-class IPY_NPCRealmStrengthen():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetNPCID(self): return self.attrTuple[0] # NPCID DWORD
-    def GetRealmDifficulty(self): return self.attrTuple[1] # 境界难度 BYTE
-    def GetMapID(self): return self.attrTuple[2] # DWORD
-    def GetLV(self): return self.attrTuple[3] # NPC等级 DWORD
-    def GetExp(self): return self.attrTuple[4] # 基础经验 DWORD
-    def GetMaxDrapLV(self): return self.attrTuple[5] # 玩家最大可掉落等级 WORD
-    def GetEquipClassLV(self): return self.attrTuple[6] # 掉落装备阶 BYTE
-    def GetDropMoneyMin(self): return self.attrTuple[7] # 最小金币 DWORD
-    def GetDropMoneyMax(self): return self.attrTuple[8] # 最大金币 DWORD
-    def GetLowLV(self): return self.attrTuple[9] #  推荐最低等级 WORD
-    def GetHighestLV(self): return self.attrTuple[10] #  推荐最高等级 WORD
-    def GetDefense(self): return self.attrTuple[11] #  推荐防御 DWORD
-    def GetMDef(self): return self.attrTuple[12] #  标准击杀时间/毫秒 DWORD
-    def GetFireDef(self): return self.attrTuple[13] #  脱机挂经验计算战力 DWORD
-    def GetSP(self): return self.attrTuple[14] #  SP DWORD
-
-# NPC时间掉血表
-class IPY_NPCTimeLostHP():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetNPCID(self): return self.attrTuple[0] # NPCID DWORD
-    def GetLostHPPerSecond(self): return self.attrTuple[1] # 单人每秒掉血量 DWORD
-    def GetMaxPlayerCount(self): return self.attrTuple[2] # 最大人数 BYTE
-    def GetLostHPPerSecondEx(self): return self.attrTuple[3] # 每增加一人附加掉血量 DWORD
-    def GetFightPowerMinByLV(self): return self.attrTuple[4] # 标准战力是否取等级表 BYTE
-    def GetFightPowerMin(self): return self.attrTuple[5] # 标准战力 DWORD
-    def GetFightPowerMax(self): return self.attrTuple[6] # 上限战力 DWORD
-    def GetEveryFightPower(self): return self.attrTuple[7] # 每x点战力 DWORD
-    def GetEveryFightPowerLostHPEx(self): return self.attrTuple[8] # 每x点战力附加伤害 DWORD
-
-# 装备套装属性表
-class IPY_EquipSuitAttr():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetSuiteID(self): return self.attrTuple[0] # 套装ID WORD
-    def GetSuiteCnt(self): return self.attrTuple[1] # 套装件数 BYTE
-    def GetStar(self): return self.attrTuple[2] # 星数 BYTE
-    def GetAttrInfo(self): return self.attrTuple[3] # 属性 dict
-    def GetSkillID(self): return self.attrTuple[4] # 技能ID DWORD
-    def GetIsNotify(self): return self.attrTuple[5] # 是否广播 BYTE
-    def GetActivateIndex(self): return self.attrTuple[6] # 激活索引 WORD
-
-# 羽翼精炼属性表
-class IPY_WingRefineAttr():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetWingClassLV(self): return self.attrTuple[0] # 翅膀阶级 BYTE
-    def GetAttrInfo(self): return self.attrTuple[1] # 精炼属性信息 dict
-    def GetItemColorInfo(self): return self.attrTuple[2] # 精炼经验对应颜色信息 dict
-    def GetMaxRefineExp(self): return self.attrTuple[3] # 本阶最大精炼值 DWORD
-
-# 羽翼精炼经验表
-class IPY_WingRefineExp():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetItemID(self): return self.attrTuple[0] # 精炼物品ID DWORD
-    def GetRandExpMin(self): return self.attrTuple[1] # 最小随机精炼值 DWORD
-    def GetRandExpMax(self): return self.attrTuple[2] # 最大随机精炼值 DWORD
-    def GetExpMaterial(self): return self.attrTuple[3] # 翅膀代数对应精炼值 dict
-
-# NPC掉落表
-class IPY_NPCDropItem():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetNPCID(self): return self.attrTuple[0] # NPCID DWORD
-    def GetMaxWorldLV(self): return self.attrTuple[1] # 最大世界等级,0为不限制,不受最大掉落等级影响 WORD
-    def GetMaxDropLV(self): return self.attrTuple[2] # 最大可掉落的玩家等级, 不影响世界等级 WORD
-    def GetCanDropRatePlus(self): return self.attrTuple[3] # 额外提升掉率的是否有效 BYTE
-    def GetIsDropJobSelf(self): return self.attrTuple[4] # 是否只掉落本职业 BYTE
-    def GetPieRateDrop(self): return self.attrTuple[5] # 饼图概率掉落信息 [(概率,0),(概率,(阶,颜色)),...] list
-    def GetPieRateDoCnt(self): return self.attrTuple[6] # 饼图概率执行次数 BYTE
-    def GetIndepRateDrop(self): return self.attrTuple[7] # 独立概率掉落信息 {(阶,颜色):概率,...} dict
-    def GetIndepRateDoCnt(self): return self.attrTuple[8] # 独立概率执行次数 BYTE
-    def GetEquipColorMaxDropCount(self): return self.attrTuple[9] # 装备颜色最大掉落物品数 {颜色:上限数量,...} dict
-    def GetTianxuanEquipRateList(self): return self.attrTuple[10] # 天玄丹装备掉落饼图 [[概率,(阶,品质)], ...] list
-    def GetEquipColorSuitInfo(self): return self.attrTuple[11] # 装备颜色对应套装概率 {颜色:套装概率, ...} dict
-    def GetEquipPartKeyRateInfo(self): return self.attrTuple[12] # 装备部位集合信息 {(颜色,是否套装):部位集合key, ...} dict
-    def GetColorSuitPartOptimization(self): return self.attrTuple[13] # 部位颜色套评分优选掉落,十位代表颜色,个位代表套装 BYTE
-    def GetKillCountDropEquipPub(self): return self.attrTuple[14] # 第x次击杀附加必掉装备 {次数:[阶,颜色,是否套装,部位集合key], ...} dict
-    def GetItemIDDropRate(self): return self.attrTuple[15] # 指定物品ID掉率信息 {物品ID:概率, ...} dict
-    def GetTianxuanItemIDRate(self): return self.attrTuple[16] # 天玄丹指定ID概率 {物品ID:概率, ...} dict
-    def GetItemIDMaxDropCount(self): return self.attrTuple[17] # 指定物品ID最大掉落个数,没配默认1次 {物品ID:随机次数,...} dict
-    def GetItemKeyDropRate(self): return self.attrTuple[18] # 物品ID集合Key概率, 随机一个, 优先级低 {物品ID集合key:概率, ...} dict
-    def GetItemKeyDropRateJob(self): return self.attrTuple[19] # 物品ID集合Key概率, 自身职业, 优先级高 {物品ID集合key:概率, ...} dict
-    def GetTianxuanItemKeyRate(self): return self.attrTuple[20] # 天玄丹指定ID集合Key概率{物品ID集合key:概率, ...} dict
-    def GetItemKeyMaxDropCount(self): return self.attrTuple[21] # 物品ID集合Key随机次数,没配默认1次 {物品ID集合key:随机次数,...} dict
-    def GetDropMoneyDoCnt(self): return self.attrTuple[22] # 掉落金币执行次数 BYTE
-    def GetDropMoneyRate(self): return self.attrTuple[23] # 掉落金币概率 WORD
-    def GetDropMoneyMin(self): return self.attrTuple[24] # 掉落金币最小值 WORD
-    def GetDropMoneyMax(self): return self.attrTuple[25] # 掉落金币最大值 WORD
-    def GetKillCountDropPub(self): return self.attrTuple[26] # 击杀次数必掉(公共){击杀次数:[[物品ID, ...], [随机物品ID, ...]], ...} dict
-    def GetKillCountDropPri(self): return self.attrTuple[27] # 击杀次数必掉(私有)[击杀次数,[物品ID,...],是否直接放入背包] list
-    def GetPriItemIDDrop(self): return self.attrTuple[28] # 所有归属者私有掉落物品ID列表,每人一份,默认绑定,没有职业区分[物品ID, ...] list
-    def GetAucionItemCanSell(self): return self.attrTuple[29] # 掉落拍品可否上架集市 BYTE
-
 # 符印塔表
 class IPY_RuneTower():
     
@@ -3842,60 +3568,6 @@
     def GetADCntMax(self): return self.attrTuple[1] # 每日次数 BYTE
     def GetADAwardItemList(self): return self.attrTuple[2] # 广告奖励物品列表 list
     def GetADMapID(self): return self.attrTuple[3] # 对应副本ID,默认给该副本1次次数 DWORD
-
-# 装备评分属性系数表
-class IPY_EquipGSParam():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetClassLV(self): return self.attrTuple[0] #  装备阶级 BYTE
-    def GetEquipColor(self): return self.attrTuple[1] #  装备颜色 BYTE
-    def GetIsSuit(self): return self.attrTuple[2] #  是否套装 BYTE
-    def GetItemQuality(self): return self.attrTuple[3] # 物品星级 BYTE
-    def GetBaseEquipMaxHPAddPerC(self): return self.attrTuple[4] #  基础防具生命百分比系数 DWORD
-    def GetBaseEquipAtkAddPerC(self): return self.attrTuple[5] #  基础武器攻击百分比系数 DWORD
-    def GetSuperHitC(self): return self.attrTuple[6] #  暴击值系数 DWORD
-    def GetSuperHitPerC(self): return self.attrTuple[7] #  暴击值百分比系数 DWORD
-    def GetLuckyHitRateC(self): return self.attrTuple[8] #  会心一击率系数 DWORD
-    def GetLuckyHitRateReduceC(self): return self.attrTuple[9] #  会心一击抗性系数 DWORD
-    def GetLuckPerC(self): return self.attrTuple[10] #  气运百分比系数 DWORD
-    def GetPerLVAtkC(self): return self.attrTuple[11] #  每级增加攻击力系数 DWORD
-    def GetPerLVMaxHPC(self): return self.attrTuple[12] #  每级增加生命值系数 DWORD
-    def GetDropMoneyPerC(self): return self.attrTuple[13] #  增加掉落金币量百分比系数 DWORD
-    def GetSuperHitReduceC(self): return self.attrTuple[14] #  暴击减伤百分比系数 DWORD
-    def GetSuperHitRateReduceC(self): return self.attrTuple[15] #  暴击抗性系数 DWORD
-    def GetHitC(self): return self.attrTuple[16] #  命中系数 DWORD
-    def GetMissC(self): return self.attrTuple[17] #  闪避系数 DWORD
-    def GetPetDamPerC(self): return self.attrTuple[18] #  灵宠增伤百分比系数 DWORD
-    def GetMaxHPPerC(self): return self.attrTuple[19] #  生命加成系数 DWORD
-    def GetAtkPerC(self): return self.attrTuple[20] #  攻击加成系数 DWORD
-    def GetSkillAtkRateC(self): return self.attrTuple[21] #  技能加成系数 DWORD
-    def GetSkillAtkRateReduceC(self): return self.attrTuple[22] #  技能减免系数 DWORD
-    def GetSkillAddPer1C(self): return self.attrTuple[23] #  技能伤害增强1系数 DWORD
-    def GetSkillAddPer2C(self): return self.attrTuple[24] #  技能伤害增强2系数 DWORD
-    def GetSkillAddPer3C(self): return self.attrTuple[25] #  技能伤害增强3系数 DWORD
-    def GetSkillAddPer4C(self): return self.attrTuple[26] #  技能伤害增强4系数 DWORD
-    def GetSkillAddPer5C(self): return self.attrTuple[27] #  技能伤害增强5系数 DWORD
-    def GetSkillAddPer6C(self): return self.attrTuple[28] #  技能伤害增强6系数 DWORD
-    def GetSkillAddPer7C(self): return self.attrTuple[29] #  技能伤害增强7系数 DWORD
-    def GetSkillReducePer1C(self): return self.attrTuple[30] #  受到技能伤害减少1系数 DWORD
-    def GetSkillReducePer2C(self): return self.attrTuple[31] #  受到技能伤害减少2系数 DWORD
-    def GetSkillReducePer3C(self): return self.attrTuple[32] #  受到技能伤害减少3系数 DWORD
-    def GetSkillReducePer4C(self): return self.attrTuple[33] #  受到技能伤害减少4系数 DWORD
-    def GetSkillReducePer5C(self): return self.attrTuple[34] #  受到技能伤害减少5系数 DWORD
-    def GetSkillReducePer6C(self): return self.attrTuple[35] #  受到技能伤害减少6系数 DWORD
-    def GetSkillReducePer7C(self): return self.attrTuple[36] #  受到技能伤害减少7系数 DWORD
-    def GetReduceSkillCDPerC(self): return self.attrTuple[37] #  减少所有技能CD系数 DWORD
-    def GetLuckyHitPerC(self): return self.attrTuple[38] #  会心伤害加成系数 DWORD
-    def GetFaintDefRateC(self): return self.attrTuple[39] #  控制抵抗系数 DWORD
-    def GetSuperHitRateC(self): return self.attrTuple[40] #  暴击率加成系数 DWORD
-    def GetIgnoreDefRateC(self): return self.attrTuple[41] #  无视防御系数 DWORD
-    def GetIgnoreDefRateReduceC(self): return self.attrTuple[42] #  无视防御减免系数 DWORD
-    def GetProDefPerC(self): return self.attrTuple[43] #  防护百分比系数 DWORD
-    def GetFinalHurtPerC(self): return self.attrTuple[44] #  最终伤害加成系数 DWORD
-    def GetFinalHurtReducePerC(self): return self.attrTuple[45] #  最终伤害减免系数 DWORD
 
 # 成就表
 class IPY_Success():
@@ -4784,17 +4456,6 @@
     def GetLowLV(self): return self.attrTuple[2] #  推荐最低等级 WORD
     def GetHighestLV(self): return self.attrTuple[3] #  推荐最高等级 WORD
     def GetDefense(self): return self.attrTuple[4] #  推荐防御 DWORD
-
-# 天赋技能表
-class IPY_TalentSkill():
-    
-    def __init__(self):
-        self.attrTuple = None
-        return
-        
-    def GetSkillID(self): return self.attrTuple[0] # 技能ID DWORD
-    def GetTalentType(self): return self.attrTuple[1] # 天赋类型 BYTE
-    def GetSeries(self): return self.attrTuple[2] # 天赋系别 BYTE
 
 # 限时抢购表
 class IPY_ActFlashSale():
@@ -6059,7 +5720,6 @@
         self.__LoadFileData("PlayerFace", onlyCheck)
         self.__LoadFileData("PlayerFacePic", onlyCheck)
         self.__LoadFileData("ChatBox", onlyCheck)
-        self.__LoadFileData("SkillMatch", onlyCheck)
         self.__LoadFileData("RolePoint", onlyCheck)
         self.__LoadFileData("LingQiAttr", onlyCheck)
         self.__LoadFileData("LingQiTrain", onlyCheck)
@@ -6110,19 +5770,12 @@
         self.__LoadFileData("PlayerLV", onlyCheck)
         self.__LoadFileData("SpecMapPlayerAttrFormat", onlyCheck)
         self.__LoadFileData("GMAttr", onlyCheck)
-        self.__LoadFileData("NPCRealmStrengthen", onlyCheck)
-        self.__LoadFileData("NPCTimeLostHP", onlyCheck)
-        self.__LoadFileData("EquipSuitAttr", onlyCheck)
-        self.__LoadFileData("WingRefineAttr", onlyCheck)
-        self.__LoadFileData("WingRefineExp", onlyCheck)
-        self.__LoadFileData("NPCDropItem", onlyCheck)
         self.__LoadFileData("RuneTower", onlyCheck)
         self.__LoadFileData("ChinMap", onlyCheck)
         self.__LoadFileData("FBFunc", onlyCheck)
         self.__LoadFileData("FBLine", onlyCheck)
         self.__LoadFileData("Tianzi", onlyCheck)
         self.__LoadFileData("ADAward", onlyCheck)
-        self.__LoadFileData("EquipGSParam", onlyCheck)
         self.__LoadFileData("Success", onlyCheck)
         self.__LoadFileData("TongTianLV", onlyCheck)
         self.__LoadFileData("TongTianTask", onlyCheck)
@@ -6183,7 +5836,6 @@
         self.__LoadFileData("AllPeopleParty", onlyCheck)
         self.__LoadFileData("AllPeoplePartyAward", onlyCheck)
         self.__LoadFileData("MapEventPoint", onlyCheck)
-        self.__LoadFileData("TalentSkill", onlyCheck)
         self.__LoadFileData("ActFlashSale", onlyCheck)
         self.__LoadFileData("ActWishingWell", onlyCheck)
         self.__LoadFileData("WishingWell", onlyCheck)
@@ -6686,13 +6338,6 @@
         self.CheckLoadData("ChatBox")
         return self.ipyChatBoxCache[index]
 
-    def GetSkillMatchCount(self):
-        self.CheckLoadData("SkillMatch")
-        return self.ipySkillMatchLen
-    def GetSkillMatchByIndex(self, index):
-        self.CheckLoadData("SkillMatch")
-        return self.ipySkillMatchCache[index]
-
     def GetRolePointCount(self):
         self.CheckLoadData("RolePoint")
         return self.ipyRolePointLen
@@ -7043,48 +6688,6 @@
         self.CheckLoadData("GMAttr")
         return self.ipyGMAttrCache[index]
 
-    def GetNPCRealmStrengthenCount(self):
-        self.CheckLoadData("NPCRealmStrengthen")
-        return self.ipyNPCRealmStrengthenLen
-    def GetNPCRealmStrengthenByIndex(self, index):
-        self.CheckLoadData("NPCRealmStrengthen")
-        return self.ipyNPCRealmStrengthenCache[index]
-
-    def GetNPCTimeLostHPCount(self):
-        self.CheckLoadData("NPCTimeLostHP")
-        return self.ipyNPCTimeLostHPLen
-    def GetNPCTimeLostHPByIndex(self, index):
-        self.CheckLoadData("NPCTimeLostHP")
-        return self.ipyNPCTimeLostHPCache[index]
-
-    def GetEquipSuitAttrCount(self):
-        self.CheckLoadData("EquipSuitAttr")
-        return self.ipyEquipSuitAttrLen
-    def GetEquipSuitAttrByIndex(self, index):
-        self.CheckLoadData("EquipSuitAttr")
-        return self.ipyEquipSuitAttrCache[index]
-
-    def GetWingRefineAttrCount(self):
-        self.CheckLoadData("WingRefineAttr")
-        return self.ipyWingRefineAttrLen
-    def GetWingRefineAttrByIndex(self, index):
-        self.CheckLoadData("WingRefineAttr")
-        return self.ipyWingRefineAttrCache[index]
-
-    def GetWingRefineExpCount(self):
-        self.CheckLoadData("WingRefineExp")
-        return self.ipyWingRefineExpLen
-    def GetWingRefineExpByIndex(self, index):
-        self.CheckLoadData("WingRefineExp")
-        return self.ipyWingRefineExpCache[index]
-
-    def GetNPCDropItemCount(self):
-        self.CheckLoadData("NPCDropItem")
-        return self.ipyNPCDropItemLen
-    def GetNPCDropItemByIndex(self, index):
-        self.CheckLoadData("NPCDropItem")
-        return self.ipyNPCDropItemCache[index]
-
     def GetRuneTowerCount(self):
         self.CheckLoadData("RuneTower")
         return self.ipyRuneTowerLen
@@ -7126,13 +6729,6 @@
     def GetADAwardByIndex(self, index):
         self.CheckLoadData("ADAward")
         return self.ipyADAwardCache[index]
-
-    def GetEquipGSParamCount(self):
-        self.CheckLoadData("EquipGSParam")
-        return self.ipyEquipGSParamLen
-    def GetEquipGSParamByIndex(self, index):
-        self.CheckLoadData("EquipGSParam")
-        return self.ipyEquipGSParamCache[index]
 
     def GetSuccessCount(self):
         self.CheckLoadData("Success")
@@ -7553,13 +7149,6 @@
     def GetMapEventPointByIndex(self, index):
         self.CheckLoadData("MapEventPoint")
         return self.ipyMapEventPointCache[index]
-
-    def GetTalentSkillCount(self):
-        self.CheckLoadData("TalentSkill")
-        return self.ipyTalentSkillLen
-    def GetTalentSkillByIndex(self, index):
-        self.CheckLoadData("TalentSkill")
-        return self.ipyTalentSkillCache[index]
 
     def GetActFlashSaleCount(self):
         self.CheckLoadData("ActFlashSale")
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 197ee30..e77f12f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -105,12 +105,6 @@
     # NPC等级
     if hasattr(curNPC, "GetCurLV"):
         return max(curNPC.GetCurLV(), curNPC.GetLV())
-    if curPlayer and PlayerControl.GetRealmDifficulty(curPlayer):
-        npcID = curNPC.GetNPCID()
-        needRealmLV = PlayerControl.GetDifficultyRealmLV(PlayerControl.GetRealmDifficulty(curPlayer))
-        realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, needRealmLV)
-        if realmNPCIpyData:
-            return realmNPCIpyData.GetLV()
     return curNPC.GetLV()
 
 def GetNPCDataPy(npcID):
@@ -3199,47 +3193,7 @@
     #  @return 返回值, 获得经验
     #  @remarks 获得经验, 可能是小数
     def __GetExp(self, playerLV, isTeam=False, player=None):
-        curNPC = self.__Instance
-        baseExp = 0
-        #玩家不在副本中
-        if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
-            baseExp = FBLogic.OnGetNPCExp(player, curNPC)
-        if baseExp > 0:
-            return baseExp
-        
-        npcID = curNPC.GetNPCID()
-        realmLV = PlayerControl.GetDifficultyRealmLV(curNPC.GetSightLevel())
-        realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, realmLV)
-        if realmNPCIpyData:
-            baseExp = realmNPCIpyData.GetExp()
-            npcLV = realmNPCIpyData.GetLV()
-        else:
-            baseExp = curNPC.GetExp()
-            npcLV = curNPC.GetLV()
-            
-        if baseExp == 0:
-            #GameWorld.Log("杀怪经验异常,该NPC = %s,无经验"%(curNPC.GetID()))
-            return 0
-        
-        playerID = 0 if not player else player.GetPlayerID()
-        # 如果是队伍,则按伤害贡献度计算所获得经验比例
-        if isTeam:
-            if not player:
-                return 0
-            hurtPer = AttackCommon.GetTeamPlayerHurtPer(player, curNPC)
-            if not hurtPer:
-                return 0
-            #GameWorld.DebugLog("队员击杀基础经验: npcID=%s,baseExp=%s,hurtPer=%s" % (curNPC.GetNPCID(), baseExp, hurtPer), playerID)
-            baseExp *= hurtPer
-        #else:
-        #    GameWorld.DebugLog("个人击杀基础经验: npcID=%s,baseExp=%s" % (curNPC.GetNPCID(), baseExp), playerID)
-        
-        #经验衰减公式 = max(杀怪经验 * max(1-max(玩家等级-怪物等级-10,0)*0.02),0),1)
-        exp = eval(FormulaControl.GetCompileFormula("ExpAttenuation", IpyGameDataPY.GetFuncCfg("ExpAttenuation", 1)))
-        #exp = CalcNPCExp(baseExp, playerLV, npcLV)
-        #GameWorld.DebugLog("击杀NPC最终基础经验: npcID=%s,npcLV=%s,playerLV=%s,baseExp=%s,exp=%s" 
-        #                   % (curNPC.GetNPCID(), npcLV, playerLV, baseExp, exp), playerID)
-        return exp
+        return 0
     
     #---------------------------------------------------------------------
     
@@ -3656,12 +3610,7 @@
     npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
     if not npcData:
         return 0
-    needRealmLV = PlayerControl.GetDifficultyRealmLV(PlayerControl.GetRealmDifficulty(curPlayer))
-    realmNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCRealmStrengthen", npcID, needRealmLV)
-    if realmNPCIpyData:
-        baseExp = realmNPCIpyData.GetExp()
-    else:
-        baseExp = npcData.GetExp()
+    baseExp = npcData.GetExp()
     if not baseExp:
         return 0
     npcLV = npcData.GetLV()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 398b274..3ec707b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -416,24 +416,6 @@
     
     return True
 
-
-##地图特殊限制检查, 装备检查
-# @param curPlayer
-# @return bool
-def CheckEquipCanTrans(curPlayer, destMapID):
-    if destMapID != 10060:
-        return True
-    
-    #有翅膀可以上天空
-    playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    curEquip = playerEquip.GetAt(IPY_GameWorld.retWing)
-    if curEquip and not curEquip.IsEmpty():
-        return True
-    
-    #GeRen_lhs_861048
-    NotifyCode(curPlayer, "GeRen_lhs_861048", [destMapID])
-    return False
-
 #---------------------------------------------------------------------
 ##通知客户端, 玩家Loading开始
 # @param curPlayer 玩家实例
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
deleted file mode 100644
index 14d0e48..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWing.py
+++ /dev/null
@@ -1,300 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerWing
-#
-# @todo:翅膀系统
-# @author sgj
-# @date 2017-8-19
-# @version 1.0
-#
-# 详细描述: 翅膀系统
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2017-8-19 下午06:02:33"""
-#-------------------------------------------------------------------------------
-import IPY_GameWorld
-import GameWorld
-import PlayerControl
-import IpyGameDataPY
-import ChConfig
-import ShareDefine
-import ItemCommon
-import GameFuncComm
-import ChEquip
-
-import random
-
-
-#A3 2E 羽翼精炼 #tagCMWingup
-# struct    tagCMWingUp
-#{
-#    tagHead        Head;
-#    BYTE           Count;    //索引个数
-#    BYTE           WingIndexList[Count]; //材料翅膀在背包中的索引列表
-# }; 
-
-
-#===============================================================================
-
-#  @param index: 玩家索引
-#  @param clientData: 封包结构体
-#  @param tick: 时间戳
-#  @return: None
-def OnWingJingLian(index, clientData, tick):
-    
-    # 根据策划需要,可以选择是否跨服服务器功能限制
-#    if GameWorld.IsCrossServer():
-#        return
-    
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    #获取封包信息
-    materialMessageList = clientData.WingIndexList
-    #count = clientData.Count
-    GameWorld.DebugLog("羽翼精炼:WingIndexList=%s" % materialMessageList, curPlayer.GetPlayerID())
-    
-    #判断等级是否满足
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Wing):
-        GameWorld.DebugLog("等级不足,不能精炼翅膀")
-        return
-    
-    ##判断是否装备翅膀 retWing
-    equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    curWing = equipPack.GetAt(ShareDefine.retWing)
-    
-    if not ItemCommon.CheckItemCanUse(curWing):
-        GameWorld.Log("翅膀不合法,或者没有带翅膀")
-        return
-    
-    #判断当前翅膀是否可以精炼
-    if not __WingCanJingLian(curWing):
-        #提示当前翅膀精炼已经达到上限
-        #PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        GameWorld.DebugLog("该翅膀不需要精炼")
-        return    
-    
-    materialInfo = __ReduceMaterial(curPlayer, curWing, materialMessageList)
-    if not materialInfo:
-        return
-    totalPoint, materialItemDict = materialInfo
-    if not totalPoint:
-        GameWorld.DebugLog("没有精炼值")
-        return
-    WingProgressUP(curWing, totalPoint, materialItemDict, curPlayer)
-    ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer)
-    PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
-    return
-
-def __WingCanJingLian(curWing):
-    #判断翅膀是否可以精炼
-    wingAttrIpyData = GetWingRefineAttrData(curWing.GetItemTypeID())
-    if wingAttrIpyData == None:
-        return False
-    maxWingProgress = wingAttrIpyData.GetMaxRefineExp()
-    curProgress = curWing.GetUserAttr(ShareDefine.Def_IudetWingProgressValue)
-    return curProgress < maxWingProgress
-
-
-#扣除精炼材料
-def __ReduceMaterial(curPlayer, curWing, materialMessageList):
-    totalPoint = 0
-    materialItemDict = {} # 特殊精炼材料个数信息 {itemID:个数, ...}
-    itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
-    needCount = 1
-    wingClassLV = ItemCommon.GetItemClassLV(curWing)
-    for index in materialMessageList:
-        curItem = itemPack.GetAt(index)
-        if not ItemCommon.CheckItemCanUse(curItem):
-            GameWorld.DebugLog("这个格子没有合法材料,index=%s" % index)
-            continue
-        curItemID = curItem.GetItemTypeID()
-        wingAttrIpyData = IpyGameDataPY.GetIpyGameData("WingRefineExp", curItemID)
-        if wingAttrIpyData == None:
-            GameWorld.DebugLog("该物品不能作为羽翼精炼的材料,index=%s,itemID=%s" % (index, curItemID))
-            continue
-        curItemCount = curItem.GetCount()
-        if curItemCount < needCount:
-            GameWorld.DebugLog("材料不足")
-            continue
-        
-        point = 0
-        # 根据代数成长的精炼材料
-        expDict = wingAttrIpyData.GetExpMaterial()
-        if expDict:
-            if wingClassLV not in expDict:
-                GameWorld.ErrLog("精炼材料没有配置对应翅膀代数精炼值,无法精炼!index=%s,curItemID=%s,wingClassLV=%s" 
-                                 % (index, curItemID, wingClassLV), curPlayer.GetPlayerID())
-                continue
-            point += expDict[wingClassLV] * needCount
-            materialItemDict[curItemID] = materialItemDict.get(curItemID, 0) + needCount
-        else:
-            point += random.randint(wingAttrIpyData.GetRandExpMin(), wingAttrIpyData.GetRandExpMax()) * needCount
-        GameWorld.DebugLog("    index=%s,itemID=%s,baseExp=%s" % (index, curItemID, point))
-        
-        if curItem.GetType() == ChConfig.Def_ItemType_retWing:
-            wingItemExpInfo = GetWingItemChangeExp(curItem, wingClassLV)
-            if not wingItemExpInfo:
-                GameWorld.ErrLog("翅膀物品转化为精炼值异常,index=%s!" % index, curPlayer.GetPlayerID())
-                continue
-            changeTagWingExp, materialItemDictEx = wingItemExpInfo
-            for materialItemID, count in materialItemDictEx.items():
-                materialItemDict[materialItemID] = materialItemDict.get(materialItemID, 0) + count
-            point += changeTagWingExp
-            
-        totalPoint += point
-        GameWorld.DebugLog("    精炼信息: index=%s,curItemID=%s,point=%s,totalPoint=%s,materialItemDict=%s" 
-                           % (index, curItemID, point, totalPoint, materialItemDict))
-        ItemCommon.DelItem(curPlayer, curItem, needCount, True, ChConfig.ItemDel_WingExp)
-        
-    return totalPoint, materialItemDict
-
-def GetWingItemChangeExp(curItem, tagWingClassLV):
-    '''获取翅膀物品转化为目标代数翅膀精炼值
-    @return: None-异常,之后的功能不能做处理
-             转化的精炼值, 特殊精炼材料及个数{itemID:个数, ...}
-    '''
-    curExp = curItem.GetUserAttr(ShareDefine.Def_IudetWingProgressValue)
-    materialItemIDList = [curItem.GetUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemID, i) \
-                          for i in range(curItem.GetUserAttrCount(ShareDefine.Def_IudetWingMaterialItemID))]
-    if not materialItemIDList:
-        return curExp, {}
-    
-    materialItemCountList = [curItem.GetUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemCount, i) \
-                             for i in range(curItem.GetUserAttrCount(ShareDefine.Def_IudetWingMaterialItemCount))]
-    if len(materialItemIDList) != len(materialItemCountList):
-        GameWorld.ErrLog("羽翼精炼材料记录异常!wingItemID=%s,UserData=%s" % (curItem.GetItemTypeID(), curItem.GetUserData()))
-        return
-    
-    curLVMaterialExp = 0
-    tagLVMaterialExp = 0
-    materialItemDict = {}
-    curWingClassLV = ItemCommon.GetItemClassLV(curItem)
-    for i, materialItemID in enumerate(materialItemIDList):
-        wingAttrIpyData = IpyGameDataPY.GetIpyGameData("WingRefineExp", materialItemID)
-        if wingAttrIpyData == None:
-            GameWorld.ErrLog("该物品ID非羽翼精炼材料!materialItemID=%s" % materialItemID)
-            return
-        
-        # 根据代数成长的精炼材料
-        expDict = wingAttrIpyData.GetExpMaterial()
-        if not expDict:
-            GameWorld.ErrLog("精炼材料没有配置代数对应精炼值!materialItemID=%s" % materialItemID) 
-            return
-        
-        if curWingClassLV not in expDict or tagWingClassLV not in expDict:
-            GameWorld.ErrLog("精炼材料没有配置代数对应精炼值!materialItemID=%s,curWingClassLV=%s,tagWingClassLV=%s,expDict=%s" 
-                             % (materialItemID, curWingClassLV, tagWingClassLV, expDict)) 
-            return
-        materialItemCount = materialItemCountList[i]
-        curLVMaterialExp += (expDict[curWingClassLV] * materialItemCount)
-        tagLVMaterialExp += (expDict[tagWingClassLV] * materialItemCount)
-        materialItemDict[materialItemID] = materialItemCount
-        
-    curWingBaseExp = max(0, curExp - curLVMaterialExp)
-    changeTagWingExp = curWingBaseExp + tagLVMaterialExp # 转化目标代数翅膀精炼值
-    GameWorld.DebugLog("    翅膀转化为精炼值:curExp=%s,curWingClassLV-EXP=(%s-%s),tagWingClassLV-EXP=(%s-%s),changeTagWingExp=%s,materialItemDict=%s" 
-                       % (curExp, curWingClassLV, curLVMaterialExp, tagWingClassLV, tagLVMaterialExp, changeTagWingExp, materialItemDict))
-    return changeTagWingExp, materialItemDict
-
-def WingProgressUP(curWing, addExp, materialItemDict={}, curPlayer=None):
-    #增加精炼值
-    if not addExp:
-        return
-    
-    wingProgress = curWing.GetUserAttr(ShareDefine.Def_IudetWingProgressValue)
-    updWingProgress = wingProgress + addExp 
-    curWing.SetUserAttr(ShareDefine.Def_IudetWingProgressValue, updWingProgress)
-    
-    GameWorld.DebugLog("增加翅膀精炼值: curExp=%s,addExp=%s,updExp=%s,materialItemDict=%s" 
-                       % (wingProgress, addExp, updWingProgress, materialItemDict))
-    # 更新特殊材料个数
-    if materialItemDict:
-        materialItemIDList = [curWing.GetUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemID, i) \
-                              for i in range(curWing.GetUserAttrCount(ShareDefine.Def_IudetWingMaterialItemID))]
-        for materialItemID, materialItemCount in materialItemDict.items():
-            if materialItemID in materialItemIDList:
-                index = materialItemIDList.index(materialItemID)
-                updCount = curWing.GetUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemCount, index) + materialItemCount
-                curWing.UpdataUserAttrByIndex(ShareDefine.Def_IudetWingMaterialItemCount, index, updCount)
-                GameWorld.DebugLog("    更新翅膀特殊精炼材料个数: materialItemID=%s,updCount=%s" % (materialItemID, updCount))
-            else:
-                curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemID, materialItemID)
-                curWing.AddUserAttr(ShareDefine.Def_IudetWingMaterialItemCount, materialItemCount)
-                GameWorld.DebugLog("    新增翅膀特殊精炼材料个数: materialItemID=%s,materialItemCount=%s" % (materialItemID, materialItemCount))
-                
-    UpdWingColor(curPlayer, curWing, wingProgress, updWingProgress)
-    return
-
-def UpdWingColor(curPlayer, curWing, wingProgress, updWingProgress):
-    curItemID = curWing.GetItemTypeID()
-    wingAttrIpyData = GetWingRefineAttrData(curItemID)
-    if not wingAttrIpyData:
-        return
-    
-    # 更新翅膀精炼颜色
-    wingColorDict = wingAttrIpyData.GetItemColorInfo()
-    curColor = curWing.GetUserAttr(ShareDefine.Def_IudetItemColor)
-    #isColorChange = False
-    for color in wingColorDict:
-        if updWingProgress >= wingColorDict[color] and color > curColor:
-            curColor = color
-            curWing.SetUserAttr(ShareDefine.Def_IudetItemColor, curColor)
-            GameWorld.DebugLog("    更新翅膀颜色: updWingProgress=%s,curColor=%s" % (updWingProgress, curColor))
-            #isColorChange = True
-    maxRefineExp = wingAttrIpyData.GetMaxRefineExp()
-    if curPlayer and wingProgress < maxRefineExp <= updWingProgress:
-        PlayerControl.WorldNotify(0, "WingsRefinePerfect", [curPlayer.GetPlayerName(), curItemID, curWing.GetUserData()])
-    return
-
-def GetWingRefineAttrData(itemID):
-    wingData = GameWorld.GetGameData().GetItemByTypeID(itemID)
-    if not wingData:
-        return
-    wingClassLV = ItemCommon.GetItemClassLV(wingData)
-    return IpyGameDataPY.GetIpyGameDataNotLog("WingRefineAttr", wingClassLV)
-
-def GetWingProgressPerValueByID(itemID, per):
-    ## 获取翅膀精炼百分比对应的精炼值
-    if per <= 0:
-        return 0
-    wingAttrIpyData = GetWingRefineAttrData(itemID)
-    if not wingAttrIpyData:
-        return 0
-    return int(wingAttrIpyData.GetMaxRefineExp() * per / 100.0)
-
-## 翅膀功能开启
-def DoWingOpen(curPlayer):
-    GameWorld.DebugLog("翅膀精炼开启")
-    return True
-            
-    
-## 计算属性
-#  @param curPlayer 玩家
-#  @param allAttrList 属性列表
-#  @return None
-def CalcWingAttrEx(curPlayer, curWing, allAttrList):
-    
-    # 精炼属性
-    wingAttrIpyData = GetWingRefineAttrData(curWing.GetItemTypeID())
-    if wingAttrIpyData:
-        curProgress = curWing.GetUserAttr(ShareDefine.Def_IudetWingProgressValue)
-        maxWingProgress = wingAttrIpyData.GetMaxRefineExp()
-        fujiaValueDict = wingAttrIpyData.GetAttrInfo()
-        
-        rate = round(float(curProgress) / float(maxWingProgress), 3) if curProgress <= maxWingProgress else 1
-    
-        for effID, value in fujiaValueDict.items():
-            PlayerControl.CalcAttrDict_Type(effID, int(value * rate), allAttrList)
-    #GameWorld.DebugLog("    精炼属性: %s" % allAttrList)
-    return
-
- 
-    
-    
-    
-    
-    
-    
-
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 2091058..427185f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -811,7 +811,6 @@
 GameFuncID_Arena = 27           # 竞技场
 
 # 以下为暂时无用的
-GameFuncID_Wing = -1            # 翅膀 3
 GameFuncID_Pet = -1             # 宠物,灵宠 6
 GameFuncID_Horse = -1           # 坐骑 8
 GameFuncID_OSSail = -1          # 开服特惠 132
@@ -1202,8 +1201,6 @@
 Def_IudetBaseAttrID = 21  # 物品基础属性ID列表,适用于随机范围基础属性(非物品表配置的固定属性)
 Def_IudetBaseAttrValue = 23  # 物品基础属性值列表
 Def_IudetPartSuiteLV = 25  # 部位套装等级 [套装类型1等级, 套装类型2等级, ...]
-Def_IudetWingMaterialItemID = 27  # 翅膀精炼材料ID列表
-Def_IudetWingMaterialItemCount = 29  # 翅膀精炼材料个数列表
 Def_IudetDogzEquipPlus = 31  # 神兽装备强化信息列表 [强化等级, 累计总熟练度]
 Def_IudetItemDecompound = 33  # 拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
 Def_IudetLiantaiItemID = 35  # 合成该莲台的所有莲台ID [itemID, itemID, ...]
@@ -1232,7 +1229,6 @@
 Def_IudetLastOpenItemLoginDay = 36  # 上一次开启物品时的登录天数
 Def_IudetRuneLV = 38  # 符印等级
 Def_IudetRuneSource = 40  # 符印来源 老号0,默认1,合成2(主要用来区分是否合成获得)
-Def_IudetWingProgressValue = 42 #羽翼精炼值
 Def_IudetCreateTime = 44 # 时效物品的创建时间
 Def_IudetGatherSoulLV = 46  # 聚魂等级
 Def_IudetExpireTime = 48 # 时效物品指定有效时间,时间单位由时效类型决定
@@ -1377,7 +1373,6 @@
 
 Def_UserAction_ExMissionLog = "DwzCw4q8cWTB_ex-mission-log" # 扩展任务记录
 Def_UserAction_HorseClass = "DwzCw4q8cWTB_ex-horse-class" # 坐骑进阶记录
-Def_UserAction_WingClass = "DwzCw4q8cWTB_ex-wing-class" # 翅膀进阶记录
 Def_UserAction_PetLV = "DwzCw4q8cWTB_ex-pet-lv" # 宠物升级记录
 Def_UserAction_PetClass = "DwzCw4q8cWTB_ex-pet-class" # 宠物进阶记录
 Def_UserAction_GiveMoney = "DwzCw4q8cWTB_ex-give-money" # 货币产出记录
@@ -1385,12 +1380,10 @@
 Def_UserAction_EquipItem = "DwzCw4q8cWTB_ex-equip-item" # 玩家装备统计
 Def_UserAction_ItemRecord = 1404 # 物品流水记录
 Def_UserAction_CoinToGold = "DwzCw4q8cWTB_ex-coin-to-gold" # 兑换点券
-Def_UserAction_RuneLV = "DwzCw4q8cWTB_ex-wing-soul-lv" # 符印升级记录
 Def_UserAction_ChangeName = "DwzCw4q8cWTB_ex-change-name" # 改名记录
 Def_UserAction_AddZhenqi = "DwzCw4q8cWTB_ex-add-zhenqi" # 增加真气记录
 Def_UserAction_LostZhenqi = "DwzCw4q8cWTB_ex-lost-zhenqi" # 扣除真气记录
 Def_UserAction_CoatLV = "DwzCw4q8cWTB_ex-coat-lv" # 时装升级记录
-Def_UserAction_WingSkinLV = "DwzCw4q8cWTB_ex-wingskin-lv" # 幻化翅膀升级记录
 Def_UserAction_HorseSkinLV = "DwzCw4q8cWTB_ex-horseskin-lv" # 幻化坐骑升级记录
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_513.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_513.py
deleted file mode 100644
index 2b33fe6..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_513.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 佩戴X代以上翅膀,额外添加属性百分比
-#
-# @author: Alee
-# @date 2018-1-20 下午02:50:26
-# @version 1.0
-#
-# @note: 
-#
-#---------------------------------------------------------------------
-#导入
-import ChConfig
-import ItemCommon
-import ShareDefine
-import IPY_GameWorld
-import GameWorld
-import PlayerControl
-#---------------------------------------------------------------------
-
-
-def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
-    equipPack = defender.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    curWing = equipPack.GetAt(ShareDefine.retWing)
-    
-    if not ItemCommon.CheckItemCanUse(curWing):
-        #GameWorld.Log("翅膀不合法,或者没有带翅膀")
-        return
-    
-    if curWing.GetItemColor() < curEffect.GetEffectValue(2):
-        return
-    
-    attrType = curEffect.GetEffectValue(1)
-    attrTypeList = [attrType]
-    # 攻击力有最大最小 特殊处理
-    if attrType in [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]:
-        attrTypeList = [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]
-    for tmpType in attrTypeList:
-        calcDict[tmpType] = calcDict.get(tmpType, 0) + curEffect.GetEffectValue(0)
-    return
-
-
-## 返回buff类型,线性与否
-#  @param 
-#  @return None
-#  @remarks 函数详细说明.  
-def GetCalcType():
-    return ChConfig.TYPE_NoLinear
-

--
Gitblit v1.8.0