Files
2026-06-01 12:46:52 +02:00

230 lines
6.1 KiB
C

#pragma once
#include "SNetMessage.h"
// { Auth Server <-> Client
const unsigned short TM_AC_RESULT = 10000;
const unsigned short TM_CA_VERSION = 10001;
const unsigned short TM_AC_RESULT_WITH_STRING = 10002; /// 2011.05.20 GNE 방식 인증 - prodongi
const unsigned short TM_CA_ACCOUNT = 10010;
const unsigned short TM_CA_OTP_ACCOUNT = 10011;
const unsigned short TM_CA_IMBC_ACCOUNT = 10012; ///< floyd 3.11.1 iMBC 채널링 구현
const unsigned short TM_CA_RUSSIA_SID = 10013;
const unsigned short TM_AC_ACCOUNT_INFO = 10014;
const unsigned short TM_CA_SERVER_LIST = 10021;
const unsigned short TM_AC_SERVER_LIST = 10022;
const unsigned short TM_CA_SELECT_SERVER = 10023;
const unsigned short TM_AC_SELECT_SERVER = 10024;
const unsigned short TM_AC_UPDATE_PENDING_TIME = 10025;
// }
//////////////////////////////////////////////////////////////////
// 업로드서버
const unsigned short TM_CU_LOGIN = 50005;
const unsigned short TM_UC_LOGIN_RESULT = 50006;
const unsigned short TM_CU_UPLOAD = 50007;
const unsigned short TM_UC_UPLOAD = 50008;
//////////////////////////////////////////////////////////////////
#pragma pack( 1 )
struct TS_AC_RESULT : TS_MESSAGE
{
TS_AC_RESULT( unsigned short _request_msg_id, unsigned short _result, int _value ) : request_msg_id( _request_msg_id ), result( _result ), value( _value )
{
size = sizeof( *this );
id = TM_AC_RESULT;
set_check_sum();
}
unsigned short request_msg_id;
unsigned short result;
/** 1: 1이면 eula accept 함. 0이면 eula창 띄워야 함.
2: 1이면 경고창 띄움. 0이면 안 띄움. */
int value;
};
/// 2011.05.20 GNE 방식 인증 - prodongi
struct TS_AC_RESULT_WITH_STRING : TS_MESSAGE
{
TS_AC_RESULT_WITH_STRING( unsigned short _request_msg_id, unsigned short _result, int _value )
: request_msg_id( _request_msg_id ), result( _result ), value( _value ), strSize( 0 )
{
size = sizeof( *this );
id = TM_AC_RESULT_WITH_STRING;
set_check_sum();
}
unsigned short request_msg_id;
unsigned short result;
int value;
int strSize;
// 이하해당스트링날아옴
};
struct TS_CA_VERSION : TS_MESSAGE
{
TS_CA_VERSION() _INIT( TM_CA_VERSION )
char szVersion[20];
};
struct TS_CA_ACCOUNT : TS_MESSAGE
{
TS_CA_ACCOUNT() _INIT( TM_CA_ACCOUNT )
char account[GameRule::MAX_ACCOUNT_LEN + 1];
size_t password_en_len;
char password[GameRule::MAX_ACCOUNT_LEN + GameRule::MAX_CRYPTO_BLOCK_LEN + 1];
// 이후 아래와 같은 struct들이 줄줄이 따라 붙음
struct AdditionalInfo {
char type; // AdditionalInfoType enum이들어감
unsigned short size;
// 뒤로 data[size]가 붙어 날아 옴
};
enum AdditionalInfoType {
BLACKBOX,
MACADDRESS,
};
};
/// 대만 OTP 사용 한 웹 로그인
struct TS_CA_OTP_ACCOUNT : TS_MESSAGE
{
TS_CA_OTP_ACCOUNT() _INIT( TM_CA_OTP_ACCOUNT )
char account[ GameRule::MAX_ACCOUNT_LEN + 1 ]; // #2.1.12
size_t otp_en_len;
char OTP[48 + GameRule::MAX_CRYPTO_BLOCK_LEN];
};
/// floyd 3.11.1 iMBC 채널링 구현
struct TS_CA_IMBC_ACCOUNT : TS_MESSAGE
{
TS_CA_IMBC_ACCOUNT() _INIT( TM_CA_IMBC_ACCOUNT )
char account[ GameRule::MAX_ACCOUNT_LEN + 1 ]; ///< #2.1.12 // 실제 계정 이름 뒤에 5바이트 여유 필요(최대 MAX_ACCOUNT_LEN - 5 길이 사용 가능)
size_t password_en_len;
char password[48 + GameRule::MAX_CRYPTO_BLOCK_LEN];
};
struct TS_CA_RUSSIA_SID : TS_MESSAGE
{
TS_CA_RUSSIA_SID() _INIT( TM_CA_RUSSIA_SID )
size_t sid_en_len;
char sid[ GameRule::MAX_ACCOUNT_LEN + GameRule::MAX_CRYPTO_BLOCK_LEN];
};
struct TS_AC_ACCOUNT_INFO : TS_MESSAGE
{
TS_AC_ACCOUNT_INFO() _INIT( TM_AC_ACCOUNT_INFO )
char account[GameRule::MAX_ACCOUNT_LEN + 1];
int user_no;
};
struct TS_CA_SERVER_LIST : TS_MESSAGE
{
TS_CA_SERVER_LIST() _INIT( TM_CA_SERVER_LIST )
};
struct TS_CA_SELECT_SERVER : TS_MESSAGE
{
TS_CA_SELECT_SERVER() _INIT( TM_CA_SELECT_SERVER )
unsigned short server_idx;
};
struct TS_AC_SELECT_SERVER : TS_MESSAGE
{
TS_AC_SELECT_SERVER() _INIT( TM_AC_SELECT_SERVER )
unsigned short result;
size_t one_time_key_en_len;
unsigned char one_time_key[sizeof( __int64 ) + GameRule::MAX_CRYPTO_BLOCK_LEN];
AR_TIME pending_time;
};
const unsigned short TM_CS_ACCOUNT_WITH_AUTH = 2005;
struct TS_CS_ACCOUNT_WITH_AUTH : TS_MESSAGE
{
TS_CS_ACCOUNT_WITH_AUTH() _INIT( TM_CS_ACCOUNT_WITH_AUTH )
char account[ GameRule::MAX_ACCOUNT_LEN + 1 ]; // #2.1.12
__int64 one_time_key;
};
struct TS_SERVER_INFO
{
unsigned short server_idx;
char server_name[21];
bool is_adult_server;
char server_screenshot_url[256];
char server_ip[16];
int server_port;
unsigned short user_ratio;
};
struct TS_AC_SERVER_LIST : TS_MESSAGE
{
TS_AC_SERVER_LIST() _INIT( TM_AC_SERVER_LIST )
unsigned short last_login_server_idx;
unsigned short count;
// 이 아래로 TS_SERVER_INFO 들이 붙게 됨
};
struct TS_AC_UPDATE_PENDING_TIME : TS_MESSAGE
{
TS_AC_UPDATE_PENDING_TIME() _INIT( TM_AC_UPDATE_PENDING_TIME )
AR_TIME pending_time;
};
struct TS_CU_LOGIN : TS_MESSAGE
{
TS_CU_LOGIN() _INIT( TM_CU_LOGIN )
int client_id;
int account_id;
int guild_id;
int one_time_password;
char raw_server_name[32];
};
struct TS_UC_LOGIN_RESULT : TS_MESSAGE
{
TS_UC_LOGIN_RESULT() _INIT( TM_UC_LOGIN_RESULT )
unsigned short result;
};
struct TS_CU_UPLOAD : TS_MESSAGE
{
TS_CU_UPLOAD() _INIT( TM_CU_UPLOAD )
int file_length;
};
struct TS_UC_UPLOAD : TS_MESSAGE
{
TS_UC_UPLOAD() _INIT( TM_UC_UPLOAD )
unsigned short result;
};
#pragma pack()