For VPSs with versions of wine where sending UDP is broken (mine). Pair with netcat and an infinite loop in bash on a timer.
myObject = object_add();
object_set_persistent(myObject, true);
object_event_add(myObject, ev_step, ev_step_end, '
if(instance_exists(GameServer))
{
if(t <= 0)
{
t = 30*15;
var noOfPlayers;
noOfPlayers = ds_list_size(global.players);
if(global.dedicatedMode)
noOfPlayers -= 1;
var lobbyBuffer;
lobbyBuffer = buffer_create();
set_little_endian(lobbyBuffer, false);
parseUuid("b5dae2e8-424f-9ed0-0fcb-8c21c7ca1352", lobbyBuffer); // Message Type "register"
write_buffer(lobbyBuffer, GameServer.serverId);
write_buffer(lobbyBuffer, global.gg2lobbyId);
write_ubyte(lobbyBuffer, 0); // TCP
write_ushort(lobbyBuffer, global.hostingPort);
write_ushort(lobbyBuffer, global.playerLimit);
write_ushort(lobbyBuffer, noOfPlayers);
write_ushort(lobbyBuffer, 0); // Number of bots
if(global.serverPassword != "")
write_ushort(lobbyBuffer, 1);
else
write_ushort(lobbyBuffer, 0);
write_ushort(lobbyBuffer, 7); // Number of Key/Value pairs that follow
writeKeyValue(lobbyBuffer, "name", global.serverName);
writeKeyValue(lobbyBuffer, "game", GAME_NAME_STRING);
writeKeyValue(lobbyBuffer, "game_short", "gg2");
writeKeyValue(lobbyBuffer, "game_ver", GAME_VERSION_STRING);
writeKeyValue(lobbyBuffer, "game_url", GAME_URL_STRING);
writeKeyValue(lobbyBuffer, "map", global.currentMap);
write_ubyte(lobbyBuffer, string_length("protocol_id"));
write_string(lobbyBuffer, "protocol_id");
write_ushort(lobbyBuffer, 16);
write_buffer(lobbyBuffer, global.protocolUuid);
f = file_text_open_write("lobbydata");
while(buffer_bytes_left(lobbyBuffer) > 0)
{
val = read_ubyte(lobbyBuffer);
//upper = floor(val/16);
//lower = val mod 16;
//file_text_write_string(f, chr(48+upper));
//file_text_write_string(f, chr(48+lower));
file_text_write_string(f, chr(val));
}
file_text_close(f);
buffer_destroy(lobbyBuffer);
}
t -= global.delta_factor;
}
');
o = instance_create(0, 0, myObject);
o.t = 0;
//