mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 22:28:56 +00:00
(svn r1263) -Fix: [Network] Client-names are limited (serverside) to 25 chars
-Fix: You can enter some more chars in the chatbox
This commit is contained in:
parent
ffed7d6834
commit
97ec7de9e6
@ -163,7 +163,7 @@ static void MenuClickSettings(int index)
|
|||||||
case 2: ShowPatchesSelection(); return;
|
case 2: ShowPatchesSelection(); return;
|
||||||
case 3: ShowNewgrf(); return;
|
case 3: ShowNewgrf(); return;
|
||||||
|
|
||||||
case 5: DeleteAllNonVitalWindows(); return;
|
case 5: DeleteAllNonVitalWindows(); return;
|
||||||
case 6: _display_opt ^= DO_SHOW_TOWN_NAMES; MarkWholeScreenDirty(); return;
|
case 6: _display_opt ^= DO_SHOW_TOWN_NAMES; MarkWholeScreenDirty(); return;
|
||||||
case 7: _display_opt ^= DO_SHOW_STATION_NAMES; MarkWholeScreenDirty(); return;
|
case 7: _display_opt ^= DO_SHOW_STATION_NAMES; MarkWholeScreenDirty(); return;
|
||||||
case 8: _display_opt ^= DO_SHOW_SIGNS; MarkWholeScreenDirty(); return;
|
case 8: _display_opt ^= DO_SHOW_SIGNS; MarkWholeScreenDirty(); return;
|
||||||
@ -339,7 +339,7 @@ void ShowNetworkChatQueryWindow(byte desttype, byte dest)
|
|||||||
{
|
{
|
||||||
_rename_id = desttype + (dest << 8);
|
_rename_id = desttype + (dest << 8);
|
||||||
_rename_what = 2;
|
_rename_what = 2;
|
||||||
ShowChatWindow(STR_EMPTY, STR_NETWORK_CHAT_QUERY_CAPTION, 60, 250, 1, 0);
|
ShowChatWindow(STR_EMPTY, STR_NETWORK_CHAT_QUERY_CAPTION, 150, 338, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowNetworkGiveMoneyWindow(byte player)
|
void ShowNetworkGiveMoneyWindow(byte player)
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#define NETWORK_REVISION_LENGTH 10
|
#define NETWORK_REVISION_LENGTH 10
|
||||||
#define NETWORK_PASSWORD_LENGTH 20
|
#define NETWORK_PASSWORD_LENGTH 20
|
||||||
#define NETWORK_PLAYERS_LENGTH 200
|
#define NETWORK_PLAYERS_LENGTH 200
|
||||||
|
#define NETWORK_CLIENT_NAME_LENGTH 25
|
||||||
|
|
||||||
// This is the struct used by both client and server
|
// This is the struct used by both client and server
|
||||||
// some fields will be empty on the client (like game_password) by default
|
// some fields will be empty on the client (like game_password) by default
|
||||||
@ -88,7 +89,7 @@ typedef struct NetworkPlayerInfo {
|
|||||||
|
|
||||||
typedef struct NetworkClientInfo {
|
typedef struct NetworkClientInfo {
|
||||||
uint16 client_index; // Index of the client (same as ClientState->index)
|
uint16 client_index; // Index of the client (same as ClientState->index)
|
||||||
char client_name[NETWORK_NAME_LENGTH]; // Name of the client
|
char client_name[NETWORK_CLIENT_NAME_LENGTH]; // Name of the client
|
||||||
byte client_lang; // The language of the client
|
byte client_lang; // The language of the client
|
||||||
byte client_playas; // As which player is this client playing
|
byte client_playas; // As which player is this client playing
|
||||||
uint32 client_ip; // IP-address of the client (so he can be banned)
|
uint32 client_ip; // IP-address of the client (so he can be banned)
|
||||||
|
@ -1408,9 +1408,9 @@ press_ok:;
|
|||||||
|
|
||||||
static const Widget _chat_window_widgets[] = {
|
static const Widget _chat_window_widgets[] = {
|
||||||
{ WWT_IMGBTN, 14, 0, 639, 0, 13, 0x0, STR_NULL}, // background
|
{ WWT_IMGBTN, 14, 0, 639, 0, 13, 0x0, STR_NULL}, // background
|
||||||
{ WWT_IMGBTN, 14, 2, 379, 1, 12, 0x0, STR_NULL}, // text box
|
{ WWT_IMGBTN, 14, 2, 399, 1, 12, 0x0, STR_NULL}, // text box
|
||||||
{ WWT_TEXTBTN, 14, 380, 509, 1, 12, STR_NETWORK_SEND,STR_NULL}, // send button
|
{ WWT_TEXTBTN, 14, 400, 519, 1, 12, STR_NETWORK_SEND,STR_NULL}, // send button
|
||||||
{ WWT_TEXTBTN, 14, 510, 639, 1, 12, STR_012E_CANCEL, STR_NULL}, // cancel button
|
{ WWT_TEXTBTN, 14, 520, 639, 1, 12, STR_012E_CANCEL, STR_NULL}, // cancel button
|
||||||
{ WIDGETS_END},
|
{ WIDGETS_END},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_ERROR)(NetworkClientState *cs, Netwo
|
|||||||
|
|
||||||
NetworkClientState *new_cs;
|
NetworkClientState *new_cs;
|
||||||
char str[100];
|
char str[100];
|
||||||
char client_name[NETWORK_NAME_LENGTH];
|
char client_name[NETWORK_CLIENT_NAME_LENGTH];
|
||||||
|
|
||||||
Packet *p = NetworkSend_Init(PACKET_SERVER_ERROR);
|
Packet *p = NetworkSend_Init(PACKET_SERVER_ERROR);
|
||||||
NetworkSend_uint8(p, error);
|
NetworkSend_uint8(p, error);
|
||||||
@ -712,7 +712,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_MAP_OK)
|
|||||||
{
|
{
|
||||||
// Client has the map, now start syncing
|
// Client has the map, now start syncing
|
||||||
if (cs->status == STATUS_DONE_MAP && !cs->quited) {
|
if (cs->status == STATUS_DONE_MAP && !cs->quited) {
|
||||||
char client_name[NETWORK_NAME_LENGTH];
|
char client_name[NETWORK_CLIENT_NAME_LENGTH];
|
||||||
NetworkClientState *new_cs;
|
NetworkClientState *new_cs;
|
||||||
|
|
||||||
NetworkGetClientName(client_name, sizeof(client_name), cs);
|
NetworkGetClientName(client_name, sizeof(client_name), cs);
|
||||||
@ -849,7 +849,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_ERROR)
|
|||||||
NetworkClientState *new_cs;
|
NetworkClientState *new_cs;
|
||||||
byte errorno = NetworkRecv_uint8(p);
|
byte errorno = NetworkRecv_uint8(p);
|
||||||
char str[100];
|
char str[100];
|
||||||
char client_name[NETWORK_NAME_LENGTH];
|
char client_name[NETWORK_CLIENT_NAME_LENGTH];
|
||||||
|
|
||||||
// The client was never joined.. thank the client for the packet, but ignore it
|
// The client was never joined.. thank the client for the packet, but ignore it
|
||||||
if (cs->status < STATUS_DONE_MAP || cs->quited) {
|
if (cs->status < STATUS_DONE_MAP || cs->quited) {
|
||||||
@ -880,7 +880,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_QUIT)
|
|||||||
// clients.
|
// clients.
|
||||||
NetworkClientState *new_cs;
|
NetworkClientState *new_cs;
|
||||||
char str[100];
|
char str[100];
|
||||||
char client_name[NETWORK_NAME_LENGTH];
|
char client_name[NETWORK_CLIENT_NAME_LENGTH];
|
||||||
|
|
||||||
// The client was never joined.. thank the client for the packet, but ignore it
|
// The client was never joined.. thank the client for the packet, but ignore it
|
||||||
if (cs->status < STATUS_DONE_MAP || cs->quited) {
|
if (cs->status < STATUS_DONE_MAP || cs->quited) {
|
||||||
@ -1043,17 +1043,17 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_SET_PASSWORD)
|
|||||||
|
|
||||||
DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_SET_NAME)
|
DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_SET_NAME)
|
||||||
{
|
{
|
||||||
char name[NETWORK_NAME_LENGTH];
|
char client_name[NETWORK_CLIENT_NAME_LENGTH];
|
||||||
NetworkClientInfo *ci;
|
NetworkClientInfo *ci;
|
||||||
|
|
||||||
NetworkRecv_string(p, name, sizeof(name));
|
NetworkRecv_string(p, client_name, sizeof(client_name));
|
||||||
ci = DEREF_CLIENT_INFO(cs);
|
ci = DEREF_CLIENT_INFO(cs);
|
||||||
|
|
||||||
if (ci != NULL) {
|
if (ci != NULL) {
|
||||||
// Display change
|
// Display change
|
||||||
if (NetworkFindName(name)) {
|
if (NetworkFindName(client_name)) {
|
||||||
NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, 1, false, ci->client_name, name);
|
NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, 1, false, ci->client_name, client_name);
|
||||||
ttd_strlcpy(ci->client_name, name, sizeof(ci->client_name));
|
ttd_strlcpy(ci->client_name, client_name, sizeof(ci->client_name));
|
||||||
NetworkUpdateClientInfo(ci->client_index);
|
NetworkUpdateClientInfo(ci->client_index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1229,7 +1229,7 @@ void NetworkPopulateCompanyInfo(void)
|
|||||||
ttd_strlcpy(_network_player_info[ci->client_playas-1].players, ci->client_name, sizeof(_network_player_info[ci->client_playas-1].players));
|
ttd_strlcpy(_network_player_info[ci->client_playas-1].players, ci->client_name, sizeof(_network_player_info[ci->client_playas-1].players));
|
||||||
|
|
||||||
FOR_ALL_CLIENTS(cs) {
|
FOR_ALL_CLIENTS(cs) {
|
||||||
char client_name[NETWORK_NAME_LENGTH];
|
char client_name[NETWORK_CLIENT_NAME_LENGTH];
|
||||||
|
|
||||||
NetworkGetClientName(client_name, sizeof(client_name), cs);
|
NetworkGetClientName(client_name, sizeof(client_name), cs);
|
||||||
|
|
||||||
@ -1339,22 +1339,22 @@ static void NetworkAutoCleanCompanies()
|
|||||||
|
|
||||||
// This function changes new_name to a name that is unique (by adding #1 ...)
|
// This function changes new_name to a name that is unique (by adding #1 ...)
|
||||||
// and it returns true if that succeeded.
|
// and it returns true if that succeeded.
|
||||||
bool NetworkFindName(char new_name[NETWORK_NAME_LENGTH])
|
bool NetworkFindName(char new_name[NETWORK_CLIENT_NAME_LENGTH])
|
||||||
{
|
{
|
||||||
NetworkClientState *new_cs;
|
NetworkClientState *new_cs;
|
||||||
NetworkClientInfo *ci;
|
NetworkClientInfo *ci;
|
||||||
bool found_name = false;
|
bool found_name = false;
|
||||||
byte number = 0;
|
byte number = 0;
|
||||||
char original_name[NETWORK_NAME_LENGTH];
|
char original_name[NETWORK_CLIENT_NAME_LENGTH];
|
||||||
|
|
||||||
// We use NETWORK_NAME_LENGTH in here, because new_name is really a pointer
|
// We use NETWORK_NAME_LENGTH in here, because new_name is really a pointer
|
||||||
ttd_strlcpy(original_name, new_name, NETWORK_NAME_LENGTH);
|
ttd_strlcpy(original_name, new_name, NETWORK_CLIENT_NAME_LENGTH);
|
||||||
|
|
||||||
while (!found_name) {
|
while (!found_name) {
|
||||||
found_name = true;
|
found_name = true;
|
||||||
FOR_ALL_CLIENTS(new_cs) {
|
FOR_ALL_CLIENTS(new_cs) {
|
||||||
ci = DEREF_CLIENT_INFO(new_cs);
|
ci = DEREF_CLIENT_INFO(new_cs);
|
||||||
if (strncmp(ci->client_name, new_name, NETWORK_NAME_LENGTH) == 0) {
|
if (strncmp(ci->client_name, new_name, NETWORK_CLIENT_NAME_LENGTH) == 0) {
|
||||||
// Name already in use
|
// Name already in use
|
||||||
found_name = false;
|
found_name = false;
|
||||||
break;
|
break;
|
||||||
@ -1363,7 +1363,7 @@ bool NetworkFindName(char new_name[NETWORK_NAME_LENGTH])
|
|||||||
// Check if it is the same as the server-name
|
// Check if it is the same as the server-name
|
||||||
ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
|
ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
|
||||||
if (ci != NULL) {
|
if (ci != NULL) {
|
||||||
if (strncmp(ci->client_name, new_name, NETWORK_NAME_LENGTH) == 0) {
|
if (strncmp(ci->client_name, new_name, NETWORK_CLIENT_NAME_LENGTH) == 0) {
|
||||||
// Name already in use
|
// Name already in use
|
||||||
found_name = false;
|
found_name = false;
|
||||||
}
|
}
|
||||||
@ -1374,7 +1374,7 @@ bool NetworkFindName(char new_name[NETWORK_NAME_LENGTH])
|
|||||||
|
|
||||||
// Stop if we tried for more then 50 times..
|
// Stop if we tried for more then 50 times..
|
||||||
if (number++ > 50) break;
|
if (number++ > 50) break;
|
||||||
snprintf(new_name, NETWORK_NAME_LENGTH, "%s #%d", original_name, number);
|
snprintf(new_name, NETWORK_CLIENT_NAME_LENGTH, "%s #%d", original_name, number);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user