Вопросы

Всем привет, пытался накопировать привязку мода по ip и вот такие вот ошибки

  открыть спойлер

Вот сам код

  открыть спойлер

Буду благодарен, если поможете

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

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


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0
#define MYSQL_INVALID_HANDLE MySQL:0
#define MYSQL_DEFAULT_HANDLE MySQL:1
#define mysql_fetch_row(%1) mysql_fetch_row_format(%1,"|")
native mysql_fetch_row_format(string[], const delimiter[] = "|", connectionHandle = 1);
native mysql_error(destination[], max_len = sizeof(destination), MySQL:handle = MYSQL_DEFAULT_HANDLE);

static stock RowIndex[20];
static stock bool:RetrieveRow[20];

stock mysql_store_result(connectionHandle = 1) {
    RowIndex[connectionHandle] = 0;
    RetrieveRow[connectionHandle] = false;
}

stock mysql_free_result(connectionHandle = 1) {
    #pragma unused connectionHandle
}

// хранение ипа
new ServerIP[16];
new ServerPort;

stock LoadServerConfig1() {
    new File:configFile = fopen("server.cfg", io_read);
    if (configFile == 0) {
        printf("ошибка открытия сервер кфг");
        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;
}

// Функция подкл к бд и пров наличия ип
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 allowservs WHERE ip='%s' AND port=%d", ServerIP, ServerPort);

    new result[1];
    if (mysql_query(connection, query)) {
        new error[128];
        mysql_error(error, sizeof(error), connection);
        printf("Ошибка выполнения запроса: %s", error);
        mysql_close(connection);
        return 0;
    }

    // обработка результата
    new row[128];
    mysql_store_result(connection);
    if (mysql_fetch_row_format(row, "|", connection)) {
        sscanf(row, "%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 (!LoadServerConfig1()) {
        printf("ошибка при загрузке конфигурации сервера");
        return 0;
    }

    // проверка сервера в бд
    if (!CheckServerInDatabase()) {
        return 0;
    }

    // продолжение загрузки мода
    return 1;
}

 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@D2DChat Спасибо, ошибки исчезли, но при запуске мода вот это в логе

Не подскажешь, что делать?

[02:10:28] [debug] Run time error 19: "File or function is not found"
[02:10:28] [debug]  mysql_error
[02:10:28] [debug]  mysql_fetch_row_format
[02:10:28] [debug] Run time error 19: "File or function is not found"
[02:10:28] [debug]  mysql_error
[02:10:28] [debug]  mysql_fetch_row_format
[02:10:28] Script[gamemodes/arizona.amx]: Run time error 19: "File or function is not found"
[02:10:28] Number of vehicle models: 0

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@kekkomomek1941 убедись, что ты используешь правильную версию плагина MySQL, совместимую с твоим скриптом. Возможно, нужно обновить плагин до последней версии.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@D2DChat Поставил последнюю версию mysql , но появилось куча варнингов и ошибок, но все равно спасибо, постараюсь решить...

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@kekkomomek1941 На опыте говорю что попробуй поперебирать версии MySQL, возможно какая то из них будет иметь эти значения и иметь значения твоего мода.

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

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

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

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

    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }  
    • Dev_Persona
      От Dev_Persona
      Приветствую всех, у меня возник такой вопрос:
       
      - хочу изменить базовую регистрацию в админке в крмп, на Болле сложную то-есть, сейчас изначально пароль от админки может быть только из цифр, хотелось бы узнать как можно было бы сделать что бы можно было использовать и цифры и буквы, вот код:
       
      case DIALOG_ADMIN_REG:
         {
          if(!response) return FixKick(playerid);
       
          if(strval(inputtext) < 100000 || strval(inputtext) > 999999) return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен быть из 6 цифр.\n", "Готово", "");
                   SetPlayerData(playerid, P_APASS, strval(inputtext));
       
                   UpdatePlayerDatabaseInt(playerid, "AdminPassword", GetPlayerData(playerid, P_APASS));
       
                   AdminAuthorization(playerid);
         }