• 0
Mason

2 errors, и перевод функций на новую версию MySQL

Вопросы

Приветствую всех! Перевел свой мод с MySQL R5 на R41-4. Перевел почти все, но осталось перевести 7 функций, которые я не знаю уже как перевести под новую версию, так же выбивает две ошибки при компиляции
 

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

Ну и вот функции, мне нужно лишь одно, как заменить этакое как я понял условие не существование аккаунта в базе данных  с версии R5 на R41-4?
Вот к примеру "ShowLogin"
 

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

 

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


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

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

  • 0

@Mason, что за компилятор у вас? Было бы хорошо, если бы вы скинули каталог pawno свой (подкаталог include можете не прикреплять). Согласен, при текущей реализации формируемое компилятором предупреждение вполне оправдано. Но почему оно формировалось при прежних реализациях мне непонятно. Более того, мой компилятор не формирует никаких предупреждений и сейчас (когда вы при одних обстоятельствах возвращаете какое-то значение, а при других – нет).

 

Касаемо второго, все аналогично первому пункту.

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



 

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


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

@Cawfee У меня стоит улучшений компилятор от Zeex'а 3.10.10(последняя версия на данный момент)(На всякий случай прикрепил еще инклуды вдруг все таки понадобятся)
 

Compiler.rar  2   1 МБ

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

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


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

@Mason,

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

 

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


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

@Cawfee Спасибо огромное теперь всё работает как надо. Теперь появилась еще одна проблема, с которой я столкнулся во время обновления. Связанна она с загрузкой всяких штук(бизнесов, домов и так далее). У меня в моде вроде как что-то грузиться но криво. Машины фракций например грузятся как надо и ими можно пользоваться, а вот бизнесы, дома, ганг зоны вроде как грузятся а вроде как и нет, и что с этим делать я не знаю. Пикап, лэйблтекст появляется но с пикапами взаимодействовать нельзя. Гангзоны тупо не появляются.
Вот скину код загрузки машин и загрузки бизнесов может что не так сделал а вы подправите буду очень благодарен вам!
 

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

 

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


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

up

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


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

попробуй это

