Files
Sun1602/Tools/SunUpdateManager/UpdateCommon/PacketStruct_SMA.h
T
2022-10-26 12:25:11 +08:00

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)