shape1
shape2
shape3
shape4
shape7
shape8

Ошибка при компилировании 017 и 107

Саша55555

Новичок
Пользователь
15.09.2016
0
0
0
Добрый вечер, уважаемые пользователи! Прошу помощи! Прочитав урок по созданию сервера с нуля Та статья Я делал все как нужно и вдруг возникла при компиляции ошибка:

C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(25) : error 017: undefined symbol "query"
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(25) : error 017: undefined symbol "query"
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(25) : error 017: undefined symbol "TABLE_ACCOUNT"
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(25) : fatal error 107: too many error messages on one line
Строка с ошибкой

format(query,sizeof(query), "SELECT * FROM "TABLE_ACCOUNT" WHERE name = '%s' LIMIT 1",pname);
Помогите пожалуйста!

 

noname_idk

Гуру
Пользователь
19.07.2015
4 046
7
787
0
Скриптер
Выше: new query[65];

65 - размер массива. Чтобы его найти, нужно найти длину текста, который Вы форматируете (в данном случае текст, который в кавычках). Я взял размер с запасом.

"TABLE_ACCOUNT" - название таблицы с аккаунтами (замените на свое, например, `accounts`)

 

Саша55555

Новичок
Пользователь
15.09.2016
0
0
0
@Elrmrnt-Kritik, обьясните понятнее

Чтобы его найти, нужно найти длину текста, который Вы форматируете (в данном случае текст, который в кавычках). Я взял размер с запасом.

"TABLE_ACCOUNT" - название таблицы с аккаунтами (замените на свое, например, `accounts`)
 
Дополнение к сообщению:
@Elrmrnt-Kritik,вставил  new query[65];

Теперь такое:

Код:
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : error 001: expected token: "-string end-", but found "-identifier-"C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : error 017: undefined symbol "TABLE_ACCOUNT"
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : warning 215: expression has no effect
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : warning 215: expression has no effect
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : error 001: expected token: ";", but found ")"
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : fatal error 107: too many error messages on one line
 

noname_idk

Гуру
Пользователь
19.07.2015
4 046
7
787
0
Скриптер
@Саша55555, функция format записывает нужный Вам текст в переменную.

Например, Вы хотите вывести в чат свой nick-name и level. У функции вывода текста в чат всего 3 аргумента: ID игрока (которому отправляем), цвет, текст. Но аргументы здесь использовать нельзя. Поэтому используем format.

Структура такова: format(куда записываем, какой размер, что записываем, аргументы);

Например, format(string, 128, "Здесь ваш текст %d", a);

Таким образом, мы записали в переменную string текст, максимальная длина которого 128 символов, использовав аргумент a. Можно, чтобы длину подсчитывала система, использовать функцию sizeof. Результат будет следующий:

format(string, sizeof(string), "Здесь ваш текст %d", a);

Далее, переменная string у нас осталась не объявлена. То есть компилятору она неизвестна. Соответственно, нужно ее объявить.

new string[];

В квадратных скобках Вы должны указать количество символов, которое будете записывать в эту переменную. Можно считать вручную, а можно использовать тот же notepad++. У меня длина текста составляет 56 символов (при условии, что переменная a содержит не больше трех знаков (то есть двух- или однозначное число). Но стоит учесть еще запас, грубо говоря, прибавляйте всегда 5 символов и будет Вам радость. 56+5 = 51. В строке выше я указал 65, поскольку делал все на глаз (прикидывал длину).

 

Саша55555

Новичок
Пользователь
15.09.2016
0
0
0
@Elrmrnt-Kritik, как исправить теперь ошибку? Я посчитал и всего 95 + 5 - 100 вписал и те же ошибки

Код:
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : error 001: expected token: "-string end-", but found "-identifier-"
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : error 017: undefined symbol "TABLE_ACCOUNT"
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : warning 215: expression has no effect
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : warning 215: expression has no effect
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : error 001: expected token: ";", but found ")"
C:\Users\Администратор\Desktop\srv-pawno-crmp-c3-win\gamemodes\new.pwn(26) : fatal error 107: too many error messages on one line
 

noname_idk

Гуру
Пользователь
19.07.2015
4 046
7
787
0
Скриптер
@Саша55555, ну, а TABLE_ACCOUNT говорил же Вам заменить на название таблицы с аккаунтами. 

 

Preskat

Освоившийся
Пользователь
21.12.2016
5
30
0
26
Попробуй ка мой вариант 

Код:
new query_string [ 58 ];
format  ( query_string, sizeof query_string, "SELECT * FROM `accounts` WHERE name = '%s' LIMIT 1",pname);
 
Последнее редактирование модератором: