69.网络游戏逆向分析与漏洞攻防-利用数据包构建角色信息-利用封包更新角色数据到结构体

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了

内容参考于:易道云信息技术研究院

上一个内容:68.自动生成CPP函数解决数据更新的问题

码云版本号:895629b2c416acd59728fac3b58567eda4878d37

代码下载地址,在 titan 目录下,文件名为:titan-利用封包更新角色数据到结构体.zip

链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg

提取码:q9n5

--来自百度网盘超级会员V4的分享

HOOK引擎,文件名为:黑兔sdk升级版.zip

链接:https://pan.baidu.com/s/1IB-Zs6hi3yU8LC2f-8hIEw

提取码:78h8

--来自百度网盘超级会员V4的分享

以 68.自动生成CPP函数解决数据更新的问题 它的代码为基础进行修改

上一个内容里,实现了可以根据09数据包生成类、类的属性、类里相关的函数、宏定义,本次就是要把生成的这些东西用起来,效果就是把28数据包的数据更新的这个类中,可以正常读取,正常显示,把血量和名字正常显示出来。

首先把生成的文件改名

原本的名

修改之后的名

修改完文件名之后,把三个文件复制到 tilib 项目里

然后回到 Visual Studio 里选择添加现有项,如下图

然后选中刚刚复制来的三个文件,点击添加

然后现在的目录结构

然后把cpp文件放到源文件文件夹里,如下图

效果图:通过点击按钮获取到了角色信息

现在的缺点是头文件太大,现在的功能游戏更新之后也会根据数据包重新生成 GameOBJECT.h、GameOBJECTDef.h、GameOBJECT.cpp这三个文件,所以游戏的数据结构更新也是可以完美解决的

然后cpp文件也很大,如果是正常开发的话是没有问题的,但是这个代码是要注入到别人的程序里,这么大的一个体积对于安全方面就很不好,特征码会很明显,然后由于体积很大也不好做变形,针对这个有一个优化手段

struct A {

  int i;

};

&((A*)0)->i; 这样写会得到i的偏移,然后使用时不用写set方法,直接通过 基址+偏移的方式也就是int * temp = this+&((A*)0)->i; *temp = 123;,这样的方式修改内存里的值,这样代码更精简

&((A*)0)->i;或&((A*)nullptr)->i;

新加 GameOBJECT.cpp文件

#include "GameOBJECT.h"
#include "GameOBJECTDef.h"
void GAMEOBJECT::UpdateData(int id, int type, char*& buffStart)
{                                                              
    /*                                                         
        1B 00 buffStart                                        
        0C 00 00 00 buffStart + 2                              
        CA 4E 5A 66 53 62 01 80 4E 86 00 00 1D 00              
    */                                                         
    buffStart = buffStart + 2;
    switch (id)
    {
    case INDEX_Type:
      return SetType(buffStart);
    case INDEX_Sex:
      return SetSex(buffStart);
    case INDEX_Photo:
      return SetPhoto(buffStart);
    case INDEX_Camp:
      return SetCamp(buffStart);
    case INDEX_Race:
      return SetRace(buffStart);
    case INDEX_Job:
      return SetJob(buffStart);
    case INDEX_Level:
      return SetLevel(buffStart);
    case INDEX_CurArea:
      return SetCurArea(buffStart);
    case INDEX_SceneTriggerConfig:
      return SetSceneTriggerConfig(buffStart);
    case INDEX_ToolEffect:
      return SetToolEffect(buffStart);
    case INDEX_SkillEnergyList:
      return SetSkillEnergyList(buffStart);
    case INDEX_HideSkillTip:
      return SetHideSkillTip(buffStart);
    case INDEX_Coin_LLQD:
      return SetCoin_LLQD(buffStart);
    case INDEX_DelaySkillTime:
      return SetDelaySkillTime(buffStart);
    case INDEX_Pre_SceneID:
      return SetPre_SceneID(buffStart);
    case INDEX_Pre_PosX:
      return SetPre_PosX(buffStart);
    case INDEX_Pre_PosY:
      return SetPre_PosY(buffStart);
    case INDEX_Pre_PosZ:
      return SetPre_PosZ(buffStart);
    case INDEX_MountItemId:
      return SetMountItemId(buffStart);
    case INDEX_WedgedTime:
      return SetWedgedTime(buffStart);
    case INDEX_EnergyLevel:
      return SetEnergyLevel(buffStart);
    case INDEX_EnergyUpgradeNum:
      return SetEnergyUpgradeNum(buffStart);
    case INDEX_EnergyPreUpgradeNum:
      return SetEnergyPreUpgradeNum(buffStart);
    case INDEX_SpecState:
      return SetSpecState(buffStart);
    case INDEX_IsHunterTreasure:
      return SetIsHunterTreasure(buffStart);
    case INDEX_AdjustOrient:
      return SetAdjustOrient(buffStart);
    case INDEX_Name:
      return SetName(buffStart);
    case INDEX_CollideRadius:
      return SetCollideRadius(buffStart);
    case INDEX_VisualRange:
      return SetVisualRange(buffStart);
    case INDEX_MPUpSpeed:
      return SetMPUpSpeed(buffStart);
    case INDEX_MPUpSpeedAdd:
      return SetMPUpSpeedAdd(buffStart);
    case INDEX_State:
      return SetState(buffStart);
    case INDEX_FloatingState:
      return SetFloatingState(buffStart);
    case INDEX_FashionState:
      return SetFashionState(buffStart);
    case INDEX_MaxHPAdd:
      return SetMaxHPAdd(buffStart);
    case INDEX_MaxMPAdd:
      return SetMaxMPAdd(buffStart);
    case INDEX_HPRatio:
      return SetHPRatio(buffStart);
    case INDEX_MPRatio:
      return SetMPRatio(buffStart);
    case INDEX_MaxHP:
      return SetMaxHP(buffStart);
    case INDEX_MaxMP:
      return SetMaxMP(buffStart);
    case INDEX_HP:
      return SetHP(buffStart);
    case INDEX_MP:
      return SetMP(buffStart);
    case INDEX_ArmHPUpSpeed:
      return SetArmHPUpSpeed(buffStart);
    case INDEX_ArmEYUpSpeed:
      return SetArmEYUpSpeed(buffStart);
    case INDEX_CantMove:
      return SetCantMove(buffStart);
    case INDEX_CantMoveAdd:
      return SetCantMoveAdd(buffStart);
    case INDEX_CantRotate:
      return SetCantRotate(buffStart);
    case INDEX_CantAttack:
      return SetCantAttack(buffStart);
    case INDEX_CantBeAttack:
      return SetCantBeAttack(buffStart);
    case INDEX_CantBeAttack2:
      return SetCantBeAttack2(buffStart);
    case INDEX_CantUseSkill:
      return SetCantUseSkill(buffStart);
    case INDEX_CantUseSkillAdd:
      return SetCantUseSkillAdd(buffStart);
    case INDEX_CantUseItem:
      return SetCantUseItem(buffStart);
    case INDEX_CantUseItemAdd:
      return SetCantUseItemAdd(buffStart);
    case INDEX_CantRotateAdd:
      return SetCantRotateAdd(buffStart);
    case INDEX_CantAttackAdd:
      return SetCantAttackAdd(buffStart);
    case INDEX_PauseAction:
      return SetPauseAction(buffStart);
    case INDEX_CantJump:
      return SetCantJump(buffStart);
    case INDEX_RoleHide:
      return SetRoleHide(buffStart);
    case INDEX_TrueSight:
      return SetTrueSight(buffStart);
    case INDEX_ShowHide:
      return SetShowHide(buffStart);
    case INDEX_AreaHide:
      return SetAreaHide(buffStart);
    case INDEX_WarFogRadius:
      return SetWarFogRadius(buffStart);
    case INDEX_HideActionSet:
      return SetHideActionSet(buffStart);
    case INDEX_FightPower:
      return SetFightPower(buffStart);
    case INDEX_RC:
      return SetRC(buffStart);
    case INDEX_AV:
      return SetAV(buffStart);
    case INDEX_EY:
      return SetEY(buffStart);
    case INDEX_FS:
      return SetFS(buffStart);
    case INDEX_DP:
      return SetDP(buffStart);
    case INDEX_RCRatio:
      return SetRCRatio(buffStart);
    case INDEX_AVRatio:
      return SetAVRatio(buffStart);
    case INDEX_EYRatio:
      return SetEYRatio(buffStart);
    case INDEX_FSRatio:
      return SetFSRatio(buffStart);
    case INDEX_DPRatio:
      return SetDPRatio(buffStart);
    case INDEX_MaxRC:
      return SetMaxRC(buffStart);
    case INDEX_MaxAV:
      return SetMaxAV(buffStart);
    case INDEX_MaxEY:
      return SetMaxEY(buffStart);
    case INDEX_MaxFS:
      return SetMaxFS(buffStart);
    case INDEX_MaxDP:
      return SetMaxDP(buffStart);
    case INDEX_MaxRCAdd:
      return SetMaxRCAdd(buffStart);
    case INDEX_MaxAVAdd:
      return SetMaxAVAdd(buffStart);
    case INDEX_MaxEYAdd:
      return SetMaxEYAdd(buffStart);
    case INDEX_MaxFSAdd:
      return SetMaxFSAdd(buffStart);
    case INDEX_MaxDPAdd:
      return SetMaxDPAdd(buffStart);
    case INDEX_Gravity:
      return SetGravity(buffStart);
    case INDEX_JumpSpeed:
      return SetJumpSpeed(buffStart);
    case INDEX_MoveSpeed:
      return SetMoveSpeed(buffStart);
    case INDEX_WalkSpeed:
      return SetWalkSpeed(buffStart);
    case INDEX_RunSpeed:
      return SetRunSpeed(buffStart);
    case INDEX_DropHeightPub:
      return SetDropHeightPub(buffStart);
    case INDEX_RunSpeedAdd:
      return SetRunSpeedAdd(buffStart);
    case INDEX_SpeedRatio:
      return SetSpeedRatio(buffStart);
    case INDEX_RequestSet:
      return SetRequestSet(buffStart);
    case INDEX_ArtKey:
      return SetArtKey(buffStart);
    case INDEX_HidePlayer:
      return SetHidePlayer(buffStart);
    case INDEX_HideOtherPet:
      return SetHideOtherPet(buffStart);
    case INDEX_Face:
      return SetFace(buffStart);
    case INDEX_Eyes:
      return SetEyes(buffStart);
    case INDEX_Beard:
      return SetBeard(buffStart);
    case INDEX_Ears:
      return SetEars(buffStart);
    case INDEX_Tail:
      return SetTail(buffStart);
    case INDEX_Finger:
      return SetFinger(buffStart);
    case INDEX_HideParts:
      return SetHideParts(buffStart);
    case INDEX_HideSkins:
      return SetHideSkins(buffStart);
    case INDEX_Stature:
      return SetStature(buffStart);
    case INDEX_TattooColor:
      return SetTattooColor(buffStart);
    case INDEX_SkinMtl:
      return SetSkinMtl(buffStart);
    case INDEX_HairColor:
      return SetHairColor(buffStart);
    case INDEX_SkinColor:
      return SetSkinColor(buffStart);
    case INDEX_Hat:
      return SetHat(buffStart);
    case INDEX_Cloth:
      return SetCloth(buffStart);
    case INDEX_Pants:
      return SetPants(buffStart);
    case INDEX_Shoes:
      return SetShoes(buffStart);
    case INDEX_Gloves:
      return SetGloves(buffStart);
    case INDEX_Tattoo:
      return SetTattoo(buffStart);
    case INDEX_Special:
      return SetSpecial(buffStart);
    case INDEX_Mantle:
      return SetMantle(buffStart);
    case INDEX_Trait:
      return SetTrait(buffStart);
    case INDEX_LWeapon:
      return SetLWeapon(buffStart);
    case INDEX_RWeapon:
      return SetRWeapon(buffStart);
    case INDEX_LWeaponID:
      return SetLWeaponID(buffStart);
    case INDEX_RWeaponID:
      return SetRWeaponID(buffStart);
    case INDEX_ActionSet:
      return SetActionSet(buffStart);
    case INDEX_HandType:
      return SetHandType(buffStart);
    case INDEX_WeaponState:
      return SetWeaponState(buffStart);
    case INDEX_WeaponStateType:
      return SetWeaponStateType(buffStart);
    case INDEX_LArmorWeapon:
      return SetLArmorWeapon(buffStart);
    case INDEX_RArmorWeapon:
      return SetRArmorWeapon(buffStart);
    case INDEX_LArmorWeaponID:
      return SetLArmorWeaponID(buffStart);
    case INDEX_RArmorWeaponID:
      return SetRArmorWeaponID(buffStart);
    case INDEX_HeadDetail:
      return SetHeadDetail(buffStart);
    case INDEX_LastObject:
      return SetLastObject(buffStart);
    case INDEX_UnenthrallTime:
      return SetUnenthrallTime(buffStart);
    case INDEX_PKMode:
      return SetPKMode(buffStart);
    case INDEX_PKValue:
      return SetPKValue(buffStart);
    case INDEX_ShaQi:
      return SetShaQi(buffStart);
    case INDEX_ArenaSide:
      return SetArenaSide(buffStart);
    case INDEX_ArrestValue:
      return SetArrestValue(buffStart);
    case INDEX_ArrestState:
      return SetArrestState(buffStart);
    case INDEX_RedNameEffect:
      return SetRedNameEffect(buffStart);
    case INDEX_ChangePKModule:
      return SetChangePKModule(buffStart);
    case INDEX_PKProtected:
      return SetPKProtected(buffStart);
    case INDEX_ChallengeState:
      return SetChallengeState(buffStart);
    case INDEX_ChallengeName:
      return SetChallengeName(buffStart);
    case INDEX_LogicState:
      return SetLogicState(buffStart);
    case INDEX_Dead:
      return SetDead(buffStart);
    case INDEX_GuardSkill:
      return SetGuardSkill(buffStart);
    case INDEX_ModelScale:
      return SetModelScale(buffStart);
    case INDEX_PvpFlag:
      return SetPvpFlag(buffStart);
    case INDEX_PvpType:
      return SetPvpType(buffStart);
    case INDEX_HPConsumeInc:
      return SetHPConsumeInc(buffStart);
    case INDEX_MPConsumeInc:
      return SetMPConsumeInc(buffStart);
    case INDEX_EYConsumeInc:
      return SetEYConsumeInc(buffStart);
    case INDEX_RCConsumeInc:
      return SetRCConsumeInc(buffStart);
    case INDEX_AVConsumeInc:
      return SetAVConsumeInc(buffStart);
    case INDEX_FSConsumeInc:
      return SetFSConsumeInc(buffStart);
    case INDEX_DPConsumeInc:
      return SetDPConsumeInc(buffStart);
    case INDEX_ARMHPConsumeInc:
      return SetARMHPConsumeInc(buffStart);
    case INDEX_ARMEYConsumeInc:
      return SetARMEYConsumeInc(buffStart);
    case INDEX_HPConsumeMul:
      return SetHPConsumeMul(buffStart);
    case INDEX_MPConsumeMul:
      return SetMPConsumeMul(buffStart);
    case INDEX_EYConsumeMul:
      return SetEYConsumeMul(buffStart);
    case INDEX_RCConsumeMul:
      return SetRCConsumeMul(buffStart);
    case INDEX_AVConsumeMul:
      return SetAVConsumeMul(buffStart);
    case INDEX_FSConsumeMul:
      return SetFSConsumeMul(buffStart);
    case INDEX_DPConsumeMul:
      return SetDPConsumeMul(buffStart);
    case INDEX_ARMHPConsumeMul:
      return SetARMHPConsumeMul(buffStart);
    case INDEX_ARMEYConsumeMul:
      return SetARMEYConsumeMul(buffStart);
    case INDEX_ShamDead:
      return SetShamDead(buffStart);
    case INDEX_CurSkillID:
      return SetCurSkillID(buffStart);
    case INDEX_CurSkillEffectID:
      return SetCurSkillEffectID(buffStart);
    case INDEX_CurSkillTarget:
      return SetCurSkillTarget(buffStart);
    case INDEX_CurSkillLevel:
      return SetCurSkillLevel(buffStart);
    case INDEX_BufferListStr:
      return SetBufferListStr(buffStart);
    case INDEX_PrepareTime:
      return SetPrepareTime(buffStart);
    case INDEX_LeadTime:
      return SetLeadTime(buffStart);
    case INDEX_TargetShapePara1:
      return SetTargetShapePara1(buffStart);
    case INDEX_TargetShapePara2:
      return SetTargetShapePara2(buffStart);
    case INDEX_HitShapePara1:
      return SetHitShapePara1(buffStart);
    case INDEX_HitShapePara2:
      return SetHitShapePara2(buffStart);
    case INDEX_CoolDownTime:
      return SetCoolDownTime(buffStart);
    case INDEX_OnTransToolState:
      return SetOnTransToolState(buffStart);
    case INDEX_LinkObj:
      return SetLinkObj(buffStart);
    case INDEX_OnSwitchTransState:
      return SetOnSwitchTransState(buffStart);
    case INDEX_TransToolID:
      return SetTransToolID(buffStart);
    case INDEX_FlyStep:
      return SetFlyStep(buffStart);
    case INDEX_FromTo:
      return SetFromTo(buffStart);
    case INDEX_StoreHeight:
      return SetStoreHeight(buffStart);
    case INDEX_UnderWaterSpeed:
      return SetUnderWaterSpeed(buffStart);
    case INDEX_CurUnderWaterValue:
      return SetCurUnderWaterValue(buffStart);
    case INDEX_TransJobList:
      return SetTransJobList(buffStart);
    case INDEX_CantTransJob:
      return SetCantTransJob(buffStart);
    case INDEX_DoTransJob:
      return SetDoTransJob(buffStart);
    case INDEX_TransConditionId:
      return SetTransConditionId(buffStart);
    case INDEX_CurInsPoint:
      return SetCurInsPoint(buffStart);
    case INDEX_ExileStatus:
      return SetExileStatus(buffStart);
    case INDEX_Force:
      return SetForce(buffStart);
    case INDEX_GuildName:
      return SetGuildName(buffStart);
    case INDEX_GuildPosition:
      return SetGuildPosition(buffStart);
    case INDEX_MountID:
      return SetMountID(buffStart);
    case INDEX_MountItemID:
      return SetMountItemID(buffStart);
    case INDEX_MountType:
      return SetMountType(buffStart);
    case INDEX_MountSeatIndex:
      return SetMountSeatIndex(buffStart);
    case INDEX_MultiSeatNum:
      return SetMultiSeatNum(buffStart);
    case INDEX_SeatPlayer2:
      return SetSeatPlayer2(buffStart);
    case INDEX_SeatPlayer3:
      return SetSeatPlayer3(buffStart);
    case INDEX_SeatPlayer4:
      return SetSeatPlayer4(buffStart);
    case INDEX_SeatPlayer5:
      return SetSeatPlayer5(buffStart);
    case INDEX_SafeTime:
      return SetSafeTime(buffStart);
    case INDEX_CurSafeTime:
      return SetCurSafeTime(buffStart);
    case INDEX_SafeModeEquipLv:
      return SetSafeModeEquipLv(buffStart);
    case INDEX_SafeModeEquipStar:
      return SetSafeModeEquipStar(buffStart);
    case INDEX_IsHaveSafeModePsw:
      return SetIsHaveSafeModePsw(buffStart);
    case INDEX_IsSafeModeUnLock:
      return SetIsSafeModeUnLock(buffStart);
    case INDEX_SafeModeEquipStr:
      return SetSafeModeEquipStr(buffStart);
    case INDEX_SafeModeJewelStr:
      return SetSafeModeJewelStr(buffStart);
    case INDEX_LastOffLineTime:
      return SetLastOffLineTime(buffStart);
    case INDEX_LastAddress:
      return SetLastAddress(buffStart);
    case INDEX_TeamID:
      return SetTeamID(buffStart);
    case INDEX_TeamCaptain:
      return SetTeamCaptain(buffStart);
    case INDEX_TeamPickMode:
      return SetTeamPickMode(buffStart);
    case INDEX_TeamPickQuality:
      return SetTeamPickQuality(buffStart);
    case INDEX_TeamType:
      return SetTeamType(buffStart);
    case INDEX_AcceptRequest:
      return SetAcceptRequest(buffStart);
    case INDEX_CurMembers:
      return SetCurMembers(buffStart);
    case INDEX_TeamSceneSign:
      return SetTeamSceneSign(buffStart);
    case INDEX_STeamCaptain:
      return SetSTeamCaptain(buffStart);
    case INDEX_STeamType:
      return SetSTeamType(buffStart);
    case INDEX_ShortcutKey:
      return SetShortcutKey(buffStart);
    case INDEX_GunManLeftSkill:
      return SetGunManLeftSkill(buffStart);
    case INDEX_CurCloneSceneLevel:
      return SetCurCloneSceneLevel(buffStart);
    case INDEX_CloneSceneScoreTop:
      return SetCloneSceneScoreTop(buffStart);
    case INDEX_CloneScoreTopRefreshTime:
      return SetCloneScoreTopRefreshTime(buffStart);
    case INDEX_CloneWeekLimitCount:
      return SetCloneWeekLimitCount(buffStart);
    case INDEX_CloneWeekLimitCountMax:
      return SetCloneWeekLimitCountMax(buffStart);
    case INDEX_TitleID:
      return SetTitleID(buffStart);
    case INDEX_GunMan:
      return SetGunMan(buffStart);
    case INDEX_GunManBullet:
      return SetGunManBullet(buffStart);
    case INDEX_RFC:
      return SetRFC(buffStart);
    case INDEX_ChatRoomID:
      return SetChatRoomID(buffStart);
    case INDEX_ChatRoomTitle:
      return SetChatRoomTitle(buffStart);
    case INDEX_CurrentESId:
      return SetCurrentESId(buffStart);
    case INDEX_ArenaID:
      return SetArenaID(buffStart);
    case INDEX_ArenaState:
      return SetArenaState(buffStart);
    case INDEX_ArenaSinglePoints:
      return SetArenaSinglePoints(buffStart);
    case INDEX_ArenaTeamName:
      return SetArenaTeamName(buffStart);
    case INDEX_IsArenaTeamCaptain:
      return SetIsArenaTeamCaptain(buffStart);
    case INDEX_ArenaTeamType:
      return SetArenaTeamType(buffStart);
    case INDEX_ArenaMatchType:
      return SetArenaMatchType(buffStart);
    case INDEX_ArenaKill:
      return SetArenaKill(buffStart);
    case INDEX_AchievePoint:
      return SetAchievePoint(buffStart);
    case INDEX_ActDegree:
      return SetActDegree(buffStart);
    case INDEX_ActPhase:
      return SetActPhase(buffStart);
    case INDEX_BattleWarState:
      return SetBattleWarState(buffStart);
    case INDEX_LeaveGive:
      return SetLeaveGive(buffStart);
    case INDEX_BattleWarID:
      return SetBattleWarID(buffStart);
    case INDEX_BattleWarRand:
      return SetBattleWarRand(buffStart);
    case INDEX_MaxKeepKillNum:
      return SetMaxKeepKillNum(buffStart);
    case INDEX_MaxKillEnemyNum:
      return SetMaxKillEnemyNum(buffStart);
    case INDEX_BWDeadNum:
      return SetBWDeadNum(buffStart);
    case INDEX_CampaignStatus:
      return SetCampaignStatus(buffStart);
    case INDEX_MainRoleChange:
      return SetMainRoleChange(buffStart);
    case INDEX_PreChangeIndex:
      return SetPreChangeIndex(buffStart);
    case INDEX_ChangeIndex:
      return SetChangeIndex(buffStart);
    case INDEX_bRoleChange:
      return SetbRoleChange(buffStart);
    case INDEX_RoleChangeType:
      return SetRoleChangeType(buffStart);
    case INDEX_RelivePositon:
      return SetRelivePositon(buffStart);
    case INDEX_ReliveLocalFirst:
      return SetReliveLocalFirst(buffStart);
    case INDEX_RelivePerfectFirst:
      return SetRelivePerfectFirst(buffStart);
    case INDEX_ReliveCityFirst:
      return SetReliveCityFirst(buffStart);
    case INDEX_ReliveTime:
      return SetReliveTime(buffStart);
    case INDEX_ReliveCdTime:
      return SetReliveCdTime(buffStart);
    case INDEX_ReliveNoNearPos:
      return SetReliveNoNearPos(buffStart);
    case INDEX_RelivePosSelectOpen:
      return SetRelivePosSelectOpen(buffStart);
    case INDEX_HotelexPerience:
      return SetHotelexPerience(buffStart);
    case INDEX_PlayerExp:
      return SetPlayerExp(buffStart);
    case INDEX_PlayerUpgradeExp:
      return SetPlayerUpgradeExp(buffStart);
    case INDEX_Declare:
      return SetDeclare(buffStart);
    case INDEX_PlayerHonor:
      return SetPlayerHonor(buffStart);
    case INDEX_RankLevel:
      return SetRankLevel(buffStart);
    case INDEX_UpgradeHonor:
      return SetUpgradeHonor(buffStart);
    case INDEX_CanAddHonorPoint:
      return SetCanAddHonorPoint(buffStart);
    case INDEX_DepotMoney:
      return SetDepotMoney(buffStart);
    case INDEX_AddDepotBagNum:
      return SetAddDepotBagNum(buffStart);
    case INDEX_AddToolBagNum:
      return SetAddToolBagNum(buffStart);
    case INDEX_Link:
      return SetLink(buffStart);
    case INDEX_GuideType:
      return SetGuideType(buffStart);
    case INDEX_LifeOccupFirstType:
      return SetLifeOccupFirstType(buffStart);
    case INDEX_LifeOccupFirstExp:
      return SetLifeOccupFirstExp(buffStart);
    case INDEX_LifeJobLevel:
      return SetLifeJobLevel(buffStart);
    case INDEX_Physical:
      return SetPhysical(buffStart);
    case INDEX_MaxPhysical:
      return SetMaxPhysical(buffStart);
    case INDEX_MatureTicketDay:
      return SetMatureTicketDay(buffStart);
    case INDEX_DayMaxGainGold:
      return SetDayMaxGainGold(buffStart);
    case INDEX_AutoQuestFlag:
      return SetAutoQuestFlag(buffStart);
    case INDEX_PVPChangeForce:
      return SetPVPChangeForce(buffStart);
    case INDEX_PVPAttackPerfect:
      return SetPVPAttackPerfect(buffStart);
    case INDEX_PVPTaskCanAccept:
      return SetPVPTaskCanAccept(buffStart);
    case INDEX_PvpLock:
      return SetPvpLock(buffStart);
    case INDEX_SwitchBeforeTime:
      return SetSwitchBeforeTime(buffStart);
    case INDEX_PracticeWaitTime:
      return SetPracticeWaitTime(buffStart);
    case INDEX_PracticeFightTime:
      return SetPracticeFightTime(buffStart);
    case INDEX_IsPractice:
      return SetIsPractice(buffStart);
    case INDEX_HorseRacePathID:
      return SetHorseRacePathID(buffStart);
    case INDEX_HorseRaceRank:
      return SetHorseRaceRank(buffStart);
    case INDEX_PVPTowerPlayerState:
      return SetPVPTowerPlayerState(buffStart);
    case INDEX_IsInNewUserLead:
      return SetIsInNewUserLead(buffStart);
    case INDEX_ItemSet:
      return SetItemSet(buffStart);
    case INDEX_DecomposeUID:
      return SetDecomposeUID(buffStart);
    case INDEX_DecomMaterial:
      return SetDecomMaterial(buffStart);
    case INDEX_EveRecActive:
      return SetEveRecActive(buffStart);
    case INDEX_EveRecLevel:
      return SetEveRecLevel(buffStart);
    case INDEX_EvePVECount:
      return SetEvePVECount(buffStart);
    case INDEX_EvePVPCount:
      return SetEvePVPCount(buffStart);
    case INDEX_EveEventCount:
      return SetEveEventCount(buffStart);
    case INDEX_EveBattleCount:
      return SetEveBattleCount(buffStart);
    case INDEX_EveAthleticsCount:
      return SetEveAthleticsCount(buffStart);
    case INDEX_EveSceneCount:
      return SetEveSceneCount(buffStart);
    case INDEX_OnlineTime:
      return SetOnlineTime(buffStart);
    case INDEX_OffLineExp:
      return SetOffLineExp(buffStart);
    case INDEX_IsVip:
      return SetIsVip(buffStart);
    case INDEX_VipEndTime:
      return SetVipEndTime(buffStart);
    case INDEX_VipCloneNum:
      return SetVipCloneNum(buffStart);
    case INDEX_VipCloneTime:
      return SetVipCloneTime(buffStart);
    case INDEX_VipPointTransferNum:
      return SetVipPointTransferNum(buffStart);
    case INDEX_VipPointTransTime:
      return SetVipPointTransTime(buffStart);
    case INDEX_VipReliveNum:
      return SetVipReliveNum(buffStart);
    case INDEX_VipReliveTime:
      return SetVipReliveTime(buffStart);
    case INDEX_VipGiftTime:
      return SetVipGiftTime(buffStart);
    case INDEX_EWId:
      return SetEWId(buffStart);
    case INDEX_PreForce:
      return SetPreForce(buffStart);
    case INDEX_EWResFightState:
      return SetEWResFightState(buffStart);
    case INDEX_guildwar_offline_x:
      return Setguildwar_offline_x(buffStart);
    case INDEX_guildwar_offline_y:
      return Setguildwar_offline_y(buffStart);
    case INDEX_guildwar_offline_z:
      return Setguildwar_offline_z(buffStart);
    case INDEX_ChargeMode:
      return SetChargeMode(buffStart);
    case INDEX_ChargeTime:
      return SetChargeTime(buffStart);
    case INDEX_camp_war_task:
      return Setcamp_war_task(buffStart);
    case INDEX_camp_war_relive:
      return Setcamp_war_relive(buffStart);
    case INDEX_camp_war_pillar:
      return Setcamp_war_pillar(buffStart);
    case INDEX_RidePoint:
      return SetRidePoint(buffStart);
    case INDEX_IsHaveSecondWord:
      return SetIsHaveSecondWord(buffStart);
    case INDEX_WordBeLock:
      return SetWordBeLock(buffStart);
    case INDEX_WordCheckNum:
      return SetWordCheckNum(buffStart);
    case INDEX_IsCheckPass:
      return SetIsCheckPass(buffStart);
    case INDEX_NetBarRight:
      return SetNetBarRight(buffStart);
    case INDEX_NetBarReceiveState:
      return SetNetBarReceiveState(buffStart);
    case INDEX_NetBarDayPrize:
      return SetNetBarDayPrize(buffStart);
    case INDEX_SnDaNetBarRight:
      return SetSnDaNetBarRight(buffStart);
    case INDEX_SnDaReceiveState:
      return SetSnDaReceiveState(buffStart);
    case INDEX_SnDaNetBarDayPrize:
      return SetSnDaNetBarDayPrize(buffStart);
    case INDEX_ConfigID:
      return SetConfigID(buffStart);
    case INDEX_Resource:
      return SetResource(buffStart);
    case INDEX_GroupNum:
      return SetGroupNum(buffStart);
    case INDEX_CurrentTime:
      return SetCurrentTime(buffStart);
    case INDEX_ServerTime:
      return SetServerTime(buffStart);
    case INDEX_ProtoSceneID:
      return SetProtoSceneID(buffStart);
    case INDEX_CloneSceneID:
      return SetCloneSceneID(buffStart);
    case INDEX_Grouping:
      return SetGrouping(buffStart);
    case INDEX_HorseRaceCount:
      return SetHorseRaceCount(buffStart);
    case INDEX_CloneDifficulty:
      return SetCloneDifficulty(buffStart);
    case INDEX_NpcType:
      return SetNpcType(buffStart);
    case INDEX_MotionNoRotate:
      return SetMotionNoRotate(buffStart);
    case INDEX_NeedRotate:
      return SetNeedRotate(buffStart);
    case INDEX_Scale:
      return SetScale(buffStart);
    case INDEX_SelectState:
      return SetSelectState(buffStart);
    case INDEX_WarnType:
      return SetWarnType(buffStart);
    case INDEX_AIEffect:
      return SetAIEffect(buffStart);
    case INDEX_PatrolRange:
      return SetPatrolRange(buffStart);
    case INDEX_Owner:
      return SetOwner(buffStart);
    case INDEX_AttackPlayer:
      return SetAttackPlayer(buffStart);
    case INDEX_WeaponName:
      return SetWeaponName(buffStart);
    case INDEX_WeaponMode:
      return SetWeaponMode(buffStart);
    case INDEX_MasterID:
      return SetMasterID(buffStart);
    case INDEX_PathPointType:
      return SetPathPointType(buffStart);
    case INDEX_OwnerList:
      return SetOwnerList(buffStart);
    case INDEX_CollideType:
      return SetCollideType(buffStart);
    case INDEX_CantShowHeadInfo:
      return SetCantShowHeadInfo(buffStart);
    case INDEX_CanPick:
      return SetCanPick(buffStart);
    case INDEX_VisType:
      return SetVisType(buffStart);
    case INDEX_VisDataInt:
      return SetVisDataInt(buffStart);
    case INDEX_VisDataStr:
      return SetVisDataStr(buffStart);
    case INDEX_NPCCanSelect:
      return SetNPCCanSelect(buffStart);
    case INDEX_PeaceRandomAction:
      return SetPeaceRandomAction(buffStart);
    case INDEX_FightRandomAction:
      return SetFightRandomAction(buffStart);
    case INDEX_TalkRandomAction:
      return SetTalkRandomAction(buffStart);
    case INDEX_BornTime:
      return SetBornTime(buffStart);
    case INDEX_HeadEffect:
      return SetHeadEffect(buffStart);
    case INDEX_NpcNickName:
      return SetNpcNickName(buffStart);
    case INDEX_ExtraInfo:
      return SetExtraInfo(buffStart);
    case INDEX_Fixed:
      return SetFixed(buffStart);
    case INDEX_bAllVisible:
      return SetbAllVisible(buffStart);
    case INDEX_MainNpcChange:
      return SetMainNpcChange(buffStart);
    case INDEX_bNpcChange:
      return SetbNpcChange(buffStart);
    case INDEX_NpcChangeType:
      return SetNpcChangeType(buffStart);
    case INDEX_AttackNpcType:
      return SetAttackNpcType(buffStart);
    case INDEX_QueryData:
      return SetQueryData(buffStart);
    case INDEX_ConvoyType:
      return SetConvoyType(buffStart);
    case INDEX_Master:
      return SetMaster(buffStart);
    case INDEX_SpringType:
      return SetSpringType(buffStart);
    case INDEX_RoadSignID:
      return SetRoadSignID(buffStart);
    case INDEX_MaterialPath:
      return SetMaterialPath(buffStart);
    case INDEX_BelongType:
      return SetBelongType(buffStart);
    case INDEX_BelongID:
      return SetBelongID(buffStart);
    case INDEX_PointMaxValue:
      return SetPointMaxValue(buffStart);
    case INDEX_PointCurrentValue:
      return SetPointCurrentValue(buffStart);
    case INDEX_RollSpeed:
      return SetRollSpeed(buffStart);
    case INDEX_TransPath:
      return SetTransPath(buffStart);
    case INDEX_TransStep:
      return SetTransStep(buffStart);
    case INDEX_TransSecID:
      return SetTransSecID(buffStart);
    case INDEX_CarrierType:
      return SetCarrierType(buffStart);
    case INDEX_CarrierCtlType:
      return SetCarrierCtlType(buffStart);
    case INDEX_CarrierDownInFight:
      return SetCarrierDownInFight(buffStart);
    case INDEX_CarrierViewAngle:
      return SetCarrierViewAngle(buffStart);
    case INDEX_CarrierAy:
      return SetCarrierAy(buffStart);
    case INDEX_FaceAngle:
      return SetFaceAngle(buffStart);
    case INDEX_MainObj:
      return SetMainObj(buffStart);
    case INDEX_SeatIndex:
      return SetSeatIndex(buffStart);
    case INDEX_EnergyWellID:
      return SetEnergyWellID(buffStart);
    case INDEX_IsPlayGetOnAction:
      return SetIsPlayGetOnAction(buffStart);
    case INDEX_EWCarrierID:
      return SetEWCarrierID(buffStart);
    case INDEX_EWCarrierState:
      return SetEWCarrierState(buffStart);
    case INDEX_CarrierOwner:
      return SetCarrierOwner(buffStart);
    case INDEX_AmmoValue:
      return SetAmmoValue(buffStart);
    case INDEX_AmmoValueMax:
      return SetAmmoValueMax(buffStart);
    case INDEX_AmmoNum:
      return SetAmmoNum(buffStart);
    case INDEX_LockAction:
      return SetLockAction(buffStart);
    case INDEX_CanBeKilled:
      return SetCanBeKilled(buffStart);
    case INDEX_CantBeLtd:
      return SetCantBeLtd(buffStart);
    case INDEX_CantBeLtdSpd:
      return SetCantBeLtdSpd(buffStart);
    case INDEX_CantBeLtdHitMove:
      return SetCantBeLtdHitMove(buffStart);
    case INDEX_CantBeLtdMove:
      return SetCantBeLtdMove(buffStart);
    case INDEX_CantBeLtdUseSkill:
      return SetCantBeLtdUseSkill(buffStart);
    case INDEX_CantBeLtdAttack:
      return SetCantBeLtdAttack(buffStart);
    case INDEX_CantBeLtdShift:
      return SetCantBeLtdShift(buffStart);
    case INDEX_CantBeLtdRotate:
      return SetCantBeLtdRotate(buffStart);
    case INDEX_StrCantUseSkill:
      return SetStrCantUseSkill(buffStart);
    case INDEX_StrCantUseSkillAdd:
      return SetStrCantUseSkillAdd(buffStart);
    case INDEX_damagedeffect:
      return Setdamagedeffect(buffStart);
    case INDEX_StrengthType:
      return SetStrengthType(buffStart);
    case INDEX_GeneralType:
      return SetGeneralType(buffStart);
    case INDEX_Species:
      return SetSpecies(buffStart);
    case INDEX_ItemType:
      return SetItemType(buffStart);
    case INDEX_ColorLevel:
      return SetColorLevel(buffStart);
    case INDEX_UniqueID:
      return SetUniqueID(buffStart);
    case INDEX_Amount:
      return SetAmount(buffStart);
    case INDEX_MaxAmount:
      return SetMaxAmount(buffStart);
    case INDEX_Task:
      return SetTask(buffStart);
    case INDEX_BindType:
      return SetBindType(buffStart);
    case INDEX_BindStatus:
      return SetBindStatus(buffStart);
    case INDEX_IsCanConsign:
      return SetIsCanConsign(buffStart);
    case INDEX_LockStatus:
      return SetLockStatus(buffStart);
    case INDEX_BuyType:
      return SetBuyType(buffStart);
    case INDEX_SellPrice0:
      return SetSellPrice0(buffStart);
    case INDEX_SellPrice1:
      return SetSellPrice1(buffStart);
    case INDEX_BuyPrice0:
      return SetBuyPrice0(buffStart);
    case INDEX_BuyPrice1:
      return SetBuyPrice1(buffStart);
    case INDEX_ArtPack:
      return SetArtPack(buffStart);
    case INDEX_ExpiredTime:
      return SetExpiredTime(buffStart);
    case INDEX_ValidTime:
      return SetValidTime(buffStart);
    case INDEX_NotValid:
      return SetNotValid(buffStart);
    case INDEX_LeftTime:
      return SetLeftTime(buffStart);
    case INDEX_ItemCosts:
      return SetItemCosts(buffStart);
    case INDEX_MaxBuyNumPer:
      return SetMaxBuyNumPer(buffStart);
    case INDEX_BuyConditionID:
      return SetBuyConditionID(buffStart);
    case INDEX_BuyNumLimit:
      return SetBuyNumLimit(buffStart);
    case INDEX_BuyNumRest:
      return SetBuyNumRest(buffStart);
    case INDEX_BuyCoolTime:
      return SetBuyCoolTime(buffStart);
    case INDEX_BuyCoolTimeRest:
      return SetBuyCoolTimeRest(buffStart);
    case INDEX_ShopBuyPrice:
      return SetShopBuyPrice(buffStart);
    case INDEX_Hardiness:
      return SetHardiness(buffStart);
    case INDEX_MaxHardiness:
      return SetMaxHardiness(buffStart);
    case INDEX_PropPack:
      return SetPropPack(buffStart);
    case INDEX_PropBuilt:
      return SetPropBuilt(buffStart);
    case INDEX_PropRanBuilt:
      return SetPropRanBuilt(buffStart);
    case INDEX_EquipType:
      return SetEquipType(buffStart);
    case INDEX_SkillRand:
      return SetSkillRand(buffStart);
    case INDEX_EquipSetSkillRand:
      return SetEquipSetSkillRand(buffStart);
    case INDEX_CurHoleCount:
      return SetCurHoleCount(buffStart);
    case INDEX_StarLevel:
      return SetStarLevel(buffStart);
    case INDEX_Proadd:
      return SetProadd(buffStart);
    case INDEX_AppendLefttime:
      return SetAppendLefttime(buffStart);
    case INDEX_PetConfigID:
      return SetPetConfigID(buffStart);
    case INDEX_SpecialType:
      return SetSpecialType(buffStart);
    case INDEX_EnergyValue:
      return SetEnergyValue(buffStart);
    case INDEX_MaxEnergyValue:
      return SetMaxEnergyValue(buffStart);
    case INDEX_EnergyExpLv:
      return SetEnergyExpLv(buffStart);
    case INDEX_EnergyExp:
      return SetEnergyExp(buffStart);
    case INDEX_NeedEnergy:
      return SetNeedEnergy(buffStart);
    case INDEX_ArmorType:
      return SetArmorType(buffStart);
    case INDEX_HoldType:
      return SetHoldType(buffStart);
    case INDEX_HandPos:
      return SetHandPos(buffStart);
    case INDEX_JewelLevel:
      return SetJewelLevel(buffStart);
    case INDEX_Energy:
      return SetEnergy(buffStart);
    case INDEX_BeginPos:
      return SetBeginPos(buffStart);
    case INDEX_EndPos:
      return SetEndPos(buffStart);
    case INDEX_FormulaPack:
      return SetFormulaPack(buffStart);
    case INDEX_UseCount:
      return SetUseCount(buffStart);
    case INDEX_Picture:
      return SetPicture(buffStart);
    case INDEX_RealArea:
      return SetRealArea(buffStart);
    case INDEX_MapArea:
      return SetMapArea(buffStart);
    case INDEX_HasOpenFlag:
      return SetHasOpenFlag(buffStart);
    case INDEX_CanUse:
      return SetCanUse(buffStart);
    case INDEX_BaseCap:
      return SetBaseCap(buffStart);
    case INDEX_MaxItemNum:
      return SetMaxItemNum(buffStart);
    case INDEX_ShopID:
      return SetShopID(buffStart);
    case INDEX_NumPerPage:
      return SetNumPerPage(buffStart);
    case INDEX_RepairType:
      return SetRepairType(buffStart);
    case INDEX_FineRepairFeeCoe:
      return SetFineRepairFeeCoe(buffStart);
    case INDEX_NormalRepairFeeCoe:
      return SetNormalRepairFeeCoe(buffStart);
    case INDEX_HardinessRecoverFeeCoe:
      return SetHardinessRecoverFeeCoe(buffStart);
    case INDEX_Discount:
      return SetDiscount(buffStart);
    case INDEX_ShopCondition:
      return SetShopCondition(buffStart);
    case INDEX_BeActived:
      return SetBeActived(buffStart);
    case INDEX_AConsumeCurHP:
      return SetAConsumeCurHP(buffStart);
    case INDEX_PConsumeCurHP:
      return SetPConsumeCurHP(buffStart);
    case INDEX_AConsumeCurMP:
      return SetAConsumeCurMP(buffStart);
    case INDEX_PConsumeCurMP:
      return SetPConsumeCurMP(buffStart);
    case INDEX_AConsumeEnergy:
      return SetAConsumeEnergy(buffStart);
    case INDEX_PConsumeEnergy:
      return SetPConsumeEnergy(buffStart);
    case INDEX_AConsumeCuranger:
      return SetAConsumeCuranger(buffStart);
    case INDEX_PConsumeCuranger:
      return SetPConsumeCuranger(buffStart);
    case INDEX_AConsumeCurmobile:
      return SetAConsumeCurmobile(buffStart);
    case INDEX_PConsumeCurmobile:
      return SetPConsumeCurmobile(buffStart);
    case INDEX_AConsumeCurFS:
      return SetAConsumeCurFS(buffStart);
    case INDEX_PConsumeCurFS:
      return SetPConsumeCurFS(buffStart);
    case INDEX_AConsumeCurDP:
      return SetAConsumeCurDP(buffStart);
    case INDEX_PConsumeCurDP:
      return SetPConsumeCurDP(buffStart);
    case INDEX_AConsumeCurARMHP:
      return SetAConsumeCurARMHP(buffStart);
    case INDEX_AConsumeCurARMEY:
      return SetAConsumeCurARMEY(buffStart);
    case INDEX_AConsumeRFC:
      return SetAConsumeRFC(buffStart);
    case INDEX_AConsumeAmmo:
      return SetAConsumeAmmo(buffStart);
    case INDEX_ConsumeItemID:
      return SetConsumeItemID(buffStart);
    case INDEX_ConsumeItemCount:
      return SetConsumeItemCount(buffStart);
    case INDEX_LifeTime:
      return SetLifeTime(buffStart);
    case INDEX_IsDamage:
      return SetIsDamage(buffStart);
    case INDEX_TargetClassType:
      return SetTargetClassType(buffStart);
    case INDEX_TargetRelationType:
      return SetTargetRelationType(buffStart);
    case INDEX_EffectRange:
      return SetEffectRange(buffStart);
    case INDEX_EventProcess:
      return SetEventProcess(buffStart);
    case INDEX_Buff_Display:
      return SetBuff_Display(buffStart);
    case INDEX_Description:
      return SetDescription(buffStart);
    case INDEX_ExchangeMoney:
      return SetExchangeMoney(buffStart);
    case INDEX_ExchangeIsLock:
      return SetExchangeIsLock(buffStart);
    case INDEX_ExchangeIsOk:
      return SetExchangeIsOk(buffStart);
    case INDEX_ExchangeTarget:
      return SetExchangeTarget(buffStart);
    case INDEX_ExchangeTargetLevel:
      return SetExchangeTargetLevel(buffStart);
    case INDEX_ExchangeTargetJob:
      return SetExchangeTargetJob(buffStart);
    case INDEX_ExchangeTargetObj:
      return SetExchangeTargetObj(buffStart);
    }
}
void GAMEOBJECT::SetType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    Type = value[0];
}
void GAMEOBJECT::SetSex(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    Sex = value[0];
}
void GAMEOBJECT::SetPhoto(char*& buffStart)
{
   buffStart += 4;
   Photo = (char*)buffStart; 
}
void GAMEOBJECT::SetCamp(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Camp = value[0];
}
void GAMEOBJECT::SetRace(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Race = value[0];
}
void GAMEOBJECT::SetJob(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Job = value[0];
}
void GAMEOBJECT::SetLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Level = value[0];
}
void GAMEOBJECT::SetCurArea(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CurArea = value[0];
}
void GAMEOBJECT::SetSceneTriggerConfig(char*& buffStart)
{
   buffStart += 4;
   SceneTriggerConfig = (char*)buffStart; 
}
void GAMEOBJECT::SetToolEffect(char*& buffStart)
{
   buffStart += 4;
   ToolEffect = (char*)buffStart; 
}
void GAMEOBJECT::SetSkillEnergyList(char*& buffStart)
{
   buffStart += 4;
   SkillEnergyList = (char*)buffStart; 
}
void GAMEOBJECT::SetHideSkillTip(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HideSkillTip = value[0];
}
void GAMEOBJECT::SetCoin_LLQD(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Coin_LLQD = value[0];
}
void GAMEOBJECT::SetDelaySkillTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    DelaySkillTime = value[0];
}
void GAMEOBJECT::SetPre_SceneID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Pre_SceneID = value[0];
}
void GAMEOBJECT::SetPre_PosX(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    Pre_PosX = value[0];
}
void GAMEOBJECT::SetPre_PosY(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    Pre_PosY = value[0];
}
void GAMEOBJECT::SetPre_PosZ(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    Pre_PosZ = value[0];
}
void GAMEOBJECT::SetMountItemId(char*& buffStart)
{
   buffStart += 4;
   MountItemId = (char*)buffStart; 
}
void GAMEOBJECT::SetWedgedTime(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    WedgedTime = value[0];
}
void GAMEOBJECT::SetEnergyLevel(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    EnergyLevel = value[0];
}
void GAMEOBJECT::SetEnergyUpgradeNum(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    EnergyUpgradeNum = value[0];
}
void GAMEOBJECT::SetEnergyPreUpgradeNum(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    EnergyPreUpgradeNum = value[0];
}
void GAMEOBJECT::SetSpecState(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    SpecState = value[0];
}
void GAMEOBJECT::SetIsHunterTreasure(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    IsHunterTreasure = value[0];
}
void GAMEOBJECT::SetAdjustOrient(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    AdjustOrient = value[0];
}
void GAMEOBJECT::SetName(char*& buffStart)
{
   buffStart += 4;
   Name = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetCollideRadius(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    CollideRadius = value[0];
}
void GAMEOBJECT::SetVisualRange(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    VisualRange = value[0];
}
void GAMEOBJECT::SetMPUpSpeed(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MPUpSpeed = value[0];
}
void GAMEOBJECT::SetMPUpSpeedAdd(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MPUpSpeedAdd = value[0];
}
void GAMEOBJECT::SetState(char*& buffStart)
{
   buffStart += 4;
   State = (char*)buffStart; 
}
void GAMEOBJECT::SetFloatingState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    FloatingState = value[0];
}
void GAMEOBJECT::SetFashionState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    FashionState = value[0];
}
void GAMEOBJECT::SetMaxHPAdd(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxHPAdd = value[0];
}
void GAMEOBJECT::SetMaxMPAdd(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxMPAdd = value[0];
}
void GAMEOBJECT::SetHPRatio(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HPRatio = value[0];
}
void GAMEOBJECT::SetMPRatio(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MPRatio = value[0];
}
void GAMEOBJECT::SetMaxHP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxHP = value[0];
}
void GAMEOBJECT::SetMaxMP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxMP = value[0];
}
void GAMEOBJECT::SetHP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HP = value[0];
}
void GAMEOBJECT::SetMP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MP = value[0];
}
void GAMEOBJECT::SetArmHPUpSpeed(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArmHPUpSpeed = value[0];
}
void GAMEOBJECT::SetArmEYUpSpeed(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArmEYUpSpeed = value[0];
}
void GAMEOBJECT::SetCantMove(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantMove = value[0];
}
void GAMEOBJECT::SetCantMoveAdd(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantMoveAdd = value[0];
}
void GAMEOBJECT::SetCantRotate(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantRotate = value[0];
}
void GAMEOBJECT::SetCantAttack(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantAttack = value[0];
}
void GAMEOBJECT::SetCantBeAttack(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeAttack = value[0];
}
void GAMEOBJECT::SetCantBeAttack2(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeAttack2 = value[0];
}
void GAMEOBJECT::SetCantUseSkill(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantUseSkill = value[0];
}
void GAMEOBJECT::SetCantUseSkillAdd(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantUseSkillAdd = value[0];
}
void GAMEOBJECT::SetCantUseItem(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantUseItem = value[0];
}
void GAMEOBJECT::SetCantUseItemAdd(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantUseItemAdd = value[0];
}
void GAMEOBJECT::SetCantRotateAdd(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantRotateAdd = value[0];
}
void GAMEOBJECT::SetCantAttackAdd(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantAttackAdd = value[0];
}
void GAMEOBJECT::SetPauseAction(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PauseAction = value[0];
}
void GAMEOBJECT::SetCantJump(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantJump = value[0];
}
void GAMEOBJECT::SetRoleHide(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RoleHide = value[0];
}
void GAMEOBJECT::SetTrueSight(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    TrueSight = value[0];
}
void GAMEOBJECT::SetShowHide(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ShowHide = value[0];
}
void GAMEOBJECT::SetAreaHide(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AreaHide = value[0];
}
void GAMEOBJECT::SetWarFogRadius(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    WarFogRadius = value[0];
}
void GAMEOBJECT::SetHideActionSet(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HideActionSet = value[0];
}
void GAMEOBJECT::SetFightPower(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    FightPower = value[0];
}
void GAMEOBJECT::SetRC(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RC = value[0];
}
void GAMEOBJECT::SetAV(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AV = value[0];
}
void GAMEOBJECT::SetEY(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EY = value[0];
}
void GAMEOBJECT::SetFS(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    FS = value[0];
}
void GAMEOBJECT::SetDP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    DP = value[0];
}
void GAMEOBJECT::SetRCRatio(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RCRatio = value[0];
}
void GAMEOBJECT::SetAVRatio(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AVRatio = value[0];
}
void GAMEOBJECT::SetEYRatio(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EYRatio = value[0];
}
void GAMEOBJECT::SetFSRatio(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    FSRatio = value[0];
}
void GAMEOBJECT::SetDPRatio(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    DPRatio = value[0];
}
void GAMEOBJECT::SetMaxRC(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxRC = value[0];
}
void GAMEOBJECT::SetMaxAV(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxAV = value[0];
}
void GAMEOBJECT::SetMaxEY(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxEY = value[0];
}
void GAMEOBJECT::SetMaxFS(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxFS = value[0];
}
void GAMEOBJECT::SetMaxDP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxDP = value[0];
}
void GAMEOBJECT::SetMaxRCAdd(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxRCAdd = value[0];
}
void GAMEOBJECT::SetMaxAVAdd(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxAVAdd = value[0];
}
void GAMEOBJECT::SetMaxEYAdd(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxEYAdd = value[0];
}
void GAMEOBJECT::SetMaxFSAdd(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxFSAdd = value[0];
}
void GAMEOBJECT::SetMaxDPAdd(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxDPAdd = value[0];
}
void GAMEOBJECT::SetGravity(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    Gravity = value[0];
}
void GAMEOBJECT::SetJumpSpeed(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    JumpSpeed = value[0];
}
void GAMEOBJECT::SetMoveSpeed(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    MoveSpeed = value[0];
}
void GAMEOBJECT::SetWalkSpeed(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    WalkSpeed = value[0];
}
void GAMEOBJECT::SetRunSpeed(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    RunSpeed = value[0];
}
void GAMEOBJECT::SetDropHeightPub(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    DropHeightPub = value[0];
}
void GAMEOBJECT::SetRunSpeedAdd(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    RunSpeedAdd = value[0];
}
void GAMEOBJECT::SetSpeedRatio(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SpeedRatio = value[0];
}
void GAMEOBJECT::SetRequestSet(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RequestSet = value[0];
}
void GAMEOBJECT::SetArtKey(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArtKey = value[0];
}
void GAMEOBJECT::SetHidePlayer(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HidePlayer = value[0];
}
void GAMEOBJECT::SetHideOtherPet(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HideOtherPet = value[0];
}
void GAMEOBJECT::SetFace(char*& buffStart)
{
   buffStart += 4;
   Face = (char*)buffStart; 
}
void GAMEOBJECT::SetEyes(char*& buffStart)
{
   buffStart += 4;
   Eyes = (char*)buffStart; 
}
void GAMEOBJECT::SetBeard(char*& buffStart)
{
   buffStart += 4;
   Beard = (char*)buffStart; 
}
void GAMEOBJECT::SetEars(char*& buffStart)
{
   buffStart += 4;
   Ears = (char*)buffStart; 
}
void GAMEOBJECT::SetTail(char*& buffStart)
{
   buffStart += 4;
   Tail = (char*)buffStart; 
}
void GAMEOBJECT::SetFinger(char*& buffStart)
{
   buffStart += 4;
   Finger = (char*)buffStart; 
}
void GAMEOBJECT::SetHideParts(char*& buffStart)
{
   buffStart += 4;
   HideParts = (char*)buffStart; 
}
void GAMEOBJECT::SetHideSkins(char*& buffStart)
{
   buffStart += 4;
   HideSkins = (char*)buffStart; 
}
void GAMEOBJECT::SetStature(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Stature = value[0];
}
void GAMEOBJECT::SetTattooColor(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    TattooColor = value[0];
}
void GAMEOBJECT::SetSkinMtl(char*& buffStart)
{
   buffStart += 4;
   SkinMtl = (char*)buffStart; 
}
void GAMEOBJECT::SetHairColor(char*& buffStart)
{
   buffStart += 4;
   HairColor = (char*)buffStart; 
}
void GAMEOBJECT::SetSkinColor(char*& buffStart)
{
   buffStart += 4;
   SkinColor = (char*)buffStart; 
}
void GAMEOBJECT::SetHat(char*& buffStart)
{
   buffStart += 4;
   Hat = (char*)buffStart; 
}
void GAMEOBJECT::SetCloth(char*& buffStart)
{
   buffStart += 4;
   Cloth = (char*)buffStart; 
}
void GAMEOBJECT::SetPants(char*& buffStart)
{
   buffStart += 4;
   Pants = (char*)buffStart; 
}
void GAMEOBJECT::SetShoes(char*& buffStart)
{
   buffStart += 4;
   Shoes = (char*)buffStart; 
}
void GAMEOBJECT::SetGloves(char*& buffStart)
{
   buffStart += 4;
   Gloves = (char*)buffStart; 
}
void GAMEOBJECT::SetTattoo(char*& buffStart)
{
   buffStart += 4;
   Tattoo = (char*)buffStart; 
}
void GAMEOBJECT::SetSpecial(char*& buffStart)
{
   buffStart += 4;
   Special = (char*)buffStart; 
}
void GAMEOBJECT::SetMantle(char*& buffStart)
{
   buffStart += 4;
   Mantle = (char*)buffStart; 
}
void GAMEOBJECT::SetTrait(char*& buffStart)
{
   buffStart += 4;
   Trait = (char*)buffStart; 
}
void GAMEOBJECT::SetLWeapon(char*& buffStart)
{
   buffStart += 4;
   LWeapon = (char*)buffStart; 
}
void GAMEOBJECT::SetRWeapon(char*& buffStart)
{
   buffStart += 4;
   RWeapon = (char*)buffStart; 
}
void GAMEOBJECT::SetLWeaponID(char*& buffStart)
{
   buffStart += 4;
   LWeaponID = (char*)buffStart; 
}
void GAMEOBJECT::SetRWeaponID(char*& buffStart)
{
   buffStart += 4;
   RWeaponID = (char*)buffStart; 
}
void GAMEOBJECT::SetActionSet(char*& buffStart)
{
   buffStart += 4;
   ActionSet = (char*)buffStart; 
}
void GAMEOBJECT::SetHandType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    HandType = value[0];
}
void GAMEOBJECT::SetWeaponState(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    WeaponState = value[0];
}
void GAMEOBJECT::SetWeaponStateType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    WeaponStateType = value[0];
}
void GAMEOBJECT::SetLArmorWeapon(char*& buffStart)
{
   buffStart += 4;
   LArmorWeapon = (char*)buffStart; 
}
void GAMEOBJECT::SetRArmorWeapon(char*& buffStart)
{
   buffStart += 4;
   RArmorWeapon = (char*)buffStart; 
}
void GAMEOBJECT::SetLArmorWeaponID(char*& buffStart)
{
   buffStart += 4;
   LArmorWeaponID = (char*)buffStart; 
}
void GAMEOBJECT::SetRArmorWeaponID(char*& buffStart)
{
   buffStart += 4;
   RArmorWeaponID = (char*)buffStart; 
}
void GAMEOBJECT::SetHeadDetail(char*& buffStart)
{
   buffStart += 4;
   HeadDetail = (char*)buffStart; 
}
void GAMEOBJECT::SetLastObject(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    LastObject = value[0];
}
void GAMEOBJECT::SetUnenthrallTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    UnenthrallTime = value[0];
}
void GAMEOBJECT::SetPKMode(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    PKMode = value[0];
}
void GAMEOBJECT::SetPKValue(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PKValue = value[0];
}
void GAMEOBJECT::SetShaQi(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ShaQi = value[0];
}
void GAMEOBJECT::SetArenaSide(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArenaSide = value[0];
}
void GAMEOBJECT::SetArrestValue(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    ArrestValue = value[0];
}
void GAMEOBJECT::SetArrestState(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    ArrestState = value[0];
}
void GAMEOBJECT::SetRedNameEffect(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RedNameEffect = value[0];
}
void GAMEOBJECT::SetChangePKModule(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    ChangePKModule = value[0];
}
void GAMEOBJECT::SetPKProtected(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PKProtected = value[0];
}
void GAMEOBJECT::SetChallengeState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ChallengeState = value[0];
}
void GAMEOBJECT::SetChallengeName(char*& buffStart)
{
   buffStart += 4;
   ChallengeName = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetLogicState(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    LogicState = value[0];
}
void GAMEOBJECT::SetDead(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    Dead = value[0];
}
void GAMEOBJECT::SetGuardSkill(char*& buffStart)
{
   buffStart += 4;
   GuardSkill = (char*)buffStart; 
}
void GAMEOBJECT::SetModelScale(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    ModelScale = value[0];
}
void GAMEOBJECT::SetPvpFlag(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    PvpFlag = value[0];
}
void GAMEOBJECT::SetPvpType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    PvpType = value[0];
}
void GAMEOBJECT::SetHPConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HPConsumeInc = value[0];
}
void GAMEOBJECT::SetMPConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MPConsumeInc = value[0];
}
void GAMEOBJECT::SetEYConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EYConsumeInc = value[0];
}
void GAMEOBJECT::SetRCConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RCConsumeInc = value[0];
}
void GAMEOBJECT::SetAVConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AVConsumeInc = value[0];
}
void GAMEOBJECT::SetFSConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    FSConsumeInc = value[0];
}
void GAMEOBJECT::SetDPConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    DPConsumeInc = value[0];
}
void GAMEOBJECT::SetARMHPConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ARMHPConsumeInc = value[0];
}
void GAMEOBJECT::SetARMEYConsumeInc(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ARMEYConsumeInc = value[0];
}
void GAMEOBJECT::SetHPConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    HPConsumeMul = value[0];
}
void GAMEOBJECT::SetMPConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    MPConsumeMul = value[0];
}
void GAMEOBJECT::SetEYConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    EYConsumeMul = value[0];
}
void GAMEOBJECT::SetRCConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    RCConsumeMul = value[0];
}
void GAMEOBJECT::SetAVConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    AVConsumeMul = value[0];
}
void GAMEOBJECT::SetFSConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    FSConsumeMul = value[0];
}
void GAMEOBJECT::SetDPConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    DPConsumeMul = value[0];
}
void GAMEOBJECT::SetARMHPConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    ARMHPConsumeMul = value[0];
}
void GAMEOBJECT::SetARMEYConsumeMul(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    ARMEYConsumeMul = value[0];
}
void GAMEOBJECT::SetShamDead(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ShamDead = value[0];
}
void GAMEOBJECT::SetCurSkillID(char*& buffStart)
{
   buffStart += 4;
   CurSkillID = (char*)buffStart; 
}
void GAMEOBJECT::SetCurSkillEffectID(char*& buffStart)
{
   buffStart += 4;
   CurSkillEffectID = (char*)buffStart; 
}
void GAMEOBJECT::SetCurSkillTarget(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    CurSkillTarget = value[0];
}
void GAMEOBJECT::SetCurSkillLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CurSkillLevel = value[0];
}
void GAMEOBJECT::SetBufferListStr(char*& buffStart)
{
   buffStart += 4;
   BufferListStr = (char*)buffStart; 
}
void GAMEOBJECT::SetPrepareTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PrepareTime = value[0];
}
void GAMEOBJECT::SetLeadTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LeadTime = value[0];
}
void GAMEOBJECT::SetTargetShapePara1(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    TargetShapePara1 = value[0];
}
void GAMEOBJECT::SetTargetShapePara2(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    TargetShapePara2 = value[0];
}
void GAMEOBJECT::SetHitShapePara1(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    HitShapePara1 = value[0];
}
void GAMEOBJECT::SetHitShapePara2(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    HitShapePara2 = value[0];
}
void GAMEOBJECT::SetCoolDownTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CoolDownTime = value[0];
}
void GAMEOBJECT::SetOnTransToolState(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    OnTransToolState = value[0];
}
void GAMEOBJECT::SetLinkObj(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    LinkObj = value[0];
}
void GAMEOBJECT::SetOnSwitchTransState(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    OnSwitchTransState = value[0];
}
void GAMEOBJECT::SetTransToolID(char*& buffStart)
{
   buffStart += 4;
   TransToolID = (char*)buffStart; 
}
void GAMEOBJECT::SetFlyStep(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    FlyStep = value[0];
}
void GAMEOBJECT::SetFromTo(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    FromTo = value[0];
}
void GAMEOBJECT::SetStoreHeight(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    StoreHeight = value[0];
}
void GAMEOBJECT::SetUnderWaterSpeed(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    UnderWaterSpeed = value[0];
}
void GAMEOBJECT::SetCurUnderWaterValue(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    CurUnderWaterValue = value[0];
}
void GAMEOBJECT::SetTransJobList(char*& buffStart)
{
   buffStart += 4;
   TransJobList = (char*)buffStart; 
}
void GAMEOBJECT::SetCantTransJob(char*& buffStart)
{
   buffStart += 4;
   CantTransJob = (char*)buffStart; 
}
void GAMEOBJECT::SetDoTransJob(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    DoTransJob = value[0];
}
void GAMEOBJECT::SetTransConditionId(char*& buffStart)
{
   buffStart += 4;
   TransConditionId = (char*)buffStart; 
}
void GAMEOBJECT::SetCurInsPoint(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CurInsPoint = value[0];
}
void GAMEOBJECT::SetExileStatus(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ExileStatus = value[0];
}
void GAMEOBJECT::SetForce(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Force = value[0];
}
void GAMEOBJECT::SetGuildName(char*& buffStart)
{
   buffStart += 4;
   GuildName = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetGuildPosition(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    GuildPosition = value[0];
}
void GAMEOBJECT::SetMountID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MountID = value[0];
}
void GAMEOBJECT::SetMountItemID(char*& buffStart)
{
   buffStart += 4;
   MountItemID = (char*)buffStart; 
}
void GAMEOBJECT::SetMountType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    MountType = value[0];
}
void GAMEOBJECT::SetMountSeatIndex(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MountSeatIndex = value[0];
}
void GAMEOBJECT::SetMultiSeatNum(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    MultiSeatNum = value[0];
}
void GAMEOBJECT::SetSeatPlayer2(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    SeatPlayer2 = value[0];
}
void GAMEOBJECT::SetSeatPlayer3(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    SeatPlayer3 = value[0];
}
void GAMEOBJECT::SetSeatPlayer4(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    SeatPlayer4 = value[0];
}
void GAMEOBJECT::SetSeatPlayer5(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    SeatPlayer5 = value[0];
}
void GAMEOBJECT::SetSafeTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SafeTime = value[0];
}
void GAMEOBJECT::SetCurSafeTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CurSafeTime = value[0];
}
void GAMEOBJECT::SetSafeModeEquipLv(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    SafeModeEquipLv = value[0];
}
void GAMEOBJECT::SetSafeModeEquipStar(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    SafeModeEquipStar = value[0];
}
void GAMEOBJECT::SetIsHaveSafeModePsw(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    IsHaveSafeModePsw = value[0];
}
void GAMEOBJECT::SetIsSafeModeUnLock(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    IsSafeModeUnLock = value[0];
}
void GAMEOBJECT::SetSafeModeEquipStr(char*& buffStart)
{
   buffStart += 4;
   SafeModeEquipStr = (char*)buffStart; 
}
void GAMEOBJECT::SetSafeModeJewelStr(char*& buffStart)
{
   buffStart += 4;
   SafeModeJewelStr = (char*)buffStart; 
}
void GAMEOBJECT::SetLastOffLineTime(char*& buffStart)
{
    double* value = (double*)buffStart;
    buffStart += sizeof(double);
    LastOffLineTime = value[0];
}
void GAMEOBJECT::SetLastAddress(char*& buffStart)
{
   buffStart += 4;
   LastAddress = (char*)buffStart; 
}
void GAMEOBJECT::SetTeamID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    TeamID = value[0];
}
void GAMEOBJECT::SetTeamCaptain(char*& buffStart)
{
   buffStart += 4;
   TeamCaptain = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetTeamPickMode(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    TeamPickMode = value[0];
}
void GAMEOBJECT::SetTeamPickQuality(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    TeamPickQuality = value[0];
}
void GAMEOBJECT::SetTeamType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    TeamType = value[0];
}
void GAMEOBJECT::SetAcceptRequest(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    AcceptRequest = value[0];
}
void GAMEOBJECT::SetCurMembers(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CurMembers = value[0];
}
void GAMEOBJECT::SetTeamSceneSign(char*& buffStart)
{
   buffStart += 4;
   TeamSceneSign = (char*)buffStart; 
}
void GAMEOBJECT::SetSTeamCaptain(char*& buffStart)
{
   buffStart += 4;
   STeamCaptain = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetSTeamType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    STeamType = value[0];
}
void GAMEOBJECT::SetShortcutKey(char*& buffStart)
{
   buffStart += 4;
   ShortcutKey = (char*)buffStart; 
}
void GAMEOBJECT::SetGunManLeftSkill(char*& buffStart)
{
   buffStart += 4;
   GunManLeftSkill = (char*)buffStart; 
}
void GAMEOBJECT::SetCurCloneSceneLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CurCloneSceneLevel = value[0];
}
void GAMEOBJECT::SetCloneSceneScoreTop(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    CloneSceneScoreTop = value[0];
}
void GAMEOBJECT::SetCloneScoreTopRefreshTime(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    CloneScoreTopRefreshTime = value[0];
}
void GAMEOBJECT::SetCloneWeekLimitCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CloneWeekLimitCount = value[0];
}
void GAMEOBJECT::SetCloneWeekLimitCountMax(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CloneWeekLimitCountMax = value[0];
}
void GAMEOBJECT::SetTitleID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    TitleID = value[0];
}
void GAMEOBJECT::SetGunMan(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    GunMan = value[0];
}
void GAMEOBJECT::SetGunManBullet(char*& buffStart)
{
   buffStart += 4;
   GunManBullet = (char*)buffStart; 
}
void GAMEOBJECT::SetRFC(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RFC = value[0];
}
void GAMEOBJECT::SetChatRoomID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ChatRoomID = value[0];
}
void GAMEOBJECT::SetChatRoomTitle(char*& buffStart)
{
   buffStart += 4;
   ChatRoomTitle = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetCurrentESId(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CurrentESId = value[0];
}
void GAMEOBJECT::SetArenaID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArenaID = value[0];
}
void GAMEOBJECT::SetArenaState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArenaState = value[0];
}
void GAMEOBJECT::SetArenaSinglePoints(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArenaSinglePoints = value[0];
}
void GAMEOBJECT::SetArenaTeamName(char*& buffStart)
{
   buffStart += 4;
   ArenaTeamName = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetIsArenaTeamCaptain(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    IsArenaTeamCaptain = value[0];
}
void GAMEOBJECT::SetArenaTeamType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArenaTeamType = value[0];
}
void GAMEOBJECT::SetArenaMatchType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArenaMatchType = value[0];
}
void GAMEOBJECT::SetArenaKill(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArenaKill = value[0];
}
void GAMEOBJECT::SetAchievePoint(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AchievePoint = value[0];
}
void GAMEOBJECT::SetActDegree(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ActDegree = value[0];
}
void GAMEOBJECT::SetActPhase(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    ActPhase = value[0];
}
void GAMEOBJECT::SetBattleWarState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BattleWarState = value[0];
}
void GAMEOBJECT::SetLeaveGive(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LeaveGive = value[0];
}
void GAMEOBJECT::SetBattleWarID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BattleWarID = value[0];
}
void GAMEOBJECT::SetBattleWarRand(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BattleWarRand = value[0];
}
void GAMEOBJECT::SetMaxKeepKillNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxKeepKillNum = value[0];
}
void GAMEOBJECT::SetMaxKillEnemyNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxKillEnemyNum = value[0];
}
void GAMEOBJECT::SetBWDeadNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BWDeadNum = value[0];
}
void GAMEOBJECT::SetCampaignStatus(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    CampaignStatus = value[0];
}
void GAMEOBJECT::SetMainRoleChange(char*& buffStart)
{
   buffStart += 4;
   MainRoleChange = (char*)buffStart; 
}
void GAMEOBJECT::SetPreChangeIndex(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PreChangeIndex = value[0];
}
void GAMEOBJECT::SetChangeIndex(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ChangeIndex = value[0];
}
void GAMEOBJECT::SetbRoleChange(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    bRoleChange = value[0];
}
void GAMEOBJECT::SetRoleChangeType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RoleChangeType = value[0];
}
void GAMEOBJECT::SetRelivePositon(char*& buffStart)
{
   buffStart += 4;
   RelivePositon = (char*)buffStart; 
}
void GAMEOBJECT::SetReliveLocalFirst(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ReliveLocalFirst = value[0];
}
void GAMEOBJECT::SetRelivePerfectFirst(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RelivePerfectFirst = value[0];
}
void GAMEOBJECT::SetReliveCityFirst(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ReliveCityFirst = value[0];
}
void GAMEOBJECT::SetReliveTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ReliveTime = value[0];
}
void GAMEOBJECT::SetReliveCdTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ReliveCdTime = value[0];
}
void GAMEOBJECT::SetReliveNoNearPos(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ReliveNoNearPos = value[0];
}
void GAMEOBJECT::SetRelivePosSelectOpen(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RelivePosSelectOpen = value[0];
}
void GAMEOBJECT::SetHotelexPerience(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    HotelexPerience = value[0];
}
void GAMEOBJECT::SetPlayerExp(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PlayerExp = value[0];
}
void GAMEOBJECT::SetPlayerUpgradeExp(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PlayerUpgradeExp = value[0];
}
void GAMEOBJECT::SetDeclare(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Declare = value[0];
}
void GAMEOBJECT::SetPlayerHonor(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PlayerHonor = value[0];
}
void GAMEOBJECT::SetRankLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RankLevel = value[0];
}
void GAMEOBJECT::SetUpgradeHonor(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    UpgradeHonor = value[0];
}
void GAMEOBJECT::SetCanAddHonorPoint(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CanAddHonorPoint = value[0];
}
void GAMEOBJECT::SetDepotMoney(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    DepotMoney = value[0];
}
void GAMEOBJECT::SetAddDepotBagNum(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    AddDepotBagNum = value[0];
}
void GAMEOBJECT::SetAddToolBagNum(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    AddToolBagNum = value[0];
}
void GAMEOBJECT::SetLink(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    Link = value[0];
}
void GAMEOBJECT::SetGuideType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    GuideType = value[0];
}
void GAMEOBJECT::SetLifeOccupFirstType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LifeOccupFirstType = value[0];
}
void GAMEOBJECT::SetLifeOccupFirstExp(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LifeOccupFirstExp = value[0];
}
void GAMEOBJECT::SetLifeJobLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LifeJobLevel = value[0];
}
void GAMEOBJECT::SetPhysical(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Physical = value[0];
}
void GAMEOBJECT::SetMaxPhysical(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxPhysical = value[0];
}
void GAMEOBJECT::SetMatureTicketDay(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MatureTicketDay = value[0];
}
void GAMEOBJECT::SetDayMaxGainGold(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    DayMaxGainGold = value[0];
}
void GAMEOBJECT::SetAutoQuestFlag(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AutoQuestFlag = value[0];
}
void GAMEOBJECT::SetPVPChangeForce(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PVPChangeForce = value[0];
}
void GAMEOBJECT::SetPVPAttackPerfect(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PVPAttackPerfect = value[0];
}
void GAMEOBJECT::SetPVPTaskCanAccept(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PVPTaskCanAccept = value[0];
}
void GAMEOBJECT::SetPvpLock(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    PvpLock = value[0];
}
void GAMEOBJECT::SetSwitchBeforeTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SwitchBeforeTime = value[0];
}
void GAMEOBJECT::SetPracticeWaitTime(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    PracticeWaitTime = value[0];
}
void GAMEOBJECT::SetPracticeFightTime(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    PracticeFightTime = value[0];
}
void GAMEOBJECT::SetIsPractice(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    IsPractice = value[0];
}
void GAMEOBJECT::SetHorseRacePathID(char*& buffStart)
{
   buffStart += 4;
   HorseRacePathID = (char*)buffStart; 
}
void GAMEOBJECT::SetHorseRaceRank(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HorseRaceRank = value[0];
}
void GAMEOBJECT::SetPVPTowerPlayerState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PVPTowerPlayerState = value[0];
}
void GAMEOBJECT::SetIsInNewUserLead(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    IsInNewUserLead = value[0];
}
void GAMEOBJECT::SetItemSet(char*& buffStart)
{
   buffStart += 4;
   ItemSet = (char*)buffStart; 
}
void GAMEOBJECT::SetDecomposeUID(char*& buffStart)
{
   buffStart += 4;
   DecomposeUID = (char*)buffStart; 
}
void GAMEOBJECT::SetDecomMaterial(char*& buffStart)
{
   buffStart += 4;
   DecomMaterial = (char*)buffStart; 
}
void GAMEOBJECT::SetEveRecActive(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EveRecActive = value[0];
}
void GAMEOBJECT::SetEveRecLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EveRecLevel = value[0];
}
void GAMEOBJECT::SetEvePVECount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EvePVECount = value[0];
}
void GAMEOBJECT::SetEvePVPCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EvePVPCount = value[0];
}
void GAMEOBJECT::SetEveEventCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EveEventCount = value[0];
}
void GAMEOBJECT::SetEveBattleCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EveBattleCount = value[0];
}
void GAMEOBJECT::SetEveAthleticsCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EveAthleticsCount = value[0];
}
void GAMEOBJECT::SetEveSceneCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EveSceneCount = value[0];
}
void GAMEOBJECT::SetOnlineTime(char*& buffStart)
{
   buffStart += 4;
   OnlineTime = (char*)buffStart; 
}
void GAMEOBJECT::SetOffLineExp(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    OffLineExp = value[0];
}
void GAMEOBJECT::SetIsVip(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    IsVip = value[0];
}
void GAMEOBJECT::SetVipEndTime(char*& buffStart)
{
   buffStart += 4;
   VipEndTime = (char*)buffStart; 
}
void GAMEOBJECT::SetVipCloneNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    VipCloneNum = value[0];
}
void GAMEOBJECT::SetVipCloneTime(char*& buffStart)
{
   buffStart += 4;
   VipCloneTime = (char*)buffStart; 
}
void GAMEOBJECT::SetVipPointTransferNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    VipPointTransferNum = value[0];
}
void GAMEOBJECT::SetVipPointTransTime(char*& buffStart)
{
   buffStart += 4;
   VipPointTransTime = (char*)buffStart; 
}
void GAMEOBJECT::SetVipReliveNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    VipReliveNum = value[0];
}
void GAMEOBJECT::SetVipReliveTime(char*& buffStart)
{
   buffStart += 4;
   VipReliveTime = (char*)buffStart; 
}
void GAMEOBJECT::SetVipGiftTime(char*& buffStart)
{
   buffStart += 4;
   VipGiftTime = (char*)buffStart; 
}
void GAMEOBJECT::SetEWId(char*& buffStart)
{
   buffStart += 4;
   EWId = (char*)buffStart; 
}
void GAMEOBJECT::SetPreForce(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PreForce = value[0];
}
void GAMEOBJECT::SetEWResFightState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EWResFightState = value[0];
}
void GAMEOBJECT::Setguildwar_offline_x(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    guildwar_offline_x = value[0];
}
void GAMEOBJECT::Setguildwar_offline_y(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    guildwar_offline_y = value[0];
}
void GAMEOBJECT::Setguildwar_offline_z(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    guildwar_offline_z = value[0];
}
void GAMEOBJECT::SetChargeMode(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    ChargeMode = value[0];
}
void GAMEOBJECT::SetChargeTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ChargeTime = value[0];
}
void GAMEOBJECT::Setcamp_war_task(char*& buffStart)
{
   buffStart += 4;
   camp_war_task = (char*)buffStart; 
}
void GAMEOBJECT::Setcamp_war_relive(char*& buffStart)
{
   buffStart += 4;
   camp_war_relive = (char*)buffStart; 
}
void GAMEOBJECT::Setcamp_war_pillar(char*& buffStart)
{
   buffStart += 4;
   camp_war_pillar = (char*)buffStart; 
}
void GAMEOBJECT::SetRidePoint(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RidePoint = value[0];
}
void GAMEOBJECT::SetIsHaveSecondWord(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    IsHaveSecondWord = value[0];
}
void GAMEOBJECT::SetWordBeLock(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    WordBeLock = value[0];
}
void GAMEOBJECT::SetWordCheckNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    WordCheckNum = value[0];
}
void GAMEOBJECT::SetIsCheckPass(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    IsCheckPass = value[0];
}
void GAMEOBJECT::SetNetBarRight(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    NetBarRight = value[0];
}
void GAMEOBJECT::SetNetBarReceiveState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    NetBarReceiveState = value[0];
}
void GAMEOBJECT::SetNetBarDayPrize(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    NetBarDayPrize = value[0];
}
void GAMEOBJECT::SetSnDaNetBarRight(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SnDaNetBarRight = value[0];
}
void GAMEOBJECT::SetSnDaReceiveState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SnDaReceiveState = value[0];
}
void GAMEOBJECT::SetSnDaNetBarDayPrize(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SnDaNetBarDayPrize = value[0];
}
void GAMEOBJECT::SetConfigID(char*& buffStart)
{
   buffStart += 4;
   ConfigID = (char*)buffStart; 
}
void GAMEOBJECT::SetResource(char*& buffStart)
{
   buffStart += 4;
   Resource = (char*)buffStart; 
}
void GAMEOBJECT::SetGroupNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    GroupNum = value[0];
}
void GAMEOBJECT::SetCurrentTime(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    CurrentTime = value[0];
}
void GAMEOBJECT::SetServerTime(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    ServerTime = value[0];
}
void GAMEOBJECT::SetProtoSceneID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ProtoSceneID = value[0];
}
void GAMEOBJECT::SetCloneSceneID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CloneSceneID = value[0];
}
void GAMEOBJECT::SetGrouping(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Grouping = value[0];
}
void GAMEOBJECT::SetHorseRaceCount(char*& buffStart)
{
   buffStart += 4;
   HorseRaceCount = (char*)buffStart; 
}
void GAMEOBJECT::SetCloneDifficulty(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CloneDifficulty = value[0];
}
void GAMEOBJECT::SetNpcType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    NpcType = value[0];
}
void GAMEOBJECT::SetMotionNoRotate(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    MotionNoRotate = value[0];
}
void GAMEOBJECT::SetNeedRotate(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    NeedRotate = value[0];
}
void GAMEOBJECT::SetScale(char*& buffStart)
{
   buffStart += 4;
   Scale = (char*)buffStart; 
}
void GAMEOBJECT::SetSelectState(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    SelectState = value[0];
}
void GAMEOBJECT::SetWarnType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    WarnType = value[0];
}
void GAMEOBJECT::SetAIEffect(char*& buffStart)
{
   buffStart += 4;
   AIEffect = (char*)buffStart; 
}
void GAMEOBJECT::SetPatrolRange(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    PatrolRange = value[0];
}
void GAMEOBJECT::SetOwner(char*& buffStart)
{
   buffStart += 4;
   Owner = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetAttackPlayer(char*& buffStart)
{
   buffStart += 4;
   AttackPlayer = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetWeaponName(char*& buffStart)
{
   buffStart += 4;
   WeaponName = (char*)buffStart; 
}
void GAMEOBJECT::SetWeaponMode(char*& buffStart)
{
   buffStart += 4;
   WeaponMode = (char*)buffStart; 
}
void GAMEOBJECT::SetMasterID(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    MasterID = value[0];
}
void GAMEOBJECT::SetPathPointType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PathPointType = value[0];
}
void GAMEOBJECT::SetOwnerList(char*& buffStart)
{
   buffStart += 4;
   OwnerList = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetCollideType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CollideType = value[0];
}
void GAMEOBJECT::SetCantShowHeadInfo(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantShowHeadInfo = value[0];
}
void GAMEOBJECT::SetCanPick(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CanPick = value[0];
}
void GAMEOBJECT::SetVisType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    VisType = value[0];
}
void GAMEOBJECT::SetVisDataInt(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    VisDataInt = value[0];
}
void GAMEOBJECT::SetVisDataStr(char*& buffStart)
{
   buffStart += 4;
   VisDataStr = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetNPCCanSelect(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    NPCCanSelect = value[0];
}
void GAMEOBJECT::SetPeaceRandomAction(char*& buffStart)
{
   buffStart += 4;
   PeaceRandomAction = (char*)buffStart; 
}
void GAMEOBJECT::SetFightRandomAction(char*& buffStart)
{
   buffStart += 4;
   FightRandomAction = (char*)buffStart; 
}
void GAMEOBJECT::SetTalkRandomAction(char*& buffStart)
{
   buffStart += 4;
   TalkRandomAction = (char*)buffStart; 
}
void GAMEOBJECT::SetBornTime(char*& buffStart)
{
    long long* value = (long long*)buffStart;
    buffStart += sizeof(long long);
    BornTime = value[0];
}
void GAMEOBJECT::SetHeadEffect(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    HeadEffect = value[0];
}
void GAMEOBJECT::SetNpcNickName(char*& buffStart)
{
   buffStart += 4;
   NpcNickName = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetExtraInfo(char*& buffStart)
{
   buffStart += 4;
   ExtraInfo = (char*)buffStart; 
}
void GAMEOBJECT::SetFixed(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    Fixed = value[0];
}
void GAMEOBJECT::SetbAllVisible(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    bAllVisible = value[0];
}
void GAMEOBJECT::SetMainNpcChange(char*& buffStart)
{
   buffStart += 4;
   MainNpcChange = (char*)buffStart; 
}
void GAMEOBJECT::SetbNpcChange(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    bNpcChange = value[0];
}
void GAMEOBJECT::SetNpcChangeType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    NpcChangeType = value[0];
}
void GAMEOBJECT::SetAttackNpcType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AttackNpcType = value[0];
}
void GAMEOBJECT::SetQueryData(char*& buffStart)
{
   buffStart += 4;
   QueryData = (char*)buffStart; 
}
void GAMEOBJECT::SetConvoyType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ConvoyType = value[0];
}
void GAMEOBJECT::SetMaster(char*& buffStart)
{
   buffStart += 4;
   Master = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetSpringType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SpringType = value[0];
}
void GAMEOBJECT::SetRoadSignID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RoadSignID = value[0];
}
void GAMEOBJECT::SetMaterialPath(char*& buffStart)
{
   buffStart += 4;
   MaterialPath = (char*)buffStart; 
}
void GAMEOBJECT::SetBelongType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BelongType = value[0];
}
void GAMEOBJECT::SetBelongID(char*& buffStart)
{
   buffStart += 4;
   BelongID = (char*)buffStart; 
}
void GAMEOBJECT::SetPointMaxValue(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PointMaxValue = value[0];
}
void GAMEOBJECT::SetPointCurrentValue(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    PointCurrentValue = value[0];
}
void GAMEOBJECT::SetRollSpeed(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    RollSpeed = value[0];
}
void GAMEOBJECT::SetTransPath(char*& buffStart)
{
   buffStart += 4;
   TransPath = (char*)buffStart; 
}
void GAMEOBJECT::SetTransStep(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    TransStep = value[0];
}
void GAMEOBJECT::SetTransSecID(char*& buffStart)
{
   buffStart += 4;
   TransSecID = (char*)buffStart; 
}
void GAMEOBJECT::SetCarrierType(char*& buffStart)
{
   buffStart += 4;
   CarrierType = (char*)buffStart; 
}
void GAMEOBJECT::SetCarrierCtlType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CarrierCtlType = value[0];
}
void GAMEOBJECT::SetCarrierDownInFight(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CarrierDownInFight = value[0];
}
void GAMEOBJECT::SetCarrierViewAngle(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CarrierViewAngle = value[0];
}
void GAMEOBJECT::SetCarrierAy(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    CarrierAy = value[0];
}
void GAMEOBJECT::SetFaceAngle(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    FaceAngle = value[0];
}
void GAMEOBJECT::SetMainObj(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    MainObj = value[0];
}
void GAMEOBJECT::SetSeatIndex(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SeatIndex = value[0];
}
void GAMEOBJECT::SetEnergyWellID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EnergyWellID = value[0];
}
void GAMEOBJECT::SetIsPlayGetOnAction(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    IsPlayGetOnAction = value[0];
}
void GAMEOBJECT::SetEWCarrierID(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EWCarrierID = value[0];
}
void GAMEOBJECT::SetEWCarrierState(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EWCarrierState = value[0];
}
void GAMEOBJECT::SetCarrierOwner(char*& buffStart)
{
   buffStart += 4;
   CarrierOwner = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetAmmoValue(char*& buffStart)
{
   buffStart += 4;
   AmmoValue = (char*)buffStart; 
}
void GAMEOBJECT::SetAmmoValueMax(char*& buffStart)
{
   buffStart += 4;
   AmmoValueMax = (char*)buffStart; 
}
void GAMEOBJECT::SetAmmoNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AmmoNum = value[0];
}
void GAMEOBJECT::SetLockAction(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LockAction = value[0];
}
void GAMEOBJECT::SetCanBeKilled(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CanBeKilled = value[0];
}
void GAMEOBJECT::SetCantBeLtd(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeLtd = value[0];
}
void GAMEOBJECT::SetCantBeLtdSpd(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeLtdSpd = value[0];
}
void GAMEOBJECT::SetCantBeLtdHitMove(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeLtdHitMove = value[0];
}
void GAMEOBJECT::SetCantBeLtdMove(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeLtdMove = value[0];
}
void GAMEOBJECT::SetCantBeLtdUseSkill(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeLtdUseSkill = value[0];
}
void GAMEOBJECT::SetCantBeLtdAttack(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeLtdAttack = value[0];
}
void GAMEOBJECT::SetCantBeLtdShift(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeLtdShift = value[0];
}
void GAMEOBJECT::SetCantBeLtdRotate(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    CantBeLtdRotate = value[0];
}
void GAMEOBJECT::SetStrCantUseSkill(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    StrCantUseSkill = value[0];
}
void GAMEOBJECT::SetStrCantUseSkillAdd(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    StrCantUseSkillAdd = value[0];
}
void GAMEOBJECT::Setdamagedeffect(char*& buffStart)
{
   buffStart += 4;
   damagedeffect = (char*)buffStart; 
}
void GAMEOBJECT::SetStrengthType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    StrengthType = value[0];
}
void GAMEOBJECT::SetGeneralType(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    GeneralType = value[0];
}
void GAMEOBJECT::SetSpecies(char*& buffStart)
{
   buffStart += 4;
   Species = (char*)buffStart; 
}
void GAMEOBJECT::SetItemType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ItemType = value[0];
}
void GAMEOBJECT::SetColorLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ColorLevel = value[0];
}
void GAMEOBJECT::SetUniqueID(char*& buffStart)
{
   buffStart += 4;
   UniqueID = (char*)buffStart; 
}
void GAMEOBJECT::SetAmount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Amount = value[0];
}
void GAMEOBJECT::SetMaxAmount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxAmount = value[0];
}
void GAMEOBJECT::SetTask(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    Task = value[0];
}
void GAMEOBJECT::SetBindType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BindType = value[0];
}
void GAMEOBJECT::SetBindStatus(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BindStatus = value[0];
}
void GAMEOBJECT::SetIsCanConsign(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    IsCanConsign = value[0];
}
void GAMEOBJECT::SetLockStatus(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LockStatus = value[0];
}
void GAMEOBJECT::SetBuyType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BuyType = value[0];
}
void GAMEOBJECT::SetSellPrice0(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SellPrice0 = value[0];
}
void GAMEOBJECT::SetSellPrice1(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    SellPrice1 = value[0];
}
void GAMEOBJECT::SetBuyPrice0(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BuyPrice0 = value[0];
}
void GAMEOBJECT::SetBuyPrice1(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BuyPrice1 = value[0];
}
void GAMEOBJECT::SetArtPack(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ArtPack = value[0];
}
void GAMEOBJECT::SetExpiredTime(char*& buffStart)
{
   buffStart += 4;
   ExpiredTime = (char*)buffStart; 
}
void GAMEOBJECT::SetValidTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ValidTime = value[0];
}
void GAMEOBJECT::SetNotValid(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    NotValid = value[0];
}
void GAMEOBJECT::SetLeftTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LeftTime = value[0];
}
void GAMEOBJECT::SetItemCosts(char*& buffStart)
{
   buffStart += 4;
   ItemCosts = (char*)buffStart; 
}
void GAMEOBJECT::SetMaxBuyNumPer(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxBuyNumPer = value[0];
}
void GAMEOBJECT::SetBuyConditionID(char*& buffStart)
{
   buffStart += 4;
   BuyConditionID = (char*)buffStart; 
}
void GAMEOBJECT::SetBuyNumLimit(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BuyNumLimit = value[0];
}
void GAMEOBJECT::SetBuyNumRest(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BuyNumRest = value[0];
}
void GAMEOBJECT::SetBuyCoolTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BuyCoolTime = value[0];
}
void GAMEOBJECT::SetBuyCoolTimeRest(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BuyCoolTimeRest = value[0];
}
void GAMEOBJECT::SetShopBuyPrice(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ShopBuyPrice = value[0];
}
void GAMEOBJECT::SetHardiness(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Hardiness = value[0];
}
void GAMEOBJECT::SetMaxHardiness(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxHardiness = value[0];
}
void GAMEOBJECT::SetPropPack(char*& buffStart)
{
   buffStart += 4;
   PropPack = (char*)buffStart; 
}
void GAMEOBJECT::SetPropBuilt(char*& buffStart)
{
   buffStart += 4;
   PropBuilt = (char*)buffStart; 
}
void GAMEOBJECT::SetPropRanBuilt(char*& buffStart)
{
   buffStart += 4;
   PropRanBuilt = (char*)buffStart; 
}
void GAMEOBJECT::SetEquipType(char*& buffStart)
{
   buffStart += 4;
   EquipType = (char*)buffStart; 
}
void GAMEOBJECT::SetSkillRand(char*& buffStart)
{
   buffStart += 4;
   SkillRand = (char*)buffStart; 
}
void GAMEOBJECT::SetEquipSetSkillRand(char*& buffStart)
{
   buffStart += 4;
   EquipSetSkillRand = (char*)buffStart; 
}
void GAMEOBJECT::SetCurHoleCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    CurHoleCount = value[0];
}
void GAMEOBJECT::SetStarLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    StarLevel = value[0];
}
void GAMEOBJECT::SetProadd(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    Proadd = value[0];
}
void GAMEOBJECT::SetAppendLefttime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AppendLefttime = value[0];
}
void GAMEOBJECT::SetPetConfigID(char*& buffStart)
{
   buffStart += 4;
   PetConfigID = (char*)buffStart; 
}
void GAMEOBJECT::SetSpecialType(char*& buffStart)
{
   buffStart += 4;
   SpecialType = (char*)buffStart; 
}
void GAMEOBJECT::SetEnergyValue(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EnergyValue = value[0];
}
void GAMEOBJECT::SetMaxEnergyValue(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxEnergyValue = value[0];
}
void GAMEOBJECT::SetEnergyExpLv(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    EnergyExpLv = value[0];
}
void GAMEOBJECT::SetEnergyExp(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EnergyExp = value[0];
}
void GAMEOBJECT::SetNeedEnergy(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    NeedEnergy = value[0];
}
void GAMEOBJECT::SetArmorType(char*& buffStart)
{
   buffStart += 4;
   ArmorType = (char*)buffStart; 
}
void GAMEOBJECT::SetHoldType(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    HoldType = value[0];
}
void GAMEOBJECT::SetHandPos(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    HandPos = value[0];
}
void GAMEOBJECT::SetJewelLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    JewelLevel = value[0];
}
void GAMEOBJECT::SetEnergy(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Energy = value[0];
}
void GAMEOBJECT::SetBeginPos(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    BeginPos = value[0];
}
void GAMEOBJECT::SetEndPos(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    EndPos = value[0];
}
void GAMEOBJECT::SetFormulaPack(char*& buffStart)
{
   buffStart += 4;
   FormulaPack = (char*)buffStart; 
}
void GAMEOBJECT::SetUseCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    UseCount = value[0];
}
void GAMEOBJECT::SetPicture(char*& buffStart)
{
   buffStart += 4;
   Picture = (char*)buffStart; 
}
void GAMEOBJECT::SetRealArea(char*& buffStart)
{
   buffStart += 4;
   RealArea = (char*)buffStart; 
}
void GAMEOBJECT::SetMapArea(char*& buffStart)
{
   buffStart += 4;
   MapArea = (char*)buffStart; 
}
void GAMEOBJECT::SetHasOpenFlag(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    HasOpenFlag = value[0];
}
void GAMEOBJECT::SetCanUse(char*& buffStart)
{
    short* value = (short*)buffStart;
    buffStart += sizeof(short);
    CanUse = value[0];
}
void GAMEOBJECT::SetBaseCap(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    BaseCap = value[0];
}
void GAMEOBJECT::SetMaxItemNum(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    MaxItemNum = value[0];
}
void GAMEOBJECT::SetShopID(char*& buffStart)
{
   buffStart += 4;
   ShopID = (char*)buffStart; 
}
void GAMEOBJECT::SetNumPerPage(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    NumPerPage = value[0];
}
void GAMEOBJECT::SetRepairType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    RepairType = value[0];
}
void GAMEOBJECT::SetFineRepairFeeCoe(char*& buffStart)
{
    double* value = (double*)buffStart;
    buffStart += sizeof(double);
    FineRepairFeeCoe = value[0];
}
void GAMEOBJECT::SetNormalRepairFeeCoe(char*& buffStart)
{
    double* value = (double*)buffStart;
    buffStart += sizeof(double);
    NormalRepairFeeCoe = value[0];
}
void GAMEOBJECT::SetHardinessRecoverFeeCoe(char*& buffStart)
{
    double* value = (double*)buffStart;
    buffStart += sizeof(double);
    HardinessRecoverFeeCoe = value[0];
}
void GAMEOBJECT::SetDiscount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    Discount = value[0];
}
void GAMEOBJECT::SetShopCondition(char*& buffStart)
{
   buffStart += 4;
   ShopCondition = (char*)buffStart; 
}
void GAMEOBJECT::SetBeActived(char*& buffStart)
{
    char* value = (char*)buffStart;
    buffStart += sizeof(char);
    BeActived = value[0];
}
void GAMEOBJECT::SetAConsumeCurHP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeCurHP = value[0];
}
void GAMEOBJECT::SetPConsumeCurHP(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    PConsumeCurHP = value[0];
}
void GAMEOBJECT::SetAConsumeCurMP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeCurMP = value[0];
}
void GAMEOBJECT::SetPConsumeCurMP(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    PConsumeCurMP = value[0];
}
void GAMEOBJECT::SetAConsumeEnergy(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeEnergy = value[0];
}
void GAMEOBJECT::SetPConsumeEnergy(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    PConsumeEnergy = value[0];
}
void GAMEOBJECT::SetAConsumeCuranger(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeCuranger = value[0];
}
void GAMEOBJECT::SetPConsumeCuranger(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    PConsumeCuranger = value[0];
}
void GAMEOBJECT::SetAConsumeCurmobile(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeCurmobile = value[0];
}
void GAMEOBJECT::SetPConsumeCurmobile(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    PConsumeCurmobile = value[0];
}
void GAMEOBJECT::SetAConsumeCurFS(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeCurFS = value[0];
}
void GAMEOBJECT::SetPConsumeCurFS(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    PConsumeCurFS = value[0];
}
void GAMEOBJECT::SetAConsumeCurDP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeCurDP = value[0];
}
void GAMEOBJECT::SetPConsumeCurDP(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    PConsumeCurDP = value[0];
}
void GAMEOBJECT::SetAConsumeCurARMHP(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeCurARMHP = value[0];
}
void GAMEOBJECT::SetAConsumeCurARMEY(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeCurARMEY = value[0];
}
void GAMEOBJECT::SetAConsumeRFC(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    AConsumeRFC = value[0];
}
void GAMEOBJECT::SetAConsumeAmmo(char*& buffStart)
{
   buffStart += 4;
   AConsumeAmmo = (char*)buffStart; 
}
void GAMEOBJECT::SetConsumeItemID(char*& buffStart)
{
   buffStart += 4;
   ConsumeItemID = (char*)buffStart; 
}
void GAMEOBJECT::SetConsumeItemCount(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ConsumeItemCount = value[0];
}
void GAMEOBJECT::SetLifeTime(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    LifeTime = value[0];
}
void GAMEOBJECT::SetIsDamage(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    IsDamage = value[0];
}
void GAMEOBJECT::SetTargetClassType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    TargetClassType = value[0];
}
void GAMEOBJECT::SetTargetRelationType(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    TargetRelationType = value[0];
}
void GAMEOBJECT::SetEffectRange(char*& buffStart)
{
    float* value = (float*)buffStart;
    buffStart += sizeof(float);
    EffectRange = value[0];
}
void GAMEOBJECT::SetEventProcess(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    EventProcess = value[0];
}
void GAMEOBJECT::SetBuff_Display(char*& buffStart)
{
   buffStart += 4;
   Buff_Display = (char*)buffStart; 
}
void GAMEOBJECT::SetDescription(char*& buffStart)
{
   buffStart += 4;
   Description = (char*)buffStart; 
}
void GAMEOBJECT::SetExchangeMoney(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ExchangeMoney = value[0];
}
void GAMEOBJECT::SetExchangeIsLock(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ExchangeIsLock = value[0];
}
void GAMEOBJECT::SetExchangeIsOk(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ExchangeIsOk = value[0];
}
void GAMEOBJECT::SetExchangeTarget(char*& buffStart)
{
   buffStart += 4;
   ExchangeTarget = (wchar_t*)buffStart; 
}
void GAMEOBJECT::SetExchangeTargetLevel(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ExchangeTargetLevel = value[0];
}
void GAMEOBJECT::SetExchangeTargetJob(char*& buffStart)
{
    int* value = (int*)buffStart;
    buffStart += sizeof(int);
    ExchangeTargetJob = value[0];
}
void GAMEOBJECT::SetExchangeTargetObj(char*& buffStart)
{
    GOBJECT* value = (GOBJECT*)buffStart;
    buffStart += sizeof(GOBJECT);
    ExchangeTargetObj = value[0];
}

