Вопросы

Всем привет, нужно в моде сделать, чтобы при загрузке сервера брало айпи и порт с server.cfg и подключалось к базе данных, после чего в ней искало bind:port с server.cfg , и если этого айпи там не окажется, то сервер выключится, а если айпи найдется, то ничего не произойдет

Отредактировано пользователем kekkomomek1941

Поделиться сообщением


Ссылка на сообщение

1 ответ на этот вопрос

  • 0

Не забывай что это только мой пример, весь код ты должен оптимизировать под себя:

 

// Переменные для хранения IP и порта
new ServerIP[16];
new ServerPort;

}
stock LoadServerConfig() {
    new File:configFile = fopen("server.cfg", io_read);
    if (configFile == 0) {
        printf("Ошибка открытия server.cfg");
        return 0;
    }
    
    new line[128];
    while (fread(configFile, line)) {
        if (sscanf(line, "bind %s", ServerIP)) {
            continue;
        }
        if (sscanf(line, "port %d", ServerPort)) {
            continue;
        }
    }
    fclose(configFile);
    return 1;
}

// Функция подключения к базе данных и проверки наличия IP:Port
stock CheckServerInDatabase() {
    new MySQL:connection;
    new query[256];

    // Подключение к базе данных
    connection = mysql_connect("host""user""password""database");
    if (connection == MYSQL_INVALID_HANDLE) {
        printf("Ошибка подключения к базе данных");
        return 0;
    }
    
    // Формирование запроса
    format(query, sizeof(query), "SELECT COUNT(*) FROM servers WHERE ip='%s' AND port=%d", ServerIP, ServerPort);
    
    new result[1];
    if (mysql_query(connection, query)) {
        printf("Ошибка выполнения запроса: %s", mysql_error(connection));
        mysql_close(connection);
        return 0;
    }
    
    // Обработка результата запроса
    mysql_store_result(connection);
    if (mysql_fetch_row_format(connection, "%d", result)) {
        if (result[0] == 0) {
            printf("Сервер с IP %s и портом %d не найден в базе данных. Отключение...", ServerIP, ServerPort);
            mysql_close(connection);
            SendRconCommand("exit");
            return 0;
        }
    }
    
    mysql_free_result(connection);
    mysql_close(connection);
    return 1;
}

public OnGameModeInit() {
    // Считывание конфигурации сервера
    if (!LoadServerConfig()) {
        printf("Ошибка при загрузке конфигурации сервера");
        return 0;
    }
    
    // Проверка сервера в базе данных
    if (!CheckServerInDatabase()) {
        return 0;
    }

    // Продолжение инициализации игрового режима
    return 1;
}

Подробно объясню что оно делает:

  1. В функции LoadServerConfig читаются IP и порт из файла server.cfg.
  2. В функции CheckServerInDatabase происходит подключение к базе данных и выполняется запрос на проверку наличия записи с соответствующими IP и портом.
  3. Если запись не найдена, сервер отключается с помощью команды SendRconCommand("exit").
  4. Если запись найдена, инициализация сервера продолжается.

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • fresko241
      От fresko241
      Привет, я только обучаюсь разработке. Хочу узнать у меня есть радио, музыка играет. Но как можно сделать чтобы музыка играла только в машине и слышна была и людям которые возле нее.


       
      CMD:radio(playerid,params[])
      {
              ShowPlayerDialog(playerid,150,DIALOG_STYLE_LIST,"Включить радио","[1] Кайф ты поймала\n[2] Седая ночь\n[3] Руки вверх ай яй яй\n[4] Radio ZaycevFM\n","Выбрать","Отмена");
      }
      CMD:radiostop(playerid,params[])
      {
              if(!IsValidObject(3)) return SendClientMessage(playerid,0xff0000AA,"Вы не включали радио");
          RemovePlayerAttachedObject(playerid, 3);
          StopAudioStreamForPlayer(playerid);
          SendClientMessage(playerid,0xff0000AA,"Вы сняли наушники и выключил плеер.");
          return 1;
      }