Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Вопрос - ответ Пожалуйста помогите, |
Пожалуйста помогите, |
› Понедельник
› 15.04.2013
› 21:26
› Сообщение #
группа будет отображаться если её ввести в переменную _group
_unit addEventHandler["fired",{hint format["Group name - %1",group (_this select 0) ];}]; |
› Понедельник
› 15.04.2013
› 21:51
› Сообщение #
Стоп, если я делаю this execVM то в файле _unit = _this без всяких select , так что тогда тут выбирает select если _this , как вы говорили "ИД объекта" а не масив , который передаётся если я правильно понял через [this]? Да и кстати, группа отображается как 8 GroupName или B GroupName , не понятно то ли цифра то ли буква , и я так понимаю что GroupName = "Name"; GroupName == group(_this select 0) не даст истину из за этого символа или я ошибаюсь ?
|
› Понедельник
› 15.04.2013
› 22:03
› Сообщение #
as = [] execVM "File.sqf"
as - ИД открытого канала [] - передаваемые в файл параметры, одиночный или массив Цитата this execVM this - в ините обекта означает ИД этого объекта. this execVM - означает передачу в файл одиночного значения [this]execVM - означает передачу массива ( в данном случае в массиве только один параметр) в файле эти параметры записаны в переменную _this если это был массив то отдельные параметры вибираются из массива командой select |
› Понедельник
› 15.04.2013
› 23:15
› Сообщение #
А есть какие либо приимущества друг перед другом у вариантов запуска файлов , ну execVM call и spawn что предпочтительней для запуска другого файла ?
|
› Вторник
› 16.04.2013
› 00:07
› Сообщение #
Для знакомых с языками низких уровней разница очевидна.
разъясню разницу exec - для запуска файлов формата SQS ___ устаревший формат, придуманный ещё для Флешпоинта. похож на древний Бейсик или Паскаль. execVM - для запуска файлов формата SQF Запуск файла (открытие канала) - выделение памяти, загрузка, по окончании освобождение памяти, очистка уборщиком. Call - запуск функции (последовательное выполнение) с ожиданием выполнения, возможно возвращение параметров. Spawn - запуск функции (параллельное выполнение) перед запуском функции загружаются и не стираются до окончания миссии. Запускать файл стоит один раз, если нужно многократный запуск следует сделать функцию |
› Воскресенье
› 03.02.2019
› 14:56
› Сообщение #
Slon, ища подсказок по скриптам случайно попал на это старое сообщение. # 20 Для АРМА3 все так же?
Вызванные через Spawn и Call скрипты вовсю пользую в миссии, и думал что дойдя до конца строк скрипт отработав свое исчезает из памяти. Для примера, у меня скрипт с именем script_grupa.sqf довольно тяжеловесный в нем куча кода отслеживающего состояние вновь созданной группы и работающий пока жив хотя бы последний юнит группы (по циклу раз в секунду происходит опрос параметров, а после уничтожения группы цикл завершается). Так как script_grupa.sqf вызывается часто, на каждую вновь созданную группу, то данный скрипт в init файле компилировал для быстрого запуска таким образом: scangrupa = compile preprocessFileLineNumbers script_grupa.sqf"; По ходу миссии (сингл) создается новая группа с именем newgrupa и сразу же через spawn переходит под контроль скрипта командой: [newgrupa]spawn scangrupa.sqf; И тут для меня два вопроса. Выходит после уничтожения группы, в памяти код скрипта для данной группы остается до конца миссии? Можно какой то командой его удалять не замусоривая память? Или лучше для обработки запускать скрипт отслеживания группы через execVM таким способом? [newgrupa]execVM "script_grupa.sqf"; и так и так результат один и тот же, но вызванный по execVM скрипт работает в своем потоке и после завершения самоудалиться? И как через execVM запустить скомпилированый для частого запуска фаил? [newgrupa]execVM scangrupa.sqf; - выдает ошибку. |
› Воскресенье
› 03.02.2019
› 15:23
› Сообщение #
Что происходит с отработанными файлами я не знаю. Возможно они затираются, потому что каждый вызов читает файл с диска с последующей компиляцией. А может очистку памяти сделать не удосужились.
НО, это можно сделать самому. Команды Spawn & Call работают с функциями зарание записанными в память как переменные блоки. Каждый вызов использует одну и туже копию функции не ищя её на диске. После использования функцию можно стереть записав в переменную пустую строку. |
› Воскресенье
› 03.02.2019
› 15:59
› Сообщение #
Записав пустую строку это как?
К примеру код скрипта который активировал так [newgrupa]spawn scangrupa.sqf; _newgrupa = _this select 0; while {count units _newgrupa > 0} do { всякий там код sleep 1}; как только в группе станет 0 солдат, цикл завершится. В какую переменную вписать пустую строку? |
› Воскресенье
› 03.02.2019
› 23:22
› Сообщение #
функции создаются так,
задаётся имя функции и ей назначается код. fn_srt = { какой то код }; fn_solder = { какой то код }; fn_first = { какой то код }; итд. это всё находится в одном файле, и запускается командой execVM "file.sqf"; вызов функции производится так. as = [] Spawn fn_srt Текст функции может быть изменён в любой момент. например так fn_srt = { Другой код }; |
| |||
Чат сайта |