#pragma once

namespace base
{

	const int ScanInt = 0x088BC37B;
	const int ScanStr = 0x088BC7A2;

	const int Init = 0x082A08F4;

	const int importCashShopItemList = 0x088FDCB5;
	const int importCashShopItemList_hook_begin = 0x088FDD59;
	const int importCashShopItemList_hook_end = 0x088FDD61;

	namespace ItemVendingMachine
	{
		// 08178676
		const int ProcessIPG_ResultOutput_hook_begin = 0x08179398;
		const int ProcessIPG_ResultOutput_hook_end = 0x081793A2;
	}

	namespace DNFFLib
	{
		const int ConvertGBKtoUTF8 = 0x08108D0E;
		const int ConvertUTF8toGBK = 0x08108D4B;

	}

	namespace CGameManager
	{
		const int G_CGameManager = 0x080CC18E;
	}

	namespace CSystemTime
	{
		const int getCurSec = 0x080CBC9E;
		const int getCurTickCount = 0x081458AC;
		const int getCurDate = 0x0823445E;
		const int update = 0x082A68C8;
		const int CSystemTime_make = 0x082A6936;
		const int CSystemTime_destroy = 0x082A6986;
	}

	namespace Dispatcher_BuyCeraShopItem
	{
		const int dispatch_sig = 0x081FD396;
	}

	namespace Dispatcher_UseJewel
	{
		const int dispatch_sig = 0x8217BD6;

	}

	namespace DisPatcher_MoveMap
	{
		const int process = 0x081C5330;
		const int dispatch_sig = 0x082595B2;
	}

	namespace Inter_LoadEtc
	{
		const int dispatch_sig = 0x084C0264;
	}

	namespace DisPatcher_ReturnToSelectCharacter
	{
		const int dispatch_sig = 0x081FD25C;
	}

	namespace GlobalData
	{
		const int Init = 0x08299FA0;
		const int Init_fix_1 = 0x0829C075;

		// base
		const int s_pSecuProtectionField = 0x0941F7CC; // 0x18
		const int s_pItemVendingMachine = 0x0941F760;  // 0x20
		const int s_db_mgr = 0x0940BDAC;			   // 0x38
		const int s_pCeraShop = 0x0941F744;			   // 0x8
		const int s_pLogGameChannel = 0x0941F740;	   // 0x10
		const int s_systemTime_ = 0x0941F714;
	}

	namespace CShutdowManager
	{
		const int CShutdowManager_make = 0x082A6FA8;
		const int EnableShutdown = 0x082A6F70;
		const int GetLastMsgCount = 0x084ED1FE;
		const int GetLastMsgResponseCount = 0x084ED20A;
		const int IncrementLastMsgResponseCount = 0x084ED1EA;
		const int OnAllUserLogout = 0x082A36BC;
		const int Reset = 0x082A6F88;
		const int SendLastMsgDBQueue = 0x082A37C8;
		const int SendShutdownSignal = 0x082A35A6;
		const int WaitUntilExitThread = 0x082A396E;
		const int GetInstanceShutdowManager = 0x082A6FBB;
	}

	namespace CParty
	{
		const int addDungeonClear = 0x085BDDFC;
		const int addDungeonClear_fix_1 = 0x085BDE9D; // 普通被击
		const int addDungeonClear_fix_2 = 0x085BDF30; // 远古被击
		const int addDungeonClear_fix_3 = 0x085BDFC3; // 异界被击

	}

	namespace CUserCharacInfo
	{
		const int getCurCharacName = 0x8101028;
		const int getCurCharacNo = 0x080CBC4E;
		const int getCurCharacLastPlayTick = 0x82A66AA;
		const int get_level_up_exp = 0x0864E3BA;
		const int getCurCharacInvenW = 0x80DA28E;
		const int _checkItemMovable = 0x0865F1E1;
		const int getCurCharacInvenR = 0x080DA27E;
		const int getCurCharacR = 0x08120432;
	}

