16 卡牌服务端(删除不需要旧功能:法器、炼体、魅力、情缘、仙宫、神兽、系统特权、印记;)
32个文件已删除
19个文件已修改
9037 ■■■■■ 已修改文件
PySysDB/PySysDBPY.h 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py 1528 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 2831 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Charm.py 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFuncSysPrivilege.py 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FaQi.py 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LianTi.py 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LoveRing.py 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Xiangong.py 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_TiandaoQiyun.py 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCharm.py 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py 690 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFaQi.py 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLove.py 625 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerXiangong.py 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerYinji.py 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1027.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_551.py 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_900.py 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4085.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4086.py 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4087.py 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4088.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4089.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4090.py 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4091.py 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4092.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4102.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4108.py 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBPY.h
@@ -554,23 +554,6 @@
    list        AwardItemList;    //奖励物品列表
};
//境界炼体属性表
struct tagLianTi
{
    BYTE        _LianTiLV;    //炼体等级
    list        FixedAttrType;    //固定属性类型(非累积)
    list        FixedAttrValue;    //固定属性值(非累积)
    list        PlusAttrType;    //增强属性类型(非累积)
    list        PlusAttrRate;    //增强属性万分率(非累积)
    list        EatItemAttrType;    //每x个培养丹增加属性类型,x=UpEatItemPerCount
    list        EatItemAttrValue;    //每x个培养丹增加属性值,x=UpEatItemPerCount
    WORD        NeedEatCount;    //升级所需个数(非累计)
    WORD        EatPerCount;    //每次培养消耗x个
    list        LVUpCostItemInfo;    //突破等级道具ID|个数
    DWORD        ActivateSkillID;    //激活技能ID
};
//功能配置表格 #tagFuncConfig
struct    tagFuncConfig
@@ -788,30 +771,6 @@
    dict        LVLegendAttrLibNumInfo;    //属性ID等级段对应数值库编号 {属性ID:{等级:库编号, ...}}
};
//神兽表
struct tagDogz
{
    BYTE        _DogzID;    //神兽ID
    list        BaseAttrTypes;    //基础属性类型列表
    list        BaseAttrValues;    //基础属性值列表
    list        HelpBattleSkills;    //助战技能ID列表
    DWORD        FightPowerEx;    //助战附加战力
    list        EquipPlaceColorList;    //穿戴装备颜色限制
    list        HelpBattleNotify;    //助战广播 ["广播key",[参数1,参数2,...],广播CD分钟]
};
//神兽强化表
struct tagDogzEquipPlus
{
    BYTE        _EquipPlace;    //装备位
    BYTE        _PlusLV;    //强化等级
    list        PlusAttrTypes;    //强化属性类型列表
    list        PlusAttrValues;    //强化属性值列表
    DWORD        PlusLVUPTotalExp;    //升级所需累计熟练度总值
};
//洗练表 #tagEquipWash
struct    tagEquipWash
@@ -858,19 +817,6 @@
    WORD        _LV;    //等级
    DWORD        UpNeedExp;    //升级所需经验数
    dict        Attr;    //属性加成
};
//法器升级表
struct tagFaQiLVUp
{
    BYTE        _FaQiLV;    //法器等级
    WORD        NeedEatCount;    //升级所需个数(非累计)
    list        LVAttrType;    //每级额外属性类型(非累积)
    list        LVAttrValue;    //每级额外属性值(非累积)
    list        UpItemAttrType;    //每x个培养丹增加属性类型,x=UpEatItemPerCount
    list        UpItemAttrValue;    //每x个培养丹增加属性值,x=UpEatItemPerCount
    DWORD        UpEatItemPerCount;    //每次培养消耗x个
};
//坐骑阶级表
@@ -2109,50 +2055,6 @@
    BYTE        _QualityLV;    //品级
};
//情缘礼物表
struct tagLoveGift
{
    BYTE        _GiftNum;    //聘礼ID
    DWORD        GiftItemID;    //物品ID
    BYTE        AllowBatch;    //是否允许批量赠送
};
//情缘提亲表
struct tagMarry
{
    BYTE        _BridePriceID;    //聘礼ID
    list        CostMoneyInfo;    //消耗货币类型|数值
};
//情缘情戒表
struct tagLoveRing
{
    BYTE        _RingClassLV;    //情戒阶级
    BYTE        _RingStarLV;    //情戒星级
    list        CoupleAttrType;    //仙侣属性类型(非累积)
    list        CoupleAttrValue;    //仙侣属性值(非累积)
    list        StarAttrType;    //星级额外属性类型(非累积)
    list        StarAttrValue;    //星级额外属性值(非累积)
    list        UpItemAttrType;    //每x个培养丹增加属性类型,x=UpEatItemPerCount
    list        UpItemAttrValue;    //每x个培养丹增加属性值,x=UpEatItemPerCount
    DWORD        NeedEatCount;    //升级所需个数(非累计)
    DWORD        UpEatItemPerCount;    //每次培养消耗x个
};
//情缘魅力属性表
struct tagLoveCharm
{
    BYTE        _CharmLV;    //魅力等级
    DWORD        UpNeedCharm;    //升下级所需总魅力
    list        LVAttrType;    //属性类型
    list        LVAttrValue;    //总属性值
    list        LVAwardItemInfo;    //等级物品奖励[[物品ID,个数,是否拍品], ...]
};
//骑宠觉醒表
struct tagHorsePetSkin
@@ -2163,15 +2065,6 @@
    DWORD        NeedExp;    //升级需要经验
    dict        AttrInfo;    //属性
    BYTE        SkinIndex;    //外观
};
//功能特权奖励表
struct tagFuncSysPrivilege
{
    BYTE        _FuncSysID;    //功能系统ID
    BYTE        DayNum;        //第X天
    list        DayAwardItemInfo;    // 奖励物品信息 [[物品ID,个数,是否拍品], ...]
};
//累计充值奖励表
@@ -2201,22 +2094,6 @@
    list        FreeRewardItemList;    //免费奖励物品列表 [[物品ID,个数,是否拍品],...]
    list        ZLRewardItemList;    //战令奖励物品列表 [[物品ID,个数,是否拍品],...]
    list        ZLRewardItemListH;    //高级战令奖励物品列表 [[物品ID,个数,是否拍品],...]
};
//仙宫表
struct tagXiangong
{
    WORD        _XiangongID;    //仙宫ID
};
//仙宫天道树
struct tagTiandaoTree
{
    WORD        _AwardIndex;    //奖励索引
    DWORD        NeedQiyun;    //所需气运值
    list        AwardItemList;    //奖励物品列表
};
//祝福树
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -58,18 +58,6 @@
PacketSubCMD_1=0x30
PacketCallFunc_1=OnViewBillboard
;法器
[PlayerFaQi]
ScriptName = Player\PlayerFaQi.py
Writer = hxp
Releaser = hxp
RegType = 0
RegisterPackCount = 1
PacketCMD_1=0xA5
PacketSubCMD_1=0x32
PacketCallFunc_1=OnFaQiLVUp
;坐骑培养
[PlayerHorse]
ScriptName = Player\PlayerHorse.py
@@ -402,9 +390,9 @@
PacketSubCMD_18=0x30
PacketCallFunc_18=
PacketCMD_19=0xA1
PacketSubCMD_19=0x08
PacketCallFunc_19=OnRefreshMainServerRole
PacketCMD_19=
PacketSubCMD_19=
PacketCallFunc_19=
PacketCMD_20=0xB2
PacketSubCMD_20=0x06
@@ -422,13 +410,13 @@
PacketSubCMD_23=0x35
PacketCallFunc_23=OnSelectRealmDifficulty
PacketCMD_24=0xA1
PacketSubCMD_24=0x21
PacketCallFunc_24=OnChangeJob
PacketCMD_24=
PacketSubCMD_24=
PacketCallFunc_24=
PacketCMD_25=0xA1
PacketSubCMD_25=0x20
PacketCallFunc_25=OnMoneyExchange
PacketCMD_25=
PacketSubCMD_25=
PacketCallFunc_25=
PacketCMD_26=0xA0
PacketSubCMD_26=0x08
@@ -457,22 +445,6 @@
PacketCMD_1 = 0xA5
PacketSubCMD_1 = 0x23
PacketCallFunc_1 = DoRealmLVUp
;炼体
[PlayerLianTi]
ScriptName = Player\PlayerLianTi.py
Writer = hxp
Releaser = hxp
RegType = 0
RegisterPackCount = 2
PacketCMD_1 = 0xA5
PacketSubCMD_1 = 0x33
PacketCallFunc_1 = OnLianTiUp
PacketCMD_2 = 0xA5
PacketSubCMD_2 = 0x34
PacketCallFunc_2 = OnLianTiLVUp
;改名功能
[UpdatePlayerName]
@@ -611,19 +583,6 @@
PacketSubCMD_4=0x16
PacketCallFunc_4=OnSelectSkillElement
;印记
[yinji]
ScriptName = Player\PlayerYinji.py
Writer = Alee
Releaser = Alee
RegType = 0
RegisterPackCount = 1
PacketCMD_1=0xB4
PacketSubCMD_1=0x0D
PacketCallFunc_1=OnYinji
;副本
[FBCommon]
ScriptName = GameWorldLogic\FBProcess\FBCommon.py
@@ -674,34 +633,6 @@
PacketCMD_4=A3
PacketSubCMD_4=27
PacketCallFunc_4=OnLingQiTrain
;神兽
[PlayerDogz]
ScriptName = Player\PlayerDogz.py
Writer = hxp
Releaser = hxp
RegType = 0
RegisterPackCount = 5
PacketCMD_1=0xA5
PacketSubCMD_1=0xC0
PacketCallFunc_1=OnDogzEquipItem
PacketCMD_2=0xA5
PacketSubCMD_2=0xC1
PacketCallFunc_2=OnDogzUnEquipItem
PacketCMD_3=0xA5
PacketSubCMD_3=0xC2
PacketCallFunc_3=OnDogzBattleStateChange
PacketCMD_4=0xA5
PacketSubCMD_4=0xC3
PacketCallFunc_4=OnDogzBuyBatteCount
PacketCMD_5=0xA5
PacketSubCMD_5=0xC4
PacketCallFunc_5=OnDogzEquipPlus
;充值
[PlayerCoin]
@@ -757,67 +688,11 @@
Writer = hxp
Releaser = hxp
RegType = 0
RegisterPackCount = 2
RegisterPackCount = 1
PacketCMD_1=0xB2
PacketSubCMD_1=0x09
PacketCallFunc_1=OnArenaMatch
PacketCMD_2=
PacketSubCMD_2=
PacketCallFunc_2=
;功能系统特权
[PlayerFuncSysPrivilege]
ScriptName = Player\PlayerFuncSysPrivilege.py
Writer = hxp
Releaser = hxp
RegType = 0
RegisterPackCount = 2
PacketCMD_1=0xB2
PacketSubCMD_1=0x11
PacketCallFunc_1=OnActivateFuncSysPrivilege
PacketCMD_2=0xB2
PacketSubCMD_2=0x12
PacketCallFunc_2=OnGetFuncSysPrivilegeAward
;情缘
[PlayerLove]
ScriptName = Player\PlayerLove.py
Writer = hxp
Releaser = hxp
RegType = 0
RegisterPackCount = 7
PacketCMD_1=0xB3
PacketSubCMD_1=0x10
PacketCallFunc_1=OnSendGifts
PacketCMD_2=0xB3
PacketSubCMD_2=0x11
PacketCallFunc_2=OnMarryReq
PacketCMD_3=0xB3
PacketSubCMD_3=0x13
PacketCallFunc_3=OnMarryEatCandy
PacketCMD_4=0xB3
PacketSubCMD_4=0x14
PacketCallFunc_4=OnMarryBuyFireworks
PacketCMD_5=0xB3
PacketSubCMD_5=0x15
PacketCallFunc_5=OnMarryBreak
PacketCMD_6=0xB3
PacketSubCMD_6=0x17
PacketCallFunc_6=OnLoveRingUnlock
PacketCMD_7=0xB3
PacketSubCMD_7=0x18
PacketCallFunc_7=OnLoveRingUp
;古宝
[PlayerGubao]
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3554,14 +3554,6 @@
Def_PDict_FamilyGCZSQGridItemCnt = "FamilyGCZSQItemCnt_%s"  # 圣泉当前层格子抽中物品个数,参数(格子编号)
#-------------------------------------------------------------------------------
# 法器
Def_PDict_FaQiLV = "FaQiLV"  # 法器等级
Def_PDict_FaQiEatItemCount = "FaQiEatItemCount"  # 当前阶已吃丹个数
# 炼体
Def_PDict_LianTiLV = "LianTiLV"  # 炼体等级
Def_PDict_LianTiEatItemCount = "LianTiEatItemCount"  # 当前级已吃丹个数
# 坐骑
Def_PDict_HorseClassLV = "HorseClassLV"  # 坐骑阶级
Def_PDict_HorseLV = "HorseLV"  # 坐骑阶等级
@@ -3608,10 +3600,6 @@
Def_PDict_EquipPartSuiteLV = "EQPartSuiteLV_%s_%s" #部位套装等级 参数 部位、套装类型
Def_PDict_EquipPartSuiteActivate = "EQPartSuiteActivate_%s" #套装激活记录 参数 key编号
#神兽
Def_PDict_DogzFightState = "DogzFightState_%s" # 神兽助战状态,参数为key编号,按神兽ID二进制位存储
Def_PDict_DogzBuyHelpbattleCount = "DogzBuyHelpbattleCount" # 额外购买的神兽助战位
#装备部位星数
Def_PDict_TotalEquipStar = "TotalEquipStar" #装备部位星数总数
Def_PDict_EquipPartStar = "EQPartStar_%s" #装备部位星数 参数 装备背包格子索引
@@ -3623,18 +3611,6 @@
#竞技场
Def_PDict_ArenaScore = "ArenaScore" # 当前积分
Def_PDict_ArenaWinCnt = "ArenaWinCnt" # 累计胜利次数
#功能系统特权
Def_PDict_FuncSysPrivilegeActTime = "FuncSysPrivilegeActTime_%s" # 系统功能特权激活时间戳,参数(系统功能ID)
Def_PDict_FuncSysPrivilegeAward = "FuncSysPrivilegeAward_%s" # 系统功能特权领奖记录,参数(系统功能ID)
#情缘
Def_PDict_LoveRingClassLV = "LoveRingClassLV" # 情戒 - 阶级
Def_PDict_LoveRingStarLV = "LoveRingStarLV" # 情戒 - 星级
Def_PDict_LoveRingEatCount = "LoveRingEatCount" # 情戒 - 本星已淬炼道具数
Def_PDict_LoveCoupleIntimacy = "LoveCoupleIntimacy" # 伴侣亲密度
Def_PDict_LoveEatCandyToday = "LoveEatCandyToday" # 今日已吃喜糖次数
Def_PDict_CharmLV = "CharmLV"  # 魅力等级
#古宝
Def_PDict_GubaoInfo = "Gubao_%s"  # 古宝信息,参数(古宝ID),特殊效果层*100000 + 等级*100 + 星级
@@ -3678,11 +3654,6 @@
Def_PDict_GoldRushWarehouse = "GoldRushWarehouse_%s" # 仓库完成淘金ID,参数(仓库位置索引)
Def_PDict_GoldRushRecoverTime = "GoldRushRecoverTime" # 上次恢复淘金令时间戳
Def_PDict_GoldRushAutoEndTime = "GoldRushAutoEndTime" # 自动淘金到期时间戳
#仙宫
Def_PDict_XiangongLikeState = "XiangongLikeState_%s" # 指定仙宫今日是否已点赞,参数(仙宫ID),仙宫ID为0时代表每日的仙宫功能点赞
Def_PDict_TiandaoQiyun = "TiandaoQiyun" # 天道树当前气运
Def_PDict_TiandaoAward = "TiandaoAward_%s" # 天道树领奖记录,按奖励索引记录是否已领取,参数(key编号)
#武将
Def_PDict_HeroSkin = "HeroSkin_%s" # 武将皮肤解锁状态,按皮肤索引二进制存储,参数(武将ID)
@@ -4247,11 +4218,8 @@
Def_Cost_BuyKillBossCnt:"BuyKillBossCnt",
Def_Cost_EquipStar:"EquipStar",
Def_Cost_ActivityPlace:"ActivityPlace",
Def_Cost_FaQi:"FaQi",
Def_Cost_Love:"Love",
Def_Cost_BuyOrderInfo:"BuyOrderInfo",
Def_Cost_CrossBattlefield:"CrossBattlefield",
Def_Cost_LianTi:"LianTi",
}
## -----------------------------------------------------
@@ -4465,9 +4433,7 @@
                   ItemDel_HorsePetAwake:"HorsePetAwake",
                   ItemDel_ActivityPlace:"ActivityPlace",
                   ItemDel_AuctionHouse:"AuctionHouse",
                   ItemDel_FaQi:"FaQi",
                   ItemDel_BTGM:"BTGM",
                   ItemDel_LianTi:"LianTi",
                   }
##==================================================================================================
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -331,58 +331,6 @@
#------------------------------------------------------
# A1 21 תְҵ #tagCMChangeJob
class  tagCMChangeJob(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagJob", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        self.SubCmd = 0x21
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA1
        self.SubCmd = 0x21
        self.TagJob = 0
        return
    def GetLength(self):
        return sizeof(tagCMChangeJob)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 21 תְҵ //tagCMChangeJob:
                                Cmd:%s,
                                SubCmd:%s,
                                TagJob:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagJob
                                )
        return DumpString
m_NAtagCMChangeJob=tagCMChangeJob()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMChangeJob.Cmd,m_NAtagCMChangeJob.SubCmd))] = m_NAtagCMChangeJob
#------------------------------------------------------
# A1 25 代币购买充值商品编号商品 #tagCMCoinBuyOrderInfo
class  tagCMCoinBuyOrderInfo(Structure):
@@ -461,66 +409,6 @@
#------------------------------------------------------
# A1 20 货币兑换 #tagCMMoneyExchange
class  tagCMMoneyExchange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("SrcMoneyType", c_ubyte),    # 源货币类型
                  ("TagMoneyType", c_ubyte),    # 目标货币类型
                  ("ExchangeValue", c_int),    # 兑换数量(消耗源货币的数量)
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        self.SubCmd = 0x20
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA1
        self.SubCmd = 0x20
        self.SrcMoneyType = 0
        self.TagMoneyType = 0
        self.ExchangeValue = 0
        return
    def GetLength(self):
        return sizeof(tagCMMoneyExchange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 20 货币兑换 //tagCMMoneyExchange:
                                Cmd:%s,
                                SubCmd:%s,
                                SrcMoneyType:%d,
                                TagMoneyType:%d,
                                ExchangeValue:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.SrcMoneyType,
                                self.TagMoneyType,
                                self.ExchangeValue
                                )
        return DumpString
