use a cleaner method to deal with duplicate 97 commands
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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": {
|
||||
|
||||
Reference in New Issue
Block a user