- 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;
}
Подробно объясню что оно делает:
В функции LoadServerConfig читаются IP и порт из файла server.cfg.
В функции CheckServerInDatabase происходит подключение к базе данных и выполняется запрос на проверку наличия записи с соответствующими IP и портом.
Если запись не найдена, сервер отключается с помощью команды SendRconCommand("exit").
Если запись найдена, инициализация сервера продолжается.
Эта тема закрыта для публикации ответов.
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
-
Похожий контент
-
От Korochansky
Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.
В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
Полнофункциональный локальный Git:
Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
Чистый UTF-8 (без BOM):
Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
И многое другое...
И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
-
-
kekkomomek1941 Освоившийся 1
Всем привет, нужно в моде сделать, чтобы при загрузке сервера брало айпи и порт с server.cfg и подключалось к базе данных, после чего в ней искало bind:port с server.cfg , и если этого айпи там не окажется, то сервер выключится, а если айпи найдется, то ничего не произойдет
Отредактировано пользователем kekkomomek1941
Поделиться сообщением
Ссылка на сообщение