m_NAtagCMMoneyExchange=tagCMMoneyExchange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMoneyExchange.Cmd,m_NAtagCMMoneyExchange.SubCmd))] = m_NAtagCMMoneyExchange
#------------------------------------------------------
# A1 23 查询充值次数 #tagCMQueryCoinToGoldCount
class  tagCMQueryCoinToGoldCount(Structure):
@@ -570,54 +458,6 @@
m_NAtagCMQueryCoinToGoldCount=tagCMQueryCoinToGoldCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryCoinToGoldCount.Cmd,m_NAtagCMQueryCoinToGoldCount.SubCmd))] = m_NAtagCMQueryCoinToGoldCount
#------------------------------------------------------
# A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole
class  tagCMRefreshMainServerRole(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA1
        self.SubCmd = 0x08
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA1
        self.SubCmd = 0x08
        return
    def GetLength(self):
        return sizeof(tagCMRefreshMainServerRole)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A1 08 刷新主服角色信息 //tagCMRefreshMainServerRole:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMRefreshMainServerRole=tagCMRefreshMainServerRole()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMainServerRole.Cmd,m_NAtagCMRefreshMainServerRole.SubCmd))] = m_NAtagCMRefreshMainServerRole
#------------------------------------------------------
@@ -5414,331 +5254,6 @@
#------------------------------------------------------
# A5 C2 神兽变更助战状态 #tagCMDogzBattleStateChange
class  tagCMDogzBattleStateChange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DogzID", c_ubyte),    # 神兽ID
                  ("BatteState", c_ubyte),    #助战状态,0-召回,1-助战
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0xC2
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0xC2
        self.DogzID = 0
        self.BatteState = 0
        return
    def GetLength(self):
        return sizeof(tagCMDogzBattleStateChange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 C2 神兽变更助战状态 //tagCMDogzBattleStateChange:
                                Cmd:%s,
                                SubCmd:%s,
                                DogzID:%d,
                                BatteState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DogzID,
                                self.BatteState
                                )
        return DumpString
m_NAtagCMDogzBattleStateChange=tagCMDogzBattleStateChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBattleStateChange.Cmd,m_NAtagCMDogzBattleStateChange.SubCmd))] = m_NAtagCMDogzBattleStateChange
#------------------------------------------------------
# A5 C3 神兽购买助战位 #tagCMDogzBuyBatteCount
class  tagCMDogzBuyBatteCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0xC3
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0xC3
        return
    def GetLength(self):
        return sizeof(tagCMDogzBuyBatteCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 C3 神兽购买助战位 //tagCMDogzBuyBatteCount:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMDogzBuyBatteCount=tagCMDogzBuyBatteCount()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzBuyBatteCount.Cmd,m_NAtagCMDogzBuyBatteCount.SubCmd))] = m_NAtagCMDogzBuyBatteCount
#------------------------------------------------------
# A5 C0 神兽穿戴装备 #tagCMDogzEquipItem
class  tagCMDogzEquipItem(Structure):
    Head = tagHead()
    DogzID = 0    #(BYTE DogzID)// 神兽ID
    EquipIndexCount = 0    #(BYTE EquipIndexCount)
    EquipIndexList = list()    #(vector<BYTE> EquipIndexList)//神兽装备所在神兽背包索引列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC0
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.DogzID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.EquipIndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.EquipIndexCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.EquipIndexList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC0
        self.DogzID = 0
        self.EquipIndexCount = 0
        self.EquipIndexList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.EquipIndexCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.DogzID)
        data = CommFunc.WriteBYTE(data, self.EquipIndexCount)
        for i in range(self.EquipIndexCount):
            data = CommFunc.WriteBYTE(data, self.EquipIndexList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                DogzID:%d,
                                EquipIndexCount:%d,
                                EquipIndexList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.DogzID,
                                self.EquipIndexCount,
                                "..."
                                )
        return DumpString
m_NAtagCMDogzEquipItem=tagCMDogzEquipItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipItem.Head.Cmd,m_NAtagCMDogzEquipItem.Head.SubCmd))] = m_NAtagCMDogzEquipItem
#------------------------------------------------------
# A5 C4 神兽装备强化 #tagCMDogzEquipPlus
class  tagCMDogzEquipPlus(Structure):
    Head = tagHead()
    EquipIndex = 0    #(BYTE EquipIndex)//神兽装备背包中索引
    IndexCount = 0    #(BYTE IndexCount)//材料所在神兽物品背包索引的数量
    IndexList = list()    #(vector<BYTE> IndexList)//材料所在神兽物品背包索引列表
    IndexUseCountList = list()    #(vector<DWORD> IndexUseCountList)//材料所在神兽物品背包索引对应使用个数列表
    IsDouble = 0    #(BYTE IsDouble)//是否双倍强化
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC4
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IndexCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.IndexCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.IndexList.append(value)
        for i in range(self.IndexCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.IndexUseCountList.append(value)
        self.IsDouble,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0xC4
        self.EquipIndex = 0
        self.IndexCount = 0
        self.IndexList = list()
        self.IndexUseCountList = list()
        self.IsDouble = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1 * self.IndexCount
        length += 4 * self.IndexCount
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.EquipIndex)
        data = CommFunc.WriteBYTE(data, self.IndexCount)
        for i in range(self.IndexCount):
            data = CommFunc.WriteBYTE(data, self.IndexList[i])
        for i in range(self.IndexCount):
            data = CommFunc.WriteDWORD(data, self.IndexUseCountList[i])
        data = CommFunc.WriteBYTE(data, self.IsDouble)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                EquipIndex:%d,
                                IndexCount:%d,
                                IndexList:%s,
                                IndexUseCountList:%s,
                                IsDouble:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.EquipIndex,
                                self.IndexCount,
                                "...",
                                "...",
                                self.IsDouble
                                )
        return DumpString
m_NAtagCMDogzEquipPlus=tagCMDogzEquipPlus()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzEquipPlus.Head.Cmd,m_NAtagCMDogzEquipPlus.Head.SubCmd))] = m_NAtagCMDogzEquipPlus
#------------------------------------------------------
# A5 C1 神兽卸下装备 #tagCMDogzUnEquipItem
class  tagCMDogzUnEquipItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DogzID", c_ubyte),    # 神兽ID
                  ("EquipPlace", c_ubyte),    #卸下的装备位, 0代表卸下全部
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0xC1
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0xC1
        self.DogzID = 0
        self.EquipPlace = 0
        return
    def GetLength(self):
        return sizeof(tagCMDogzUnEquipItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 C1 神兽卸下装备 //tagCMDogzUnEquipItem:
                                Cmd:%s,
                                SubCmd:%s,
                                DogzID:%d,
                                EquipPlace:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DogzID,
                                self.EquipPlace
                                )
        return DumpString
m_NAtagCMDogzUnEquipItem=tagCMDogzUnEquipItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMDogzUnEquipItem.Cmd,m_NAtagCMDogzUnEquipItem.SubCmd))] = m_NAtagCMDogzUnEquipItem
#------------------------------------------------------
# A5 C5 装备部位升星 #tagCMEquipPartStarUp
class  tagCMEquipPartStarUp(Structure):
@@ -5894,62 +5409,6 @@
#------------------------------------------------------
# A5 32 法器升级 #tagCMFaQiLVUp
class  tagCMFaQiLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_ushort),    #消耗材料个数
                  ("IsAutoBuy", c_ubyte),    #是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x32
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x32
        self.UseItemCnt = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMFaQiLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 32 法器升级 //tagCMFaQiLVUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMFaQiLVUp=tagCMFaQiLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFaQiLVUp.Cmd,m_NAtagCMFaQiLVUp.SubCmd))] = m_NAtagCMFaQiLVUp
#------------------------------------------------------
# A5 41 领取投资理财回报 #tagCMGetInvestReward
class  tagCMGetInvestReward(Structure):
@@ -6059,110 +5518,6 @@
m_NAtagCMGoldInvest=tagCMGoldInvest()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGoldInvest.Cmd,m_NAtagCMGoldInvest.SubCmd))] = m_NAtagCMGoldInvest
#------------------------------------------------------
# A5 34 炼体突破 #tagCMLianTiLVUp
class  tagCMLianTiLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x34
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x34
        return
    def GetLength(self):
        return sizeof(tagCMLianTiLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 34 炼体突破 //tagCMLianTiLVUp:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMLianTiLVUp=tagCMLianTiLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiLVUp.Cmd,m_NAtagCMLianTiLVUp.SubCmd))] = m_NAtagCMLianTiLVUp
#------------------------------------------------------
# A5 33 炼体提升 #tagCMLianTiUp
class  tagCMLianTiUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_int),    #消耗材料个数
                  ("IsAutoBuy", c_ubyte),    #是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x33
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA5
        self.SubCmd = 0x33
        self.UseItemCnt = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMLianTiUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 33 炼体提升 //tagCMLianTiUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMLianTiUp=tagCMLianTiUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLianTiUp.Cmd,m_NAtagCMLianTiUp.SubCmd))] = m_NAtagCMLianTiUp
#------------------------------------------------------
@@ -8293,58 +7648,6 @@
#------------------------------------------------------
# A9 07 点赞仙宫 #tagCGLikeXiangong
class  tagCGLikeXiangong(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("XiangongID", c_ushort),    # 仙宫ID,为0时代表每日的仙宫点赞
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA9
        self.SubCmd = 0x07
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA9
        self.SubCmd = 0x07
        self.XiangongID = 0
        return
    def GetLength(self):
        return sizeof(tagCGLikeXiangong)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 07 点赞仙宫 //tagCGLikeXiangong:
                                Cmd:%s,
                                SubCmd:%s,
                                XiangongID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.XiangongID
                                )
        return DumpString
m_NAtagCGLikeXiangong=tagCGLikeXiangong()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGLikeXiangong.Cmd,m_NAtagCGLikeXiangong.SubCmd))] = m_NAtagCGLikeXiangong
#------------------------------------------------------
# A9 A5 查看竞技场对战玩家最新信息 #tagCGQueryArenaBattlePlayer
class  tagCGQueryArenaBattlePlayer(Structure):
@@ -8662,58 +7965,6 @@
m_NAtagCGQueryRecommendFriends=tagCGQueryRecommendFriends()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryRecommendFriends.Cmd,m_NAtagCGQueryRecommendFriends.SubCmd))] = m_NAtagCGQueryRecommendFriends
#------------------------------------------------------
# A9 06 查看仙宫仙名录 #tagCGQueryXiangongRecPlayers
class  tagCGQueryXiangongRecPlayers(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("XiangongID", c_ushort),    # 仙宫ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA9
        self.SubCmd = 0x06
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA9
        self.SubCmd = 0x06
        self.XiangongID = 0
        return
    def GetLength(self):
        return sizeof(tagCGQueryXiangongRecPlayers)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 06 查看仙宫仙名录 //tagCGQueryXiangongRecPlayers:
                                Cmd:%s,
                                SubCmd:%s,
                                XiangongID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.XiangongID
                                )
        return DumpString
m_NAtagCGQueryXiangongRecPlayers=tagCGQueryXiangongRecPlayers()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryXiangongRecPlayers.Cmd,m_NAtagCGQueryXiangongRecPlayers.SubCmd))] = m_NAtagCGQueryXiangongRecPlayers
#------------------------------------------------------
@@ -9701,73 +8952,6 @@
#------------------------------------------------------
# B2 11 激活功能系统特权奖励 #tagCMActivateFuncSysPrivilege
class  tagCMActivateFuncSysPrivilege(Structure):
    Head = tagHead()
    ActivateCount = 0    #(BYTE ActivateCount)// 激活个数
    ActivateFuncSysIDList = list()    #(vector<BYTE> ActivateFuncSysIDList)// 激活功能系统ID列表,全部激活则需要发所有ID列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x11
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActivateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActivateCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.ActivateFuncSysIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x11
        self.ActivateCount = 0
        self.ActivateFuncSysIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1 * self.ActivateCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActivateCount)
        for i in range(self.ActivateCount):
            data = CommFunc.WriteBYTE(data, self.ActivateFuncSysIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActivateCount:%d,
                                ActivateFuncSysIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActivateCount,
                                "..."
                                )
        return DumpString
m_NAtagCMActivateFuncSysPrivilege=tagCMActivateFuncSysPrivilege()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateFuncSysPrivilege.Head.Cmd,m_NAtagCMActivateFuncSysPrivilege.Head.SubCmd))] = m_NAtagCMActivateFuncSysPrivilege
#------------------------------------------------------
# B2 06 玩家加点 #tagCMAddPoint
class  tagCMAddPoint(Structure):
@@ -10316,62 +9500,6 @@
m_NAtagCSFuncPresetUpdName=tagCSFuncPresetUpdName()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCSFuncPresetUpdName.Head.Cmd,m_NAtagCSFuncPresetUpdName.Head.SubCmd))] = m_NAtagCSFuncPresetUpdName
#------------------------------------------------------
# B2 12 领取功能系统特权奖励 #tagCMGetFuncSysPrivilegeAward
class  tagCMGetFuncSysPrivilegeAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FuncSysID", c_ubyte),    # 功能系统ID
                  ("DayNum", c_ubyte),    # 第X天,1为第1天
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        self.FuncSysID = 0
        self.DayNum = 0
        return
    def GetLength(self):
        return sizeof(tagCMGetFuncSysPrivilegeAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 12 领取功能系统特权奖励 //tagCMGetFuncSysPrivilegeAward:
                                Cmd:%s,
                                SubCmd:%s,
                                FuncSysID:%d,
                                DayNum:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FuncSysID,
                                self.DayNum
                                )
        return DumpString
m_NAtagCMGetFuncSysPrivilegeAward=tagCMGetFuncSysPrivilegeAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetFuncSysPrivilegeAward.Cmd,m_NAtagCMGetFuncSysPrivilegeAward.SubCmd))] = m_NAtagCMGetFuncSysPrivilegeAward
#------------------------------------------------------
@@ -11863,606 +10991,6 @@
#------------------------------------------------------
# B3 19 提升魅力等级 #tagCGCharmLVUp
class  tagCGCharmLVUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x19
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x19
        return
    def GetLength(self):
        return sizeof(tagCGCharmLVUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 19 提升魅力等级 //tagCGCharmLVUp:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCGCharmLVUp=tagCGCharmLVUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmLVUp.Cmd,m_NAtagCGCharmLVUp.SubCmd))] = m_NAtagCGCharmLVUp
#------------------------------------------------------
# B3 09 魅力贡献榜查看 #tagCGCharmOfferBillboardQuery
class  tagCGCharmOfferBillboardQuery(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    # 魅力玩家ID
                  ("QueryType", c_ubyte),    # 查看类型: 1-总榜,2-周榜,3-日榜
                  ("QueryCount", c_ubyte),    # 查看名次数量,最大255
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x09
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x09
        self.PlayerID = 0
        self.QueryType = 0
        self.QueryCount = 0
        return
    def GetLength(self):
        return sizeof(tagCGCharmOfferBillboardQuery)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 09 魅力贡献榜查看 //tagCGCharmOfferBillboardQuery:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d,
                                QueryType:%d,
                                QueryCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID,
                                self.QueryType,
                                self.QueryCount
                                )
        return DumpString
m_NAtagCGCharmOfferBillboardQuery=tagCGCharmOfferBillboardQuery()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCharmOfferBillboardQuery.Cmd,m_NAtagCGCharmOfferBillboardQuery.SubCmd))] = m_NAtagCGCharmOfferBillboardQuery
#------------------------------------------------------
# B3 17 情戒解锁 #tagCMLoveRingUnlock
class  tagCMLoveRingUnlock(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x17
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x17
        return
    def GetLength(self):
        return sizeof(tagCMLoveRingUnlock)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 17 情戒解锁 //tagCMLoveRingUnlock:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagCMLoveRingUnlock=tagCMLoveRingUnlock()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUnlock.Cmd,m_NAtagCMLoveRingUnlock.SubCmd))] = m_NAtagCMLoveRingUnlock
#------------------------------------------------------
# B3 18 情戒升级 #tagCMLoveRingUp
class  tagCMLoveRingUp(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("UseItemCnt", c_int),    #消耗材料个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x18
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x18
        self.UseItemCnt = 0
        return
    def GetLength(self):
        return sizeof(tagCMLoveRingUp)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 18 情戒升级 //tagCMLoveRingUp:
                                Cmd:%s,
                                SubCmd:%s,
                                UseItemCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.UseItemCnt
                                )
        return DumpString
m_NAtagCMLoveRingUp=tagCMLoveRingUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLoveRingUp.Cmd,m_NAtagCMLoveRingUp.SubCmd))] = m_NAtagCMLoveRingUp
#------------------------------------------------------
# B3 15 离婚 #tagCMMarryBreak
class  tagCMMarryBreak(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BreakType", c_ubyte),    # 0-和平离婚;1-强制离婚
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x15
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x15
        self.BreakType = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryBreak)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 15 离婚 //tagCMMarryBreak:
                                Cmd:%s,
                                SubCmd:%s,
                                BreakType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BreakType
                                )
        return DumpString
m_NAtagCMMarryBreak=tagCMMarryBreak()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBreak.Cmd,m_NAtagCMMarryBreak.SubCmd))] = m_NAtagCMMarryBreak
#------------------------------------------------------
# B3 16 和平离婚回应 #tagGCMarryBreakResponse
class  tagGCMarryBreakResponse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x16
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x16
        self.IsOK = 0
        return
    def GetLength(self):
        return sizeof(tagGCMarryBreakResponse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 16 和平离婚回应 //tagGCMarryBreakResponse:
                                Cmd:%s,
                                SubCmd:%s,
                                IsOK:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsOK
                                )
        return DumpString
m_NAtagGCMarryBreakResponse=tagGCMarryBreakResponse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryBreakResponse.Cmd,m_NAtagGCMarryBreakResponse.SubCmd))] = m_NAtagGCMarryBreakResponse
#------------------------------------------------------
# B3 14 购买婚礼烟花 #tagCMMarryBuyFireworks
class  tagCMMarryBuyFireworks(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerIDA", c_int),    # 喜糖所属玩家IDA
                  ("PlayerIDB", c_int),    # 喜糖所属玩家IDB
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x14
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x14
        self.PlayerIDA = 0
        self.PlayerIDB = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryBuyFireworks)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 14 购买婚礼烟花 //tagCMMarryBuyFireworks:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerIDA:%d,
                                PlayerIDB:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerIDA,
                                self.PlayerIDB
                                )
        return DumpString
m_NAtagCMMarryBuyFireworks=tagCMMarryBuyFireworks()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryBuyFireworks.Cmd,m_NAtagCMMarryBuyFireworks.SubCmd))] = m_NAtagCMMarryBuyFireworks
#------------------------------------------------------
# B3 13 吃喜糖 #tagCMMarryEatCandy
class  tagCMMarryEatCandy(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerIDA", c_int),    # 喜糖所属玩家IDA
                  ("PlayerIDB", c_int),    # 喜糖所属玩家IDB
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x13
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x13
        self.PlayerIDA = 0
        self.PlayerIDB = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryEatCandy)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 13 吃喜糖 //tagCMMarryEatCandy:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerIDA:%d,
                                PlayerIDB:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerIDA,
                                self.PlayerIDB
                                )
        return DumpString
m_NAtagCMMarryEatCandy=tagCMMarryEatCandy()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryEatCandy.Cmd,m_NAtagCMMarryEatCandy.SubCmd))] = m_NAtagCMMarryEatCandy
#------------------------------------------------------
# B3 11 提亲 #tagCMMarryReq
class  tagCMMarryReq(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagPlayerID", c_int),    # 目标玩家ID
                  ("BridePriceID", c_ubyte),    # 聘礼ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x11
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x11
        self.TagPlayerID = 0
        self.BridePriceID = 0
        return
    def GetLength(self):
        return sizeof(tagCMMarryReq)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 11 提亲 //tagCMMarryReq:
                                Cmd:%s,
                                SubCmd:%s,
                                TagPlayerID:%d,
                                BridePriceID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagPlayerID,
                                self.BridePriceID
                                )
        return DumpString
m_NAtagCMMarryReq=tagCMMarryReq()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMMarryReq.Cmd,m_NAtagCMMarryReq.SubCmd))] = m_NAtagCMMarryReq
#------------------------------------------------------
# B3 12 提亲回应 #tagCGMarryResponse
class  tagCGMarryResponse(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ReqPlayerID", c_int),    # 提亲的玩家ID
                  ("IsOK", c_ubyte),    # 是否同意,0-否,1-是
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x12
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x12
        self.ReqPlayerID = 0
        self.IsOK = 0
        return
    def GetLength(self):
        return sizeof(tagCGMarryResponse)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 12 提亲回应 //tagCGMarryResponse:
                                Cmd:%s,
                                SubCmd:%s,
                                ReqPlayerID:%d,
                                IsOK:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ReqPlayerID,
                                self.IsOK
                                )
        return DumpString