新加 GameOBJECTDef.h文件

#pragma once
#define INDEX_Type 1
#define INDEX_Sex 2
#define INDEX_Photo 3
#define INDEX_Camp 4
#define INDEX_Race 5
#define INDEX_Job 6
#define INDEX_Level 7
#define INDEX_CurArea 8
#define INDEX_SceneTriggerConfig 9
#define INDEX_ToolEffect 10
#define INDEX_SkillEnergyList 11
#define INDEX_HideSkillTip 12
#define INDEX_Coin_LLQD 13
#define INDEX_DelaySkillTime 14
#define INDEX_Pre_SceneID 15
#define INDEX_Pre_PosX 16
#define INDEX_Pre_PosY 17
#define INDEX_Pre_PosZ 18
#define INDEX_MountItemId 19
#define INDEX_WedgedTime 20
#define INDEX_EnergyLevel 21
#define INDEX_EnergyUpgradeNum 22
#define INDEX_EnergyPreUpgradeNum 23
#define INDEX_SpecState 24
#define INDEX_IsHunterTreasure 25
#define INDEX_AdjustOrient 26
#define INDEX_Name 27
#define INDEX_CollideRadius 28
#define INDEX_VisualRange 29
#define INDEX_MPUpSpeed 30
#define INDEX_MPUpSpeedAdd 31
#define INDEX_State 32
#define INDEX_FloatingState 33
#define INDEX_FashionState 34
#define INDEX_MaxHPAdd 35
#define INDEX_MaxMPAdd 36
#define INDEX_HPRatio 37
#define INDEX_MPRatio 38
#define INDEX_MaxHP 39
#define INDEX_MaxMP 40
#define INDEX_HP 41
#define INDEX_MP 42
#define INDEX_ArmHPUpSpeed 43
#define INDEX_ArmEYUpSpeed 44
#define INDEX_CantMove 45
#define INDEX_CantMoveAdd 46
#define INDEX_CantRotate 47
#define INDEX_CantAttack 48
#define INDEX_CantBeAttack 49
#define INDEX_CantBeAttack2 50
#define INDEX_CantUseSkill 51
#define INDEX_CantUseSkillAdd 52
#define INDEX_CantUseItem 53
#define INDEX_CantUseItemAdd 54
#define INDEX_CantRotateAdd 55
#define INDEX_CantAttackAdd 56
#define INDEX_PauseAction 57
#define INDEX_CantJump 58
#define INDEX_RoleHide 59
#define INDEX_TrueSight 60
#define INDEX_ShowHide 61
#define INDEX_AreaHide 62
#define INDEX_WarFogRadius 63
#define INDEX_HideActionSet 64
#define INDEX_FightPower 65
#define INDEX_RC 66
#define INDEX_AV 67
#define INDEX_EY 68
#define INDEX_FS 69
#define INDEX_DP 70
#define INDEX_RCRatio 71
#define INDEX_AVRatio 72
#define INDEX_EYRatio 73
#define INDEX_FSRatio 74
#define INDEX_DPRatio 75
#define INDEX_MaxRC 76
#define INDEX_MaxAV 77
#define INDEX_MaxEY 78
#define INDEX_MaxFS 79
#define INDEX_MaxDP 80
#define INDEX_MaxRCAdd 81
#define INDEX_MaxAVAdd 82
#define INDEX_MaxEYAdd 83
#define INDEX_MaxFSAdd 84
#define INDEX_MaxDPAdd 85
#define INDEX_Gravity 86
#define INDEX_JumpSpeed 87
#define INDEX_MoveSpeed 88
#define INDEX_WalkSpeed 89
#define INDEX_RunSpeed 90
#define INDEX_DropHeightPub 91
#define INDEX_RunSpeedAdd 92
#define INDEX_SpeedRatio 93
#define INDEX_RequestSet 94
#define INDEX_ArtKey 95
#define INDEX_HidePlayer 96
#define INDEX_HideOtherPet 97
#define INDEX_Face 98
#define INDEX_Eyes 99
#define INDEX_Beard 100
#define INDEX_Ears 101
#define INDEX_Tail 102
#define INDEX_Finger 103
#define INDEX_HideParts 104
#define INDEX_HideSkins 105
#define INDEX_Stature 106
#define INDEX_TattooColor 107
#define INDEX_SkinMtl 108
#define INDEX_HairColor 109
#define INDEX_SkinColor 110
#define INDEX_Hat 111
#define INDEX_Cloth 112
#define INDEX_Pants 113
#define INDEX_Shoes 114
#define INDEX_Gloves 115
#define INDEX_Tattoo 116
#define INDEX_Special 117
#define INDEX_Mantle 118
#define INDEX_Trait 119
#define INDEX_LWeapon 120
#define INDEX_RWeapon 121
#define INDEX_LWeaponID 122
#define INDEX_RWeaponID 123
#define INDEX_ActionSet 124
#define INDEX_HandType 125
#define INDEX_WeaponState 126
#define INDEX_WeaponStateType 127
#define INDEX_LArmorWeapon 128
#define INDEX_RArmorWeapon 129
#define INDEX_LArmorWeaponID 130
#define INDEX_RArmorWeaponID 131
#define INDEX_HeadDetail 132
#define INDEX_LastObject 133
#define INDEX_UnenthrallTime 134
#define INDEX_PKMode 135
#define INDEX_PKValue 136
#define INDEX_ShaQi 137
#define INDEX_ArenaSide 138
#define INDEX_ArrestValue 139
#define INDEX_ArrestState 140
#define INDEX_RedNameEffect 141
#define INDEX_ChangePKModule 142
#define INDEX_PKProtected 143
#define INDEX_ChallengeState 144
#define INDEX_ChallengeName 145
#define INDEX_LogicState 146
#define INDEX_Dead 147
#define INDEX_GuardSkill 148
#define INDEX_ModelScale 149
#define INDEX_PvpFlag 150
#define INDEX_PvpType 151
#define INDEX_HPConsumeInc 152
#define INDEX_MPConsumeInc 153
#define INDEX_EYConsumeInc 154
#define INDEX_RCConsumeInc 155
#define INDEX_AVConsumeInc 156
#define INDEX_FSConsumeInc 157
#define INDEX_DPConsumeInc 158
#define INDEX_ARMHPConsumeInc 159
#define INDEX_ARMEYConsumeInc 160
#define INDEX_HPConsumeMul 161
#define INDEX_MPConsumeMul 162
#define INDEX_EYConsumeMul 163
#define INDEX_RCConsumeMul 164
#define INDEX_AVConsumeMul 165
#define INDEX_FSConsumeMul 166
#define INDEX_DPConsumeMul 167
#define INDEX_ARMHPConsumeMul 168
#define INDEX_ARMEYConsumeMul 169
#define INDEX_ShamDead 170
#define INDEX_CurSkillID 171
#define INDEX_CurSkillEffectID 172
#define INDEX_CurSkillTarget 173
#define INDEX_CurSkillLevel 174
#define INDEX_BufferListStr 175
#define INDEX_PrepareTime 176
#define INDEX_LeadTime 177
#define INDEX_TargetShapePara1 178
#define INDEX_TargetShapePara2 179
#define INDEX_HitShapePara1 180
#define INDEX_HitShapePara2 181
#define INDEX_CoolDownTime 182
#define INDEX_OnTransToolState 183
#define INDEX_LinkObj 184
#define INDEX_OnSwitchTransState 185
#define INDEX_TransToolID 186
#define INDEX_FlyStep 187
#define INDEX_FromTo 188
#define INDEX_StoreHeight 189
#define INDEX_UnderWaterSpeed 190
#define INDEX_CurUnderWaterValue 191
#define INDEX_TransJobList 192
#define INDEX_CantTransJob 193
#define INDEX_DoTransJob 194
#define INDEX_TransConditionId 195
#define INDEX_CurInsPoint 196
#define INDEX_ExileStatus 197
#define INDEX_Force 198
#define INDEX_GuildName 199
#define INDEX_GuildPosition 200
#define INDEX_MountID 201
#define INDEX_MountItemID 202
#define INDEX_MountType 203
#define INDEX_MountSeatIndex 204
#define INDEX_MultiSeatNum 205
#define INDEX_SeatPlayer2 206
#define INDEX_SeatPlayer3 207
#define INDEX_SeatPlayer4 208
#define INDEX_SeatPlayer5 209
#define INDEX_SafeTime 210
#define INDEX_CurSafeTime 211
#define INDEX_SafeModeEquipLv 212
#define INDEX_SafeModeEquipStar 213
#define INDEX_IsHaveSafeModePsw 214
#define INDEX_IsSafeModeUnLock 215
#define INDEX_SafeModeEquipStr 216
#define INDEX_SafeModeJewelStr 217
#define INDEX_LastOffLineTime 218
#define INDEX_LastAddress 219
#define INDEX_TeamID 220
#define INDEX_TeamCaptain 221
#define INDEX_TeamPickMode 222
#define INDEX_TeamPickQuality 223
#define INDEX_TeamType 224
#define INDEX_AcceptRequest 225
#define INDEX_CurMembers 226
#define INDEX_TeamSceneSign 227
#define INDEX_STeamCaptain 228
#define INDEX_STeamType 229
#define INDEX_ShortcutKey 230
#define INDEX_GunManLeftSkill 231
#define INDEX_CurCloneSceneLevel 232
#define INDEX_CloneSceneScoreTop 233
#define INDEX_CloneScoreTopRefreshTime 234
#define INDEX_CloneWeekLimitCount 235
#define INDEX_CloneWeekLimitCountMax 236
#define INDEX_TitleID 237
#define INDEX_GunMan 238
#define INDEX_GunManBullet 239
#define INDEX_RFC 240
#define INDEX_ChatRoomID 241
#define INDEX_ChatRoomTitle 242
#define INDEX_CurrentESId 243
#define INDEX_ArenaID 244
#define INDEX_ArenaState 245
#define INDEX_ArenaSinglePoints 246
#define INDEX_ArenaTeamName 247
#define INDEX_IsArenaTeamCaptain 248
#define INDEX_ArenaTeamType 249
#define INDEX_ArenaMatchType 250
#define INDEX_ArenaKill 251
#define INDEX_AchievePoint 252
#define INDEX_ActDegree 253
#define INDEX_ActPhase 254
#define INDEX_BattleWarState 255
#define INDEX_LeaveGive 256
#define INDEX_BattleWarID 257
#define INDEX_BattleWarRand 258
#define INDEX_MaxKeepKillNum 259
#define INDEX_MaxKillEnemyNum 260
#define INDEX_BWDeadNum 261
#define INDEX_CampaignStatus 262
#define INDEX_MainRoleChange 263
#define INDEX_PreChangeIndex 264
#define INDEX_ChangeIndex 265
#define INDEX_bRoleChange 266
#define INDEX_RoleChangeType 267
#define INDEX_RelivePositon 268
#define INDEX_ReliveLocalFirst 269
#define INDEX_RelivePerfectFirst 270
#define INDEX_ReliveCityFirst 271
#define INDEX_ReliveTime 272
#define INDEX_ReliveCdTime 273
#define INDEX_ReliveNoNearPos 274
#define INDEX_RelivePosSelectOpen 275
#define INDEX_HotelexPerience 276
#define INDEX_PlayerExp 277
#define INDEX_PlayerUpgradeExp 278
#define INDEX_Declare 279
#define INDEX_PlayerHonor 280
#define INDEX_RankLevel 281
#define INDEX_UpgradeHonor 282
#define INDEX_CanAddHonorPoint 283
#define INDEX_DepotMoney 284
#define INDEX_AddDepotBagNum 285
#define INDEX_AddToolBagNum 286
#define INDEX_Link 287
#define INDEX_GuideType 288
#define INDEX_LifeOccupFirstType 289
#define INDEX_LifeOccupFirstExp 290
#define INDEX_LifeJobLevel 291
#define INDEX_Physical 292
#define INDEX_MaxPhysical 293
#define INDEX_MatureTicketDay 294
#define INDEX_DayMaxGainGold 295
#define INDEX_AutoQuestFlag 296
#define INDEX_PVPChangeForce 297
#define INDEX_PVPAttackPerfect 298
#define INDEX_PVPTaskCanAccept 299
#define INDEX_PvpLock 300
#define INDEX_SwitchBeforeTime 301
#define INDEX_PracticeWaitTime 302
#define INDEX_PracticeFightTime 303
#define INDEX_IsPractice 304
#define INDEX_HorseRacePathID 305
#define INDEX_HorseRaceRank 306
#define INDEX_PVPTowerPlayerState 307
#define INDEX_IsInNewUserLead 308
#define INDEX_ItemSet 309
#define INDEX_DecomposeUID 310
#define INDEX_DecomMaterial 311
#define INDEX_EveRecActive 312
#define INDEX_EveRecLevel 313
#define INDEX_EvePVECount 314
#define INDEX_EvePVPCount 315
#define INDEX_EveEventCount 316
#define INDEX_EveBattleCount 317
#define INDEX_EveAthleticsCount 318
#define INDEX_EveSceneCount 319
#define INDEX_OnlineTime 320
#define INDEX_OffLineExp 321
#define INDEX_IsVip 322
#define INDEX_VipEndTime 323
#define INDEX_VipCloneNum 324
#define INDEX_VipCloneTime 325
#define INDEX_VipPointTransferNum 326
#define INDEX_VipPointTransTime 327
#define INDEX_VipReliveNum 328
#define INDEX_VipReliveTime 329
#define INDEX_VipGiftTime 330
#define INDEX_EWId 331
#define INDEX_PreForce 332
#define INDEX_EWResFightState 333
#define INDEX_guildwar_offline_x 334
#define INDEX_guildwar_offline_y 335
#define INDEX_guildwar_offline_z 336
#define INDEX_ChargeMode 337
#define INDEX_ChargeTime 338
#define INDEX_camp_war_task 339
#define INDEX_camp_war_relive 340
#define INDEX_camp_war_pillar 341
#define INDEX_RidePoint 342
#define INDEX_IsHaveSecondWord 343
#define INDEX_WordBeLock 344
#define INDEX_WordCheckNum 345
#define INDEX_IsCheckPass 346
#define INDEX_NetBarRight 347
#define INDEX_NetBarReceiveState 348
#define INDEX_NetBarDayPrize 349
#define INDEX_SnDaNetBarRight 350
#define INDEX_SnDaReceiveState 351
#define INDEX_SnDaNetBarDayPrize 352
#define INDEX_ConfigID 353
#define INDEX_Resource 354
#define INDEX_GroupNum 355
#define INDEX_CurrentTime 356
#define INDEX_ServerTime 357
#define INDEX_ProtoSceneID 358
#define INDEX_CloneSceneID 359
#define INDEX_Grouping 360
#define INDEX_HorseRaceCount 361
#define INDEX_CloneDifficulty 362
#define INDEX_NpcType 363
#define INDEX_MotionNoRotate 364
#define INDEX_NeedRotate 365
#define INDEX_Scale 366
#define INDEX_SelectState 367
#define INDEX_WarnType 368
#define INDEX_AIEffect 369
#define INDEX_PatrolRange 370
#define INDEX_Owner 371
#define INDEX_AttackPlayer 372
#define INDEX_WeaponName 373
#define INDEX_WeaponMode 374
#define INDEX_MasterID 375
#define INDEX_PathPointType 376
#define INDEX_OwnerList 377
#define INDEX_CollideType 378
#define INDEX_CantShowHeadInfo 379
#define INDEX_CanPick 380
#define INDEX_VisType 381
#define INDEX_VisDataInt 382
#define INDEX_VisDataStr 383
#define INDEX_NPCCanSelect 384
#define INDEX_PeaceRandomAction 385
#define INDEX_FightRandomAction 386
#define INDEX_TalkRandomAction 387
#define INDEX_BornTime 388
#define INDEX_HeadEffect 389
#define INDEX_NpcNickName 390
#define INDEX_ExtraInfo 391
#define INDEX_Fixed 392
#define INDEX_bAllVisible 393
#define INDEX_MainNpcChange 394
#define INDEX_bNpcChange 395
#define INDEX_NpcChangeType 396
#define INDEX_AttackNpcType 397
#define INDEX_QueryData 398
#define INDEX_ConvoyType 399
#define INDEX_Master 400
#define INDEX_SpringType 401
#define INDEX_RoadSignID 402
#define INDEX_MaterialPath 403
#define INDEX_BelongType 404
#define INDEX_BelongID 405
#define INDEX_PointMaxValue 406
#define INDEX_PointCurrentValue 407
#define INDEX_RollSpeed 408
#define INDEX_TransPath 409
#define INDEX_TransStep 410
#define INDEX_TransSecID 411
#define INDEX_CarrierType 412
#define INDEX_CarrierCtlType 413
#define INDEX_CarrierDownInFight 414
#define INDEX_CarrierViewAngle 415
#define INDEX_CarrierAy 416
#define INDEX_FaceAngle 417
#define INDEX_MainObj 418
#define INDEX_SeatIndex 419
#define INDEX_EnergyWellID 420
#define INDEX_IsPlayGetOnAction 421
#define INDEX_EWCarrierID 422
#define INDEX_EWCarrierState 423
#define INDEX_CarrierOwner 424
#define INDEX_AmmoValue 425
#define INDEX_AmmoValueMax 426
#define INDEX_AmmoNum 427
#define INDEX_LockAction 428
#define INDEX_CanBeKilled 429
#define INDEX_CantBeLtd 430
#define INDEX_CantBeLtdSpd 431
#define INDEX_CantBeLtdHitMove 432
#define INDEX_CantBeLtdMove 433
#define INDEX_CantBeLtdUseSkill 434
#define INDEX_CantBeLtdAttack 435
#define INDEX_CantBeLtdShift 436
#define INDEX_CantBeLtdRotate 437
#define INDEX_StrCantUseSkill 438
#define INDEX_StrCantUseSkillAdd 439
#define INDEX_damagedeffect 440
#define INDEX_StrengthType 441
#define INDEX_GeneralType 442
#define INDEX_Species 443
#define INDEX_ItemType 444
#define INDEX_ColorLevel 445
#define INDEX_UniqueID 446
#define INDEX_Amount 447
#define INDEX_MaxAmount 448
#define INDEX_Task 449
#define INDEX_BindType 450
#define INDEX_BindStatus 451
#define INDEX_IsCanConsign 452
#define INDEX_LockStatus 453
#define INDEX_BuyType 454
#define INDEX_SellPrice0 455
#define INDEX_SellPrice1 456
#define INDEX_BuyPrice0 457
#define INDEX_BuyPrice1 458
#define INDEX_ArtPack 459
#define INDEX_ExpiredTime 460
#define INDEX_ValidTime 461
#define INDEX_NotValid 462
#define INDEX_LeftTime 463
#define INDEX_ItemCosts 464
#define INDEX_MaxBuyNumPer 465
#define INDEX_BuyConditionID 466
#define INDEX_BuyNumLimit 467
#define INDEX_BuyNumRest 468
#define INDEX_BuyCoolTime 469
#define INDEX_BuyCoolTimeRest 470
#define INDEX_ShopBuyPrice 471
#define INDEX_Hardiness 472
#define INDEX_MaxHardiness 473
#define INDEX_PropPack 474
#define INDEX_PropBuilt 475
#define INDEX_PropRanBuilt 476
#define INDEX_EquipType 477
#define INDEX_SkillRand 478
#define INDEX_EquipSetSkillRand 479
#define INDEX_CurHoleCount 480
#define INDEX_StarLevel 481
#define INDEX_Proadd 482
#define INDEX_AppendLefttime 483
#define INDEX_PetConfigID 484
#define INDEX_SpecialType 485
#define INDEX_EnergyValue 486
#define INDEX_MaxEnergyValue 487
#define INDEX_EnergyExpLv 488
#define INDEX_EnergyExp 489
#define INDEX_NeedEnergy 490
#define INDEX_ArmorType 491
#define INDEX_HoldType 492
#define INDEX_HandPos 493
#define INDEX_JewelLevel 494
#define INDEX_Energy 495
#define INDEX_BeginPos 496
#define INDEX_EndPos 497
#define INDEX_FormulaPack 498
#define INDEX_UseCount 499
#define INDEX_Picture 500
#define INDEX_RealArea 501
#define INDEX_MapArea 502
#define INDEX_HasOpenFlag 503
#define INDEX_CanUse 504
#define INDEX_BaseCap 505
#define INDEX_MaxItemNum 506
#define INDEX_ShopID 507
#define INDEX_NumPerPage 508
#define INDEX_RepairType 509
#define INDEX_FineRepairFeeCoe 510
#define INDEX_NormalRepairFeeCoe 511
#define INDEX_HardinessRecoverFeeCoe 512
#define INDEX_Discount 513
#define INDEX_ShopCondition 514
#define INDEX_BeActived 515
#define INDEX_AConsumeCurHP 516
#define INDEX_PConsumeCurHP 517
#define INDEX_AConsumeCurMP 518
#define INDEX_PConsumeCurMP 519
#define INDEX_AConsumeEnergy 520
#define INDEX_PConsumeEnergy 521
#define INDEX_AConsumeCuranger 522
#define INDEX_PConsumeCuranger 523
#define INDEX_AConsumeCurmobile 524
#define INDEX_PConsumeCurmobile 525
#define INDEX_AConsumeCurFS 526
#define INDEX_PConsumeCurFS 527
#define INDEX_AConsumeCurDP 528
#define INDEX_PConsumeCurDP 529
#define INDEX_AConsumeCurARMHP 530
#define INDEX_AConsumeCurARMEY 531
#define INDEX_AConsumeRFC 532
#define INDEX_AConsumeAmmo 533
#define INDEX_ConsumeItemID 534
#define INDEX_ConsumeItemCount 535
#define INDEX_LifeTime 536
#define INDEX_IsDamage 537
#define INDEX_TargetClassType 538
#define INDEX_TargetRelationType 539
#define INDEX_EffectRange 540
#define INDEX_EventProcess 541
#define INDEX_Buff_Display 542
#define INDEX_Description 543
#define INDEX_ExchangeMoney 544
#define INDEX_ExchangeIsLock 545
#define INDEX_ExchangeIsOk 546
#define INDEX_ExchangeTarget 547
#define INDEX_ExchangeTargetLevel 548
#define INDEX_ExchangeTargetJob 549
#define INDEX_ExchangeTargetObj 550

