Вопросы

grmpng
Новичок

Начинаю разработку мода с нуля но каждый раз выдаёт ошибку при создании регистрации/авторизации

D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(239) : предупреждение 215: выражение не имеет эффекта
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(239) : предупреждение 215: выражение не имеет эффекта
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(239) : ошибка 001: ожидался токен ";", но найден ")"
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(239) : ошибка 029: неправильное выражение, принят ноль
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(239) : предупреждение 215: выражение не имеет эффекта
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(243) : ошибка 029: неправильное выражение, принят ноль
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(243) : предупреждение 215: выражение не имеет эффекта
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(243) : предупреждение 215: выражение не имеет эффекта
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(243) : предупреждение 215: выражение не имеет эффекта
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(243) : ошибка 001: ожидался токен ";", но найден ")"
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(243) : ошибка 029: неправильное выражение, принят ноль
D:\SA-MP 0.3.7 Windows Server\gamemodes\new.pwn(243) : фатальная ошибка 107: слишком много ошибок на одной строке

Компиляция остановлена.

Pawn compiler 3.2.3664 Copyright (c) 1997-2016, ITB CompuPhase
Ошибок:6.
  открыть спойлер

 

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

Заметка от Cawfee , создано

3.2. Код необходимо брать в тег "Код", а код более 10 строк – еще и в "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

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


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

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

  • 0
Sleash
Завсегдатый

Ну во-первых, в одной из функций MySQL вы либо пропустили параметр, либо случайно поставили лишнюю запятую, а именно в этом фрагменте:

mysql_function_query(dbHandle,query1,true,,"LoadAcc","i",playerid);
// Указать на какой строке это не могу, ибо вы сами их не разметили :)

Так же ошибка у вас в каждой проверку символов пароля, а именно:

switch(inputtext)
{
    //...
}
// Код выше в корне неврный, так как вы указываете строку, а не символ
// Для перебора символов строки надо использовать такой код:
switch(inputtext[i])
{
    //...
}

При оповещение игрока во время авторизации о том, сколько у него осталось попыток вы выводите такой текст:

format(str,sizeof(str),"У вас осталось: %d попыток",GetPVarInt(playerid,"wrong_password"));

Это неверно, так как временная переменная wrong_password у вас начинается с нуля, то есть при постоянном вводе неверного пароля со стороны игрока будет такая ситуация:

У вас осталось: 1 попыток
У вас осталось: 2 попыток
У вас осталось: 3 попыток
У вас осталось: 4 попыток
У вас осталось: 5 попыток
*Кик игрока*

Для верного отображения используйте такой код:

format(str,sizeof(str),"У вас осталось: %d попыток",5-GetPVarInt(playerid,"wrong_password"));

Так же мне хотелось разобрать данную проверку:

if(strlen(inputtext) < 4 || strlen(inputtext) > 32 || strlen(inputtext) == 0//..

Я думаю, что 0 и так меньше 4-х, поэтому сравнение длинные строки с нулём можно убрать:

if(strlen(inputtext) < 4 || strlen(inputtext) > 32//...

Ещё я не вижу смысла создавать отдельные переменные для каждого запроса, как это вы делаете в данном фрагменте кода:

new query[120 + MAX_PLAYER_NAME];
format(query,sizeof(query),"INSERT INTO `account` (`pNick`,`pPassword`,`pLevel`) VALUES ('%s','%s','1')"),Player[playerid][pNick],inputtext);
mysql_query(dbHandle,query);
new query1[100];
format(query1,sizeof(query1),"SELECT * FROM `account` WHERE `pNick` = '%s'",Player[playerid][pNick]);
mysql_function_query(dbHandle,query1,true,,"LoadAcc","i",playerid);

Гораздо проще и логичней использовать старую переменную, ведь она уже и не нужна:

new query[120 + MAX_PLAYER_NAME];
format(query,sizeof(query),"INSERT INTO `account` (`pNick`,`pPassword`,`pLevel`) VALUES ('%s','%s','1')"),Player[playerid][pNick],inputtext);
mysql_query(dbHandle,query);
format(query1,sizeof(query),"SELECT * FROM `account` WHERE `pNick` = '%s'",Player[playerid][pNick]);
mysql_function_query(dbHandle,query,true,,"LoadAcc","i",playerid);

На этом вроде бы всё.

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


Ссылка на сообщение
  • 0
grmpng
Новичок

D:\m\gamemodes\new.pwn(60) : ошибка 017: необъявленный символ "mysql_function_query"

D:\m\gamemodes\new.pwn(241) : предупреждение 215: выражение не имеет эффекта

D:\m\gamemodes\new.pwn(241) : предупреждение 215: выражение не имеет эффекта

D:\m\gamemodes\new.pwn(241) : ошибка 001: ожидался токен ";", но найден ")"

D:\m\gamemodes\new.pwn(241) : ошибка 029: неправильное выражение, принят ноль

D:\m\gamemodes\new.pwn(241) : предупреждение 215: выражение не имеет эффекта

D:\m\gamemodes\new.pwn(244) : ошибка 017: необъявленный символ "mysql_function_query"

D:\m\gamemodes\new.pwn(244) : предупреждение 215: выражение не имеет эффекта

D:\m\gamemodes\new.pwn(244) : предупреждение 215: выражение не имеет эффекта

D:\m\gamemodes\new.pwn(244) : предупреждение 215: выражение не имеет эффекта

D:\m\gamemodes\new.pwn(244) : ошибка 001: ожидался токен ";", но найден ")"

D:\m\gamemodes\new.pwn(244) : ошибка 029: неправильное выражение, принят ноль

