Вопросы

kekkomomek1941
Освоившийся

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

Спойлер

arizona.pwn(18858) : error 035: argument type mismatch (argument 1)

arizona.pwn(18851) : error 035: argument type mismatch (argument 1)

arizona.pwn(18803) : error 055: start of function body without function header

Вот сам код

Спойлер

#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;

}
{ // строка с ошибкой 18803
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)) {
        printf("Ошибка выполнения запроса: %s", mysql_error(connection)); // строка с ошибкой 18851
        mysql_close(connection);
        return 0;
    }

    // обработка результата
    mysql_store_result(connection);
    if (mysql_fetch_row_format(connection, "%d", result)) { // строка с ошибкой 18858
        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;

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

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

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


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

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

  • 0
surenescore
Освоившийся

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
surenescore
Освоившийся
#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
kekkomomek1941
Освоившийся

@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
Освоившийся

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

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


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

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

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


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

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

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

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

    • Korochansky
      От Korochansky
      Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.

      В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
      Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
       
      Полнофункциональный локальный Git: 
      Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
      Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
       
      Чистый UTF-8 (без BOM): 
      Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
      Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
       
      История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
       
      Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
       
      Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
       
      И многое другое...
       
      И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
      Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
    • KodBi
      От KodBi
      шапка
      по одиночке работают
      нужны оба
    • Vova_Zenko
      От Vova_Zenko
      Приветствую всех. Подскажите пожалуйста, как реализовать систему как на Грине или мотион(не реклама). 
       
      Готов оплатить, если найдется человек, который поможет реализовать.