stock LoadBizz()
{
    new time = GetTickCount();
    mysql_query(dbHandle, "SELECT * FROM `"TABLE_BIZZ"` ORDER BY `id` ASC ");
    
    for(new idx = 0; idx < cache_num_rows(); idx++)
    {
        cache_get_value_name_int(idx, "id", BizzInfo[idx][id]);
        cache_get_value_name(idx, "owner", BizzInfo[idx][bOwner]);
        cache_get_value_name_int(idx, "type", BizzInfo[idx][bType]);
        cache_get_value_name_int(idx, "price", BizzInfo[idx][bPrice]);
        cache_get_value_name_int(idx, "buyprice", BizzInfo[idx][bBuyPrice]);
        cache_get_value_name_int(idx, "money", BizzInfo[idx][bMoney]);
        cache_get_value_name_int(idx, "lic", BizzInfo[idx][bLic]);
        cache_get_value_name_float(idx, "x", BizzInfo[idx][bEntrx]);
        cache_get_value_name_float(idx, "y", BizzInfo[idx][bEntry]);
        cache_get_value_name_float(idx, "z", BizzInfo[idx][bEntrz]);
        cache_get_value_name_float(idx, "xt", BizzInfo[idx][bExitx]);
        cache_get_value_name_float(idx, "yt", BizzInfo[idx][bExity]);
        cache_get_value_name_float(idx, "zt", BizzInfo[idx][bExitz]);
        cache_get_value_name_float(idx, "menux", BizzInfo[idx][bMenux]);
        cache_get_value_name_float(idx, "menuy", BizzInfo[idx][bMenuy]);
        cache_get_value_name_float(idx, "menuz", BizzInfo[idx][bMenuz]);
        cache_get_value_name_int(idx, "vint", BizzInfo[idx][bInt]);
        cache_get_value_name_int(idx, "virt", BizzInfo[idx][bVirtual]);
        cache_get_value_name_int(idx, "icon", BizzInfo[idx][bMIcon]);
        cache_get_value_name(idx, "name", BizzInfo[idx][bName]);
        cache_get_value_name_int(idx, "penter", BizzInfo[idx][bEnter]);
        cache_get_value_name_int(idx, "block", BizzInfo[idx][bLock]);
        cache_get_value_name_int(idx, "product", BizzInfo[idx][bProduct]);
        cache_get_value_name_int(idx, "till", BizzInfo[idx][bTill]);
        cache_get_value_name_int(idx, "locktime", BizzInfo[idx][bLockTime]);

        BizzInfo[idx][bIcon] = CreateDynamicMapIcon(BizzInfo[idx][bEntrx], BizzInfo[idx][bEntry], BizzInfo[idx][bEntrz], BizzInfo[idx][bMIcon], 0, -1, -1, -1300.0);

        BizzInfo[idx][bPickup] = CreatePickup(12741, BizzInfo[idx][bEntrx], BizzInfo[idx][bEntry], BizzInfo[idx][bEntrz]);

        if(!strcmp(BizzInfo[idx][bOwner], "None"true))
        {
            format(string, sizeof(string), "[Бизнес продаётся]\n[%s]\n[Стоимость: $%d]\n[Чтобы купить бизнес, введите /buybiz]", BizzInfo[idx][bName], BizzInfo[idx][bPrice]);
            LABELBIZZ[idx] = Create3DTextLabel(string, 0xE4E161FF, BizzInfo[idx][bEntrx], BizzInfo[idx][bEntry], BizzInfo[idx][bEntrz], 6.000000);
        }
        else
        {
            format(string, sizeof(string), "[%s]\n[Владелец: %s]\n[Совладелец: 0]\n[Стоимость входа: $0]", BizzInfo[idx][bName], BizzInfo[idx][bOwner]);
            LABELBIZZ[idx] = Create3DTextLabel(string, 0xE4E161FF, BizzInfo[idx][bEntrx], BizzInfo[idx][bEntry], BizzInfo[idx][bEntrz], 6.000000);
        }

        BizzInfo[idx][bPickupExit] = CreatePickup(13181, BizzInfo[idx][bExitx], BizzInfo[idx][bExity], BizzInfo[idx][bExitz], BizzInfo[idx][bVirtual]);
        BizzInfo[idx][bMenu] = CreateDynamicCP(BizzInfo[idx][bMenux], BizzInfo[idx][bMenuy], BizzInfo[idx][bMenuz], 1.0, BizzInfo[idx][bVirtual], BizzInfo[idx][bInt]);
    }

    print("===============================");
    print("Результат загрузки БИЗНЕСОВ:");
    printf("Всего бизнесов [%d]", cache_num_rows());
    printf("Загружено за [%d](ms)", GetTickCount() - time);
}

stock LoadVeh()
{
    new time = GetTickCount();
    mysql_query(dbHandle, "SELECT * FROM `"TABLE_VEH"`");
    
    if(cache_num_rows())
    {
        for(new idx = 0; idx < cache_num_rows(); idx++)
        {
            cache_get_value_name_int(idx, "id", VehInfo[idx][id]);
            cache_get_value_name_int(idx, "model", VehInfo[idx][vModel]);
            cache_get_value_name_float(idx, "x", VehInfo[idx][vX]);
            cache_get_value_name_float(idx, "y", VehInfo[idx][vY]);
            cache_get_value_name_float(idx, "z", VehInfo[idx][vZ]);
            cache_get_value_name_float(idx, "fa", VehInfo[idx][vFa]);
            cache_get_value_name_int(idx, "vint", VehInfo[idx][vInt]);
            cache_get_value_name_int(idx, "world", VehInfo[idx][vWorld]);
            cache_get_value_name(idx, "colors", VehInfo[idx][vColors]);
            cache_get_value_name_int(idx, "fraction", VehInfo[idx][vFr]);
            cache_get_value_name_int(idx, "status", VehInfo[idx][vStatus]);
            cache_get_value_name_int(idx, "cost", VehInfo[idx][vCost]);
            sscanf(VehInfo[idx][vColors], "p<,>a<i>[2]", VehInfo[idx][vColor]);
            if(VehInfo[idx][vStatus] == 0 || VehInfo[idx][vStatus] == 2)
            {
                VehInfo[idx][vVehicle] = CreateVehicle(VehInfo[idx][vModel], VehInfo[idx][vX], VehInfo[idx][vY], VehInfo[idx][vZ], VehInfo[idx][vFa], VehInfo[idx][vColor][0], VehInfo[idx][vColor][1], 300);
                LinkVehicleToInterior(VehInfo[idx][vVehicle], VehInfo[idx][vInt]);
                SetVehicleVirtualWorld(VehInfo[idx][vVehicle], VehInfo[idx][vWorld]);
                Fuel[VehInfo[idx][vVehicle]] = 100;
                Engine[VehInfo[idx][vVehicle]] = false;
                Lights[VehInfo[idx][vVehicle]] = false;
            }
        }
    }

    print("===============================");
    print("Результат загрузки МАШИН:");
    printf("Всего машин [%d]", cache_num_rows());
    printf("Загружено за [%d](ms)", GetTickCount() - time);
}

 

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


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

сталкивался с абсолютно такой же проблемой, но исправить её так и не смог и вернул прежнюю версию mysql

лично у меня не записывались данные из "id" - cache_get_value_name_int(idx, "id", VehInfo[idveh][id]); 

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

например: printf("%d | %d машина загрузилась", idveh, VehInfo[idveh][id]);

у меня при такой же проверки выводилось: 1 | 0 машина загрузилась, 2 | 0 машина загрузилась, 3 | 0 машина загрузилась и так далее

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

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


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

@angel_sinvays Не помогло(

@trevison Ну лично у меня всё с ID грузит 1 | 184 машина загрузилась, то же самое пишет и в прогрузке домов, бизнесов, и.т.д. Я проверял логи mysql но там ничего нет. А загрузку всего имущества я взял с одного мода ранее слитого в интернет.

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


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

@Mason, что значит "вроде грузятся, а вроде и нет"? Если от сервера база данных пришли запрошенные данные, значит все грузится, а вот корректно ли все эти данные обрабатываются на стороне вашего играло сервера – вопрос. В любом случае через отладочный вывод проверьте, все ли запрошенные данные пришли, совпадают ли они с тем, что хранится реально на сервере базы данных.

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


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

@Cawfee Делал дебаг в функции когда встаешь на пикап ничего не пройсходит, а вот как делать дебаг как вы описали я не знаю.

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


Ссылка на сообщение
  • 0
printf("%d %d %d %d %d %s %d %d %d ", idveh, VehInfo[idveh][id], VehInfo[idveh][vModel], VehInfo[idveh][vInt], VehInfo[idveh][vWorld], VehInfo[idveh][vColors], VehInfo[idveh][vFr], VehInfo[idveh][vStatus], VehInfo[idveh][vCost]);

можешь так

или через mysql_log(ALL);

и в логах смотреть - всё ли правильно загружается

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


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

@Mason, через printf выводите все поля, что подлежат загрузке.

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


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

@trevison Вот как-то так

mysql.txt  2   2 МБ

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


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

сделай через printf, как я выше скинул

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


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

@trevison Вот что выводит лог
1 ←C)__
@►з@None 78 1 1300000  0 0 C)__
@►з@None )__
@►з@None __
@►з@None _
@►з@None
@►з@None @►з@None ►з@None з@None @None 6 27 56 Бизнес 100 0 0 50 0

Вот как я сделал это в моде:
 

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

Мне кажется или я что то сделал не так..

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

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


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

UP, проблему решил, но появилась другая проблема... В диалогах с инфой о бизнесе/заправке(то бишь это тот самый диалог который появляется когда встаешь на пикап, и кстати еще самое странное что с домами всё отлично такой казус только с бизом заправкой и гангзоной) баг с ID-шником у 1 ид отображается ID последнего элемента в базе, но по остальным параметрам никаких проблем нет. В остальном всё отлично! С гангзоной у которой 1 ид такая беда, у нее стоит дефолтный цвет, и когда я через команду передаю ее определённой банде, то после рестарта всё сбивается и снова стоит дефолтный цвет...

Прилагаю код загрузки гангзон чтобы рассказать остальную суть

 

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


