Самые известные баги стандартного компилятора «Pawno» и их исправление.
return «Some string»;
Проблема
Возвращая строки напрямую компилятор падает ( краш ).
Решение
Создайте для вашей строки массив, далее возвратите её ( не рекомендуется возвращать большие строки ).
static const
some_text[] = «Some String»;
string = (a == 5) ? «это пять» : «это не пять»;
Проблема
Строки конкатенируются (объединяются, соединяются) компилятором в одну, например это будет скомпилировано в одну строку «Hello World»:
string = «Hello» » » «World»;
Однако компилятор на засчитывает «:» как часть тернарного оператора и компилятор засчитывает это за ошибку скриптера. Обычно в таких случаях ( а обычно это так и есть ) появляется вот такая ошибка:
errors.pwn(11) : error 001: expected token: «-string end-«, but found «-identifier-»
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Решение
Чтобы это исправить, просто заключите строки в круглые скобки, хочу заметить, что на работоспособность кода это никак не влияет.
string = (a == 5) ? («это пять») : («это не пять»);
new
gGlobalVariable = SomeFunction();
Проблема
Вызывая функцию для инициализации глобальной переменной компилятор падает ( краш ).
Решение
Вызовите функцию для инициализации переменной в «OnGameModeInit», «OnFilterScriptInit», или «main»:
public OnGameModeInit()
Проблема
Максимальная длина строки в компиляторе 512 символов ( считая с завершающим символом ‘’ ).
Решение
Сократить текст со строкой. Обычно люди делают это так:
format(str, sizeof(str),
«Очень длинная строка»,
other,
parameters);
Это разделяет вызов функции на 4 строки, делая её короче. Однако это решение далеко не хорошее. Даже иногда может откуда не возьмись возникнуть падения компилятора ( краш ).
stock SomeFunction()
Источник: