-
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Clin.c
50 lines (46 loc) · 1.88 KB
/
Clin.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <Server/ParseConvert.h>
#include <Server/Server.h>
#include <Server/Structs/ServerStruct.h>
#include <Util/Checks/PlayerChecks.h>
#include <Util/Notice.h>
#include <stdio.h>
void cmd_clin(void* p_server, command_args_t arguments)
{
server_t* server = (server_t*) p_server;
uint8_t player_id = arguments.console ? 33 : arguments.player->id;
if (arguments.argc > 2) {
send_server_notice(arguments.player, arguments.console, "Too many arguments");
return;
} else if (arguments.argc != 2 && arguments.console) {
send_server_notice(arguments.player, arguments.console, "No ID given");
return;
} else if (arguments.argc == 2 && !parse_player(arguments.argv[1], &player_id, NULL)) {
send_server_notice(arguments.player, arguments.console, "Invalid ID. Wrong format");
return;
}
player_t* player = NULL;
if (player_id < server->protocol.max_players) {
HASH_FIND(hh, server->players, &player_id, sizeof(player_id), player);
}
if (player != NULL && is_past_join_screen(player)) {
char client[15];
if (player->client == 'o') {
snprintf(client, 12, "OpenSpades");
} else if (player->client == 'B') {
snprintf(client, 13, "BetterSpades");
} else {
snprintf(client, 7, "Voxlap");
}
send_server_notice(arguments.player,
arguments.console,
"Player %s is running %s version %d.%d.%d on %s",
player->name,
client,
player->version_major,
player->version_minor,
player->version_revision,
player->os_info);
} else {
send_server_notice(arguments.player, arguments.console, "Invalid ID. Player doesnt exist");
}
}