m_NAtagCGMarryResponse=tagCGMarryResponse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMarryResponse.Cmd,m_NAtagCGMarryResponse.SubCmd))] = m_NAtagCGMarryResponse
#------------------------------------------------------
# B3 10 送礼物 #tagCMSendGifts
class  tagCMSendGifts(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TagPlayerID", c_int),    # 目标玩家ID
                  ("GiftNum", c_ushort),    # 赠送礼物编号
                  ("GiftCount", c_int),    # 赠送礼物数量
                  ("IsAutoBuy", c_ubyte),    # 是否自动购买
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x10
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x10
        self.TagPlayerID = 0
        self.GiftNum = 0
        self.GiftCount = 0
        self.IsAutoBuy = 0
        return
    def GetLength(self):
        return sizeof(tagCMSendGifts)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 10 送礼物 //tagCMSendGifts:
                                Cmd:%s,
                                SubCmd:%s,
                                TagPlayerID:%d,
                                GiftNum:%d,
                                GiftCount:%d,
                                IsAutoBuy:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TagPlayerID,
                                self.GiftNum,
                                self.GiftCount,
                                self.IsAutoBuy
                                )
        return DumpString
m_NAtagCMSendGifts=tagCMSendGifts()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMSendGifts.Cmd,m_NAtagCMSendGifts.SubCmd))] = m_NAtagCMSendGifts
#------------------------------------------------------
#B3 04 加入黑名单 #tagCGAddBlackList
class  tagCGAddBlackList(Structure):
@@ -13900,62 +12428,6 @@
m_NAtagCMUseSkillEx=tagCMUseSkillEx()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUseSkillEx.Cmd,m_NAtagCMUseSkillEx.SubCmd))] = m_NAtagCMUseSkillEx
#------------------------------------------------------
# B4 0D 战斗印记 #tagCMYinji
class  tagCMYinji(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Count", c_ubyte),
                  ("Type", c_ubyte),    # 0 加,1减
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x0D
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB4
        self.SubCmd = 0x0D
        self.Count = 0
        self.Type = 0
        return
    def GetLength(self):
        return sizeof(tagCMYinji)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 0D 战斗印记 //tagCMYinji:
                                Cmd:%s,
                                SubCmd:%s,
                                Count:%d,
                                Type:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Count,
                                self.Type
                                )
        return DumpString
m_NAtagCMYinji=tagCMYinji()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMYinji.Cmd,m_NAtagCMYinji.SubCmd))] = m_NAtagCMYinji
#------------------------------------------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -1218,742 +1218,6 @@
#------------------------------------------------------
# A1 12 玩家初始化 #tagMCDBPlayer
class  tagMCDBPlayer(Structure):
    Head = tagHead()
    AccID = ""    #(char AccID[65])//帐号名, 该角色所在的帐号的用户名
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])//size = 14
    AccState = 0    #(BYTE AccState)//0: 未创建, 1: 创建OK,正常登录 2:封号 3:已删除
    GMLevel = 0    #(BYTE GMLevel)//GM等级, 0:不是GM  >=1 : GM的等级
    Sex = 0    #(BYTE Sex)//性别
    Job = 0    #(BYTE Job)//职业, 0.新手 1.游侠 2.战士 3.弓箭手 4.术士 5.道士
    ReincarnationLv = 0    #(WORD ReincarnationLv)// 转生等级
    LV = 0    #(WORD LV)//等级
    LVEx = 0    #(WORD LVEx)//玩家等级副本,用于转生
    LV2 = 0    #(WORD LV2)//大师等级
    ExpPoint = 0    #(DWORD ExpPoint)//扩充经验点数
    TotalExp = 0    #(DWORD TotalExp)//总经验
    Family = 0    #(DWORD Family)//家族
    FamilyName = ""    #(char FamilyName[33])//家族名称
    TeamHornor = 0    #(int TeamHornor)//组队荣誉
    FamilyHornor = 0    #(int FamilyHornor)//家族荣耀
    FamilyActiveValue = 0    #(int FamilyActiveValue)//家族活跃度
    LastWeekFamilyActiveValue = 0    #(int LastWeekFamilyActiveValue)//上周家族活跃度
    CountryHornor = 0    #(int CountryHornor)//本周国家功勋值
    CountryLastWeekHornor = 0    #(int CountryLastWeekHornor)//上周国家功勋值
    Mate = 0    #(DWORD Mate)
    Gold = 0    #(DWORD Gold)//金子
    GoldPaper = 0    #(DWORD GoldPaper)//金票
    Silver = 0    #(DWORD Silver)//银子
    SilverPaper = 0    #(DWORD SilverPaper)//银票
    FightPoint = 0    #(DWORD FightPoint)//战斗值
    HappyPoint = 0    #(DWORD HappyPoint)//脱机挂时长(秒)
    LineID = 0    #(BYTE LineID)//角色所在线路
    MapID = 0    #(WORD MapID)//角色所在地图
    PosX = 0    #(WORD PosX)//角色坐标
    PosY = 0    #(WORD PosY)
    RebornMapID = 0    #(WORD RebornMapID)//重生点地图ID
    RebornPosX = 0    #(WORD RebornPosX)
    RebornPosY = 0    #(WORD RebornPosY)
    State = 0    #(BYTE State)//角色状态   0.正常在线1.脱机挂在线 2脱机挂死亡
    HP = 0    #(DWORD HP)//当前HP
    XP = 0    #(DWORD XP)//当前XP
    HPRestoreSetting = 0    #(WORD HPRestoreSetting)//少于这个值%自动喝血
    MPRestoreSetting = 0    #(WORD MPRestoreSetting)//少于这个值%自动喝魔
    FreePoint = 0    #(DWORD FreePoint)//未分配点数
    FreeSkillPoint = 0    #(DWORD FreeSkillPoint)//未分配的技能点
    BaseSTR = 0    #(int BaseSTR)//裸体力量
    BasePNE = 0    #(int BasePNE)//裸体真元
    BasePHY = 0    #(int BasePHY)//裸体筋骨
    BaseCON = 0    #(int BaseCON)//裸体体魄
    STR = 0    #(int STR)//力量
    PNE = 0    #(int PNE)//真元
    PHY = 0    #(int PHY)//筋骨
    CON = 0    #(int CON)//体魄
    PKValue = 0    #(WORD PKValue)//衡量PK能力的一项属性,由攻防计算而得
    BackpackLV = 0    #(BYTE BackpackLV)//背包等级
    WarehouseLV = 0    #(BYTE WarehouseLV)//仓库等级
    TeamID = 0    #(DWORD TeamID)//队伍ID
    UseGoldType = 0    #(BYTE UseGoldType)//默认用金子/金票        类型为MoneyType
    UseSilverType = 0    #(BYTE UseSilverType)//默认用的银子/银票
    AttackMode = 0    #(BYTE AttackMode)//攻击模式
    LastWeekOnlineTime = 0    #(DWORD LastWeekOnlineTime)//上周在线时间
    FBID = 0    #(BYTE FBID)//fb id
    FamilyLV = 0    #(BYTE FamilyLV)//家族等级
    FriendFavor = 0    #(DWORD FriendFavor)//好友人气值
    Energy = 0    #(DWORD Energy)//精力值
    EquipShowSwitch = 0    #(DWORD EquipShowSwitch)//装备显示开关
    LuckValue = 0    #(DWORD LuckValue)//幸运值
    ExAttr1 = 0    #(DWORD ExAttr1)//扩展属性1,各项目专用
    ExAttr2 = 0    #(DWORD ExAttr2)//扩展属性2,各项目专用
    ExAttr3 = 0    #(DWORD ExAttr3)//扩展属性3,各项目专用
    ExAttr4 = 0    #(DWORD ExAttr4)//扩展属性4,各项目专用
    ExAttr5 = 0    #(DWORD ExAttr5)//扩展属性5,各项目专用
    Faction = 0    #(BYTE Faction)//阵营
    InfamyValue = 0    #(DWORD InfamyValue)//恶名值
    OfficialRank = 0    #(BYTE OfficialRank)//官阶,官职等级
    ChangeCoinPointTotal = 0    #(DWORD ChangeCoinPointTotal)//兑换的点数总计
    VIPLv = 0    #(BYTE VIPLv)//VIP等级
    VIPLvForPhone = 0    #(BYTE VIPLvForPhone)//移动VIP等级
    ExAttr6 = 0    #(DWORD ExAttr6)//扩展属性6,各项目专用
    ExAttr7 = 0    #(DWORD ExAttr7)//扩展属性7,各项目专用
    ExAttr8 = 0    #(DWORD ExAttr8)//扩展属性8,各项目专用
    ExAttr9 = 0    #(DWORD ExAttr9)//扩展属性9,各项目专用
    ExAttr10 = 0    #(DWORD ExAttr10)//扩展属性10,各项目专用
    ModelMark = 0    #(DWORD ModelMark)// 变形模型mark
    ExAttr11 = 0    #(DWORD ExAttr11)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr12 = 0    #(DWORD ExAttr12)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr13 = 0    #(DWORD ExAttr13)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr14 = 0    #(DWORD ExAttr14)//预留的扩展属性字段,用来存放项目特定的属性
    OperateInfo = 0    #(DWORD OperateInfo)//玩家附加运营商信息
    Operate = ""    #(char Operate[15])//所属运营商平台名
    ServerID = 0    #(DWORD ServerID)//所属区服ID
    ExAttr15 = 0    #(DWORD ExAttr15)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr16 = 0    #(DWORD ExAttr16)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr17 = 0    #(DWORD ExAttr17)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr18 = 0    #(DWORD ExAttr18)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr19 = 0    #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr20 = 0    #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
    HPEx = 0    #(DWORD HPEx)//当前血量 超过E的记录
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    RoleType = 0    #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA1
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AccID,_pos = CommFunc.ReadString(_lpData, _pos,65)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.AccState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GMLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Sex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ReincarnationLv,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LVEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LV2,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TotalExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Family,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.TeamHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FamilyHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LastWeekFamilyActiveValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CountryHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CountryLastWeekHornor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Mate,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Gold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GoldPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Silver,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SilverPaper,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HappyPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RebornMapID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RebornPosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RebornPosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.HP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.XP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.MPRestoreSetting,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.FreePoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FreeSkillPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BaseSTR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BasePNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BasePHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BaseCON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.STR,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PNE,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PHY,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CON,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PKValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BackpackLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.WarehouseLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.UseGoldType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.UseSilverType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AttackMode,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LastWeekOnlineTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FBID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FriendFavor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Energy,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LuckValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr4,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr5,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.InfamyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.OfficialRank,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ChangeCoinPointTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.VIPLv,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.VIPLvForPhone,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ExAttr6,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr7,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr8,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr9,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr10,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ModelMark,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr11,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr12,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr13,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr14,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.OperateInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Operate,_pos = CommFunc.ReadString(_lpData, _pos,15)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr15,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr16,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr17,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr18,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA1
        self.Head.SubCmd = 0x12
        self.AccID = ""
        self.PlayerID = 0
        self.PlayerName = ""
        self.AccState = 0
        self.GMLevel = 0
        self.Sex = 0
        self.Job = 0
        self.ReincarnationLv = 0
        self.LV = 0
        self.LVEx = 0
        self.LV2 = 0
        self.ExpPoint = 0
        self.TotalExp = 0
        self.Family = 0
        self.FamilyName = ""
        self.TeamHornor = 0
        self.FamilyHornor = 0
        self.FamilyActiveValue = 0
        self.LastWeekFamilyActiveValue = 0
        self.CountryHornor = 0
        self.CountryLastWeekHornor = 0
        self.Mate = 0
        self.Gold = 0
        self.GoldPaper = 0
        self.Silver = 0
        self.SilverPaper = 0
        self.FightPoint = 0
        self.HappyPoint = 0
        self.LineID = 0
        self.MapID = 0
        self.PosX = 0
        self.PosY = 0
        self.RebornMapID = 0
        self.RebornPosX = 0
        self.RebornPosY = 0
        self.State = 0
        self.HP = 0
        self.XP = 0
        self.HPRestoreSetting = 0
        self.MPRestoreSetting = 0
        self.FreePoint = 0
        self.FreeSkillPoint = 0
        self.BaseSTR = 0
        self.BasePNE = 0
        self.BasePHY = 0
        self.BaseCON = 0
        self.STR = 0
        self.PNE = 0
        self.PHY = 0
        self.CON = 0
        self.PKValue = 0
        self.BackpackLV = 0
        self.WarehouseLV = 0
        self.TeamID = 0
        self.UseGoldType = 0
        self.UseSilverType = 0
        self.AttackMode = 0
        self.LastWeekOnlineTime = 0
        self.FBID = 0
        self.FamilyLV = 0
        self.FriendFavor = 0
        self.Energy = 0
        self.EquipShowSwitch = 0
        self.LuckValue = 0
        self.ExAttr1 = 0
        self.ExAttr2 = 0
        self.ExAttr3 = 0
        self.ExAttr4 = 0
        self.ExAttr5 = 0
        self.Faction = 0
        self.InfamyValue = 0
        self.OfficialRank = 0
        self.ChangeCoinPointTotal = 0
        self.VIPLv = 0
        self.VIPLvForPhone = 0
        self.ExAttr6 = 0
        self.ExAttr7 = 0
        self.ExAttr8 = 0
        self.ExAttr9 = 0
        self.ExAttr10 = 0
        self.ModelMark = 0
        self.ExAttr11 = 0
        self.ExAttr12 = 0
        self.ExAttr13 = 0
        self.ExAttr14 = 0
        self.OperateInfo = 0
        self.Operate = ""
        self.ServerID = 0
        self.ExAttr15 = 0
        self.ExAttr16 = 0
        self.ExAttr17 = 0
        self.ExAttr18 = 0
        self.ExAttr19 = 0
        self.ExAttr20 = 0
        self.HPEx = 0
        self.Face = 0
        self.FacePic = 0
        self.RoleType = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 65
        length += 4
        length += 33
        length += 1
        length += 1
        length += 1
        length += 1
        length += 2
        length += 2
        length += 2
        length += 2
        length += 4
        length += 4
        length += 4
        length += 33
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        length += 2
        length += 2
        length += 2
        length += 2
        length += 2
        length += 2
        length += 1
        length += 4
        length += 4
        length += 2
        length += 2
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += 1
        length += 1
        length += 4
        length += 1
        length += 1
        length += 1
        length += 4
        length += 1
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        length += 4
        length += 1
        length += 4
        length += 1
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 15
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 65, self.AccID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.AccState)
        data = CommFunc.WriteBYTE(data, self.GMLevel)
        data = CommFunc.WriteBYTE(data, self.Sex)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.ReincarnationLv)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.LVEx)
        data = CommFunc.WriteWORD(data, self.LV2)
        data = CommFunc.WriteDWORD(data, self.ExpPoint)
        data = CommFunc.WriteDWORD(data, self.TotalExp)
        data = CommFunc.WriteDWORD(data, self.Family)
        data = CommFunc.WriteString(data, 33, self.FamilyName)
        data = CommFunc.WriteDWORD(data, self.TeamHornor)
        data = CommFunc.WriteDWORD(data, self.FamilyHornor)
        data = CommFunc.WriteDWORD(data, self.FamilyActiveValue)
        data = CommFunc.WriteDWORD(data, self.LastWeekFamilyActiveValue)
        data = CommFunc.WriteDWORD(data, self.CountryHornor)
        data = CommFunc.WriteDWORD(data, self.CountryLastWeekHornor)
        data = CommFunc.WriteDWORD(data, self.Mate)
        data = CommFunc.WriteDWORD(data, self.Gold)
        data = CommFunc.WriteDWORD(data, self.GoldPaper)
        data = CommFunc.WriteDWORD(data, self.Silver)
        data = CommFunc.WriteDWORD(data, self.SilverPaper)
        data = CommFunc.WriteDWORD(data, self.FightPoint)
        data = CommFunc.WriteDWORD(data, self.HappyPoint)
        data = CommFunc.WriteBYTE(data, self.LineID)
        data = CommFunc.WriteWORD(data, self.MapID)
        data = CommFunc.WriteWORD(data, self.PosX)
        data = CommFunc.WriteWORD(data, self.PosY)
        data = CommFunc.WriteWORD(data, self.RebornMapID)
        data = CommFunc.WriteWORD(data, self.RebornPosX)
        data = CommFunc.WriteWORD(data, self.RebornPosY)
        data = CommFunc.WriteBYTE(data, self.State)
        data = CommFunc.WriteDWORD(data, self.HP)
        data = CommFunc.WriteDWORD(data, self.XP)
        data = CommFunc.WriteWORD(data, self.HPRestoreSetting)
        data = CommFunc.WriteWORD(data, self.MPRestoreSetting)
        data = CommFunc.WriteDWORD(data, self.FreePoint)
        data = CommFunc.WriteDWORD(data, self.FreeSkillPoint)
        data = CommFunc.WriteDWORD(data, self.BaseSTR)
        data = CommFunc.WriteDWORD(data, self.BasePNE)
        data = CommFunc.WriteDWORD(data, self.BasePHY)
        data = CommFunc.WriteDWORD(data, self.BaseCON)
        data = CommFunc.WriteDWORD(data, self.STR)
        data = CommFunc.WriteDWORD(data, self.PNE)
        data = CommFunc.WriteDWORD(data, self.PHY)
        data = CommFunc.WriteDWORD(data, self.CON)
        data = CommFunc.WriteWORD(data, self.PKValue)
        data = CommFunc.WriteBYTE(data, self.BackpackLV)
        data = CommFunc.WriteBYTE(data, self.WarehouseLV)
        data = CommFunc.WriteDWORD(data, self.TeamID)
        data = CommFunc.WriteBYTE(data, self.UseGoldType)
        data = CommFunc.WriteBYTE(data, self.UseSilverType)
        data = CommFunc.WriteBYTE(data, self.AttackMode)
        data = CommFunc.WriteDWORD(data, self.LastWeekOnlineTime)
        data = CommFunc.WriteBYTE(data, self.FBID)
        data = CommFunc.WriteBYTE(data, self.FamilyLV)
        data = CommFunc.WriteDWORD(data, self.FriendFavor)
        data = CommFunc.WriteDWORD(data, self.Energy)
        data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
        data = CommFunc.WriteDWORD(data, self.LuckValue)
        data = CommFunc.WriteDWORD(data, self.ExAttr1)
        data = CommFunc.WriteDWORD(data, self.ExAttr2)
        data = CommFunc.WriteDWORD(data, self.ExAttr3)
        data = CommFunc.WriteDWORD(data, self.ExAttr4)
        data = CommFunc.WriteDWORD(data, self.ExAttr5)
        data = CommFunc.WriteBYTE(data, self.Faction)
        data = CommFunc.WriteDWORD(data, self.InfamyValue)
        data = CommFunc.WriteBYTE(data, self.OfficialRank)
        data = CommFunc.WriteDWORD(data, self.ChangeCoinPointTotal)
        data = CommFunc.WriteBYTE(data, self.VIPLv)
        data = CommFunc.WriteBYTE(data, self.VIPLvForPhone)
        data = CommFunc.WriteDWORD(data, self.ExAttr6)
        data = CommFunc.WriteDWORD(data, self.ExAttr7)
        data = CommFunc.WriteDWORD(data, self.ExAttr8)
        data = CommFunc.WriteDWORD(data, self.ExAttr9)
        data = CommFunc.WriteDWORD(data, self.ExAttr10)
        data = CommFunc.WriteDWORD(data, self.ModelMark)
        data = CommFunc.WriteDWORD(data, self.ExAttr11)
        data = CommFunc.WriteDWORD(data, self.ExAttr12)
        data = CommFunc.WriteDWORD(data, self.ExAttr13)
        data = CommFunc.WriteDWORD(data, self.ExAttr14)
        data = CommFunc.WriteDWORD(data, self.OperateInfo)
        data = CommFunc.WriteString(data, 15, self.Operate)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.ExAttr15)
        data = CommFunc.WriteDWORD(data, self.ExAttr16)
        data = CommFunc.WriteDWORD(data, self.ExAttr17)
        data = CommFunc.WriteDWORD(data, self.ExAttr18)
        data = CommFunc.WriteDWORD(data, self.ExAttr19)
        data = CommFunc.WriteDWORD(data, self.ExAttr20)
        data = CommFunc.WriteDWORD(data, self.HPEx)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.RoleType)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AccID:%s,
                                PlayerID:%d,
                                PlayerName:%s,
                                AccState:%d,
                                GMLevel:%d,
                                Sex:%d,
                                Job:%d,
                                ReincarnationLv:%d,
                                LV:%d,
                                LVEx:%d,
                                LV2:%d,
                                ExpPoint:%d,
                                TotalExp:%d,
                                Family:%d,
                                FamilyName:%s,
                                TeamHornor:%d,
                                FamilyHornor:%d,
                                FamilyActiveValue:%d,
                                LastWeekFamilyActiveValue:%d,
                                CountryHornor:%d,
                                CountryLastWeekHornor:%d,
                                Mate:%d,
                                Gold:%d,
                                GoldPaper:%d,
                                Silver:%d,
                                SilverPaper:%d,
                                FightPoint:%d,
                                HappyPoint:%d,
                                LineID:%d,
                                MapID:%d,
                                PosX:%d,
                                PosY:%d,
                                RebornMapID:%d,
                                RebornPosX:%d,
                                RebornPosY:%d,
                                State:%d,
                                HP:%d,
                                XP:%d,
                                HPRestoreSetting:%d,
                                MPRestoreSetting:%d,
                                FreePoint:%d,
                                FreeSkillPoint:%d,
                                BaseSTR:%d,
                                BasePNE:%d,
                                BasePHY:%d,
                                BaseCON:%d,
                                STR:%d,
                                PNE:%d,
                                PHY:%d,
                                CON:%d,
                                PKValue:%d,
                                BackpackLV:%d,
                                WarehouseLV:%d,
                                TeamID:%d,
                                UseGoldType:%d,
                                UseSilverType:%d,
                                AttackMode:%d,
                                LastWeekOnlineTime:%d,
                                FBID:%d,
                                FamilyLV:%d,
                                FriendFavor:%d,
                                Energy:%d,
                                EquipShowSwitch:%d,
                                LuckValue:%d,
                                ExAttr1:%d,
                                ExAttr2:%d,
                                ExAttr3:%d,
                                ExAttr4:%d,
                                ExAttr5:%d,
                                Faction:%d,
                                InfamyValue:%d,
                                OfficialRank:%d,
                                ChangeCoinPointTotal:%d,
                                VIPLv:%d,
                                VIPLvForPhone:%d,
                                ExAttr6:%d,
                                ExAttr7:%d,
                                ExAttr8:%d,
                                ExAttr9:%d,
                                ExAttr10:%d,
                                ModelMark:%d,
                                ExAttr11:%d,
                                ExAttr12:%d,
                                ExAttr13:%d,
                                ExAttr14:%d,
                                OperateInfo:%d,
                                Operate:%s,
                                ServerID:%d,
                                ExAttr15:%d,
                                ExAttr16:%d,
                                ExAttr17:%d,
                                ExAttr18:%d,
                                ExAttr19:%d,
                                ExAttr20:%d,
                                HPEx:%d,
                                Face:%d,
                                FacePic:%d,
                                RoleType:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AccID,
                                self.PlayerID,
                                self.PlayerName,
                                self.AccState,
                                self.GMLevel,
                                self.Sex,
                                self.Job,
                                self.ReincarnationLv,
                                self.LV,
                                self.LVEx,
                                self.LV2,
                                self.ExpPoint,
                                self.TotalExp,
                                self.Family,
                                self.FamilyName,
                                self.TeamHornor,
                                self.FamilyHornor,
                                self.FamilyActiveValue,
                                self.LastWeekFamilyActiveValue,
                                self.CountryHornor,
                                self.CountryLastWeekHornor,
                                self.Mate,
                                self.Gold,
                                self.GoldPaper,
                                self.Silver,
                                self.SilverPaper,
                                self.FightPoint,
                                self.HappyPoint,
                                self.LineID,
                                self.MapID,
                                self.PosX,
                                self.PosY,
                                self.RebornMapID,
                                self.RebornPosX,
                                self.RebornPosY,
                                self.State,
                                self.HP,
                                self.XP,
                                self.HPRestoreSetting,
                                self.MPRestoreSetting,
                                self.FreePoint,
                                self.FreeSkillPoint,
                                self.BaseSTR,
                                self.BasePNE,
                                self.BasePHY,
                                self.BaseCON,
                                self.STR,
                                self.PNE,
                                self.PHY,
                                self.CON,
                                self.PKValue,
                                self.BackpackLV,
                                self.WarehouseLV,
                                self.TeamID,
                                self.UseGoldType,
                                self.UseSilverType,
                                self.AttackMode,
                                self.LastWeekOnlineTime,
                                self.FBID,
                                self.FamilyLV,
                                self.FriendFavor,
                                self.Energy,
                                self.EquipShowSwitch,
                                self.LuckValue,
                                self.ExAttr1,
                                self.ExAttr2,
                                self.ExAttr3,
                                self.ExAttr4,
                                self.ExAttr5,
                                self.Faction,
                                self.InfamyValue,
                                self.OfficialRank,
                                self.ChangeCoinPointTotal,
                                self.VIPLv,
                                self.VIPLvForPhone,
                                self.ExAttr6,
                                self.ExAttr7,
                                self.ExAttr8,
                                self.ExAttr9,
                                self.ExAttr10,
                                self.ModelMark,
                                self.ExAttr11,
                                self.ExAttr12,
                                self.ExAttr13,
                                self.ExAttr14,
                                self.OperateInfo,
                                self.Operate,
                                self.ServerID,
                                self.ExAttr15,
                                self.ExAttr16,
                                self.ExAttr17,
                                self.ExAttr18,
                                self.ExAttr19,
                                self.ExAttr20,
                                self.HPEx,
                                self.Face,
                                self.FacePic,
                                self.RoleType
                                )
        return DumpString