新加 GameOBJECT.h文件

#pragma once
#define GASCII CStringA
#define GUNICODE CString
#define GOBJECT int
typedef class GAMEOBJECT{
public:
    char Type;
    char Sex;
    GASCII Photo;
    int Camp;
    int Race;
    int Job;
    int Level;
    int CurArea;
    GASCII SceneTriggerConfig;
    GASCII ToolEffect;
    GASCII SkillEnergyList;
    int HideSkillTip;
    int Coin_LLQD;
    int DelaySkillTime;
    int Pre_SceneID;
    float Pre_PosX;
    float Pre_PosY;
    float Pre_PosZ;
    GASCII MountItemId;
    long long WedgedTime;
    char EnergyLevel;
    char EnergyUpgradeNum;
    char EnergyPreUpgradeNum;
    char SpecState;
    char IsHunterTreasure;
    char AdjustOrient;
    GUNICODE Name;
    float CollideRadius;
    float VisualRange;
    int MPUpSpeed;
    int MPUpSpeedAdd;
    GASCII State;
    int FloatingState;
    int FashionState;
    int MaxHPAdd;
    int MaxMPAdd;
    int HPRatio;
    int MPRatio;
    int MaxHP;
    int MaxMP;
    int HP;
    int MP;
    int ArmHPUpSpeed;
    int ArmEYUpSpeed;
    char CantMove;
    char CantMoveAdd;
    char CantRotate;
    char CantAttack;
    char CantBeAttack;
    char CantBeAttack2;
    char CantUseSkill;
    char CantUseSkillAdd;
    char CantUseItem;
    char CantUseItemAdd;
    char CantRotateAdd;
    char CantAttackAdd;
    int PauseAction;
    char CantJump;
    int RoleHide;
    int TrueSight;
    int ShowHide;
    int AreaHide;
    float WarFogRadius;
    int HideActionSet;
    int FightPower;
    int RC;
    int AV;
    int EY;
    int FS;
    int DP;
    int RCRatio;
    int AVRatio;
    int EYRatio;
    int FSRatio;
    int DPRatio;
    int MaxRC;
    int MaxAV;
    int MaxEY;
    int MaxFS;
    int MaxDP;
    int MaxRCAdd;
    int MaxAVAdd;
    int MaxEYAdd;
    int MaxFSAdd;
    int MaxDPAdd;
    float Gravity;
    float JumpSpeed;
    float MoveSpeed;
    float WalkSpeed;
    float RunSpeed;
    float DropHeightPub;
    float RunSpeedAdd;
    int SpeedRatio;
    int RequestSet;
    int ArtKey;
    int HidePlayer;
    int HideOtherPet;
    GASCII Face;
    GASCII Eyes;
    GASCII Beard;
    GASCII Ears;
    GASCII Tail;
    GASCII Finger;
    GASCII HideParts;
    GASCII HideSkins;
    int Stature;
    int TattooColor;
    GASCII SkinMtl;
    GASCII HairColor;
    GASCII SkinColor;
    GASCII Hat;
    GASCII Cloth;
    GASCII Pants;
    GASCII Shoes;
    GASCII Gloves;
    GASCII Tattoo;
    GASCII Special;
    GASCII Mantle;
    GASCII Trait;
    GASCII LWeapon;
    GASCII RWeapon;
    GASCII LWeaponID;
    GASCII RWeaponID;
    GASCII ActionSet;
    char HandType;
    char WeaponState;
    char WeaponStateType;
    GASCII LArmorWeapon;
    GASCII RArmorWeapon;
    GASCII LArmorWeaponID;
    GASCII RArmorWeaponID;
    GASCII HeadDetail;
    GOBJECT LastObject;
    int UnenthrallTime;
    char PKMode;
    int PKValue;
    int ShaQi;
    int ArenaSide;
    short ArrestValue;
    char ArrestState;
    int RedNameEffect;
    short ChangePKModule;
    int PKProtected;
    int ChallengeState;
    GUNICODE ChallengeName;
    char LogicState;
    char Dead;
    GASCII GuardSkill;
    float ModelScale;
    char PvpFlag;
    char PvpType;
    int HPConsumeInc;
    int MPConsumeInc;
    int EYConsumeInc;
    int RCConsumeInc;
    int AVConsumeInc;
    int FSConsumeInc;
    int DPConsumeInc;
    int ARMHPConsumeInc;
    int ARMEYConsumeInc;
    float HPConsumeMul;
    float MPConsumeMul;
    float EYConsumeMul;
    float RCConsumeMul;
    float AVConsumeMul;
    float FSConsumeMul;
    float DPConsumeMul;
    float ARMHPConsumeMul;
    float ARMEYConsumeMul;
    int ShamDead;
    GASCII CurSkillID;
    GASCII CurSkillEffectID;
    GOBJECT CurSkillTarget;
    int CurSkillLevel;
    GASCII BufferListStr;
    int PrepareTime;
    int LeadTime;
    float TargetShapePara1;
    float TargetShapePara2;
    float HitShapePara1;
    float HitShapePara2;
    int CoolDownTime;
    char OnTransToolState;
    GOBJECT LinkObj;
    char OnSwitchTransState;
    GASCII TransToolID;
    int FlyStep;
    int FromTo;
    float StoreHeight;
    float UnderWaterSpeed;
    float CurUnderWaterValue;
    GASCII TransJobList;
    GASCII CantTransJob;
    int DoTransJob;
    GASCII TransConditionId;
    int CurInsPoint;
    int ExileStatus;
    int Force;
    GUNICODE GuildName;
    int GuildPosition;
    int MountID;
    GASCII MountItemID;
    char MountType;
    int MountSeatIndex;
    char MultiSeatNum;
    GOBJECT SeatPlayer2;
    GOBJECT SeatPlayer3;
    GOBJECT SeatPlayer4;
    GOBJECT SeatPlayer5;
    int SafeTime;
    int CurSafeTime;
    char SafeModeEquipLv;
    char SafeModeEquipStar;
    char IsHaveSafeModePsw;
    char IsSafeModeUnLock;
    GASCII SafeModeEquipStr;
    GASCII SafeModeJewelStr;
    double LastOffLineTime;
    GASCII LastAddress;
    int TeamID;
    GUNICODE TeamCaptain;
    char TeamPickMode;
    char TeamPickQuality;
    char TeamType;
    char AcceptRequest;
    char CurMembers;
    GASCII TeamSceneSign;
    GUNICODE STeamCaptain;
    char STeamType;
    GASCII ShortcutKey;
    GASCII GunManLeftSkill;
    int CurCloneSceneLevel;
    long long CloneSceneScoreTop;
    long long CloneScoreTopRefreshTime;
    int CloneWeekLimitCount;
    int CloneWeekLimitCountMax;
    int TitleID;
    int GunMan;
    GASCII GunManBullet;
    int RFC;
    int ChatRoomID;
    GUNICODE ChatRoomTitle;
    int CurrentESId;
    int ArenaID;
    int ArenaState;
    int ArenaSinglePoints;
    GUNICODE ArenaTeamName;
    int IsArenaTeamCaptain;
    int ArenaTeamType;
    int ArenaMatchType;
    int ArenaKill;
    int AchievePoint;
    int ActDegree;
    char ActPhase;
    int BattleWarState;
    int LeaveGive;
    int BattleWarID;
    int BattleWarRand;
    int MaxKeepKillNum;
    int MaxKillEnemyNum;
    int BWDeadNum;
    long long CampaignStatus;
    GASCII MainRoleChange;
    int PreChangeIndex;
    int ChangeIndex;
    int bRoleChange;
    int RoleChangeType;
    GASCII RelivePositon;
    int ReliveLocalFirst;
    int RelivePerfectFirst;
    int ReliveCityFirst;
    int ReliveTime;
    int ReliveCdTime;
    int ReliveNoNearPos;
    int RelivePosSelectOpen;
    long long HotelexPerience;
    int PlayerExp;
    int PlayerUpgradeExp;
    int Declare;
    int PlayerHonor;
    int RankLevel;
    int UpgradeHonor;
    int CanAddHonorPoint;
    long long DepotMoney;
    char AddDepotBagNum;
    char AddToolBagNum;
    char Link;
    int GuideType;
    int LifeOccupFirstType;
    int LifeOccupFirstExp;
    int LifeJobLevel;
    int Physical;
    int MaxPhysical;
    int MatureTicketDay;
    long long DayMaxGainGold;
    int AutoQuestFlag;
    int PVPChangeForce;
    int PVPAttackPerfect;
    int PVPTaskCanAccept;
    char PvpLock;
    int SwitchBeforeTime;
    short PracticeWaitTime;
    short PracticeFightTime;
    char IsPractice;
    GASCII HorseRacePathID;
    int HorseRaceRank;
    int PVPTowerPlayerState;
    int IsInNewUserLead;
    GASCII ItemSet;
    GASCII DecomposeUID;
    GASCII DecomMaterial;
    int EveRecActive;
    int EveRecLevel;
    int EvePVECount;
    int EvePVPCount;
    int EveEventCount;
    int EveBattleCount;
    int EveAthleticsCount;
    int EveSceneCount;
    GASCII OnlineTime;
    int OffLineExp;
    char IsVip;
    GASCII VipEndTime;
    int VipCloneNum;
    GASCII VipCloneTime;
    int VipPointTransferNum;
    GASCII VipPointTransTime;
    int VipReliveNum;
    GASCII VipReliveTime;
    GASCII VipGiftTime;
    GASCII EWId;
    int PreForce;
    int EWResFightState;
    float guildwar_offline_x;
    float guildwar_offline_y;
    float guildwar_offline_z;
    char ChargeMode;
    int ChargeTime;
    GASCII camp_war_task;
    GASCII camp_war_relive;
    GASCII camp_war_pillar;
    int RidePoint;
    char IsHaveSecondWord;
    char WordBeLock;
    int WordCheckNum;
    char IsCheckPass;
    int NetBarRight;
    int NetBarReceiveState;
    int NetBarDayPrize;
    int SnDaNetBarRight;
    int SnDaReceiveState;
    int SnDaNetBarDayPrize;
    GASCII ConfigID;
    GASCII Resource;
    int GroupNum;
    long long CurrentTime;
    long long ServerTime;
    int ProtoSceneID;
    int CloneSceneID;
    int Grouping;
    GASCII HorseRaceCount;
    int CloneDifficulty;
    char NpcType;
    char MotionNoRotate;
    int NeedRotate;
    GASCII Scale;
    char SelectState;
    int WarnType;
    GASCII AIEffect;
    float PatrolRange;
    GUNICODE Owner;
    GUNICODE AttackPlayer;
    GASCII WeaponName;
    GASCII WeaponMode;
    GOBJECT MasterID;
    int PathPointType;
    GUNICODE OwnerList;
    int CollideType;
    char CantShowHeadInfo;
    char CanPick;
    int VisType;
    int VisDataInt;
    GUNICODE VisDataStr;
    short NPCCanSelect;
    GASCII PeaceRandomAction;
    GASCII FightRandomAction;
    GASCII TalkRandomAction;
    long long BornTime;
    int HeadEffect;
    GUNICODE NpcNickName;
    GASCII ExtraInfo;
    char Fixed;
    int bAllVisible;
    GASCII MainNpcChange;
    int bNpcChange;
    int NpcChangeType;
    int AttackNpcType;
    GASCII QueryData;
    int ConvoyType;
    GUNICODE Master;
    int SpringType;
    int RoadSignID;
    GASCII MaterialPath;
    int BelongType;
    GASCII BelongID;
    int PointMaxValue;
    int PointCurrentValue;
    float RollSpeed;
    GASCII TransPath;
    int TransStep;
    GASCII TransSecID;
    GASCII CarrierType;
    int CarrierCtlType;
    int CarrierDownInFight;
    int CarrierViewAngle;
    float CarrierAy;
    float FaceAngle;
    GOBJECT MainObj;
    int SeatIndex;
    int EnergyWellID;
    int IsPlayGetOnAction;
    int EWCarrierID;
    int EWCarrierState;
    GUNICODE CarrierOwner;
    GASCII AmmoValue;
    GASCII AmmoValueMax;
    int AmmoNum;
    int LockAction;
    char CanBeKilled;
    char CantBeLtd;
    char CantBeLtdSpd;
    char CantBeLtdHitMove;
    char CantBeLtdMove;
    char CantBeLtdUseSkill;
    char CantBeLtdAttack;
    char CantBeLtdShift;
    char CantBeLtdRotate;
    char StrCantUseSkill;
    char StrCantUseSkillAdd;
    GASCII damagedeffect;
    char StrengthType;
    short GeneralType;
    GASCII Species;
    int ItemType;
    int ColorLevel;
    GASCII UniqueID;
    int Amount;
    int MaxAmount;
    char Task;
    int BindType;
    int BindStatus;
    int IsCanConsign;
    int LockStatus;
    int BuyType;
    int SellPrice0;
    int SellPrice1;
    int BuyPrice0;
    int BuyPrice1;
    int ArtPack;
    GASCII ExpiredTime;
    int ValidTime;
    char NotValid;
    int LeftTime;
    GASCII ItemCosts;
    int MaxBuyNumPer;
    GASCII BuyConditionID;
    int BuyNumLimit;
    int BuyNumRest;
    int BuyCoolTime;
    int BuyCoolTimeRest;
    int ShopBuyPrice;
    int Hardiness;
    int MaxHardiness;
    GASCII PropPack;
    GASCII PropBuilt;
    GASCII PropRanBuilt;
    GASCII EquipType;
    GASCII SkillRand;
    GASCII EquipSetSkillRand;
    int CurHoleCount;
    int StarLevel;
    float Proadd;
    int AppendLefttime;
    GASCII PetConfigID;
    GASCII SpecialType;
    int EnergyValue;
    int MaxEnergyValue;
    char EnergyExpLv;
    int EnergyExp;
    int NeedEnergy;
    GASCII ArmorType;
    char HoldType;
    char HandPos;
    int JewelLevel;
    int Energy;
    short BeginPos;
    short EndPos;
    GASCII FormulaPack;
    int UseCount;
    GASCII Picture;
    GASCII RealArea;
    GASCII MapArea;
    char HasOpenFlag;
    short CanUse;
    int BaseCap;
    int MaxItemNum;
    GASCII ShopID;
    int NumPerPage;
    int RepairType;
    double FineRepairFeeCoe;
    double NormalRepairFeeCoe;
    double HardinessRecoverFeeCoe;
    int Discount;
    GASCII ShopCondition;
    char BeActived;
    int AConsumeCurHP;
    float PConsumeCurHP;
    int AConsumeCurMP;
    float PConsumeCurMP;
    int AConsumeEnergy;
    float PConsumeEnergy;
    int AConsumeCuranger;
    float PConsumeCuranger;
    int AConsumeCurmobile;
    float PConsumeCurmobile;
    int AConsumeCurFS;
    float PConsumeCurFS;
    int AConsumeCurDP;
    float PConsumeCurDP;
    int AConsumeCurARMHP;
    int AConsumeCurARMEY;
    int AConsumeRFC;
    GASCII AConsumeAmmo;
    GASCII ConsumeItemID;
    int ConsumeItemCount;
    int LifeTime;
    int IsDamage;
    int TargetClassType;
    int TargetRelationType;
    float EffectRange;
    int EventProcess;
    GASCII Buff_Display;
    GASCII Description;
    int ExchangeMoney;
    int ExchangeIsLock;
    int ExchangeIsOk;
    GUNICODE ExchangeTarget;
    int ExchangeTargetLevel;
    int ExchangeTargetJob;
    GOBJECT ExchangeTargetObj;
    void virtual UpdateData(int id, int type, char*& buffStart);
protected:
    void virtual SetType(char*& buffStart);
    void virtual SetSex(char*& buffStart);
    void virtual SetPhoto(char*& buffStart);
    void virtual SetCamp(char*& buffStart);
    void virtual SetRace(char*& buffStart);
    void virtual SetJob(char*& buffStart);
    void virtual SetLevel(char*& buffStart);
    void virtual SetCurArea(char*& buffStart);
    void virtual SetSceneTriggerConfig(char*& buffStart);
    void virtual SetToolEffect(char*& buffStart);
    void virtual SetSkillEnergyList(char*& buffStart);
    void virtual SetHideSkillTip(char*& buffStart);
    void virtual SetCoin_LLQD(char*& buffStart);
    void virtual SetDelaySkillTime(char*& buffStart);
    void virtual SetPre_SceneID(char*& buffStart);
    void virtual SetPre_PosX(char*& buffStart);
    void virtual SetPre_PosY(char*& buffStart);
    void virtual SetPre_PosZ(char*& buffStart);
    void virtual SetMountItemId(char*& buffStart);
    void virtual SetWedgedTime(char*& buffStart);
    void virtual SetEnergyLevel(char*& buffStart);
    void virtual SetEnergyUpgradeNum(char*& buffStart);
    void virtual SetEnergyPreUpgradeNum(char*& buffStart);
    void virtual SetSpecState(char*& buffStart);
    void virtual SetIsHunterTreasure(char*& buffStart);
    void virtual SetAdjustOrient(char*& buffStart);
    void virtual SetName(char*& buffStart);
    void virtual SetCollideRadius(char*& buffStart);
    void virtual SetVisualRange(char*& buffStart);
    void virtual SetMPUpSpeed(char*& buffStart);
    void virtual SetMPUpSpeedAdd(char*& buffStart);
    void virtual SetState(char*& buffStart);
    void virtual SetFloatingState(char*& buffStart);
    void virtual SetFashionState(char*& buffStart);
    void virtual SetMaxHPAdd(char*& buffStart);
    void virtual SetMaxMPAdd(char*& buffStart);
    void virtual SetHPRatio(char*& buffStart);
    void virtual SetMPRatio(char*& buffStart);
    void virtual SetMaxHP(char*& buffStart);
    void virtual SetMaxMP(char*& buffStart);
    void virtual SetHP(char*& buffStart);
    void virtual SetMP(char*& buffStart);
    void virtual SetArmHPUpSpeed(char*& buffStart);
    void virtual SetArmEYUpSpeed(char*& buffStart);
    void virtual SetCantMove(char*& buffStart);
    void virtual SetCantMoveAdd(char*& buffStart);
    void virtual SetCantRotate(char*& buffStart);
    void virtual SetCantAttack(char*& buffStart);
    void virtual SetCantBeAttack(char*& buffStart);
    void virtual SetCantBeAttack2(char*& buffStart);
    void virtual SetCantUseSkill(char*& buffStart);
    void virtual SetCantUseSkillAdd(char*& buffStart);
    void virtual SetCantUseItem(char*& buffStart);
    void virtual SetCantUseItemAdd(char*& buffStart);
    void virtual SetCantRotateAdd(char*& buffStart);
    void virtual SetCantAttackAdd(char*& buffStart);
    void virtual SetPauseAction(char*& buffStart);
    void virtual SetCantJump(char*& buffStart);
    void virtual SetRoleHide(char*& buffStart);
    void virtual SetTrueSight(char*& buffStart);
    void virtual SetShowHide(char*& buffStart);
    void virtual SetAreaHide(char*& buffStart);
    void virtual SetWarFogRadius(char*& buffStart);
    void virtual SetHideActionSet(char*& buffStart);
    void virtual SetFightPower(char*& buffStart);
    void virtual SetRC(char*& buffStart);
    void virtual SetAV(char*& buffStart);
    void virtual SetEY(char*& buffStart);
    void virtual SetFS(char*& buffStart);
    void virtual SetDP(char*& buffStart);
    void virtual SetRCRatio(char*& buffStart);
    void virtual SetAVRatio(char*& buffStart);
    void virtual SetEYRatio(char*& buffStart);
    void virtual SetFSRatio(char*& buffStart);
    void virtual SetDPRatio(char*& buffStart);
    void virtual SetMaxRC(char*& buffStart);
    void virtual SetMaxAV(char*& buffStart);
    void virtual SetMaxEY(char*& buffStart);
    void virtual SetMaxFS(char*& buffStart);
    void virtual SetMaxDP(char*& buffStart);
    void virtual SetMaxRCAdd(char*& buffStart);
    void virtual SetMaxAVAdd(char*& buffStart);
    void virtual SetMaxEYAdd(char*& buffStart);
    void virtual SetMaxFSAdd(char*& buffStart);
    void virtual SetMaxDPAdd(char*& buffStart);
    void virtual SetGravity(char*& buffStart);
    void virtual SetJumpSpeed(char*& buffStart);
    void virtual SetMoveSpeed(char*& buffStart);
    void virtual SetWalkSpeed(char*& buffStart);
    void virtual SetRunSpeed(char*& buffStart);
    void virtual SetDropHeightPub(char*& buffStart);
    void virtual SetRunSpeedAdd(char*& buffStart);
    void virtual SetSpeedRatio(char*& buffStart);
    void virtual SetRequestSet(char*& buffStart);
    void virtual SetArtKey(char*& buffStart);
    void virtual SetHidePlayer(char*& buffStart);
    void virtual SetHideOtherPet(char*& buffStart);
    void virtual SetFace(char*& buffStart);
    void virtual SetEyes(char*& buffStart);
    void virtual SetBeard(char*& buffStart);
    void virtual SetEars(char*& buffStart);
    void virtual SetTail(char*& buffStart);
    void virtual SetFinger(char*& buffStart);
    void virtual SetHideParts(char*& buffStart);
    void virtual SetHideSkins(char*& buffStart);
    void virtual SetStature(char*& buffStart);
    void virtual SetTattooColor(char*& buffStart);
    void virtual SetSkinMtl(char*& buffStart);
    void virtual SetHairColor(char*& buffStart);
    void virtual SetSkinColor(char*& buffStart);
    void virtual SetHat(char*& buffStart);
    void virtual SetCloth(char*& buffStart);
    void virtual SetPants(char*& buffStart);
    void virtual SetShoes(char*& buffStart);
    void virtual SetGloves(char*& buffStart);
    void virtual SetTattoo(char*& buffStart);
    void virtual SetSpecial(char*& buffStart);
    void virtual SetMantle(char*& buffStart);
    void virtual SetTrait(char*& buffStart);
    void virtual SetLWeapon(char*& buffStart);
    void virtual SetRWeapon(char*& buffStart);
    void virtual SetLWeaponID(char*& buffStart);
    void virtual SetRWeaponID(char*& buffStart);
    void virtual SetActionSet(char*& buffStart);
    void virtual SetHandType(char*& buffStart);
    void virtual SetWeaponState(char*& buffStart);
    void virtual SetWeaponStateType(char*& buffStart);
    void virtual SetLArmorWeapon(char*& buffStart);
    void virtual SetRArmorWeapon(char*& buffStart);
    void virtual SetLArmorWeaponID(char*& buffStart);
    void virtual SetRArmorWeaponID(char*& buffStart);
    void virtual SetHeadDetail(char*& buffStart);
    void virtual SetLastObject(char*& buffStart);
    void virtual SetUnenthrallTime(char*& buffStart);
    void virtual SetPKMode(char*& buffStart);
    void virtual SetPKValue(char*& buffStart);
    void virtual SetShaQi(char*& buffStart);
    void virtual SetArenaSide(char*& buffStart);
    void virtual SetArrestValue(char*& buffStart);
    void virtual SetArrestState(char*& buffStart);
    void virtual SetRedNameEffect(char*& buffStart);
    void virtual SetChangePKModule(char*& buffStart);
    void virtual SetPKProtected(char*& buffStart);
    void virtual SetChallengeState(char*& buffStart);
    void virtual SetChallengeName(char*& buffStart);
    void virtual SetLogicState(char*& buffStart);
    void virtual SetDead(char*& buffStart);
    void virtual SetGuardSkill(char*& buffStart);
    void virtual SetModelScale(char*& buffStart);
    void virtual SetPvpFlag(char*& buffStart);
    void virtual SetPvpType(char*& buffStart);
    void virtual SetHPConsumeInc(char*& buffStart);
    void virtual SetMPConsumeInc(char*& buffStart);
    void virtual SetEYConsumeInc(char*& buffStart);
    void virtual SetRCConsumeInc(char*& buffStart);
    void virtual SetAVConsumeInc(char*& buffStart);
    void virtual SetFSConsumeInc(char*& buffStart);
    void virtual SetDPConsumeInc(char*& buffStart);
    void virtual SetARMHPConsumeInc(char*& buffStart);
    void virtual SetARMEYConsumeInc(char*& buffStart);
    void virtual SetHPConsumeMul(char*& buffStart);
    void virtual SetMPConsumeMul(char*& buffStart);
    void virtual SetEYConsumeMul(char*& buffStart);
    void virtual SetRCConsumeMul(char*& buffStart);
    void virtual SetAVConsumeMul(char*& buffStart);
    void virtual SetFSConsumeMul(char*& buffStart);
    void virtual SetDPConsumeMul(char*& buffStart);
    void virtual SetARMHPConsumeMul(char*& buffStart);
    void virtual SetARMEYConsumeMul(char*& buffStart);
    void virtual SetShamDead(char*& buffStart);
    void virtual SetCurSkillID(char*& buffStart);
    void virtual SetCurSkillEffectID(char*& buffStart);
    void virtual SetCurSkillTarget(char*& buffStart);
    void virtual SetCurSkillLevel(char*& buffStart);
    void virtual SetBufferListStr(char*& buffStart);
    void virtual SetPrepareTime(char*& buffStart);
    void virtual SetLeadTime(char*& buffStart);
    void virtual SetTargetShapePara1(char*& buffStart);
    void virtual SetTargetShapePara2(char*& buffStart);
    void virtual SetHitShapePara1(char*& buffStart);
    void virtual SetHitShapePara2(char*& buffStart);
    void virtual SetCoolDownTime(char*& buffStart);
    void virtual SetOnTransToolState(char*& buffStart);
    void virtual SetLinkObj(char*& buffStart);
    void virtual SetOnSwitchTransState(char*& buffStart);
    void virtual SetTransToolID(char*& buffStart);
    void virtual SetFlyStep(char*& buffStart);
    void virtual SetFromTo(char*& buffStart);
    void virtual SetStoreHeight(char*& buffStart);
    void virtual SetUnderWaterSpeed(char*& buffStart);
    void virtual SetCurUnderWaterValue(char*& buffStart);
    void virtual SetTransJobList(char*& buffStart);
    void virtual SetCantTransJob(char*& buffStart);
    void virtual SetDoTransJob(char*& buffStart);
    void virtual SetTransConditionId(char*& buffStart);
    void virtual SetCurInsPoint(char*& buffStart);
    void virtual SetExileStatus(char*& buffStart);
    void virtual SetForce(char*& buffStart);
    void virtual SetGuildName(char*& buffStart);
    void virtual SetGuildPosition(char*& buffStart);
    void virtual SetMountID(char*& buffStart);
    void virtual SetMountItemID(char*& buffStart);
    void virtual SetMountType(char*& buffStart);
    void virtual SetMountSeatIndex(char*& buffStart);
    void virtual SetMultiSeatNum(char*& buffStart);
    void virtual SetSeatPlayer2(char*& buffStart);
    void virtual SetSeatPlayer3(char*& buffStart);
    void virtual SetSeatPlayer4(char*& buffStart);
    void virtual SetSeatPlayer5(char*& buffStart);
    void virtual SetSafeTime(char*& buffStart);
    void virtual SetCurSafeTime(char*& buffStart);
    void virtual SetSafeModeEquipLv(char*& buffStart);
    void virtual SetSafeModeEquipStar(char*& buffStart);
    void virtual SetIsHaveSafeModePsw(char*& buffStart);
    void virtual SetIsSafeModeUnLock(char*& buffStart);
    void virtual SetSafeModeEquipStr(char*& buffStart);
    void virtual SetSafeModeJewelStr(char*& buffStart);
    void virtual SetLastOffLineTime(char*& buffStart);
    void virtual SetLastAddress(char*& buffStart);
    void virtual SetTeamID(char*& buffStart);
    void virtual SetTeamCaptain(char*& buffStart);
    void virtual SetTeamPickMode(char*& buffStart);
    void virtual SetTeamPickQuality(char*& buffStart);
    void virtual SetTeamType(char*& buffStart);
    void virtual SetAcceptRequest(char*& buffStart);
    void virtual SetCurMembers(char*& buffStart);
    void virtual SetTeamSceneSign(char*& buffStart);
    void virtual SetSTeamCaptain(char*& buffStart);
    void virtual SetSTeamType(char*& buffStart);
    void virtual SetShortcutKey(char*& buffStart);
    void virtual SetGunManLeftSkill(char*& buffStart);
    void virtual SetCurCloneSceneLevel(char*& buffStart);
    void virtual SetCloneSceneScoreTop(char*& buffStart);
    void virtual SetCloneScoreTopRefreshTime(char*& buffStart);
    void virtual SetCloneWeekLimitCount(char*& buffStart);
    void virtual SetCloneWeekLimitCountMax(char*& buffStart);
    void virtual SetTitleID(char*& buffStart);
    void virtual SetGunMan(char*& buffStart);
    void virtual SetGunManBullet(char*& buffStart);
    void virtual SetRFC(char*& buffStart);
    void virtual SetChatRoomID(char*& buffStart);
    void virtual SetChatRoomTitle(char*& buffStart);
    void virtual SetCurrentESId(char*& buffStart);
    void virtual SetArenaID(char*& buffStart);
    void virtual SetArenaState(char*& buffStart);
    void virtual SetArenaSinglePoints(char*& buffStart);
    void virtual SetArenaTeamName(char*& buffStart);
    void virtual SetIsArenaTeamCaptain(char*& buffStart);
    void virtual SetArenaTeamType(char*& buffStart);
    void virtual SetArenaMatchType(char*& buffStart);
    void virtual SetArenaKill(char*& buffStart);
    void virtual SetAchievePoint(char*& buffStart);
    void virtual SetActDegree(char*& buffStart);
    void virtual SetActPhase(char*& buffStart);
    void virtual SetBattleWarState(char*& buffStart);
    void virtual SetLeaveGive(char*& buffStart);
    void virtual SetBattleWarID(char*& buffStart);
    void virtual SetBattleWarRand(char*& buffStart);
    void virtual SetMaxKeepKillNum(char*& buffStart);
    void virtual SetMaxKillEnemyNum(char*& buffStart);
    void virtual SetBWDeadNum(char*& buffStart);
    void virtual SetCampaignStatus(char*& buffStart);
    void virtual SetMainRoleChange(char*& buffStart);
    void virtual SetPreChangeIndex(char*& buffStart);
    void virtual SetChangeIndex(char*& buffStart);
    void virtual SetbRoleChange(char*& buffStart);
    void virtual SetRoleChangeType(char*& buffStart);
    void virtual SetRelivePositon(char*& buffStart);
    void virtual SetReliveLocalFirst(char*& buffStart);
    void virtual SetRelivePerfectFirst(char*& buffStart);
    void virtual SetReliveCityFirst(char*& buffStart);
    void virtual SetReliveTime(char*& buffStart);
    void virtual SetReliveCdTime(char*& buffStart);
    void virtual SetReliveNoNearPos(char*& buffStart);
    void virtual SetRelivePosSelectOpen(char*& buffStart);
    void virtual SetHotelexPerience(char*& buffStart);
    void virtual SetPlayerExp(char*& buffStart);
    void virtual SetPlayerUpgradeExp(char*& buffStart);
    void virtual SetDeclare(char*& buffStart);
    void virtual SetPlayerHonor(char*& buffStart);
    void virtual SetRankLevel(char*& buffStart);
    void virtual SetUpgradeHonor(char*& buffStart);
    void virtual SetCanAddHonorPoint(char*& buffStart);
    void virtual SetDepotMoney(char*& buffStart);
    void virtual SetAddDepotBagNum(char*& buffStart);
    void virtual SetAddToolBagNum(char*& buffStart);
    void virtual SetLink(char*& buffStart);
    void virtual SetGuideType(char*& buffStart);
    void virtual SetLifeOccupFirstType(char*& buffStart);
    void virtual SetLifeOccupFirstExp(char*& buffStart);
    void virtual SetLifeJobLevel(char*& buffStart);
    void virtual SetPhysical(char*& buffStart);
    void virtual SetMaxPhysical(char*& buffStart);
    void virtual SetMatureTicketDay(char*& buffStart);
    void virtual SetDayMaxGainGold(char*& buffStart);
    void virtual SetAutoQuestFlag(char*& buffStart);
    void virtual SetPVPChangeForce(char*& buffStart);
    void virtual SetPVPAttackPerfect(char*& buffStart);
    void virtual SetPVPTaskCanAccept(char*& buffStart);
    void virtual SetPvpLock(char*& buffStart);
    void virtual SetSwitchBeforeTime(char*& buffStart);
    void virtual SetPracticeWaitTime(char*& buffStart);
    void virtual SetPracticeFightTime(char*& buffStart);
    void virtual SetIsPractice(char*& buffStart);
    void virtual SetHorseRacePathID(char*& buffStart);
    void virtual SetHorseRaceRank(char*& buffStart);
    void virtual SetPVPTowerPlayerState(char*& buffStart);
    void virtual SetIsInNewUserLead(char*& buffStart);
    void virtual SetItemSet(char*& buffStart);
    void virtual SetDecomposeUID(char*& buffStart);
    void virtual SetDecomMaterial(char*& buffStart);
    void virtual SetEveRecActive(char*& buffStart);
    void virtual SetEveRecLevel(char*& buffStart);
    void virtual SetEvePVECount(char*& buffStart);
    void virtual SetEvePVPCount(char*& buffStart);
    void virtual SetEveEventCount(char*& buffStart);
    void virtual SetEveBattleCount(char*& buffStart);
    void virtual SetEveAthleticsCount(char*& buffStart);
    void virtual SetEveSceneCount(char*& buffStart);
    void virtual SetOnlineTime(char*& buffStart);
    void virtual SetOffLineExp(char*& buffStart);
    void virtual SetIsVip(char*& buffStart);
    void virtual SetVipEndTime(char*& buffStart);
    void virtual SetVipCloneNum(char*& buffStart);
    void virtual SetVipCloneTime(char*& buffStart);
    void virtual SetVipPointTransferNum(char*& buffStart);
    void virtual SetVipPointTransTime(char*& buffStart);
    void virtual SetVipReliveNum(char*& buffStart);
    void virtual SetVipReliveTime(char*& buffStart);
    void virtual SetVipGiftTime(char*& buffStart);
    void virtual SetEWId(char*& buffStart);
    void virtual SetPreForce(char*& buffStart);
    void virtual SetEWResFightState(char*& buffStart);
    void virtual Setguildwar_offline_x(char*& buffStart);
    void virtual Setguildwar_offline_y(char*& buffStart);
    void virtual Setguildwar_offline_z(char*& buffStart);
    void virtual SetChargeMode(char*& buffStart);
    void virtual SetChargeTime(char*& buffStart);
    void virtual Setcamp_war_task(char*& buffStart);
    void virtual Setcamp_war_relive(char*& buffStart);
    void virtual Setcamp_war_pillar(char*& buffStart);
    void virtual SetRidePoint(char*& buffStart);
    void virtual SetIsHaveSecondWord(char*& buffStart);
    void virtual SetWordBeLock(char*& buffStart);
    void virtual SetWordCheckNum(char*& buffStart);
    void virtual SetIsCheckPass(char*& buffStart);
    void virtual SetNetBarRight(char*& buffStart);
    void virtual SetNetBarReceiveState(char*& buffStart);
    void virtual SetNetBarDayPrize(char*& buffStart);
    void virtual SetSnDaNetBarRight(char*& buffStart);
    void virtual SetSnDaReceiveState(char*& buffStart);
    void virtual SetSnDaNetBarDayPrize(char*& buffStart);
    void virtual SetConfigID(char*& buffStart);
    void virtual SetResource(char*& buffStart);
    void virtual SetGroupNum(char*& buffStart);
    void virtual SetCurrentTime(char*& buffStart);
    void virtual SetServerTime(char*& buffStart);
    void virtual SetProtoSceneID(char*& buffStart);
    void virtual SetCloneSceneID(char*& buffStart);
    void virtual SetGrouping(char*& buffStart);
    void virtual SetHorseRaceCount(char*& buffStart);
    void virtual SetCloneDifficulty(char*& buffStart);
    void virtual SetNpcType(char*& buffStart);
    void virtual SetMotionNoRotate(char*& buffStart);
    void virtual SetNeedRotate(char*& buffStart);
    void virtual SetScale(char*& buffStart);
    void virtual SetSelectState(char*& buffStart);
    void virtual SetWarnType(char*& buffStart);
    void virtual SetAIEffect(char*& buffStart);
    void virtual SetPatrolRange(char*& buffStart);
    void virtual SetOwner(char*& buffStart);
    void virtual SetAttackPlayer(char*& buffStart);
    void virtual SetWeaponName(char*& buffStart);
    void virtual SetWeaponMode(char*& buffStart);
    void virtual SetMasterID(char*& buffStart);
    void virtual SetPathPointType(char*& buffStart);
    void virtual SetOwnerList(char*& buffStart);
    void virtual SetCollideType(char*& buffStart);
    void virtual SetCantShowHeadInfo(char*& buffStart);
    void virtual SetCanPick(char*& buffStart);
    void virtual SetVisType(char*& buffStart);
    void virtual SetVisDataInt(char*& buffStart);
    void virtual SetVisDataStr(char*& buffStart);
    void virtual SetNPCCanSelect(char*& buffStart);
    void virtual SetPeaceRandomAction(char*& buffStart);
    void virtual SetFightRandomAction(char*& buffStart);
    void virtual SetTalkRandomAction(char*& buffStart);
    void virtual SetBornTime(char*& buffStart);
    void virtual SetHeadEffect(char*& buffStart);
    void virtual SetNpcNickName(char*& buffStart);
    void virtual SetExtraInfo(char*& buffStart);
    void virtual SetFixed(char*& buffStart);
    void virtual SetbAllVisible(char*& buffStart);
    void virtual SetMainNpcChange(char*& buffStart);
    void virtual SetbNpcChange(char*& buffStart);
    void virtual SetNpcChangeType(char*& buffStart);
    void virtual SetAttackNpcType(char*& buffStart);
    void virtual SetQueryData(char*& buffStart);
    void virtual SetConvoyType(char*& buffStart);
    void virtual SetMaster(char*& buffStart);
    void virtual SetSpringType(char*& buffStart);
    void virtual SetRoadSignID(char*& buffStart);
    void virtual SetMaterialPath(char*& buffStart);
    void virtual SetBelongType(char*& buffStart);
    void virtual SetBelongID(char*& buffStart);
    void virtual SetPointMaxValue(char*& buffStart);
    void virtual SetPointCurrentValue(char*& buffStart);
    void virtual SetRollSpeed(char*& buffStart);
    void virtual SetTransPath(char*& buffStart);
    void virtual SetTransStep(char*& buffStart);
    void virtual SetTransSecID(char*& buffStart);
    void virtual SetCarrierType(char*& buffStart);
    void virtual SetCarrierCtlType(char*& buffStart);
    void virtual SetCarrierDownInFight(char*& buffStart);
    void virtual SetCarrierViewAngle(char*& buffStart);
    void virtual SetCarrierAy(char*& buffStart);
    void virtual SetFaceAngle(char*& buffStart);
    void virtual SetMainObj(char*& buffStart);
    void virtual SetSeatIndex(char*& buffStart);
    void virtual SetEnergyWellID(char*& buffStart);
    void virtual SetIsPlayGetOnAction(char*& buffStart);
    void virtual SetEWCarrierID(char*& buffStart);
    void virtual SetEWCarrierState(char*& buffStart);
    void virtual SetCarrierOwner(char*& buffStart);
    void virtual SetAmmoValue(char*& buffStart);
    void virtual SetAmmoValueMax(char*& buffStart);
    void virtual SetAmmoNum(char*& buffStart);
    void virtual SetLockAction(char*& buffStart);
    void virtual SetCanBeKilled(char*& buffStart);
    void virtual SetCantBeLtd(char*& buffStart);
    void virtual SetCantBeLtdSpd(char*& buffStart);
    void virtual SetCantBeLtdHitMove(char*& buffStart);
    void virtual SetCantBeLtdMove(char*& buffStart);
    void virtual SetCantBeLtdUseSkill(char*& buffStart);
    void virtual SetCantBeLtdAttack(char*& buffStart);
    void virtual SetCantBeLtdShift(char*& buffStart);
    void virtual SetCantBeLtdRotate(char*& buffStart);
    void virtual SetStrCantUseSkill(char*& buffStart);
    void virtual SetStrCantUseSkillAdd(char*& buffStart);
    void virtual Setdamagedeffect(char*& buffStart);
    void virtual SetStrengthType(char*& buffStart);
    void virtual SetGeneralType(char*& buffStart);
    void virtual SetSpecies(char*& buffStart);
    void virtual SetItemType(char*& buffStart);
    void virtual SetColorLevel(char*& buffStart);
    void virtual SetUniqueID(char*& buffStart);
    void virtual SetAmount(char*& buffStart);
    void virtual SetMaxAmount(char*& buffStart);
    void virtual SetTask(char*& buffStart);
    void virtual SetBindType(char*& buffStart);
    void virtual SetBindStatus(char*& buffStart);
    void virtual SetIsCanConsign(char*& buffStart);
    void virtual SetLockStatus(char*& buffStart);
    void virtual SetBuyType(char*& buffStart);
    void virtual SetSellPrice0(char*& buffStart);
    void virtual SetSellPrice1(char*& buffStart);
    void virtual SetBuyPrice0(char*& buffStart);
    void virtual SetBuyPrice1(char*& buffStart);
    void virtual SetArtPack(char*& buffStart);
    void virtual SetExpiredTime(char*& buffStart);
    void virtual SetValidTime(char*& buffStart);
    void virtual SetNotValid(char*& buffStart);
    void virtual SetLeftTime(char*& buffStart);
    void virtual SetItemCosts(char*& buffStart);
    void virtual SetMaxBuyNumPer(char*& buffStart);
    void virtual SetBuyConditionID(char*& buffStart);
    void virtual SetBuyNumLimit(char*& buffStart);
    void virtual SetBuyNumRest(char*& buffStart);
    void virtual SetBuyCoolTime(char*& buffStart);
    void virtual SetBuyCoolTimeRest(char*& buffStart);
    void virtual SetShopBuyPrice(char*& buffStart);
    void virtual SetHardiness(char*& buffStart);
    void virtual SetMaxHardiness(char*& buffStart);
    void virtual SetPropPack(char*& buffStart);
    void virtual SetPropBuilt(char*& buffStart);
    void virtual SetPropRanBuilt(char*& buffStart);
    void virtual SetEquipType(char*& buffStart);
    void virtual SetSkillRand(char*& buffStart);
    void virtual SetEquipSetSkillRand(char*& buffStart);
    void virtual SetCurHoleCount(char*& buffStart);
    void virtual SetStarLevel(char*& buffStart);
    void virtual SetProadd(char*& buffStart);
    void virtual SetAppendLefttime(char*& buffStart);
    void virtual SetPetConfigID(char*& buffStart);
    void virtual SetSpecialType(char*& buffStart);
    void virtual SetEnergyValue(char*& buffStart);
    void virtual SetMaxEnergyValue(char*& buffStart);
    void virtual SetEnergyExpLv(char*& buffStart);
    void virtual SetEnergyExp(char*& buffStart);
    void virtual SetNeedEnergy(char*& buffStart);
    void virtual SetArmorType(char*& buffStart);
    void virtual SetHoldType(char*& buffStart);
    void virtual SetHandPos(char*& buffStart);
    void virtual SetJewelLevel(char*& buffStart);
    void virtual SetEnergy(char*& buffStart);
    void virtual SetBeginPos(char*& buffStart);
    void virtual SetEndPos(char*& buffStart);
    void virtual SetFormulaPack(char*& buffStart);
    void virtual SetUseCount(char*& buffStart);
    void virtual SetPicture(char*& buffStart);
    void virtual SetRealArea(char*& buffStart);
    void virtual SetMapArea(char*& buffStart);
    void virtual SetHasOpenFlag(char*& buffStart);
    void virtual SetCanUse(char*& buffStart);
    void virtual SetBaseCap(char*& buffStart);
    void virtual SetMaxItemNum(char*& buffStart);
    void virtual SetShopID(char*& buffStart);
    void virtual SetNumPerPage(char*& buffStart);
    void virtual SetRepairType(char*& buffStart);
    void virtual SetFineRepairFeeCoe(char*& buffStart);
    void virtual SetNormalRepairFeeCoe(char*& buffStart);
    void virtual SetHardinessRecoverFeeCoe(char*& buffStart);
    void virtual SetDiscount(char*& buffStart);
    void virtual SetShopCondition(char*& buffStart);
    void virtual SetBeActived(char*& buffStart);
    void virtual SetAConsumeCurHP(char*& buffStart);
    void virtual SetPConsumeCurHP(char*& buffStart);
    void virtual SetAConsumeCurMP(char*& buffStart);
    void virtual SetPConsumeCurMP(char*& buffStart);
    void virtual SetAConsumeEnergy(char*& buffStart);
    void virtual SetPConsumeEnergy(char*& buffStart);
    void virtual SetAConsumeCuranger(char*& buffStart);
    void virtual SetPConsumeCuranger(char*& buffStart);
    void virtual SetAConsumeCurmobile(char*& buffStart);
    void virtual SetPConsumeCurmobile(char*& buffStart);
    void virtual SetAConsumeCurFS(char*& buffStart);
    void virtual SetPConsumeCurFS(char*& buffStart);
    void virtual SetAConsumeCurDP(char*& buffStart);
    void virtual SetPConsumeCurDP(char*& buffStart);
    void virtual SetAConsumeCurARMHP(char*& buffStart);
    void virtual SetAConsumeCurARMEY(char*& buffStart);
    void virtual SetAConsumeRFC(char*& buffStart);
    void virtual SetAConsumeAmmo(char*& buffStart);
    void virtual SetConsumeItemID(char*& buffStart);
    void virtual SetConsumeItemCount(char*& buffStart);
    void virtual SetLifeTime(char*& buffStart);
    void virtual SetIsDamage(char*& buffStart);
    void virtual SetTargetClassType(char*& buffStart);
    void virtual SetTargetRelationType(char*& buffStart);
    void virtual SetEffectRange(char*& buffStart);
    void virtual SetEventProcess(char*& buffStart);
    void virtual SetBuff_Display(char*& buffStart);
    void virtual SetDescription(char*& buffStart);
    void virtual SetExchangeMoney(char*& buffStart);
    void virtual SetExchangeIsLock(char*& buffStart);
    void virtual SetExchangeIsOk(char*& buffStart);
    void virtual SetExchangeTarget(char*& buffStart);
    void virtual SetExchangeTargetLevel(char*& buffStart);
    void virtual SetExchangeTargetJob(char*& buffStart);
    void virtual SetExchangeTargetObj(char*& buffStart);
}*PGAMEOBJ;