Там где "idx = 0" я проставил эту фишку везде(загрузка, взаимодействие с пикапом, и так далее) если вместо 0 поставить 1 то пикап имущества(дом/биз/заправка) вообще пропадет, и гангзона тоже(кстати что самое интересное дефолтный цвет применит гангзона которая находится слева..)

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


Ссылка на сообщение
  • 0
  В 5/26/2024 в 19:38, Mason сказал:

у 1 ид отображается ID последнего элемента в базе

Читать далее...  

 

Где отображается?

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


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

@Cawfee Ну, уже у бизнесов с домами всё отлично в диалогах с информацией ID отсчитывает от 1. А у заправок в том же диалоге уже отсчёт ид идёт от 0, и это при всём том что код идентичен, в нём нет отличий, что код загрузки, что код диалога с информацией и.т.д. У гангзон проблема описана в прошлом сообщении. И вот еще тоже прикол у игрока почему-то числится что у него дом и бизнес есть но на самом деле нет, тоесть в выборе спавна отображается вариант в доме, в банке можно положить деньги на домашний счёт и счёт бизнеса.

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

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


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

Закрыто. Разобрался сам. Всем огромное спасибо за внимание!!:)

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


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

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

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

    • 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);
         }
    • MetaLife Online
      От MetaLife Online
      Приветствую! Код мода не отпровляет данные на БД все правильно подключенно и написанно(копировал с phpmyadmin) но данные не отпровляет. но с БД на сервер приходит сообщение 
       
      new MySQL:dbHandle; new MySQL:dbHandle; #define Host "127.0.0.1" #define User "root" #define DataBase "metalife" #define Password_SQL "" dbHandle = mysql_connect(Host,User,Password_SQL, DataBase);     if(mysql_errno())     {         printf("Подключение к базе данных %s не удалось.",DataBase); // %s означает строку. То есть будет выводить название базы данных которое указано в #define DataBase     }     else     {         printf("Подключение к базе данных %s успешно",DataBase);     }     format(query, sizeof(query), "INSERT INTO `Users`(`Nick`, `Password`, `Gender`, `Skin`) VALUES ('%s','%s','%d','%d')",player_name, player_info[playerid][P_PASS], player_info[playerid][P_GENDER], player_info[playerid][P_SKIN]);     mysql_tquery(dbHandle, query); SA-MP Dedicated Server ---------------------- v0.3.7-R2, (C)2005-2015 SA-MP Team [15:34:54] weburl = "www.sa-mp.com"  (string) [15:34:54]  [15:34:54] Server Plugins [15:34:54] -------------- [15:34:54]  Loading plugin: mysql [15:34:55]  >> plugin.mysql: R41-4 successfully loaded. [15:34:55]   Loaded. [15:34:55]  Loaded 1 plugins. [15:34:55]  [15:34:55] Filterscripts [15:34:55] --------------- [15:34:55]   Loaded 0 filterscripts. [15:34:55] Подключение к базе данных metalife успешно [15:34:55]  ---------------------------------- [15:34:55]  MetaLife Online [15:34:55] ---------------------------------- [15:34:55] Number of vehicle models: 1 При Регестрации не опровляються данные (фото)
      Но если записать рукой данные (фото 2)  
      выполняеться эта эта функция(фото 3(чат) и код )
      forward CheckAccountFromMySql(playerid); public CheckAccountFromMySql(playerid) {     new str[256];     if(cache_num_rows() == 0)     {         new player_name[MAX_PLAYER_NAME + 1];         GetPlayerName(playerid, player_name, MAX_PLAYER_NAME);         format(str, sizeof(str), " {ffffff}Добро пожаловать!\n Аккаунта с таким ником %s нет\nДля Регестрации придумайте и введите пароль в поле ниже!", player_name);         SPD(playerid, DLG_REG, DSP, "Регестрация", str, "Войти", "Выйти");     }     else     {         SCM(playerid, color_green, "Вы  зарегестрырованы!");     }     return 1; } // выполняеться else  ошибу и варнинги mysql
      [15:47:39] [WARNING] mysql_connect: no password specified (C:\Project\Metalife\gamemodes\MetaLife.pwn:92) dbHandle = mysql_connect(Host,User,Password_SQL, DataBase); // 92 строка