Всем привет!
На днях я столкнулся с интересным способом работы с sscanf без вызова функции sscanf().
Наткнулся я на неё случайно когда листал другой форум.
Подробно о ней я узнал на
.
Для начала приведу простой пример команды на DC_CMD с использованием extract
Допустим у нас есть такая команда:
Как видно здесь я использую обычный sscanf.
А теперь другой формат данной команды через extract:
Как мы видим, перед нами появилась скорее вам не понятная конструкция.
Однако это действительно работает.
<var1> - переменная которую нужно парсить.
Чтобы было наглядно:
Это та же первая переменная которую мы указываем в функции sscanf.
<vars> - это переменные в которые нужно записать значения.
<код если не соответствует> - это тот же return в обычной нам функции sscanf.
Здесь вы можете разместить любой код, который будет выполняться если значения в var1 не соответствуют заданным в vars.
Если вы хотите в парсинге использовать другой разделитель, а не пробел, то после var1 вы должны вставить вот это:
Разделитель это и есть то самое значение которое вы должны заменить на своё.
Пример:
Таким образом мы скажем sscanf'у что хотим использовать символ | как разделитель.
Переменные в <vars> создаются через обычный new.
Но перед переменной должна присутствовать приставка (кроме целочисленных переменных, для них приставка не нужна).
Например создание трёх переменных (a, b, c):
Теперь разберём какие же типы переменных мы указали.
Переменная a - данную переменную sscanf будет использовать как целочисленное (пример: 5).
Переменная b - данная переменная имеет приставку string, что даёт ей тип строки, в квадратных скобках обязательно нужно указать размер строки, как и в обычном new (пример: Привет).
Переменная c - данная переменная имеет приставку Float, что даёт ей вещественный тип (пример: 0.5).
Некоторые типы переменных которые поддерживает extract:
- без приставки - целочисленный тип (пример: 1)
- приставка string - строковой тип (пример: Привет)
- приставка Float - вещественный тип (пример: 1.60)
- приставка player - аналог символу u (пример: Joker_Villen или его id: 1)
- приставка hex - бинарное число (пример: 0xFF)
Это все типы которые мне удалось раздобыть в той теме на оф. форуме SAMP.
extract поддерживает создание переменных которые не обязательно должны присутствовать в строке для парсинга.
Объявлять данные переменные нужно как и обычные, но указывать значения прямо в new:
Таким образом если в исходной строке для парсинга будет отсутствовать строковой параметр, он будет равняться значением которое мы указали.
Я смог рассказать всё что понял со своим знанием английского из той темы и описал это здесь.



Сообщений: 1 798
Регистрация:
Skype: None