m_NAtagMCDBPlayer=tagMCDBPlayer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDBPlayer.Head.Cmd,m_NAtagMCDBPlayer.Head.SubCmd))] = m_NAtagMCDBPlayer
#------------------------------------------------------
#A1 05 元宝消费记录 #tagMCGoldCostReport
class  tagMCGoldCostReport(Structure):
@@ -4395,114 +3659,6 @@
#------------------------------------------------------
# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState
class  tagMCDogzHelpbattleState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DogzID", c_ubyte),    # 神兽ID
                  ("BatteState", c_ubyte),    #是否已助战, 0否1是
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0xC1
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0xC1
        self.DogzID = 0
        self.BatteState = 0
        return
    def GetLength(self):
        return sizeof(tagMCDogzHelpbattleState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState:
                                Cmd:%s,
                                SubCmd:%s,
                                DogzID:%d,
                                BatteState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DogzID,
                                self.BatteState
                                )
        return DumpString
m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState
#------------------------------------------------------
# A3 C0 神兽信息 #tagMCDogzInfo
class  tagMCDogzInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BuyHelpbattleCount", c_ubyte),    #额外购买的助战数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0xC0
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0xC0
        self.BuyHelpbattleCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCDogzInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                BuyHelpbattleCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BuyHelpbattleCount
                                )
        return DumpString
m_NAtagMCDogzInfo=tagMCDogzInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo
#------------------------------------------------------
# A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo
class  tagMCEquipDecomposeInfo(Structure):
@@ -5020,62 +4176,6 @@
m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
#------------------------------------------------------
# A3 54 法器信息 #tagMCFaQiInfo
class  tagMCFaQiInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LV", c_ubyte),    #等阶
                  ("EatItemCount", c_int),    #当前阶已吃丹个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x54
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0x54
        self.LV = 0
        self.EatItemCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCFaQiInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 54 法器信息 //tagMCFaQiInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                LV:%d,
                                EatItemCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.LV,
                                self.EatItemCount
                                )
        return DumpString
m_NAtagMCFaQiInfo=tagMCFaQiInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFaQiInfo.Cmd,m_NAtagMCFaQiInfo.SubCmd))] = m_NAtagMCFaQiInfo
#------------------------------------------------------
@@ -5815,62 +4915,6 @@
m_NAtagSCInvestInfo=tagSCInvestInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCInvestInfo.Cmd,m_NAtagSCInvestInfo.SubCmd))] = m_NAtagSCInvestInfo
#------------------------------------------------------
# A3 55 炼体信息 #tagMCLianTiInfo
class  tagMCLianTiInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LianTiLV", c_ubyte),    #炼体等级
                  ("EatItemCount", c_int),    #当前等级已吃丹个数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x55
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0x55
        self.LianTiLV = 0
        self.EatItemCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCLianTiInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 55 炼体信息 //tagMCLianTiInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                LianTiLV:%d,
                                EatItemCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.LianTiLV,
                                self.EatItemCount
                                )
        return DumpString
m_NAtagMCLianTiInfo=tagMCLianTiInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLianTiInfo.Cmd,m_NAtagMCLianTiInfo.SubCmd))] = m_NAtagMCLianTiInfo
#------------------------------------------------------
@@ -15590,114 +14634,6 @@
#------------------------------------------------------
# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime
class  tagDogzTimeInfoObj(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NPCID", c_int),    # npcid
                  ("RefreshSecond", c_int),    # 刷新倒计时, 秒
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.NPCID = 0
        self.RefreshSecond = 0
        return
    def GetLength(self):
        return sizeof(tagDogzTimeInfoObj)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime:
                                NPCID:%d,
                                RefreshSecond:%d
                                '''\
                                %(
                                self.NPCID,
                                self.RefreshSecond
                                )
        return DumpString
class  tagGCDogzNPCRefreshTime(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)//信息个数
    InfoList = list()    #(vector<tagDogzTimeInfoObj> InfoList)//信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Cnt):
            temInfoList = tagDogzTimeInfoObj()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x04
        self.Cnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime
#------------------------------------------------------
# A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo
class  tagGCFriendSendEnergyInfo(Structure):
@@ -17120,384 +16056,6 @@
m_NAtagGCStoreServerBuyCntInfo=tagGCStoreServerBuyCntInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCStoreServerBuyCntInfo.Head.Cmd,m_NAtagGCStoreServerBuyCntInfo.Head.SubCmd))] = m_NAtagGCStoreServerBuyCntInfo
#------------------------------------------------------
# A9 27 仙宫新晋玩家信息 #tagGCXiangongNewPlayerInfo
class  tagGCXiangongNewPlayer(Structure):
    AddTime = 0    #(DWORD AddTime)// 新晋时间戳
    ServerID = 0    #(DWORD ServerID)
    PlayerID = 0    #(DWORD PlayerID)
    NameLen = 0    #(BYTE NameLen)
    Name = ""    #(String Name)// 玩家名,size = NameLen
    LV = 0    #(WORD LV)// 玩家等级
    Job = 0    #(BYTE Job)// 玩家职业
    RealmLV = 0    #(WORD RealmLV)// 玩家境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    EquipShowSwitch = 0    #(DWORD EquipShowSwitch)
    EquipShowIDCount = 0    #(BYTE EquipShowIDCount)
    EquipShowID = list()    #(vector<DWORD> EquipShowID)
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EquipShowIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.EquipShowIDCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.EquipShowID.append(value)
        return _pos
    def Clear(self):
        self.AddTime = 0
        self.ServerID = 0
        self.PlayerID = 0
        self.NameLen = 0
        self.Name = ""
        self.LV = 0
        self.Job = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.EquipShowSwitch = 0
        self.EquipShowIDCount = 0
        self.EquipShowID = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 4
        length += 1
        length += len(self.Name)
        length += 2
        length += 1
        length += 2
        length += 4
        length += 4
        length += 4
        length += 1
        length += 4 * self.EquipShowIDCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.AddTime)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.EquipShowSwitch)
        data = CommFunc.WriteBYTE(data, self.EquipShowIDCount)
        for i in range(self.EquipShowIDCount):
            data = CommFunc.WriteDWORD(data, self.EquipShowID[i])
        return data
    def OutputString(self):
        DumpString = '''
                                AddTime:%d,
                                ServerID:%d,
                                PlayerID:%d,
                                NameLen:%d,
                                Name:%s,
                                LV:%d,
                                Job:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                EquipShowSwitch:%d,
                                EquipShowIDCount:%d,
                                EquipShowID:%s
                                '''\
                                %(
                                self.AddTime,
                                self.ServerID,
                                self.PlayerID,
                                self.NameLen,
                                self.Name,
                                self.LV,
                                self.Job,
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.EquipShowSwitch,
                                self.EquipShowIDCount,
                                "..."
                                )
        return DumpString
class  tagGCXiangongNewPlayerInfo(Structure):
    Head = tagHead()
    XiangongID = 0    #(WORD XiangongID)// 仙宫ID
    NewPlayerCount = 0    #(BYTE NewPlayerCount)
    NewPlayerList = list()    #(vector<tagGCXiangongNewPlayer> NewPlayerList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x27
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.NewPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NewPlayerCount):
            temNewPlayerList = tagGCXiangongNewPlayer()
            _pos = temNewPlayerList.ReadData(_lpData, _pos)
            self.NewPlayerList.append(temNewPlayerList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x27
        self.XiangongID = 0
        self.NewPlayerCount = 0
        self.NewPlayerList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        length += 1
        for i in range(self.NewPlayerCount):
            length += self.NewPlayerList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.XiangongID)
        data = CommFunc.WriteBYTE(data, self.NewPlayerCount)
        for i in range(self.NewPlayerCount):
            data = CommFunc.WriteString(data, self.NewPlayerList[i].GetLength(), self.NewPlayerList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                XiangongID:%d,
                                NewPlayerCount:%d,
                                NewPlayerList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.XiangongID,
                                self.NewPlayerCount,
                                "..."
                                )
        return DumpString
m_NAtagGCXiangongNewPlayerInfo=tagGCXiangongNewPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongNewPlayerInfo.Head.Cmd,m_NAtagGCXiangongNewPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongNewPlayerInfo
#------------------------------------------------------
# A9 28 仙宫仙名录玩家信息 #tagGCXiangongRecPlayerInfo
class  tagGCXiangongRecPlayer(Structure):
    AddTime = 0    #(DWORD AddTime)// 新晋时间戳
    ServerID = 0    #(DWORD ServerID)
    PlayerID = 0    #(DWORD PlayerID)
    NameLen = 0    #(BYTE NameLen)
    Name = ""    #(String Name)// 玩家名,size = NameLen
    LV = 0    #(WORD LV)// 玩家等级
    Job = 0    #(BYTE Job)// 玩家职业
    RealmLV = 0    #(WORD RealmLV)// 玩家境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.AddTime = 0
        self.ServerID = 0
        self.PlayerID = 0
        self.NameLen = 0
        self.Name = ""
        self.LV = 0
        self.Job = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 4
        length += 1
        length += len(self.Name)
        length += 2
        length += 1
        length += 2
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.AddTime)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        return data
    def OutputString(self):
        DumpString = '''
                                AddTime:%d,
                                ServerID:%d,
                                PlayerID:%d,
                                NameLen:%d,
                                Name:%s,
                                LV:%d,
                                Job:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d
                                '''\
                                %(
                                self.AddTime,
                                self.ServerID,
                                self.PlayerID,
                                self.NameLen,
                                self.Name,
                                self.LV,
                                self.Job,
                                self.RealmLV,
                                self.Face,
                                self.FacePic
                                )
        return DumpString
class  tagGCXiangongRecPlayerInfo(Structure):
    Head = tagHead()
    XiangongID = 0    #(WORD XiangongID)// 仙宫ID
    RecPlayerCount = 0    #(BYTE RecPlayerCount)
    RecPlayerList = list()    #(vector<tagGCXiangongRecPlayer> RecPlayerList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x28
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RecPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RecPlayerCount):
            temRecPlayerList = tagGCXiangongRecPlayer()
            _pos = temRecPlayerList.ReadData(_lpData, _pos)
            self.RecPlayerList.append(temRecPlayerList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x28
        self.XiangongID = 0
        self.RecPlayerCount = 0
        self.RecPlayerList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        length += 1
        for i in range(self.RecPlayerCount):
            length += self.RecPlayerList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.XiangongID)
        data = CommFunc.WriteBYTE(data, self.RecPlayerCount)
        for i in range(self.RecPlayerCount):
            data = CommFunc.WriteString(data, self.RecPlayerList[i].GetLength(), self.RecPlayerList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                XiangongID:%d,
                                RecPlayerCount:%d,
                                RecPlayerList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.XiangongID,
                                self.RecPlayerCount,
                                "..."
                                )
        return DumpString
m_NAtagGCXiangongRecPlayerInfo=tagGCXiangongRecPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongRecPlayerInfo.Head.Cmd,m_NAtagGCXiangongRecPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongRecPlayerInfo
#------------------------------------------------------
@@ -23891,118 +22449,6 @@
#------------------------------------------------------
# B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList
class  tagMCFuncSysPrivilegeInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("FuncSysID", c_ubyte),    # 功能系统ID
                  ("ActivateTime", c_int),    # 激活时间戳
                  ("AwardState", c_int),    # 领奖状态,按天对应二进制位计算是否领奖
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.FuncSysID = 0
        self.ActivateTime = 0
        self.AwardState = 0
        return
    def GetLength(self):
        return sizeof(tagMCFuncSysPrivilegeInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 11 功能系统特权信息 //tagMCFuncSysPrivilegeInfoList:
                                FuncSysID:%d,
                                ActivateTime:%d,
                                AwardState:%d
                                '''\
                                %(
                                self.FuncSysID,
                                self.ActivateTime,
                                self.AwardState
                                )
        return DumpString
class  tagMCFuncSysPrivilegeInfoList(Structure):
    Head = tagHead()
    PrivilegeCount = 0    #(BYTE PrivilegeCount)// 特权个数
    PrivilegeInfoList = list()    #(vector<tagMCFuncSysPrivilegeInfo> PrivilegeInfoList)// 特权信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x11
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.PrivilegeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PrivilegeCount):
            temPrivilegeInfoList = tagMCFuncSysPrivilegeInfo()
            _pos = temPrivilegeInfoList.ReadData(_lpData, _pos)
            self.PrivilegeInfoList.append(temPrivilegeInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x11
        self.PrivilegeCount = 0
        self.PrivilegeInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.PrivilegeCount):
            length += self.PrivilegeInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.PrivilegeCount)
        for i in range(self.PrivilegeCount):
            data = CommFunc.WriteString(data, self.PrivilegeInfoList[i].GetLength(), self.PrivilegeInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                PrivilegeCount:%d,
                                PrivilegeInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.PrivilegeCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
#------------------------------------------------------
# B1 31 宿缘信息 #tagSCHeroFatesInfo
class  tagSCHeroFates(Structure):
@@ -25176,54 +23622,6 @@
#------------------------------------------------------
#B1 08 开始印记流失时间 #tagMCYinjiStartTime
class  tagMCYinjiStartTime(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        self.SubCmd = 0x08
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB1
        self.SubCmd = 0x08
        return
    def GetLength(self):
        return sizeof(tagMCYinjiStartTime)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
#------------------------------------------------------
# B1 10 当前任务信息 #tagMCTaskInfo
class  tagMCTask(Structure):
@@ -25337,80 +23735,6 @@
m_NAtagMCTaskInfo=tagMCTaskInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTaskInfo.Head.Cmd,m_NAtagMCTaskInfo.Head.SubCmd))] = m_NAtagMCTaskInfo
#------------------------------------------------------
# B1 15 天道树信息 #tagMCTiandaoTreeInfo
class  tagMCTiandaoTreeInfo(Structure):
    Head = tagHead()
    Qiyun = 0    #(DWORD Qiyun)// 当前气运值
    AwardCount = 0    #(BYTE AwardCount)// 天道果领取记录值个数
    AwardStateList = list()    #(vector<DWORD> AwardStateList)// 天道果领取记录值列表,按奖励索引位二进制记录是否已领取,一个值可存31位,如值1存0~30,值2存31~61,...
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x15
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Qiyun,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.AwardStateList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x15
        self.Qiyun = 0
        self.AwardCount = 0
        self.AwardStateList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 4 * self.AwardCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.Qiyun)
        data = CommFunc.WriteBYTE(data, self.AwardCount)
        for i in range(self.AwardCount):
            data = CommFunc.WriteDWORD(data, self.AwardStateList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Qiyun:%d,
                                AwardCount:%d,
                                AwardStateList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Qiyun,
                                self.AwardCount,
                                "..."
                                )
        return DumpString