	namespace CUser
	{
		const int get_acc_id = 0x080DA36E;
		const int get_state = 0x080DA38C;
		const int CheckItemLock = 0x8646942;
		const int SendNotiPacketMessage = 0x86886CE;
		const int gain_exp_sp = 0x866A3FE;
		const int AddItem = 0x867B6D4;
		const int SendUpdateItemList = 0x867C65A;
		const int SendCmdErrorPacket = 0x0867BF42;
		const int isEnableAvatarSocketAction = 0x086810A8;
		const int Send = 0x86485BA;
		const int setCharacInfoDetail = 0x0864AC1A;
		const int IsGameMasterMode = 0x0811EDEE;
		const int isGMUser = 0x0814589C;
		const int exchange_interspace = 0x0865F7B0;
		const int setLastPacketID = 0x0867CBC4;
		const int GetAccountCargo = 0x0822FC22;
		const int CheckInTrade = 0x080DA2FE;
		const int IsExistAccountCargo = 0x0822FC30;
		const int send_itemspace = 0x0865DB6C;

	}

	namespace CStackableItem
	{
		const int GetItemType = 0x8514A84;
		const int getJewelTargetSocket = 0x0822CA28;

	}

	namespace CItem
	{
		const int is_stackable = 0x80F12FA;
		const int IsRoutingItem = 0x08150F18;
		const int GetAttachType = 0x080F12E2;
		const int GetCashPrice = 0x0822C856;
		const int GetDyeInfo = 0x0822C86E;
		const int GetExpertJobAdditionalExp = 0x0850D30E;
		const int GetExpertJobCompoundMaterialVariation = 0x0850D292;
		const int GetExpertJobCompoundRateVariation = 0x0850D2AA;
		const int GetExpertJobCompoundResultVariation = 0x0850D2C2;
		const int GetExpertJobSelfDisjointBigWinRate = 0x0850D2DE;
		const int GetExpertJobSelfDisjointResultVariation = 0x0850D2F6;
		const int GetFinishPointPrice = 0x0822C83E;
		const int GetIncreaseStatusIntData = 0x08694658;
		const int GetIncreaseStatusType = 0x086946B6;
		const int GetItemIconName = 0x085143EC;
		const int GetItemName = 0x0811ED82;
		const int GetMedalPrice = 0x0822C862;
		const int GetNeedLevel = 0x08545FDA;
		const int GetNeedMaterial = 0x0850D6F4;
		const int GetQuestItemDropBouns = 0x08514404;
		const int GetRandomOptionGrade = 0x0851441C;
		const int GetSellPrice = 0x08473612;
		const int GetUpSkillType = 0x08545FCC;
		const int GetUsablePvPRank = 0x086946C4;
		const int getAdvanceAltarNeedGage = 0x081347CA;
		const int getExpirationDate = 0x080F1306;
		const int getFootControlRateLimit = 0x0850D286;
		const int getItemGroupName = 0x080F1312;
		const int getUsableLevel = 0x080F12EE;
		const int getUsablePeriod = 0x08110C60;
		const int get_gen_rate = 0x0832E02A;
		const int get_grade = 0x08110C54;
		const int get_index = 0x08110C48;
		const int get_need_skill = 0x0850D27A;
		const int get_price = 0x0822C84A;
		const int get_rarity = 0x080F12D6;
	}

	namespace CEquipItem
	{
		const int GetItemType = 0x08514D26;
		const int getAvatarSocket = 0x08150F36;
	}

	namespace stAvatarEmblemInfo_t
	{
		const int init = 0x081506E8;
	}

	namespace Inven_Item
	{
		const int get_add_info = 0x80F783A;
		const int isEmpty = 0x811ED66;
		const int getKey = 0x850D14E;
		const int isEquipableItemType = 0x08150812;
		const int IsTradeLimitAttachTypeItem = 0x081201DC;
		const int GetItemSpace = 0x083481E2;
		const int SetReSealCount = 0x0822B466;
		const int GetReSealCount = 0x0822B456;

	}

	namespace CDataManager
	{
		const int G_CDataManager = 0x80CC19B;
		const int find_item = 0x835FA32;
	}

	namespace CInventory
	{
		const int GetAvatarItemMgrR = 0x80DD576;
		const int GetAvatarItemMgrW = 0x08110C6C;

		const int delete_item = 0x850400C;
		const int use_money = 0x84FF54C;
		const int gain_money = 0x84FF29C;
		const int GetInvenRef = 0x84FC1DE;
		const int GetInvenSlot = 0x084FB918;
		const int update_item = 0x085000AE;
		const int insertItemIntoInventory = 0x08502D86;

	}

	namespace DB_UpdateAvatarJewelSlot
	{
		const int makeRequest = 0x843081C;
	}

	namespace PacketBuf
	{
		const int PacketBuf_make = 0x0858C8C0;
		const int PacketBuf_destroy = 0x0858C8DC;

		const int at = 0x0822B6D4;
		const int bind_packet = 0x0858D4DE;
		const int clear = 0x0858C8E2;
		const int clear_ptr = 0x0858C93A;
		const int compress_packet = 0x0858DAA2;
		const int copy = 0x0858DCD2;
		const int encFinalize = 0x0858DF30;
		const int encrypt_packet = 0x0858D86A;
		const int finalize = 0x0858D548;
		const int getLastError = 0x086D18E2;
		const int get_binary = 0x0858D3B2;
		const int get_buf_ptr = 0x0858DA38;
		const int get_byte = 0x0858CF22;
		const int get_byte_u = 0x0858CF70;
		const int get_index = 0x08110B1C;
		const int get_int = 0x0858D0F0;
		const int get_int_u = 0x0858D240;
		const int get_int_ul = 0x0858D27E;
		const int get_item_idx = 0x0822B6E8;
		const int get_len = 0x0858DA52;
		const int get_packet = 0x0822B702;
		const int get_short = 0x0858CFC0;
		const int get_short_u = 0x0858D0B0;
		const int get_str = 0x0858D2BC;
		const int isCompressRequired = 0x0858E248;
		const int isEncryptRequired = 0x0858DA28;
		const int is_finallized = 0x0848F390;
		const int is_len_end = 0x0858CEFC;
		const int is_ptr_end = 0x0858CEC4;
		const int put_binary = 0x0811DEDC;
		const int put_binary_c = 0x0815093E;
		const int put_byte = 0x080CB89E;
		const int put_header = 0x0858C94A;
		const int put_int = 0x080CB8C2;
		const int put_item_idx = 0x0822B6B0;
		const int put_packet = 0x0858DC2E;
		const int put_short = 0x080D9E80;
		const int put_str = 0x081B73B8;
		const int put_str_c = 0x0822B684;
		const int setLastError = 0x0858E286;
		const int set_index = 0x081252BA;
		const int set_packet = 0x0858D462;

	}

	namespace InterfacePacketBuf
	{
		const int AcquirePacketBuf = 0x0858E2A0;
		const int InterfacePacketBuf_make = 0x0858E294;
		const int bind_packet = 0x0848F39C;
		const int clear = 0x080CB8E6;
		const int finalize = 0x080CB958;
		const int get = 0x0822B766;
		const int getLastError = 0x086D18EE;
		const int get_binary = 0x0848F3F8;
		const int get_index = 0x08110B4C;
		const int get_int = 0x0848F3DC;
		const int get_len = 0x0848F438;
		const int get_packet = 0x0848F41C;
		const int get_short = 0x0848F3C0;
		const int is_finallized = 0x0848F44E;
		const int put_binary = 0x0811DF08;
		const int put_binary_c = 0x0815096A;
		const int put_byte = 0x080CB920;
		const int put_header = 0x080CB8FC;
		const int put_int = 0x080CB93C;
		const int put_item_idx = 0x0822B794;
		const int put_packet = 0x0815098E;
		const int put_short = 0x080D9EA4;
		const int put_str = 0x081B73E4;
		const int put_str_c = 0x0822B770;
		const int set_index = 0x0822B7B0;
		const int InterfacePacketBuf_destroy = 0x0858E29A;

	}

	namespace PacketGuard
	{
		const int PacketGuard_make = 0x0858DD4C;
		const int PacketGuard_destroy = 0x0858DE80;
	}

