User.h
#define OBJECT_BASE 0x4CEE778
#define OBJECT_SIZE 0x0D0C
#define OBJMIN 4800
#define OBJMAX 5600
#define MAX_USER_GUILD 35
#define MAX_SELF_DEFENSE 5
typedef struct tagInterfaceState
{
BYTE use : 2;
BYTE state : 2;
BYTE type : 4;
} INTERFACE_STATE, * LPINTERFACE_STATE;
typedef struct tagActionState
{
unsigned long Rest:1; // 0
unsigned long Attack:1; // 1
unsigned long Move:1; // 2
unsigned long Escape:1; // 3
unsigned long Emotion:4; // 4
unsigned long EmotionCount:8; // 8
} ACTION_STATE, * LPACTION_STATE;
struct VIEWPORT_STRUCT
{
char state; // 0
short number; // 2
unsigned char type; // 4
short index; // 6
int dis; // 8
};
struct VIEWPORT_PLAYER_STRUCT
{
char state; // 0
short number; // 2
unsigned char type; // 4
short index; // 6
int dis; // 8
};
struct HITDAMAGE_STRUCT
{
short number; // 0
int HitDamage; // 4
DWORD LastHitTime; // 8
};
struct _GUILD_INFO_STRUCT
{
int Number; //0
char Name[9]; //4
unsigned char Mark[32]; //D
BYTE Count; //2D
BYTE TotalCount; //2E
char Names[MAX_USER_GUILD][11]; //2F
short Index[MAX_USER_GUILD]; //1B0 //5D
unsigned char Use[MAX_USER_GUILD]; //440
char pServer[MAX_USER_GUILD]; //490
char TargetGuildName[9]; //4E0
short TargetIndex[MAX_USER_GUILD]; //4EA
struct _GUILD_INFO_STRUCT* lpTargetGuildNode; //58C
unsigned char WarDeclareState; //590
unsigned char WarState; //591
unsigned char WarType; //592
unsigned char BattleGroundIndex; //593
unsigned char BattleTeamCode; //594
unsigned char PlayScore; //595
int TotalScore; //598
char Notice[60]; //59c
struct _GUILD_INFO_STRUCT* back; //734
struct _GUILD_INFO_STRUCT* next; //738
};
struct OBJECTSTRUCT
{
int m_Index; // 0 # 4
int Connected; // 4 "
char LoginMsgSnd; // 8
char LoginMsgCount; // 9
char CloseCount; // A
char CloseType; // B
struct _PER_SOCKET_CONTEXT* PerSocketContext; // C
unsigned int m_socket; // 10
char Ip_addr[16]; //14
int UserNumber; // 24
int DBNumber; // 28
unsigned char Magumsa; // 2C
DWORD AutoSaveTime; // 30
DWORD ConnectCheckTime; // 34
DWORD CheckTick; // 38
unsigned char CheckSpeedHack; // 3C
DWORD CheckTick2; // 40
unsigned char CheckTickCount; // 44
int iPingTime; // 48
unsigned char m_TimeCount; // 4C
DWORD m_dwPKTimer; // 50
short CheckSumTableNum; // 54
DWORD CheckSumTime; // 58
BYTE Type; // 5C
BYTE Live; // 5D
char CharacterPos; // 5E
char AccountID[11]; // 5F
char Name[11]; // 6A
char LastJoominNumber[14]; // 75
unsigned char Class; // 83
unsigned char DbClass; // 84
unsigned char ChangeUP;//ChangeUP // 85
short Level; // 86
int LevelUpPoint; // 88
unsigned long Experience; // 8c
unsigned long NextExp; // 90
int Money; // 94
WORD Strength; // 98
WORD Dexterity; // 9A
WORD Vitality; // 9C
WORD Energy; // 9E
float Life; // A0
float MaxLife; // A4
float FillLife; // A8
float FillLifeMax; // AC
float Mana; // B0
float MaxMana; // B4
int BP;// B8
int MaxBP;// BC
int AddBP;// C0
float VitalityToLife; // C4
float EnergyToMana; // C8
char m_PK_Count; // CC
char m_PK_Level; // CD
int m_PK_Time; // D0
short X; // D4
short Y; // D6
unsigned char Dir; // D8
unsigned char MapNumber; // D9
short AddLife; // DA
short AddMana; // DC
unsigned char DamageMinus; // DE
unsigned char DamageReflect; // DF
short MonsterDieGetMoney; // E0
unsigned char MonsterDieGetLife; // E2
unsigned char MonsterDieGetMana; // E3
unsigned char StartX; // E4
unsigned char StartY; // E5
short m_OldX; // E6
short m_OldY; // E8
short TX; // EA
short TY; // EC
short MTX; // EE
short MTY; // F0
int PathCount; // F4
int PathCur; // F8
char PathStartEnd; // FC
short PathOri[15]; // FE
short PathX[15]; // 11C
short PathY[15]; // 13A
char PathDir[16]; // 158
unsigned long PathTime; // 168
char m_MoveGateNumber; // 16C
DWORD Authority; // 170
unsigned long AuthorityCode; // 174
unsigned long Penalty; // 178
BYTE m_cAccountItemBlock; // 17C
ACTION_STATE m_ActState; // 180
BYTE m_ActionNumber; // 184
DWORD m_State; // 188
char m_StateSub; // 18C
unsigned char m_Rest; // 18D
char m_ViewState; // 18E
BYTE m_ViewSkillState; // 18F
DWORD m_LastMoveTime; // 190
DWORD m_LastAttackTime; // 194
int m_DetectSpeedHackTime; // 198
unsigned long m_SumLastAttackTime; // 19C
unsigned long m_DetectCount; // 1A0
int m_DetectedHackKickCount; // 1A4
int m_SpeedHackPenalty; // 1A8
unsigned char m_AttackSpeedHackDetectedCount; // 1AC
unsigned long m_PacketCheckTime; // 1B0
unsigned char m_ShopTime; // 1B4
unsigned long m_TotalAttackTime; // 1B8
int m_TotalAttackCount; // 1BC
unsigned long TeleportTime; // 1C0
char Teleport; // 1C4
char KillerType; // 1C5
char DieRegen; // 1C6
char RegenOk; // 1C7
BYTE RegenMapNumber; // 1C8
BYTE RegenMapX; // 1C9
BYTE RegenMapY; // 1CA
DWORD RegenTime; // 1CC
DWORD MaxRegenTime; // 1D0
short m_PosNum; // 1D4
DWORD LifeRefillTimer; // 1D8
DWORD CurActionTime; // 1DC
DWORD NextActionTime; // 1E0
DWORD DelayActionTime; // 1E4
char DelayLevel; // 1E8
char m_PoisonBeattackCount; // 1E9
char m_ColdBeattackCount; // 1EA
OBJECTSTRUCT * lpAttackObj; // 1EC
short m_SkillNumber; // 1F0
DWORD m_SkillTime; // 1F4
char m_ManaFillCount; // 1F8
char m_LifeFillCount; // 1F9
int SelfDefense[MAX_SELF_DEFENSE]; // 1FC
DWORD SelfDefenseTime[MAX_SELF_DEFENSE]; // 210
DWORD MySelfDefenseTime; // 224
char m_Drink; // 228 m_Drink
int m_SkillDefense; // 22C
char m_SkillDefenseTime; // 230
int m_SkillAttack; // 234
char m_SkillAttackTime; // 238
int m_SkillAttack2; // 23C
char m_SkillAttackTime2; // 240
int m_SkillAddLife; // 244
int m_SkillAddLifeTime; // 248
int m_SkillHarden; // 24C
int m_SkillHardenTime; // 250
int m_SkillMagumReduceDefense; // 254
int m_SkillMagumReduceDefenseTime; // 258
int PartyNumber; // 25C
int PartyTargetUser; // 260
int GuildNumber; // 264
struct _GUILD_INFO_STRUCT* lpGuild; // int lpGuild; // 268
char GuildName[11]; // 26C
int m_RecallMon; // 278
int m_Change; // 27C
short TargetNumber; // 280
short TargetShopNumber; // 282
short ShopNumber; // 284
short LastAttackerID; // 286
int m_AttackDamageMin; // 288
int m_AttackDamageMax; // 28C
int m_MagicDamageMin; // 290
int m_MagicDamageMax; // 294
int m_AttackDamageLeft; // 298
int m_AttackDamageRight; // 29C
int m_AttackDamageMaxLeft; // 2A0
int m_AttackDamageMinLeft; // 2A4
int m_AttackDamageMaxRight; // 2A8
int m_AttackDamageMinRight; // 2AC
int m_AttackRating; // 2B0
int m_AttackSpeed; // 2B4
int m_MagicSpeed; // 2B8
int m_Defense; // 2BC
int m_MagicDefense; // 2C0
int m_SuccessfulBlocking; // 2C4
short m_MoveSpeed; // 2C8
short m_MoveRange; // 2CA
short m_AttackRange; // 2CC
short m_AttackType; // 2CE
short m_ViewRange; // 2D0
short m_Attribute; // 2D2
short m_ItemRate; // 2D4
short m_MoneyRate; // 2D6
int m_CriticalDamage; // 2D8
int m_ExcelentDamage; // 2DC
CMagicInf* m_lpMagicBack; // int m_lpMagicBack; // 2E0
CMagicInf* Magic; // int Magic;// 2E4
char MagicCount; // 2E8
unsigned char UseMagicNumber; // 2E9
unsigned long UseMagicTime; // 2EC
char UseMagicCount; // 2F0
short OSAttackSerial; // 2F2
unsigned char SASCount; // 2F4
unsigned long SkillAttackTime; // 2F8
unsigned char CharSet[11]; // 2FC
unsigned char m_Resistance[4]; // 307
int FrustrumX[4]; // 30C
int FrustrumY[4]; // 31C
struct VIEWPORT_STRUCT VpPlayer[75];// 32C
struct VIEWPORT_PLAYER_STRUCT VpPlayer2[75];// 6B0
int VPCount; // A34
int VPCount2; // A38
struct HITDAMAGE_STRUCT sHD[40];// A3C
short sHDCount; // C1C
struct tagInterfaceState m_IfState; // C1E
unsigned long m_InterfaceTime; // C22
CItem *pInventory; // C24
unsigned char * pInventoryMap; // C28
char * pInventoryCount; // C2C
char pTransaction;//C30
CItem * Inventory1;//C34
unsigned char * InventoryMap1;//C38
char InventoryCount1;//C3C
CItem * Inventory2;//C40
unsigned char * InventoryMap2;//C44
char InventoryCount2;//C48
CItem * Trade;//C4C
LPBYTE TradeMap;//C50
int TradeMoney;//C54
unsigned char TradeOk;//C58
CItem * pWarehouse; // C5C
unsigned char * pWarehouseMap; // C60
char WarehouseCount; // C64
short WarehousePW; // C66
unsigned char WarehouseLock; // C68
unsigned char WarehouseUnfailLock; // C69
int WarehouseMoney; // C6C
int WarehouseSave; // C70
CItem * pChaosBox; // C74
unsigned char* pChaosBoxMap; // C78
int ChaosMoney; // C7C
int ChaosSuccessRate; // C80
int ChaosLock; // C84
unsigned long m_Option; // C88
int m_nEventScore; // C8C
int m_nEventExp; // C90
int m_nEventMoney; // C94
unsigned char m_bDevilSquareIndex; // C98
unsigned char m_bDevilSquareAuth; // C99
char m_cBloodCastleIndex; // C9A
char m_cBloodCastleSubIndex; // C9B
int m_iBloodCastleEXP; // C9C
unsigned char IsInBattleGround; // CA0
unsigned char HaveWeaponInHand; // CA1
short EventChipCount; // CA2
int MutoNumber; // CA4
int UseEventServer; // CA8
unsigned char LoadWareHouseInfo;//MutoNumber // CAC
unsigned char m_Quest[50]; // CAD
unsigned char m_SendQuestInfo; // CDF
int m_SkyBossMonSheildLinkIndex; // CE0
int m_SkyBossMonSheild; // CE4
int m_SkyBossMonSheildTime; // CE8
int m_MaxLifePower; // CEC
int m_WizardSkillDefense; // CF0
int m_WizardSkillDefenseTime; // CF4
int m_PacketChecksumTime; // CF8
int m_CheckLifeTime; // CFC
unsigned char m_MoveOtherServer; // D00
char m_BossGoldDerconMapNumber; // D01
unsigned char m_InWebzen;//D02
char m_LastTeleportTime; // D03
BYTE m_ClientHackLogCount; // D04
unsigned char m_ReqWarehouseOpen; // D05
int NotAttackAreaCount;// D08
};
typedef OBJECTSTRUCT * LPOBJ;
User.cpp
OBJECTSTRUCT* gObj = (OBJECTSTRUCT*)(OBJECT_BASE);
Item.h
class CItem
{
public:
CItem();
void Clear();
unsigned long m_Number; // 0
char m_serial; // 4
short m_Type; // 6
short m_Level; // 8
unsigned char m_Part; // A
unsigned char m_Class; // B
unsigned char m_TwoHand; // C
unsigned char m_AttackSpeed; // D
unsigned char m_WalkSpeed; // E
unsigned short m_DamageMin; // 10
unsigned short m_DamageMax; // 12
unsigned char m_SuccessfulBlocking; // 14
unsigned short m_Defense; // 16
unsigned short m_MagicDefense; // 18
unsigned char m_Speed; // 1A
unsigned short m_DamageMinOrigin; // 1A
unsigned short m_DefenseOrigin; // 1E
unsigned short m_Magic; // 20
float m_Durability; // 24
unsigned short m_DurabilitySmall; // 28
float m_BaseDurability; // 2C
unsigned char m_SpecialNum; // 30
unsigned char m_Special[8]; // 31
unsigned char m_SpecialValue[8]; // 39
unsigned short m_RequireStrength; // 42
unsigned short m_RequireDexterity; // 44
unsigned short m_RequireEnergy; // 46
unsigned short m_RequireLevel; // 48
unsigned char m_RequireClass[4]; // 4A
unsigned char m_Resistance[4]; // [0]4E / [1]4F / [2]50 / [3]51
///*0x52> |0x2|*/ char unk1[2]; // 52 53
int m_Value; // 54
unsigned long m_SellMoney; // 58
unsigned long m_BuyMoney; // 5C
int m_OldSellMoney; // 60
int m_OldBuyMoney; // 64
unsigned char m_Option1; // 68
unsigned char m_Option2; // 69
unsigned char m_Option3; // 6A
unsigned char m_NewOption; // 6B
float m_DurabilityState[4]; // [0]6C / [1]70 + [2]74 + [3]78
float m_CurrentDurabilityState; // 7C
bool m_QuestItem; // 80
};
Item.cpp
CItem::CItem()
{
this->Clear();
}
void CItem::Clear() // Fine
{
this->m_Type =-1;
this->m_Level =0;
this->m_Part=0;
this->m_Class=0;
this->m_TwoHand=0;
this->m_AttackSpeed=0;
this->m_DamageMin=0;
this->m_DamageMax=0;
this->m_SuccessfulBlocking=0;
this->m_Defense=0;
this->m_MagicDefense =0;
this->m_Durability=0;
this->m_SpecialNum=0;
this->m_Value=0;
this->m_Option1 =0;
this->m_Option2 =0;
this->m_Option3 =0;
this->m_NewOption =0;
this->m_Number =0;
this->m_DurabilitySmall =0;
this->m_CurrentDurabilityState=-1;
this->m_QuestItem=false;
memset(this->m_Special, 0, sizeof(this->m_Special));
memset(this->m_SpecialValue, 0, sizeof(this->m_SpecialValue));
memset(this->m_Resistance, 0, sizeof(this->m_Resistance));
}