m_NAtagMCTiandaoTreeInfo=tagMCTiandaoTreeInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTiandaoTreeInfo.Head.Cmd,m_NAtagMCTiandaoTreeInfo.Head.SubCmd))] = m_NAtagMCTiandaoTreeInfo
#------------------------------------------------------
@@ -25811,121 +24135,6 @@
m_NAtagMCUseMoneyTotalInfo=tagMCUseMoneyTotalInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCUseMoneyTotalInfo.Head.Cmd,m_NAtagMCUseMoneyTotalInfo.Head.SubCmd))] = m_NAtagMCUseMoneyTotalInfo
#------------------------------------------------------
# B1 14 仙宫信息 #tagMCXiangongInfo
class  tagMCXiangong(Structure):
    _pack_ = 1
    _fields_ = [
                  ("XiangongID", c_ushort),    # 仙宫ID
                  ("LikeStateToday", c_ubyte),    # 今日是否已点赞
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.XiangongID = 0
        self.LikeStateToday = 0
        return
    def GetLength(self):
        return sizeof(tagMCXiangong)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 14 仙宫信息 //tagMCXiangongInfo:
                                XiangongID:%d,
                                LikeStateToday:%d
                                '''\
                                %(
                                self.XiangongID,
                                self.LikeStateToday
                                )
        return DumpString
class  tagMCXiangongInfo(Structure):
    Head = tagHead()
    LikeStateToday = 0    #(BYTE LikeStateToday)// 今日是否已点赞,指仙宫的外层点赞,非某个指定仙宫
    XiangongCount = 0    #(BYTE XiangongCount)
    XiangongList = list()    #(vector<tagMCXiangong> XiangongList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x14
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.LikeStateToday,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.XiangongCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.XiangongCount):
            temXiangongList = tagMCXiangong()
            _pos = temXiangongList.ReadData(_lpData, _pos)
            self.XiangongList.append(temXiangongList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB1
        self.Head.SubCmd = 0x14
        self.LikeStateToday = 0
        self.XiangongCount = 0
        self.XiangongList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        for i in range(self.XiangongCount):
            length += self.XiangongList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.LikeStateToday)
        data = CommFunc.WriteBYTE(data, self.XiangongCount)
        for i in range(self.XiangongCount):
            data = CommFunc.WriteString(data, self.XiangongList[i].GetLength(), self.XiangongList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                LikeStateToday:%d,
                                XiangongCount:%d,
                                XiangongList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.LikeStateToday,
                                self.XiangongCount,
                                "..."
                                )
        return DumpString
m_NAtagMCXiangongInfo=tagMCXiangongInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXiangongInfo.Head.Cmd,m_NAtagMCXiangongInfo.Head.SubCmd))] = m_NAtagMCXiangongInfo
#------------------------------------------------------
@@ -26407,904 +24616,6 @@
#------------------------------------------------------
# B3 24 喜糖列表 #tagGCCandyList
class  tagGCCandyInfo(Structure):
    PlayerIDA = 0    #(DWORD PlayerIDA)// 玩家ID - 请求方
    NameALen = 0    #(BYTE NameALen)
    PlayerNameA = ""    #(String PlayerNameA)
    PlayerIDB = 0    #(DWORD PlayerIDB)// 玩家ID - 接受方
    NameBLen = 0    #(BYTE NameBLen)
    PlayerNameB = ""    #(String PlayerNameB)
    BridePriceID = 0    #(BYTE BridePriceID)// 聘礼ID
    MarryTime = 0    #(DWORD MarryTime)// 成亲时间戳,秒
    EndTime = 0    #(DWORD EndTime)// 结束时间戳,秒
    Prosperity = 0    #(DWORD Prosperity)// 当前繁荣度
    FireworksTotalBuyCount = 0    #(BYTE FireworksTotalBuyCount)// 烟花总已购买次数
    FireworksPlayerBuyCount = 0    #(BYTE FireworksPlayerBuyCount)// 烟花玩家已购买次数
    PlayerFreeEatCandyCount = 0    #(BYTE PlayerFreeEatCandyCount)// 玩家已免费吃该喜糖总次数,包含免费次数、烟花赠送次数
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen)
        self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen)
        self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EndTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Prosperity,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FireworksTotalBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FireworksPlayerBuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerFreeEatCandyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerIDA = 0
        self.NameALen = 0
        self.PlayerNameA = ""
        self.PlayerIDB = 0
        self.NameBLen = 0
        self.PlayerNameB = ""
        self.BridePriceID = 0
        self.MarryTime = 0
        self.EndTime = 0
        self.Prosperity = 0
        self.FireworksTotalBuyCount = 0
        self.FireworksPlayerBuyCount = 0
        self.PlayerFreeEatCandyCount = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += len(self.PlayerNameA)
        length += 4
        length += 1
        length += len(self.PlayerNameB)
        length += 1
        length += 4
        length += 4
        length += 4
        length += 1
        length += 1
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerIDA)
        data = CommFunc.WriteBYTE(data, self.NameALen)
        data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA)
        data = CommFunc.WriteDWORD(data, self.PlayerIDB)
        data = CommFunc.WriteBYTE(data, self.NameBLen)
        data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB)
        data = CommFunc.WriteBYTE(data, self.BridePriceID)
        data = CommFunc.WriteDWORD(data, self.MarryTime)
        data = CommFunc.WriteDWORD(data, self.EndTime)
        data = CommFunc.WriteDWORD(data, self.Prosperity)
        data = CommFunc.WriteBYTE(data, self.FireworksTotalBuyCount)
        data = CommFunc.WriteBYTE(data, self.FireworksPlayerBuyCount)
        data = CommFunc.WriteBYTE(data, self.PlayerFreeEatCandyCount)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerIDA:%d,
                                NameALen:%d,
                                PlayerNameA:%s,
                                PlayerIDB:%d,
                                NameBLen:%d,
                                PlayerNameB:%s,
                                BridePriceID:%d,
                                MarryTime:%d,
                                EndTime:%d,
                                Prosperity:%d,
                                FireworksTotalBuyCount:%d,
                                FireworksPlayerBuyCount:%d,
                                PlayerFreeEatCandyCount:%d
                                '''\
                                %(
                                self.PlayerIDA,
                                self.NameALen,
                                self.PlayerNameA,
                                self.PlayerIDB,
                                self.NameBLen,
                                self.PlayerNameB,
                                self.BridePriceID,
                                self.MarryTime,
                                self.EndTime,
                                self.Prosperity,
                                self.FireworksTotalBuyCount,
                                self.FireworksPlayerBuyCount,
                                self.PlayerFreeEatCandyCount
                                )
        return DumpString
class  tagGCCandyList(Structure):
    Head = tagHead()
    CandyCount = 0    #(WORD CandyCount)
    CandyInfoList = list()    #(vector<tagGCCandyInfo> CandyInfoList)// 可吃喜糖列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x24
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.CandyCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.CandyCount):
            temCandyInfoList = tagGCCandyInfo()
            _pos = temCandyInfoList.ReadData(_lpData, _pos)
            self.CandyInfoList.append(temCandyInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x24
        self.CandyCount = 0
        self.CandyInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.CandyCount):
            length += self.CandyInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.CandyCount)
        for i in range(self.CandyCount):
            data = CommFunc.WriteString(data, self.CandyInfoList[i].GetLength(), self.CandyInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                CandyCount:%d,
                                CandyInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.CandyCount,
                                "..."
                                )
        return DumpString
m_NAtagGCCandyList=tagGCCandyList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCandyList.Head.Cmd,m_NAtagGCCandyList.Head.SubCmd))] = m_NAtagGCCandyList
#------------------------------------------------------
# B3 19 魅力贡献榜 #tagGCCharmOfferBillboardDataList
class  tagGCCharmOfferBillboardData(Structure):
    OrderIndex = 0    #(DWORD OrderIndex)//名次索引,0代表第一名
    PlayerID = 0    #(DWORD PlayerID)// 玩家ID - 贡献者
    NameLen = 0    #(BYTE NameLen)
    PlayerName = ""    #(String PlayerName)
    CharmValue = 0    #(DWORD CharmValue)//贡献魅力值
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.OrderIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.CharmValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.OrderIndex = 0
        self.PlayerID = 0
        self.NameLen = 0
        self.PlayerName = ""
        self.CharmValue = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 1
        length += len(self.PlayerName)
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.OrderIndex)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
        data = CommFunc.WriteDWORD(data, self.CharmValue)
        return data
    def OutputString(self):
        DumpString = '''
                                OrderIndex:%d,
                                PlayerID:%d,
                                NameLen:%d,
                                PlayerName:%s,
                                CharmValue:%d
                                '''\
                                %(
                                self.OrderIndex,
                                self.PlayerID,
                                self.NameLen,
                                self.PlayerName,
                                self.CharmValue
                                )
        return DumpString
class  tagGCCharmOfferBillboardDataList(Structure):
    Head = tagHead()
    PlayerID = 0    #(DWORD PlayerID)// 魅力玩家ID
    QueryType = 0    #(BYTE QueryType)// 查看类型: 1-总榜,2-周榜,3-日榜
    DataCount = 0    #(BYTE DataCount)
    OfferBillboardDataList = list()    #(vector<tagGCCharmOfferBillboardData> OfferBillboardDataList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x19
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.QueryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.DataCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DataCount):
            temOfferBillboardDataList = tagGCCharmOfferBillboardData()
            _pos = temOfferBillboardDataList.ReadData(_lpData, _pos)
            self.OfferBillboardDataList.append(temOfferBillboardDataList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x19
        self.PlayerID = 0
        self.QueryType = 0
        self.DataCount = 0
        self.OfferBillboardDataList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 1
        for i in range(self.DataCount):
            length += self.OfferBillboardDataList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.QueryType)
        data = CommFunc.WriteBYTE(data, self.DataCount)
        for i in range(self.DataCount):
            data = CommFunc.WriteString(data, self.OfferBillboardDataList[i].GetLength(), self.OfferBillboardDataList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                PlayerID:%d,
                                QueryType:%d,
                                DataCount:%d,
                                OfferBillboardDataList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.PlayerID,
                                self.QueryType,
                                self.DataCount,
                                "..."
                                )
        return DumpString
m_NAtagGCCharmOfferBillboardDataList=tagGCCharmOfferBillboardDataList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCharmOfferBillboardDataList.Head.Cmd,m_NAtagGCCharmOfferBillboardDataList.Head.SubCmd))] = m_NAtagGCCharmOfferBillboardDataList
#------------------------------------------------------
# B3 26 伴侣信息 #tagGCCoupleInfo
class  tagGCCoupleInfo(Structure):
    Head = tagHead()
    CoupleID = 0    #(DWORD CoupleID)// 伴侣玩家ID,一定是好友,社交信息从好友系统中获取
    NameLen = 0    #(BYTE NameLen)
    CoupleName = ""    #(String CoupleName)
    NewMarryTime = 0    #(DWORD NewMarryTime)// 新婚时间戳, 秒,计算结婚天数按该时间计算
    MarryTime = 0    #(DWORD MarryTime)// 最近一次提亲成功时间戳, 秒,计算可离婚时间按该时间计算
    BridePriceState = 0    #(DWORD BridePriceState)// 聘礼状态,按位存储已购买次数,如205代表ID1买了5次,ID2买了0次,ID3买了2次,最高9次
    BreakRequestID = 0    #(DWORD BreakRequestID)// 当前请求中的和离时间戳 - 请求方ID,0代表没人发起请求
    BreakRequestTime = 0    #(DWORD BreakRequestTime)// 当前请求中的和离时间戳, 秒,用于计算和离回应有效期
    PlayerBreakRequestTime = 0    #(DWORD PlayerBreakRequestTime)// 玩家最近一次和离请求时间戳, 秒,用于计算自身的请求和离CD
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x26
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.CoupleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CoupleName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.NewMarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MarryTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BridePriceState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BreakRequestID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerBreakRequestTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x26
        self.CoupleID = 0
        self.NameLen = 0
        self.CoupleName = ""
        self.NewMarryTime = 0
        self.MarryTime = 0
        self.BridePriceState = 0
        self.BreakRequestID = 0
        self.BreakRequestTime = 0
        self.PlayerBreakRequestTime = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += len(self.CoupleName)
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.CoupleID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.CoupleName)
        data = CommFunc.WriteDWORD(data, self.NewMarryTime)
        data = CommFunc.WriteDWORD(data, self.MarryTime)
        data = CommFunc.WriteDWORD(data, self.BridePriceState)
        data = CommFunc.WriteDWORD(data, self.BreakRequestID)
        data = CommFunc.WriteDWORD(data, self.BreakRequestTime)
        data = CommFunc.WriteDWORD(data, self.PlayerBreakRequestTime)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                CoupleID:%d,
                                NameLen:%d,
                                CoupleName:%s,
                                NewMarryTime:%d,
                                MarryTime:%d,
                                BridePriceState:%d,
                                BreakRequestID:%d,
                                BreakRequestTime:%d,
                                PlayerBreakRequestTime:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.CoupleID,
                                self.NameLen,
                                self.CoupleName,
                                self.NewMarryTime,
                                self.MarryTime,
                                self.BridePriceState,
                                self.BreakRequestID,
                                self.BreakRequestTime,
                                self.PlayerBreakRequestTime
                                )
        return DumpString
m_NAtagGCCoupleInfo=tagGCCoupleInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCoupleInfo.Head.Cmd,m_NAtagGCCoupleInfo.Head.SubCmd))] = m_NAtagGCCoupleInfo
#------------------------------------------------------
# B3 30 情缘相关信息 #tagMCLoveInfo
class  tagMCLoveInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("EatCandyToday", c_int),    # 今日已吃喜糖次数,包含免费及付费的所有次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x30
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x30
        self.EatCandyToday = 0
        return
    def GetLength(self):
        return sizeof(tagMCLoveInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 30 情缘相关信息 //tagMCLoveInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                EatCandyToday:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.EatCandyToday
                                )
        return DumpString
m_NAtagMCLoveInfo=tagMCLoveInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveInfo.Cmd,m_NAtagMCLoveInfo.SubCmd))] = m_NAtagMCLoveInfo
#------------------------------------------------------
# B3 27 情戒信息 #tagMCLoveRingInfo
class  tagMCLoveRingInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ClassLV", c_ubyte),    # 阶
                  ("StarLV", c_ubyte),    # 星
                  ("EatCount", c_int),    # 本星已淬炼道具数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x27
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x27
        self.ClassLV = 0
        self.StarLV = 0
        self.EatCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCLoveRingInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 27 情戒信息 //tagMCLoveRingInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ClassLV:%d,
                                StarLV:%d,
                                EatCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ClassLV,
                                self.StarLV,
                                self.EatCount
                                )
        return DumpString
m_NAtagMCLoveRingInfo=tagMCLoveRingInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingInfo.Cmd,m_NAtagMCLoveRingInfo.SubCmd))] = m_NAtagMCLoveRingInfo
#------------------------------------------------------
# B3 29 情戒解锁成功 #tagMCLoveRingUnlockOK
class  tagMCLoveRingUnlockOK(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x29
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x29
        return
    def GetLength(self):
        return sizeof(tagMCLoveRingUnlockOK)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 29 情戒解锁成功 //tagMCLoveRingUnlockOK:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagMCLoveRingUnlockOK=tagMCLoveRingUnlockOK()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveRingUnlockOK.Cmd,m_NAtagMCLoveRingUnlockOK.SubCmd))] = m_NAtagMCLoveRingUnlockOK
#------------------------------------------------------
# B3 22 收到提亲信息 #tagGCMarryReqInfo
class  tagGCMarryReqInfo(Structure):
    Head = tagHead()
    PlayerID = 0    #(DWORD PlayerID)// 同一个玩家ID多次提亲时可能同步多次,前端覆盖数据即可
    NameLen = 0    #(BYTE NameLen)
    PlayerName = ""    #(String PlayerName)
    BridePriceID = 0    #(BYTE BridePriceID)// 聘礼ID
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x22
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.BridePriceID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x22
        self.PlayerID = 0
        self.NameLen = 0
        self.PlayerName = ""
        self.BridePriceID = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += len(self.PlayerName)
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.BridePriceID)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                PlayerID:%d,
                                NameLen:%d,
                                PlayerName:%s,
                                BridePriceID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.PlayerID,
                                self.NameLen,
                                self.PlayerName,
                                self.BridePriceID
                                )
        return DumpString
m_NAtagGCMarryReqInfo=tagGCMarryReqInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqInfo.Head.Cmd,m_NAtagGCMarryReqInfo.Head.SubCmd))] = m_NAtagGCMarryReqInfo
#------------------------------------------------------
# B3 21 提亲发送成功 #tagGCMarryReqOK
class  tagGCMarryReqOK(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x21
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x21
        return
    def GetLength(self):
        return sizeof(tagGCMarryReqOK)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 21 提亲发送成功 //tagGCMarryReqOK:
                                Cmd:%s,
                                SubCmd:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd
                                )
        return DumpString
m_NAtagGCMarryReqOK=tagGCMarryReqOK()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryReqOK.Cmd,m_NAtagGCMarryReqOK.SubCmd))] = m_NAtagGCMarryReqOK
#------------------------------------------------------
# B3 23 提亲回应结果 #tagGCMarryResponseRet
class  tagGCMarryResponseRet(Structure):
    Head = tagHead()
    PlayerIDA = 0    #(DWORD PlayerIDA)// 玩家ID - 请求方
    NameALen = 0    #(BYTE NameALen)
    PlayerNameA = ""    #(String PlayerNameA)
    PlayerIDB = 0    #(DWORD PlayerIDB)// 玩家ID - 接受方
    NameBLen = 0    #(BYTE NameBLen)
    PlayerNameB = ""    #(String PlayerNameB)
    IsOK = 0    #(BYTE IsOK)// 是否同意,0-否,1-是;  如果同意则双方都会收到该包,根据玩家ID判断自己是请求或接受方,显示不同的同意结果界面;不同意只有请求方会收到
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x23
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameALen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerNameA,_pos = CommFunc.ReadString(_lpData, _pos,self.NameALen)
        self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameBLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerNameB,_pos = CommFunc.ReadString(_lpData, _pos,self.NameBLen)
        self.IsOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x23
        self.PlayerIDA = 0
        self.NameALen = 0
        self.PlayerNameA = ""
        self.PlayerIDB = 0
        self.NameBLen = 0
        self.PlayerNameB = ""
        self.IsOK = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += len(self.PlayerNameA)
        length += 4
        length += 1
        length += len(self.PlayerNameB)
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.PlayerIDA)
        data = CommFunc.WriteBYTE(data, self.NameALen)
        data = CommFunc.WriteString(data, self.NameALen, self.PlayerNameA)
        data = CommFunc.WriteDWORD(data, self.PlayerIDB)
        data = CommFunc.WriteBYTE(data, self.NameBLen)
        data = CommFunc.WriteString(data, self.NameBLen, self.PlayerNameB)
        data = CommFunc.WriteBYTE(data, self.IsOK)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                PlayerIDA:%d,
                                NameALen:%d,
                                PlayerNameA:%s,
                                PlayerIDB:%d,
                                NameBLen:%d,
                                PlayerNameB:%s,
                                IsOK:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.PlayerIDA,
                                self.NameALen,
                                self.PlayerNameA,
                                self.PlayerIDB,
                                self.NameBLen,
                                self.PlayerNameB,
                                self.IsOK
                                )
        return DumpString