	namespace PacketDispatcher // U
	{
		const int getDispatcher = 0x08231F2E;
		const int server_load_monitoring = 0x0825F658;
		const int log_recv_packet = 0x0825F72E;
		const int PacketDispatcher_make = 0x08590A2E;//???
		const int PacketDispatcher_destroy = 0x08594840;
		const int get_dispatcher = 0x085948E2;
		const int doDispatch = 0x08594922;
		const int dispatch = 0x08594E52;
	}
	namespace WongWork
	{
		namespace CCeraShop
		{
			const int _processCoin = 0x08325A88;

		}

		namespace CMailBoxHelper
		{
			const int ReqDBSendNewMailCashShop = 0x08556D5C;
		}

		namespace CHackAnalyzer
		{
			const int addServerHackCnt = 0x080F8C7E;
		}

		namespace CGMAccounts
		{
			const int isGM = 0x08109346;
		}

		namespace CAvatarItemMgr
		{
			const int getJewelSocketData = 0x82F98F8;
			const int setEmblemSocketData = 0x082F91CE;
		}
	}

	namespace DBMgr
	{
		const int setUserIdx = 0x0818FB1A;
		const int activateGlobalDB = 0x082A420C;
		const int DBMgr_make = 0x083F48DE;
		const int DBMgr_destroy = 0x083F4A1C;
		const int Open = 0x083F4BC4;
		const int Open_2 = 0x083F4D2E;
		const int Close = 0x083F4EA6;
		const int Close_2 = 0x083F4EE0;
		const int GetServerType = 0x083F4F10;
		const int addUserDBInfo = 0x083F4F9E;
		const int removeUserDBInfo = 0x083F5038;
		const int GetDBHandleServerGroup = 0x083F506C;
		const int SetQueryCounterPointer = 0x083F5150;
		const int GetDBHandle = 0x083F523E;
		const int isActiveGlobalDB = 0x083F533C;

	}

	namespace CQueryCounter
	{
		const int CQueryCounter_make = 0x085ECAEC;
		const int GetQueryCountTable = 0x0844D652;
		const int IncreaseQueryCount = 0x085ECC5E;
		const int LoadQueryTable = 0x085ED18A;
		const int RegisterQuery = 0x085ED5AE;
		const int Reset = 0x085ECBD6;
		const int SaveQuery = 0x085ED3A2;
		const int SetResponseTime = 0x085ED108;
		const int UpdateQueryCounter = 0x085ECEE6;
		const int setLogDB = 0x0844D63A;
		const int CQueryCounter_destroy = 0x085ECB8A;

	}

	namespace MySQL
	{
		const int GetQueryCounter = 0x082A4202;
		const int GetQueryString = 0x0844D65E;
		const int MySQL_make = 0x083F3AC8;
		const int SetQueryCounter = 0x083F531C;
		const int blob_to_str = 0x083F452A;
		const int clear_result_set = 0x083F5630;
		const int close = 0x083F3E74;
		const int escape_string = 0x083F48AA;
		const int exec = 0x083F4326;
		const int exec_query = 0x083F5348;
		const int fetch = 0x083F44BC;
		const int getAffectedRowCount = 0x083F4310;
		const int getClientVersion = 0x083F4622;
		const int getDBError = 0x0811B97A;
		const int getServerVersion = 0x083F460C;
		const int get_binary = 0x0812531A;
		const int get_binary_length = 0x081253DE;
		const int get_byte = 0x080FDE54;
		const int get_byte2 = 0x0844D73A;
		const int get_char = 0x0815E6A6;
		const int get_float = 0x0844D6D0;
		const int get_int = 0x0811692C;
		const int get_int2 = 0x080E22AE;
		const int get_longlong = 0x085F4214;
		const int get_n_rows = 0x080E236C;
		const int get_short = 0x0814201C;
		const int get_short2 = 0x080FDDEC;
		const int get_str = 0x080ECDEA;
		const int get_ubyte = 0x080FDEBA;
		const int get_uint = 0x080E22F2;
		const int get_ulong = 0x0844D66A;
		const int get_ulonglong = 0x081754C8;
		const int get_ushort = 0x08116990;
		const int init = 0x083F3CE4;
		const int init_db_handle = 0x083F3C16;
		const int insert = 0x083F46AE;
		const int is_valid_col = 0x080E22D0;
		const int is_valid_data = 0x085F41B2;
		const int open = 0x083F3E9E;
		const int open2 = 0x083F4024;
		const int ping = 0x083F4514;
		const int select = 0x083F4678;
		const int select2 = 0x083F4630;
		const int set_charset_name_option = 0x083F3C02;
		const int set_compress_option = 0x083F3AFE;
		const int set_query = 0x083F41C0;
		const int set_query2 = 0x083F4782;
		const int set_read_default_grp_option = 0x083F3B80;
		const int set_reconnect_option = 0x083F3C0C;
		const int update = 0x083F4718;
		const int MySQL_destroy = 0x083F3AEA;

	}