NetClient.cpp文件的修改:修改了 OnSvrObjectInit函数

#include "pch.h"
#include "NetClient.h"
#include "extern_all.h"

bool NetClient::login(const char* Id, const char* Pass)
{
    
  const int bufflen = sizeof(DATA_LOGIN) + 1;
  char buff[bufflen];
  DATA_LOGIN data;
  // 有些操作系统这样写会报错,因为内存不对齐,现在Windows下没事
  //PDATALOGIN _data = (PDATALOGIN)(buff + 1);
  // 这样写就能解决内存对齐问题
  PDATALOGIN _data =&data;
  int len = strlen(Id);
  memcpy(_data->Id, Id, len);
  len = strlen(Pass);
  memcpy(_data->Pass, Pass, len);
  memcpy(buff+1, _data, sizeof(DATA_LOGIN));
  buff[0] = I_LOGIN;
  return  WinSock->OnSend(buff, sizeof(buff));
  
}

bool NetClient::DelRole(const wchar_t* rolename)
{
    PROLEDATA _role = GetRoleByName(rolename);
    if (_role == nullptr) {
        return false;
    }
    else {
        return DelRole(rolename, _role->name.lenth);
    }
    return false;
}

bool NetClient::StartCreateRole()
{
    NET_CREATEROLE_START _data;
    return WinSock->OnSend(&_data.op, _data.len);
}

