-
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Notice.c
65 lines (60 loc) · 2.03 KB
/
Notice.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "Util/Uthash.h"
#include <Server/Structs/ServerStruct.h>
#include <Util/Checks/PlayerChecks.h>
#include <Util/Log.h>
#include <stdarg.h>
#include <stdio.h>
void send_server_notice(player_t* player, uint8_t console, const char* message, ...)
{
va_list args;
va_start(args, message);
char fMessage[1024];
vsnprintf(fMessage, 1024, message, args);
va_end(args);
if (console) {
LOG_INFO("%s", fMessage);
return;
}
uint32_t fMessageSize = strlen(fMessage);
uint32_t packetSize = 3 + fMessageSize;
ENetPacket* packet = enet_packet_create(NULL, packetSize, ENET_PACKET_FLAG_RELIABLE);
stream_t stream = {packet->data, packet->dataLength, 0};
stream_write_u8(&stream, PACKET_TYPE_CHAT_MESSAGE);
stream_write_u8(&stream, player->id);
stream_write_u8(&stream, 2);
stream_write_array(&stream, fMessage, fMessageSize);
if (enet_peer_send(player->peer, 0, packet) != 0) {
enet_packet_destroy(packet);
}
}
void broadcast_server_notice(server_t* server, uint8_t console, const char* message, ...)
{
va_list args;
va_start(args, message);
char fMessage[1024];
vsnprintf(fMessage, 1024, message, args);
va_end(args);
uint32_t fMessageSize = strlen(fMessage);
uint32_t packetSize = 3 + fMessageSize;
ENetPacket* packet = enet_packet_create(NULL, packetSize, ENET_PACKET_FLAG_RELIABLE);
stream_t stream = {packet->data, packet->dataLength, 0};
stream_write_u8(&stream, PACKET_TYPE_CHAT_MESSAGE);
stream_write_u8(&stream, 33);
stream_write_u8(&stream, 2);
stream_write_array(&stream, fMessage, fMessageSize);
if (console) {
LOG_INFO("%s", fMessage);
}
player_t *player, *tmp;
uint8_t sent = 0;
HASH_ITER(hh, server->players, player, tmp) {
if (is_past_join_screen(player)) {
if (enet_peer_send(player->peer, 0, packet) == 0) {
sent = 1;
}
}
}
if (sent == 0) {
enet_packet_destroy(packet);
}
}