m_NAtagGCMarryResponseRet=tagGCMarryResponseRet()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMarryResponseRet.Head.Cmd,m_NAtagGCMarryResponseRet.Head.SubCmd))] = m_NAtagGCMarryResponseRet
#------------------------------------------------------
# B3 25 玩家魅力值信息 #tagGCPlayerCharmValueInfo
class  tagGCPlayerCharmValueInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("CharmValueTotal", c_int),    #当前魅力值 - 总
                  ("CharmValueWeek", c_int),    #当前魅力值 - 周
                  ("CharmValueDay", c_int),    #当前魅力值 - 日
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB3
        self.SubCmd = 0x25
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB3
        self.SubCmd = 0x25
        self.CharmValueTotal = 0
        self.CharmValueWeek = 0
        self.CharmValueDay = 0
        return
    def GetLength(self):
        return sizeof(tagGCPlayerCharmValueInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B3 25 玩家魅力值信息 //tagGCPlayerCharmValueInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                CharmValueTotal:%d,
                                CharmValueWeek:%d,
                                CharmValueDay:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.CharmValueTotal,
                                self.CharmValueWeek,
                                self.CharmValueDay
                                )
        return DumpString
m_NAtagGCPlayerCharmValueInfo=tagGCPlayerCharmValueInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerCharmValueInfo.Cmd,m_NAtagGCPlayerCharmValueInfo.SubCmd))] = m_NAtagGCPlayerCharmValueInfo
#------------------------------------------------------
# B3 15 相关玩家在线状态变更同步 #tagGCRelatedPlayerOnlineState
class  tagGCRelatedPlayerOnlineState(Structure):
@@ -27362,148 +24673,6 @@
m_NAtagGCRelatedPlayerOnlineState=tagGCRelatedPlayerOnlineState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRelatedPlayerOnlineState.Cmd,m_NAtagGCRelatedPlayerOnlineState.SubCmd))] = m_NAtagGCRelatedPlayerOnlineState
#------------------------------------------------------
# B3 20 送礼物成功通知 #tagGCSendGiftsOKList
class  tagGCSendGiftsOK(Structure):
    NameLen = 0    #(BYTE NameLen)
    Name = ""    #(String Name)// 赠送方玩家名
    PlayerID = 0    #(DWORD PlayerID)// 赠送方玩家ID
    GiftNum = 0    #(WORD GiftNum)// 赠送礼物编号
    GiftCount = 0    #(DWORD GiftCount)// 赠送礼物数量
    SendTime = 0    #(DWORD SendTime)// 赠送时间戳
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GiftNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.GiftCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SendTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.NameLen = 0
        self.Name = ""
        self.PlayerID = 0
        self.GiftNum = 0
        self.GiftCount = 0
        self.SendTime = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        length += len(self.Name)
        length += 4
        length += 2
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteWORD(data, self.GiftNum)
        data = CommFunc.WriteDWORD(data, self.GiftCount)
        data = CommFunc.WriteDWORD(data, self.SendTime)
        return data
    def OutputString(self):
        DumpString = '''
                                NameLen:%d,
                                Name:%s,
                                PlayerID:%d,
                                GiftNum:%d,
                                GiftCount:%d,
                                SendTime:%d
                                '''\
                                %(
                                self.NameLen,
                                self.Name,
                                self.PlayerID,
                                self.GiftNum,
                                self.GiftCount,
                                self.SendTime
                                )
        return DumpString
class  tagGCSendGiftsOKList(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)
    SendGiftsOKList = list()    #(vector<tagGCSendGiftsOK> SendGiftsOKList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x20
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temSendGiftsOKList = tagGCSendGiftsOK()
            _pos = temSendGiftsOKList.ReadData(_lpData, _pos)
            self.SendGiftsOKList.append(temSendGiftsOKList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB3
        self.Head.SubCmd = 0x20
        self.Count = 0
        self.SendGiftsOKList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.SendGiftsOKList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.SendGiftsOKList[i].GetLength(), self.SendGiftsOKList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                SendGiftsOKList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagGCSendGiftsOKList=tagGCSendGiftsOKList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSendGiftsOKList.Head.Cmd,m_NAtagGCSendGiftsOKList.Head.SubCmd))] = m_NAtagGCSendGiftsOKList
