1
0
mirror of https://github.com/p2r3/bareiron.git synced 2025-10-02 07:35:08 +02:00

explicitly handle running out of player slots

This commit is contained in:
p2r3
2025-08-27 15:31:09 +03:00
parent 035be84850
commit b7234ab31e
4 changed files with 14 additions and 1 deletions

View File

@@ -131,6 +131,7 @@ extern BlockChange block_changes[20000];
extern int block_changes_count;
extern PlayerData player_data[MAX_PLAYERS];
extern int player_data_count;
extern MobData mob_data[MAX_MOBS];

View File

@@ -40,5 +40,6 @@ BlockChange block_changes[20000];
int block_changes_count = 0;
PlayerData player_data[MAX_PLAYERS];
int player_data_count = 0;
MobData mob_data[MAX_MOBS];

View File

@@ -47,7 +47,10 @@ void handlePacket (int client_fd, int length, int packet_id, int state) {
uint8_t uuid[16];
char name[16];
if (cs_loginStart(client_fd, uuid, name)) break;
if (reservePlayerData(client_fd, uuid, name)) break;
if (reservePlayerData(client_fd, uuid, name)) {
recv_count = 0;
return;
}
if (sc_loginSuccess(client_fd, uuid, name)) break;
} else if (state == STATE_CONFIGURATION) {
if (cs_clientInformation(client_fd)) break;

View File

@@ -79,10 +79,12 @@ int reservePlayerData (int client_fd, uint8_t *uuid, char *name) {
}
}
if (empty) {
if (player_data_count >= MAX_PLAYERS) return 1;
player_data[i].client_fd = client_fd;
memcpy(player_data[i].uuid, uuid, 16);
memcpy(player_data[i].name, name, 16);
resetPlayerData(&player_data[i]);
player_data_count ++;
return 0;
}
}
@@ -105,6 +107,12 @@ void clearPlayerFD (int client_fd) {
for (int i = 0; i < MAX_PLAYERS; i ++) {
if (player_data[i].client_fd == client_fd) {
player_data[i].client_fd = -1;
break;
}
}
for (int i = 0; i < MAX_PLAYERS * 2; i += 2) {
if (client_states[i] == client_fd) {
client_states[i] = -1;
return;
}
}