#pragma once #if !defined(DNPRJSAFE) #include "DNPrjSafe.h" #endif // DNPRJSAFE #include "DNProtocol.h" #include "DNUserData.h" #include "DNServerProtocol.h" #include "DNServerPacketVillage.h" #include "SMVersion.h" /*-------------------------------------------------------------------------- Server ³»¿¡¼­ »ç¿ëÇÏ´Â Protocol, Packet => ÆÄÀÏÀÌ ±æ¾îÁ®¼­ DNServerProtocol.h ¶û ºÐ¸®½ÃÅ´ 090218 => ´õ ±æ¾îÁ®¼­ ÀÌÁ¦ ¼­¹öº°·Î ºÐ¸® ¤»¤» 100124 (db, game, login, master, village¿Ü¿¡ °Íµé¸¸ À̰÷¿¡) --------------------------------------------------------------------------*/ #pragma pack(push, 1) //------------------------------------------------- // ServiceManager <-> NetLauncher or Service //------------------------------------------------- struct sServiceState { int nSID; int nManagedLauncherID; int nServiceSessionID; int nState; //eServiceState TCHAR szType[NAMELENMAX]; ULONG nLastReportTick; char szVersion[NAMELENMAX]; char szResource[32]; BYTE cWorldIDs[WORLDCOUNTMAX]; ULONG nCreateTime; bool bFinalBuild; bool bIsReConnect; //ÀçÁ¢ ½ÃµµÀ» 1¹ø¸¸ Çã¿ëÇϱâ À§ÇØ Ãß°¡ void Init() { nServiceSessionID = 0; nLastReportTick = 0; nState = _SERVICE_STATE_OFFLINE; memset(szVersion, 0, sizeof(szVersion)); memset(szResource, 0, sizeof(szResource)); nCreateTime = 0; bFinalBuild = false; bIsReConnect = false; } }; struct TNetResult //NETSERVICE_RESULT { char cAssingedType[MANAGEDMAX]; WCHAR szBaseUrl[MAX_PATH]; WCHAR szPatchUrl[MAX_PATH]; }; struct TRunProcess //NETSERVICE_RUN_PROCESS { int nSID; }; struct TTerminateProcess // NETSERVICE_TERMINATE_PROCESS { int nSID; bool bRestart; }; struct TPatch //NETSERVICE_PATCH { int nPatchResLevel; int nPatchID; WCHAR szKey[64]; }; struct TPatchUrl //NETSERVICE_PATCH_BYURL { int nPatchID; WCHAR szKey[64]; bool bOnlyUseURL; WCHAR szDest[64]; short nLen; char szUrl[1024]; }; struct TInfoCopy //NETSERVICE_INFOCOPY { bool bNeed; }; struct TReturnPing //NETSERVICE_RETURN_PING { int nIdx; ULONG nTick; }; struct TServiceConnected //NETSERVICE_CONNECTED { int nSessionID; }; struct TServiceNotice //NETSERVICE_NOTICE { int nNoticeType; //eSMNoticeType int nManagedID; int nChannelID; int nMapIdx; int nSlideShowSec; //¸îÃʵ¿¾È ½½¶óÀÌµå °øÁö(Àü±¤ÆÇ....-_-;?) ÀÌ °ªÀÌ 0 ÀÌ»óÀ̸é Àü±¤ÆÇÀÌ´Ù USHORT nLen; WCHAR wszMsg[CHATLENMAX]; }; struct TServiceChannelControl //NETSERVICE_CHANNEL_CONTROL { int nChannelID; BYTE cVisibility; int nChannelPopulation; }; struct TServicePopulationControl //NETSERVICE_POPULATION_CONTROL { int nServerType; int nManagedID; BYTE cZeroPopulation; //Àα¸¼ö Á¶Àý }; struct TServiceAffinityControl //NETSERVICE_AFFINITY_CONTROL { int nManagedID; BYTE cAffinityType; }; struct TServiceUserRestraint //NETSERVICE_USERRESTRAINT { UINT nAccountDBID; }; struct TServiceUserBan //NETSERVICE_USERBAN { eBanFileType eType; UINT nAccountDBID; WCHAR wszName[NAMELENMAX]; }; struct TServiceWordlMaxUser //NETSERVICE_WORLDMAXUSER { UINT nChangeMaxUser; }; struct TServiceSelectjoin //NETSERVICE_SELECTJOIN { int nSID; WCHAR wszCharacterName[NAMELENMAX]; }; struct TScheduleServiceClose //NETSERVICE_SCHEDULE_SERVERCLOSE { __time64_t _tOderedTime; __time64_t _tCloseTime; }; struct TUpdateFarm //NETSERVICE_UPDATEFARM { int nWorldID; bool bForceStart; }; struct TExtReload //NETSERVICE_EXTRELOAD { int nType; }; struct TUPdateGuildWare //NETSERVICE_UPDATEGUILDWARE { int nGuildID; }; struct TCreateDB //NETSERVICE_CREATEWORLDDB { int nWorldID; }; struct TReloadGuildwarSchedule //NETSERVICE_RELOADGUILDWARSCHEDULE { int nWorldID; }; struct TChangeLimitItemMax //NETSERVICE_LIMITEITEM_CHANGEQUANTITY { int nSN; int nLimiteMax; }; struct TServiceStartManage //NETSERVICE_STARTOF_MANAGING { bool bOther; }; struct TServiceManaging //NETSERVICE_MANAGING { int nSID; BYTE cCreateCount; BYTE cCreateIndex; USHORT nCmdSize; char szCmd[EXCUTELENMAX + EXCUTECMDMAX]; }; struct TPatcherSrevicePatchState //PATCHERSERVICE_PATCHSTATE { BYTE cState; // 0 fail, otherwise success }; struct TServerManagedList //SERVICE_LAUNCHER_PROCESS_LIST { BYTE cCount; int nListArr[255]; }; struct TServerProcessState //SERVICE_LAUNCHER_PROCESS_STATE { BYTE cPatch; char szState[256]; }; struct TServerEsmState { char szState[256]; }; struct TServiceLauncherVersion //SERVICE_LAUNCHER_VERSION { char szVersion[SERVERVERSIONMAX]; }; struct TPatchState //SERVICE_LAUNCHER_PATCH_STATE { bool bFlag; int nPatchID; BYTE cLenState; BYTE cLenKey; char szState[128]; }; struct TPatchProgress //SERVICE_LAUNCER_PATCH_DATA_PROGRESS { ULONG progress; ULONG progressMax; BYTE keyLen; WCHAR key[32]; }; struct TUnzipProgress { ULONG progress; ULONG progressMax; short len; WCHAR filename[MAX_PATH + 1]; }; struct TSendPing // SERVICE_LAUNCHER_PING { char szPublicIP[IPLENMAX]; }; struct TRunBatch { int nBatchID; }; struct TRunBatchState { int nRet; int nBatchID; }; struct TStopBatch { int nBatchID; }; struct TStopBatchState { int nBatchID; }; struct TLiveExtCopy //SERVICE_LAUNCHER_LIVEEXTCOPY { bool bCopyRet; }; struct TServerManagedID //SERVICE_SERVER_REGIST_MANAGEDID { int nMID; int nManagedType; int nServiceID; bool bFinalBuild; char szVersion[NAMELENMAX]; char szResVersion[NAMELENMAX]; BYTE cWorldCount; BYTE cWorldID[WORLDCOUNTMAX]; }; struct TServiceReportLogin //SERVICE_SERVER_USUAL_LOGINREPORT { UINT nUserCount; }; struct TServiceReportVillage //SERVICE_SERVER_USUAL_VILLAGEREPORT { UINT nUserCount; USHORT nCount; TVillageUserReport Info[VILLAGECHANNELMAX]; }; struct TFarmStatus { int nManagedID; UINT nFarmDBID; int nFarmCurUserCount; bool bActivate; }; struct TServiceReportMaster //SERVICE_SERVER_USUAL_MASTERREPORT { int nWorldID; UINT nWaitserCount; BYTE cFarmCount; TFarmStatus FarmStatus[Farm::Max::FARMCOUNT/2]; }; struct TGameUserReport { int nMapIdx; BYTE cUserCount; }; struct TServiceReportGame //SERVICE_SERVER_USUAL_GAMEREPORT { BYTE cIsZeroPopulation; UINT nUserCount; UINT nRoomCount; UINT nTotalRoomCount; }; struct TServiceDelayedReport //SERVICE_SERVER_DELAYEDREPORT { int nManagedID; ULONG nDelayedTick; }; struct TServiceUnrecover //SERVICE_SERVER_UNRECOVERY { bool bBlock; bool bPermannently; }; struct TServiceChannelInfo //SERVICE_SERVER_CHANNELINFO { int nManagedID; int nWorldID; BYTE cCount; sChannelInfo Info[VILLAGECHANNELMAX]; }; struct TServiceWorldInfo //SERVICE_SERVER_WORLDINFO { int nWorldID; int nWorldMaxuser; }; struct TServiceMeritInfo //SERVICE_SERVER_MERITINFO { BYTE cCount; TMeritInfo Info[MERITINFOMAX]; }; struct TServerException //SERVICE_SERVER_EXCEPTION_REPORT { int nMID; int nType; }; struct TServerExtReloadResult //SERVICE_SERVER_EXT_RELOADRESULT { bool bResult; }; struct TServerLoginWorldDResult // SERVICE_SERVER_LOGIN_WORDDBRESULT { int nResult; // 0 : Success / 1:Connect / 2:Version / 3:Not Find / 4:Already Created int nWorldID; char szIp[IPLENMAX]; int nPort; }; struct TQueryDelayedReport { int nMID; DWORD dwThreadID; DWORD dwElasped; char szQueryName[QUERYNAMESIZE]; }; struct TGameDelayedReport { WCHAR wszLog[GAMEDELAYSIZE]; }; struct TQueryErrorReport { USHORT unLogType; USHORT unWorldSetID; UINT uiAccountDBID; INT64 biCharDBID; UINT uiSessionID; USHORT unServerType; USHORT unLen; WCHAR wszBuf[800]; }; struct TVillageDelayedReport { WCHAR wszLog[GAMEDELAYSIZE]; }; struct TNetLauncherInfo { int nNID; WCHAR wszIP[IPLENMAX]; WCHAR wszPublicIP[IPLENMAX]; }; struct TApplyWorldPvPRoom { int nRetCode; }; struct TCreateGambleRoom { int nRoomIndex; bool bRegulation; int nGambleType; int nPrice; }; struct TStopGambleRoom { int nRetCode; }; struct TDelGambleRoom { int nRetCode; }; struct TUpdateDWCStatus { int nRetCode; }; //------------------------------------------------- // ServiceManager <-> Patcher //------------------------------------------------- struct TPatcherResult //PATCHERSERVICE_RESULT { WCHAR szBaseUrl[MAX_PATH]; WCHAR szPatchUrl[MAX_PATH]; }; //------------------------------------------------- // ServiceManager <-> Monitor //------------------------------------------------- struct TSMCheckLogin //MONITOR2MANAGER_CHECK_LOGIN { TP_SMVERSION m_Version; char szID[IDLENMAX]; char szPass[PASSWORDLENMAX]; }; struct TSMServerStructReq // MONITOR2MANAGER_SERVERSTRUCT_REQ { int nContainerVersion; }; struct TSMRealTimeReq // MONITOR2MANAGER_REALTIME_REQ { int nContainetVersion; }; struct TSMMeritInfoListReq //MONITOR2MANAGER_MERITSTRUCT_REQ { int nContainerVersion; int nLastRecvMeritID; }; struct TSMNetLauncherInfoListReq //MONITOR2MANAGER_NETLAUNCHERSTRUCT_REQ { int nContainerVersion; int nLastRecvNLID; }; struct TSMServerInfoListReq //MONITOR2MANAGER_SERVERSTRUCTDATA_REQ { int nContainerVersion; int nLastRecvSID; }; struct TSMChannelInfoListReq //MONITOR2MANAGER_CHANNELSTRUCTDATA_REQ { int nContainerVersion; int nSID; int nChannelID; }; struct TSMLoginUserCountReq //MONITOR2MANAGER_LOGINSERCOUNT_REQ { int nLastRecvLoginSID; }; struct TSMVillageUserCountReq //MONITOR2MANAGER_VILLAGESERCOUNT_REQ { INT64 uiLastRecvCHID; }; struct TSMGameUserCountReq //MONITOR2MANAGER_GAMESERCOUNT_REQ { int nLastRecvGameSID; }; struct TSMServerStateReq //MONITOR2MANAGER_SERVERSTATE_REQ { int nLastRecvSID; }; struct TSMWorldInfoReq //MONITOR2MANAGER_WORLDINFO_REQ { int nContainetVersion; }; struct TSMServiceStart //MONITOR2MANAGER_STARTSERVICE { int nStartType; //eServiceStartType BYTE cCount; int nIDs[SERVERCONTROLMAX]; //Need Value if nStartType "_SERVICE_START_EACH" & "_SERVICE_START_EACH_BY_LAUNCHERID" }; struct TSMServiceStop //MONITOR2MANAGER_STOPSERVICE { int nStopType; //eServiceStopType BYTE cCount; int nIDs[SERVERCONTROLMAX]; //Need Value if nStopType "_SERVICE_STOP_EACH" & "_SERVICE_STOP_EACH_FORCE" }; struct TSMMakeDump //MONITOR2MANAGER_MAKEDUMP { BYTE cCount; int nSID[SERVERCONTROLMAX]; }; struct sChannelControl { int nWorldID; int nChannelID; }; struct TSMChannelControl //MONITOR2MANAGER_CHANNELCONTROL { bool bVisibility; BYTE cCount; sChannelControl Control[SERVERCONTROLMAX]; }; struct TSMGameControl //MONITOR2MANAGER_GAMECONTROL { bool bClose; BYTE cCount; int nSID[SERVERCONTROLMAX]; }; struct TSMReportReq // MONITOR2MANAGER_REPORT_REQ { bool bBuild; BYTE cDays; int nPage; }; struct TChangePassword // MONITOR2MANAGER_CHANGEPASSWORD { char szUserName[NAMELENMAX]; char szPassWord[PASSWORDLENMAX]; int nMonitorLevel; }; /////////////////////////////////////////////////// struct TMSLoginResult //MANAGER2MONITOR_LOGIN_RESULT { int nRetCode; int nMonitorLevel; //eServerMonitorLevel ÂüÁ¶ int nContainerVersion; }; struct sMonitorNetLauncherInfo { int nID; WCHAR wszIP[IPLENMAX]; WCHAR wszPublicIP[IPLENMAX]; }; struct TMSNetLauncherList //MANAGER2MONITOR_NETLAUNCHERLIST { int nWholeCount; int nLastReqNLID; int nContainerVersion; BYTE cIsLast; int nRet; short nCount; sMonitorNetLauncherInfo Info[NETLAUNCHERLISTMAX]; }; struct sMonitorServerInfo { int nSID; int nManagedLauncherID; int nServerState; //eServiceState int nServerType; //eManagedType char szType[NAMELENMAX]; char szResourceRevision[32]; char szExeVersion[SERVERVERSIONMAX]; BYTE cWorldIDs[WORLDCOUNTMAX]; }; struct TMonitorServerInfoList //MANAGER2MONITOR_SERVERINFO_LIST { int nWholeCount; int nLastReqSID; int nContainerVersion; BYTE cIsLast; int nRet; short nCount; sMonitorServerInfo Info[SERVERINFOCOUNTMAX]; }; struct sMonitorChannelMeritInfo { int nID; int nMinLevel; int nMaxLevel; int nMeritType; int nExtendValue; }; struct TMSMeritList //MANAGER2MONITOR_MERITLIST { int nWholeCount; //Àüüī¿îÆ® int nLastReqMeritID; int nContainerVersion; BYTE cIsLast; int nRet; short nCount; sMonitorChannelMeritInfo Info[MERITINFOMAX]; }; struct sMonitorChannelInfo { int nSID; int nWorldID; UINT nChannelID; UINT nMapIdx; USHORT nMaxUserCount; int nChannelAttribute; WCHAR wszMapName[MAPNAMELENMAX]; }; struct TMSMonitorChannelList //MANAGER2MONITOR_CHANNELINFO_LIST { int nWholeCount; INT64 nLastReqCHID; int nContainerVersion; BYTE cIsLast; int nRet; short nCount; sMonitorChannelInfo Info[VILLAGECHANNELMAX]; }; struct TMSUpdateNotice //MANAGER2MONITOR_UPDATE_NOTICE { int nNoticeType; //eServerMonitorNotice int nContainerVersion; }; struct sServerStateInfo { int nSID; int nServerState; //eServiceState }; struct TMSServerStateUpdate : public sServerStateInfo //MANAGER2MONITOR_UPDATE_SERVERSTATE { int nServerException; //eExceptionRepert char szDetail[128]; //reserve }; struct TMSServerDealyReq // MANAGER2MONITOR_SERVER_DEALYINFO_REQ { int nType; int nSID; }; struct TMSServerDealyInfo // MANAGER2MONITOR_SERVER_DEALYINFO { int nType; int nCount; int nMIDs[SERVICEMANAGER_SERVERDEALY_SIZE]; }; struct sMonitorWorldInfo { int nWorldID; int nWorldMaxUser; WCHAR wszWorldName[WORLDNAMELENMAX]; }; struct TMSWorldInfo //MANAGER2MONITOR_WORLDINFO_RESULT { int nRet; BYTE cCount; sMonitorWorldInfo WorldInfo[WORLDCOUNTMAX]; }; struct sUserCountInfo { int nSID; int nUserCount; short nRoomCount; }; struct TMSLoginUserCount //MANAGER2MONITOR_LOGIN_UPDATEINFO { int nWholeCount; int nLastReqLoginSID; BYTE cIsLast; short nCount; sUserCountInfo Update[LOGINCOUNTMAX]; }; struct sChannelUpdateInfo : public TVillageUserReport { int nSID; short nMeritBonusID; int nLimitLevel; bool bVisibility; bool bShow; int nServerID; CHAR cThreadID; }; struct sVillageUserInfo : public sUserCountInfo { BYTE cChannelCount; sChannelUpdateInfo Info[VILLAGECHANNELMAX]; }; struct TMSVillageUserCount //MANAGER2MONITOR_VILLAGE_UPDATEINFO { int nWholeCount; INT64 uiLastReqCHID; BYTE cIsLast; BYTE cCount; sChannelUpdateInfo Update[VILLAGECHANNELMAX]; }; struct sGameUserInfo : public sUserCountInfo { BYTE cIsOpened; int nTotalRoomCount; }; struct TMSGameUserCount //MANAGER2MONITOR_GAME_UPDATEINFO { int nWholeCount; int nLastReqGameSID; BYTE cIsLast; short nCount; sGameUserInfo Update[GAMECOUNTMAX]; }; struct TMSFarmUserCount // MANAGER2MONITOR_FARM_UPDATEINFO { short nCount; TFarmStatus Update[Farm::Max::FARMCOUNT]; }; struct TMSServerStateList //MANAGER2MONITOR_SERVERSTATE_LIST { int nWholeCount; int nLastReqSID; BYTE cIsLast; short nCount; sServerStateInfo State[STATECOUNTMAX]; }; struct TMSOperatingResult //MANAGER2MONITOR_OPERATING_RESULT { int nCmd; //¿äûÇϽЏí·É int nRet; //¿¡ ´ëÇÑ ¸®ÅϹë·ù }; struct TMSReportReslut { int nPage; int nMaxPage; bool bEnd; wchar_t szReport[SERVICEMANAGER_REPORT_SIZE + 1]; }; //------------------------------------------------- // Log Packet //------------------------------------------------- const int LOGPARAMSIZEMAX = 1024; struct TLog { UINT nAccountDBID; INT64 biCharacterDBID; UINT nSessionID; char cWorldID; int nLogType; short wTotalParamCount; short wParamSize; char szParam[LOGPARAMSIZEMAX]; }; struct TLogFile { USHORT unLogType; USHORT unWorldSetID; int nServerID; UINT uiAccountDBID; INT64 biCharDBID; UINT uiSessionID; USHORT unServerType; USHORT unLen; WCHAR wszBuf[1024]; }; //------------------------------------------------- // Auth Packet (Nexon) //------------------------------------------------- struct TAuthHeader { BYTE cHeader; // 0xAA °íÁ¤ USHORT wLength; // 65536±îÁö }; #pragma pack(pop)