use a cleaner method to deal with duplicate 97 commands

This commit is contained in:
Martin Michelsen
2023-12-21 14:53:56 -08:00
parent d7978aa99e
commit 522c1848e1
15 changed files with 153 additions and 122 deletions
+7
View File
@@ -58,6 +58,7 @@ public:
AT_BANK_COUNTER = 0x0000000080000000,
SHOULD_SEND_ARTIFICIAL_ITEM_STATE = 0x0001000000000000,
SHOULD_SEND_ARTIFICIAL_FLAG_STATE = 0x0002000000000000,
SHOULD_SEND_ENABLE_SAVE = 0x0004000000000000,
// Cheat mode flags
SWITCH_ASSIST_ENABLED = 0x0000000100000000,
@@ -96,6 +97,9 @@ public:
Config() = default;
bool operator==(const Config& other) const = default;
bool operator!=(const Config& other) const = default;
[[nodiscard]] static inline bool check_flag(uint64_t enabled_flags, Flag flag) {
return !!(enabled_flags & static_cast<uint64_t>(flag));
}
@@ -177,6 +181,7 @@ public:
// Lobby/positioning
Config config;
Config synced_config;
int32_t sub_version;
float x;
float z;
@@ -260,6 +265,8 @@ public:
void set_license(std::shared_ptr<License> l);
void sync_config();
std::shared_ptr<ServerState> require_server_state() const;
std::shared_ptr<Lobby> require_lobby() const;
+3
View File
@@ -1765,6 +1765,9 @@ struct C_CharSaveInfo_DCv2_PC_V3_BB_96 {
// "character data was improperly saved", and will delete the character's items
// and challenge mode records. newserv (and all other unofficial servers) always
// send this command with flag == 1, which causes the client to save normally.
// If a PSO PC client receives this command multiple times during a session, the
// player will see the "character data may be damaged" message and be asked if
// they want to restore the pre-session backup data.
// Client will respond with a B1 command if header.flag is nonzero.
// 98 (C->S): Leave game
+2 -1
View File
@@ -142,7 +142,8 @@ static HandlerResult S_97(shared_ptr<ProxyServer::LinkedSession> ses, uint16_t,
} else {
// Update the newserv client config so we'll know not to show the Programs
// menu if they return to newserv
ses->config.set_flag(Client::Flag::PROXY_SUPPRESS_CLIENT_PINGS);
ses->config.clear_flag(Client::Flag::SHOULD_SEND_ENABLE_SAVE);
ses->config.set_flag(Client::Flag::SAVE_ENABLED);
// Trap any 97 command that would have triggered cheat protection, and
// always send 97 01 04 00
if (flag == 0) {
+22 -26
View File
@@ -162,10 +162,7 @@ void on_connect(std::shared_ptr<Client> c) {
break;
}
case ServerBehavior::SUBSEQUENT_LOGIN_SERVER:
c->config.set_flag(Client::Flag::SAVE_ENABLED);
[[fallthrough]];
case ServerBehavior::INITIAL_LOGIN_SERVER:
case ServerBehavior::LOGIN_SERVER:
send_server_init(c, SendServerInitFlag::IS_INITIAL_CONNECTION);
break;
@@ -263,8 +260,7 @@ void on_login_complete(shared_ptr<Client> c) {
// On BB, this function is called when the data server phase is done (and we
// should send the ship select menu), so we don't need to check for it here.
switch (c->server_behavior) {
case ServerBehavior::INITIAL_LOGIN_SERVER:
case ServerBehavior::SUBSEQUENT_LOGIN_SERVER: {
case ServerBehavior::LOGIN_SERVER: {
auto s = c->require_server_state();
// On the login server, send the events/songs, ep3 updates, and the main
@@ -287,9 +283,8 @@ void on_login_complete(shared_ptr<Client> c) {
c->config.check_flag(Client::Flag::NO_D6) ||
!c->config.check_flag(Client::Flag::AT_WELCOME_MESSAGE)) {
c->config.clear_flag(Client::Flag::AT_WELCOME_MESSAGE);
if (send_enable_send_function_call_if_applicable(c)) {
send_update_client_config(c);
}
send_enable_send_function_call_if_applicable(c);
send_update_client_config(c, false);
send_main_menu(c);
} else {
send_message_box(c, s->welcome_message.c_str());
@@ -541,7 +536,7 @@ static void on_8B_DCNTE(shared_ptr<Client> c, uint16_t, uint32_t, string& data)
}
if (!c->should_disconnect) {
send_update_client_config(c);
send_update_client_config(c, true);
on_login_complete(c);
}
}
@@ -651,7 +646,7 @@ static void on_93_DC(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
}
}
send_update_client_config(c);
send_update_client_config(c, true);
// The first time we receive a 93 from a DC client, we set this flag and send
// a 92. The IS_DC_V1_PROTOTYPE flag will be removed if the client sends a 92
@@ -973,7 +968,7 @@ static void on_9D_9E(shared_ptr<Client> c, uint16_t command, uint32_t, string& d
}
}
send_update_client_config(c);
send_update_client_config(c, true);
on_login_complete(c);
}
@@ -1167,7 +1162,7 @@ static void on_9F(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
} catch (const invalid_argument&) {
c->config.set_flag(Client::Flag::AT_WELCOME_MESSAGE);
}
send_update_client_config(c);
send_update_client_config(c, true);
on_login_complete(c);
break;
}
@@ -1183,6 +1178,8 @@ static void on_9F(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
static void on_96(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
check_size_t<C_CharSaveInfo_DCv2_PC_V3_BB_96>(data);
c->config.set_flag(Client::Flag::SHOULD_SEND_ENABLE_SAVE);
send_update_client_config(c, false);
send_server_time(c);
}
@@ -1731,9 +1728,9 @@ static void on_D6_V3(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
auto s = c->require_server_state();
send_menu(c, s->information_menu_for_version(c->version()));
} else if (c->config.check_flag(Client::Flag::AT_WELCOME_MESSAGE)) {
send_enable_send_function_call_if_applicable(c);
c->config.clear_flag(Client::Flag::AT_WELCOME_MESSAGE);
send_update_client_config(c);
send_enable_send_function_call_if_applicable(c);
send_update_client_config(c, false);
send_main_menu(c);
}
}
@@ -2086,15 +2083,17 @@ static void on_10(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
switch (item_id) {
case MainMenuItemID::GO_TO_LOBBY: {
c->should_send_to_lobby_server = true;
if (!c->config.check_flag(Client::Flag::SAVE_ENABLED)) {
if (!c->config.check_flag(Client::Flag::SAVE_ENABLED) &&
c->config.check_flag(Client::Flag::SHOULD_SEND_ENABLE_SAVE)) {
c->config.set_flag(Client::Flag::SAVE_ENABLED);
c->config.clear_flag(Client::Flag::SHOULD_SEND_ENABLE_SAVE);
// DC NTE and the v1 prototype crash if they receive a 97 command,
// so we instead do the redirect immediately
if ((c->version() == Version::DC_NTE) || (c->version() == Version::DC_V1_11_2000_PROTOTYPE)) {
send_client_to_lobby_server(c);
} else {
send_command(c, 0x97, 0x01);
send_update_client_config(c);
send_update_client_config(c, false);
}
} else {
send_client_to_lobby_server(c);
@@ -2289,13 +2288,15 @@ static void on_10(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
c->config.proxy_destination_address = resolve_ipv4(dest->first);
c->config.proxy_destination_port = dest->second;
if (!c->config.check_flag(Client::Flag::SAVE_ENABLED)) {
if (!c->config.check_flag(Client::Flag::SAVE_ENABLED) &&
c->config.check_flag(Client::Flag::SHOULD_SEND_ENABLE_SAVE)) {
c->should_send_to_proxy_server = true;
c->config.set_flag(Client::Flag::SAVE_ENABLED);
c->config.clear_flag(Client::Flag::SHOULD_SEND_ENABLE_SAVE);
send_command(c, 0x97, 0x01);
send_update_client_config(c);
send_update_client_config(c, false);
} else {
send_update_client_config(c);
send_update_client_config(c, false);
send_client_to_proxy_server(c);
}
}
@@ -2980,23 +2981,18 @@ static void on_61_98(shared_ptr<Client> c, uint16_t command, uint32_t flag, stri
// to delay sending them until now, instead of sending them during the
// login sequence.
if (is_ep3(c->version())) {
bool flags_changed = false;
if (!c->config.check_flag(Client::Flag::HAS_EP3_CARD_DEFS)) {
send_ep3_card_list_update(c);
c->config.set_flag(Client::Flag::HAS_EP3_CARD_DEFS);
flags_changed = true;
}
if (!c->config.check_flag(Client::Flag::HAS_EP3_MEDIA_UPDATES)) {
for (const auto& banner : s->ep3_lobby_banners) {
send_ep3_media_update(c, banner.type, banner.which, banner.data);
c->config.set_flag(Client::Flag::HAS_EP3_MEDIA_UPDATES);
flags_changed = true;
}
}
s->ep3_tournament_index->link_client(c);
if (flags_changed) {
send_update_client_config(c);
}
send_update_client_config(c, false);
}
player->inventory = cmd->inventory;
+31 -28
View File
@@ -281,38 +281,41 @@ void send_server_init(shared_ptr<Client> c, uint8_t flags) {
}
}
void send_update_client_config(shared_ptr<Client> c) {
switch (c->version()) {
case Version::DC_NTE:
case Version::DC_V1_11_2000_PROTOTYPE:
case Version::DC_V1:
case Version::DC_V2:
case Version::PC_NTE:
case Version::PC_V2: {
if (!c->config.check_flag(Client::Flag::HAS_GUILD_CARD_NUMBER)) {
void send_update_client_config(shared_ptr<Client> c, bool always_send) {
if (always_send || (is_v3(c->version()) && (c->config != c->synced_config))) {
switch (c->version()) {
case Version::DC_NTE:
case Version::DC_V1_11_2000_PROTOTYPE:
case Version::DC_V1:
case Version::DC_V2:
case Version::PC_NTE:
case Version::PC_V2: {
if (!c->config.check_flag(Client::Flag::HAS_GUILD_CARD_NUMBER)) {
c->config.set_flag(Client::Flag::HAS_GUILD_CARD_NUMBER);
S_UpdateClientConfig_DC_PC_04 cmd;
cmd.player_tag = 0x00010000;
cmd.guild_card_number = c->license->serial_number;
send_command_t(c, 0x04, 0x00, cmd);
}
break;
}
case Version::GC_NTE:
case Version::GC_V3:
case Version::GC_EP3_TRIAL_EDITION:
case Version::GC_EP3:
case Version::XB_V3: {
c->config.set_flag(Client::Flag::HAS_GUILD_CARD_NUMBER);
S_UpdateClientConfig_DC_PC_04 cmd;
S_UpdateClientConfig_V3_04 cmd;
cmd.player_tag = 0x00010000;
cmd.guild_card_number = c->license->serial_number;
c->config.serialize_into(cmd.client_config);
send_command_t(c, 0x04, 0x00, cmd);
break;
}
break;
default:
throw logic_error("send_update_client_config called on incorrect game version");
}
case Version::GC_NTE:
case Version::GC_V3:
case Version::GC_EP3_TRIAL_EDITION:
case Version::GC_EP3:
case Version::XB_V3: {
c->config.set_flag(Client::Flag::HAS_GUILD_CARD_NUMBER);
S_UpdateClientConfig_V3_04 cmd;
cmd.player_tag = 0x00010000;
cmd.guild_card_number = c->license->serial_number;
c->config.serialize_into(cmd.client_config);
send_command_t(c, 0x04, 0x00, cmd);
break;
}
default:
throw logic_error("send_update_client_config called on incorrect game version");
c->synced_config = c->config;
}
}
@@ -390,7 +393,7 @@ void prepare_client_for_patches(shared_ptr<Client> c, function<void()> on_comple
}
c->log.info("Client cache behavior patched");
c->config.set_flag(Client::Flag::SEND_FUNCTION_CALL_NO_CACHE_PATCH);
send_update_client_config(c);
send_update_client_config(c, false);
send_version_detect();
});
});
@@ -2136,7 +2139,7 @@ void send_join_lobby(shared_ptr<Client> c, shared_ptr<Lobby> l) {
// joining any lobby, set the appropriate flag and update the client config
if (c->config.check_flag(Client::Flag::NO_D6_AFTER_LOBBY) && !c->config.check_flag(Client::Flag::NO_D6)) {
c->config.set_flag(Client::Flag::NO_D6);
send_update_client_config(c);
send_update_client_config(c, false);
}
}
+1 -1
View File
@@ -128,7 +128,7 @@ prepare_server_init_contents_bb(
const parray<uint8_t, 0x30>& client_key,
uint8_t flags);
void send_server_init(std::shared_ptr<Client> c, uint8_t flags);
void send_update_client_config(std::shared_ptr<Client> c);
void send_update_client_config(std::shared_ptr<Client> c, bool always_send);
void empty_function_call_response_handler(uint32_t, uint32_t);
+4 -10
View File
@@ -166,10 +166,8 @@ const char* name_for_enum<ServerBehavior>(ServerBehavior behavior) {
switch (behavior) {
case ServerBehavior::PC_CONSOLE_DETECT:
return "pc_console_detect";
case ServerBehavior::INITIAL_LOGIN_SERVER:
return "initial_login_server";
case ServerBehavior::SUBSEQUENT_LOGIN_SERVER:
return "subsequent_login_server";
case ServerBehavior::LOGIN_SERVER:
return "login_server";
case ServerBehavior::LOBBY_SERVER:
return "lobby_server";
case ServerBehavior::PATCH_SERVER_PC:
@@ -186,12 +184,8 @@ template <>
ServerBehavior enum_for_name<ServerBehavior>(const char* name) {
if (!strcasecmp(name, "pc_console_detect")) {
return ServerBehavior::PC_CONSOLE_DETECT;
} else if (!strcasecmp(name, "login_server")) {
throw invalid_argument("the login_server behavior name is not supported; replace it with initial_login_server or subsequent_login_server");
} else if (!strcasecmp(name, "initial_login_server")) {
return ServerBehavior::INITIAL_LOGIN_SERVER;
} else if (!strcasecmp(name, "subsequent_login_server") || !strcasecmp(name, "data_server_bb")) {
return ServerBehavior::SUBSEQUENT_LOGIN_SERVER;
} else if (!strcasecmp(name, "login_server") || !strcasecmp(name, "login") || !strcasecmp(name, "data_server_bb")) {
return ServerBehavior::LOGIN_SERVER;
} else if (!strcasecmp(name, "lobby_server") || !strcasecmp(name, "lobby")) {
return ServerBehavior::LOBBY_SERVER;
} else if (!strcasecmp(name, "patch_server_pc") || !strcasecmp(name, "patch_pc")) {
+1 -2
View File
@@ -109,8 +109,7 @@ uint32_t default_specific_version_for_version(Version version, int64_t sub_versi
enum class ServerBehavior {
PC_CONSOLE_DETECT = 0,
INITIAL_LOGIN_SERVER,
SUBSEQUENT_LOGIN_SERVER,
LOGIN_SERVER,
LOBBY_SERVER,
PATCH_SERVER_PC,
PATCH_SERVER_BB,
+22 -22
View File
@@ -58,32 +58,32 @@
// Note: It is not an error that no ports appear here with "dc" in their
// definitions. DC clients use the same ports as GC clients, and newserv can
// tell them apart at the time they connect.
"gc-jp10": [9000, "gc", "initial_login_server"],
"gc-jp11": [9001, "gc", "initial_login_server"],
"gc-jp3te": [9002, "gc", "initial_login_server"],
"gc-jp3": [9003, "gc", "initial_login_server"],
"gc-us12t1": [9064, "gc", "initial_login_server"],
"gc-jp10": [9000, "gc", "login_server"],
"gc-jp11": [9001, "gc", "login_server"],
"gc-jp3te": [9002, "gc", "login_server"],
"gc-jp3": [9003, "gc", "login_server"],
"gc-us12t1": [9064, "gc", "login_server"],
"gc-us10": [9100, "pc", "pc_console_detect"],
"gc-us3": [9103, "gc", "initial_login_server"],
"gc-eu10": [9200, "gc", "initial_login_server"],
"gc-eu11": [9201, "gc", "initial_login_server"],
"gc-eu3-50": [9202, "gc", "initial_login_server"],
"gc-eu3-60a": [9203, "gc", "initial_login_server"],
"gc-eu3-60b": [9204, "gc", "initial_login_server"],
"pc": [9300, "pc", "initial_login_server"],
"gc-us3": [9103, "gc", "login_server"],
"gc-eu10": [9200, "gc", "login_server"],
"gc-eu11": [9201, "gc", "login_server"],
"gc-eu3-50": [9202, "gc", "login_server"],
"gc-eu3-60a": [9203, "gc", "login_server"],
"gc-eu3-60b": [9204, "gc", "login_server"],
"pc": [9300, "pc", "login_server"],
"pc-patch": [10000, "patch", "patch_server_pc"],
"bb-patch": [11000, "patch", "patch_server_bb"],
"bb-init": [12000, "bb", "initial_login_server"],
"bb-init": [12000, "bb", "login_server"],
// PSO Xbox tunnels its connections through the Xbox Live service (or, in
// modern times, Insignia), and that service determines which port the
// connection goes to on the server side. By default, newserv uses 9500 for
// PSO Xbox connections, but this is not hardcoded in the client.
"xb-login": [9500, "xb", "initial_login_server"],
"xb-login": [9500, "xb", "login_server"],
// Schthack PSOBB uses these ports.
// "bb-patch2": [10500, "patch", "patch_server_bb"],
// "bb-init2": [13000, "bb", "initial_login_server"],
// "bb-init2": [13000, "bb", "login_server"],
// Ephinea PSOBB uses these ports. Note that 13000 is also used by Schthack
// PSOBB, but not for the patch server; this means you unfortunately can't
@@ -91,7 +91,7 @@
// may be fixed in the future using a similar technique as the
// pc_console_detect behavior, but this isn't implemented yet.
// "bb-patch3": [13000, "patch", "patch_server_bb"],
// "bb-init3": [14000, "bb", "initial_login_server"],
// "bb-init3": [14000, "bb", "login_server"],
// newserv uses these ports, but there is no external reason that these
// numbers were chosen. You can change the port numbers here without any
@@ -112,10 +112,10 @@
// - The proxy ports do not need to be defined unless the proxy server is
// enabled for the respective version via the ProxyDestinations fields
// (below).
"console-login": [5100, "gc", "subsequent_login_server"],
"pc-login": [5101, "pc", "subsequent_login_server"],
"xb-login": [5102, "xb", "subsequent_login_server"],
"xb-lobby": [5105, "xb", "subsequent_login_server"],
"console-login": [5100, "gc", "login_server"],
"pc-login": [5101, "pc", "login_server"],
"xb-login": [5102, "xb", "login_server"],
"xb-lobby": [5105, "xb", "login_server"],
"console-lobby": [5110, "gc", "lobby_server"],
"pc-lobby": [5111, "pc", "lobby_server"],
"bb-lobby": [5112, "bb", "lobby_server"],
@@ -124,8 +124,8 @@
"gc-proxy": [5122, "gc", "proxy_server"],
"xb-proxy": [5123, "xb", "proxy_server"],
"bb-proxy": [5124, "bb", "proxy_server"],
"bb-data1": [12004, "bb", "subsequent_login_server"],
"bb-data2": [12005, "bb", "subsequent_login_server"],
"bb-data1": [12004, "bb", "login_server"],
"bb-data2": [12005, "bb", "login_server"],
},
// Where to listen for IP and PPP stack clients. This exists to interface with
+6 -2
View File
@@ -71,6 +71,10 @@ I 16332 2023-09-17 10:14:34 - [Commands] Sending to C-1 (version=GC command=D5 f
0020 | 61 6E 64 72 69 61 09 43 37 2E 00 00 | andria C7.
I 16332 2023-09-17 10:14:34 - [Commands] Received from C-1 (version=GC command=96 flag=00)
0000 | 96 00 0C 00 03 1B 8F 2C C0 00 00 00 | ,
I 16332 2023-09-17 10:14:34 - [Commands] Sending to C-1 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 30 45 53 33 00 91 00 42 60 00 04 00 00 00 00 00 | 0ES3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 16332 2023-09-17 10:14:34 - [Commands] Sending to C-1 (version=GC command=B1 flag=00)
0000 | B1 00 1C 00 32 30 32 33 3A 30 39 3A 31 37 3A 20 | 2023:09:17:
0010 | 31 37 3A 31 34 3A 33 34 2E 30 30 30 | 17:14:34.000
@@ -2619,7 +2623,7 @@ I 16332 2023-09-17 10:14:34 - [Commands] Sending to C-1 (version=GC command=CC f
0500 | 00 00 00 00 00 00 00 00 00 00 00 00 |
I 16332 2023-09-17 10:14:34 - [Commands] Sending to C-1 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 30 45 53 33 00 91 00 4A 60 00 00 00 00 00 00 00 | 0ES3@ `
0010 | 30 45 53 33 00 91 00 4A 60 00 04 00 00 00 00 00 | 0ES3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 16332 2023-09-17 10:14:34 - [Commands] Received from C-1 (Tali) (version=GC command=99 flag=00)
0000 | 99 00 04 00 |
@@ -2627,7 +2631,7 @@ I 16332 2023-09-17 10:14:34 - [Commands] Received from C-1 (Tali) (version=GC co
0000 | D6 00 04 00 |
I 16332 2023-09-17 10:14:34 - [Commands] Sending to C-1 (Tali) (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 30 45 53 33 00 91 00 48 60 00 00 00 00 00 00 00 | 0ES3@ `
0010 | 30 45 53 33 00 91 00 48 60 00 04 00 00 00 00 00 | 0ES3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 16332 2023-09-17 10:14:34 - [Commands] Sending to C-1 (Tali) (version=GC command=07 flag=06)
0000 | 07 06 C8 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al
+13 -5
View File
@@ -71,6 +71,10 @@ I 17097 2023-09-19 21:52:47 - [Commands] Sending to C-1 (version=GC command=D5 f
0020 | 61 6E 64 72 69 61 09 43 37 2E 00 00 | andria C7.
I 17097 2023-09-19 21:52:47 - [Commands] Received from C-1 (version=GC command=96 flag=00)
0000 | 96 00 0C 00 03 1B 8F 2C 06 01 00 00 | ,
I 17097 2023-09-19 21:52:47 - [Commands] Sending to C-1 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 30 45 53 33 00 91 00 42 60 00 04 00 00 00 00 00 | 0ES3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 17097 2023-09-19 21:52:47 - [Commands] Sending to C-1 (version=GC command=B1 flag=00)
0000 | B1 00 1C 00 32 30 32 33 3A 30 39 3A 32 30 3A 20 | 2023:09:20:
0010 | 30 34 3A 35 32 3A 34 37 2E 30 30 30 | 04:52:47.000
@@ -2619,15 +2623,15 @@ I 17097 2023-09-19 21:52:47 - [Commands] Sending to C-1 (version=GC command=CC f
0500 | 00 00 00 00 00 00 00 00 00 00 00 00 |
I 17097 2023-09-19 21:52:47 - [Commands] Sending to C-1 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 30 45 53 33 00 91 00 4A 60 00 00 00 00 00 00 00 | 0ES3@ `
0010 | 30 45 53 33 00 91 00 4A 60 00 04 00 00 00 00 00 | 0ES3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 17097 2023-09-19 21:52:47 - [Commands] Received from C-1 (Tali) (version=GC command=99 flag=00)
0000 | 99 00 04 00 |
I 17097 2023-09-19 21:52:47 - [Commands] Received from C-1 (Tali) (version=GC command=D6 flag=00)
0000 | D6 00 04 00 |
I 17097 2023-09-19 21:52:47 - [Commands] Sending to C-1 (Tali) (version=GC command=04 flag=00)
I 17097 2023-09-19 21:52:47 - [Commands] Sending to C-1 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 30 45 53 33 00 91 00 48 60 00 00 00 00 00 00 00 | 0ES3@ `
0010 | 30 45 53 33 00 91 00 48 60 00 04 00 00 00 00 00 | 0ES3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 17097 2023-09-19 21:52:47 - [Commands] Sending to C-1 (Tali) (version=GC command=07 flag=06)
0000 | 07 06 C8 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al
@@ -5882,6 +5886,10 @@ I 17097 2023-09-19 21:53:53 - [Commands] Sending to C-3 (version=GC command=D5 f
0020 | 61 6E 64 72 69 61 09 43 37 2E 00 00 | andria C7.
I 17097 2023-09-19 21:53:53 - [Commands] Received from C-3 (version=GC command=96 flag=00)
0000 | 96 00 0C 00 30 AA 74 2C 27 00 00 00 | 0 t,'
I 17097 2023-09-19 21:53:53 - [Commands] Sending to C-3 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 22 22 22 22 32 AC 99 83 | , """"2
0010 | 00 00 00 33 00 A1 00 42 60 00 04 00 00 00 00 00 | 3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 17097 2023-09-19 21:53:53 - [Commands] Sending to C-3 (version=GC command=B1 flag=00)
0000 | B1 00 1C 00 32 30 32 33 3A 30 39 3A 32 30 3A 20 | 2023:09:20:
0010 | 30 34 3A 35 33 3A 35 33 2E 30 30 30 | 04:53:53.000
@@ -8430,7 +8438,7 @@ I 17097 2023-09-19 21:53:53 - [Commands] Sending to C-3 (version=GC command=CC f
0500 | 00 00 00 00 00 00 00 00 00 00 00 00 |
I 17097 2023-09-19 21:53:53 - [Commands] Sending to C-3 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 22 22 22 22 32 AC 99 83 | , """"2
0010 | 30 4A 53 33 00 A1 00 4A 60 00 00 00 00 00 00 00 | 3@ `
0010 | 30 4A 53 33 00 A1 00 4A 60 00 04 00 00 00 00 00 | 3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 17097 2023-09-19 21:53:53 - [Commands] Received from C-3 (Tali) (version=GC command=99 flag=00)
0000 | 99 00 04 00 |
@@ -8438,7 +8446,7 @@ I 17097 2023-09-19 21:53:53 - [Commands] Received from C-3 (Tali) (version=GC co
0000 | D6 00 04 00 |
I 17097 2023-09-19 21:53:53 - [Commands] Sending to C-3 (Tali) (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 22 22 22 22 32 AC 99 83 | , """"2
0010 | 30 4A 53 33 00 A1 00 48 60 00 00 00 00 00 00 00 | 3@ `
0010 | 30 4A 53 33 00 A1 00 48 60 00 04 00 00 00 00 00 | 3@ `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 17097 2023-09-19 21:53:53 - [Commands] Sending to C-3 (Tali) (version=GC command=07 flag=08)
0000 | 07 06 C8 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al
@@ -75,6 +75,10 @@ I 25793 2023-11-24 23:03:38 - [Commands] Sending to C-4 (version=GC_EP3 command=
0020 | 61 6E 64 72 69 61 09 43 37 2E 00 00 | andria C7.
I 25793 2023-11-24 23:03:38 - [Commands] Received from C-4 (version=GC_EP3 command=96 flag=00)
0000 | 96 00 0C 00 5C E6 6B 2C 3B 00 00 00 | \ k,;
I 25793 2023-11-24 23:03:38 - [Commands] Sending to C-4 (version=GC_EP3 command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 00 00 00 33 00 A1 00 42 60 00 04 00 00 00 00 00 | 3 B`
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 25793 2023-11-24 23:03:38 - [Commands] Sending to C-4 (version=GC_EP3 command=B1 flag=00)
0000 | B1 00 1C 00 32 30 32 33 3A 31 31 3A 32 35 3A 20 | 2023:11:25:
0010 | 30 37 3A 30 33 3A 33 38 2E 30 30 30 | 07:03:38.000
@@ -2130,15 +2134,15 @@ I 25793 2023-11-24 23:03:38 - [Commands] Sending to C-4 (version=GC_EP3_TRIAL_ED
7940 | 00 00 00 00 |
I 25793 2023-11-24 23:03:38 - [Commands] Sending to C-4 (version=GC_EP3_TRIAL_EDITION command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 54 4A 53 33 00 81 00 4A 60 00 00 00 00 00 00 00 | TJS3 J`
0010 | 54 4A 53 33 00 81 00 4A 60 00 04 00 00 00 00 00 | TJS3 J`
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 25793 2023-11-24 23:03:38 - [Commands] Received from C-4 (Tali) (version=GC_EP3_TRIAL_EDITION command=99 flag=00)
0000 | 99 00 04 00 |
I 25793 2023-11-24 23:03:38 - [Commands] Received from C-4 (Tali) (version=GC_EP3_TRIAL_EDITION command=D6 flag=00)
0000 | D6 00 04 00 |
I 25793 2023-11-24 23:03:38 - [Commands] Sending to C-4 (Tali) (version=GC_EP3_TRIAL_EDITION command=04 flag=00)
I 25793 2023-11-24 23:03:38 - [Commands] Sending to C-4 (version=GC_EP3_TRIAL_EDITION command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 54 4A 53 33 00 81 00 48 60 00 00 00 00 00 00 00 | TJS3 H`
0010 | 54 4A 53 33 00 81 00 48 60 00 04 00 00 00 00 00 | TJS3 J`
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 25793 2023-11-24 23:03:38 - [Commands] Sending to C-4 (Tali) (version=GC_EP3_TRIAL_EDITION command=07 flag=08)
0000 | 07 06 C8 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al
@@ -2357,6 +2361,10 @@ I 25793 2023-11-24 23:03:44 - [Commands] Received from C-5 (version=GC_EP3 comma
0670 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I 25793 2023-11-24 23:03:44 - [C-5] Game version changed to GC_EP3_TRIAL_EDITION
I 25793 2023-11-24 23:03:44 - [Commands] Sending to C-5 (Tali) (version=GC_EP3_TRIAL_EDITION command=C5 flag=01)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 54 4A 53 33 00 81 00 4C 60 00 00 00 00 00 00 00 | TJS3 L`
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 25793 2023-11-24 23:03:44 - [Commands] Sending to C-5 (Tali) (version=GC_EP3_TRIAL_EDITION command=C5 flag=01)
0000 | C5 01 20 01 00 00 00 00 FF 7F 00 00 00 00 00 00 |
0010 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
+5 -1
View File
@@ -66,6 +66,10 @@ I 49108 2023-05-26 16:18:01 - [Commands] Sending to C-1 (version=GC command=D5 f
0020 | 61 6E 64 72 69 61 09 43 37 2E 00 00 | andria C7.
I 49108 2023-05-26 16:18:01 - [Commands] Received from C-1 (version=GC command=96 flag=00)
0000 | 96 00 0C 00 C7 32 CE 2A 57 00 00 00 | 2 *W
I 49108 2023-05-26 16:18:01 - [Commands] Sending to C-1 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 30 50 4F 33 00 01 00 42 60 00 04 00 00 00 00 00 | 3 `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 49108 2023-05-26 16:18:01 - [Commands] Sending to C-1 (version=GC command=B1 flag=00)
0000 | B1 00 1C 00 32 30 32 33 3A 30 35 3A 32 36 3A 20 | 2023:05:26:
0010 | 32 33 3A 31 38 3A 30 31 2E 30 30 30 | 23:18:01.000
@@ -75,7 +79,7 @@ I 49108 2023-05-26 16:18:02 - [Commands] Received from C-1 (version=GC command=D
0000 | D6 00 04 00 |
I 49108 2023-05-26 16:18:02 - [Commands] Sending to C-1 (version=GC command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 11 11 11 11 32 AC 99 83 | , 2
0010 | 30 50 4F 33 00 01 00 40 60 00 00 00 00 00 00 00 | 3 `
0010 | 30 50 4F 33 00 01 00 40 60 00 04 00 00 00 00 00 | 3 `
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 49108 2023-05-26 16:18:02 - [Commands] Sending to C-1 (version=GC command=07 flag=08)
0000 | 07 06 C8 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al
+5 -1
View File
@@ -60,6 +60,10 @@ I 16496 2023-11-08 01:54:08 - [Commands] Sending to C-1 (version=XB command=D5 f
0020 | 61 6E 64 72 69 61 09 43 37 2E 00 00 | andria C7.
I 16496 2023-11-08 01:54:09 - [Commands] Received from C-1 (version=XB command=96 flag=00)
0000 | 96 00 0C 00 7C 9C DA 2C 62 00 00 00 | | ,b
I 16496 2023-11-08 01:54:09 - [Commands] Sending to C-1 (version=XB command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 E2 D4 45 39 32 AC 99 83 | , E92
0010 | 00 00 00 00 00 81 00 42 60 00 04 00 00 00 00 00 | 4 @`
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 16496 2023-11-08 01:54:09 - [Commands] Sending to C-1 (version=XB command=B1 flag=00)
0000 | B1 00 1C 00 32 30 32 33 3A 31 31 3A 30 38 3A 20 | 2023:11:08:
0010 | 30 31 3A 35 34 3A 30 39 2E 30 30 30 | 01:54:09.000
@@ -69,7 +73,7 @@ I 16496 2023-11-08 01:54:13 - [Commands] Received from C-1 (version=XB command=D
0000 | D6 00 04 00 |
I 16496 2023-11-08 01:54:13 - [Commands] Sending to C-1 (version=XB command=04 flag=00)
0000 | 04 00 2C 00 00 00 01 00 E2 D4 45 39 32 AC 99 83 | , E92
0010 | 00 00 00 00 00 81 00 40 60 00 00 00 00 00 00 00 | 4 @`
0010 | 00 00 00 00 00 81 00 40 60 00 04 00 00 00 00 00 | 4 @`
0020 | 00 00 00 00 00 00 FF FF 80 FF FF FF |
I 16496 2023-11-08 01:54:13 - [Commands] Sending to C-1 (version=XB command=07 flag=05)
0000 | 07 04 90 00 11 00 00 11 FF FF FF FF 04 00 41 6C | Al
+20 -20
View File
@@ -45,29 +45,29 @@
"Episode3FinalRoundMesetaBonus": 300,
"PortConfiguration": {
"gc-jp10": [9000, "gc", "initial_login_server"],
"gc-jp11": [9001, "gc", "initial_login_server"],
"gc-jp3te": [9002, "gc", "initial_login_server"],
"gc-jp3": [9003, "gc", "initial_login_server"],
"gc-us12t1": [9064, "gc", "initial_login_server"],
"gc-jp10": [9000, "gc", "login_server"],
"gc-jp11": [9001, "gc", "login_server"],
"gc-jp3te": [9002, "gc", "login_server"],
"gc-jp3": [9003, "gc", "login_server"],
"gc-us12t1": [9064, "gc", "login_server"],
"gc-us10": [9100, "pc", "pc_console_detect"],
"gc-us3": [9103, "gc", "initial_login_server"],
"gc-eu10": [9200, "gc", "initial_login_server"],
"gc-eu11": [9201, "gc", "initial_login_server"],
"gc-eu3-50": [9202, "gc", "initial_login_server"],
"gc-eu3-60a": [9203, "gc", "initial_login_server"],
"gc-eu3-60b": [9204, "gc", "initial_login_server"],
"pc": [9300, "pc", "initial_login_server"],
"xb": [9500, "xb", "initial_login_server"],
"gc-us3": [9103, "gc", "login_server"],
"gc-eu10": [9200, "gc", "login_server"],
"gc-eu11": [9201, "gc", "login_server"],
"gc-eu3-50": [9202, "gc", "login_server"],
"gc-eu3-60a": [9203, "gc", "login_server"],
"gc-eu3-60b": [9204, "gc", "login_server"],
"pc": [9300, "pc", "login_server"],
"xb": [9500, "xb", "login_server"],
"pc-patch": [10000, "patch", "patch_server_pc"],
"bb-patch": [11000, "patch", "patch_server_bb"],
"bb-init": [12000, "bb", "initial_login_server"],
"bb-init": [12000, "bb", "login_server"],
"bb-patch2": [10500, "patch", "patch_server_bb"],
"bb-proxy2": [9932, "bb", "proxy_server"],
"bb-patch3": [13000, "bb", "initial_login_server"],
"console-login": [5100, "gc", "subsequent_login_server"],
"pc-login": [5101, "pc", "subsequent_login_server"],
"xb-login": [5102, "xb", "subsequent_login_server"],
"bb-patch3": [13000, "bb", "login_server"],
"console-login": [5100, "gc", "login_server"],
"pc-login": [5101, "pc", "login_server"],
"xb-login": [5102, "xb", "login_server"],
"console-lobby": [5110, "gc", "lobby_server"],
"pc-lobby": [5111, "pc", "lobby_server"],
"xb-lobby": [5105, "xb", "lobby_server"],
@@ -77,8 +77,8 @@
"xb-proxy": [5113, "xb", "proxy_server"],
"pc-proxy": [5121, "pc", "proxy_server"],
"bb-proxy": [5122, "bb", "proxy_server"],
"bb-data1": [12004, "bb", "subsequent_login_server"],
"bb-data2": [12005, "bb", "subsequent_login_server"],
"bb-data1": [12004, "bb", "login_server"],
"bb-data2": [12005, "bb", "login_server"],
},
"ProxyDestinations-GC": {