356 lines
9.2 KiB
C++
356 lines
9.2 KiB
C++
#pragma once
|
|
|
|
#include "PacketStruct.h"
|
|
#include "PublicStruct.h"
|
|
#include "Protocol_SMA.h"
|
|
#include "Protocol_AT.h"
|
|
|
|
#pragma pack(push,1)
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : ? → RTT
|
|
// Description : RTT와 통신하는 프로그램은 RTT와 접속이 이루어진 후에 인증을 받아야한다.
|
|
class MSG_MO_RTTG_CERTIFY_REQ : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_CERTIFY_REQ()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_CERTIFY_REQ;
|
|
|
|
}
|
|
~MSG_MO_RTTG_CERTIFY_REQ()
|
|
{
|
|
}
|
|
|
|
DWORD dwType; // AGENTTYPE_ define을 명시한다.
|
|
};
|
|
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : ? → RTT
|
|
// Description : RTT와 통신하는 프로그램은 RTT와 접속이 이루어진 후에 인증을 받아야한다.
|
|
class MSG_MO_RTTG_CERTIFY_ANS : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_CERTIFY_ANS()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_CERTIFY_ANS;
|
|
}
|
|
~MSG_MO_RTTG_CERTIFY_ANS()
|
|
{
|
|
}
|
|
|
|
DWORD dwResult; // 0 : 인증 성공
|
|
DWORD dwType; // SERVERTYPE_ define을 명시한다.
|
|
DWORD dwUID; // 인증된 고유번호
|
|
};
|
|
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : GMS, General → RTT
|
|
// Description : 게임내 관리자 계정 목록을 요청한다.
|
|
class MSG_MO_RTTG_GAMEADMINLIST_REQ : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_GAMEADMINLIST_REQ()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_GAMEADMINLIST_REQ;
|
|
}
|
|
~MSG_MO_RTTG_GAMEADMINLIST_REQ()
|
|
{
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : RTTA → Master
|
|
// Description : 서버별 기타 통계 정보 요청
|
|
class MSG_MO_RTTG_GAMESTATISTICS_REQ : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_GAMESTATISTICS_REQ() { m_byCategory = MO_OPERATION; m_byProtocol = MO_RTTG_GAMESTATISTICS_REQ; }
|
|
~MSG_MO_RTTG_GAMESTATISTICS_REQ() { }
|
|
|
|
int GetSize() { return sizeof(MSG_MO_RTTG_GAMESTATISTICS_REQ); }
|
|
};
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : Master → RTTA
|
|
// Description : 서버별 통화량 정보 응답
|
|
class MSG_MO_RTTG_GAMESTATISTICS_ANS : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_GAMESTATISTICS_ANS() { m_byCategory = MO_OPERATION; m_byProtocol = MO_RTTG_GAMESTATISTICS_ANS; }
|
|
~MSG_MO_RTTG_GAMESTATISTICS_ANS() { }
|
|
|
|
// SERVER_KEY ServerKey;
|
|
BYTE byWorldID;
|
|
BYTE byChannelID;
|
|
BYTE byServerType;
|
|
BYTE byServerID;
|
|
|
|
ULONGLONG ui64Statitics[41]; // 전체 통계(순서는 eSTATISTICS_TYPE 참조). USERMONEY_ANS에서 보내는 내용은 채우지 않는다
|
|
};
|
|
|
|
class MSG_MO_RTTG_ABUSING_NTF : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_ABUSING_NTF() { m_byCategory = MO_OPERATION; m_byProtocol = MO_RTTG_ABUSING_NTF; }
|
|
~MSG_MO_RTTG_ABUSING_NTF() {}
|
|
|
|
#ifndef __WAVERIX_ABUSE_EXTENDED_FORMAT__
|
|
|
|
enum { MAX_DESC_LENGTH = 255, };
|
|
|
|
DWORD64 m_dw64Time; // time - GetDateTime_YYMMDDHHMM()의 값을 사용한다
|
|
OLD_SERVER_KEY m_ServerKey; // server
|
|
DWORD m_dwUserGuid; // user guid
|
|
DWORD m_dwCharGuid; // char guid
|
|
BYTE m_byAbuseType; // type
|
|
BYTE m_byLength; // desc length
|
|
TCHAR m_ptszDesc[MAX_DESC_LENGTH+1]; // desc
|
|
|
|
int GetSize() { return ( sizeof(MSG_MO_RTTG_ABUSING_NTF) - ( MAX_DESC_LENGTH - ( sizeof(TCHAR) * m_byLength ) ) ); }
|
|
|
|
#else //__WAVERIX_ABUSE_EXTENDED_FORMAT__
|
|
|
|
enum { MAX_DESC_LENGTH = 1023, };
|
|
|
|
DWORD64 m_dw64Time; // time - GetDateTime_YYMMDDHHMM()의 값을 사용한다
|
|
OLD_SERVER_KEY m_ServerKey; // server
|
|
DWORD m_dwUserGuid; // user guid
|
|
DWORD m_dwCharGuid; // char guid
|
|
TCHAR m_IP[MAX_IP_STRING_LEN+1]; // IP
|
|
BYTE m_byAbuseType; // type
|
|
WORD m_wLength; // desc length
|
|
TCHAR m_ptszDesc[MAX_DESC_LENGTH+1]; // desc
|
|
|
|
WORD GetSize() { return (WORD)( (sizeof(MSG_MO_RTTG_ABUSING_NTF) - sizeof(m_ptszDesc)) + (sizeof(TCHAR)*m_wLength) ); }
|
|
|
|
#endif //__WAVERIX_ABUSE_EXTENDED_FORMAT__
|
|
};
|
|
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : RTTA → General
|
|
// Description : 서버의 정상종료를 요청한다.
|
|
class MSG_MO_RTTG_SERVERSHUTDOWN_REQ : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_SERVERSHUTDOWN_REQ() { m_byCategory = MO_OPERATION; m_byProtocol = MO_RTTG_SERVERSHUTDOWN_REQ; }
|
|
~MSG_MO_RTTG_SERVERSHUTDOWN_REQ() {}
|
|
|
|
DWORD dwKey; // RTT 내에서 사용하는 전용필드
|
|
// SERVER_KEY m_ServerKey; // 서버키
|
|
BYTE m_byWorldID;
|
|
BYTE m_byChannelID;
|
|
BYTE m_byServerType;
|
|
BYTE m_byServerID;
|
|
__int64 i64WopsKey; // WOPS용
|
|
// DWORD dwWorldID; // 0x00 = 전체 World(dwChannelID 무시)
|
|
// DWORD dwChannelID; // 0x00 = 전체 Channel
|
|
};
|
|
|
|
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : General → RTTA
|
|
// Description : 서버 정상종료 결과를 통보한다.
|
|
class MSG_MO_RTTG_SERVERSHUTDOWN_ANS : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_SERVERSHUTDOWN_ANS() { m_byCategory = MO_OPERATION; m_byProtocol = MO_RTTG_SERVERSHUTDOWN_ANS; }
|
|
~MSG_MO_RTTG_SERVERSHUTDOWN_ANS() {}
|
|
|
|
DWORD dwKey; // RTT 내에서 사용하는 전용필드
|
|
DWORD dwError; // 0 : 완료, 1 : 에러발생
|
|
OLD_SERVER_KEY m_ServerKey; // 에러 발생의 경우, Server Key 확인
|
|
__int64 i64WopsKey; // WOPS용
|
|
};
|
|
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : RTTA → General
|
|
// Description : 패치 결과의 통보를 요청한다.
|
|
class MSG_MO_RTTG_PATCHRESULT_REQ : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_PATCHRESULT_REQ() { m_byCategory = MO_OPERATION; m_byProtocol = MO_RTTG_PATCHRESULT_REQ; }
|
|
~MSG_MO_RTTG_PATCHRESULT_REQ() {}
|
|
|
|
DWORD dwKey; // RTT 내에서 사용하는 전용필드
|
|
};
|
|
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : General → RTTA
|
|
// Description : 패치 결과를 통보한다.
|
|
class MSG_MO_RTTG_PATCHRESULT_ANS : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
static const DWORD ERROR_PATCHSUCCESS = 0x00; // 패치 성공
|
|
static const DWORD ERROR_PROCESSRUN = 0x01; // 해당 프로세스 실행중
|
|
static const DWORD ERROR_FTPCONNECT_FAIL = 0x02; // ftp 연결 오류
|
|
static const DWORD ERROR_DOWNLOAD_FAIL = 0x03; // 파일 받기 오류
|
|
static const DWORD ERROR_FILENOTFOUND = 0x04; // 패치파일 찾기 오류
|
|
|
|
|
|
|
|
public:
|
|
MSG_MO_RTTG_PATCHRESULT_ANS() { m_byCategory = MO_OPERATION; m_byProtocol = MO_RTTG_PATCHRESULT_ANS; }
|
|
~MSG_MO_RTTG_PATCHRESULT_ANS() {}
|
|
|
|
DWORD dwKey; // RTT 내에서 사용하는 전용필드
|
|
DWORD dwError; // 0 : 성공, 1 이상 : 에러값 확인
|
|
BYTE byNum;
|
|
BYTE ServerType;
|
|
BYTE byVer1; // 프로세스의 버젼
|
|
BYTE byVer2;
|
|
BYTE byVer3;
|
|
};
|
|
|
|
class MSG_MO_RTTG_ALL_SERVER_STATUS_NTF : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
enum { MAX_SERVER_COUNT = 100 };
|
|
struct ServerConnectInfo
|
|
{
|
|
OLD_SERVER_KEY m_ServerKey;
|
|
BYTE m_bConnected;
|
|
};
|
|
|
|
MSG_MO_RTTG_ALL_SERVER_STATUS_NTF() { m_byCategory = MO_OPERATION; m_byProtocol = MO_RTTG_ALL_SERVER_STATUS_NTF; }
|
|
~MSG_MO_RTTG_ALL_SERVER_STATUS_NTF() {}
|
|
|
|
BYTE m_Count;
|
|
ServerConnectInfo m_ServerConnectInfo[MAX_SERVER_COUNT];
|
|
|
|
int GetSize()
|
|
{
|
|
return sizeof(MSG_MO_RTTG_ALL_SERVER_STATUS_NTF) - (sizeof(ServerConnectInfo))*(MAX_SERVER_COUNT-m_Count);
|
|
}
|
|
};
|
|
|
|
|
|
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
|
// Redirection : AuthServer → RTT
|
|
// Description : 각 채널의 동접 수를 통지한다.
|
|
class MSG_MO_RTTG_USERCOUNT_NTF : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_USERCOUNT_NTF()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_USERCOUNT_NTF;
|
|
}
|
|
~MSG_MO_RTTG_USERCOUNT_NTF()
|
|
{
|
|
}
|
|
|
|
DWORD dwWorldID; // World 번호
|
|
DWORD dwChannelID; // Channel 번호
|
|
DWORD dwVillageCount; // 동접수(캐릭터선택+마을+필드)
|
|
DWORD dwVillagePCRoomCount; // 동접수(PC방)
|
|
DWORD dwBattleZoneCount; // 동접수(배틀존)
|
|
DWORD dwBattleZonePCRoomCount; // 동접수(PC방)
|
|
};
|
|
|
|
// 유저 접속 강제 종료 요청
|
|
class MSG_MO_RTTG_USERDISCONNECT_REQ : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_USERDISCONNECT_REQ()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_USERDISCONNECT_REQ;
|
|
}
|
|
~MSG_MO_RTTG_USERDISCONNECT_REQ()
|
|
{
|
|
}
|
|
|
|
DWORD dwUserGUID;
|
|
};
|
|
|
|
class MSG_MO_RTTG_USERDISCONNECT_ANS : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_USERDISCONNECT_ANS()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_USERDISCONNECT_ANS;
|
|
}
|
|
~MSG_MO_RTTG_USERDISCONNECT_ANS()
|
|
{
|
|
}
|
|
|
|
DWORD dwCharGUID;
|
|
};
|
|
|
|
// 기능제한 테이블 다시 읽어서 Game서버들에 Broadcast
|
|
class MSG_MO_RTTG_FUNCRESTRICT_RELOAD_CMD : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_FUNCRESTRICT_RELOAD_CMD()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_FUNCRESTRICT_RELOAD_CMD;
|
|
}
|
|
~MSG_MO_RTTG_FUNCRESTRICT_RELOAD_CMD()
|
|
{
|
|
}
|
|
};
|
|
|
|
class MSG_MO_RTTG_WAREHOUSEMONEY_REQ : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_WAREHOUSEMONEY_REQ()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_WAREHOUSEMONEY_REQ;
|
|
}
|
|
~MSG_MO_RTTG_WAREHOUSEMONEY_REQ()
|
|
{
|
|
}
|
|
};
|
|
|
|
class MSG_MO_RTTG_WAREHOUSEMONEY_ANS : public MSG_BASE_INTERNAL
|
|
{
|
|
public:
|
|
MSG_MO_RTTG_WAREHOUSEMONEY_ANS()
|
|
{
|
|
m_byCategory = MO_OPERATION;
|
|
m_byProtocol = MO_RTTG_WAREHOUSEMONEY_ANS;
|
|
}
|
|
~MSG_MO_RTTG_WAREHOUSEMONEY_ANS()
|
|
{
|
|
}
|
|
|
|
BYTE byWorldID;
|
|
BYTE byChannelID;
|
|
BYTE byServerType;
|
|
BYTE byServerID;
|
|
|
|
ULONGLONG ui64AveMoney; // 창고 평균 금액
|
|
ULONGLONG ui64TotalPlusMoney; // 창고에 들어간 돈
|
|
ULONGLONG ui64TotalMinusMoney; // 창고에서 나간 돈
|
|
};
|
|
|
|
|
|
|
|
#pragma pack(pop)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|