#------------------------------------------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Charm.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/ClearFuncSysPrivilege.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FaQi.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LianTi.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LoveRing.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Xiangong.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -500,20 +500,6 @@
                        ("list", "AwardItemList", 0),
                        ),
                "LianTi":(
                        ("BYTE", "LianTiLV", 1),
                        ("list", "FixedAttrType", 0),
                        ("list", "FixedAttrValue", 0),
                        ("list", "PlusAttrType", 0),
                        ("list", "PlusAttrRate", 0),
                        ("list", "EatItemAttrType", 0),
                        ("list", "EatItemAttrValue", 0),
                        ("WORD", "NeedEatCount", 0),
                        ("WORD", "EatPerCount", 0),
                        ("list", "LVUpCostItemInfo", 0),
                        ("DWORD", "ActivateSkillID", 0),
                        ),
                "FuncConfig":(
                        ("char", "Key", 1),
                        ("char", "Numerical1", 0),
@@ -672,24 +658,6 @@
                        ("dict", "LVLegendAttrLibNumInfo", 0),
                        ),
                "Dogz":(
                        ("BYTE", "DogzID", 1),
                        ("list", "BaseAttrTypes", 0),
                        ("list", "BaseAttrValues", 0),
                        ("list", "HelpBattleSkills", 0),
                        ("DWORD", "FightPowerEx", 0),
                        ("list", "EquipPlaceColorList", 0),
                        ("list", "HelpBattleNotify", 0),
                        ),
                "DogzEquipPlus":(
                        ("BYTE", "EquipPlace", 1),
                        ("BYTE", "PlusLV", 1),
                        ("list", "PlusAttrTypes", 0),
                        ("list", "PlusAttrValues", 0),
                        ("DWORD", "PlusLVUPTotalExp", 0),
                        ),
                "EquipWash":(
                        ("BYTE", "WashType", 1),
                        ("BYTE", "WashLV", 1),
@@ -726,16 +694,6 @@
                        ("WORD", "LV", 1),
                        ("DWORD", "UpNeedExp", 0),
                        ("dict", "Attr", 0),
                        ),
                "FaQiLVUp":(
                        ("BYTE", "FaQiLV", 1),
                        ("WORD", "NeedEatCount", 0),
                        ("list", "LVAttrType", 0),
                        ("list", "LVAttrValue", 0),
                        ("list", "UpItemAttrType", 0),
                        ("list", "UpItemAttrValue", 0),
                        ("DWORD", "UpEatItemPerCount", 0),
                        ),
                "HorseClass":(
@@ -1687,38 +1645,6 @@
                        ("BYTE", "QualityLV", 1),
                        ),
                "LoveGift":(
                        ("BYTE", "GiftNum", 1),
                        ("DWORD", "GiftItemID", 0),
                        ("BYTE", "AllowBatch", 0),
                        ),
                "Marry":(
                        ("BYTE", "BridePriceID", 1),
                        ("list", "CostMoneyInfo", 0),
                        ),
                "LoveRing":(
                        ("BYTE", "RingClassLV", 1),
                        ("BYTE", "RingStarLV", 1),
                        ("list", "CoupleAttrType", 0),
                        ("list", "CoupleAttrValue", 0),
                        ("list", "StarAttrType", 0),
                        ("list", "StarAttrValue", 0),
                        ("list", "UpItemAttrType", 0),
                        ("list", "UpItemAttrValue", 0),
                        ("DWORD", "NeedEatCount", 0),
                        ("DWORD", "UpEatItemPerCount", 0),
                        ),
                "LoveCharm":(
                        ("BYTE", "CharmLV", 1),
                        ("DWORD", "UpNeedCharm", 0),
                        ("list", "LVAttrType", 0),
                        ("list", "LVAttrValue", 0),
                        ("list", "LVAwardItemInfo", 0),
                        ),
                "HorsePetSkin":(
                        ("BYTE", "Type", 1),
                        ("DWORD", "ID", 1),
@@ -1726,12 +1652,6 @@
                        ("DWORD", "NeedExp", 0),
                        ("dict", "AttrInfo", 0),
                        ("BYTE", "SkinIndex", 0),
                        ),
                "FuncSysPrivilege":(
                        ("BYTE", "FuncSysID", 1),
                        ("BYTE", "DayNum", 0),
                        ("list", "DayAwardItemInfo", 0),
                        ),
                "HistoryRechargeAward":(
@@ -1752,16 +1672,6 @@
                        ("list", "FreeRewardItemList", 0),
                        ("list", "ZLRewardItemList", 0),
                        ("list", "ZLRewardItemListH", 0),
                        ),
                "Xiangong":(
                        ("WORD", "XiangongID", 1),
                        ),
                "TiandaoTree":(
                        ("WORD", "AwardIndex", 1),
                        ("DWORD", "NeedQiyun", 0),
                        ("list", "AwardItemList", 0),
                        ),
                "TreeLV":(
@@ -2468,25 +2378,6 @@
    def GetNeedValueList(self): return self.attrTuple[3] # 所需值列表 list
    def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表 list
# 境界炼体属性表
class IPY_LianTi():
    def __init__(self):
        self.attrTuple = None
        return
    def GetLianTiLV(self): return self.attrTuple[0] # 炼体等级 BYTE
    def GetFixedAttrType(self): return self.attrTuple[1] # 固定属性类型(非累积) list
    def GetFixedAttrValue(self): return self.attrTuple[2] # 固定属性值(非累积) list
    def GetPlusAttrType(self): return self.attrTuple[3] # 增强属性类型(非累积) list
    def GetPlusAttrRate(self): return self.attrTuple[4] # 增强属性万分率(非累积) list
    def GetEatItemAttrType(self): return self.attrTuple[5] # 每x个培养丹增加属性类型,x=UpEatItemPerCount list
    def GetEatItemAttrValue(self): return self.attrTuple[6] # 每x个培养丹增加属性值,x=UpEatItemPerCount list
    def GetNeedEatCount(self): return self.attrTuple[7] # 升级所需个数(非累计) WORD
    def GetEatPerCount(self): return self.attrTuple[8] # 每次培养消耗x个 WORD
    def GetLVUpCostItemInfo(self): return self.attrTuple[9] # 突破等级道具ID|个数 list
    def GetActivateSkillID(self): return self.attrTuple[10] # 激活技能ID DWORD
# 功能配置表格
class IPY_FuncConfig():
    
@@ -2740,34 +2631,6 @@
    def GetItemQuality(self): return self.attrTuple[4] # 物品星级 BYTE
    def GetLVLegendAttrLibNumInfo(self): return self.attrTuple[5] # 属性ID等级段对应数值库编号 {属性ID:{等级:库编号, ...}} dict
# 神兽表
class IPY_Dogz():
    def __init__(self):
        self.attrTuple = None
        return
    def GetDogzID(self): return self.attrTuple[0] # 神兽ID BYTE
    def GetBaseAttrTypes(self): return self.attrTuple[1] # 基础属性类型列表 list
    def GetBaseAttrValues(self): return self.attrTuple[2] # 基础属性值列表 list
    def GetHelpBattleSkills(self): return self.attrTuple[3] # 助战技能ID列表 list
    def GetFightPowerEx(self): return self.attrTuple[4] # 助战附加战力 DWORD
    def GetEquipPlaceColorList(self): return self.attrTuple[5] # 穿戴装备颜色限制 list
    def GetHelpBattleNotify(self): return self.attrTuple[6] # 助战广播 ["广播key",[参数1,参数2,...],广播CD分钟] list
# 神兽强化表
class IPY_DogzEquipPlus():
    def __init__(self):
        self.attrTuple = None
        return
    def GetEquipPlace(self): return self.attrTuple[0] # 装备位 BYTE
    def GetPlusLV(self): return self.attrTuple[1] # 强化等级 BYTE
    def GetPlusAttrTypes(self): return self.attrTuple[2] # 强化属性类型列表 list
    def GetPlusAttrValues(self): return self.attrTuple[3] # 强化属性值列表 list
    def GetPlusLVUPTotalExp(self): return self.attrTuple[4] # 升级所需累计熟练度总值 DWORD
# 洗练表
class IPY_EquipWash():
    
@@ -2820,21 +2683,6 @@
    def GetLV(self): return self.attrTuple[0] # 等级 WORD
    def GetUpNeedExp(self): return self.attrTuple[1] # 升级所需经验数 DWORD
    def GetAttr(self): return self.attrTuple[2] # 属性加成 dict
# 法器升级表
class IPY_FaQiLVUp():
    def __init__(self):
        self.attrTuple = None
        return
    def GetFaQiLV(self): return self.attrTuple[0] # 法器等级 BYTE
    def GetNeedEatCount(self): return self.attrTuple[1] # 升级所需个数(非累计) WORD
    def GetLVAttrType(self): return self.attrTuple[2] # 每级额外属性类型(非累积) list
    def GetLVAttrValue(self): return self.attrTuple[3] # 每级额外属性值(非累积) list
    def GetUpItemAttrType(self): return self.attrTuple[4] # 每x个培养丹增加属性类型,x=UpEatItemPerCount list
    def GetUpItemAttrValue(self): return self.attrTuple[5] # 每x个培养丹增加属性值,x=UpEatItemPerCount list
    def GetUpEatItemPerCount(self): return self.attrTuple[6] # 每次培养消耗x个 DWORD
# 坐骑阶级表
class IPY_HorseClass():
@@ -4275,58 +4123,6 @@
    def GetPointID(self): return self.attrTuple[1] # 灵根ID DWORD
    def GetQualityLV(self): return self.attrTuple[2] # 品级 BYTE
# 情缘礼物表
class IPY_LoveGift():
    def __init__(self):
        self.attrTuple = None
        return
    def GetGiftNum(self): return self.attrTuple[0] # 聘礼ID BYTE
    def GetGiftItemID(self): return self.attrTuple[1] # 物品ID DWORD
    def GetAllowBatch(self): return self.attrTuple[2] # 是否允许批量赠送 BYTE
# 情缘提亲表
class IPY_Marry():
    def __init__(self):
        self.attrTuple = None
        return
    def GetBridePriceID(self): return self.attrTuple[0] # 聘礼ID BYTE
    def GetCostMoneyInfo(self): return self.attrTuple[1] # 消耗货币类型|数值 list
# 情缘情戒表
class IPY_LoveRing():
    def __init__(self):
        self.attrTuple = None
        return
    def GetRingClassLV(self): return self.attrTuple[0] # 情戒阶级 BYTE
    def GetRingStarLV(self): return self.attrTuple[1] # 情戒星级 BYTE
    def GetCoupleAttrType(self): return self.attrTuple[2] # 仙侣属性类型(非累积) list
    def GetCoupleAttrValue(self): return self.attrTuple[3] # 仙侣属性值(非累积) list
    def GetStarAttrType(self): return self.attrTuple[4] # 星级额外属性类型(非累积) list
    def GetStarAttrValue(self): return self.attrTuple[5] # 星级额外属性值(非累积) list
    def GetUpItemAttrType(self): return self.attrTuple[6] # 每x个培养丹增加属性类型,x=UpEatItemPerCount list
    def GetUpItemAttrValue(self): return self.attrTuple[7] # 每x个培养丹增加属性值,x=UpEatItemPerCount list
    def GetNeedEatCount(self): return self.attrTuple[8] # 升级所需个数(非累计) DWORD
    def GetUpEatItemPerCount(self): return self.attrTuple[9] # 每次培养消耗x个 DWORD
# 情缘魅力属性表
class IPY_LoveCharm():
    def __init__(self):
        self.attrTuple = None
        return
    def GetCharmLV(self): return self.attrTuple[0] # 魅力等级 BYTE
    def GetUpNeedCharm(self): return self.attrTuple[1] # 升下级所需总魅力 DWORD
    def GetLVAttrType(self): return self.attrTuple[2] # 属性类型 list
    def GetLVAttrValue(self): return self.attrTuple[3] # 总属性值 list
    def GetLVAwardItemInfo(self): return self.attrTuple[4] # 等级物品奖励[[物品ID,个数,是否拍品], ...] list
# 骑宠觉醒表
class IPY_HorsePetSkin():
    
@@ -4340,17 +4136,6 @@
    def GetNeedExp(self): return self.attrTuple[3] # 升级需要经验 DWORD
    def GetAttrInfo(self): return self.attrTuple[4] # 属性 dict
    def GetSkinIndex(self): return self.attrTuple[5] # 外观 BYTE
# 功能特权奖励表
class IPY_FuncSysPrivilege():
    def __init__(self):
        self.attrTuple = None
        return
    def GetFuncSysID(self): return self.attrTuple[0] # 功能系统ID BYTE
    def GetDayNum(self): return self.attrTuple[1] # 第X天 BYTE
    def GetDayAwardItemInfo(self): return self.attrTuple[2] #  奖励物品信息 [[物品ID,个数,是否拍品], ...] list
# 累计充值奖励表
class IPY_HistoryRechargeAward():
@@ -4386,26 +4171,6 @@
    def GetFreeRewardItemList(self): return self.attrTuple[3] # 免费奖励物品列表 [[物品ID,个数,是否拍品],...] list
    def GetZLRewardItemList(self): return self.attrTuple[4] # 战令奖励物品列表 [[物品ID,个数,是否拍品],...] list
    def GetZLRewardItemListH(self): return self.attrTuple[5] # 高级战令奖励物品列表 [[物品ID,个数,是否拍品],...] list
# 仙宫表
class IPY_Xiangong():
    def __init__(self):
        self.attrTuple = None
        return
    def GetXiangongID(self): return self.attrTuple[0] # 仙宫ID WORD
# 仙宫天道树
class IPY_TiandaoTree():
    def __init__(self):
        self.attrTuple = None
        return
    def GetAwardIndex(self): return self.attrTuple[0] # 奖励索引 WORD
    def GetNeedQiyun(self): return self.attrTuple[1] # 所需气运值 DWORD
    def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表 list
# 祝福树
class IPY_TreeLV():
@@ -4577,7 +4342,6 @@
        self.__LoadFileData("RealmXXZL", onlyCheck)
        self.__LoadFileData("Realm", onlyCheck)
        self.__LoadFileData("RealmLVUPTask", onlyCheck)
        self.__LoadFileData("LianTi", onlyCheck)
        self.__LoadFileData("FuncConfig", onlyCheck)
        self.__LoadFileData("FuncOpenLV", onlyCheck)
        self.__LoadFileData("ItemCompound", onlyCheck)
@@ -4597,12 +4361,9 @@
        self.__LoadFileData("EquipLegendAttrType", onlyCheck)
        self.__LoadFileData("EquipLegendAttrLib", onlyCheck)
        self.__LoadFileData("EquipLegendAttrValue", onlyCheck)
        self.__LoadFileData("Dogz", onlyCheck)
        self.__LoadFileData("DogzEquipPlus", onlyCheck)
        self.__LoadFileData("EquipWash", onlyCheck)
        self.__LoadFileData("AttrFruit", onlyCheck)
        self.__LoadFileData("EquipDecompose", onlyCheck)
        self.__LoadFileData("FaQiLVUp", onlyCheck)
        self.__LoadFileData("HorseClass", onlyCheck)
        self.__LoadFileData("HorseSkin", onlyCheck)
        self.__LoadFileData("Gubao", onlyCheck)
@@ -4701,17 +4462,10 @@
        self.__LoadFileData("ItemWashMax", onlyCheck)
        self.__LoadFileData("SkillElement", onlyCheck)
        self.__LoadFileData("LingGenEffect", onlyCheck)
        self.__LoadFileData("LoveGift", onlyCheck)
        self.__LoadFileData("Marry", onlyCheck)
        self.__LoadFileData("LoveRing", onlyCheck)
        self.__LoadFileData("LoveCharm", onlyCheck)
        self.__LoadFileData("HorsePetSkin", onlyCheck)
        self.__LoadFileData("FuncSysPrivilege", onlyCheck)
        self.__LoadFileData("HistoryRechargeAward", onlyCheck)
        self.__LoadFileData("CustomAward", onlyCheck)
        self.__LoadFileData("Zhanling", onlyCheck)
        self.__LoadFileData("Xiangong", onlyCheck)
        self.__LoadFileData("TiandaoTree", onlyCheck)
        self.__LoadFileData("TreeLV", onlyCheck)
        self.__LoadFileData("LLMJ", onlyCheck)
        self.__LoadFileData("GoldRushCamp", onlyCheck)
@@ -5202,13 +4956,6 @@
        self.CheckLoadData("RealmLVUPTask")
        return self.ipyRealmLVUPTaskCache[index]
    def GetLianTiCount(self):
        self.CheckLoadData("LianTi")
        return self.ipyLianTiLen
    def GetLianTiByIndex(self, index):
        self.CheckLoadData("LianTi")
        return self.ipyLianTiCache[index]
    def GetFuncConfigCount(self):
        self.CheckLoadData("FuncConfig")
        return self.ipyFuncConfigLen
@@ -5342,20 +5089,6 @@
        self.CheckLoadData("EquipLegendAttrValue")
        return self.ipyEquipLegendAttrValueCache[index]
    def GetDogzCount(self):
        self.CheckLoadData("Dogz")
        return self.ipyDogzLen
    def GetDogzByIndex(self, index):
        self.CheckLoadData("Dogz")
        return self.ipyDogzCache[index]
    def GetDogzEquipPlusCount(self):
        self.CheckLoadData("DogzEquipPlus")
        return self.ipyDogzEquipPlusLen
    def GetDogzEquipPlusByIndex(self, index):
        self.CheckLoadData("DogzEquipPlus")
        return self.ipyDogzEquipPlusCache[index]
    def GetEquipWashCount(self):
        self.CheckLoadData("EquipWash")
        return self.ipyEquipWashLen
@@ -5376,13 +5109,6 @@
    def GetEquipDecomposeByIndex(self, index):
        self.CheckLoadData("EquipDecompose")
        return self.ipyEquipDecomposeCache[index]
    def GetFaQiLVUpCount(self):
        self.CheckLoadData("FaQiLVUp")
        return self.ipyFaQiLVUpLen
    def GetFaQiLVUpByIndex(self, index):
        self.CheckLoadData("FaQiLVUp")
        return self.ipyFaQiLVUpCache[index]
    def GetHorseClassCount(self):
        self.CheckLoadData("HorseClass")
@@ -6070,47 +5796,12 @@
        self.CheckLoadData("LingGenEffect")
        return self.ipyLingGenEffectCache[index]
    def GetLoveGiftCount(self):
        self.CheckLoadData("LoveGift")
        return self.ipyLoveGiftLen
    def GetLoveGiftByIndex(self, index):
        self.CheckLoadData("LoveGift")
        return self.ipyLoveGiftCache[index]
    def GetMarryCount(self):
        self.CheckLoadData("Marry")
        return self.ipyMarryLen
    def GetMarryByIndex(self, index):
        self.CheckLoadData("Marry")
        return self.ipyMarryCache[index]
    def GetLoveRingCount(self):
        self.CheckLoadData("LoveRing")
        return self.ipyLoveRingLen
    def GetLoveRingByIndex(self, index):
        self.CheckLoadData("LoveRing")
        return self.ipyLoveRingCache[index]
    def GetLoveCharmCount(self):
        self.CheckLoadData("LoveCharm")
        return self.ipyLoveCharmLen
    def GetLoveCharmByIndex(self, index):
        self.CheckLoadData("LoveCharm")
        return self.ipyLoveCharmCache[index]
    def GetHorsePetSkinCount(self):
        self.CheckLoadData("HorsePetSkin")
        return self.ipyHorsePetSkinLen
    def GetHorsePetSkinByIndex(self, index):
        self.CheckLoadData("HorsePetSkin")
        return self.ipyHorsePetSkinCache[index]
    def GetFuncSysPrivilegeCount(self):
        self.CheckLoadData("FuncSysPrivilege")
        return self.ipyFuncSysPrivilegeLen
    def GetFuncSysPrivilegeByIndex(self, index):
        self.CheckLoadData("FuncSysPrivilege")
        return self.ipyFuncSysPrivilegeCache[index]
    def GetHistoryRechargeAwardCount(self):
        self.CheckLoadData("HistoryRechargeAward")
@@ -6132,20 +5823,6 @@
    def GetZhanlingByIndex(self, index):
        self.CheckLoadData("Zhanling")
        return self.ipyZhanlingCache[index]
    def GetXiangongCount(self):
        self.CheckLoadData("Xiangong")
        return self.ipyXiangongLen
    def GetXiangongByIndex(self, index):
        self.CheckLoadData("Xiangong")
        return self.ipyXiangongCache[index]
    def GetTiandaoTreeCount(self):
        self.CheckLoadData("TiandaoTree")
        return self.ipyTiandaoTreeLen
    def GetTiandaoTreeByIndex(self, index):
        self.CheckLoadData("TiandaoTree")
        return self.ipyTiandaoTreeCache[index]
    def GetTreeLVCount(self):
        self.CheckLoadData("TreeLV")
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -585,7 +585,6 @@
    itemEffIdCallFuncDic = {
                            ChConfig.Def_Effect_ItemAddLV:"Item_AddLV", #升级道具
                            ChConfig.Def_Effect_PrizeCoin:"Item_PrizeCoin", # 奖励充值点券
                            ChConfig.Def_Effect_TiandaoQiyun:"Item_TiandaoQiyun", # 天道树气运
                            ChConfig.Def_Effect_TrainRealmLV:"Item_TrainRealmLV", # 境界培养卡
                            ChConfig.Def_Effect_AddFBCnt:"Item_AddFBCnt", # 增加副本可进入次数
                            ChConfig.Def_Effect_EmojiPack:"Item_EmojiPack",
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -28,7 +28,6 @@
import PlayerActivity
import ChPyNetSendPack
import NetPackCommon
import PlayerXiangong
import IpyGameDataPY
import PlayerGubao
import PyGameData
@@ -924,14 +923,6 @@
            tagItem.Clear()
            return True
        
        #气运
        if itemEff.GetEffectID() == ChConfig.Def_Effect_TiandaoQiyun:
            isAutoUse = itemEff.GetEffectValue(1)
            if isAutoUse:
                addQiyun = itemEff.GetEffectValue(0) * tagItemCount
                PlayerXiangong.AddTiandaoQiyun(curPlayer, addQiyun, {"ItemID":itemID, "ItemCount":tagItemCount, "isAutoUse":1})
                tagItem.Clear()
                return True
        #增加副本次数
        if itemEff.GetEffectID() == ChConfig.Def_Effect_AddFBCnt:
            isAutoUse = itemEff.GetEffectValue(1)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -913,10 +913,6 @@
        initCount = IpyGameDataPY.GetFuncCfg("InitDepotCellCount", 1)
    elif packType == ShareDefine.rptTreasure:
        initCount = IpyGameDataPY.GetFuncCfg("TreasureSet", 3)
    elif packType == ShareDefine.rptDogzItem:
        initCount = IpyGameDataPY.GetFuncCfg("DogzPack", 1)
    elif packType == ShareDefine.rptDogzEquip:
        initCount = IpyGameDataPY.GetFuncCfg("DogzPack", 2)
        
    if not initCount:
        bagInitCntDict = IpyGameDataPY.GetFuncEvalCfg("InitBagCellCount", 2, {})
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_TiandaoQiyun.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -56,29 +56,20 @@
import PlayerActFamilyCTGAssist
import PlayerActManyDayRecharge
import PlayerActSingleRecharge
import PlayerFuncSysPrivilege
import OpenServerActivity
import ChNetSendPack
import PlayerArena
import PyGameData
import PlayerCoin
import PlayerCharm
import PlayerDogz
import PlayerFB
import PlayerFaQi
import SkillShell
import PlayerGubao
import PlayerCustomAward
import PlayerZhanling
import PlayerTree
import PlayerLLMJ
import PlayerLianTi
import PlayerTask
import PlayerYinji
import PlayerLove
import GameObj
import PlayerChangeJob
import PlayerXiangong
import PlayerGoldRush
import PlayerActLoginNew
import PlayerActBuyCountGift
@@ -148,194 +139,6 @@
    if FBLogic.PlayerLoginInFBCheck(curPlayer, tick):
        #玩家是第一次登录, 并且玩家需要踢回原来地图
        return
    return
#// A1 20 货币兑换 #tagCMMoneyExchange
#
#struct    tagCMMoneyExchange
#{
#    tagHead         Head;
#    BYTE        SrcMoneyType;    // 源货币类型
#    BYTE        TagMoneyType;    // 目标货币类型
#    DWORD        ExchangeValue;    // 兑换数量(消耗源货币的数量)
#};
def OnMoneyExchange(index, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    srcMoneyType = clientData.SrcMoneyType
    tagMoneyType = clientData.TagMoneyType
    exchangeValue = clientData.ExchangeValue
    exchangeMoneyInfo = IpyGameDataPY.GetFuncEvalCfg("EqualValueMoney", 1, {})
    if str(srcMoneyType) not in exchangeMoneyInfo:
        return
    exchangeInfo = exchangeMoneyInfo[str(srcMoneyType)]
    if tagMoneyType != exchangeInfo[0]:
        return
    multiple = exchangeInfo[1]
    if exchangeValue <= 0:
        return
    if not PlayerControl.PayMoney(curPlayer, srcMoneyType, exchangeValue, "MoneyExchange"):
        return
    tagMoneyAdd = exchangeValue * multiple
    PlayerControl.GiveMoney(curPlayer, tagMoneyType, tagMoneyAdd, "MoneyExchange")
    GameWorld.Log("货币兑换: srcMoneyType=%s,exchangeValue=%s,tagMoneyType=%s,tagMoneyAdd=%s"
                  % (srcMoneyType, exchangeValue, tagMoneyType, tagMoneyAdd), curPlayer.GetPlayerID())
    return
#// A1 21 תְҵ #tagCMChangeJob
#
#struct    tagCMChangeJob
#{
#    tagHead        Head;
#    BYTE        TagJob;
#};
def OnChangeJob(index, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    PlayerChangeJob.DoChangeJob(curPlayer, curPlayer.GetJob(), clientData.TagJob)
    return
#// A1 08 刷新主服角色信息 #tagCMRefreshMainServerRole
#
#struct tagCMRefreshMainServerRole
#{
#    tagHead        Head;
#};
def OnRefreshMainServerRole(index, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    Sync_DBPlayer(curPlayer)
    # 死亡复活
    if GameObj.GetHP(curPlayer) <=0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
        PlayerRebornByType(curPlayer, ChConfig.rebornType_System, tick)
    # 强刷一次属性,刷之前重置还没同步过所有属性
    curPlayer.SetDict(ChConfig.Def_PlayerKey_NotifyAllAttrState, 0)
    playerControl = PlayerControl.PlayerControl(curPlayer)
    playerControl.ReCalcAllState()
    # 同步所有buff
    __Sync_ClientBuff(curPlayer)
    PlayerState.Sync_PKBossState(curPlayer)
    # 恢复视野,刷新自己的视野
    curPlayer.SetVisible(True)
    PlayerControl.SetSight(curPlayer, 0)
    curPlayer.RefreshView()
    PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default)
    curPlayer.RefreshView()
    msgInfo = ""
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetPlayerID(), 0, 0, "RefreshMainServerRole", msgInfo, len(msgInfo))
    return
def Sync_DBPlayer(curPlayer):
    ## 同步DBPlayer信息,同0102封包
    dbPlayer = ChPyNetSendPack.tagMCDBPlayer()
    dbPlayer.AccID = curPlayer.GetAccID()
    dbPlayer.PlayerID = curPlayer.GetPlayerID()
    dbPlayer.PlayerName = curPlayer.GetPlayerName()
    dbPlayer.AccState = curPlayer.GetAccState()
    dbPlayer.GMLevel = curPlayer.GetGMLevel()
    dbPlayer.Sex = curPlayer.GetSex()
    dbPlayer.Job = curPlayer.GetJob()
    dbPlayer.ReincarnationLv = curPlayer.GetReincarnationLv()
    dbPlayer.LV = curPlayer.GetLV()
    dbPlayer.LVEx = curPlayer.GetLVEx()
    dbPlayer.LV2 = curPlayer.GetLV2()
    dbPlayer.ExpPoint = curPlayer.GetExpPoint()
    dbPlayer.TotalExp = curPlayer.GetTotalExp()
    dbPlayer.Family = curPlayer.GetFamilyID()
    dbPlayer.FamilyName = curPlayer.GetFamilyName()
    dbPlayer.TeamHornor = curPlayer.GetTeamHornor()
    dbPlayer.FamilyHornor = curPlayer.GetFamilyHornor()
    dbPlayer.FamilyActiveValue = curPlayer.GetFamilyActiveValue()
    dbPlayer.LastWeekFamilyActiveValue = curPlayer.GetLastWeekFamilyActiveValue()
    dbPlayer.CountryHornor = curPlayer.GetCountryHornor()
    dbPlayer.CountryLastWeekHornor = curPlayer.GetCountryLastWeekHornor()
    dbPlayer.Mate = curPlayer.GetMate()
    dbPlayer.Gold = curPlayer.GetGold()
    dbPlayer.GoldPaper = curPlayer.GetGoldPaper()
    dbPlayer.Silver = curPlayer.GetSilver()
    dbPlayer.SilverPaper = curPlayer.GetSilverPaper()
    dbPlayer.FightPoint = curPlayer.GetFightPoint()
    dbPlayer.HappyPoint = curPlayer.GetHappyPoint()
    dbPlayer.LineID = curPlayer.GetLineID()
    dbPlayer.MapID = curPlayer.GetMapID() # 玩家身上的 GetMapID 返回的就是 GetDataMapID
    dbPlayer.PosX = curPlayer.GetPosX()
    dbPlayer.PosY = curPlayer.GetPosY()
    dbPlayer.RebornMapID = curPlayer.GetRebornMapID()
    dbPlayer.RebornPosX = curPlayer.GetRebornPosX()
    dbPlayer.RebornPosY = curPlayer.GetRebornPosY()
    dbPlayer.State = curPlayer.GetState()
    dbPlayer.HP = curPlayer.GetHP()
    dbPlayer.HPEx = curPlayer.GetHPEx()
    dbPlayer.XP = curPlayer.GetXP()
    dbPlayer.HPRestoreSetting = curPlayer.GetHPRestoreSetting()
    dbPlayer.MPRestoreSetting = curPlayer.GetMPRestoreSetting()
    dbPlayer.FreePoint = curPlayer.GetFreePoint()
    dbPlayer.FreeSkillPoint = curPlayer.GetFreeSkillPoint()
    dbPlayer.BaseSTR = curPlayer.GetBaseSTR()
    dbPlayer.BasePNE = curPlayer.GetBasePNE()
    dbPlayer.BasePHY = curPlayer.GetBasePHY()
    dbPlayer.BaseCON = curPlayer.GetBaseCON()
    dbPlayer.STR = curPlayer.GetSTR()
    dbPlayer.PNE = curPlayer.GetPNE()
    dbPlayer.PHY = curPlayer.GetPHY()
    dbPlayer.CON = curPlayer.GetCON()
    #dbPlayer.Setting = curPlayer.GetSetting() # 没有
    dbPlayer.PKValue = curPlayer.GetPKValue()
    #dbPlayer.ActiveValue = curPlayer.GetActiveValue() # 没有
    dbPlayer.BackpackLV = curPlayer.GetBackpackLV()
    dbPlayer.WarehouseLV = curPlayer.GetWarehouseLV()
    dbPlayer.TeamID = curPlayer.GetTeamID()
    dbPlayer.UseGoldType = curPlayer.GetUseGoldType()
    dbPlayer.UseSilverType = curPlayer.GetUseSilverType()
    dbPlayer.AttackMode = curPlayer.GetAttackMode()
    dbPlayer.LastWeekOnlineTime = curPlayer.GetLastWeekOnlineTime()
    dbPlayer.FBID = curPlayer.GetClientLineID()
    dbPlayer.FamilyLV = curPlayer.GetFamilyLV()
    dbPlayer.FriendFavor = curPlayer.GetFriendFavor()
    dbPlayer.Energy = curPlayer.GetEnergy()
    dbPlayer.EquipShowSwitch = curPlayer.GetEquipShowSwitch()
    dbPlayer.LuckValue = curPlayer.GetLuckValue()
    dbPlayer.ExAttr1 = curPlayer.GetExAttr1()
    dbPlayer.ExAttr2 = curPlayer.GetExAttr2()
    dbPlayer.ExAttr3 = curPlayer.GetExAttr3()
    dbPlayer.ExAttr4 = curPlayer.GetExAttr4()
    dbPlayer.ExAttr5 = curPlayer.GetExAttr5()
    dbPlayer.Faction = curPlayer.GetFaction()
    dbPlayer.InfamyValue = curPlayer.GetInfamyValue()
    dbPlayer.OfficialRank = curPlayer.GetOfficialRank()
    dbPlayer.ChangeCoinPointTotal = curPlayer.GetChangeCoinPointTotal()
    dbPlayer.VIPLv = curPlayer.GetVIPLv()
    dbPlayer.VIPLvForPhone = curPlayer.GetVIPLvForPhone()
    dbPlayer.ExAttr6 = curPlayer.GetExAttr6()
    dbPlayer.ExAttr7 = curPlayer.GetExAttr7()
    dbPlayer.ExAttr8 = curPlayer.GetExAttr8()
    dbPlayer.ExAttr9 = curPlayer.GetExAttr9()
    dbPlayer.ExAttr10 = curPlayer.GetExAttr10()
    dbPlayer.ModelMark = curPlayer.GetModelMark()
    dbPlayer.ExAttr11 = curPlayer.GetExAttr11()
    dbPlayer.ExAttr12 = curPlayer.GetExAttr12()
    dbPlayer.ExAttr13 = curPlayer.GetExAttr13()
    dbPlayer.ExAttr14 = curPlayer.GetExAttr14()
    dbPlayer.OperateInfo = curPlayer.GetOperateInfo()
    dbPlayer.Operate = curPlayer.GetOperate()
    dbPlayer.ServerID = curPlayer.GetServerID()
    dbPlayer.ExAttr15 = curPlayer.GetExAttr15()
    dbPlayer.ExAttr16 = curPlayer.GetExAttr16()
    dbPlayer.ExAttr17 = curPlayer.GetExAttr17()
    dbPlayer.ExAttr18 = curPlayer.GetExAttr18()
    dbPlayer.ExAttr19 = curPlayer.GetExAttr19()
    dbPlayer.ExAttr20 = curPlayer.GetExAttr20()
    dbPlayer.Face = curPlayer.GetFace()
    dbPlayer.FacePic = curPlayer.GetFacePic()
    dbPlayer.RoleType = curPlayer.GetRoleType()
    NetPackCommon.SendFakePack(curPlayer, dbPlayer)
    return
#---------------------------------------------------------------------
@@ -490,12 +293,6 @@
    # 坐骑相关通知
    PlayerHorse.PlayerHorseLogin(curPlayer)
    
    # 法器
    PlayerFaQi.PlayerFaQiLogin(curPlayer)
    # 炼体
    PlayerLianTi.OnPlayerLogin(curPlayer)
    PlayerTreasure.OnTreasureLogin(curPlayer)
    
    # 副本进入时间
@@ -506,12 +303,6 @@
    
    #成就
    PlayerSuccess.SuccOnLogin(curPlayer)
    #魅力
    PlayerCharm.OnPlayerLogin(curPlayer)
    #情缘
    PlayerLove.DoPlayerLogin(curPlayer)
    
    #同步自动战斗配置记录
#    Sync_AutoFightSetting(curPlayer)
@@ -553,8 +344,6 @@
    SyncPackDownloadAward(curPlayer)
    # 登录触发功能开启(老号处理)
    GameFuncComm.DoFuncOpenLogic(curPlayer)
    # 神兽
    PlayerDogz.OnPlayerLogin(curPlayer)
    # 小助手
    SyncLittleHelper(curPlayer)
    PlayerFB.OnLogin(curPlayer)
@@ -564,8 +353,6 @@
    Sync_CreateRoleAwardInfo(curPlayer)
    #自定义奖励
    PlayerCustomAward.OnPlayerLogin(curPlayer)
    #功能系统特权
    PlayerFuncSysPrivilege.OnPlayerLogin(curPlayer)
    #玩法前瞻奖励
    gameNoticeAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GameNoticeAwardState)
    if gameNoticeAwardState:
@@ -615,7 +402,6 @@
        PlayerHero.OnPlayerLogin(curPlayer)
        PlayerMail.OnPlayerLogin(curPlayer)
        PlayerHJG.OnPlayerLogin(curPlayer)
        PlayerXiangong.OnPlayerLogin(curPlayer)
        PlayerGubao.OnPlayerLogin(curPlayer)
        PlayerZhanling.OnPlayerLogin(curPlayer)
        PlayerTask.OnPlayerLogin(curPlayer)
@@ -1324,13 +1110,6 @@
    #初始化寻宝背包
    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTreasure)
    
    #初始化神兽物品背包
    #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
    #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptDogzItem))
    #curPack.Sync_PackCanUseCount()
    #初始化神兽装备背包
    #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
    #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptDogzEquip))
    #curPack.Sync_PackCanUseCount()
    #初始化垃圾分类背包
    #curPack = itemManager.GetPack(ShareDefine.rptGarbage)
@@ -1536,8 +1315,7 @@
        SyncPKModel(curPlayer)
        GameWorld.DebugLog("进入地图强制切换PK模式: %s" % initAttackModel)
    
    PassiveBuffEffMng.OnLoadMapGFPassive(curPlayer)
    PlayerYinji.OnLoadMap(curPlayer)
    #PassiveBuffEffMng.OnLoadMapGFPassive(curPlayer)
    
    #EndLoadMap需放在最后, 0403 tagPlayerLoginLoadOK
    curPlayer.EndLoadMap()
@@ -2881,7 +2659,7 @@
    GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer) * resetHpPercent / ChConfig.Def_MaxRateValue)
    #curPlayer.SetMP(curPlayer.GetMaxMP() * resetMpPercent / ChConfig.Def_MaxRateValue)
    #护盾
    PlayerControl.SetProDef(curPlayer, PlayerControl.GetMaxProDef(curPlayer))
    #PlayerControl.SetProDef(curPlayer, PlayerControl.GetMaxProDef(curPlayer))
    
    #玩家复活后副本处理
    FBLogic.OnPlayerRebornOver(curPlayer, rebornType)