	namespace CGM_Manager
	{
		const int isGM = 0x0829948C;

	}

	namespace CDataManager
	{
		const int GetPvPTeamCount = 0x08568CE0;
	}

	namespace DisPatcher_MoveItem
	{
		const int process = 0x081C5904; // int __cdecl DisPatcher_MoveItem::process(DisPatcher_MoveItem *this, CUser *a2, MSG_BASE *a3, ParamBase *a4)

	}

	namespace cMyTrace
	{
		const int cMyTrace_make = 0x0854F746;
		const int operator_ = 0x0854F788;
		const int cMyTrace_destroy = 0x0854F746;
	}

	namespace IPacketDispatcher
	{
		namespace ParamBase
		{
			const int dispatch_template = 0x081258B6;
		}
	}

	namespace CSecu_ProtectionField
	{
		const int Check = 0x08288A02;
	}

	namespace CAccountCargo
	{
		const int GetCapacity = 0x0822F012;
		const int GetMoney = 0x0822F020;
		const int CAccountCargo = 0x08289794;
		const int SetDBData = 0x08289816;
		const int Clear = 0x0828986C;
		const int ResetSlot = 0x082898C0;
		const int GetSlot = 0x082898F8;
		const int GetSlotRef = 0x08289A0C;
		const int CheckInsertCondition = 0x08289A4A;
		const int InsertItem = 0x08289C82;
		const int DeleteItem = 0x08289E3C;
		const int MoveItem = 0x08289F26;
		const int DepositMoney = 0x0828A12A;
		const int WithdrawMoney = 0x0828A2F6;
		const int CheckMoneyLimit = 0x0828A4CA;
		const int CheckValidSlot = 0x0828A554;
		const int GetEmptySlot = 0x0828A580;
		const int CheckSlotEmpty = 0x0828A5D4;
		const int GetSpecificItemSlot = 0x0828A61A;
		const int CheckStackLimit = 0x0828A670;
		const int AddMoney = 0x0828A742;
		const int SubMoney = 0x0828A764;
		const int GetItemCount = 0x0828A794;
		const int SendNotifyMoney = 0x0828A7DC;
		const int SendItemList = 0x0828A88A;
		const int MakeItemPacket = 0x0828AB1C;
		const int CreateAccountCargo = 0x0828AD72;
		const int UpgradeAccountCargo = 0x0828B0B2;
		const int SendNotifyRecipe = 0x0828B3D0;
		const int DeleteAccountCargo = 0x0828B4EC;
		const int SetStable = 0x0844DC16;
		const int SetCapacity = 0x084EBE46;
		const int IsAlter = 0x08695A0C;
	}

	namespace stMoveItemParam
	{
		const int stMoveItemParam_make = 0x08230CD4;
		const int stMoveItemParam_destroy = 0x08248062;
		const int stMoveItemParam_del = 0x08248092;
	}

	namespace cUserHistoryLog
	{
		const int AccountCargoAddItem = 0x086868B4;
	}

	namespace AvatarRechargeServer
	{
		const int Get = 0x081935A2;
		const int SendDurability = 0x08190416;
	}

	namespace Dispatcher_ModItemAttr
	{
		const int dispatch_sig = 0x08200B08;
		const int dispatch_sig_hook = 0x08201119; //.text:08201119                 cmp     eax, 28D14Eh
		const int dispatch_sig_ret = 0x0820111E;  //.text:0820111E                 ja      short loc_820113E
		const int _SendResult = 0x08201938;

	}

}
