add some extra proxy options
This commit is contained in:
@@ -36,6 +36,10 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
static constexpr uint16_t encode_xrgb1555(uint32_t xrgb8888) {
|
||||
return ((xrgb8888 >> 9) & 0x7C00) | ((xrgb8888 >> 6) & 0x03E0) | ((xrgb8888 >> 3) & 0x001F);
|
||||
}
|
||||
|
||||
struct HandlerResult {
|
||||
enum class Type {
|
||||
FORWARD = 0,
|
||||
@@ -1033,6 +1037,10 @@ static HandlerResult C_GXB_61(shared_ptr<ServerState>,
|
||||
pd.disp.visual.name_color = 0x00000000;
|
||||
modified = true;
|
||||
}
|
||||
if (!session.challenge_rank_title_override.empty()) {
|
||||
pd.records.challenge.title_color = encode_xrgb1555(session.challenge_rank_color_override);
|
||||
pd.records.challenge.rank_title = encrypt_challenge_rank_text(session.challenge_rank_title_override);
|
||||
}
|
||||
|
||||
} else {
|
||||
C_CharacterData_V3_61_98* pd;
|
||||
@@ -1066,6 +1074,10 @@ static HandlerResult C_GXB_61(shared_ptr<ServerState>,
|
||||
pd->disp.visual.name_color = 0x00000000;
|
||||
modified = true;
|
||||
}
|
||||
if (!session.challenge_rank_title_override.empty()) {
|
||||
pd->records.challenge.title_color = encode_xrgb1555(session.challenge_rank_color_override);
|
||||
pd->records.challenge.rank_title = encrypt_challenge_rank_text(session.challenge_rank_title_override);
|
||||
}
|
||||
}
|
||||
|
||||
return modified ? HandlerResult::Type::MODIFIED : HandlerResult::Type::FORWARD;
|
||||
|
||||
@@ -65,6 +65,8 @@ public:
|
||||
std::string login_command_bb;
|
||||
|
||||
ClientOptions options;
|
||||
uint32_t challenge_rank_color_override;
|
||||
std::string challenge_rank_title_override;
|
||||
int64_t remote_guild_card_number;
|
||||
parray<uint8_t, 0x20> remote_client_config_data;
|
||||
ClientConfigBB newserv_client_config;
|
||||
|
||||
@@ -720,6 +720,14 @@ Proxy session commands:\n\
|
||||
session->options.override_lobby_number = lobby_type_for_name(command_args);
|
||||
}
|
||||
|
||||
} else if (command_name == "set-challenge-rank-title") {
|
||||
auto session = this->get_proxy_session(session_name);
|
||||
session->challenge_rank_title_override = command_args;
|
||||
|
||||
} else if (command_name == "set-challenge-rank-color") {
|
||||
auto session = this->get_proxy_session(session_name);
|
||||
session->challenge_rank_color_override = stoul(command_args, nullptr, 16);
|
||||
|
||||
} else if (command_name == "set-chat-filter") {
|
||||
auto session = this->get_proxy_session(session_name);
|
||||
set_boolean(&session->options.enable_chat_filter, command_args);
|
||||
|
||||
Reference in New Issue
Block a user