bool NetClient::SelectCamp(const char* _campname)
{
    NET_SEND_BUFF _buff;
    NET_SEND_CHOOSECAMP _data;
    _data.opcode.Set(SC_CHOOSECAMP);
    _data.camps.Set(_campname);
    /* 
        sizeof(_data) / sizeof(EnCode)的原因
        NET_SEND_CHOOSECAMP结构体里面,没别 东西
        全是 EnCode 这个结构
    */
    short count = sizeof(_data) / sizeof(EnCode);
    _buff.count = count;

    /*
        CodeMe函数给 _buff.buff里写数据参数的数据
        也就是给0A开头数据包里写,数据参数个数后面的内容
        然后返回值是写了多长的数据
        也就是给0A开头数据包里的数据参数个数后面的数据写了多长
    */
    int ilen = _data.CodeMe(count, _buff.buff);
    ilen = ilen + sizeof(NET_SEND_HEAD) - 1;
    return WinSock->OnSend(&_buff.op, ilen);
}

bool NetClient::CreateRole(wchar_t* name, double sex, double camp, double face, double occu, const char* photo, const char* infos, const char* txt, double faceShape)
{
    // rolecount > 4说明角色的数量够了
    if (rolecount > 4)return false;
    int index = 0;
    bool roleindex[5]{true, true, true, true, true };
    for (int i = 0; i < rolecount; i++) {
        roleindex[roles[i].index] = false;
    }
   
    for (int i = 0; i < 5; i++)
    {
        if (roleindex[i]) {
            index = i;
            break;
        }
    }

    // wchar_t _name[] = L"am52111";
    NS_CREATEROLE_HEAD_BUFF _buff;
    CREATE_ROLE_DATAS _data;
    _data.sex.Set(sex);
    _data.camp.Set(camp);
    _data.face.Set(face);
    _data.occu.Set(occu);
    _data.faceSahpe.Set(faceShape);
    //_data.Photo.Set("gui\BG_team\TeamRole\Teamrole_zq_humF_001.PNG");
    _data.Photo.Set(photo);
    //_data.Infos.Set("Face,0;Hat,0;Eyes,0;Beard,0;Ears,0;Tail,0;Finger,0;Cloth,0;Pants,0;Gloves,0;Shoes,0;Trait,0;HairColor,0;SkinColor,0;SkinMtl,0;Tattoo,0;TattooColor,16777215;");
    _data.Infos.Set(infos);
    _data.Txt.Set(txt);
    short count = sizeof(_data) / sizeof(EnCode);
    _buff.count = count;
    _buff.index = index;
    int lenth = wcslen(name) + 1;
    lenth = lenth * 2;
    memcpy(_buff.name, name, lenth);
    int ilen = _data.CodeMe(count, _buff.buff);
    ilen = ilen + sizeof(NET_SEHD_CREATEROLE_HEAD) - 3;
    return WinSock->OnSend(&_buff.op, ilen);
}

