DragonNest/Server/ServerCommon/DNSQLWorld.h
2024-12-19 09:48:26 +08:00

667 lines
48 KiB
C++

#pragma once
/* -----------------------------------------
Login, DB, Cash 가 같이 쓰는 파일임
----------------------------------------- */
#include "SQLConnection.h"
class CDNSQLWorld: public CSQLConnection
{
public:
CDNSQLWorld(void);
virtual ~CDNSQLWorld(void);
int QueryGetDatabaseVersion( TDatabaseVersion* pA );
int QueryLoginCharacter( TQLoginCharacter* pQ );
int QueryLogoutCharacter( TQLogoutCharacter* pQ );
int QuerySelectCharacter(int nWorldSetID, INT64 biCharacterDBID, UINT nLastServerType, OUT TASelectCharacter *pA, UINT nAccountDBID = 0);
int QueryMoveIntoNewServer(TQUpdateCharacter *pQ); // 서버 장비 이동(쿨 타임, 퀵 슬롯, 캐릭터 위치 저장) - P_MoveIntoNewServer
int QueryMoveIntoNewZone(TQChangeStageUserData *pQ, OUT BYTE &cRebirthCoin, OUT BYTE &cPCBangRebirthCoin); // Zone 이동(획득 경험치, 획득 코인, 사용한 일반/PC방 부활 코인) - P_MoveIntoNewZone
// 캐릭터 생성
#if defined(_LOGINSERVER)
int QueryAddCharacter(INT64 biCharacterDBID, UINT nAccountDBID, WCHAR *pAccountName, char cAccountLevel, int nWorldID, WCHAR *pCharName, char cClass, char cCharIndex, DWORD dwHairColor, DWORD dwEyeColor, DWORD dwSkinColor,
int nMapID, TPosition &Pos, float fRotate, int nRebirthCoin, int nPCBangRebirthCoin, int *nEquipArray, int *nSkillArray, int *nUnlockSkillArray, TQuickSlot *QuickSlotArray,
TCreateCharacterItem *CreateItemArray, BYTE cCreateItemMax, bool bJoinBeginnerGuild, UINT &nGuildDBID, WCHAR* pwszIP ); // 캐릭터 추가(기본 속성) - P_AddCharacter, P_FirstUseCharacter, P_AddMaterializedItem
#if defined( PRE_ADD_DWC )
int QueryAddDWCCharacter(INT64 biCharacterDBID, UINT nAccountDBID, WCHAR *pAccountName, int nWorldID, WCHAR *pCharName, char cClass, char cJobCode1, char cJobCode2, char cLevel, int nExp, char cCharIndex, DWORD dwHairColor, DWORD dwEyeColor, DWORD dwSkinColor,
int nMapID, TPosition &Pos, float fRotate, int nRebirthCoin, int nPCBangRebirthCoin, int *nEquipArray, int *nSkillArray, int *nUnlockSkillArray, TQuickSlot *QuickSlotArray,
TCreateCharacterItem *CreateItemArray, BYTE cCreateItemMax, WCHAR* pwszIP, short nSkillPoint, int nGold ); // DWC 캐릭터 추가 - P_AddDWCCharacter, P_FirstUseCharacter, P_AddMaterializedItem
int QueryGetDWCCharacterID(UINT nAccountDBID, OUT INT64& biDWCCharacterDBID, int nDeleteWaitingTime);
#endif // #if defined( PRE_ADD_DWC )
#endif // #if defined(_LOGINSERVER)
int QueryRollbackAddCharacter(INT64 biCharacterDBID); // 캐릭터 추가 롤백 - P_RollbackAddCharacter
int QueryFirstUseCharacter(INT64 biCharacterDBID, int *nSkillArray, int *nUnlockSkillArray, TQuickSlot *QuickSlotArray); // 캐릭터 부가 속성 세팅(캐릭터 첫 사용시 호출) - P_FirstUseCharacter
// 캐릭터 삭제
int QueryDelCharacter(INT64 biCharacterDBID, OUT bool &bVillageFirstVisit, OUT TIMESTAMP_STRUCT& DeleteDate ); // 캐릭터 삭제 - P_DelCharacter
int QueryReviveCharacter( INT64 biCharacterDBID );
// 캐릭터 속성 조회
#if defined(PRE_MOD_SELECT_CHAR)
#if defined( PRE_ADD_DWC )
int QueryGetListCharacter(UINT nAccountDBID, int nWorldID, int nCharacterMaxCount, OUT std::map<INT64, TDBListCharData> &MapCharacterList, INT64 biDWCCharacterDBID, BYTE cAccountLevel); // 캐릭터 목록 - P_GetListCharacter
#else // #if defined( PRE_ADD_DWC )
int QueryGetListCharacter(UINT nAccountDBID, int nWorldID, int nCharacterMaxCount, OUT std::map<INT64, TDBListCharData> &MapCharacterList); // 캐릭터 목록 - P_GetListCharacter
#endif // #if defined( PRE_ADD_DWC )
#else // #if defined(PRE_MOD_SELECT_CHAR)
#if defined( PRE_ADD_DWC )
int QueryGetListCharacter(UINT nAccountDBID, int nWorldID, int nCharacterMaxCount, OUT TDBListCharData *CharList, INT64 biDWCCharacterDBID, BYTE cAccountLevel); // 캐릭터 목록 - P_GetListCharacter
#else // #if defined( PRE_ADD_DWC )
int QueryGetListCharacter(UINT nAccountDBID, int nWorldID, int nCharacterMaxCount, OUT TDBListCharData *CharList); // 캐릭터 목록 - P_GetListCharacter
#endif // #if defined( PRE_ADD_DWC )
#endif // #if defined(PRE_MOD_SELECT_CHAR)
int QueryGetCharacter(int nWorldSetID, INT64 biCharacterDBID, UINT nLastServerType, OUT TASelectCharacter *pA); // 캐릭터 조회 - P_GetCharacter
int QueryGetCharacterPartialy1(INT64 biCharacterDBID, WCHAR *pCharName, TAGetCharacterPartialy *pA); // select 코드 1번인경우 : 캐릭터 속성 일부 조회(by 캐릭터 이름 or 캐릭터 ID) - P_GetCharacterPartialy
int QueryGetCharacterPartialy4(INT64 biCharacterDBID, WCHAR *pCharName, OUT BYTE &cClassID, OUT BYTE &cLevel); // select 코드 4번인경우 : 캐릭터 속성 일부 조회(by 캐릭터 이름 or 캐릭터 ID) - P_GetCharacterPartialy
int QueryGetCharacterPartialy6(WCHAR *pCharName, OUT BYTE &cJob, OUT BYTE &cLevel); // select 코드 6번인경우 : 캐릭터 속성 일부 조회(by 캐릭터 이름 or 캐릭터 ID) - P_GetCharacterPartialy
int QueryGetCharacterPartialy7(WCHAR *pCharName, OUT UINT &nAccountDBID, OUT INT64 &biCharacterDBID); // select 코드 7번인경우 : 캐릭터 속성 일부 조회(by 캐릭터 이름) - P_GetCharacterPartialy
int QueryGetCharacterPartialy8(INT64 biCharacterDBID, WCHAR *pCharName, int &nWorldID); // select 코드 8번인경우 : 캐릭터 속성 일부 조회(by 캐릭터 ID) - P_GetCharacterPartialy
int QueryGetCharacterPartialy10(WCHAR *pCharName, OUT char* pAccountName); // select 코드 10번인경우 : 캐릭터 속성 일부 조회(by 캐릭터 ID) - P_GetCharacterPartialy
int QueryGetListEquipmentAttributes(INT64 biCharacterDBID, OUT TCharacterStatus &CharStatus); // Equip 추가 속성 목록 - P_GetListEquipmentAttributes
int QueryGetEquipmentAttribute(INT64 biCharacterDBID, char cEquipTimeType, char cEquipAttributeCode, int nValue, OUT int &nEquipAttributeValue); // Equip 추가 속성 조회(equipdelaytime, equipremaintime) - P_GetEquipmentAttribute
int QueryGetCharacterLevelList(UINT nAccountDBID, int nWorldID, std::vector<TChracterLevel> &VecLevelList);
#if defined( PRE_ADD_CHARACTERCHECKSUM )
int QueryGetCharacterCheckSum(INT64 biCharacterDBID, OUT TASelectCharacter *pA);
int QueryMakeCharacterCheckSum(TQHeader * pHeader, BYTE cReason, INT64 biCharacterDBID, OUT UINT& uiCheckSum, INT64 biChangeCoin = 0);
#endif // #if defined( PRE_ADD_CHARACTERCHECKSUM )
#if defined( PRE_ADD_TOTAL_LEVEL_SKILL )
int QueryGetTotalSkillLevel(TQGetTotalLevelSkill* pQ, TAGetTotalLevelSkill* pA);
int QueryGetTotalSkillList(TQGetTotalLevelSkill* pQ, TAGetTotalLevelSkill* pA);
int QueryAddTotalSkill(TQAddTotalLevelSkill* pQ);
#endif
#ifdef PRE_ADD_PRESET_SKILLTREE
int QueryGetSKillPresetIndexList(TQGetSKillPreSetList * pQ, TAGetSKillPreSetList * pA);
int QueryGetSKillPresetList(TQGetSKillPreSetList * pQ, BYTE cIndex, TSkillSetPartialData * pSkill, BYTE &cCount);
int QueryAddSkillPreset(TQAddSkillPreSet * pQ);
int QueryDelSkillPreset(TQDelSkillPreSet * pQ);
#endif //#ifdef PRE_ADD_PRESET_SKILLTREE
// 캐릭터 속성 변경
int QueryVisitFirstVillage(INT64 biCharacterDBID); // 캐릭터의 첫 빌리지 방문 기록 - P_VisitFirstVillage
int QueryModCharacterLevel(INT64 biCharacterDBID, char cLevelChangeCode, BYTE cLevel, int nChannelID, int nMapID); // 캐릭터 레벨 변경 - P_ModCharacterLevel
int QueryModCharacterExp(INT64 biCharacterDBID, char cExpChangeCode, int nExp, int nChannelID, int nMapID, INT64 nFKey); // 캐릭터 경험치 변경 - P_ModCharacterExp
int QueryModCoin(INT64 biCharacterDBID, char cCoinChangeCode, INT64 biCoinChangeKey, INT64 biCoin, int nChannelID, int nMapID, OUT INT64 &biCurrentCoin); // 코인 증가 or 코인 직접 수정 - P_ModCoin
int QueryMidtermCoin(INT64 biCharacterDBID, INT64 biPickUpCoin, int nChannelID, int nMapID, OUT INT64 &biCurrentCoin); // 스테이지 골드 사용시 픽업코인 중간정산
int QueryModWarehouseCoin(INT64 biCharacterDBID, char cCoinChangeCode, INT64 biCoin, int nChannelID, int nMapID, OUT INT64 &biCurrentCoin, OUT INT64 &biCurrentWarehouseCoin); // 창고 코인 입/출금 - P_ModWarehouseCoin
int QueryModCharacterStatus(INT64 biCharacterDBID, int nModFieldBit, DWORD dwHairColor, DWORD dwEyeColor, DWORD dwSkinColor, int nMapID, int nLastVillageMapID, int nLastDarkLairVillageMapID, char cLastVillageGateNo,
TPosition &Pos, float fRotate, bool bViewCashWeapon1, bool bViewCashWeapon2, bool bLastLogoutDate, bool bLastLoginDate, char cSkillPage); // 캐릭터 Status 변경 - P_ModCharacterStatus
int QueryUpsCharacterAbility(INT64 biCharacterDBID, char cAbilityCode, int nAbilityPoint); // 캐릭터 추가 능력치(영구적용아이템) UPSERT - P_UpsCharacterAbility
int QueryUpsEquipmentAttribute(INT64 biCharacterDBID, char cEquipTimeType, char cEquipAttributeCode, int nValue); // Equip 추가 속성 UPSERT - P_UpsEquipmentAttribute
int QueryModFatigue(TQFatigue *pQ); // 피로도 증가 - P_ModFatigue
int QueryModEventFatigue(TQEventFatigue *pQ); // 이벤트 피로도 변경 - P_ModEventFatigue
int QueryModRebirthCoin(INT64 biCharacterDBID, int nRebirthCoin, int nPCBangRebirthCoin); // P_ModRebirthCoin
// 캐쉬 부활 코인
int QueryAddCashRebirthCoin(INT64 biCharacterDBID, int nRebirthCount, int nRebirthPrice, int nRebirthCode, int nRebirthKey); // 캐쉬 부활 코인 충전(Cash Server가 호출) - P_AddCashRebirthCoin
int QueryUseCashRebirthCoin(INT64 biCharacterDBID, int nChannelID, int nMapID, const WCHAR* pwszIP ); // 캐쉬 부활 코인 사용 - P_UseRebirthCoin
int QueryAddEffectItems( TQAddEffectItems* pQ );
int QueryGetListEffectItem( INT64 biCharacterDBID, std::vector<TEffectItemInfo>& vEffectItem );
int QueryGetProfile(INT64 biCharacterDBID, TProfile& Profile);
int QuerySetProfile(INT64 biCharacterDBID, TProfile& Profile);
int QueryAddAbuseLog(TQAddAbuseLog* pQ);
int QueryAddAbuseMonitor( TQAddAbuseMonitor* pQ );
int QueryDelAbuseMonitor( TQDelAbuseMonitor* pQ );
int QueryGetAbuseMonitor( TQGetAbuseMonitor* pQ, TAGetAbuseMonitor* pA );
int QueryGetWholeAbuseMonitor(TQGetWholeAbuseMonitor * pQ, TAGetWholeAbuseMonitor * pA);
// 아이템
#if defined(_LOGINSERVER)
void MakeAddMaterializedItem(int nMapIndex, INT64 biCharacterDBID, int nSlotIndex, int nItemLocation, int nItemID, int nCount, int nRandomSeed, int nDur, OUT TQAddMaterializedItem &Item);
#endif //#if defined(_LOGINSERVER)
int QueryAddMaterializedItem( TQAddMaterializedItem* pQ ); // 아이템 획득 - P_AddMaterializedItem
int QueryUseItem( TQUseItem* pQ ); // 아이템 소멸(소모성 아이템 사용/버리기/분해) - P_UseItem
int QueryResellItem( TQResellItem* pQ ); // 아이템 되팔기 - P_ResellItem
int QueryEnchantItem( TQEnchantItem* pQ ); // 아이템 강화 - P_EnchantItem
int QueryChangeItemLocation( TQChangeItemLocation* pQ/*, TAChangeItemLocation* pA*/ ); // 아이템 위치 변경 - P_ChangeItemLocation
int QuerySwitchItemLocation(TQSwitchItemLocation *pQ); // 두 아이템의 위치 바꾸기 - P_SwitchItemLocation
int QueryModItemDurability( TQModItemDurability* pQ ); // 내구도 일괄 변경 - P_ModItemDurability
int QueryModMaterializedItem( TQModMaterializedItem* pQ ); // 아이템 속성 변경 - P_ModMaterializedItem
int QueryGetListMaterializedItem( INT64 biCharacterDBID, std::wstring wstrItemLocationCode, int nMaxCount, int &nCount, DBPacket::TMaterialItemInfo *ItemList, UINT nAccountDBID = 0 ); // 소유한 아이템 목록 - P_GetListMaterializedItem
int QueryExchangeProperty(TQExchangeProperty *pQ); // 아이템/코인 교환 - P_ExchangeProperty
int QueryTakeCashEquipmentOff(TQTakeCashEquipmentOff *pQ); // 17.캐쉬 이큅먼트 일괄 탈착 - P_TakeCashEquipmentOff
int QueryPutOnepieceOn(TQPutOnepieceOn *pQ); // 18.한벌옷 장착 - P_PutOnepieceOn
int QueryGetPageMaterializedItem(TQGetPageMaterializedItem *pQ, TAGetPageMaterializedItem *pA); // 11.소유한 아이템 목록 페이징(공간 제약 없는 종류) - P_GetPageMaterializedItem
int QueryGetCountMaterializedItem(INT64 biCharacterDBID, int nItemLocationCode, OUT int &nTotalCount); // 12.소유한 아이템 목록 페이징용 카운트 - P_GetCountMaterializedItem
int QueryGetPagePet(INT64 biCharacterDBID, int nPageNumber, int nPageSize, int nPetType, bool bEquipFlag, std::vector<DBPacket::TVehicleInfo> &VecItemList); // 15.소유한 탈것 & 펫 목록 페이징 - P_GetPagePet
int QueryGetCountPet(INT64 biCharacterDBID, int nPetType, OUT int &nTotalCount); // 16.소유한 탈것 & 펫 카운트 - P_GetCountPet
int QueryDelPetEquipment(INT64 biBodySerial, INT64 biPartsSerial, WCHAR *pIp); // 25.탈것&펫에 장착한 파츠 삭제(버리기) - P_DelPetEquipment
int QueryModPetSkinColor(INT64 biBodySerial, DWORD dwSkinColor, DWORD dwSkinColor2); // 24.탈것&펫 색상 변경 - P_ModPetSkinColor 색상2 추가.
int QueryModItemExpireDate(TQModItemExpireDate* pQ);
int QueryModPetExp(TQModPetExp* pQ);
int QueryItemExpireByCheat(TQItemExpire* pQ);
int QueryChangePetName(INT64 petSerial, const wchar_t* pName);
int QueryModPetSkill(TQModPetSkill *pQ);
int QueryModPetSkillExpand(INT64 biItemSerial);
int QueryModDegreeOfHunger(TQModDegreeOfHunger* pQ);
int QueryModAdditiveItem(TQModAdditiveItem* pQ, TAModAdditiveItem* pA);
#if defined (PRE_ADD_COSRANDMIX)
int QueryModRandomItem(TQModRandomItem* pQ, TAModRandomItem* pA);
#endif
int QueryGetListMissingItem(INT64 biCharacterDBID, char &cCount, TItem *MissingItemList); // 26.유실 아이템 목록 - P_GetListMissingItem
int QueryRecoverMissingItem(INT64 biCharacterDBID, INT64 biItemSerial, char cItemLocationCode, BYTE cSlotIndex); // 27.유실 아이템 복구 - P_RecoverMissingItem
int QueryItemMaterializeFKey(INT64 biItemSerial, OUT BYTE &cItemCode, OUT INT64 &biFKey); // 28.ItemMaterializeFKey 조회 - P_GetItemMaterializeFKey
int QuerySaveItemLocationIndex(TQSaveItemLocationIndex *pQ); // P_SaveItemLocationIndex
int QueryGetListItemLocationIndex(INT64 biCharacterDBID, int &nCount, DBPacket::TItemIndexSerial *ItemIndexList);
int QueryDeleteExpireItem(INT64 biCharacterDBID, std::list<INT64> &DelExpireitemList);
int QueryDelCashItem(TQDelCashItem *pQ, TADelCashItem *pA);
int QueryRecoverCashItem(TQRecoverCashItem *pQ, TARecoverCashItem *pA);
#if defined( PRE_ADD_NAMEDITEM_SYSTEM )
int QueryCheckNamedItemCount(TQCheckNamedItemCount *pQ, TACheckNamedItemCount *pA);
#endif
#if defined (PRE_ADD_EXCHANGE_POTENTIAL)
int QueryMovePotential(TQMovePotential * pQ, TAMovePotential * pA);
#endif //#if defined (PRE_ADD_EXCHANGE_POTENTIAL)
#if defined( PRE_ADD_LIMITED_SHOP )
int QueryGetDailyLimitedShopItem(TQGetLimitedShopItem * pQ, TAGetLimitedShopItem * pA);
int QueryGetWeeklyLimitedShopItem(TQGetLimitedShopItem * pQ, TAGetLimitedShopItem * pA);
int QueryAdddailyLimitedShopItem(TQAddLimitedShopItem * pQ);
int QueryAddWeeklyLimitedShopItem(TQAddLimitedShopItem * pQ);
int QueryResetdailyLimitedShopItem(TQResetLimitedShopItem * pQ);
int QueryResetWeeklyLimitedShopItem(TQResetLimitedShopItem * pQ);
#endif
int QueryDelEffectItem(TQDelEffectItem * pQ);
#if defined(PRE_ADD_TALISMAN_SYSTEM)
int QueryModTalismanSlotOpenFlag(TQModTalismanSlotOpenFlag *pQ);
#endif
// 미션
int QueryGetListDailyWeeklyMission(INT64 biCharacterDBID, TUserData &UserData); // 일일, 주간 미션 목록 - P_GetListDailyWeeklyMission
int QuerySetDailyWeeklyMission(INT64 biCharacterDBID, char cDailyMissionType, int *nMissionIDs); // 일일, 주간 미션 재설정 - P_SetDailyWeeklyMission
int QueryModDailyWeeklyMissionDetail(INT64 biCharacterDBID, char cDailyMissionType, int nMissionIndex, TDailyMission &Mission, int nMissionScore); // 일일, 주간 미션 세부 속성 변경 - P_ModDailyWeeklyMissionDetail
int QueryUpsGainMissionBin(INT64 biCharacterDBID, char *GainMissionList); // 획득 가능한 미션 비트맵 저장 - P_UpsGainMissionBin
int QueryAddAchieveMission(INT64 biCharacterDBID, int nMissionID, char cMissionType, char *MissionAchieveList); // 미션 달성 - P_AddAchieveMission
int QueryDelAllMissionsForCheat(INT64 biChracterDBID);
// 퀘스트
private:
void ConvertToBinary(int questID, OUT char CompleteQuest[]);
public:
int QueryGetCompletedQuests(INT64 biCharacterDBID, OUT char CompleteQuest[]);
int QueryGetListQuest(INT64 biCharacterDBID, OUT int &nCount, OUT TQuest *QuestList); // 퀘스트 목록 - P_GetListQuest
int QueryAddQuest(INT64 biCharacterDBID, char cQuestIndex, TQuest &Quest); // 퀘스트 추가 - P_AddQuest
int QueryDelQuest(INT64 biCharacterDBID, int nQuestIndex, int nQuestID, bool bCompleteFlag, bool bRepeatFlag, char *CompleteQuestArray); // 퀘스트 삭제 - P_DelQuest
int QueryModQuest(INT64 biCharacterDBID, char cQuestIndex, int nModFieldBit, char cQuestStatusCode, TQuest &Quest); // 퀘스트 수정 - P_ModQuest
int QueryClearQuest(INT64 biCharacterDBID); // 퀘스트 초기화 - P_ClearQuest
int QueryAddCompleteQuest(INT64 biCharacterDBID, int nQuestID, int nQuestCode);
// 퀵슬롯
int QuerySetQuickSlot(INT64 biCharacterDBID, TQuickSlot *QuickSlotArray); // 캐릭터 퀵 슬롯 MERGE - P_SetQuickSlot
int QueryGetListQuickSlot(INT64 biCharacterDBID, OUT int &nCount, OUT TQuickSlot *QuickSlotList); // 퀵 슬롯 목록 - P_GetListQuickSlot
// 칭호
int QueryAddAppellation(INT64 biCharacterDBID, int nAppellationID, char *AppellationArray); // 칭호 추가 - P_AddAppellation
int QueryChoiceAppellation(INT64 biCharacterDBID, int nAppellationID, char cAppellationKind); // 대표 칭호 선택 - P_ChoiceAppellation
int QueryDeleteAppellation(INT64 biCharacterDBID, int nAppellationID); // 칭호 삭제
int QueryGetListAchieveMission(INT64 biCharacterDBID, char *MissionAchieve); // P_GetListAchieveMission
int QueryGetListAppellation(INT64 biCharacterDBID, char *Appellation); // P_GetListAppellation
// 직업
int QueryModJobCode(INT64 biCharacterDBID, char cJob); // 전직 - P_ModJobCode
int QueryGetListJobChangeLog(INT64 biCharacterDBID, OUT BYTE *JobArray); // 직업 이력 - P_GetListJobChangeLog
// 스킬
int QueryAddSkill(INT64 biCharacterDBID, int nSkillID, char cSkillLevel, int nCoolTime, char cSkillChangeCode, INT64 biCoin, int nChannelID, int nMapID, char cSkillPage); // 스킬 추가 - P_AddSkill
int QueryIncreaseSkillPoint(INT64 biCharacterDBID, short nSkillPoint, int nChannelID, int nMapID, int nChangeCode, char cSkillPage); // 스킬 포인트 증가 - P_IncreaseSkillPoint
int QueryDelSkill(INT64 biCharacterDBID, int nSkillID, char cSkillChangeCode, bool bSkillPointBack, int nChannelID, int nMapID, char cSkillPage); // 스킬 삭제 - P_DelSkill
int QueryModSkillLevel(INT64 biCharacterDBID, int nSkillID, char cSkillLevel, int nCoolTime, int nUsedSkillPoint, char cSkillChangeCode, int nChannelID, int nMapID, char cSkillPage); // 스킬 레벨 변경 - P_ModSkillLevel
int QueryResetSkill(INT64 biCharacterDBID, int nChannelID, int nMapID, OUT USHORT &wSkillPoint, OUT USHORT &wTotalSkillPoint, char cSkillPage); // 스킬 리셋 - P_ResetSkill
int QueryGetListSkill(INT64 biCharacterDBID, OUT int &nCount, OUT TSkillGroup *SkillGroup); // 스킬 목록 - P_GetListSkill
int QueryUseExpandSkillPage(INT64 biCharacterDBID, int *nSkillID, int nSkillPoint2); // 스킬트리확장 아이템 사용시 스킬과 스킬포인트 저장
int QueryDecreaseSkillPoint( TQDecreaseSkillPoint* pQ );
int QueryResetSkillBySkillIDs( TQResetSkillBySkillIDS* pQ, TAResetSkillBySkillIDS* pA );
int QuerySetSkillPoint( TQSetSkillPoint* pQ );
// 알리미
int QueryGetListNotifier(INT64 biCharacterDBID, OUT int &nCount, OUT DNNotifier::Data *NotifierList); // 알리미 목록 - P_GetListNotifier
int QueryModNotifier(INT64 biCharacterDBID, char cNotifyIndex, char cNotifyTargetType, int nNotifyTargetID); // 알리미 수정 - P_ModNotifier
#if !defined(PRE_DELETE_DUNGEONCLEAR)
// 던전
int QueryUpsDungeonClear(INT64 biCharacterDBID, int nMapID, char cDifficultyCode); // 던전 클리어 상태 UPSERT - P_UpsDungeonClear
int QueryGetListDungeonClear(INT64 biCharacterDBID, OUT int &nCount, OUT TDungeonClearData *DungeonList); // 캐릭터의 던전 클리어 목록 - P_GetListDungeonClear
int QueryGetDungeonClear(INT64 biCharacterDBID, int nMapID, OUT char &cDifficulty); // 특정 캐릭터가 특정 던전을 클리어한 난이도 조회 - P_GetDungeonClear
#endif // #if !defined(PRE_DELETE_DUNGEONCLEAR)
// Nest
int QueryUpsNestClear(INT64 biCharacterDBID, int nMapID, char cClearType); // NEST 클리어 횟수 UPSERT - P_UpsNestClear
int QueryGetListNestClearCount(INT64 biCharacterDBID, OUT int &nCount, OUT TNestClearData *NestList); // NEST 주간 클리어 횟수 조회 - P_GetListNestClearCount
int QueryInitNestClearCount(INT64 biCharacterDBID); // NEST 주간 클리어 횟수 초기화 - P_InitNestClearCount
// 친구
int QueryGetListFriendGroup(INT64 biCharacterDBID, OUT int &nCount, OUT TDBFriendGroupData *GroupList); // 친구 그룹 목록 - P_GetListFriendGroup
int QueryAddFriendGroup(INT64 biCharacterDBID, WCHAR *pGroupName, int nGroupCountLimit, OUT UINT &nGroupID); // 친구 그룹 추가 - P_AddFriendGroup
int QueryModFriendGroupName(INT64 biCharacterDBID, int nGroupID, WCHAR *pGroupName); // 친구 그룹 이름 수정 - P_ModFriendGroupName
int QueryDelFriendGroup(INT64 biCharacterDBID, int nGroupID); // 친구 그룹 삭제 - P_DelFriendGroup
int QueryGetListFriend(INT64 biCharacterDBID, OUT BYTE &cCount, OUT TDBFriendData *FriendList); // 친구 목록 - P_GetListFriend
int QueryAddFriend(INT64 biCharacterDBID, WCHAR *pFriendCharName, WCHAR *pFriendMemo, int nFriendGroupID, int nFriendCountLimit, OUT INT64 &biFriendCharDBID, OUT UINT &nFriendAccountDBID, OUT bool &bNeedDelIsolate); // 친구 추가 - P_AddFriend
int QueryModFriendMemo(INT64 biCharacterDBID, INT64 biFriendCharacterDBID, WCHAR *pMemo); // 친구 메모 수정 - P_ModFriendMemo
int QueryModFriendAndFriendGroupMapping(INT64 biCharacterDBID, int nFriendCount, INT64 *biFriendCharacterDBIDs, int nGroupID); // 친구와 친구 그룹 매핑 수정 - P_ModFriendAndFriendGroupMapping
int QueryDelFriend(INT64 biCharacterDBID, int nFriendCount, INT64 *biFriendCharacterDBIDs); // 친구 삭제 - P_DelFriend
// 차단
int QueryAddBlockedCharacter(INT64 biCharacterDBID, WCHAR *pBlockedCharName, OUT INT64 &biBlockedCharacterDBID, OUT bool &bNeedDelFriend, int nIsolateCountMax); // 캐릭터 차단 - P_AddBlockedCharacter
int QueryGetListBlockedCharacter(INT64 biCharacterDBID, OUT BYTE &cCount, OUT TIsolateItem * pIsolateItems); // 캐릭터 차단 목록 - P_GetListBlockedCharacter
int QueryDelBlockedCharacter(INT64 biCharacterDBID, UINT uiCount, INT64 *biBlockedCharacterDBIDs); // 캐릭터 차단 해지 - P_DelBlockedCharacter
// Equipment
int QueryGetListEquipment(INT64 biCharacterDBID, int *EquipList, int *CashEquipList); // Equipment의 아이템 목록 - P_GetListEquipment
int QueryUpsEquipment(INT64 biCharacterDBID, int nItemLocation, int nSlotIndex, INT64 biSerial);
// 우편
int QueryGetCountSendMail(INT64 biCharacterDBID, OUT int &nPremiumMailCount, OUT int &nBasicMailCount); // 보낸 메일 카운트 - P_GetCountSendMail
int QuerySendMail( TQSendMail* pQ, TASendMail* pA ); // 메일 발송 - P_SendMail
int QuerySendSystemMail( TQSendSystemMail* pQ, TASendSystemMail* pA ); // 시스템 메일 발송 - P_SendSystemMail
#ifdef PRE_ADD_JOINGUILD_SUPPORT
int QueryGetGuildSupportRewardInfo(TQGuildSupportRewardInfo * pQ, TAGuildSupportRewardInfo * pA);
int QuerySendGuildMail(TQSendGuildMail * pQ, TASendGuildMail * pA);
#endif //#ifdef PRE_ADD_JOINGUILD_SUPPORT
int QueryGetCountReceiveMail( INT64 biCharacterDBID, OUT int &nTotalCount, OUT int &nNotReadCount, OUT int &n7DaysLeftCount ); // 받은 메일 카운트 - P_GetCountReceiveMail
int QueryGetPageReceiveMail( TQGetPageReceiveMail* pQ, TAGetPageReceiveMail* pA ); // 받은 메일 목록 페이징 - P_GetPageReceiveMailc
int QueryReadMail( TQReadMail* pQ, TAReadMail* pA ); // 메일 읽기 - P_ReadMail
int QueryTakeMailAttachCoin(int nMailDBID, int nChannelID, int nMapID, OUT INT64 &biCoin, UINT nGuildDBID, OUT bool &bAddGuildWare); // 첨부 코인 받기 - P_TakeMailAttachCoin
int QueryTakeMailAttachItem(int nMailDBID, INT64 biSerial, int nChannelID, int nMapID, const WCHAR* pwszIP, OUT TItemInfo &ItemInfo, UINT nGuildDBID, OUT bool &bAddGuildWare); // 첨부 아이템 받기 - P_TakeMailAttachItem
int QueryDelMail( TQDelMail* pQ, TADelMail* pA ); // 메일 삭제 - P_DelMail
int QueryGetListMailAttachment(TQGetListMailAttachment *pQ, TAGetListMailAttachment *pA); // 메일 목록에 포함된 첨부 코인 및 아이템 수량 조회 - P_GetLisMailAttachment
int QueryGetListMailAttachmentByMail(int nMailDBID, DBPacket::TAttachMail &MailList); // P_GetListMailAttachmentByMail
#ifdef PRE_ADD_BEGINNERGUILD
int QueryGetWillSendMail(TQGetWillMails * pQ, TAGetWillMails * pA);
int QueryAddWillSendMail(INT64 biChatacterDBID, int nMailID, const WCHAR * pMemo);
int QueryDelWillSendMail(INT64 biChatacterDBID, int nMailID);
#endif //#ifdef PRE_ADD_BEGINNERGUILD
#if defined(PRE_ADD_CADGE_CASH)
int QuerySendWishMail(TQSendWishMail *pQ, TASendWishMail *pA); // 조르기 우편 발송 - P_SendWishMail
int QueryReadWishMail(TQReadWishMail *pQ, TAReadWishMail *pA); // 조르기 우편 읽기 - P_ReadWishMail
int QueryModWishProducts(int nMailDBID, INT64 biPurchaseOrderID); // 조르기 선물 지급 상태 수정 (아이템 구입 주문 ID 입력) - P_ModWishProducts
#endif // #if defined(PRE_ADD_CADGE_CASH)
// 무인상점
int QueryGetPageTrade(TQGetPageTrade *pQ, TAGetPageTrade *pA); // 등록된 아이템 목록 페이징 - P_GetPageTrade
int QueryGetCountTrade(TQGetPageTrade *pQ, OUT int &nTotalCount); // 등록된 아이템 카운트 - P_GetCountTrade
int QueryGetListMyTrade(TQGetListMyTrade *pQ, TAGetListMyTrade *pA); // 내가 등록한 판매중 아이템 목록 - P_GetListMyTrade
int QueryGetCountMyTrade(INT64 biCharacterDBID, OUT int &nSellingCount, OUT int &nExpiredCount); // 내가 등록한 판매중 아이템 카운트 - P_GetCountMyTrade
int QueryAddTrade(TQAddTrade *pQ, TAAddTrade *pA); // 아이템 등록 - P_AddTrade
int QueryCancelTrade(TQCancelTrade *pQ, TACancelTrade *pA); // 아이템 등록 취소 - P_CancelTrade
int QueryBuyTradeItem(TQBuyTradeItem *pQ, TABuyTradeItem *pA); // 아이템 구입 - P_BuyTradeItem
int QueryGetListTradeForCalculation(TQGetListTradeForCalculation *pQ, TAGetListTradeForCalculation *pA); // 아이템 정산 목록 - P_GetListTradeForCalculation
int QueryGetCountTradeForCalculation(INT64 biCharacterDBID, OUT int &nCalculationCount); // 아이템 정산 카운트 - P_GetCountTradeForCalculation
int QueryTradeCalculate(TQTradeCalculate *pQ, TATradeCalculate *pA); // 개별 정산 - P_TradeCalculate
int QueryTradeCalculateAll(TQTradeCalculateAll *pQ, TATradeCalculateAll *pA); // 전체 정산 - P_TradeCalculateAll
int QueryGetTradeItemID(int nMarketDBID, TAGetTradeItemID* pA);
int QueryGetTradePrice(TQGetTradePrice* pQ, TAGetTradePrice* pA);
#if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM)
int QueryGetListMiniTrade(TQGetListMiniTrade *pQ, TAGetListMiniTrade *pA); // P_GetListMiniTrade
#endif // #if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM)
// PvP
int QueryModPvPScore( TQUpdatePvPData* pQ, TAUpdatePvPData* pA );
int QueryGetPvPScore( INT64 biCharacterDBID, TPvPGroup *pA );
int QueryAddPVPGhoulScores(TQAddPVPGhoulScores* pQ);
int QueryGetPVPGhoulScores(INT64 biCharacterDBID, TAGetPVPGhoulScores* pA);
#if defined(PRE_ADD_PVP_TOURNAMENT)
int QueryAddPVPTournamentResult(TQAddPVPTournamentResult* pQ);
#endif //#if defined(PRE_ADD_PVP_TOURNAMENT)
int QueryAddPvPLadderResult( TQAddPvPLadderResult* pQ, TAAddPvPLadderResult* pA );
int QueryGetListPvPLadderScore( TQGetListPvPLadderScore* pQ, TAGetListPvPLadderScore* pA );
int QueryGetListPvPLadderScoreByJob( TQGetListPvPLadderScoreByJob* pQ, TAGetListPvPLadderScoreByJob* pA );
int QueryInitPvPLadderGradePoint( TQInitPvPLadderGradePoint* pQ, TAInitPvPLadderGradePoint* pA );
int QueryUsePvPLadderPoint( TQUsePvPLadderPoint* pQ, TAUsePvPLadderPoint* pA );
int QueryAddPvPLadderCUCount( TQAddPvPLadderCUCount* pQ );
int QueryModPvPLadderScoresForCheat( TQModPvPLadderScoresForCheat* pQ );
int QueryGetListPvPLadderRanking( TQGetListPvPLadderRanking* pQ, TAGetListPvPLadderRanking* pA );
#ifdef PRE_MOD_PVPRANK
int QuerySetPvPRankCriteria(UINT nThresholdExp);
int QueryCalcPvPRank();
#endif //#ifdef PRE_MOD_PVPRANK
#if defined(PRE_ADD_PVP_RANKING)
int QueryGetPvPRankInfo(TQHeader* pQ, INT64 biCharacterDBID, WCHAR* wszCharName, TPvPRankingDetail * pRanking);
int QueryGetPvPRankList(TQGetPvPRankList * pQ, TAGetPvPRankList * pA);
int QueryGetPvPLadderRankInfo(TQHeader* pQ, INT64 biCharacterDBID, WCHAR* wszCharName, BYTE cPvPLadderCode, TPvPLadderRankingDetail * pRanking);
int QueryGetPvPLadderRankList(TQGetPvPLadderRankList * pQ, TAGetPvPLadderRankList * pA);
int QueryAggregatePvPRank();
int QueryAggregatePvPLadderRank();
#endif
#if defined( PRE_WORLDCOMBINE_PVP )
int QueryAddWorldPvPRoom(TQAddWorldPvPRoom* pQ, int &nRoomID);
int QueryAddWorldPvPRoomMember(TQAddWorldPvPRoomMember* pQ);
int QueryDelWorldPvPRoom( int nWorldPvPRoomIndex );
int QueryDelWorldPvPRoomMember(TQDelWorldPvPRoomMember* pQ);
int QueryDelWorldPvPRoomForServer(int nServerID);
int QueryGetListWorldPvPRoom(int nCombineWorldID, TAGetListWorldPvPRoom *pA);
#endif
// Test
int QueryMWTest( TQMWTest* pQ );
//Event
#if defined(PRE_ADD_WORLD_EVENT)
#else
int QueryEventList(TQEventList * pQ, TAEventList * pA);
#endif //#if defined(PRE_ADD_WORLD_EVENT)
//Guild
int QueryCreateGuild(TQCreateGuild *pQ, TACreateGuild *pA);
int QueryDismissGuild(TQDismissGuild *pQ, TADismissGuild *pA);
int QueryAddGuildMember(TQAddGuildMember *pQ, TAAddGuildMember *pA);
int QueryDelGuildMember(TQDelGuildMember *pQ, TADelGuildMember *pA);
int QueryChangeGuildInfoNotice(TQChangeGuildInfo *pQ, TAChangeGuildInfo *pA);
int QueryChangeGuildInfoRoleAuth(TQChangeGuildInfo *pQ, TAChangeGuildInfo *pA);
#if defined( PRE_ADD_GUILD_EASYSYSTEM )
int QueryChangeGuildInfoHomePage(TQChangeGuildInfo *pQ, TAChangeGuildInfo *pA);
#endif
int QueryChangeGuildMemberInfoIntroduce(TQChangeGuildMemberInfo *pQ, TAChangeGuildMemberInfo *pA);
int QueryChangeGuildMemberInfoRole(TQChangeGuildMemberInfo *pQ, TAChangeGuildMemberInfo *pA);
int QueryChangeGuildMemberInfoGuildMaster(TQChangeGuildMemberInfo *pQ, TAChangeGuildMemberInfo *pA);
int QueryChangeGuildMemberInfoCommonPoint(TQChangeGuildMemberInfo *pQ, TAChangeGuildMemberInfo *pA);
int QueryAddGuildHistory(TQAddGuildHistory *pQ);
int QueryGetGuildHistoryList(TQGetGuildHistoryList *pQ, TAGetGuildHistoryList *pA);
int QueryGetGuildInfo(UINT nGuildDBID, char cWorldID, TAGetGuildInfo *pA);
int QueryGetGuildMemberList(UINT nGuildDBID, char cWorldID, std::vector<TGuildMember>& GuildMemberList);
int QueryGetGuildWareInfo(TQGetGuildWareInfo *pQ, TAGetGuildWareInfo *pA);
int QuerySetGuildWareInfo(TQSetGuildWareInfo *pQ, TASetGuildWareInfo *pA);
int QueryGetGuildWareHistoryList(TQGetGuildWareHistory* pQ, TAGetGuildWareHistory* pA);
int QueryMoveItemInGuildWare(TQMoveItemInGuildWare *pQ, TAMoveItemInGuildWare *pA);
int QueryMoveInvenToGuildWare(TQMoveInvenToGuildWare *pQ, TAMoveInvenToGuildWare *pA);
int QueryMoveGuildWareToInven(TQMoveGuildWareToInven *pQ, TAMoveGuildWareToInven *pA);
int QueryModGuildCoin(TQGuildWareHouseCoin *pQ, TAGuildWareHouseCoin *pA);
int QueryChangeGuildWareSize(TQChangeGuildWareSize * pQ, TAChangeGuildWareSize * pA);
int QueryChangeGuildMark(TQChangeGuildMark * pQ, TAChangeGuildMark * pA);
int QueryModGuildName(TQChangeGuildName* pQ);
int QueryEnrollGuildWar(TQEnrollGuildWar *pQ, TAEnrollGuildWar *pA);
int QueryGetGuildWarSchedule(TQGetGuildWarSchedule *pQ, TAGetGuildWarSchedule *pA);
int QueryGetGuildWarFinalSchedule(TQGetGuildWarFinalSchedule *pQ, TAGetGuildWarFinalSchedule *pA);
int QueryAddGuildWarPoint(TQAddGuildWarPointRecodrd *pQ);
int QueryGetGuildWarPoint(TQGetGuildWarPoint *pQ, TAGetGuildWarPoint *pA);
int QueryGetGuildWarPointPartTotal(TQGetGuildWarPointPartTotal *pQ, TAGetGuildWarPointPartTotal *pA);
int QueryGetGuildWarPointGuildPartTotal(TQGetGuildWarPointGuildPartTotal *pQ, TAGetGuildWarPointGuildPartTotal *pA);
int QueryGetGuildWarPointDaily(char cWorldSetID, UINT nAccountDBID, TAGetGuildWarPointDaily *pA);
int QueryGetGuildWarPointGuildTotal(TQGetGuildWarPointGuildTotal *pQ, TAGetGuildWarPointGuildTotal *pA);
int QueryAddGuildWarFinalMatchList(TQAddGuildWarFinalMatchList *pQ);
int QueryAddGuildWarPopularityVote(TQAddGuildWarPopularityVote *pQ);
int QueryGetGuildWarPopularityVote(TQGetGuildWarPopularityVote *pQ, TAGetGuildWarPopularityVote *pA);
int QueryAddGuildWarFinalResults(TQAddGuildWarFinalResults *pQ);
int QueryGetGuildWarFinalResults(TQGetGuildWarFinalResults *pQ, TAGetGuildWarFinalResults *pA);
int QueryGetGuildWarPreWinGuild(TQGetGuildWarPreWinGuild *pQ, TAGetGuildWarPreWinGuild *pA);
int QueryAddGuildWarRewarForCharacter(TQAddGuildWarRewardCharacter *pQ);
int QueryGetGuildWarRewarForCharacter(TQGetGuildWarRewardCharacter *pQ, TAGetGuildWarRewardCharacter *pA);
int QueryAddGuildWarRewarForGuild(TQAddGuildWarRewardGuild *pQ);
int QueryGetGuildWarRewarForGuild(TQGetGuildWarRewardGuild *pQ, TAGetGuildWarRewardGuild *pA);
int QueryAddGuildWarPointQueue(TQAddGuildWarPointQueue* pQ);
int QueryAddGuildWarSystemMailQueue(TQSendSystemMail* pQ);
int QueryAddJobReserve(TQAddJobReserve* pQ, TAAddJobReserve* pA);
int QueryGetJobReserve(TQGetJobReserve* pQ, TAGetJobReserve* pA);
int QueryGetGuildWarPointRunningTotal(TQGetGuildWarPointRunningTotal* pQ, TAGetGuildWarPointRunningTotal* pA );
int QueryGetGuildWarFinalRewardPoint(TAGetGuildWarPointFinalRewards* pA);
int QueryGetListGuildWarItemTradeRecord(INT64 characterDBID, OUT TAGetListGuildWarItemTradeRecord& record);
int QueryAddGuildWarItemTradeRecord(INT64 characterDBID, ItemCount& itemCount);
int QueryModGuildExp(TQModGuildExp* pQ, TAModGuildExp& pA);
int QueryModGuildCheat(TQModGuildCheat* pQ, TAModGuildCheat& pA);
int QueryGetGuildRewardItem(TQGetGuildRewardItem* pQ, TAGetGuildRewardItem* pA);
int QueryAddGuildRewardItem(TQAddGuildRewardItem* pQ, TAAddGuildRewardItem* pA);
int QueryChangeGuildSize(TQChangeGuildSize* pQ);
int QueryDelGuildRewardItem(TQDelGuildEffectItem* pQ);
#if defined(PRE_ADD_GUILD_CONTRIBUTION)
int QueryGetGuildContributionPoint(TQGetGuildContributionPoint* pQ, TAGetGuildContributionPoint& pA);
int QueryGetGuildContributionWeeklyRanking(TQGetGuildContributionRanking* pQ, TAGetGuildContributionRanking* pA);
#endif // #if defined(PRE_ADD_GUILD_CONTRIBUTION)
int QueryModCharacterName(TQChangeCharacterName* pQ);
int QueryGetListEtcPoint(TQGetListEtcPoint *pQ, TAGetListEtcPoint *pA);
int QueryAddEtcPoint( TQAddEtcPoint* pQ, TAAddEtcPoint *pA );
int QueryUseEtcPoint( TQUseEtcPoint* pQ, TAUseEtcPoint *pA );
#if defined( PRE_ADD_NEW_MONEY_SEED )
int QueryGetEtcPoint( INT64 biCharacterDBID, char cType, INT64 &nPoint );
#endif
#if !defined(_LOGINSERVER)
// 아이템 처리
int CashItemDBQuery(int nAccountDBID, INT64 biCharacterDBID, int nMapID, int nChannelID, char cPaymentRules, TCashItemBase &BuyItem, int nPrice, INT64 biPurchaseOrderID, int nAddMaterializedItemCode,
const WCHAR* pwszIP, INT64 biSenderCharacterDBID = 0, bool bGift = false, char cPayMethodCode = DBDNWorldDef::PayMethodCode::Cash);
#endif // #if !defined(_LOGINSERVER)
//Log
int QueryAddPartyStartLog( TQAddPartyStartLog* pQ );
int QueryAddPartyEndLog( TQAddPartyEndLog* pQ );
int QueryAddStageStartLog( TQAddStageStartLog* pQ );
int QueryAddStageClearLog( TQAddStageClearLog* pQ );
int QueryAddStageRewardLog( TQAddStageRewardLog* pQ );
int QueryAddStageEndLog( TQAddStageEndLog* pQ );
int QueryAddPvPStartLog( TQAddPvPStartLog* pQ );
int QueryAddPvPResultLog( TQAddPvPResultLog* pQ );
int QueryAddPvPEndLog( TQAddPvPEndLog* pQ );
#if defined( PRE_ADD_58761 )
int QueryAddNestGateStartLog( TQAddNestGateStartLog* pQ );
int QueryAddNestGateEndLog( TQAddNestGateEndLog* pQ );
int QueryAddNestGateClearLog( TQAddNestGateClearLog* pQ );
int QueryAddNestDeathLog( TQNestDeathLog* pQ );
#endif
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
// NPC 호감도
int QueryModNpcLocation( TQModNPCLocation* pQ );
int QueryModNpcFavor( TQModNPCFavor* pQ );
int QueryGetListNpcFavor( TQGetListNpcFavor* pQ, std::vector<TNpcReputation>& vReputation );
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
// 사제 시스템
int QueryGetMasterPupilInfo( TQGetMasterPupilInfo* pQ, TAGetMasterPupilInfo* pA );
int QueryGetMasterPupilInfo2( TQGetMasterPupilInfo* pQ, TAGetMasterPupilInfo* pA );
int QueryAddMasterCharacter( TQAddMasterCharacter* pQ );
int QueryDelMasterCharacter( TQDelMasterCharacter* pQ );
int QueryGetPageMasterCharacter( TQGetPageMasterCharacter* pQ, TAGetPageMasterCharacter* pA );
int QueryGetMasterCharacterType1( TQGetMasterCharacter* pQ, TAGetMasterCharacterType1* pA ); // 자신의 스승 정보
int QueryGetMasterCharacterType2( TQGetMasterCharacter* pQ, TAGetMasterCharacterType2* pA ); // 내 스승 정보
int QueryGetMasterCharacterType3( TQGetMasterCharacter* pQ, TAGetMasterCharacterType3* pA ); // 임의의 특정 스승 정보
int QueryGetListPupil( TQGetListPupil* pQ, TAGetListPupil* pA );
int QueryAddMasterAndPupil( TQAddMasterAndPupil* pQ, TAAddMasterAndPupil* pA );
int QueryDelMasterAndPupil( TQDelMasterAndPupil* pQ, TADelMasterAndPupil* pA );
int QueryGetListMyMasterAndClassmate( TQGetListMyMasterAndClassmate* pQ, TAGetListMyMasterAndClassmate* pA );
int QueryGetMyClassmate( TQGetMyClassmate* pQ, TAGetMyClassmate* pA );
int QueryGraduate( TQGraduate* pQ, TAGraduate* pA );
int QueryModRespectPoint( TQModRespectPoint* pQ, TAModRespectPoint* pA );
int QueryModMasterFavorPoint( TQModMasterFavorPoint* pQ, TAModMasterFavorPoint* pA );
int QueryGetMasterAndFavorPoint( TQGetMasterAndFavorPoint* pQ, TAGetMasterAndFavorPoint* pA );
int QueryGetMasterSystemCountInfo( TQGetMasterSystemCountInfo* pQ, TAGetMasterSystemCountInfo* pA );
int QueryModGraduateCount( TQModMasterSystemGraduateCount* pQ );
// DarkLair
int QueryUpdateDarkLairResult( TQUpdateDarkLairResult* pQ, TAUpdateDarkLairResult* pA );
int QueryGetDarkLairPersonalBest( TQUpdateDarkLairResult* pQ, TAUpdateDarkLairResult* pA, int iIdx );
int QueryGetListDarkLairTopRanker( TQGetDarkLairRankBoard* pQ, TAGetDarkLairRankBoard* pA );
#if defined( PRE_ADD_SECONDARY_SKILL )
// 보조 스킬
int QueryAddSecondarySkill( TQAddSecondarySkill* pQ );
int QueryDelSecondarySkill( TQDelSecondarySkill* pQ );
int QueryGetListSecondarySkill( TQGetListSecondarySkill* pQ, TAGetListSecondarySkill* pA );
int QueryModSecondarySkillExp( TQModSecondarySkillExp* pQ );
int QuerySetManufactureSkillRecipe( TQSetManufactureSkillRecipe* pQ );
int QueryExtractManufactureSkillRecipe( TQExtractManufactureSkillRecipe* pQ );
int QueryDelManufactureSkillRecipe( TQDelManufactureSkillRecipe* pQ );
int QueryGetListManufactureSkillRecipe( TQGetListManufactureSkillRecipe* pQ, TAGetListManufactureSkillRecipe* pA );
int QueryModManufactureSkillRecipe( TQModManufactureSkillRecipe* pQ );
#endif // #if defined( PRE_ADD_SECONDARY_SKILL )
// 농장
int QueryGetListFarm( TQGetListFarm* pQ, TAGetListFarm* pA );
int QueryGetListField( TQGetListField* pQ, TAGetListField* pA );
int QueryGetListFieldByCharacter( TQGetListFieldByCharacter* pQ, TAGetListFieldByCharacter* pA );
int QueryAddField( TQAddField* pQ, TAAddField* pA );
int QueryDelField( TQDelField* pQ, TADelField* pA );
int QueryAddFieldAttachment( TQAddFieldAttachment* pQ, TAAddFieldAttachment* pA );
int QueryModFieldElapsedTime( TQModFieldElapsedTime* pQ, TAModFieldElapsedTime* pA );
int QueryHarvest( TQHarvest* pQ, TAHarvest* pA );
int QueryGetListHarvestDepotItem( TQGetListHarvestDepotItem* pQ, TAGetListHarvestDepotItem* pA );
int QueryGetCountHarvestDepotItem( TQGetCountHarvestDepotItem* pQ, TAGetCountHarvestDepotItem* pA );
int QueryGetFieldCountByCharacter( TQGetFieldCountByCharacter* pQ, TAGetFieldCountByCharacter* pA );
int QueryGetFieldItemCount( TQGetFieldItemCount* pQ, TAGetFieldItemCount* pA );
int QueryGetListFieldForCharacter( TQGetListFieldForCharacter* pQ, TAGetListFieldForCharacter* pA );
int QueryAddFieldForCharacter( TQAddField* pQ, TAAddField* pA );
int QueryDelFieldForCharacter( TQDelFieldForCharacter* pQ, TADelFieldForCharacter* pA );
int QueryAddFieldForCharacterAttachment( TQAddFieldAttachment* pQ, TAAddFieldAttachment* pA );
int QueryModFieldForCharacterElapsedTime( TQModFieldForCharacterElapsedTime* pQ, TAModFieldForCharacterElapsedTime* pA );
int QueryHarvestForCharacter( TQHarvest* pQ, TAHarvest* pA );
int QueryDeletePeriodQuestList( TQDeletePeriodQuest* pQ, TADeletePeriodQuest* pA );
int QueryGetPeriodQuestDate( TQGetPeriodQuestDate* pQ, TAGetPeriodQuestDate* pA );
int QueryGetListCompleteEventQuest(TQGetListCompleteEventQuest * pQ, TAGetListCompleteEventQuest * pA);
int QueryCompleteEventQuest(TQCompleteEventQuest* pQ, TACompleteEventQuest* pA);
int QueryGetWorldEventQuestCounter(TQGetWorldEventQuestCounter* pQ, TAGetWorldEventQuestCounter* pA);
int QueryModWorldEventQuestCounter(TQModWorldEventQuestCounter* pQ, TAModWorldEventQuestCounter* pA);
int QueryGetConnectDuration(INT64 biCharacterDBID, TTimeEventGroup &TimeEventGroup);
int QuerySaveConnectDurationTime(TQSaveConnectDurationTime *pQ);
int QueryModTimeEventDate( TQModTimeEventDate* pQ );
#ifdef PRE_ADD_CHANGEJOB_CASHITEM
int QueryChangeJobCode( INT64 biCharacterDBID, int nCannelID, int nMapID, int nFirstJobIDBefore, int nFirstJobIDAfter,
int nSecondJobIDBefore, int nSecondJobIDAfter, int nJobCodeChangeCode, OUT USHORT& wSkillPoint, OUT USHORT& wTotalSkillPoint ); // 전직 아이템 사용 - P_ChangeJobCode
#endif // #ifdef PRE_ADD_CHANGEJOB_CASHITEM
int QueryGetListVariableReset( TQGetListVariableReset* pQ, TAGetListVariableReset* pA );
int QueryModVariableReset( TQModVariableReset* pQ );
#if defined(PRE_ADD_HEARTBEAT_TO_SQL)
int QueryHeartbeat();
#endif //#if defined(PRE_ADD_HEARTBEAT_TO_SQL)
int QueryGetListRepurchaseItem( TQGetListRepurchaseItem* pQ, TAGetListRepurchaseItem* pA );
int QueryGetPageGuildRecruit( TQGetGuildRecruit* pQ, TAGetGuildRecruit* pA );
int QueryGetPageGuildRecruitCharacter( TQGetGuildRecruitCharacter* pQ, TAGetGuildRecruitCharacter* pA );
int QueryMyGuildRecruit( TQGetMyGuildRecruit* pQ, TAGetMyGuildRecruit* pA );
int QueryGuildRecruitRequestCount( TQGetGuildRecruitRequestCount* pQ, TAGetGuildRecruitRequestCount* pA );
int QueryRegisterInofGuildRecruit( TQRegisterInfoGuildRecruit* pQ, TARegisterInfoGuildRecruit* pA );
int QueryRegisterOnGuildRecruit( TQRegisterOnGuildRecruit* pQ );
int QueryRegisterModGuildRecruit( TQRegisterModGuildRecruit* pQ );
int QueryRegisterOffGuildRecruit( TQRegisterOffGuildRecruit* pQ );
int QueryGuildRecruitRequestOn( TQGuildRecruitRequestOn* pQ );
int QueryGuildRecruitRequestOff( TQGuildRecruitRequestOff* pQ );
int QueryGuildRecruitAcceptOn( TQGuildRecruitAcceptOn* pQ, TAGuildRecruitAcceptOn* pA );
int QueryGuildRecruitAcceptOff( TQGuildRecruitAcceptOff* pQ, TAGuildRecruitAcceptOff* pA );
int QueryDelGuildRecruit( TQDelGuildRecruit* pQ );
#if defined (PRE_ADD_DONATION)
int QueryDonate(TQDonate* pQ);
int QueryDonationRanking(TQDonationRanking* pQ, OUT TADonationRaking& Ack);
int QueryDonationTopRanker(TQDonationTopRanker* pQ, OUT TADonationTopRanker& Ack);
#endif // #if defined (PRE_ADD_DONATION)
#if defined( PRE_PARTY_DB )
int QueryAddParty( TQAddParty* pQ, TAAddParty* pA );
int QueryAddPartyAndMemberGame( TQAddPartyAndMemberGame* pQ, TAAddPartyAndMemberGame* pA );
int QueryAddPartyAndMemberVillage( TQAddPartyAndMemberVillage* pQ, TAAddPartyAndMemberVillage* pA );
int QueryModParty( TQModParty* pQ );
int QueryDelParty( TQDelParty* pQ );
int QueryDelPartyForServer( TQDelPartyForServer* pQ );
int QueryJoinParty( TQJoinParty* pQ );
int QueryOutParty( TQOutParty* pQ, TAOutParty* pA );
int QueryGetListParty( TQGetListParty* pQ, std::vector<Party::Data>& vData );
#if defined( PRE_WORLDCOMBINE_PARTY )
int QueryGetListParty( int iWorldSetID, ePartyType PartyType, std::vector<Party::Data>& vData );
#endif // #if defined( PRE_WORLDCOMBINE_PARTY )
int QueryGetListPartyMember( TQGetListPartyMember* pQ, TAGetListPartyMember* pA, std::vector<Party::MemberData>& vData );
int QueryModPartyLeader( TQModPartyLeader* pQ );
#if defined( PRE_ADD_NEWCOMEBACK )
int QueryModPartyMemberComeback( TQModPartyMemberComeback* pQ );
#endif
#endif // #if defined( PRE_PARTY_DB )
#if defined( PRE_ADD_DOORS_PROJECT )
int QuerySaveCharacterAbility(TQSaveCharacterAbility* pQ);
#endif // #if defined( PRE_ADD_DOORS_PROJECT )
#if defined (PRE_ADD_BESTFRIEND)
int QueryGetBestFriend(TQGetBestFriend* pQ, TAGetBestFriend* pA);
int QueryRegistBestFriend(TQRegistBestFriend* pQ, TARegistBestFriend* pA);
int QueryCancelBestFriend(TQCancelBestFriend* pQ, TACancelBestFriend* pA);
int QueryCloseBestFriend(TQCloseBestFriend* pQ, TACloseBestFriend* pA);
int QueryEditBestFriendMemo(TQEditBestFriendMemo* pQ, TAEditBestFriendMemo* pA);
#endif
#if defined( PRE_PRIVATECHAT_CHANNEL )
int QueyrGetPrivateChatChannelInfo(TQPrivateChatChannelInfo* pQ, std::vector<TPrivateChatChannelInfo>& vData);
int QueyrGetPrivateChatChannelMember(TQPrivateChatChannelMember* pQ, TAPrivateChatChannelMember* pA);
int QueyrAddPrivateChatChannel(TQAddPrivateChatChannel* pQ, TAAddPrivateChatChannel* pA);
int QueyrAddPrivateChatChannelMember(TQAddPrivateChatMember* pQ);
int QueyrInvitePrivateChatChannelMember(TQInvitePrivateChatMember* pQ);
int QueyrEnterPrivateChatChannelMember(TQAddPrivateChatMember* pQ);
int QueyrDelPrivateChatChannelMember(TQDelPrivateChatMember* pQ);
int QueyrExitPrivateChatChannelMember(TQDelPrivateChatMember* pQ);
int QueyrModPrivateChatChannelInfo(TQModPrivateChatChannelInfo* pQ);
int QueyrModPrivateMemberServerID(TQModPrivateChatMemberServerID* pQ);
int QueyrDelPrivateMemberServerID(TQDelPrivateChatMemberServerID* pQ, std::list<TPrivateMemberDelServer> &Member);
#endif
#ifdef PRE_ADD_DOORS
int QueryCancelDoorsAuthentication(UINT nAccountDBID);
#endif //#ifdef PRE_ADD_DOORS
#if defined( PRE_ADD_NEWCOMEBACK )
int QueryCheckCombackEffectItem( INT64 biCharacterDBID, int nItemID );
#endif
#if defined( PRE_ALTEIAWORLD_EXPLORE )
int QueryResetAlteiaWorldEvent( TQResetAlteiaWorldEvent* pQ );
int QueryAddAlteiaWorldPlayResult( TQADDAlteiaWorldPlayResult* pQ );
int QueryGetAlteiaWorldInfo( TQGetAlteiaWorldInfo* pQ, TAGetAlteiaWorldInfo* pA );
int QueryGetAlteiaWorldPrivateGoldKeyRank( TQGetAlteiaWorldRankInfo* pQ, TAGetAlteiaWorldPrivateGoldKeyRank* pA );
int QueryGetAlteiaWorldPrivatePlayTimeRank( TQGetAlteiaWorldRankInfo* pQ, TAGetAlteiaWorldPrivatePlayTimeRank* pA );
int QueryGetAlteiaWorldGuildGoldKeyRank( TQGetAlteiaWorldRankInfo* pQ, TAGetAlteiaWorldGuildGoldKeyRank* pA );
int QueryGetAlteiaWorldSendTicketList( TQGetAlteiaWorldSendTicketList* pQ, TAGetAlteiaWorldSendTicketList* pA );
int QueryAddAlteiaWorldSendTicketList( TQAddAlteiaWorldSendTicketList* pQ );
int QueryResetAlteiaWorldPlayAlteia( TQResetAlteiaWorldPlayAlteia* pQ );
int QueryAddAlteiaWorldEvent( TQAddAlteiaWorldEvent* pQ );
#endif // #if defined( PRE_ALTEIAWORLD_EXPLORE )
#if defined( PRE_ADD_STAMPSYSTEM )
int QueryGetListCompleteChallenges( TQGetListCompleteChallenges* pQ, TAGetListCompleteChallenges* pA );
int QueryInitCompleteChallenge( TQInitCompleteChallenge* pQ );
int QueryAddCompleteChallenge( TQAddCompleteChallenge* pQ );
#endif // #if defined( PRE_ADD_STAMPSYSTEM )
#if defined(PRE_ADD_CHNC2C)
int QueryGetGameMoney(TQGetGameMoney* pQ, TAGetGameMoney* pA);
int QueryKeepGameMoney(TQKeepGameMoney* pQ);
int QueryTransferGameMoney(TQTransferGameMoney* pQ);
#endif //#if defined(PRE_ADD_CHNC2C)
#if defined(PRE_ADD_CP_RANK)
int QueryAddStageClearBest(TQAddStageClearBest* pQ);
int QueryGetStageClearBest(TQGetStageClearBest* pQ, TAGetStageClearBest* pA);
int QueryGetStageClearPersonalBest(TQGetStageClearPersonalBest* pQ, TAGetStageClearPersonalBest* pA);
int QueryInitStageClearBest(char cInitType);
#endif //#if defined(PRE_ADD_CP_RANK)
#if defined(PRE_ADD_DWC)
int QueryAddDWCTeam(TQCreateDWCTeam* pQ, TACreateDWCTeam* pA);
int QueryAddDWCTeamMember(TQAddDWCTeamMember* pQ, TAAddDWCTeamMember* pA);
int QueryDelDWCTeamMember(TQDelDWCTeamMember* pQ, TADelDWCTeamMember* pA);
//int QueryGetDWCTeamInfo(TQGetDWCTeamInfo* pQ, TAGetDWCTeamInfo* pA);
int QueryGetDWCTeamInfo(INT64 biCharacterDBID, UINT* pTeamID, TDWCTeam* Info);
int QueryGetDWCTeamInfoByTeamID(UINT nTeamID, UINT* pTeamID, TDWCTeam* Info);
int QueryGetDWCTeamMemberList(UINT nDWCTeamID, std::vector<TDWCTeamMember>& vTeamMember);
int QueryAddDWCResult( TQAddPvPDWCResult* pQ, TAAddPvPDWCResult* pA );
int QueryGetDWCRankList(TQGetDWCRankPage* pQ, TAGetDWCRankPage * pA);
int QueryGetDWCFindRank(TQGetDWCFindRank* pQ, TAGetDWCFindRank * pA);
int QueryGetDWCChannelInfo(TDWCChannelInfo* pChannelInfo);
#endif
#if defined(PRE_ADD_EQUIPLOCK)
int QueryAddLockItem(TQLockItemInfo* pQ, TALockItemInfo *pA);
int QueryRequestItemUnlock(TQUnLockRequsetItemInfo* pQ, TAUnLockRequestItemInfo *pA);
int QueryUnlockItem(TQLockItemInfo* pQ);
int QueryGetListLockedItems(INT64 biCharacterDBID, TAGetListLockedItems *pA);
#endif // #if defined(PRE_ADD_EQUIPLOCK)
#if defined( PRE_PVP_GAMBLEROOM )
int QueryAddGambleRoom(TQAddGambleRoom* pQ, TAAddGambleRoom *pA);
int QueryAddGambleRoomMember(TQAddGambleRoomMember* pQ);
int QueryEndGambleRoom(TQEndGambleRoom* pQ);
#endif
private:
int _QueryAddDarkLairRanking( TQUpdateDarkLairResult* pQ, TAUpdateDarkLairResult* pA );
#if defined( PRE_PARTY_DB )
int _QueryGetListParty( std::vector<Party::Data>& vData );
#endif // #if defined( PRE_PARTY_DB )
};