Массивы
Скриптовый движок для GTA San Andreas позволяет использовать массивы. Эту возможность я добавил и в генератор. Я рекомендую научится ими пользоваться, так как это существенно ускоряет разработку миссий и позволяет сократить количество ручного кода при работе с множеством данных.
Инициализация
Начиная с версии 7.0 встроен упрощённый синтаксис инициализации массивов, который будет самостоятельно определять контекст и начало массива. Нам останется только указать его размер:
Здесь: 10 — это количество элементов в массиве. Модификатор static
создаёт массив глобальных переменных, а без него будет создан массив локальных переменных. Между символами <
и >
указывается тип данных (генератор поддерживает практически все типы). А carArray и pedArray — имена массивов. Также поддерживается старый синтаксис инициализации, он выглядит так:
Метод global_array
будет создавать глобальный массив, а local_array
— локальный массив. При этом модификатор static уже не будет определять контекст. Его, как и в случае с обычными переменными, можно использовать внутри методов. Начальный индекс переменной вычисляется автоматически для обоих вариантов. Также генератор делает нужные отступы, если тип данных это требует (типы vString, sString).
Если нужно определить массив самостоятельно, то используется перегрузка методов global_array и local_array, передав первым параметром индекс, который будет первым элементом:
Установка значений
Мы можем обращаться к массиву по индексу (индекс указывается в квадратных скобках) элемента и давать команды, которые есть в указанного типа данных:
Если тип требует более одной переменной, то генератор это будет учитывать и делать нужные отступы. Это требуют только два типа данных — sString и vString:
Мы увидим смещение в результате:
Заметно, что никаких массивов не используется на выходе. Здесь активно внедрён трюк с переменными, который позволяет объединять переменные в массив.
Метод each
Мы можем вызвать метод each
, который будет делать указанное действие с каждым элементом массива:
Внутри этой команды "вшит" цикл, который требует переменную-счётчик. Параметр elem
нужно для того, чтобы работать с элементом массива. Мы можем использовать и ручной цикл, передав переменную счётчик в индекс массива:
Оба варианта будут генерировать одно и тоже. Только второй делает это быстрее. Вот результат:
В методе each нельзя использовать команды break и continue!
Last updated