D:\m\gamemodes\new.pwn(244) : фатальная ошибка 107: слишком много ошибок на одной строке

 

Компиляция остановлена.

 

Pawn compiler 3.2.3664 Copyright (c) 1997-2016, ITB CompuPhase

 

 

Ошибок:7.

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

 

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

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


Ссылка на сообщение
  • 0
Sleash
Завсегдатый
  В 10/20/2023 в 20:20, Sleash сказал:

Ну во-первых, в одной из функций MySQL вы либо пропустили параметр, либо случайно поставили лишнюю запятую, а именно в этом фрагменте:

mysql_function_query(dbHandle,query1,true,,"LoadAcc","i",playerid);
// Указать на какой строке это не могу, ибо вы сами их не разметили :)

Так же ошибка у вас в каждой проверке символов пароля, а именно:

switch(inputtext)
{
    //...
}
// Код выше в корне неврный, так как вы указываете строку, а не символ
// Для перебора символов строки надо использовать такой код:
switch(inputtext[i])
{
    //...
}
Читать далее...  

 

  В 10/20/2023 в 20:20, Sleash сказал:

Ещё я не вижу смысла создавать отдельные переменные для каждого запроса, как это вы делаете в данном фрагменте кода:

new query[120 + MAX_PLAYER_NAME];
format(query,sizeof(query),"INSERT INTO `account` (`pNick`,`pPassword`,`pLevel`) VALUES ('%s','%s','1')"),Player[playerid][pNick],inputtext);
mysql_query(dbHandle,query);
new query1[100];
format(query1,sizeof(query1),"SELECT * FROM `account` WHERE `pNick` = '%s'",Player[playerid][pNick]);
mysql_function_query(dbHandle,query1,true,,"LoadAcc","i",playerid);

Гораздо проще и логичней использовать старую переменную, ведь она уже и не нужна:

new query[120 + MAX_PLAYER_NAME];
format(query,sizeof(query),"INSERT INTO `account` (`pNick`,`pPassword`,`pLevel`) VALUES ('%s','%s','1')"),Player[playerid][pNick],inputtext);
mysql_query(dbHandle,query);
format(query1,sizeof(query),"SELECT * FROM `account` WHERE `pNick` = '%s'",Player[playerid][pNick]);
mysql_function_query(dbHandle,query,true,,"LoadAcc","i",playerid);
Читать далее...  

Все ошибки, которые я процитировал выше ещё сохранились в вашем коде
В добавок мне интересен этот момент:

format(str,sizeof(str),"У вас осталось: %d попыток",5-
GetPVarInt(playerid,"wrong_password"));

Этот фрагмент выбьет ошибку, почему просто нельзя было написать так:

format(str,sizeof(str),"У вас осталось: %d попыток",5-GetPVarInt(playerid,"wrong_password"));

Ну а если вам принципиально сделать этот код в 2 строчки, то пользуйтесь обратным слешем для переноса кода:

format(str,sizeof(str),"У вас осталось: %d попыток",5-\
GetPVarInt(playerid,"wrong_password"));

@grmpng 

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру
  В 10/22/2023 в 02:11, Sleash сказал:

Этот фрагмент выбьет ошибку, почему просто нельзя было написать так:

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

Проблемы могут возникнуть лишь с переносом строк без отсутствия обратного слэша. Все остальное любой компилятор нормально жует. Да и вообще удобно так описывать так значения аргументов функций.

 

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

 

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


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

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

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

    • Jasper231
      От Jasper231
      Идет набор в команду для создания CRMP MOBILE проекта. Нам нужны
      1) Кодеры
      2) Мапперы
      3) Люди которые вообще разбираются в создании серверов
       
      об зарпалте договоримся и об остальном поговорим в вк: @haslyyyim
    • otec
      От otec
      Копия радмира
      ║☑️Название CORVUS CRMP
      ║☑️Сервер у которого есть будущее и будет
      ║☑️Адекватная администрация
      ║☑️Идут наборы в Лидеры, Админы.
      ║☑️Вступайте в Telegram: t.me/corvusgta « Вступай!
      ║☑️Вступайте в ВКонтакте: vk.com/corvus_crmp « Вступай!
      ║☑️Постоянные ПРИЗЫ - МП | Интересный Мод
      ║☑️Все новости - обновления в Telegram и ВКонтакте
      ║☑️Сайт - corvus-crmp.ru
      ║☑️Форум - forum.corvus-crmp.ru
      ║☑️Скачать лаунчер - corvus-crmp.ru
      ║☑️Заходи мы ждем тебя
      ║☑️В случае возможных ошибок пишите сюда:@corvus_help_bot
    • vicegame
      От vicegame
      Доброго времени суток уважаемые форумчане
      Хочу представить наши услуги и цены:
      GTA SAMP от 75руб
      GTA CRMP от 75 руб
      GTA MTA от 120 руб
      Для каждого тарифа неограниченные слоты, оплата только за ресурсы 
      Удобная панель управления и широкий функционал 
      Работаем с 2023 года!
       
      Также имеются БЕСПЛАТНЫЕ тарифы для (ознакомительных целей)
       
      Мощные процессоры Ryzen 5950X (Германия)
       
      Платежная система YooKassa на борту:
      Банковские карты
      SberPay
      TinkoffPay
      Yoomoney

      Ссылка на хостинг: ТЫК
    • hatriyikko
      От hatriyikko
      Требуется мобильная сборка мод + клиент + лаунчер

      Копия Радмира, Блэк Раши или что-то другое с аналогичным функционалом. Основной упор на бизнесы, чтобы всё исправно работало
       
      Напишите сколько это будет стоить?

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

      Связь тут или в тг @kovart7