/* ==================================================================== *< * ÆÄ ÀÏ : sqlGameStmt.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : °ûöÁß * ÀÛ ¼º ÀÏ : 07/01/12 * ÁÖÀÇ»çÇ× : * =================================================================== */ #ifndef __SQL_GAME_STATEMENT_H__ #define __SQL_GAME_STATEMENT_H__ //#ifndef WINVER //#define WINVER 0x0500 //#endif // //#ifndef _WIN32_WINNT //#define _WIN32_WINNT 0x0500 //#endif #pragma once #include "odbcsql.h" #include "gamesrvdefines.h" #include "commondefines.h" #include "makeskill_common.h" #include "Party_Common.h" struct INIT_GAME { long channelNum; long removeCoolTimeCount; }; struct SHUTDOWN_GAME { long channelNum; long removeCoolTimeCount; }; struct THEME_CREATE { short themeIdx; // [In] Å׸¶ À妽º BYTE fixTime; // [In] °íÁ¤ ½Ã°£(0~23, ½Ã°£´ÜÀ§) BYTE varTime; // [In] °¡º¯ ½Ã°£(1~NN, ½Ã°£´ÜÀ§) short maxRoom; // [In] ÃÖ´ë ·ë °¹¼ö TIMESTAMP_STRUCT lastDate; // [Out] ¸¶Áö¸· ¾÷µ¥ÀÌÆ®ÀÏ TIMESTAMP_STRUCT validThru; // [Out] À¯È¿¸¸±âÀÏ long retvalue; // [Out] ¹Ýȯ°ª }; struct THEME_ROOM_CHECK { long characterIdx; // À¯Àú À妽º short themeIdx; // [In] Å׸¶ À妽º BYTE themeMode; // [In] ¸ðµå(³­À̵µ) short roomIdx; // [Out] ·ë À妽º long roomRetvalue; // [Out] °á°ú long retvalue; // [Out] À¯Àú °á°ú }; struct THEME_USER_CHECK { short themeIdx; // [In] Å׸¶ À妽º short roomIdx; // [Out] ·ë À妽º char themeMode; // [Out] ¸ðµå(³­À̵µ) long characterIdx; // [In] ij¸¯ÅÍ À妽º }; struct THEME_USER_INSERT { short themeIdx; // [In] Å׸¶ À妽º BYTE themeMode; // [In] ¸ðµå(³­À̵µ) short roomIdx; // [In] ·ë À妽º long characterIdx; // [In] ij¸¯ÅÍ À妽º long characterMaxCnt; // [In] ij¸¯ÅÍ ÃÖ´ë Àοø long retvalue; // [Out] °á°ú }; struct THEME_USER { short themeIdx; // Å׸¶ À妽º BYTE themeMode; // ¸ðµå(³­À̵µ) short roomIdx; // ·ë À妽º TIMESTAMP_STRUCT lastDate; // ¸¶Áö¸· ¾÷µ¥ÀÌÆ®(ÀÏ) TIMESTAMP_STRUCT validThru; // À¯È¿¸¸±â(ÀÏ) }; struct THEME_USER_SELECT { long characterIdx; // [In] ij¸¯ÅÍ À妽º long rowCount; // [Out] Àû¿ëµÈ Çà ¼ö THEME_USER table[1]; // [Out] °á°ú }; struct THEME_USER_UPDATE { short themeIdx; // [In] Å׸¶ À妽º BYTE themeMode; // [In] ¸ðµå(³­À̵µ) short roomIdx; // [Out] ·ë À妽º long characterIdx; // [In] ij¸¯ÅÍ À妽º long characterMaxCnt; // [In] ij¸¯ÅÍ ÃÖ´ë Àοø long retvalue; // [Out] ¹Ýȯ°ª }; struct THEME_USER_REMOVE { short themeIdx; // [In] Å׸¶ À妽º char themeMode; // [In] ¸ðµå(³­À̵µ) short roomIdx; // [In] ·ë À妽º long characterIdx; // [In] ij¸¯ÅÍ À妽º long retvalue; // [Out] °á°ú }; struct THEME_USER_SAVE : public THEME_USER { long characterIdx; // [In] ij¸¯ÅÍ À妽º long retvalue; // [Out] °á°ú }; struct sThemePartyInfoDB { unsigned long mPlayerIdx; // Ç÷¹À̾î À妽º unsigned char mMode; // ¸ðµå bool mIsJoin; // ÀÔÀå bool mIsDependency; // ±Í¼Ó unsigned long mRoomIdx; // ¹æ¹øÈ£ }; struct THEME_PARTYINFO_SELECT { unsigned short mThemeIdx; // [In] Å׸¶ À妽º unsigned char mPartyCnt; // [In] ÆÄƼ¿ø Àοø unsigned long mCharacterIdx[MAX_PARTYUSER]; // [In] ÆÄƼ¿ø ¸ñ·Ï unsigned char mCount; // [Out] ÆÄƼÁ¤º¸ Ä«¿îÆ® sThemePartyInfoDB mPartyInfo[1]; // [Out] ÆÄƼ¿øº° Å׸¶ Á¤º¸ unsigned long GetMsgLength() { return sizeof(THEME_PARTYINFO_SELECT) - sizeof(mPartyInfo) + (mCount * sizeof(sThemePartyInfoDB));} }; struct THEME_PARTYROOM_SELECT { unsigned short mThemeIdx; // [In] Å׸¶ À妽º unsigned char mMode; // [In] Å׸¶ ¸ðµå unsigned char mPartyCnt; // [In] ÆÄƼ¿ø Àοø unsigned long mPartyUserIdx[MAX_PARTYUSER]; // [In] ÆÄƼ¿ø ¸ñ·Ï unsigned short mRoomIdx; // [Out] ¼±Á¤µÈ¹æ¹øÈ£ }; struct THEME_GM_USER_SELECT { wchar_t characterName[ 17 ]; // [In] Á¦Àç ´çÇÒ Ä³¸¯ÅÍ À̸§ long characterIdx; // [Out] Á¦Àç ´çÇÒ Ä³¸¯ÅÍ Index long rowCount; // [Out] Àû¿ëµÈ Çà ¼ö THEME_USER table[1]; // [Out] °á°ú }; struct VERIFY_ITEM_TABLE { long count; long retvalue; }; struct ITEM_DEFINE_TABLE { long idx; TB_ITEM_DEFINE table[1]; }; struct ITEM_ABILITY_TABLE { long idx; TB_ITEM_ABILITY table[1]; }; struct ITEM_COOLTIME2_TABLE { long idx; long rowCount; TB_ITEM_COOLTIME1 table[1]; }; struct ITEM_LIMIT_TABLE { long idx; TB_ITEM_LIMIT table[1]; }; struct ITEM_CARD_TABLE { long idx; TB_ITEM_CARD table[1]; }; struct ITEM_CARD_SLOT_TABLE { long idx; TB_ITEM_CARD_SLOT table[1]; }; struct ITEM_TAROT_TABLE { long idx; TB_ITEM_TAROT table[1]; }; struct ITEM_ENHANCED_TABLE { long idx; TB_ITEM_ENHANCED table[1]; }; struct ITEM_ENHANCED_RATE_TABLE { long idx; TB_ITEM_ENHANCED_RATE table[1]; }; struct ITEM_DISJOINT_TABLE { long idx; TB_ITEM_DISJOINT table[1]; }; struct ITEM_CHANGE_TABLE { long idx; TB_ITEM_CHANGE table[1]; }; struct VERIFY_DEFAULT_ITEMS { long rowCount; long retvalue; }; struct CHARACTER_LIST { long userIdx; // [In] »ç¿ëÀÚ À妽º long retvalue; // [Out] °á°ú long rowCount; // [Out] Àû¿ëµÈ ÇàÀÇ ¼ö TB_CHARACTER_LIST table[1]; // [Out] ij¸¯ÅÍ Å×À̺í }; struct CHARACTER_SELECT { long characterIdx; // [In] ij¸¯ÅÍ À妽º long userIdx; // [In] »ç¿ëÀÚ À妽º TB_CHARACTER character; // [Out] ij¸¯ÅÍ Å×À̺í }; struct CHARACTER_NAME { wchar_t name[17]; // [In] ij¸¯ÅÍ À̸§ long retvalue; // [Out] °á°ú }; struct CHARACTER_DELETE { long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ char level; // [Out] ij¸¯ÅÍ ·¹º§ long exp; // [Out] ij¸¯ÅÍ °æÇèÄ¡ char skillLevel; // [Out] ij¸¯ÅÍ ½ºÅ³ ·¹º§ long skillExp; // [Out] ij¸¯ÅÍ ½ºÅ³ °æÇèÄ¡ long skillPointTotal; // [Out] ij¸¯ÅÍ ½ºÅ³ Æ÷ÀÎÆ® long guild_index; // [Out] ij¸¯ÅÍ ±æµå À妽º char standIdx; // [Out] ij¸¯ÅÍ »ý¼ºÀ§Ä¡ long userIdx; // [In] »ç¿ëÀÚ °íÀ¯¹øÈ£ long retvalue; // [Out] °á°ú char request; // Ŭ¶óÀÌ¾ðÆ® ¿äû ¿©ºÎ }; struct CHARACTER_INSERT { long idx; // [Out] ij¸¯ÅÍ °íÀ¯¹øÈ£ wchar_t name[17]; // [In] ij¸¯ÅÍ À̸§ char race; // [In] ij¸¯ÅÍ Á¾Á· char gender; // [In] ij¸¯ÅÍ ¼ºº° long job; // [In] ij¸¯ÅÍ Á÷¾÷ long hair; // [In] ij¸¯ÅÍ Çì¾î short hairColor; // [In] ij¸¯ÅÍ ¸Ó¸®»ö long face; // [In] ij¸¯ÅÍ ¾ó±¼ float xPos; // [In] ij¸¯ÅÍ XÀ§Ä¡ float yPos; // [In] ij¸¯ÅÍ YÀ§Ä¡ long hp; // [In] HP ±âº»°ª long mp; // [In] MP ±âº»°ª char standIdx; // [In] »ý¼ºÀ§Ä¡ long userIdx; // [In] »ç¿ëÀÚ °íÀ¯¹øÈ£ unsigned short bagEnd; // [In] Àκ¥Å丮 Å©±â unsigned short wearEnd; // [In] Âø¿ë Ä«µå ½½·Ô unsigned short wareHouseEnd; // [In] â°í Å©±â unsigned short makeSkillEnd; // [In] º¸Á¶Á÷¾÷ Å©±â long retvalue; // [Out] °á°ú long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct CHARACTER_DELETE_WAIT { long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ char level; // [Out] ij¸¯ÅÍ ·¹º§ long exp; // [Out] ij¸¯ÅÍ °æÇèÄ¡ char skillLevel; // [Out] ij¸¯ÅÍ ½ºÅ³ ·¹º§ long skillExp; // [Out] ij¸¯ÅÍ ½ºÅ³ °æÇèÄ¡ long skillPointTotal; // [Out] ij¸¯ÅÍ ½ºÅ³ Æ÷ÀÎÆ® long guild_index; // [Out] ij¸¯ÅÍ ±æµå À妽º char standIdx; // [Out] ij¸¯ÅÍ »ý¼ºÀ§Ä¡ long userIdx; // [In] »ç¿ëÀÚ °íÀ¯¹øÈ£ long delWaitTime; // [Out] ij¸¯ÅÍ »èÁ¦ ±âÇÑ long retvalue; // [Out] °á°ú }; struct CHARACTER_DELETE_CANCEL { long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ char level; // [Out] ij¸¯ÅÍ ·¹º§ long exp; // [Out] ij¸¯ÅÍ °æÇèÄ¡ char skillLevel; // [Out] ij¸¯ÅÍ ½ºÅ³ ·¹º§ long skillExp; // [Out] ij¸¯ÅÍ ½ºÅ³ °æÇèÄ¡ long skillPointTotal; // [Out] ij¸¯ÅÍ ½ºÅ³ Æ÷ÀÎÆ® long guild_index; // [Out] ij¸¯ÅÍ ±æµå À妽º char standIdx; // [Out] ij¸¯ÅÍ »ý¼ºÀ§Ä¡ long userIdx; // [In] »ç¿ëÀÚ °íÀ¯¹øÈ£ long retvalue; // [Out] °á°ú }; struct CHARACTER_UPDATE { long cid; // [In] ConnectionIdx long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ short mapNumber; // [In] ¸Ê ¹øÈ£ float xPos; // [In] XÀ§Ä¡ (¼Ò¼öÁ¡ Æ÷ÇÔ) float yPos; // [In] YÀ§Ä¡ " long hp; // [In] HP long mp; // [In] MP long tarotPoint; // [In] Ÿ·Î Æ÷ÀÎÆ® long titleIndex; // [In] ȣĪ À妽º long guildIndex; // [In] ±æµå À妽º char guildPosition; // [In] ±æµå Á÷À§ char level; // [In] ·¹º§ long exp; // [In] exp char skillLevel; // [In] ½ºÅ³·¹º§ long skillExp; // [In] ½ºÅ³°æÇèÄ¡ long skillPointRemain; // [In] ÀÜ¿©½ºÅ³Æ÷ÀÎÆ® long skillPointTotal; // [In] ÃѽÀµæ½ºÅ³Æ÷ÀÎÆ® long retvalue; // [Out] °á°ú int flag; // [In] flag unsigned long makeSkill1_Exp; // [In] Àü¹®±â¼ú1 ¼÷·Ãµµ unsigned long makeSkill2_Exp; // [In] Àü¹®±â¼ú2 ¼÷·Ãµµ unsigned long expRecover; // [In] °æÇèÄ¡ º¹±¸·® TIMESTAMP_STRUCT expRecoverendDate; // [In] °æÇèÄ¡ º¹±¸ Á¾·á½Ã°£ }; struct CHARACTER_SKILL_RESET { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ char mRace; // [In] Á¾Á· unsigned char mJobStep; // [In] ´Ü°è long mJob; // [In] Á÷¾÷ long mInventoryIdx; // [In] Àκ¥Å丮 °íÀ¯¹øÈ£ long mRetvalue; // [Out] ¹Ýȯ°ª TB_INVENTORY mItem; // [Out] TB_INVENTORY ·¹ÄÚµå long mRowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_CHARACTER_SKILL mTable[1]; // [Out] TB_CHARACTER_SKILL }; struct CHARACTER_THEME_RESET { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned short mThemeIdx; // [In] Å׸¶ Á¾·ù unsigned char mThemeMode; // [In] Å׸¶ ¸ðµå long mInventoryIdx; // [In] Àκ¥Å丮 °íÀ¯¹øÈ£ unsigned short mSlotNum; // ½½·Ô¹øÈ£ long mRetvalue; // [Out] ¹Ýȯ°ª TB_INVENTORY mItem; // [Out] TB_INVENTORY ·¹ÄÚµå long mRowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö THEME_USER mTable[1]; // [Out] TB_THEME_USER }; struct CHARACTER_GM_THEME_RESET { unsigned long mGMCharacterIdx; // [In] GM ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned long mCharacterIdx; // [In] ÃʱâÈ­ÇÒ Ä³¸¯ÅÍ °íÀ¯¹øÈ£ unsigned short mThemeIdx; // [In] Å׸¶ Á¾·ù unsigned char mThemeMode; // [In] Å׸¶ ¸ðµå long mRetvalue; // [Out] ¹Ýȯ°ª long mRowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö THEME_USER mTable[1]; // [Out] TB_THEME_USER }; struct CHARACTER_MONEY { // DB 󸮸¦ À§ÇÑ µ¥ÀÌÅÍ. long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ __int64 money; // [In] º¯°æ±Ý¾× (ºÎÈ£Æ÷ÇÔ) // LOG 󸮸¦ À§ÇÑ µ¥ÀÌÅÍ. long objectType; // [In] Object Á¾ ·ù - Ãâó long objectIndex; // [In] Object ÀÎ µ¦ ½º - Ãâó long objectRaceGender; // [In] Object Detail - Ãâó unsigned long befor; // [In] º¯°æÀü unsigned long after; // [In] º¯°æÈÄ // DB ó¸®ÈÄ °á°ú µ¥ÀÌÅÍ. long retvalue; // [Out] ¹Ýȯ°ª }; struct CHARACTER_DEPOSIT { // DB 󸮸¦ À§ÇÑ µ¥ÀÌÅÍ. long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ __int64 money; // [In] º¯°æ±Ý¾× (ºÎÈ£Æ÷ÇÔ) // LOG 󸮸¦ À§ÇÑ µ¥ÀÌÅÍ. long objectType; // [In] Object Á¾ ·ù - Ãâó long objectIndex; // [In] Object ÀÎ µ¦ ½º - Ãâó long objectRaceGender; // [In] Object Detail - Ãâó unsigned long befor; // [In] º¯°æÀü unsigned long after; // [In] º¯°æÈÄ // DB ó¸®ÈÄ °á°ú µ¥ÀÌÅÍ. long retvalue; // [Out] ¹Ýȯ°ª }; struct CHARACTER_TAROT_POINT { long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long point; // [In] º¯°æÆ÷ÀÎÆ® (ºÎÈ£Æ÷ÇÔ) }; struct CHARACTER_ACTIVE_WEAPON { long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ char activeWeapon; // [In] ij¸¯ÅÍ È°¼º ¹«±âÁ¤º¸ (0 Front, 1Back) long retvalue; // [Out] ¹Ýȯ°ª }; struct CHARACTER_OPTION { long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long option1; // [In] ij¸¯ÅÍ ¿É¼Ç1 long retvalue; // [Out] ¹Ýȯ°ª }; struct CHARACTER_FORCE { unsigned long mIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned char mForceType; // [In] ¼¼·Â long mRetValue; // [Out] ¹Ýȯ°ª }; struct CHARACTER_BLOCK_SELECT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ int rowCount; // [In] Àû¿ëÇà¼ö(Àû¿ë¿©ºÎ) long validTrue; // [In] À¯È¿¸¸±â(ºÐ ´ÜÀ§) }; struct CHARACTER_BLOCK_INSERT { wchar_t characterName[ 17 ]; // [In] Á¦Àç ´çÇÒ Ä³¸¯ÅÍ À̸§ long adminCharacterIdx; // [In] Á¦ÇÑÀ» °¡ÇÑ ¿î¿µÀÚ Äɸ¯ÅÍ À̸§ long validTrue; // [In] À¯È¿¸¸±â(ºÐ ´ÜÀ§) long blockCharacterIdx; // [Out] ºí·Ï ij¸¯ÅÍ °íÀ¯¹øÈ£ int channelNum; // [Out] Á¢¼Ó ¿©ºÎ }; struct NO_CHAT_CHARACTER { wchar_t characterName[ 17 ]; // ij¸¯ÅÍ À̸§ wchar_t adminName[ 17 ]; // Á¦ÇÑÀ» °¡ÇÑ ¿î¿µÀÚ Äɸ¯ÅÍ À̸§ TIMESTAMP_STRUCT registDate; // µî·ÏÀÏ TIMESTAMP_STRUCT validThru; // À¯È¿¸¸±â }; struct CHARACTER_BLOCK_SELECT_LIST { wchar_t characterName[ 17 ]; // [In] °Ë»öÇÒ Äɸ¯ÅÍ À妽º long retValue; // [Out] ¹Ýȯ°ª int rowCount; // [Out] Àû¿ëÇà¼ö NO_CHAT_CHARACTER table[1]; // [Out] TB_FRIEND ·¹ÄÚµå }; struct CHARACTER_GM_NAME { long characterIndex; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ wchar_t characterName[17]; // [In] º¯°æµÉ ij¸¯ÅÍ À̸§ long retvalue; // [Out] ¹Ýȯ°ª }; struct CHARACTER_INVEN_SIZE { long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned short bag; // [In] Àκ¥Å丮 unsigned short wear; // [In] Âø¿ëÄ«µå ½½·Ô unsigned short wareHouse; // [In] â°í unsigned short makeSkill; // [In] º¸Á¶Á÷¾÷ long retvalue; // [Out] ¹Ýȯ°ª }; struct CHARACTER_TTL { long idx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long ttl; // [In] Time To Alive DWORD channelNum; // [In] Channel Num }; struct CHARACTER_LOGIN { long idx; // [Out] ij¸¯ÅÍ °íÀ¯¹øÈ£ wchar_t name[17]; // [In] ij¸¯ÅÍ À̸§ }; struct CHARACTER_CHANNEL { long channelNum; // [Out] ij¸¯ÅͰ¡ Á¢¼ÓµÈ ä³Î¹øÈ£ wchar_t name[17]; // [In] ij¸¯ÅÍ À̸§ }; struct CHARACTER_KICK_SELECT { wchar_t characterName[ 17 ]; // [In] Á¦Àç ´çÇÒ Ä³¸¯ÅÍ À̸§ long kickCharacterIdx; // [Out] ºí·Ï ij¸¯ÅÍ °íÀ¯¹øÈ£ int channelNum; // [Out] Á¢¼Ó ¿©ºÎ }; /*-- ¾ÆÀÌÅÛ / Àκ¥Å丮 */ enum INVENTORY_WARNING { IW_ERROR_DUPLICATE_NUMBER = 0, // Àκ¥Å丮 ¹øÈ£(½½·Ô) Áߺ¹ IW_ERROR_ITEM_DEFINE_INDEX, // ¾ÆÀÌÅÛ Á¤ÀÇ À妽º ¿À·ù IW_ERROR_INVENTORY, // Àκ¥Å丮 ¿À·ù IW_ERROR_TUTORIAL, // Æ©Å丮¾ó ¾ÆÀÌÅÛ »èÁ¦ }; struct INVENTORY_INSERT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [In/Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_SELECT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_DELETE { INVENTORY_WARNING warning; // [In] »èÁ¦¿øÀÎ long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ TB_INVENTORY table; // [In/Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_COOLTIME_SELECT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY_COOLTIME table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_COOLTIME_INSERT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ TB_INVENTORY_COOLTIME table[1]; // [In] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_USE { TB_INVENTORY table[1]; // [In/Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_REMOVE { long idx; // [In] °íÀ¯¹øÈ£ short number; // [In] ¹øÈ£ }; struct INVENTORY_SWAP { long idx1; // [In] °íÀ¯¹øÈ£ short number1; // [In] ¹øÈ£ long idx2; // [In] °íÀ¯¹øÈ£ short number2; // [In] ¹øÈ£ long retvalue; // [Out] °á°ú }; struct INVENTORY_MOVE { long idx; // [In] °íÀ¯¹øÈ£ short number; // [In] À̵¿ÇÒ ¹øÈ£ bool cashBox; // [In] ¼ö·ÉÇÔ(ij½Ã¹Ú½º) }; struct INVENTORY_EXCEPT { long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö struct { long idx; // [In] °íÀ¯¹øÈ£ short number; // [In] À̵¿ÇÒ ¹øÈ£ } table[1]; }; struct INVENTORY_MERGE { long idx1; // [In] °íÀ¯¹øÈ£1 long idx2; // [In] °íÀ¯¹øÈ£2 short capacity; // [In] ÃÖ´ë¼ö·® long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; #define ROW_INVENTORY_DIVIDE 2 struct INVENTORY_DIVIDE { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ TB_INVENTORY table[ROW_INVENTORY_DIVIDE]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_MOVE2 { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; #define RESULT_INVENTORY_ENHANCED_SUCCESS 0 // ¼º°ø #define RESULT_INVENTORY_ENHANCED_DOWN 1 // °¨¼Ò #define RESULT_INVENTORY_ENHANCED_DESTROY 2 // ÆÄ±« #define RESULT_INVENTORY_ENHANCED_KEEP 3 // À¯Áö(º¯È­¾øÀ½) struct INVENTORY_ENHANCED { char result; // [In] °á°ú(0¼º°ø/1°¨¼Ò/2ÆÄ±«/3¾øÀ½) TB_INVENTORY table[3]; // [Out] TB_INVENTORY ·¹ÄÚµå([0]°­È­Àåºñ [1]°­È­Ä«µå [2]°­È­º¸È£Ä«µå) }; struct INVENTORY_DISJOINT { // ºÐÇØ¾ÆÀÌÅÛ long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long characterMoney; // [In] ij¸¯ÅÍ º¯°æ±Ý¾× (ºÎÈ£Æ÷ÇÔ) long retvalue; // [In] [Out] °á°ú long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_PUT_CARD { long idx1; // [In] °íÀ¯¹øÈ£1(Àåºñ) BYTE cardSlot; // [In] Ä«µå½½·Ô ¹øÈ£(1~5) long idx2; // [In] °íÀ¯¹øÈ£2(Ä«µå) long itemDefineIndex; // [In] ¾ÆÀÌÅÛ À妽º(TB_ITEM_DEFINE::INDEX [±âȹ:ºÐ·ù¹øÈ£]) long retvalue; // [Out] ¹Ýȯ°ª TB_INVENTORY table[2]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_CHANGE { // ±³È¯¾ÆÀÌÅÛ long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long characterMoney; // [In] ij¸¯ÅÍ º¯°æ±Ý¾× (ºÎÈ£Æ÷ÇÔ) long retvalue; // [Out] °á°ú long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct INVENTORY_SEAL { long characterIdx; // [In] TB_CHARACTER::IDX °íÀ¯¹øÈ£ TB_INVENTORY inventory; // [In] TB_INVENTORY ·¹ÄÚµå TB_ITEM_BILL itemBill; // [In] TB_ITEM_BILL ·¹ÄÚµå long retvalue; // [Out] ¹Ýȯ°ª }; struct ITEM_BILL_SELECT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_ITEM_BILL table[1]; // [Out] TB_ITEM_BILL ·¹ÄÚµå }; struct ITEM_BILL_REMOVE { long idx; // [In] °íÀ¯¹øÈ£ TB_INVENTORY inventory; // [In] TB_INVENTORY long retvalue; // [Out] ¹Ýȯ°ª }; struct ITEM_BILL_UPDATE { long characterIdx; // [In] TB_CHARACTER::IDX °íÀ¯¹øÈ£ long idx; // [In] °íÀ¯¹øÈ£ long elapsed; // [In] °æ°ú½Ã°£(ÃÊ ´ÜÀ§ »ç¿ë) long inventoryIdx; // [In] TB_INVENTORY::IDX °íÀ¯¹øÈ£ long before; // [Out] º¯°æÀü long after; // [Out] º¯°æÈÄ long retvalue; // [Out] ¹Ýȯ°ª }; struct ITEM_SELL { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long npcIdx; // [In] NPC °íÀ¯¹øÈ£ long sellType; // [In] ÆÇ¸Å¹æ½Ä long sellPrice; // [In] ÆÇ¸Å°¡°Ý long rowCount; // TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct ITEM_BUY { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long npcIdx; // [In] NPC °íÀ¯¹øÈ£ long buyType; // [In] ±¸ÀÔ¹æ½Ä long buyPrice; // [In] ±¸ÀÔ°¡°Ý BYTE buyStore; // [In] ±¸ÀÔ¼¼·Â long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct ITEM_COLLECT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ TB_INVENTORY table[3]; // [Out] TB_INVENTORY ·¹ÄÚµå long retvalue; // [Out] °á°ú }; struct ITEM_COLLECT_CHANGE { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ short begin; // [In] µî±Þº° Àκ¥Å丮 ´ë¿ª(½ÃÀÛ) short end; // [In] µî±Þº° Àκ¥Å丮 ´ë¿ª(³¡) TB_INVENTORY changeItem; // [In] TB_INVENTORY ·¹ÄÚµå(üÀÎÁö¾ÆÀÌÅÛ) long retvalue; // [Out] °á°ú long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå(Ÿ·ÎÄ«µå) }; struct ITEM_GET { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[ 1 ]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct ITEM_PARTY_GIVE { long giveCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£(ÆÄƼÀå) long takeCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[ 1 ]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct ITEM_USE { long characterIdx; // [In] ij ¸¯ ÅÍ °íÀ¯¹øÈ£ long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[ 1 ]; // [Out] TB_INVENTORY ·¹ÄÚµå }; /*-- °Å·¡ */ struct ITEM_EXCHANGE { long rowCount; struct { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long characterMoney; // [In] º¯°æ±Ý¾×(ºÎÈ£Æ÷ÇÔ) long characterFrom; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£(´ë»ó) long characterBefor; // [In] ij¸¯ÅÍ º¯°æÀü ±Ý¾× long characterAfter; // [In] ij¸¯ÅÍ º¯°æÈÄ ±Ý¾× long retvalue; // [Out] ¹Ýȯ°ª long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[ MAX_ITEM_EXCHANGE ]; // [In&Out] TB_INVENTORY ·¹ÄÚµå } table[ 2 ]; }; /*-- ¾ÆÀÌÅÛ Á¶ÇÕ */ struct ITEM_MIX { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; // ¾ÆÀÌÅÛ ÆÇ¸Å´ëÇà. struct ITEM_AGENT_CHECK { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö long nextCheck; // [Out] ´ÙÀ½ °Ë»ç ½Ã°£ long retvalue; // [Out] ¹Ýȯ°ª }; struct ITEM_AGENT_RESULT_OWNER { long idx; // °íÀ¯¹øÈ£ TB_INVENTORY table; // Àκ¥Å丮 long validThru; // À¯È¿¸¸±â long price; // ÆÇ¸Å°¡°Ý }; struct ITEM_AGENT_SELECT_OWNER { // °á°ú ¸ñ·Ï long characterIdx; // [In] ¼ÒÀ¯ ij¸¯ÅÍ long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT_OWNER table[1]; // [Out] ·¹ÄÚµå }; struct ITEM_AGENT_INSERT { long characterIdx; // [In] ¼ÒÀ¯ ij¸¯ÅÍ TB_INVENTORY inventory; // [In/Out] Àκ¥Å丮 BYTE validThru; // [In] À¯È¿¸¸±â(±â°£) long nextCheck; // [Out] ´ÙÀ½ °Ë»ç½Ã°£ long price; // [In] ÆÇ¸Å°¡°Ý(°³´ç) long retvalue; // [Out] ¹Ýȯ°ª // °á°ú ¸ñ·Ï. long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT_OWNER table[1]; // [Out] ·¹ÄÚµå }; struct ITEM_AGENT_DELETE { long characterIdx; // [In] ij ¸¯ ÅÍ °íÀ¯¹øÈ£ long idx; // [In] °íÀ¯¹øÈ£ short inventoryNumber; // [In] Àκ¥Å丮 ¹øÈ£ long retvalue; // [Out] ¹Ýȯ°ª TB_INVENTORY result; // [Out] ·¹ÄÚµå // °á°ú ¸ñ·Ï. long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT_OWNER table[1]; // [Out] ·¹ÄÚµå }; struct ITEM_AGENT_RESULT { long idx; // °íÀ¯¹øÈ£ TB_INVENTORY table; // Àκ¥Å丮 long validThru; // À¯È¿¸¸±â wchar_t characterName[ 17 ]; // ij¸¯ÅÍ À̸§(¼ÒÀ¯) long price; // ÆÇ¸Å°¡°Ý }; struct ITEM_AGENT_SELECT { long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö BYTE sort; // [In] Á¤·Ä BYTE itemDefineRareLevel; // [In] ·¹¾î¼öÁØ(255 ¸ðµÎ) BYTE itemLimitLevelB; // [In] Á¦ÇÑ·¹º§(½ÃÀÛ) BYTE itemLimitLevelE; // [In] Á¦Çå·¡¹ë(³¡) BYTE inventoryEnhanced; // [In] °­È­´Ü°è(0~15±îÁö / 255¸ðµÎ) long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT table[1]; // [Out] ·¹ÄÚµå }; struct ITEM_AGENT_SELECT_NAME { long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö BYTE sort; // [In] Á¤·Ä wchar_t itemDefineName[ 51 ]; // [In] °Ë»öÀ̸§ BYTE itemDefineRareLevel; // [In] ·¹¾î¼öÁØ(255 ¸ðµÎ) BYTE itemLimitLevelB; // [In] Á¦ÇÑ·¹º§(½ÃÀÛ) BYTE itemLimitLevelE; // [In] Á¦Çå·¡¹ë(³¡) BYTE inventoryEnhanced; // [In] °­È­´Ü°è(0~15±îÁö / 255¸ðµÎ) long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT table[1]; // [Out] ·¹ÄÚµå }; struct ITEM_AGENT_SELECT_TYPE { long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö BYTE sort; // [In] Á¤·Ä BYTE itemDefineSearchType; // [In] Á¾·ù short itemDefineSearchSubType; // [In] ¼¼ºÎÇ׸ñ BYTE itemDefineRareLevel; // [In] ·¹¾î¼öÁØ(255 ¸ðµÎ) BYTE itemLimitLevelB; // [In] Á¦ÇÑ·¹º§(½ÃÀÛ) BYTE itemLimitLevelE; // [In] Á¦Çå·¡¹ë(³¡) BYTE inventoryEnhanced; // [In] °­È­´Ü°è(0~15±îÁö / 255¸ðµÎ) long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT table[1]; // [Out] ·¹ÄÚµå }; struct ITEM_AGENT_SELECT_ALL { long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö BYTE sort; // [In] Á¤·Ä wchar_t itemDefineName[ 51 ]; // [In] °Ë»öÀ̸§ BYTE itemDefineRareLevel; // [In] ·¹¾î¼öÁØ(255 ¸ðµÎ) BYTE itemLimitLevelB; // [In] Á¦ÇÑ·¹º§(½ÃÀÛ) BYTE itemLimitLevelE; // [In] Á¦Çå·¡¹ë(³¡) BYTE inventoryEnhanced; // [In] °­È­´Ü°è(0~15±îÁö / 255¸ðµÎ) BYTE itemDefineSearchType; // [In] Á¾·ù short itemDefineSearchSubType; // [In] ¼¼ºÎÇ׸ñ long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT table[1]; // [Out] ·¹ÄÚµå }; struct ITEM_AGENT_UPDATE { // ±¸¸Å long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long idx; // [In] °íÀ¯¹øÈ£ short count; // [In] ±¸¸Å¼ö·® long price; // [Out] ±¸¸Å°¡°Ý long retvalue; // [Out] ¹Ýȯ°ª long sccIdx; // [Out] ÆÇ¸Å¿Ï·á ij¸¯ÅÍ TB_INVENTORY sciLog; // [Out] ÆÇ¸Å¿Ï·á ¾ÆÀÌÅÛ TB_INVENTORY bciLog; // [Out] ±¸¸Å¿Ï·á ¾ÆÀÌÅÛ // ±¸¸ÅÈÄ °Ë»ö. long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö BYTE sort; // [In] Á¤·Ä wchar_t itemDefineName[ 51 ]; // [In] °Ë»öÀ̸§ BYTE itemDefineRareLevel; // [In] ·¹¾î¼öÁØ(255 ¸ðµÎ) BYTE itemLimitLevelB; // [In] Á¦ÇÑ·¹º§(½ÃÀÛ) BYTE itemLimitLevelE; // [In] Á¦Çå·¡¹ë(³¡) BYTE inventoryEnhanced; // [In] °­È­´Ü°è(0~15±îÁö / 255¸ðµÎ) BYTE itemDefineSearchType; // [In] Á¾·ù short itemDefineSearchSubType; // [In] ¼¼ºÎÇ׸ñ long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT table[1]; // [Out] ·¹ÄÚµå }; /*-- ÀϺ»OBT À̺¥Æ® ¾ÆÀÌÅÛÁö±Þ */ struct ITEM_OBT_EVENT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ BYTE cbtUser; // [In] CBT Âü¿©À¯Àú ¿©ºÎ BYTE obtUser; // [In] OBT ½Å±ÔÀ¯Àú ¿©ºÎ BYTE fourGamer; // [In] 4gamer À¯Àú ¿©ºÎ long retvalue; // [Out] ¹Ýȯ°ª long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] ·¹ÄÚµå }; // TODO - ¿ìÆí ±¸Á¶Ã¼ Á¤ÀÇ struct POST_CHECK { long characterIdx; // [In] ¹Þ´Â-ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [Out] Àû¿ëÇà ¼ö }; #define POST_STATUS_NONE 0 // ÀÐÁö¾ÊÀ½ #define POST_STATUS_READ 1 // ÀÐÀ½ #define POST_STATUS_DELETE 2 // »èÁ¦ #define POST_STATUS_VALIDTHRU 3 // À¯È¿¸¸±â struct POST_RESULT { long idx; // °íÀ¯¹øÈ£ TIMESTAMP_STRUCT registerDate; // µî·ÏÀÏ long validThru; // À¯È¿¸¸±â BYTE type; // Á¾·ù(0¿ìÆí, 1µî·ÏÃë¼Ò, 2ÆÇ¸Å¿Ï·á, 3±¸ÀÔ¿Ï·á) BYTE status; // »óÅÂ(0ÀÐÁö¾ÊÀ½,1ÀÐÀ½,2»èÁ¦,3À¯È¿¸¸±â) long fromIdx; // ij¸¯ÅÍ °íÀ¯¹øÈ£(º¸³½/±¸¸Å) wchar_t fromName[ LEN_POST_NAME ]; // ij¸¯ÅÍ À̸§ (º¸³½/±¸¸Å) wchar_t contenTtitle[ LEN_POST_TITLE ]; // Á¦¸ñ wchar_t contentMessage[ MAX_POST_MESSAGE ]; // ¸Þ½ÃÁö long receiptPrice; // °¡°Ý long receiptSalesCharges; // ¼ö¼ö·á TB_INVENTORY receiptInventory; // ¾ÆÀÌÅÛ short receiptInventoryCount; // ¾ÆÀÌÅÛ¼ö·® TB_INVENTORY inventory1; // Àκ¥Å丮 TB_INVENTORY inventory2; // " TB_INVENTORY inventory3; // " long money; // µ· }; struct POST_SELECT { long characterIdx; // [In] ¹Þ´Â-ij¸¯ÅÍ °íÀ¯¹øÈ£ long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö long noneRead; // [Out] ÀÐÁö¾ÊÀº ¿ìÆí long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö POST_RESULT table[1]; // [Out] ÂÊÁö ³»¿ë }; struct POST_INSERT { long toIdx; // [In/Out] ¹Þ´Â-ij¸¯ÅÍ °íÀ¯¹øÈ£ wchar_t toName[ LEN_POST_NAME ]; // [In] ¹Þ´Â-ij¸¯ÅÍ À̸§ BYTE validThru; // [In] À¯È¿¸¸±â BYTE type; // [In] Á¾·ù(0¿ìÆí, 1µî·ÏÃë¼Ò, 2ÆÇ¸Å¿Ï·á, 3±¸ÀÔ¿Ï·á) long fromIdx; // [In] º¸³½/±¸¸Å ij¸¯ÅÍ °íÀ¯¹øÈ£ wchar_t fromName[ LEN_POST_NAME ]; // [In] º¸³½/±¸¸Å ij¸¯ÅÍ À̸§ // ¿ìÆí wchar_t contentTitle[ LEN_POST_TITLE ]; // [In] Á¦¸ñ wchar_t contentMessage[ LEN_POST_MESSAGE ];// [In] ¸Þ½ÃÁö // ÆÇ¸Å´ëÇà long receiptPrice; // [»ç¿ë¾ÈÇÔ] °¡°Ý long receiptSalesCharges; // [»ç¿ë¾ÈÇÔ] ¼ö¼ö·á TB_INVENTORY receiptInventory; // [»ç¿ë¾ÈÇÔ] ¾ÆÀÌÅÛ // ÷ºÎ TB_INVENTORY inventory1; // [In] Àκ¥Å丮 TB_INVENTORY inventory2; // [In] " TB_INVENTORY inventory3; // [In] " long money; // [In] µ· long serviceCharage; // [In] ¼ö¼ö·á long retvalue; // [Out] ¹Ýȯ°ª }; struct POST_UPDATE_STATUS { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long idx; // [In] °íÀ¯¹øÈ£ BYTE status; // [In] »óÅÂ(0ÀÐÁö¾ÊÀ½,1ÀÐÀ½,2»èÁ¦,3À¯È¿¸¸±â) long noneRead; // [Out] ÀÐÁö¾ÊÀº ¿ìÆí }; struct POST_UPDATE { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long idx; // [In] °íÀ¯¹øÈ£ short inventoryNumber1; // [In] ÷ºÎ1-Àκ¥Å丮 ¹øÈ£(½½·Ô) short inventoryNumber2; // [In] ÷ºÎ2-" short inventoryNumber3; // [In] ÷ºÎ3-" long money; // [In/Out] ÷ºÎ4-µ· long retvalue; // [Out] ¹Ýȯ°ª long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct POST_DELETE { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long idx[ MAX_POST_DELETE ]; // [In] °íÀ¯¹øÈ£ long retvalue; // [Out] ¹Ýȯ°ª long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö long noneRead; // [Out] ÀÐÁö¾ÊÀº ¿ìÆí long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö POST_RESULT table[1]; // [Out] ÂÊÁö ³»¿ë }; struct FRIEND_SELECT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_FRIEND table[1]; // [Out] TB_FRIEND ·¹ÄÚµå }; struct FRIEND_INSERT { long characterIdx1; // [In] ij¸¯ÅÍ(°íÀ¯¹øÈ£) long characterIdx2; // [Out] ij¸¯ÅÍ(°íÀ¯¹øÈ£) wchar_t characterName[ 17 ]; // [In] ij¸¯ÅÍ À̸§(Ä£±¸) long retvalue; // [Out] °á°ú }; struct FRIEND_UPDATE { long idx; // [In] °íÀ¯¹øÈ£ long characterIdx1; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long characterIdx2; // [Out] ij¸¯ÅÍ(°íÀ¯¹øÈ£) }; struct FRIEND_DELETE { long idx; // [In] °íÀ¯¹øÈ£ long characterIdx1; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long characterIdx2; // [Out] ij¸¯ÅÍ(°íÀ¯¹øÈ£) }; /*-- Etc */ struct ITEM_SPREAD_VALUE { long itemDefineIndex; // [In] TB_ITEM_DEFINE::Index-¾Æ ÀÌ ÅÛ À妽º long spreadIndex; // [In] TB_ITEM_SPREAD::Index-½ºÇÁ·¹µå À妽º long spreadValue; // [Out] ½ºÆ®·¹µå Àû¿ëÈÄ Å¸·ÎÄ«µå °ª struct { long itemDefineIndex; // [In] Ÿ·ÎÄ«µå À妽º BYTE dir; // [In] Ÿ·ÎÄ«µå ¹æÇâ long tarot; // [In] Ÿ·ÎÄ«µå °ª long spread; // [In] ½ºÇÁ·¹µå °ª } values[ 10 ]; }; struct ITEM_TAROT_RESULT { long itemDefineIndex; // [In] TB_ITEM_DEFINE::Index ¾ÆÀÌÅÛ À妽º long value; // [In] ÀԷ°ª(Ÿ·Î°á°ú°ª) long influence_idx1; // [Out] ½ºÅ³È¿°ú[½ºÅ³À妽ºÂüÁ¶] long influence_idx2; // [Out] ½ºÅ³È¿°ú[½ºÅ³À妽ºÂüÁ¶] long influence_idx3; // [Out] ½ºÅ³È¿°ú[½ºÅ³À妽ºÂüÁ¶] }; // ½ºÅ³ struct SKILL_SELECT { long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long mRowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_CHARACTER_SKILL mTable[1]; // [Out] TB_CHARACTER_SKILL }; struct SKILL_INSERT { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned long mSkillClassIdx; // [In] ½ºÅ³ Á¾·ù¹øÈ£ //unsigned long mMoney; // [In] ¼Ò¸ð±Ý¾× unsigned short mSP; // [In] ¼Ò¸ðSP unsigned char skillLevel; // [In] ½ºÅ³ ·¹º§ unsigned long skillPoint; // [In] ½ºÅ³ Æ÷ÀÎÆ® long mRetvalue; // [Out] °á°ú }; struct SKILL_CHEAT_INSERT { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned long mSkillClassIdx; // [In] ½ºÅ³ Á¾·ù¹øÈ£ unsigned char mSkillStep; // [In] ½ºÅ³ ´Ü°è long mRetvalue; // [Out] °á°ú }; struct SKILL_UPDATE { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned long mSkillClassIdx; // [In] ½ºÅ³ Á¾·ù¹øÈ£ unsigned char mSkillStep; // [In] ½ºÅ³ ´Ü°è /*unsigned long mMoney; // [In] ¼Ò¸ð±Ý¾×*/ unsigned short mSP; // [In] ¼Ò¸ðSP unsigned char skillLevel; // [In] ½ºÅ³ ·¹º§ unsigned long skillPoint; // [In] ½ºÅ³ Æ÷ÀÎÆ® long mRetvalue; // [Out] °á°ú }; struct SKILL_CHEAT_UPDATE { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned long mSkillClassIdx; // [In] ½ºÅ³ Á¾·ù¹øÈ£ unsigned char mSkillStep; // [In] ½ºÅ³ ´Ü°è long mRetvalue; // [Out] °á°ú }; struct SKILL_COOLTIME { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long mRowCount; // [Out] ÀÔ·Â Çà ¼ö long mRetvalue; // [Out] °á°ú TB_CHARACTER_SKILL mTable[1]; // [Out] TB_CHARACTER_SKILL }; // È¿°ú struct SKILL_INFLUENCE_SELECT { long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long mRowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_CHARACTER_INFLUENCE mTable[1]; // [Out] TB_CHARACTER_INFLUENCE }; struct SKILL_INFLUENCE_UPDATE { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ bool mCycleSave; // [In] ÀúÀåÇüÅ long mRowCount; // [Out] ÀÔ·Â Çà ¼ö long mRetvalue; // [Out] °á°ú TB_CHARACTER_INFLUENCE mTable[1]; // [In] TB_CHARACTER_INFLUENCE }; struct RECIPE_COOLTIME { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long mRowCount; // [Out] ÀÔ·Â Çà ¼ö long mRetvalue; // [Out] °á°ú TB_RECIPE_COOLTIME mTable[1]; // [Out] TB_CHARACTER_SKILL }; // ÆÇ¸Å³ëÁ¡ struct STALL_SELL_GET { sObject fObject; // [In] ij ¸¯ ÅÍ °íÀ¯¹øÈ£ long fCharacterMoney; // [In] ij ¸¯ ÅÍ º¯°æ±Ý¾× (ºÎÈ£Æ÷ÇÔ) TB_INVENTORY fInventory; // [Out] TB_INVENTORY ·¹ÄÚµå sObject tObject; // [In] ij ¸¯ ÅÍ °íÀ¯¹øÈ£ long tCharacterMoney; // [In] ij ¸¯ ÅÍ º¯°æ±Ý¾× (ºÎÈ£Æ÷ÇÔ) TB_INVENTORY tInventory; // [Out] TB_INVENTORY ·¹ÄÚµå long retvalue; // [Out] ¹Ýȯ°ª }; /*-- Å£½½·Ô */ struct SHORTCUT_SELECT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; // [Out] select Ä«¿îÆ® TB_SHORTCUT table; // [In] TB_SHORTCUT }; struct SHORTCUT_UPDATE { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ TB_SHORTCUT table; // [In] TB_SHORTCUT }; /*-- Äù½ºÆ® */ struct QUEST_INSERT { unsigned long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned long questIdx; // __int64 check; // [In] Á¤º¸ ¾÷µ« char timeType; // [In] Äù½ºÆ® ½Ã°£ ŸÀÔ unsigned long restTime; // [In] Äù½ºÆ® ³²Àº½Ã°£ long takemoney; // [In] Äù½ºÆ® ÁöºÒ±Ý¾× long firepoint; // [In] ÀüÀå Æ÷ÀÎÆ® ÁöºÒ long waterpoint; // [In] ÀüÀå Æ÷ÀÎÆ® ÁöºÒ long windpoint; // [In] ÀüÀå Æ÷ÀÎÆ® ÁöºÒ long earthpoint; // [In] ÀüÀå Æ÷ÀÎÆ® ÁöºÒ long tutorialindex; // [In] Æ©Å丮¾ó ¸ðµå À妽º long retvalue; // [Out] °á°ú TB_QUEST_PROGRESS quest; // [Out] TB_QUEST_PROGRESS ·¹ÄÚµå long rowCount; // [In/Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY inventory[1]; // [In/Out] TB_INVENTORY ·¹ÄÚµå }; struct QUEST_UPDATE { unsigned long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; TB_QUEST_PROGRESS table[1]; // [In] TB_QUEST_PROGRESS ·¹ÄÚµå }; struct QUEST_SELECT { unsigned long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; TB_QUEST_PROGRESS table[1]; }; struct QUEST_DELETE { unsigned long idx; // [In] db °íÀ¯À妽º unsigned int arrIdx; // [In] ¹è¿­À妽º unsigned long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long retvalue; // [Out] °á°ú // ȸ¼ö [¾ÆÀÌÅÛ] long rowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [In/Out] TB_INVENTORY ·¹ÄÚµå }; // Äù½ºÆ® ÁøÇà ¿Ï·á ¿äû struct QUEST_COMPLETE { unsigned long idx; // [In] db °íÀ¯À妽º unsigned int arrIdx; // [In] ¹è¿­À妽º unsigned long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ char repeatType; // [In] ¹Ýº¹Å¸ÀÔ char status; // [Out] »óŰª long retvalue; // [Out] °á°ú /// ¾÷µ¥ÀÌÆ®ÇÒ Á¤º¸ __int64 check; // [In] Á¤º¸ ¾÷µ« unsigned long tutorialIndex; // [In] Æ©Å丮¾ó ¸ðµå º¯°æ À妽º // ȸ¼ö [¾ÆÀÌÅÛ] long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] TB_INVENTORY ·¹ÄÚµå }; // º¸»ó ¹× ¿Ï·á ¿äû struct QUEST_REWARD { unsigned long idx; // [In&out] db °íÀ¯À妽º unsigned int arrIdx; // [In] ¹è¿­À妽º unsigned long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ /// TIMESTAMP_STRUCT thru; // [In] ¸¸±âÀÏ(½Ã°£ÁöÁ¤Äù½ºÆ®) // º¸»ó [¹ö ÇÁ] long bufRowCount; // [In] ¿µÇâ¹ÞÀº Çà ¼ö long bufIndex[ 3 ]; // [In] ¹öÇÁÀ妽º // º¸»ó [±Ý ¾×] long characterMoney; // [In] ij¸¯ÅÍ º¯°æ±Ý¾× (ºÎÈ£Æ÷ÇÔ) // º¸»ó [Àü Á÷] long jobIdx; // [In] ÀüÁ÷À妽º long jobStep; // [In] Á÷¾÷´Ü°è char race; // [In] Á¾Á· // º¸»ó ½ºÅ³ unsigned int skillPoint; // [In] ½ºÅ³ Æ÷ÀÎÆ® // º¸»ó [¼¼ ·Â] unsigned char forceType; // [In] ¼¼·Â ŸÀÔ // º¸»ó [È£ Ī] long titleIdx; // [In] ȣĪ À妽º // º¸»ó [¾ÆÀÌÅÛ] long itemRowCount; // [In/Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[5]; // [In/Out] TB_INVENTORY ·¹ÄÚµå char skillRowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö unsigned long skillClassIdx[1]; // [Out] ÀüÁ÷½Ã ÀÚµ¿½ÀµæµÈ ½ºÅ³¸ñ·Ï }; // ¿ÏÀüÈ÷ Á¾·áÇÑ Äù½ºÆ® ¸ñ·Ï¹Þ±â struct QUEST_ENDLIST { unsigned long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; unsigned long questIdx[1]; // [Out] °á°ú }; struct QUEST_VALIDLIST { unsigned long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long rowCount; struct { unsigned long questIdx; // [Out] Äù½ºÆ®À妽º TIMESTAMP_STRUCT valid; // [Out] ¸¸±âÀÏ } table[1]; }; // Äù½ºÆ® Á¦°Å struct QUEST_REMOVE { unsigned long idx; // [In] °íÀ¯¹øÈ£ }; /// ȣĪ »ðÀÔ struct TITLE_INSERT { unsigned long characterIdx; // [In] ij¸¯ÅÍ À妽º unsigned long titleIdx; // [In] ȣĪ À妽º long retvalue; // [Out] °á°ú }; /// ȣĪ ¸®½ºÆ® ¹Þ±â struct TITLE_SELECT { unsigned long characterIdx; // [In] ij¸¯ÅÍ À妽º long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà¼ö TB_TITLE table[1]; // [Out] TB_TITLE ·¹ÄÚµå }; struct VERIFY_GUILD { long count; // ½ÇÁ¦·Î Á¸ÀçÇÏ´Â ±æµå¼ö long total; // Àüü ±æµå¼ö long retvalue; }; /// ºÐÇÒ select struct GUILD_SELECT { long idx; // [In] °íÀ¯¹øÈ£ (±æµå À妽º) bool restore; // ±æµå Á¤º¸ º¹±¸¿ë TB_GUILD table[1]; // [Out] ±æµå Å×À̺í }; // ±æµå À¯Àú Á¤º¸ struct GUILDUSER_SELECT { unsigned long idx; // [In] °íÀ¯¹øÈ£ (±æµå À妽º) bool restore; // ±æµå Á¤º¸ º¹±¸¿ë long rowCount; // [Out] Àû¿ëµÈ ÇàÀÇ ¼ö TB_GUILD_USER table[1]; // [Out] ±æµå À¯Àú Á¤º¸ }; // ±æµå »ý¼º struct GUILD_CREATE { unsigned long idx; // [Out] °íÀ¯¹øÈ£ (±æµå À妽º) unsigned long characterIdx; // [In] ij¸¯ÅÍ À妽º wchar_t name[13]; // [In] ±æµå¸í wchar_t masterName[17]; // [In] ±æµåÀå ¸í long money; // [In] ±æµå»ý¼º ±Ý¾× long retvalue; // [Out] °á°ú }; // ±æµå¿ø Ãß°¡ struct GUILDUSER_ADD { unsigned long idx; // [In] °íÀ¯¹øÈ£ (±æµå À妽º) unsigned long charaterIdx; // [In] ij¸¯ÅÍ À妽º long retvalue; // [Out] °á°ú }; // ±æµå¿ø »èÁ¦ struct GUILDUSER_OUT { unsigned long idx; // [In] °íÀ¯¹øÈ£ (±æµå À妽º) unsigned long charaterIdx; // [In] ij¸¯ÅÍ À妽º long retvalue; // [Out] °á°ú }; // ±æµå ÇØÃ¼ struct GUILD_DELETE { unsigned long idx; // [In] °íÀ¯¹øÈ£ (±æµå À妽º) unsigned long charaterIdx; // [In] ij¸¯ÅÍ À妽º long retvalue; // [Out] °á°ú }; // ±æµåÁ¤º¸ °»½Å struct GUILD_UPDATE { unsigned long idx; // [In] °íÀ¯¹øÈ£ (±æµå À妽º) wchar_t notice[41]; // [In] ±æµå °øÁö long retvalue; // [Out] °á°ú }; // ±æµåÀ¯Àú Á÷À§ ºÎ¿© struct GUILDUSER_GIVEPOSITION { unsigned long idx; // [In] °íÀ¯¹øÈ£ (±æµå À妽º) unsigned long characterIdx; // [In] ij¸¯ÅÍ À妽º char position; // [In] º¯°æÇÒ Á÷À§ long retvalue; // [Out] °á°ú }; // ±æµå¸¶Å© °»½Å struct GUILDMARK_UPDATE { unsigned long idx; // [In] ±æµåÀ妽º TIMESTAMP_STRUCT markRegistDate; // [In] ±æµå¸¶Å© µî·ÏÀÏ TB_GUILDMARK mark; // [In] ±æµå¸¶Å© 24 * 24 * (32/8) long retvalue; // [Out] °á°ú }; // Á¦Á¶½ºÅ³ struct MAKESKILL_INSERT { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ bool mIsFirstSkill; // [In] 2°³ Á÷¾÷Áß 1,2¹ø À§Ä¡ unsigned char mMakeSkillIdx; // [In] Àü¹® Á÷¾÷ ½ºÅ³ idx unsigned char mMakeSkillStep; // [In] Àü¹® Á÷¾÷ ½ºÅ³ ´Ü°è long mInventoryIdx; // [In] Àκ¥Å丮 °íÀ¯¹øÈ£ long mRetvalue; // [Out] °á°ú TB_INVENTORY mInventory; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct MAKESKILL_SELECT { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long mRowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_MAKESKILL mTable[1]; // [Out] TB_MAKESKILL }; struct MAKESKILL_DELETE { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned char mMakeSkillIdx; // [In] Àü¹®Á÷¾÷ long mRetvalue; // [Out] °á°ú }; struct RECIPE_INSERT { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned char mMakeSkillIdx; // [In] Àü¹® Á÷¾÷ ½ºÅ³ idx unsigned long mRecipeIdx; // [In] ·¹½ÃÇÇ idx long mInventoryIdx; // [In] Àκ¥Å丮 °íÀ¯¹øÈ£ long retvalue; // [Out] °á°ú TB_INVENTORY mInventory; // [Out] TB_INVENTORY ·¹ÄÚµå }; struct RECIPE_GROUP_INSERT { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ unsigned char mMakeSkillIdx; // [In] Àü¹® Á÷¾÷ ½ºÅ³ idx long mInventoryIdx; // [In] Àκ¥Å丮 °íÀ¯¹øÈ£ TB_INVENTORY mInventory; // [Out] TB_INVENTORY ·¹ÄÚµå long mRetvalue; // [Out] °á°ú unsigned long mRowCnt; // [in] ·¹½ÃÇÇ ÀÔ·Â °¹¼ö sRecipeGroupInfo mRecipeGroup[1]; // [In] ·¹½ÃÇÇ idx unsigned long GetMsgLength() { return sizeof(RECIPE_GROUP_INSERT) - sizeof(mRecipeGroup) + (mRowCnt * sizeof(sRecipeGroupInfo));} }; /// ¿î¼¼ ¼Ó¼º struct FORTUNE_SELECT { long characterIdx; // [In] ij¸¯ÅÍ À妽º TIMESTAMP_STRUCT thru[5]; // [Out] °á°ú wchar_t word[13]; // [Out] ¿À´ÃÀÇ ÇѸ¶µð unsigned long color; // [Out] ¿À´ÃÀÇ ÇѸ¶µð Ä÷¯ }; struct FORTUNE_UPDATE { long characterIdx; // [In] ij¸¯ÅÍ À妽º TIMESTAMP_STRUCT thru[5]; // [In] ½Ã°£Á¤º¸ wchar_t word[13]; // [In] ¿À´ÃÀÇ ÇѸ¶µð unsigned long color; // [In] ¿À´ÃÀÇ ÇѸ¶µð Ä÷¯ long retvalue; // [Out] °á°ú }; struct FORCE_POINT_UPDATE { unsigned long mCharacterIdx; // [In] ij¸¯ÅÍ À妽º unsigned long mFirePoint; // [In] ¼Ó¼º Æ÷ÀÎÆ® / Ä£¹Ðµµ unsigned long mFireFriendly; unsigned long mWaterPoint; unsigned long mWaterFriendly; unsigned long mWindPoint; unsigned long mWindFriendly; unsigned long mEarthPoint; unsigned long mEarthFriendly; long mRetValue; }; // struct PVP_USER_INSERT { short pvpIdx; // [In] PVP À妽º short characterChannel; // [In] ij¸¯ÅÍ Ã¤³Î long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ char characterLevel; long retvalue; // [Out] ¹Ýȯ°ª }; struct PVP_USER { short characterChannel; long characterIdx; BYTE characterLevel; BYTE characterForceType; }; struct PVP_USER_SELECT { short pvpIdx; unsigned long aryPos; char minLevel; char maxLevel; long rowCount; // [Out] Àû¿ëµÈ Çà ¼ö PVP_USER table[1]; // [Out] Å×À̺í }; struct PVP_USER_REMOVE { short pvpIdx; // [In] PVP À妽º long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long retvalue; // [Out] ¹Ýȯ°ª }; struct PVP_USER_CLEAR { short pvpIdx; // [In] PVP À妽º char minLevel; char maxLevel; long retvalue; // [Out] ¹Ýȯ°ª }; // Party #define MAX_PARTY_USER 6 struct PARTY_INSERT { long partyIdx; // [In] TB_PARTY::IDX sPartyUserData leader; // [In] leader sPartyUserData player; // [In] player }; struct ITEM_SUMMON_POST { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ TB_INVENTORY inventory; // [In&Out] Àκ¥Å丮 // ¿ìÆí long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö long noneRead; // [Out] ÀÐÁö¾ÊÀº ¿ìÆí long postCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö POST_RESULT post[1]; // [Out] ÂÊÁö ³»¿ë }; struct ITEM_SUMMON_AGENT { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ TB_INVENTORY inventory; // [In&Out] Àκ¥Å丮 // ÆÇ¸Å ´ëÇà long startPage; // [In] ½ÃÀÛ ÆäÀÌÁö long endPage; // [Out] ³¡ ÆäÀÌÁö long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö ITEM_AGENT_RESULT_OWNER agent[1]; // [Out] ·¹ÄÚµå }; struct ITEM_SUMMON_WAREHOUSE { long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ TB_INVENTORY inventory; // [In&Out] Àκ¥Å丮 }; struct ITEM_NPC_EVENT { long userIdx; // [In] »ç¿ëÀÚ À妽º long characterIdx; // [In] ij¸¯ÅÍ °íÀ¯¹øÈ£ long eventType; // [In] À̺¥Æ® ŸÀÔ long retvalue; // [Out] ¹Ýȯ°ª long rowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö TB_INVENTORY table[1]; // [Out] ·¹ÄÚµå }; // ETC struct WHISPER_SELECT : CHARACTER_LOGIN { wchar_t message[128]; // [In] ¸Þ½ÃÁö short slotIndex; // [In] ½½·Ô¹øÈ£ }; // GM struct GM_JOB_UPDATE { long characterIdx; // [In] Äɸ¯ÅÍ °íÀ¯ ¹øÈ£ long jobIndex; // [In] ÀüÁ÷ÇÒ Á÷¾÷ À妽º long jobStep; // [In] Á÷¾÷´Ü°è char race; // [In] Á¾Á· char skillRowCount; // [Out] ¿µÇâ¹ÞÀº Çà ¼ö unsigned long skillClassIdx[1]; // [Out] ÀüÁ÷½Ã ÀÚµ¿½ÀµæµÈ ½ºÅ³¸ñ·Ï }; struct GM_INFLUENCE_LIST { long index; long infIndex; TIMESTAMP_STRUCT startTime; TIMESTAMP_STRUCT validThru; }; struct VERIFY_GM_EVENT { long rowcount; GM_INFLUENCE_LIST table[1]; // [Out] À¯È¿ÇÑ À̺¥Æ® ¸ñ·Ï }; struct GM_EVENT_INSERT { long index; // [Out] DB Index long influenceIndex; // [In] È¿°ú À妽º TIMESTAMP_STRUCT startTime; // [In] ½ÃÀ۽ð£ TIMESTAMP_STRUCT validThru; // [In] ¸¸±â½Ã°£ long retvalue; // [Out] ¹Ýȯ°ª }; struct GM_EVENT_UPDATE { long index; // [In] DB Index long influenceIndex; // [Out] »èÁ¦µÈ È¿°ú°ª long retvalue; // [Out] ¹Ýȯ°ª }; struct ITEM_DROPLIMIT_TABLE { long mCount; TB_ITEM_DROPLIMIT mTable[1]; }; struct ITEM_DROPLIMIT_UPDATE { unsigned long mItemIdx; TIMESTAMP_STRUCT mEndTime; long mRetValue; }; class cSQLGameStmt : public cSQLStatement { private: SQLRETURN SQLClose ( SQLRETURN sqlReturn, SQLHSTMT sqlHStmt ); void SQLClose ( SQLHSTMT sqlHStmt ); void SQLGetFullInv ( SQLHSTMT sqlHStmt, TB_INVENTORY* table ); void SQLGetBaseInv ( SQLHSTMT sqlHStmt, TB_INVENTORY* table ); public: // Ŭ·¡½º »ý¼º ¹× °ø¿ë ¸Þ¼Òµå. cSQLGameStmt(void); /*-- Init & Shutdown Game Database --*/ SQLRETURN Init ( INIT_GAME* initGame ); SQLRETURN Shutdown ( SHUTDOWN_GAME* shutdownGame ); /*-- Theme Database --*/ SQLRETURN ThemeCreate ( THEME_CREATE* create ); SQLRETURN ThemeRoomCheck ( THEME_ROOM_CHECK* themeRoomCheck ); SQLRETURN ThemeUserCheck ( THEME_USER_CHECK* themeUserCheck ); SQLRETURN ThemeUserInsert ( THEME_USER_INSERT* themeUserInsert ); SQLRETURN ThemeUserSelect ( THEME_USER_SELECT* themeUserSelect, u_long& cbLength ); SQLRETURN ThemeUserUpdate ( THEME_USER_UPDATE* themeUserUpdate ); SQLRETURN ThemeUserRemove ( THEME_USER_REMOVE* themeUserRemove ); SQLRETURN ThemeUserSave ( THEME_USER_SAVE* themeUserSave ); SQLRETURN ThemePartySelect ( THEME_PARTYINFO_SELECT* pPartySelect, u_long& cbLength ); SQLRETURN ThemePartyRoomSelect ( THEME_PARTYROOM_SELECT* pPartySelect ); SQLRETURN ThemeGMUserSelect ( THEME_GM_USER_SELECT* themeUserSelect, u_long& cbLength ); /*-- Item Databasae --*/ SQLRETURN TruncateItemDefine ( void ); SQLRETURN TruncateItemAbility ( void ); SQLRETURN TruncateItemLimit ( void ); SQLRETURN TruncateItemCard ( void ); SQLRETURN TruncateItemCardSlot ( void ); SQLRETURN TruncateItemTarot ( void ); SQLRETURN TruncateItemTarotResult ( void ); SQLRETURN TruncateItemSpread ( void ); SQLRETURN TruncateItemDisjoint ( void ); SQLRETURN TruncateItemEnhanced ( void ); SQLRETURN TruncateItemEnhancedValue ( void ); SQLRETURN TruncateItemEnhancedRate ( void ); SQLRETURN TruncateItemEnhancedSuccess ( void ); SQLRETURN TruncateItemEnhancedDown ( void ); SQLRETURN TruncateItemEnhancedDestruct ( void ); SQLRETURN TruncateItemChange ( void ); SQLRETURN TruncateItemChangeItems ( void ); SQLRETURN TruncateDefaultItems ( void ); SQLRETURN InsertItemDefine ( TB_ITEM_DEFINE* tbItemDefine, long& retvalue ); SQLRETURN InsertItemAbility ( TB_ITEM_ABILITY* tbItemAbility, long& retvalue ); SQLRETURN InsertItemLimit ( TB_ITEM_LIMIT* tbItemLimit, long& retvalue ); SQLRETURN InsertItemCard ( TB_ITEM_CARD* tbItemCard, long& retvalue ); SQLRETURN InsertItemCardSlot ( TB_ITEM_CARD_SLOT* tbItemCardSlot, long& retvalue ); SQLRETURN InsertItemTarot ( TB_ITEM_TAROT* tbItemTarot, long& retvalue ); SQLRETURN InsertItemTarotResult ( TB_ITEM_TAROT_RESULT* tbItemTarotResult, long& retvalue ); SQLRETURN InsertItemSpread ( TB_ITEM_SPREAD* tbItemSpread, long& retvalue ); SQLRETURN InsertItemDisjoint ( TB_ITEM_DISJOINT* tbItemDisjoint, long& retvalue ); SQLRETURN InsertItemEnhanced ( TB_ITEM_ENHANCED* tbItemEnhanced ); SQLRETURN InsertItemEnhancedRate ( TB_ITEM_ENHANCED_RATE* tbItemEnhancedRate ); SQLRETURN InsertItemChange ( TB_ITEM_CHANGE* tbItemChange ); SQLRETURN InsertDefaultItems ( TB_DEFAULT_ITEMS* tbDefaultItems, long& retvalue ); SQLRETURN VerifyItemDefine ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemAbility ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemCooltime2 ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemLimit ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemCard ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemCardSlot ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemTarot ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemEnhanced ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemEnhancedRate ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemDisjoint ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN VerifyItemChange ( VERIFY_ITEM_TABLE* verifyItemTable ); SQLRETURN ItemDefine ( ITEM_DEFINE_TABLE* itemDefineTable ); SQLRETURN ItemAbility ( ITEM_ABILITY_TABLE* itemAbilityTable ); SQLRETURN ItemCooltime2 ( ITEM_COOLTIME2_TABLE* itemCooltime2Table, u_long& cbLength ); SQLRETURN ItemLimit ( ITEM_LIMIT_TABLE* itemLimitTable ); SQLRETURN ItemCard ( ITEM_CARD_TABLE* itemCardTable ); SQLRETURN ItemCardSlot ( ITEM_CARD_SLOT_TABLE* itemCardSlotTable ); SQLRETURN ItemTarot ( ITEM_TAROT_TABLE* itemTarotTable ); SQLRETURN ItemEnhanced ( ITEM_ENHANCED_TABLE* itemEnhancedTable ); SQLRETURN ItemEnhancedRate ( ITEM_ENHANCED_RATE_TABLE* itemEnhancedRateTable ); SQLRETURN ItemDisjoint ( ITEM_DISJOINT_TABLE* itemDisjointTable ); SQLRETURN ItemChange ( ITEM_CHANGE_TABLE* itemChangeTable ); SQLRETURN VerifyDefaultItems ( VERIFY_DEFAULT_ITEMS* verifyDefaultItems ); // Character SQLRETURN CharacterList ( CHARACTER_LIST* characterList, u_long& cbLength ); SQLRETURN CharacterName ( CHARACTER_NAME* characterName ); SQLRETURN CharacterInsert ( CHARACTER_INSERT* characterInsert, u_long& cbLength ); SQLRETURN CharacterDeleteWait ( CHARACTER_DELETE_WAIT* characterDelWait ); SQLRETURN CharacterDeleteCancel ( CHARACTER_DELETE_CANCEL* characterDelCancel ); SQLRETURN CharacterDelete ( CHARACTER_DELETE* characterDelete ); SQLRETURN CharacterUpdate ( CHARACTER_UPDATE* characterUpdate ); SQLRETURN CharacterSelect ( CHARACTER_SELECT* characterSelect ); SQLRETURN CharacterMoney ( CHARACTER_MONEY* characterMoney ); SQLRETURN CharacterDeposit ( CHARACTER_DEPOSIT* characterDeposit ); SQLRETURN CharacterTarotPoint ( CHARACTER_TAROT_POINT* characterTarotPoint ); SQLRETURN CharacterActiveWeapon ( CHARACTER_ACTIVE_WEAPON* characterActiveWeapon ); SQLRETURN CharacterOption ( CHARACTER_OPTION* characterOption ); SQLRETURN CharacterForce ( CHARACTER_FORCE* characterForce ); SQLRETURN CharacterSkillReset ( CHARACTER_SKILL_RESET* reset, u_long& cbLength ); SQLRETURN CharacterThemeReset ( CHARACTER_THEME_RESET* reset, u_long& cbLength ); SQLRETURN CharacterBlockSelect ( CHARACTER_BLOCK_SELECT* characterBlockSelect ); SQLRETURN CharacterBlockSelectList ( CHARACTER_BLOCK_SELECT_LIST* characterBlockSelectList, u_long& cbLength ); SQLRETURN CharacterBlockInsert ( CHARACTER_BLOCK_INSERT* characterBlockInsert ); SQLRETURN CharacterGmName ( CHARACTER_GM_NAME* characterGmName ); SQLRETURN CharacterInvenSize ( CHARACTER_INVEN_SIZE* invenSize ); SQLRETURN CharacterTTL ( CHARACTER_TTL* ttl ); SQLRETURN CharacterChannelSelect ( CHARACTER_CHANNEL* characterChannel ); SQLRETURN CharacterGMThemeReset ( CHARACTER_GM_THEME_RESET* reset, u_long& cbLength ); SQLRETURN CharacterGMKickSelect ( CHARACTER_KICK_SELECT* characterKickSelect ); // Inventory&Item SQLRETURN InventorySelect ( TB_INVENTORY* inventory ); SQLRETURN InventoryInsert ( INVENTORY_INSERT* inventoryInsert ); SQLRETURN InventorySelect ( INVENTORY_SELECT* inventorySelect, u_long& cbLength ); SQLRETURN InventoryCashSelect ( INVENTORY_SELECT* inventorySelect, u_long& cbLength ); SQLRETURN InventoryDelete ( INVENTORY_DELETE* inventoryDelete ); SQLRETURN InventoryCooltimeSelect ( INVENTORY_COOLTIME_SELECT* inventoryCooltimeSelect, u_long& cbLength ); SQLRETURN InventoryCooltimeInsert ( INVENTORY_COOLTIME_INSERT* inventoryCooltimeInsert ); SQLRETURN InventoryRemove ( INVENTORY_REMOVE* inventoryRemove ); SQLRETURN InventoryUse ( INVENTORY_USE* inventoryUse ); SQLRETURN InventorySwap ( INVENTORY_SWAP* inventorySwap ); SQLRETURN InventoryMove ( INVENTORY_MOVE* inventoryMove ); SQLRETURN InventoryExcept ( INVENTORY_EXCEPT* inventoryExcept ); SQLRETURN InventoryMerge ( INVENTORY_MERGE* inventoryMerge, u_long& cbLength ); SQLRETURN InventoryDivide ( INVENTORY_DIVIDE* inventoryDivide ); SQLRETURN InventoryMove2 ( INVENTORY_MOVE2* inventoryMove2 ); SQLRETURN InventoryEnhanced ( INVENTORY_ENHANCED* inventoryEnhanced ); SQLRETURN InventoryDisjoint ( INVENTORY_DISJOINT* inventoryDisjoint ); SQLRETURN InventoryPutCard ( INVENTORY_PUT_CARD* inventoryPutCard ); SQLRETURN InventoryChange ( INVENTORY_CHANGE* inventoryChange ); SQLRETURN InventorySeal ( INVENTORY_SEAL* inventorySeal ); SQLRETURN ItemBillSelect ( ITEM_BILL_SELECT* select, u_long& cbLength ); SQLRETURN ItemBillRemove ( ITEM_BILL_REMOVE* remove ); SQLRETURN ItemBillUpdate ( ITEM_BILL_UPDATE* update ); SQLRETURN ItemSell ( ITEM_SELL* itemSell ); SQLRETURN ItemBuy ( ITEM_BUY* itemBuy ); SQLRETURN ItemCollect ( ITEM_COLLECT* itemCollect ); SQLRETURN ItemCollectChange ( ITEM_COLLECT_CHANGE* itemCollect ); SQLRETURN ItemGet ( ITEM_GET* itemGet ); SQLRETURN ItemPartyGive ( ITEM_PARTY_GIVE* itemPartyGive ); SQLRETURN ItemUse ( ITEM_USE* itemUse ); SQLRETURN ItemExchange ( ITEM_EXCHANGE* itemExchange ); SQLRETURN ItemMix ( ITEM_MIX* itemMix ); SQLRETURN ItemSummonPost ( ITEM_SUMMON_POST* summonPost, u_long& cbLength ); SQLRETURN ItemSummonAgent ( ITEM_SUMMON_AGENT* summonAgent, u_long& cbLength ); SQLRETURN ItemSummonWareHouse ( ITEM_SUMMON_WAREHOUSE* summonWare ); SQLRETURN ItemNpcEvent ( ITEM_NPC_EVENT* npcEvent, u_long& cbLength ); SQLRETURN ItemObtEvent ( ITEM_OBT_EVENT* itemEvent, u_long& cbLength ); // TODO - Agent&Item. SQLRETURN ItemAgentCheck ( ITEM_AGENT_CHECK* itemAgentCheck ); SQLRETURN ItemAgentSelectOwner ( ITEM_AGENT_SELECT_OWNER* itemAgentSelectName, u_long& cbLength ); SQLRETURN ItemAgentInsert ( ITEM_AGENT_INSERT* itemAgentInsert, u_long& cbLength ); SQLRETURN ItemAgentDelete ( ITEM_AGENT_DELETE* itemAgentDelete, u_long& cbLength ); SQLRETURN ItemAgentUpdate ( ITEM_AGENT_UPDATE* itemAgentUpdate, u_long& cbLength ); SQLRETURN ItemAgentSelect ( ITEM_AGENT_SELECT* itemAgentSelect, u_long& cbLength ); SQLRETURN ItemAgentSelectName ( ITEM_AGENT_SELECT_NAME* itemAgentSelectName, u_long& cbLength ); SQLRETURN ItemAgentSelectType ( ITEM_AGENT_SELECT_TYPE* itemAgentSelectType, u_long& cbLength ); SQLRETURN ItemAgentSelectAll ( ITEM_AGENT_SELECT_ALL* itemAgentSelectAll, u_long& cbLength ); // TODO - ¿ìÆí ¸Þ¼Òµå Á¤ÀÇ - Post(¿ìÆí) SQLRETURN PostCheck ( POST_CHECK* check ); SQLRETURN PostSelect ( POST_SELECT* select, u_long& cbLength ); SQLRETURN PostInsert ( POST_INSERT* insert ); SQLRETURN PostUpdateStatus ( POST_UPDATE_STATUS* status ); SQLRETURN PostUpdate ( POST_UPDATE* update, u_long& cbLength ); SQLRETURN PostDelete ( POST_DELETE* del, u_long& cbLength ); // Friend SQLRETURN FriendSelect ( FRIEND_SELECT* friendSelect, u_long& cbLength ); SQLRETURN FriendInsert ( FRIEND_INSERT* friendInsert ); SQLRETURN FriendUpdate ( FRIEND_UPDATE* friendUpdate ); SQLRETURN FriendDelete ( FRIEND_DELETE* friendDelete ); // ij¸¯ÅÍ SKILL SQLRETURN SkillSelect ( SKILL_SELECT* skillSelect, u_long& cbLength ); SQLRETURN SkillInsert ( SKILL_INSERT* skillInsert ); SQLRETURN SkillUpdate ( SKILL_UPDATE* skillUpdate ); SQLRETURN SkillCoolTime ( SKILL_COOLTIME* skillCoolTime ); // ij¸¯ÅÍ SKILL ġƮ·Î ¹è¿ì±â SQLRETURN SkillCheatInsert ( SKILL_CHEAT_INSERT* skillInsert ); SQLRETURN SkillCheatUpdate ( SKILL_CHEAT_UPDATE* skillUpdate ); // ij¸¯ÅÍ ½ºÅ³ È¿°ú SQLRETURN SkillInfluenceSelect ( SKILL_INFLUENCE_SELECT* influenceSelect, u_long& cbLength ); SQLRETURN SkillInfluenceUpdate ( SKILL_INFLUENCE_UPDATE* influenceUpdate ); // Skill ½ºÅ©¸³Æ® SQLRETURN TruncateSkillListPc ( void ); SQLRETURN SkillListPcInsert ( void* pPlayerSkillBaseInfo ); // Á÷¾÷º° ±âº»½ºÅ³ ½ºÅ©¸³Æ® SQLRETURN TruncateDefalultSkill ( void ); SQLRETURN DefalultSkillInsert ( unsigned long jobStep, unsigned long skillIdx, unsigned char race, unsigned long jobIdx ); // Á÷¾÷ Æ®¸® SQLRETURN TruncateJobTree ( void ); SQLRETURN JobTreeInsert ( unsigned long jobIdx, unsigned long parentJobIdx ); /// Äù½ºÆ® Á¤º¸ SQLRETURN TruncateQuestDefine ( void ); SQLRETURN TruncateQuestProgress ( void ); SQLRETURN InsertQuestDefine ( void* questDefine ); SQLRETURN QuestInsert ( QUEST_INSERT* questInsert ); SQLRETURN QuestSelect ( QUEST_SELECT* questSelect, u_long& cbLength ); SQLRETURN QuestDelete ( QUEST_DELETE* questDelete ); SQLRETURN QuestComplete ( QUEST_COMPLETE* questComplete ); SQLRETURN QuestReward ( QUEST_REWARD* questReward, u_long& cbLength ); SQLRETURN QuestUpdate ( QUEST_UPDATE* questUpdate ); SQLRETURN QuestEndListSelect ( QUEST_ENDLIST* questEndList, u_long& cbLength ); SQLRETURN QuestValidListSelect ( QUEST_VALIDLIST* questValidList, u_long& cbLength ); SQLRETURN QuestRemove ( QUEST_REMOVE* questRemove ); // Etc SQLRETURN ItemSpreadValue ( ITEM_SPREAD_VALUE* itemSpreadValue ); SQLRETURN ItemTarotResult ( ITEM_TAROT_RESULT* itemTarotResult ); // ³ëÁ¡ [ÆÇ¸Å] SQLRETURN StallSellGet ( STALL_SELL_GET* stallSellGet ); // Å£½½·Ô SQLRETURN ShortcutSelect ( SHORTCUT_SELECT* shortcutSelect ); SQLRETURN ShortcutUpdate ( SHORTCUT_UPDATE* shortcutUpdate ); /// ȣĪ SQLRETURN TitleInsert ( TITLE_INSERT* titleInsert ); SQLRETURN TitleSelect ( TITLE_SELECT* titleSelect, u_long& cbLength ); /// ±æµå SQLRETURN VerifyGuild ( VERIFY_GUILD* verifyGuild ); SQLRETURN GuildSelect ( GUILD_SELECT* guildSelect ); SQLRETURN GuildUserSelect ( GUILDUSER_SELECT* guildUserSelect, u_long& cbLength ); SQLRETURN GuildCreate ( GUILD_CREATE* guildCreate ); SQLRETURN GuildDelete ( GUILD_DELETE* guildDelete ); SQLRETURN GuildUpdate ( GUILD_UPDATE* guildUpdate ); SQLRETURN GuildUserAdd ( GUILDUSER_ADD* guildUserAdd ); SQLRETURN GuildUserOut ( GUILDUSER_OUT* guildUserOut ); SQLRETURN GuildUserGivePosition ( GUILDUSER_GIVEPOSITION* guildUserGivePosition ); SQLRETURN GuildMarkUpdate ( GUILDMARK_UPDATE* guildMarkUpdate ); /// Àü¹®Á÷¾÷ SQLRETURN MakeSkillInsert ( MAKESKILL_INSERT* pInsert ); SQLRETURN MakeSkillSelect ( MAKESKILL_SELECT* pSelect, u_long& cbLength ); SQLRETURN MakeSkillDelete ( MAKESKILL_DELETE* pDelete ); SQLRETURN RecipeInsert ( RECIPE_INSERT* pInsert ); SQLRETURN RecipeGroupInsert ( RECIPE_GROUP_INSERT* pRecipeGroup ); SQLRETURN RecipeCoolTime ( RECIPE_COOLTIME* recipeCoolTime ); /// NPC Á¡Áý ¿î¼¼ SQLRETURN FortuneSelect ( FORTUNE_SELECT* fortuneSelect ); SQLRETURN FortuneUpdate ( FORTUNE_UPDATE* fortuneUpdate ); SQLRETURN ForcePointUpdate ( FORCE_POINT_UPDATE* update ); /// PVP SQLRETURN PVPUserInsert ( PVP_USER_INSERT* insert ); SQLRETURN PVPUserSelect ( PVP_USER_SELECT* select, u_long& cbLength ); SQLRETURN PVPUserRemove ( PVP_USER_REMOVE* remove ); SQLRETURN PVPUserClear ( PVP_USER_CLEAR* clear ); // Party SQLRETURN PartyInsert ( PARTY_INSERT* insert ); // ETC SQLRETURN WhisperSelect ( WHISPER_SELECT* select ); // GM SQLRETURN GMJobUpdate ( GM_JOB_UPDATE* update, u_long& cbLength ); SQLRETURN GMEventSelect ( VERIFY_GM_EVENT* select, u_long& cbLength ); SQLRETURN GMEventInsert ( GM_EVENT_INSERT* insert ); SQLRETURN GMEventUpdate ( GM_EVENT_UPDATE* update ); /// ¾ÆÀÌÅÛµå¶ø ½Ã°£Á¦¾à SQLRETURN ClearItemDropLimit ( ); SQLRETURN InsertItemDropLimit ( unsigned long itemIdx, unsigned long limitTime ); SQLRETURN ItemDropLimitSelect ( ITEM_DROPLIMIT_TABLE* select, u_long& cbLength ); SQLRETURN ItemDropLimitUpdate ( ITEM_DROPLIMIT_UPDATE* pUpdate ); public: // Ŭ·¡½º ÆÄ±« ¸Þ¼Òµå. virtual ~cSQLGameStmt(void); }; inline SQLRETURN cSQLGameStmt::SQLClose(SQLRETURN sqlReturn, SQLHSTMT sqlHStmt) { if ( SQL_SUCCEEDED( sqlReturn ) ) { while ( SQLMoreResults( sqlHStmt ) == SQL_SUCCESS ); // ÀúÀåÇÁ·Î½ÃÀú Äõ¸® ¸¶¹«¸®. SQLCloseCursor( sqlHStmt ); // ¿­·ÁÀÖ´Â °á°ú ´Ý±â. } return sqlReturn; } inline void cSQLGameStmt::SQLClose(SQLHSTMT sqlHStmt) { while ( SQLMoreResults( sqlHStmt ) == SQL_SUCCESS ); // ÀúÀåÇÁ·Î½ÃÀú Äõ¸® ¸¶¹«¸®. SQLCloseCursor( sqlHStmt ); // ¿­·ÁÀÖ´Â °á°ú ´Ý±â. } // SQLGetFullInv Method inline void cSQLGameStmt::SQLGetFullInv(SQLHSTMT sqlHStmt, TB_INVENTORY* table) { SQLINTEGER strLenOrInd; SQLSMALLINT param; SQLGetData( sqlHStmt, param=1, SQL_C_SLONG, &table->idx, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SLONG, &table->itemDefineIdx, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SLONG, &table->itemDefineIndex, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SSHORT, &table->number, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SSHORT, &table->count, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_TINYINT, &table->enhanced, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SLONG, &table->cardSlot1, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SLONG, &table->cardSlot2, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SLONG, &table->cardSlot3, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SLONG, &table->cardSlot4, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SLONG, &table->cardSlot5, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_TINYINT, &table->seal, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_TINYINT, &table->cash, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_TINYINT, &table->apply, 0, &(strLenOrInd=0) ); } // SQLGetBaseInv Method inline void cSQLGameStmt::SQLGetBaseInv(SQLHSTMT sqlHStmt, TB_INVENTORY* table) { SQLINTEGER strLenOrInd; SQLSMALLINT param; SQLGetData( sqlHStmt, param=1, SQL_C_SLONG, &table->idx, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SLONG, &table->itemDefineIndex, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SSHORT, &table->number, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_SSHORT, &table->count, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_TINYINT, &table->enhanced, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_TINYINT, &table->seal, 0, &(strLenOrInd=0) ); SQLGetData( sqlHStmt, ++param, SQL_C_TINYINT, &table->apply, 0, &(strLenOrInd=0) ); } #endif // __SQL_GAME_STATEMENT_H__