bool NetClient::SelectRole(const wchar_t* rolename)
{
    PROLEDATA roles = GetRoleByName(rolename);
    if (roles == nullptr)return false;
    NS_SELECTROLE _data;
    memcpy(_data.buff, roles->name.value(), roles->name.lenth);
    
    return WinSock->OnSend((char*)&_data, sizeof(_data));
}

PROLEDATA NetClient::GetRoleByName(const wchar_t* rolename)
{
    //PROLEDATA result = nullptr;
    for (int i = 0; i < rolecount; i++)
    {
        // StrCmpW判断两个字符串是否相同
        // 比较时区分大小写,如果字符串相同返回0
        if (StrCmpW(roles[i].name.value(), rolename) == 0) {
            return &roles[i];
        }

    }
    return nullptr;
}

bool NetClient::Talk(wchar_t* txt, int PdId, double un)
{
    NET_SEND_BUFF _buff;
    CHAT_PUBLIC _data;
    _data.opcode.Set(SC_CHAT);
    _data.ChartId.Set(PdId);
    _data.txt.Set(txt);
    _data.un.Set(un);
    /*
        sizeof(_data) / sizeof(EnCode)的原因
        NET_SEND_CHOOSECAMP结构体里面,没别 东西
        全是 EnCode 这个结构
    */
    short count = sizeof(_data) / sizeof(EnCode);
    _buff.count = count;

    /*
        CodeMe函数给 _buff.buff里写数据参数的数据
        也就是给0A开头数据包里写,数据参数个数后面的内容
        然后返回值是写了多长的数据
        也就是给0A开头数据包里的数据参数个数后面的数据写了多长
    */
    int ilen = _data.CodeMe(count, _buff.buff);
    ilen = ilen + sizeof(NET_SEND_HEAD) - 1;
    return WinSock->OnSend(&_buff.op, ilen);
}

bool NetClient::TalkTo(wchar_t* name, wchar_t* txt, double un)
{
    NET_SEND_BUFF _buff;
    CHAT_PRIVATE _data;
    _data.opcode.Set(SC_CHAT);
    _data.ChartId.Set(3);
    _data.txt.Set(txt);
    _data.name.Set(name);
    _data.un.Set(un);
    /*
        sizeof(_data) / sizeof(EnCode)的原因
        NET_SEND_CHOOSECAMP结构体里面,没别 东西
        全是 EnCode 这个结构
    */
    short count = sizeof(_data) / sizeof(EnCode);
    _buff.count = count;

    /*
        CodeMe函数给 _buff.buff里写数据参数的数据
        也就是给0A开头数据包里写,数据参数个数后面的内容
        然后返回值是写了多长的数据
        也就是给0A开头数据包里的数据参数个数后面的数据写了多长
    */
    int ilen = _data.CodeMe(count, _buff.buff);
    ilen = ilen + sizeof(NET_SEND_HEAD) - 1;
    return WinSock->OnSend(&_buff.op, ilen);
}

bool NetClient::HeartBeep()
{
    NET_SEND_BUFF _buff;
    HEART_BEEP _data;
    _data.opcode.Set(SC_BEEP);
    _data.tick.Set(3);
    /*
        sizeof(_data) / sizeof(EnCode)的原因
        NET_SEND_CHOOSECAMP结构体里面,没别 东西
        全是 EnCode 这个结构
    */
    short count = sizeof(_data) / sizeof(EnCode);
    _buff.count = count;

    /*
        CodeMe函数给 _buff.buff里写数据参数的数据
        也就是给0A开头数据包里写,数据参数个数后面的内容
        然后返回值是写了多长的数据
        也就是给0A开头数据包里的数据参数个数后面的数据写了多长
    */
    int ilen = _data.CodeMe(count, _buff.buff);
    ilen = ilen + sizeof(NET_SEND_HEAD) - 1;
    return WinSock->OnSend(&_buff.op, ilen);
}

bool NetClient::HeartLoop()
{
    NET_SEND_BUFF _buff;
    HEART_LOOP _data;
    _data.opcode.Set(SC_LOOP);
    _data.tick.Set(GetTickCount64());
    _data.txt.Set("");
    /*
        sizeof(_data) / sizeof(EnCode)的原因
        NET_SEND_CHOOSECAMP结构体里面,没别 东西
        全是 EnCode 这个结构
    */
    short count = sizeof(_data) / sizeof(EnCode);
    _buff.count = count;

    /*
        CodeMe函数给 _buff.buff里写数据参数的数据
        也就是给0A开头数据包里写,数据参数个数后面的内容
        然后返回值是写了多长的数据
        也就是给0A开头数据包里的数据参数个数后面的数据写了多长
    */
    int ilen = _data.CodeMe(count, _buff.buff);
    ilen = ilen + sizeof(NET_SEND_HEAD) - 1;
    return WinSock->OnSend(&_buff.op, ilen);
}

bool NetClient::Backtoroles()
{
    // 返回角色
    NET_SEND_BUFF _buff;
    NSR_CHEAD _data;
    _data.opcode.Set(SC_REONLINE);

    /*
        sizeof(_data) / sizeof(EnCode)的原因
        NET_SEND_CHOOSECAMP结构体里面,没别 东西
        全是 EnCode 这个结构
    */
    short count = sizeof(_data) / sizeof(EnCode);
    _buff.count = count;

    /*
        CodeMe函数给 _buff.buff里写数据参数的数据
        也就是给0A开头数据包里写,数据参数个数后面的内容
        然后返回值是写了多长的数据
        也就是给0A开头数据包里的数据参数个数后面的数据写了多长
    */
    int ilen = _data.CodeMe(count, _buff.buff);
    ilen = ilen + sizeof(NET_SEND_HEAD) - 1;
    return WinSock->OnSend(&_buff.op, ilen);
}

bool NetClient::DelRole(const wchar_t* rolename, unsigned _len)
{
    DATA_DELROLE _data;
    _data.op = 0x06;
    _data.len = _len;
    memcpy(_data.buff, rolename, _len);
    return WinSock->OnSend((char*)&_data, sizeof(DATA_DELROLE) - 1);
}

void NetClient::Init(GameWinSock* _winSock)
{
    for (int i = 0; i < 0x100; i++) {
        SendProc[i] = &NetClient::DefaultProc;
        RecvProc[i] = &NetClient::DefaultProc;
    }
    this->WinSock = _winSock;
    // 注册登录数据包处理函数
    SendProc[I_LOGIN] = &NetClient::OnClientlogin;
    SendProc[I_CREATEROLE_START] = &NetClient::OnClientStartCreateRole;
    SendProc[I_DELROLE] = &NetClient::OnClientDelRole;
    SendProc[I_SEND_CUSTOM] = &NetClient::OnClientSendCustom;
    SendProc[I_CREATEROLE] = &NetClient::OnClientCreateRole;
    SendProc[I_SELECT_ROLE] = &NetClient::OnClientSelectRole;
    // 注册数据登录失败数据包处理函数
    RecvProc[S_TIPS] = &NetClient::OnSvrTips;
    RecvProc[S_LOGINOK] = &NetClient::OnSverStruct;
    RecvProc[S_CREATEROLE_START] = &NetClient::OnSvrStartCreateRole;
    RecvProc[S_NOTICE] = &NetClient::OnSverNotice;
    RecvProc[S_NOTICE_COM] = &NetClient::OnSverNotice;
    RecvProc[S_OBJECT] = &NetClient::OnSverObject;
    RecvProc[S_STRUCT] = &NetClient::OnSverStruct;
    RecvProc[S_OBJECT_INIT] = &NetClient::OnSvrObjectInit;
}

bool NetClient::OnDelRole(wchar_t* rolename, unsigned _len)
{
    // AfxMessageBox(rolename);
    return true;
}

void NetClient::Onlogin(const char* Id, const char* Pass)
{
    
    /*
    const int bufflen = sizeof(DATA_LOGIN) + 1;
    char buff[bufflen];
    DATA_LOGIN data;
    // 有些操作系统这样写会报错,因为内存不对齐,现在Windows下没事
    //PDATALOGIN _data = (PDATALOGIN)(buff + 1);
    // 这样写就能解决内存对齐问题
    PDATALOGIN _data =&data;
    int len = strlen(Id);
    memcpy(_data->Id, Id, len);
    len = strlen(Pass);
    memcpy(_data->Pass, Pass, len);
    memcpy(buff+1, _data, sizeof(DATA_LOGIN));
    buff[0] = I_LOGIN;
    return  WinSock->OnSend(buff, sizeof(buff));
    */
}

bool NetClient::OnStartCreateRole(int code)
{
    return true;
}

bool NetClient::OnCreateRole(PNS_CREATEROLE _header, PCREATE_ROLE_DATAS _body)
{
    return true;
}

bool NetClient::OnSendCustom(PNET_SEND_CHEAD _coder, char*& buffer, unsigned& len)
{
    switch (_coder->opcode.value())
    {
    case SC_CHOOSECAMP:
        return OnChooseCamp((PNS_CHOOSECAMP)_coder);
    case SC_CHAT:
        return OnChat((PCHAT_DATA)_coder);
    case SC_BEEP:
        return OnHeartBeep((PHEART_BEEP)_coder);
    case SC_LOOP:
        return OnHeartLoop((PHEART_LOOP)_coder);
    case SC_INITED:
    // case SC_REONLINE:
    case SC_INIT_START:
    case SC_HAND:
    case SC_HAND_IN:
        return false;
    default:
        break;
    }
    return true;
}

bool NetClient::OnSelectRole(wchar_t* rolename)
{
    //AfxMessageBox(rolename);
    return true;
}

bool NetClient::OnChooseCamp(PNS_CHOOSECAMP _coder)
{
    PNS_CHOOSECAMP _p = (PNS_CHOOSECAMP)_coder;
   
    return true;
}

bool NetClient::OnChat(PCHAT_DATA _coder)
{
    switch (_coder->ChartId)
    {
    case 3:// 私聊
        return OnChatPrivate((PCHAT_PRV)_coder);
    case 1:// 附近频道
    case 2:// 区域频道
    case 6:// 公会频道
    case 9:// 阵营频道
    case 21:// 喊话频道
        return OnChatPublic((PCHAT_PUB)_coder);
        break;
    }
    return true;
}

bool NetClient::OnChatPublic(PCHAT_PUB _coder)
{
    return true;
}

bool NetClient::OnChatPrivate(PCHAT_PRV _coder)
{
    return true;
}

bool NetClient::OnHeartBeep(PHEART_BEEP _coder)
{
    return true; // 返回false会拦截81心跳包不给服务端发送
}

bool NetClient::OnHeartLoop(PHEART_LOOP _coder)
{
    return true; // 返回false会拦截SC_LOOP心跳包不给服务端发送
}

bool NetClient::OnSvrChat(PCHAT_PRV _coder)
{
    //AfxMessageBox(_coder->name);
    //AfxMessageBox(_coder->txt);
    //switch (_coder->ChartId)
    //{
    //case 3:// 私聊
    //    return OnChatPrivate((PCHAT_PRV)_coder);
    //case 1:// 附近频道
    //case 2:// 区域频道
    //case 6:// 公会频道
    //case 9:// 阵营频道
    //case 21:// 喊话频道
    //    return OnChatPublic((PCHAT_PUB)_coder);
    //    break;
    //}
    return true;
}

bool NetClient::Tips(int code)
{
#ifdef  Anly
    CString txt;
    if (code == 51001) {
        txt = L"登陆失败,易道云通行证不存在!";
    }else if (code == 51002) {
        txt = L"登录失败,密码错误!";
    }else if (code == 21101) {
        txt = L"人物重名!";
    }else if (code == 21109) {
        txt = L"名字过长或包含非法字符!";
    }
    else {
        txt.Format(L"未知登录错误:%d", code);
    }


    anly->SendData(TTYPE::I_LOG, 0, txt.GetBuffer(), (txt.GetLength() + 1)*2);
#endif
    return true;
}

void NetClient::loginok(ROLE_DATA* _roles, int count)
{
    logined = true;
    if(roles) delete[] roles;
    roles = _roles;
    rolecount = count;
}

bool NetClient::OnScrStartCreateRole(short code, wchar_t* _txt)
{
    return true;
}

bool NetClient::OnSvrNotice(PNET_SEND_CHEAD _coder, int count, char*& buffer, unsigned& len)
{
    if (_coder->msgHeader == "chat") {
        return OnSvrChat((PCHAT_PRV)_coder);
    }

    return true;
}

bool NetClient::OnRecvData(char*& buff, unsigned& len)
{
#ifdef  Anly
	anly->SendData(TTYPE::I_RECV, buff[0], buff, len);
#endif
    return (this->*RecvProc[buff[0]])(buff, len);
}

bool NetClient::OnSendData(char*& buff, unsigned& len)
{
#ifdef  Anly
	anly->SendData(TTYPE::I_SEND, buff[0], buff, len);
#endif
    return (this->*SendProc[buff[0]])(buff, len);
}

bool NetClient::OnConnect(char*& ip, unsigned& port)
{
#ifdef  Anly
    // 长度24的原因,它是宽字节要,一个文字要2个字节,一共是10个文字加上结尾的0是11个
    // 所以 11 乘以2,然后再加2 
    anly->SendData(TTYPE::I_LOG, 0, L"服务器正在连接。。。", 24);
#endif
    return true;
}


// 默认的数据处理函数
bool NetClient::DefaultProc(char*&, unsigned&)
{
    return true;
}

// 复制过来的内容
bool NetClient::OnClientlogin(char*& buff, unsigned& len)
{
    PDATALOGIN _data = (PDATALOGIN)(buff + 1);
    char* _id = _data->Id;
    _data = (PDATALOGIN)(buff + 1 + _data->lenId - 0x10);
    char* _pass = _data->Pass;

    Onlogin(_id, _pass);

    /* 修改账号密码
    len = sizeof(DATA_LOGIN) + 1;
    buff = new char[len];
    DATA_LOGIN data;
    PDATALOGIN _data = &data;
    buff[0] = 0x2;

    CStringA _id = "";// 补充账号
    CStringA _pass = "";// 补充密码
    memcpy(_data->Id, _id.GetBuffer(), _id.GetLength());
    memcpy(_data->Pass, _pass.GetBuffer(), _pass.GetLength());
    memcpy(buff + 1, _data, len - 1);
    */
    /* 监控登录数据
    PDATALOGIN _data = (PDATALOGIN)buff;
    CStringA _id = _data->Id;
    _data = (PDATALOGIN)(buff + _data->lenId - 0x10);
    CStringA _pass = _data->Pass;
    CStringA _tmp;
    // 请求登录 账号[% s]密码[% s] 这个内容别人在逆向的时候就会看到
    // 所以这种东西需要自己搞个编码来代替它

     _tmp.Format("请求登录 账号[%s]密码[%s]", _id, _pass);
#ifdef  Anly
    anly->SendData(TTYPE::I_DIS, 1, _tmp.GetBuffer(), _tmp.GetAllocLength());
#endif
    */

    /*
        返回false,游戏无法发送数据包
        原因看调用此此函数的位置 OnSend 函数(if (SendDealProc[buff[0]]((buff + 1), len - 1)))
    */
    return true;
}

bool NetClient::OnClientStartCreateRole(char*& buff, unsigned& len)
{
    // 申请进入创建角色界面
    int* code = (int*)&buff[1];
    return OnStartCreateRole(code[0]);
}

bool NetClient::OnClientCreateRole(char*& buff, unsigned& len) {
    PNS_CREATEROLE head = (PNS_CREATEROLE)(buff - 3);
    int icount = head->count;
    if (icount < 1)return true;
    char* buffStart = (char*)head + sizeof(NET_SEHD_CREATEROLE_HEAD);
#ifdef Anly
    GameAnlyer->AnlyBuff(buffStart, buff + len, buff[0], 1);// 翻译解析约定数据
#endif // Anly

    EnCode codes[sizeof(CREATE_ROLE_DATAS) / sizeof(EnCode)]{};
    int stDecode = 0;
    while (stDecode < icount) {
        codes[stDecode++] = buffStart;
    }


    /*
        Client->OnCreateRole(head, (PCREATE_ROLE_DATAS)codes) 数据包传给虚函数
        如果想对发送创建角色数据包做些什么直接继承NetClient重写OnCreateRole函数既可以了
    */
    return Client->OnCreateRole(head, (PCREATE_ROLE_DATAS)codes);// 返回false屏蔽05开头的数据包,也就是创建角色发送的数据包
}

bool NetClient::OnClientSendCustom(char*& buff, unsigned& len) {
    PNET_SEND_HEAD head = (PNET_SEND_HEAD)(buff - 1);
    int icount = head->count;
    if (icount < 1)return true;
    char* buffStart = (char*)head + sizeof(NET_SEND_HEAD);
    if (buffStart[0] != 0x02) {

#ifdef  Anly
        if (icount < MAX_SEND_COUNT)
            anly->SendData(TTYPE::I_DIS, I_SEND_CUSTOM, "SEND_CUSTOM MAX_SEND_COUNT 内存解码器空间不足", 46);

        anly->SendData(TTYPE::I_DIS, I_SEND_CUSTOM, "SEND_CUSTOM 发现异常数据", 25);
#endif
        return true;
    }

#ifdef  Anly
    GameAnlyer->AnlyBuff(buffStart, buff + len, buff[0], 1);
#endif

    int stDecode = 0;
    EnCode codes[MAX_SEND_COUNT]{};
    while (stDecode < icount) {
        codes[stDecode++] = buffStart;
    }

    /*
        Client->OnSendCustom((PNET_SEND_CHEAD)codes, buff, len); 数据包传给虚函数
        如果想对发送数据的0A开头的据包做些什么直接继承NetClient重写OnSendCustom函数既可以了
    */
    return Client->OnSendCustom((PNET_SEND_CHEAD)codes, buff, len);

}

