Синтаксис в скриптах SQF
Лучший Ответ SteelRat , 20 October 2014 - 17:50
В ините бота: null = [this, 300] ExecVM "Scripts\civil.sqf"
300 - Это радиус поиска зданий относительно бота.
this setVariable ["radLoiter", 300]; null = this ExecVM "Scripts\civil.sqf"
// Этот скрипт заставляет бота "сланяться" по городу. _unit = _this; _radius = _this getVariable ["radLoiter", 300]; // Если переменная не определена, будет применено значение по умолчанию 300 _list = position _unit nearObjects _radius; _count_l = count _list; _bPos = _list select floor random _count_l; _nBuilding = nearestBuilding _bPos; _pos = getPos _nBuilding; _wp = group _unit addWaypoint [_pos, 0]; _wp setWaypointType "MOVE"; _wp setWaypointSpeed "LIMITED"; _wp setWaypointBehaviour "CARELESS"; _wp setWaypointTimeout [5, 15, 30]; _wp setWaypointStatements ["true", "null = this ExecVM 'Scripts\civil.sqf'"];Перейти к сообщению
#1 OFFLINE
Отправлено 19 October 2014 - 08:01
#2 OFFLINE
Отправлено 19 October 2014 - 09:07
_wp setWaypointStatements ["true", "null = [this, _radius] ExecVM 'Scripts\civil.sqf'"] - не работает?Как инит вэйпоинта предать значение переменной _radius ?
#3 OFFLINE
Отправлено 19 October 2014 - 09:22
_wp setWaypointStatements ["true", "null = [this, _radius] ExecVM 'Scripts\civil.sqf'"] - не работает?Как инит вэйпоинта предать значение переменной _radius ?
Нет, насколько я понимаю, в ините строка выглядит так же(null = [this, _radius] ExecVM 'Scripts\civil.sqf'"]).
Нужно, что бы в место _radius было цифровое значение.
Сообщение отредактировал Dobryi_33RUS: 19 October 2014 - 09:23
#4 OFFLINE
Отправлено 19 October 2014 - 09:47
А ты точно проверил?!Нет
- все, что арма понимает как строчканасколько я понимаю, в ините строка выглядит так же(null = [this, _radius] ExecVM 'Scripts\civil.sqf'"]).
В mission.sqm твоя строчка (если бы писал в вейпойнте) выглядела бы так:
"null = [this, _radius] ExecVM ""Scripts\civil.sqf"";
Можно попробовать и {}
["true", {null = [this, _radius] ExecVM "Scripts\civil.sqf"}]
Сообщение отредактировал vlad333000: 19 October 2014 - 09:47
#5 OFFLINE
Отправлено 19 October 2014 - 11:21
А ты точно проверил?!Нет
- все, что арма понимает как строчканасколько я понимаю, в ините строка выглядит так же(null = [this, _radius] ExecVM 'Scripts\civil.sqf'"]).
В mission.sqm твоя строчка (если бы писал в вейпойнте) выглядела бы так:
"null = [this, _radius] ExecVM ""Scripts\civil.sqf"";
Можно попробовать и {}
["true", {null = [this, _radius] ExecVM "Scripts\civil.sqf"}]
Точнее не бывает))
Может ты меня не до понял, объясню по подробней.
Вот скрипт целиком:
Этот скрипт заставляет бота "сланяться" по городу.
В ините бота: null = [this, 300] ExecVM "Scripts\civil.sqf"
300 - Это радиус поиска зданий относительно бота.
Вопрос:
Как мне это число(в данном случае 300) передать в инит, другими словами, что бы строка в ините вейпоинта(созданной скриптом) была такая же как изначально в ините бота(null = [this, 300] ExecVM "Scripts\civil.sqf")
Сообщение отредактировал Dobryi_33RUS: 19 October 2014 - 11:32
#6 OFFLINE
Отправлено 20 October 2014 - 17:50 Лучший Ответ
В ините бота: null = [this, 300] ExecVM "Scripts\civil.sqf"
300 - Это радиус поиска зданий относительно бота.
this setVariable ["radLoiter", 300]; null = this ExecVM "Scripts\civil.sqf"
// Этот скрипт заставляет бота "сланяться" по городу. _unit = _this; _radius = _this getVariable ["radLoiter", 300]; // Если переменная не определена, будет применено значение по умолчанию 300 _list = position _unit nearObjects _radius; _count_l = count _list; _bPos = _list select floor random _count_l; _nBuilding = nearestBuilding _bPos; _pos = getPos _nBuilding; _wp = group _unit addWaypoint [_pos, 0]; _wp setWaypointType "MOVE"; _wp setWaypointSpeed "LIMITED"; _wp setWaypointBehaviour "CARELESS"; _wp setWaypointTimeout [5, 15, 30]; _wp setWaypointStatements ["true", "null = this ExecVM 'Scripts\civil.sqf'"];
#7 OFFLINE
Отправлено 20 October 2014 - 18:37
В ините бота: null = [this, 300] ExecVM "Scripts\civil.sqf"
300 - Это радиус поиска зданий относительно бота.
this setVariable ["radLoiter", 300]; null = this ExecVM "Scripts\civil.sqf"// Этот скрипт заставляет бота "сланяться" по городу. _unit = _this; _radius = _this getVariable ["radLoiter", 300]; // Если переменная не определена, будет применено значение по умолчанию 300 _list = position _unit nearObjects _radius; _count_l = count _list; _bPos = _list select floor random _count_l; _nBuilding = nearestBuilding _bPos; _pos = getPos _nBuilding; _wp = group _unit addWaypoint [_pos, 0]; _wp setWaypointType "MOVE"; _wp setWaypointSpeed "LIMITED"; _wp setWaypointBehaviour "CARELESS"; _wp setWaypointTimeout [5, 15, 30]; _wp setWaypointStatements ["true", "null = this ExecVM 'Scripts\civil.sqf'"];
Огромное спасибо!
Вот, что у меня получилось:
Скрипт заставляет ботов "сланятся" по городу и заходить друг к другу в гости))
активация, в инит: null = [this, Радиус в метрах***] ExecVM 'Scripts\civil.sqf'"];
***Радиус в метрах - относительно бота.
Сообщение отредактировал Dobryi_33RUS: 20 October 2014 - 18:46
#8 OFFLINE
Отправлено 21 October 2014 - 01:17
_wp setWaypointStatements ["true", "result = this getVariable ['radius', 0]; null = [this, result] ExecVM 'Scripts\civil.sqf'"];
вполне можно обойтись и без лишней переменной
_wp setWaypointStatements ["true", "null = [this, (this getVariable ['radius', 0])] ExecVM 'Scripts\civil.sqf'"];