@@ -3384,9 +3162,6 @@
    # 仙盟攻城战活动奖励
    elif rewardType == ChConfig.Def_RewardType_FamilyGCZ:
        PlayerActFamilyGCZ.GetFamilyGCZAward(curPlayer, dataEx, tick)
    # 天道树奖励
    elif rewardType == ChConfig.Def_RewardType_TiandaoTree:
        PlayerXiangong.GetTiandaoTreeAward(curPlayer, dataEx)
    # 寻宝累计次数奖励
    elif rewardType == ChConfig.Def_RewardType_TreasureCntAward:
        PlayerTreasure.GetTreasureCntAward(curPlayer, dataEx, dataExStr)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerChangeJob.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCharm.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4532,17 +4532,6 @@
    NetPackCommon.SendFakePack(curPlayer, clientPack)
    return
## 魅力等级
def GetCharmLV(curPlayer): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CharmLV)
def SetCharmLV(curPlayer, charmLV):
    NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CharmLV, charmLV)
    SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_CharmLV, charmLV)
    return
def GetTotalLingGenPoint(curPlayer):
    # 总灵根点数(金木水火土+自由点数)
    return 0
# 灵根 - 金木水火土
def GetMetal(curPlayer): return 0
def GetWood(curPlayer): return 0
@@ -4556,9 +4545,6 @@
def GetReduceSkillCDPer(curPlayer): return 0
def SetReduceSkillCDPer(curPlayer, reducePer): return
# 血瓶恢复效果
def GetHPCureEnhance(curPlayer): return 0
# 仙盟职位,使用 GetReceivedSalary,因为FamilyMemberLV没有入库
def GetFamilyMemberLV(curPlayer): return curPlayer.GetReceivedSalary()
def SetFamilyMemberLV(curPlayer, fmLV):
@@ -4566,35 +4552,6 @@
    curPlayer.SetReceivedSalary(fmLV)
    curPlayer.SetFamilyMemberLV(fmLV) # 也同步设置该值,防止有些地方直接调用 curPlayer.GetFamilyMemberLV()
    return
#---当前防护值,需存DB----
def GetProDef(curPlayer): return 0
def SetProDef(curPlayer, value): return
#---最大防护值----
def GetMaxProDef(curPlayer): return 0
def SetMaxProDef(curPlayer, value): return
# 每X秒自动消失一个印记, 毫秒记录
def GetLostYinjiTime(curPlayer): return 0
def SetLostYinjiTime(curPlayer, value): return
# 当前印记数
def GetYinjiCnt(curPlayer): return 0
def SetYinjiCnt(curPlayer, value): return
# 减少指定技能组CD XX%
def GetTheFBSkillsCD(curPlayer): return 0
def SetTheFBSkillsCD(curPlayer, value): return
# 灼烧固定伤害
def GetBurnValue(curPlayer): return 0
def SetBurnValue(curPlayer, value): return
# 延长灼烧时间百分比
def GetBurnTimePer(curPlayer): return 0
def SetBurnTimePer(curPlayer, value): return
# 减移动速度百分比
def GetSubSpeedPer(curPlayer): return 0
def SetSubSpeedPer(curPlayer, value): return
#-------------------------------------------------------------------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -41,12 +41,10 @@
import PlayerOfflineSupport
import PlayerTreasure
import PlayerZhanling
import PlayerLove
import IpyGameDataPY
import PlayerArena
import PyGameData
import OpenServerActivity
import PlayerXiangong
import PlayerBillboard
import PlayerViewCache
import GameFuncComm
@@ -288,10 +286,6 @@
    #寻宝
    PlayerTreasure.OnDay(curPlayer)
    PlayerGoldGift.OnDay(curPlayer)
    #情缘
    PlayerLove.DoPlayerOnDay(curPlayer)
    #仙宫
    PlayerXiangong.PlayerOnDay(curPlayer)
    PlayerControl.PlayerOnDay(curPlayer)
    ChPlayer.PlayerOnDay(curPlayer)
    PlayerActivity.OnDay(curPlayer)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFaQi.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFuncSysPrivilege.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLianTi.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerLove.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1015,8 +1015,6 @@
    #if curPlayerAction == IPY_GameWorld.paPreparing :
    #    ProcessPlayerPrepareState(curPlayer, tick)
    
    #PlayerYinji.ProcessPlayerYinji(curPlayer, tick)
    #刷新组队状态
    #ProcessTeamState(curPlayer, tick)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerXiangong.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerYinji.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -662,7 +662,7 @@
#                 }
#需要记录累计消耗的货币类型
UseTotalPriceTypeList = [TYPE_Price_TiandaoFruit]
UseTotalPriceTypeList = []
# 自定义积分及通知字典 {货币类型:通知客户端刷新类型, ...} , 如果不通知的话刷新类型则配置 None
TYPE_Price_CurrencyDict = {
@@ -687,14 +687,12 @@
                           #TYPE_Price_SoulCore:CDBPlayerRefresh_SoulCore,
                           #TYPE_Price_Honor:CDBPlayerRefresh_Honor,
                           #TYPE_Price_BossActScore:CDBPlayerRefresh_BossActScore,
                           #TYPE_Price_FuncSysPrivilege:CDBPlayerRefresh_FuncSysPrivilege,
                           #TYPE_Price_Environment:CDBPlayerRefresh_Environment,
                           #TYPE_Price_BTGMPoint:CDBPlayerRefresh_BTGMPoint,
                           #TYPE_Price_GuShenMoney:CDBPlayerRefresh_GuShenMoney,
                           #TYPE_Price_GongdePoint:CDBPlayerRefresh_GongdePoint,
                           #TYPE_Price_FamilyFlagWarPoint:CDBPlayerRefresh_FamilyFlagWarPoint,
                           #TYPE_Price_GatherSoul:CDBPlayerRefresh_GatherSoul,
                           #TYPE_Price_TiandaoFruit:CDBPlayerRefresh_TiandaoFruit,
                           #TYPE_Price_XianyuanScore:CDBPlayerRefresh_XianyuanScore,
                           #TYPE_Price_HuanjinggeScore:CDBPlayerRefresh_HuanjinggeScore,
                           }
@@ -1068,7 +1066,6 @@
CrossServerMsg_CrossAssist = "CrossAssist"              # 跨服协助
CrossServerMsg_FamilyFlagwarOver = "FamilyFlagwarOver"  # 逐鹿万界结算信息
CrossServerMsg_Worship = "Worship"  # 膜拜信息
CrossServerMsg_Xiangong = "Xiangong"  # 仙宫信息
CrossServerMsg_FuncTeamInfo = "FuncTeamInfo"  # 功能队伍信息同步
CrossServerMsg_FuncTeamDel = "FuncTeamDel"  # 功能队伍删除同步
CrossServerMsg_FuncTeamList = "FuncTeamList"  # 功能队伍列表同步
@@ -1106,7 +1103,6 @@
ClientServerMsg_ChangeFuncTeam = "ChangeFuncTeam"   # 修改功能队伍
ClientServerMsg_FuncTeamMemOP = "FuncTeamMemOP"   # 功能队伍成员操作
ClientServerMsg_QueryFuncTeam = "QueryFuncTeam"   # 查询功能队伍
ClientServerMsg_QueryXiangong = "QueryXiangong" # 查看仙宫仙名录
ClientServerMsg_LianqiScore = "LianqiScore" # 炼器积分
ClientServerMsg_SyncFamilyInfo = "SyncFamilyInfo" # 仙盟信息同步
ClientServerMsg_QueryCrossFamily = "QueryCrossFamily" # 查询跨服仙盟
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -110,9 +110,9 @@
    buffTime = curSkill.GetLastTime() 
    if not attacker:
        return buffTime 
    if curSkill.GetEffect(0).GetEffectID() == ChConfig.Def_Skill_Effect_Burn:
        # 灼烧的时间特殊处理
        buffTime = buffTime*(ChConfig.Def_MaxRateValue + PlayerControl.GetBurnTimePer(attacker))/ChConfig.Def_MaxRateValue
    #if curSkill.GetEffect(0).GetEffectID() == ChConfig.Def_Skill_Effect_Burn:
    #    # 灼烧的时间特殊处理
    #    buffTime = buffTime*(ChConfig.Def_MaxRateValue + PlayerControl.GetBurnTimePer(attacker))/ChConfig.Def_MaxRateValue
    
    buffTime += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(attacker, None, curSkill, ChConfig.TriggerType_BuffTime)
    return buffTime
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1027.py
@@ -38,7 +38,7 @@
    recoverHP = curBuff.GetValue() # 固定值
    
    # 血瓶恢复效果加成
    recoverHP += PlayerControl.GetHPCureEnhance(defender)
    #recoverHP += PlayerControl.GetHPCureEnhance(defender)
    SkillCommon.SkillAddHP(defender, curBuff.GetBuffID(), recoverHP)
    return
@@ -62,7 +62,7 @@
        return
    
    recoverHP = curBuff.GetValue()
    recoverHP += PlayerControl.GetHPCureEnhance(defender)
    #recoverHP += PlayerControl.GetHPCureEnhance(defender)
    SkillCommon.SkillAddHP(defender, curSkill.GetSkillID(), recoverHP*count)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
@@ -66,7 +66,7 @@
    skillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_BurnPer)
    skillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_BurnPer)
    
    skillEnhance = curEffect.GetEffectValue(1) + PlayerControl.GetBurnValue(attacker)
    skillEnhance = curEffect.GetEffectValue(1)
    skillPer = skillPer*1.0/ChConfig.Def_MaxRateValue
    # 灼烧特殊公式
    hurtValue, hurtType = AttackCommon.CalcHurtHP(attacker, defender, curSkill, 
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_551.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_900.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -98,9 +98,9 @@
    coolDownTime = curSkill.GetCoolDownTime()
    remainTime = coolDownTime
    
    skillTypeID = curSkill.GetSkillTypeID()
    if atkObj and skillTypeID in IpyGameDataPY.GetFuncEvalCfg("SkillCD", 1):
        reduceSkillCDPer += PlayerControl.GetTheFBSkillsCD(atkObj)
    #skillTypeID = curSkill.GetSkillTypeID()
    #if atkObj and skillTypeID in IpyGameDataPY.GetFuncEvalCfg("SkillCD", 1):
    #    reduceSkillCDPer += PlayerControl.GetTheFBSkillsCD(atkObj)
        
    if isPassiveSkill(curSkill):
        if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4085.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4086.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4087.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4088.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4089.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4090.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4091.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4092.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4102.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4108.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -156,9 +156,6 @@
    GetPassiveEffManager().RegistPassiveEffSet(curPlayer)
    
    GetPassiveEffManager().RegistPassiveBuff(curPlayer)
    # 助战神兽技能
    GetPassiveEffManager().RegistPassiveEffDogz(curPlayer)
    
    GetPassiveEffManager().RegistSuperEquipSkillDict(curPlayer)
@@ -269,10 +266,6 @@
             4083:ChConfig.TriggerType_AddThumpHitPer, # 增加重击伤害百分比
             4084:ChConfig.TriggerType_ThumpHit, # 对第一目标重击触发技能
             4085:ChConfig.TriggerType_SkillSuccess,  # 任何技能释放成功都可触发 76    加印记
             4086:ChConfig.TriggerType_AttackAddSkillPerYinji,  # 所有攻击伤害(SkillPer)增加,含普攻,计算时 为了飘字使用
             4087:ChConfig.TriggerType_AttackAddSkillPerYinji,  # 所有攻击伤害(SkillPer)增加,含普攻,计算时 为了飘字使用
             4088:ChConfig.TriggerType_AttackAddSkillPerYinji,  # 所有攻击伤害(SkillPer)增加,含普攻,计算时 为了飘字使用
             4089:ChConfig.TriggerType_AttackAddSkillPerYinji,  # 所有攻击伤害(SkillPer)增加,含普攻,计算时 为了飘字使用
             4090:ChConfig.TriggerType_AttackOver,  # 攻击(对敌技能)后被动技能被触发 4
             4091:ChConfig.TriggerType_SkillOverNoAttack,   # 技能释放后 与TriggerType_AttackOver相反19,
             4092:ChConfig.TriggerType_SkillSuccessExpend,  # 任何技能释放成功都可触发 76  减印记
@@ -429,38 +422,6 @@
    # 获得被动触发的 buff
    def GetBuffsByTriggerType(self, triggerType, useSkillID=0):
        return self.AffectBuffDict.get((triggerType, 0), {})
    # 重刷神兽助战技能
    def RefreshDogzBattleSkill(self):
        self.AffectDogzSkillDict = {}
        skills = FindDogzBattleSkills(self.gameObj)
        for curSkill in skills:
            if not SkillCommon.isPassiveTriggerSkill(curSkill):
                continue
            skillTypeID = curSkill.GetSkillTypeID()
            connSkillID = SkillShell.GetConnectSkillID(curSkill)    # 关联技能ID, 0代表不限技能
            for i in xrange(curSkill.GetEffectCount()):
                curEffect = curSkill.GetEffect(i)
                effectID = curEffect.GetEffectID()
                if effectID == 0:
                    continue
                triggerType = GetTriggerTypeByEffectID(effectID)
                if triggerType == -1:
                    continue
                key = (triggerType,connSkillID)
                if key not in self.AffectDogzSkillDict:
                    self.AffectDogzSkillDict[key] = []
                self.AffectDogzSkillDict[key].append((skillTypeID, effectID))
        return self.AffectDogzSkillDict
    
    # 重刷特殊装备技能
    def RefreshSuperEquipSkillDict(self):
@@ -756,23 +717,7 @@
        else:
            passiveEff.RefreshPassiveSkillSet(isCD)
        return
    # 人物需同步注册神兽技能
    def RegistPassiveEffDogz(self, gameObj):
        passiveEff = self.GetPassiveEff(gameObj)
        if not passiveEff:
            # 强制刷新所有被动技能
            passiveEff = PassiveEff(gameObj)
            if not passiveEff.RefreshDogzBattleSkill():
                return
            self.AddPassiveEff(gameObj, passiveEff)
        else:
            passiveEff.RefreshDogzBattleSkill()
        return
    # 人物需同步注册装备技能,技能目前为可触发的被动类,若有定义冲突则可用功能类型划分
    def RegistSuperEquipSkillDict(self, gameObj):
        passiveEff = self.GetPassiveEff(gameObj)
@@ -1486,71 +1431,6 @@
            curValue += callFunc(attacker, defender, passiveEffect)
            
    return curValue
# 因为要兼容低等级技能,所以技能只能是在助战的时候,先删除神兽技能再学习新的助战神兽技能
def PlayerDogzSkill(curPlayer):
    dogzSkills = [] # 需要学习的技能
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for i in xrange(ipyDataMgr.GetDogzCount()):
        ipyData = ipyDataMgr.GetDogzByIndex(i)
        if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
            continue
        dogzSkills.extend(ipyData.GetHelpBattleSkills())
    delDogzSkills = [] # 删除不在助战神兽队列的技能
    skillManager = curPlayer.GetSkillManager()
    for i in xrange(skillManager.GetSkillCount()):
        curSkill = skillManager.GetSkillByIndex(i)
        if curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_Dogz:
            continue
        skillID = curSkill.GetSkillID()
        delDogzSkills.append(skillID)
    GameWorld.DebugLog("PlayerDogzSkill:%s - 删除%s"%(dogzSkills, delDogzSkills))
    # 删除神兽技能
    for skillID in delDogzSkills:
        skillManager.DeleteSkillBySkillID(skillID, False)
    # 添加助战技能,同类技能取最高
    dogzSkills.sort()
    for skillID in dogzSkills:
        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
        if not skillData:
            continue
        if skillData.GetSkillType() == ChConfig.Def_SkillType_AttrSkillNoLearn:
            # 同技能可多个叠加的技能不能学,算属性时直接取表
            continue
        skillManager.LearnSkillByID(skillID, False)
    # 刷被动效果
    GetPassiveEffManager().RegistPassiveEffDogz(curPlayer)
    return
# 获取助战神兽的技能列表
def FindDogzBattleSkills(gameObj):
    skills = []
    if gameObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
        return skills
    skillManager = gameObj.GetSkillManager()
    for i in xrange(skillManager.GetSkillCount()):
        curSkill = skillManager.GetSkillByIndex(i)
        if not curSkill:
            continue
        if curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_Dogz:
            continue
        skills.append(curSkill)
    return skills
# 遍历身上装备技能以及各自个数,装备技能不需要学习
# 保证不同的装备技能不会有相同的效果, 效果数值的衰减是根据相同技能个数计算而不是效果个数 1-pow((1-初始值),相同技能个数)