bool NetClient::OnClientSelectRole(char*& buff, unsigned& len) {
    PNS_SELECTROLE p = (PNS_SELECTROLE)buff;
    return Client->OnSelectRole((wchar_t*)(p->buff));
}

bool NetClient::OnClientDelRole(char*& buff, unsigned& len) {

    PDATADELROLE p = (PDATADELROLE)buff;
    return Client->OnDelRole((wchar_t*)(p->buff), p->len);



    // 返回值改为false将拦截发送的删除角色数据包
    // 详情看注册 OnDelRole 函数的位置,Init函数
    // return true;
}

// 接收数据截取区

bool NetClient::OnSvrTips(char*& buff, unsigned& len) {
    int* code = (int*)&buff[1];
    return Client->Tips(code[0]);
}

bool NetClient::OnSvrloginOk(char*& buff, unsigned& len) {

    PDATALOGINOK _p = (PDATALOGINOK)&buff[1];
    ROLE_DATA* roleDatas = nullptr;
    if (_p->RoleCount > 0) {
        char* buffStart = buff + 1 + sizeof(DATA_LOGIN_OK);

#ifdef Anly
        GameAnlyer->AnlyBuff(buffStart, buff + len, buff[0]);
#endif // Anly

        roleDatas = new ROLE_DATA[_p->RoleCount];
        for (int i = 0; i < _p->RoleCount; i++)
        {
            roleDatas[i].byte.Init(buffStart, 0);
            roleDatas[i].index.Init(buffStart, 0);
            roleDatas[i].un1.Init(buffStart, 0);
            roleDatas[i].name.Init(buffStart, 0);
            roleDatas[i].infos.Init(buffStart, 0);
            roleDatas[i].un2.Init(buffStart, 0);
            roleDatas[i].un3.Init(buffStart, 0);
        }
        Client->loginok(roleDatas, _p->RoleCount);
    }
    return true;
}

bool NetClient::OnSverObject(char*& buff, unsigned& len) {
    PNR_HEAD head = (PNR_HEAD)(buff - 1);
    //head->count;

    if (ObjectTable) {
        delete[] ObjectTable;
    }

    if (ObjectTxt) {
        delete[] ObjectTxt;
    }

    ObjectTable = new OBJECT_DESC[head->count];
    ObjectTxt = new char[len];
    memcpy(ObjectTxt, buff, len);// 这里怕 buff 的内容被游戏释放掉,后面我们用的时候没法用,所以把buff的内容复制到我们的变量里
    char* buffStart = ObjectTxt + sizeof(NR_NOTICE_HEAD)-1;
//#ifdef Anly
//    CStringA szTxtA;
//    CStringA szTmp;
//#endif // Anly
//#ifdef Anly
//    szTmp.Format("[%X]%s:%d\r\n", i, ObjectTable[i].name, ObjectTable[i].type);
//    szTxtA += szTmp;
//#endif // Anly
//#ifdef  Anly
//    anly->SendData(TTYPE::I_DIS, S_OBJECT, szTxtA.GetBuffer(), szTxtA.GetAllocLength() + 1);
//#endif // Anly
    for (int i = 0; i < head->count; i++)
    {
        ObjectTable[i].name = buffStart;
        buffStart = buffStart + strlen(ObjectTable[i].name) + 1;
        ObjectTable[i].type = buffStart[0];
        buffStart++;
    }

#ifdef Anly
    GameAnlyer->CreateObjectfiles(ObjectTable, head->count);
#endif // Anly



    return true;
}
bool NetClient::OnSverStruct(char*& buff, unsigned& len) {
    return true;
}
bool NetClient::OnSvrObjectInit(char*& buff, unsigned& len)
{
    /*
        00 00 00 00 00 00 00 为了内存对齐补充了7个0,也就是 un1[6] 和 len
        28 op
        CD 48 00 01 62 A7 DE 04 PNR_OBJINIT:lId
        C1 AA FB C3 PNR_OBJINIT:x;
        3D FF 22 41 PNR_OBJINIT:h;
        D7 0B 4A 44 PNR_OBJINIT:y;
        52 B8 06 40 PNR_OBJINIT:face;
        C1 AA FB C3 PNR_OBJINIT:tx;
        3D FF 22 41 PNR_OBJINIT:th;
        D7 0B 4A 44 PNR_OBJINIT:ty;
        52 B8 06 40 PNR_OBJINIT:tface;
        00 00 00 00 PNR_OBJINIT:un2[0]
        00 00 00 00 PNR_OBJINIT:un2[1]
        00 00 00 00 PNR_OBJINIT:un2[2]
        00 00 00 00 PNR_OBJINIT:un2[3]
        00 00 00 00 PNR_OBJINIT:un2[4]
        61 00       PNR_OBJINIT:icount;

        
        1B 00 (char*)head + sizeof(NR_OBNJECT_INIT) - 2;也就是指向到了 PNR_OBJINIT:type 这个位置
        0C 00 00 00 CA 4E 5A 66 53 62 01 80 4E 86 00 00 1D 00
    */
    // 初始化对象
    PNR_OBJINIT head = (PNR_OBJINIT)(buff - 7);
    char* buffStart = (char*)head + sizeof(NR_OBNJECT_INIT) - 2;

    int nStart = (int)&Player.lId;
    int nEnd = (int)&Player.endclass;
    memcpy(&Player.lId, &head->lId, nEnd - nStart);

#ifdef  Anly
    GameAnlyer->AnlyData(buffStart, buff + len, head->icount, S_OBJECT_INIT, ObjectTable);
#endif

    int iProc = 0;
    while (iProc < head->icount)
    {
        short* index = (short*)buffStart;
        int type = ObjectTable[index[0]].type;
        Player.UpdateData(index[0], type, buffStart);
        iProc++;
    }

    return true;
}
/*
 OnSverrNotice函数处理的数据包格式如下
    1E 06 00
    06 11 00 00 00 70 6C 61 79 5F 70 6F 69 6E 74 5F 73 6F 75 6E 64 00
    06 01 00 00 00 00
    04 2C 92 87 C5
    04 FA 03 BF 42
    04 33 14 BD 45
    02 00 00 00 00
    1E 06 00 是 PNR_NOTICE_HEAD
    06 11 00 00 00 70 6C 61 79 5F 70 6F 69 6E 74 5F 73 6F 75 6E 64 00是一个EnCode
    06 01 00 00 00 00是一个EnCode
    04 2C 92 87 C5是一个EnCode
    04 FA 03 BF 42是一个EnCode
    04 33 14 BD 45是一个EnCode
    02 00 00 00 00是一个EnCode
*/
bool NetClient::OnSverNotice(char*& buff, unsigned& len) {
    PNR_NOTICE_HEAD head = (PNR_NOTICE_HEAD)(buff - 1);
    int icount = head->count;
    char* buffStart = (char*)head + sizeof(NR_NOTICE_HEAD);
    if (icount < 1) {
        return true;
    }
    if (icount > MAX_RECV_COUNT) {
#ifdef  Anly
        anly->SendData(TTYPE::I_DIS, S_NOTICE, "S_NOTICE 解码器内存不足", 24);
#endif
        return true;
    }

#ifdef  Anly
    GameAnlyer->AnlyBuff(buffStart, buff + len, buff[0], 1);
#endif

    int stDecode = 0;
    EnCode codes[MAX_RECV_COUNT]{};
    while (stDecode < icount) {
        codes[stDecode++] = buffStart;
    }
    return Client->OnSvrNotice((PNET_SEND_CHEAD)codes, icount, buff, len);
}
bool NetClient::OnSvrStartCreateRole(char*& buff, unsigned& len) {
    short* _st = (short*)&buff[1];
    wchar_t* _txt = (wchar_t*)&buff[3];
#ifdef  Anly
    CString txt;
    CStringA txtA;
    txt.Format(L"code:%d\r\n%s", _st[0], _txt);
    txtA = txt;
    //AfxMessageBox(txtA);
    anly->SendData(TTYPE::I_DIS, S_CREATEROLE_START, txtA.GetBuffer(), txt.GetAllocLength() + 1);
#endif
    /*
        Client->OnSendCustom((PNET_SEND_CHEAD)codes, buff, len); 数据包传给虚函数
        如果想对0A开头的据包做些什么直接继承NetClient重写OnSendCustom函数既可以了
    */
    return Client->OnScrStartCreateRole(_st[0], _txt);
}


GameAnly.cpp文件的修改:修改了 CreateObjectfiles函数

#include "pch.h"
#include "GameAnly.h"
#include <iostream>
#include <fstream>

#ifdef Anly
// 它会生成一个结构体,详情看效果图
void GameAnly::AnlyBuff(char* start, char* end, int MsgId, char index)
{
    CStringA txt;
    CStringA tmp;
    CString utmp;
    EnCode _coder;

    GBYTE* _bytecoder;
    GSHORT* _shortcoder;
    GINT* _intcoder;
    GFLOAT* _floatcoder;
    GDOUBLE* _doublecoder;
    GCHAR* _asccoder;
    GUTF16* _utfcoder;
    GINT64* _int64coder;



    while (start < end) {
        _coder.Init(start, index);
        CStringA _opname = data_desc[_coder.index][_coder.op].name;
        // _opname.MakeLower()是变为小写字母,会影响 _opname它的值
        // 所以又写了一边 data_desc[_coder.index][_coder.op].name
        tmp.Format("%s %s;//", data_desc[_coder.index][_coder.op].name, _opname.MakeLower().GetBuffer());
        txt = txt + tmp;
        if (_coder.index == 0) {
            switch (_coder.op)
            {
            case 1:
                _shortcoder = (GSHORT*)&_coder;
                tmp.Format("%d\r\n", _shortcoder->value());
                txt = txt + tmp;
                break;
            case 2:
                _intcoder = (GINT*)&_coder;
                tmp.Format("%d\r\n", _intcoder->value());
                txt = txt + tmp;
                break;
            case 4:
                _floatcoder = (GFLOAT*)&_coder;
                tmp.Format("%f\r\n", _floatcoder->value());
                txt = txt + tmp;
                break;
            case 6:
                _bytecoder = (GBYTE*)&_coder;
                tmp.Format("%d\r\n", _bytecoder->value());
                txt = txt + tmp;
                break;
            case 7:
                _utfcoder = (GUTF16*)&_coder;
                utmp.Format(L"[%s]\r\n", _utfcoder->value());
                tmp = utmp;
                txt = txt + tmp;
                break;
                // 5号之前分析的忘记截图了,现在找不到它的数据包了,如果后面再见到05的时候再详细补充说明
                // 之前的分析05就是double类型
            case 5:
                _doublecoder = (GDOUBLE*)&_coder;
                tmp.Format("%lf\r\n", _doublecoder->value());
                txt = txt + tmp;
                break;
            case 8:
            case 3:
                _int64coder = (GINT64*)&_coder;
                tmp.Format("%lld\r\n", _int64coder->value());
                txt = txt + tmp;
                break;
            default:
                break;
            }
        }

        if (_coder.index == 1) {
            switch (_coder.op)
            {
            case 1:
                _shortcoder = (GSHORT*)&_coder;
                tmp.Format("%d\r\n", _shortcoder->value());
                txt = txt + tmp;
                break;
            case 2:
                _intcoder = (GINT*)&_coder;
                tmp.Format("%d\r\n", _intcoder->value());
                txt = txt + tmp;
                break;
            case 4:
                _floatcoder = (GFLOAT*)&_coder;
                tmp.Format("%f\r\n", _floatcoder->value());
                txt = txt + tmp;
                break;
            case 6:
                _asccoder = (GCHAR*)&_coder;
                tmp.Format("%s\r\n", _asccoder->value());
                txt = txt + tmp;
                break;
            case 7:
                _utfcoder = (GUTF16*)&_coder;
                utmp.Format(L"[%s]\r\n", _utfcoder->value());
                tmp = utmp;
                txt = txt + tmp;
                break;
            case 5:
                _doublecoder = (GDOUBLE*)&_coder;
                tmp.Format("%lf\r\n", _doublecoder->value());
                txt = txt + tmp;
                break;
            case 8:
            case 3:
                _int64coder = (GINT64*)&_coder;
                tmp.Format("%lld\r\n", _int64coder->value());
                txt = txt + tmp;
                break;
            default:
                break;
            }
        }
    }
    anly->SendData(TTYPE::I_DIS, MsgId, txt.GetBuffer(), txt.GetAllocLength() + 1);
}
void GameAnly::AnlyData(char* start, char* end, int count, int MsgId, POBJ_DESC desc)
{
    int iProc = 0;

    int value;
    long long llvalue;
    float fvalue;
    double dbval;
    CStringA szTmp, _tmp, szTxt;
    CString wTmp;

    while ((iProc < count) && (start <end)) {
        short* index = (short*)start;
        int type = desc[index[0]].type;
        char* name = desc[index[0]].name;
   

    switch (type)
       {
       case 0:
           AfxMessageBox(L"0号信息!"); break;
       case 1:
           value = ToChar(start);
           szTmp.Format("%s = %d", name, value);
           break;
       case 2:
           value = ToShort(start);
           szTmp.Format("%s = %d", name, value);
           break;
       case 3:
           value = ToInt(start);
           szTmp.Format("%s = %d", name, value);
           break;
       case 4:
           llvalue = ToLLong(start);
           szTmp.Format("%s = %lld", name, llvalue);
           break;
       case 5:
           fvalue = ToFloat(start);
           szTmp.Format("%s = %f", name, fvalue);
           break;
       case 6:
           dbval = ToDouble(start);
           szTmp.Format("%s = %lf", name, dbval);
           break;
       case 7:
           _tmp = ToAscii(start);
           szTmp.Format("%s = %s", name, _tmp.GetBuffer());
           break;
       case 8:
           wTmp = ToUniode(start);
           _tmp = wTmp;
           szTmp.Format("%s = %s", name, _tmp.GetBuffer());
           break;
       case 9:AfxMessageBox(L"9号数据出现"); return;
       default:
           break;
       }
       szTxt = szTxt + szTmp + "\r\n";
       iProc++;
   }
   anly->SendData(TTYPE::I_DIS, MsgId, szTxt.GetBuffer(), szTxt.GetAllocLength() + 1);

    //CStringA tmpA;
    //CStringA szTxt, szTmp;
    //szTmp.Format("id:%lld\r\n", head->lId);
    //szTxt = szTxt + szTmp;
    //szTmp.Format("x:%f h:%f y:%f\r\n", head->x, head->h, head->y);
    //szTxt = szTxt + szTmp;
    //char* buffStart = (char*)head + sizeof(NR_OBNJECT_INIT) - 2;
    //int icount = head->icount;
    //int iProc = 0;

    //while (iProc < icount) {
    //    short* type = (short*)buffStart;
    //    char* _name = ObjectTable[type[0]].name;
    //    int _type = ObjectTable[type[0]].type;

    //    char* _byte;
    //    short* _short;
    //    int* _int;
    //    float* _float;
    //    long long* _llong;
    //    double* _double;
    //    int lenth;

    //    CString _txt;
    //    /*
    //        1B 00 type[0] buffStart + 2;
    //        0C 00 00 00 CA 4E 5A 66 53 62 01 80 4E 86 00 00
    //        1D 00 type[0]
    //        00 00 48 42 buffStart + 2;
    //        01 00 type[0]
    //        02 buffStart + 2;
    //        02 00 type[0]
    //        01 buffStart + 2;
    //        03 00 2E 00 00 00 67 75 69 5C 42 47 5F 74 65 61 6D 5C 54 65 61 6D 52 6F 6C 65 5C 54 65 61 6D 72 6F 6C 65 5F 7A 71 5F 68 75 6D 46 5F 30 30 31 2E 50 4E 47 00
    //        04 00 01 00 00 00
    //        05 00 01 00 00 00
    //        06 00 01 00 00 00
    //        07 00 01 00 00 00
    //        08 00 00 B1 9E 00
    //    */
    //    buffStart = buffStart + 2;

    //    switch (_type)
    //    {
    //    case 0:
    //        AfxMessageBox(L"0号信息!"); break;
    //    case 1:
    //        _byte = buffStart;
    //        szTmp.Format("%s = %d", _name, _byte[0]);
    //        buffStart = buffStart + 1;
    //        break;
    //    case 2:
    //        _short = (short*)buffStart;
    //        szTmp.Format("%s = %d", _name, _short[0]);
    //        buffStart = buffStart + 2;
    //        break;
    //    case 3:
    //        _int = (int*)buffStart;
    //        szTmp.Format("%s = %d", _name, _int[0]);
    //        buffStart = buffStart + 4;
    //        break;
    //    case 4:
    //        _llong = (long long*)buffStart;
    //        szTmp.Format("%s = %lld", _name, _llong[0]);
    //        buffStart = buffStart + 8;
    //        break;
    //    case 5:
    //        _float = (float*)buffStart;
    //        szTmp.Format("%s = %f", _name, _float[0]);
    //        buffStart = buffStart + 4;
    //        break;
    //    case 6:
    //        _double = (double*)buffStart;
    //        szTmp.Format("%s = %lf", _name, _double[0]);
    //        buffStart = buffStart + 8;
    //        break;
    //    case 7:
    //        _int = (int*)buffStart;
    //        lenth = _int[0];
    //        // szTmp = buffStart + 4;
    //        szTmp.Format("%s = %s", _name, buffStart + 4);
    //        buffStart = buffStart + 4 + lenth;
    //        break;
    //    case 8:
    //        _int = (int*)buffStart;
    //        lenth = _int[0];
    //        _txt = (wchar_t*)(buffStart + 4);
    //        tmpA = _txt;
    //        szTmp.Format("%s = %s", _name, tmpA);
    //        buffStart = buffStart + 4 + lenth;
    //        break;
    //    case 9:MessageBoxA(0, buffStart, buffStart, MB_OK); return true;
    //    default:
    //        break;
    //    }
    //    szTxt = szTxt + szTmp + "\r\n";
    //    iProc++;
    //}
    //anly->SendData(TTYPE::I_DIS, S_OBJECT_INIT, szTxt.GetBuffer(), szTxt.GetAllocLength() + 1);
}
void GameAnly::CreateObjectfiles(POBJ_DESC desc, int icount)
{
    char* _GameOBJECThpp = "F:\\代码存放地\\c\\titan\\tilib\\GameOBJECT.h";
    char* _GameOBJECTcpp = "F:\\代码存放地\\c\\titan\\tilib\\GameOBJECT.cpp";
    char* _GameOBJECTdef = "F:\\代码存放地\\c\\titan\\tilib\\GameOBJECTDef.h";

    std::ofstream ofs(_GameOBJECThpp); // 根据09数据包生成类的头文件
    std::ofstream ofCpp(_GameOBJECTcpp); // 根据09数据包生成类的cpp文件
    std::ofstream ofDef(_GameOBJECTdef);// 生成宏

    if (ofs.bad() || ofCpp.bad() || ofDef.bad()) {
        ofs.close();
        ofCpp.close();
        ofDef.close();
        return;
    }
    else
    {
        // 定义CPP文件头部
        ofCpp << "#include \"pch.h\"" << std::endl;
        ofCpp << "#include \"GameOBJECT.h\"" << std::endl;
        ofCpp << "#include \"GameOBJECTDef.h\"" << std::endl;

        ofCpp << "void GAMEOBJECT::UpdateData(int id, int type, char*& buffStart)" << std::endl;
        ofCpp << "{                                                              " << std::endl;
        ofCpp << "    /*                                                         " << std::endl;
        ofCpp << "        1B 00 buffStart                                        " << std::endl;
        ofCpp << "        0C 00 00 00 buffStart + 2                              " << std::endl;
        ofCpp << "        CA 4E 5A 66 53 62 01 80 4E 86 00 00 1D 00              " << std::endl;
        ofCpp << "    */                                                         " << std::endl;
        ofCpp << "    buffStart = buffStart + 2;" << std::endl;
        ofCpp << "    switch (id)" << std::endl;
        ofCpp << "    {" << std::endl;


        // 定义文件头部区域
        ofDef << "#pragma once" << std::endl;


        // 头部生成区域
        ofs << "#pragma once" << std::endl;
        ofs << "#define GASCII CStringA" << std::endl;
        ofs << "#define GUNICODE CString" << std::endl;
        ofs << "#define GOBJECT int" << std::endl;
        ofs << "typedef class GAMEOBJECT{" << std::endl;
        ofs << "public:" << std::endl;

        // 变量声明
        //  i = 1的原因是游戏的数据类型表里(接收的09数据包)第一个是NONE
        for (int i = 1; i < icount; i++)
        {
            char* valueName = desc[i].name;
            int valueType = desc[i].type;
            char* valueTypeName = data_desc[2][valueType].name;
            int valueSize = data_desc[2][valueType].lenth;

            ofs << "    " << valueTypeName << " " << valueName << ";" << std::endl;
            ofDef << "#define INDEX_" << valueName << " " << i << std::endl;

            ofCpp << "    case INDEX_" << valueName << ":" << std::endl;
            ofCpp << "      return Set" << valueName << "(buffStart);" << std::endl;

        }

        ofCpp << "    }" << std::endl;
        ofCpp << "}" << std::endl;
   
        // 函数声明
        ofs << "    void virtual UpdateData(int id, int type, char*& buffStart);" << std::endl;
        ofs << "protected:" << std::endl;

        for (int i = 1; i < icount; i++)
        {
            char* valueName = desc[i].name;
            int valueType = desc[i].type;
            char* valueTypeName = data_desc[2][valueType].name;
            int valueSize = data_desc[2][valueType].lenth;

            ofs << "    void virtual Set" << valueName << "(char*& buffStart);" << std::endl;

            ofCpp << "void GAMEOBJECT::Set" << valueName << "(char*& buffStart)" << std::endl;
            ofCpp << "{" << std::endl;

            if(valueType == 7){
                 ofCpp << "   buffStart += 4;" << std::endl;
                 ofCpp << "   " << valueName << " = (char*)buffStart; " << std::endl;
            }
            else if(valueType == 8) {
                ofCpp << "   buffStart += 4;" << std::endl;
                ofCpp << "   " << valueName << " = (wchar_t*)buffStart; " << std::endl;
            }
            else {
                ofCpp << "    " << valueTypeName << "* value = (" << valueTypeName << "*)buffStart;" << std::endl;
                ofCpp << "    buffStart += sizeof(" << valueTypeName << ");" << std::endl;
                ofCpp << "    " << valueName << " = value[0];" << std::endl;
            }
                  
            ofCpp << "}" << std::endl;
   
        }

        ofs << "}*PGAMEOBJ;" << std::endl;

    }

    ofs.close();
    ofCpp.close();
    ofDef.close();
}

char GameAnly::ToChar(char*& start)
{
    char result = start[0];
    start = start + 3;
    return result;
}

short GameAnly::ToShort(char*& start)
{
    short* result = (short*)(start + 2);
    start = start + 2 + 2;
    return result[0];
}

int GameAnly::ToInt(char*& start)
{
    int* result = (int*)(start + 2);
    start = start + 2 + 4;
    return result[0];
}

float GameAnly::ToFloat(char*& start)
{
    float* result = (float*)(start + 2);
    start = start + 2 + 4;
    return result[0];
}

double GameAnly::ToDouble(char*& start)
{
    double* result = (double*)(start + 2);
    start = start + 2 + 8;
    return result[0];
}

long long GameAnly::ToLLong(char*& start)
{
    long long* result = (long long*)(start + 2);
    start = start + 2 + 8;
    return result[0];
}

char* GameAnly::ToAscii(char*& start)
{
    int* lenth = (int*)(start + 2);
    char* result = start + 2 + 4; // +4这个操作是跳过 lenth的值
    start = start + 2 + 4 + lenth[0];
    return result;
}

wchar_t* GameAnly::ToUniode(char*& start)
{
    int* lenth = (int*)(start + 2);
    wchar_t* result = (wchar_t*)(start + 2 + 4); // +4这个操作是跳过 lenth的值
    start = start + 2 + 4 + lenth[0];
    return result;
}
#endif // Anly

extern_all.cpp文件的修改:修改了 init_datadesc函数

/*
	此文件是用来存放全局变量、全局函数(通用函数)
*/
#include "pch.h"
#include "extern_all.h"
GameWinSock* WinSock = nullptr;
GameProc* PGameProc = nullptr;
NetClient* Client = nullptr;
#ifdef Anly
CAnly* anly = nullptr;
GameAnly* GameAnlyer = nullptr;
#endif

DATA_DESC data_desc[3][10]{};

void init_datadesc() {
	data_desc[0][0] = { "none", 0 };
	data_desc[0][1] = { "GSHORT", 2 };
	data_desc[0][2] = { "GINT", 4 };
	data_desc[0][3] = { "GINT64", 8 };
	data_desc[0][4] = { "GFLOAT", 4 };
	data_desc[0][5] = { "GDOUBLE", 8 };
	data_desc[0][6] = { "GBYTE", 1 };
	data_desc[0][7] = { "GUTF16", 4 };
	data_desc[0][8] = { "GINT64", 8 };

	data_desc[1][0] = { "none", 0 };
	data_desc[1][1] = { "GSHORT", 2 };
	data_desc[1][2] = { "GINT", 4 };
	data_desc[1][3] = { "GINT64", 8 };
	data_desc[1][4] = { "GFLOAT", 4 };
	data_desc[1][5] = { "GDOUBLE", 8 };
	data_desc[1][6] = { "GCHAR", 4 };
	data_desc[1][7] = { "GUTF16", 4 };
	data_desc[1][8] = { "GINT64", 8 };

	data_desc[2][0] = { "none", 0 };
	data_desc[2][1] = { "char", 1 };
	data_desc[2][2] = { "short", 2 };
	data_desc[2][3] = { "int", 4 };
	data_desc[2][4] = { "long long", 8 };
	data_desc[2][5] = { "float", 4 };
	data_desc[2][6] = { "double", 8 };
	data_desc[2][7] = { "GASCII", 4 };
	data_desc[2][8] = { "GUNICODE", 4 };
	data_desc[2][9] = { "GOBJECT", 4 };
}

void InitClassProc(LPVOID proc_addr, unsigned value)
{
	unsigned* writer = (unsigned*)proc_addr;
	writer[0] = value;
}

AIM.h文件的修改:修改了 AIM类

#pragma once
#include "GameOBJECT.h"
typedef class AIM:public GAMEOBJECT {
public:
	long long lId;
	float x;
	float h;
	float y;
	float face;

	float tx;
	float th;
	float ty;
	float tface;

	int endclass;
}*PAIM;

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 20:04:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 20:04:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 20:04:01       82 阅读
  4. Python语言-面向对象

    2024-04-30 20:04:01       91 阅读

热门阅读

  1. Android Glide 获取动图的第一帧

    2024-04-30 20:04:01       33 阅读
  2. 原生小程序分页/上拉加载(通过页面生命周期)

    2024-04-30 20:04:01       30 阅读
  3. Czi.算法学习(三)

    2024-04-30 20:04:01       33 阅读
  4. 表达式解析器MVEL的了解

    2024-04-30 20:04:01       31 阅读
  5. MSP未来趋势

    2024-04-30 20:04:01       29 阅读
  6. 【Spring AI】前言

    2024-04-30 20:04:01       28 阅读
  7. 【多维动态规划】Leetcode 72. 编辑距离【中等】

    2024-04-30 20:04:01       28 阅读