#pragma once class CDNVillageConnection; class CDNGameConnection; class CDNUser { private: UINT m_nSessionID; UINT m_nAccountDBID; INT64 m_biCharacterDBID; WCHAR m_wszAccountName[IDLENMAX]; char m_szAccountName[IDLENMAX]; // ÇǷεµ ¶§¹®¿¡ charÇüÀ¸·Î ÇѰ³´õ ¸¸µë 081211 WCHAR m_wszCharacterName[NAMELENMAX]; char m_szCharacterName[NAMELENMAX]; // ÇǷεµ ¶§¹®¿¡ charÇüÀ¸·Î ÇѰ³´õ ¸¸µë 081211 int m_nLoginServerID; // BYTE m_cPreVillageID; // STATE_CHECKVILLAGE À϶§ ¿Å±â±âÀü VillageID ã±â BYTE m_cVillageID; // villageãÀ»¶§ ¾²ÀÓ USHORT m_nChannelID; // channelÀº village¿Í Set~ USHORT m_wGameID; // Game ConãÀ»¶§ short m_nGameServerIdx; // ThreadIdx´Â Game°ú Set~ eUserState m_eUserState; // »óŰª (gameid, villageid ¼¼ÆÃÇÒ¶§ »óŰªµµ °°ÀÌ ¹Ù²ï´Ù) ULONG m_nCheckStateTick; char m_szIp[IPLENMAX]; // ÇǷεµ¶§ ÇÊ¿äÇÑ Á¢¼Ó ip 081211 char m_szVirtualIp[IPLENMAX]; // ÇǷεµ¶§ ÇÊ¿äÇÑ Á¢¼Ó ip 081211 bool m_bAdult; // ¾î¸¥ÀÎÁö ¾Æ´ÑÁö (ÇǷεµ üũ¶§¹®¿¡) bool m_bPCBang; // ¿ØÁö pcroomº¸´Ù´Â pcbangÀÌ ÁÁ´Ù! ¤»¤»¤» char m_cPCBangGrade; int m_nAccountLevel; #if defined(PRE_ADD_DWC) BYTE m_cCharacterAccountLevel; UINT m_nDWCTeamID; std::vector m_VecDWCMemberCharacterDBIDList; //ºô¸®Áö¿¡¼­ Àü¼ÛÇØÁØ Á¤º¸¸¦ µé°í ÀÖÀ½ #endif // PvP UINT m_uiPvPIndex; USHORT m_usPvPTeam; UINT m_uiPvPUserState; BYTE m_cPvPVillageID; // PvPºô¸®Áö·Î µ¹¾Æ¿Ã¶§ µ¹¾Æ¿Ã PvPVillageÁ¤º¸ USHORT m_nPvPVillageChannelID; bool m_bPvPFatigue; // ÇǷεµ ¼Ò¸ð On,Off #if defined(PRE_ADD_PVP_VILLAGE_ACCESS) LadderSystem::MatchType::eCode m_MatchType; // ·¡´õ ¸ÅġŸÀÔ ÀúÀå.. #endif #ifdef PRE_ADD_COLOSSEUM_BEGINNER PvPCommon::RoomType::eRoomType m_ePvPChannelType; #endif //#ifdef PRE_ADD_COLOSSEUM_BEGINNER #if defined(_CH) int m_nFCMOnlineMin; // online ½Ã°£(ºÐ) #endif // #if defined(_CH) #if defined(PRE_ADD_PVP_TOURNAMENT) BYTE m_cJob; #endif #if defined(PRE_ADD_GAMEQUIT_REWARD) GameQuitReward::RewardType::eType m_eUserGameQuitRewardType; #endif // #if defined(PRE_ADD_GAMEQUIT_REWARD) public: UINT m_nNexonUserNo; #if defined(_KR) INT64 m_biNexonSessionNo; char m_cPCBangResult; // eAuthResult char m_cPCBangAuthorizeType; // »ç¿ëÀÚ ip¿¡ ´ëÇÑ ÀÎÁõ°á°ú char m_cPCBangOption; // »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÖ´Â ¸Þ½ÃÁö int m_nPCBangArgument; // ±âŸ ´õ ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ ¿©±â¿¡ ÷ºÎ (ex. ½Ã°£Á¦ÀÇ °æ¿ì ³²Àº½Ã°£, Á¤¾×Á¦ÀÎ °æ¿ì ¸¸·á³¯Â¥ µîµî) bool m_bShutdowned; char m_cPolicyError; BYTE m_szMID[MACHINEIDMAX]; DWORD m_dwGRC; int m_nShutdownTime; #endif // #if defined(_KR) #if defined (_JP) && defined (WIN64) char m_szNHNNetCafeCode[NHNNETCAFECODEMAX]; // NetCafeÀÇ ÄÚµå¶ó°í ÇÕ´Ï´Ù. Çʿ䰡 »ý±æ°Å °°¾Æ¼­ ÀúÀåÇØµÒ char m_szNHNProdectCode[NHNNETCAFECODEMAX]; // NetCafeÀÇ ProductÄÚµå ¶ó°í ÇÕ´Ï´Ù. #endif // #if defined (_JP) && defined (WIN64) #if defined(_KRAZ) TShutdownData m_ShutdownData; #endif // #if defined(_KRAZ) #if defined(PRE_ADD_SENDLOGOUT) bool m_bSendLogOut; CSyncLock m_SendLogOutLock; #endif #ifdef PRE_ADD_STEAM_USERCOUNT bool m_bSteamUser; #endif //#ifdef PRE_ADD_STEAM_USERCOUNT ULONG m_nCreateTick; ///Å×½ºÆ® int m_nRoomID; TPARTYID m_VillageCheckPartyID; //¸¶½ºÅÍ¿¡¼­ ÆÄƼ´Â ¾ø½À´Ï´Ù. °ÔÀÓ¿¡¼­ ºô¸®Áö À̵¿½Ã ÀÓ½ÃÀûÀ¸·Î À¯ÁöÇÕ´Ï´Ù.(üũÀ¯Àú½Ã ÇÊ¿ä) int m_nRandomSeed; int m_nMapIndex; BYTE m_cGateNo; BYTE m_cGateSelect; int m_nDungeonClearCount; #if defined(PRE_ADD_MULTILANGUAGE) MultiLanguage::SupportLanguage::eSupportLanguage m_eSelectedLanguage; #endif //#if defined(PRE_ADD_MULTILANGUAGE) #ifdef PRE_ADD_COMEBACK bool m_bComebackUser; #endif //#ifdef PRE_ADD_COMEBACK #if defined(PRE_ADD_GAMEQUIT_REWARD) bool m_bReConnectNewbieReward; void SetUserGameQuitRewardType(GameQuitReward::RewardType::eType eType){ m_eUserGameQuitRewardType = eType;} GameQuitReward::RewardType::eType GetUserGameQuitRewardType(){ return m_eUserGameQuitRewardType; } #endif // #if defined(PRE_ADD_GAMEQUIT_REWARD) #if defined(_ID) bool m_bBlockPcCafe; // ºí·°µÈ PCÄ«Æä char m_szMacAddress[MACADDRLENMAX]; char m_szKey[KREONKEYMAX]; DWORD m_dwKreonCN; #endif #if defined(PRE_ADD_REMOTE_QUEST) std::vector m_AcceptWaitRemoteQuestList; #endif public: CDNUser(void); ~CDNUser(void); #if defined(PRE_MOD_SELECT_CHAR) bool InitUser(LOMAAddUser *pPacket, int nServerID); bool InitUser(GAMAAddUserList *pPacket); bool InitUser(VIMAAddUserList *pPacket); #else // #if defined(PRE_MOD_SELECT_CHAR) void PreInit(int nServerID, UINT nAccountDBID, int nAccountLevel, const char * pszIP); void Init(UINT nAccountDBID, UINT nSessionID, INT64 biCharacterDBID, WCHAR *pwszCharacterName, WCHAR *pwszAccountName, USHORT nChannelID, bool bAdult, char *pszIp, char *pszVirtualIp); #endif // #if defined(PRE_MOD_SELECT_CHAR) bool SetCheckVillageInfo(BYTE cVillageID, USHORT nChannelID); bool SetCheckGameInfo(USHORT nGameID, short nServerIdx); bool SetVillageInfo(BYTE cVillageID, USHORT nChannelID, bool bForce); bool SetGameInfo(USHORT nGameID, USHORT nServerIdx, bool bForce); void SetCheckReconnectLogin(); CDNVillageConnection* GetCurrentVillageConnection(); CDNGameConnection* GetCurrentGameConnection(); #if defined(_CH) && defined(_FINAL_BUILD) void FCMIDOnline(); void FCMIDOffline(); void SetFCMOnlineMin(int nOnlineMin); // online ½Ã°£(ºÐ) inline int GetFCMOnlineMin() { return m_nFCMOnlineMin; } #endif void SetSessionID(UINT nSessionID) { m_nSessionID = nSessionID; } UINT GetSessionID() { return m_nSessionID; } void SetAccountDBID(UINT nAccountDBID) { m_nAccountDBID = nAccountDBID; } UINT GetAccountDBID() { return m_nAccountDBID; } void SetCharacterDBID(INT64 biCharacterDBID) { m_biCharacterDBID = biCharacterDBID; } INT64 GetCharacterDBID() { return m_biCharacterDBID; } void SetCharacterName(const WCHAR *pwszCharacterName); WCHAR* GetCharacterName() { return m_wszCharacterName; } const char *GetChracterNameA() { return m_szCharacterName; } void SetAccountName(const WCHAR *pwszAccountName); WCHAR* GetAccountName() { return m_wszAccountName; } const char* GetAccountNameA() { return m_szAccountName; } void SetAdult(bool bAdult) { m_bAdult = bAdult; } bool IsAdult() { return m_bAdult; } void SetIp(char *pszIp); char* GetIp() { return m_szIp; } void SetVirtualIp(char *pszIp); char* GetVirtualIp() { return m_szVirtualIp; } void SetMapIndex(int nMapIndex) { m_nMapIndex = nMapIndex; } int GetMapIndex(){ return m_nMapIndex; } void SetLoginServerID(int nLoginID) { m_nLoginServerID = nLoginID; } int GetLoginServerID() { return m_nLoginServerID; } BYTE GetVillageID() { return m_cVillageID; } BYTE GetPreVillageID() { return m_cPreVillageID; } USHORT GetGameID() { return m_wGameID; } void SetChannelID(USHORT wChannelID) { m_nChannelID = wChannelID; } USHORT GetChannelID() { return m_nChannelID; } USHORT GetGameServerIdx() { return m_nGameServerIdx; } void SetUserState(eUserState eState) { m_eUserState = eState; } eUserState GetUserState() { return m_eUserState; } ULONG GetCheckStateTick() { return m_nCheckStateTick; } eLocationState GetLocationState(); void SetPCGrade(char cGrade); void SetPCBang(bool bFlag); char GetPCBangGrade(); inline bool IsPCBang() { return m_bPCBang; } inline int GetAccountLevel() { return m_nAccountLevel; } #if defined(PRE_ADD_DWC) void SetCharacterAccountLevel(BYTE cAccountLevel) { m_cCharacterAccountLevel = cAccountLevel; } inline BYTE GetCharacterAccountLevel() { return m_cCharacterAccountLevel; } UINT GetDWCTeamID(){return m_nDWCTeamID;} void SetDWCTeamInfo(VIMADWCTeamMemberList *pPacket); void GetDWCMemberList(std::vector &vecMemberList); bool AddDWCMemberList(INT64 biCharacterDBID); bool DelDWCMemberList(INT64 biCharacterDBID); void ResetDWCInfo(); #endif #if defined(_KR) void SetMachineID(BYTE *pszMID, DWORD dwGRC); #endif // #if defined(_KR) #if defined(_KRAZ) void SetShutdownData(TShutdownData &ShutdownData); #endif // #if defined(_KRAZ) // PvP bool bIsPvPVillage(); bool bIsPvPLobby(); bool bIsPvPGroupCaptain(){ return GetPvPUserState()&PvPCommon::UserState::GroupCaptain ? true : false; } BYTE GetPvPVillageID(){ return m_cPvPVillageID; } USHORT GetPvPVillageChannelID(){ return m_nPvPVillageChannelID; } void SetPvPVillageInfo(){ m_cPvPVillageID=m_cVillageID; m_nPvPVillageChannelID=m_nChannelID; } void SetPvPVillageInfo( const BYTE cVillageID, const USHORT unChannelID ){ m_cPvPVillageID=cVillageID; m_nPvPVillageChannelID=unChannelID; } UINT GetPvPIndex(){ return m_uiPvPIndex; } USHORT GetPvPTeam(){ return m_usPvPTeam; } UINT GetPvPUserState(){ return m_uiPvPUserState; } void SetPvPIndex( const UINT uiIndex ){ m_uiPvPIndex = uiIndex; } void SetPvPTeam( const USHORT usTeam ){ m_usPvPTeam = usTeam; } void SetPvPUserState( const UINT uiState ){ m_uiPvPUserState = uiState; } bool bIsObserver(){ return m_usPvPTeam == PvPCommon::Team::Observer; } int GetDungeonClearCount() {return m_nDungeonClearCount;} void SetDungeonClearCount(const int nCount) {m_nDungeonClearCount = nCount;} void SetPvPFatigue(bool bFatigue) { m_bPvPFatigue = bFatigue;}; bool GetPvPFatiue() { return m_bPvPFatigue;}; #if defined(PRE_ADD_PVP_VILLAGE_ACCESS) void SetLadderMatchType(LadderSystem::MatchType::eCode MatchType) { m_MatchType = MatchType; }; LadderSystem::MatchType::eCode GetLadderMatchType() { return m_MatchType;}; #endif #ifdef PRE_ADD_COLOSSEUM_BEGINNER void SetPvPChannelType(BYTE cType) { m_ePvPChannelType = static_cast(cType); } PvPCommon::RoomType::eRoomType GetPvPChannelType() { return m_ePvPChannelType; } #endif //#ifdef PRE_ADD_COLOSSEUM_BEGINNER #if defined(PRE_ADD_REMOTE_QUEST) void SetAcceptWaitRemoteQuest(int nAcceptWaitRemoteQuestCount, int *AcceptWaitRemoteQuestList); void GetAcceptWaitRemoteQuest(int *nAcceptWaitRemoteQuestCount, int *AcceptWaitRemoteQuestList); #endif #if defined(PRE_ADD_PVP_TOURNAMENT) void SetUserJob(BYTE cJob) { m_cJob = cJob; } BYTE GetUserJob() { return m_cJob; } #endif #if defined(PRE_ADD_GAMEQUIT_REWARD) void SetGameQuitUserReward(GameQuitReward::RewardType::eType eRewardType){ m_eUserGameQuitRewardType = eRewardType; } GameQuitReward::RewardType::eType GetGameQuitUserReward() { return m_eUserGameQuitRewardType; } #endif };