Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Использование функции format и оптимизация

Статус
В этой теме нельзя размещать новые ответы.

muv4ansky

Изучающий
Регистрация
30 Окт 2016
Сообщения
832
Лучшие ответы
0
Репутация
119

Приветствую, скриптеры ;)
В этом уроке вы научитесь использовать format, и оптимизировать string под него.
[HR][/HR]

И так, начнем с вопроса: "Что такое format?"
format - это функция, которая позволяет отформатировать текст, так как нам нужно, с использование string.
string - это массив состоящий из ячеек, которые будет использовать сам format.

Вот так выглядит стандартная функция format:
native format(output[], len, const format[], {Float,_}:...);
output[] - массив в который будет занесён наш отформатированный текст.
len - максимальная длинна уже отформатированной строки. Если она превысит это число, то строка попросту обрежется.
const format[] - эта константа обрабатывает непосредственно текст, который вам нужен. Так же она обрабатывает спецификаторы, при помощи которых мы будем выводить какие то данные, будь то об игроке или что то другое.


Вот список спецификаторов:
%s -спецификатор который выводит только текст(string)
%d -спецификатор который выводит только целые числа
%i -тоже самое, что и %d
%f -выводит число с плавающей точкой, к примеру: 1.25

Теперь перейдем непосредственно к использованию формата в PAWN
PHP:
new string[28 + MAX_PLAYER_NAME + 1];
format(string, sizeof(string), "%s добро пожаловать на сервер!",  GN(playerid));
SCM(playerid, -1, string);
Теперь я расскажу как правильно оптимизировать и разберем код:

И так первая строка:
PHP:
new string[28 + MAX_PLAYER_NAME + 1]; //Мы создали массив(new string[28 + MAX_PLAYER_NAME + 1])
28 - это количество символов в кавычках т.е вот тут(выделил цветом):
format(string, sizeof(string), "%s добро пожаловать на сервер!", GN(playerid));
Если подсчитать полностью эту строку, то там 30 символов, но спецификаторы надо откидывать, когда мы выделяем им ячейки. Т.е 30 - 2 = 28.
Далее у нас идет значение для первого спецификатора(выделил цветом):

Вторая строка:
PHP:
format(string, sizeof(string), "%s добро пожаловать на сервер!",  GN(playerid));
GN(playerid) - это stock(о стоках можно так-же прочитать в интернете):
PHP:
stock GN(playerid)      // узнает имя игрока
{
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof Name);
    return Name;
}
ЗАПОМНИТЕ: параметры для спецификаторов(или еще понятнее - данные, которые они должны выводить) должны указываться в таком порядке, в котором и идут.

Следующее что бросается в глаза, тем кто в PAWN еще особо много не знает, это(выделил цветом):
PHP:
new string[28 + MAX_PLAYER_NAME + 1];
MAX_PLAYER_NAME это #define в a_samp который гласит, что максимальная длинна ника игрока - 24 символа.
Рекомендую всегда писать именно MAX_PLAYER_NAME, вместо 24.
1 - эта ячейка нужна под символ конца строки: "\0". Если что, можете об этом почитать подробнее в интернете.

Теперь перейдем к выводу отформатированного текста:
PHP:
new string[28 + MAX_PLAYER_NAME + 1];
format(string, sizeof(string), "%s добро пожаловать на сервер!",  GN(playerid)); // форматирование текста
SCM(playerid, -1, string); // вывод отформатированного текста








Автор данного урока: Mike World
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу