Question

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;

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

Edited by kekkomomek1941

Share this post


Link to post
Share on other sites

5 answers to this question

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

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

Share this post


Link to post
Share on other sites
  • 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;
}

 

Share this post


Link to post
Share on other sites
  • 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

Share this post


Link to post
Share on other sites
  • 0
kekkomomek1941
Освоившийся

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

Share this post


Link to post
Share on other sites
  • 0
surenescore
Освоившийся

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • ВасилийСталин
      By ВасилийСталин
      VERDICT PROJECT - V:ACE
       
      Соревновательный проект на платформе SA-MP, вдохновлённый духом Counter-Strike: тактические перестрелки, честный рейтинг и ванильное PVP.
      В разработке, не используются ресурсы, из открытых источников. Всё строится с нуля, собственный игровой мод, полностью кастомный интерфейс и игровой лаунчер.
      Что мы разрабатываем:
       
      - Рейтинговый режим с подбором по ELO. Равные соперники, честные матчи, путь от новичка до вершины таблицы.
      - Полностью кастомный интерфейс (CEF): меню, лобби, магазин и статистика такого уровня, какого на SA-MP почти не встретишь.
      - Легионеры - уникальные оперативники с индивидуальным дизайном и редкостью, открываются через боевой пропуск или чёрные ячейки (кейсы).
      - Скины на оружие и кейсы - коллекционная система в духе CS. -> В активной разработке
      - Киберспортивные команды: теги, ростеры, матчи команда против команды.
      - Тренировка аима, система рангов, ежедневные награды и не только.
       
      Продуманный баланс и внимание к деталям ванильного сражения - то, ради чего мы за это взялись.
      Проект уже на серьёзной стадии разработки. Мы открываем сообщество раньше официального анонса, чтобы первые скриншоты, новости и дата старта достались тем, кто был с нами с самого начала. Мы всегда рады открытой критике, или советам - сделаем игру лучше для всех!
      Подписывайтесь, чтобы не пропустить официальное заявление о запуске и первые материалы проекта.
       
      Группа VK: https://vk.ru/verdictcs
      Официальная почта: verdictproject@mail.ru
    • Kevin_McCarthy
      By Kevin_McCarthy
      🔒 ОТКРЫТИЕ НАБОРА НА ЗАКРЫТОЕ БЕТА-ТЕСТИРОВАНИЕ (ЗБТ)!
      Друзья! Мы выходим на самый ответственный этап разработки Brilliant RP. Проект уже практически готов к полноценному запуску, но перед тем как открыть двери для всех игроков, нам нужно тщательно проверить каждую систему, каждую работу и каждую строчку кода.
      Именно поэтому мы объявляем о старте Закрытого Бета-Тестирования!
      🏆 ТОП-3 ТЕСТЕРА ПОЛУЧАТ КРУТЫЕ ПРИЗЫ!
      Мы высоко ценим время и вклад каждого участника. Тестеры, которые проявят наибольшую активность, найдут больше всего уникальных багов и подробно опишут их в нашей Google-форме, получат ценные награды:
      🥇 1 МЕСТО: 3000 рублей на кошелек, 100.000$ игровой валюты, и Diamond VIP на 30 дней
      🥈 2 МЕСТО: 2000 рублей на кошелек, 75.000$ игровой валюты, и Diamond VIP на 30 дней
      🥉 3 МЕСТО: 1000 рублей на кошелек, 50.000$ игровой валюты, и Diamond VIP на 30 дней
      📝 Как стать участником ЗБТ?
      Заполни заявку на участие: 👉 https://vk.ru/gtasamp_brilliantrp
      Дождись одобрения.
    • OOLOAIS
      By OOLOAIS
      Ищу скрипт для самп/crmp который может скопировать акссесуары с аризоны/родины пж помогите