Проблема с сетью Game Maker при привязке порта

Я хочу создать простой сервер с использованием GameMaker 1.4. Но эта функция никогда не работает с первой попытки, не знаю почему..

var networkType = network_socket_tcp;
var port = 50000;
var maxClients = 32;
var bufferSize = 1024;
var bufferType = buffer_fixed;
var bufferAlign = 1;

server = network_create_server(networkType, port, maxClients);

global.buffer = buffer_create(bufferSize,bufferType,bufferAlign);
sockets = ds_list_create();

if server s_msg("Server is up! Port: " + string(port));
else s_msg("Server is down!");

Сообщение будет "Сервер не работает". Не имеет значения порт или тип сети. Когда я пробую тот же код с циклом, он работает со второй попытки. Как это:

var networkType = network_socket_tcp;
var port = 50000;
var maxClients = 32;
var bufferSize = 1024;
var bufferType = buffer_fixed;
var bufferAlign = 1;

server = network_create_server(networkType, port, maxClients);

//////////////////////////////////////////////////////

while (!server && port < 65535){
   port++;
   server = network_create_server(networkType, port, maxClients);
}

//////////////////////////////////////////////////////

global.buffer = buffer_create(bufferSize,bufferType,bufferAlign);
sockets = ds_list_create();

if server s_msg("Server is up! Port: " + string(port));
else s_msg("Server is down!");

Здесь сообщение будет отображаться на "Сервер вверх! Порт: 50001". Как я уже сказал, независимо от порта... он может быть установлен на 50001 в начале, что приведет к созданию сервера на 50002. Может ли кто-нибудь указать на мою ошибку?

1 ответ

РЕШЕНИЕ (от пользователя Humayun на форумах GM): network_create_server возвращает индекс от 0, поэтому его нельзя проверить как false/true, так как первый индекс будет 0, который возвращает false. Объясняет, что со второй попытки я создавал второй экземпляр переменной sever с индексом 1 и возвращал значение true.

Другие вопросы по тегам