Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Скрипты Здесь отвечают нормально на все новичковые вопросы. (Если вы 1 раз знакомитесь со скриптами спрашивайте)) |
Здесь отвечают нормально на все новичковые вопросы. |
› Воскресенье
› 05.06.2016
› 19:33
› Сообщение #
Slon - огромное спасибо.
Буду дальше разбиратся . С помощю этой бирки я могу работать с обектов в других скриптах? - например удалить этот обект.? Если можн то как правильно код составить .
1122
|
› Воскресенье
› 05.06.2016
› 19:35
› Сообщение #
эти переменны доступны из любого файла, а с добавлением третьего параметра
_vehicle setVariable ["missionclean","vehicle", true]; с любого компа в МультиПлеере. отсюда нюанс. - если значение true не установлено, одна и таже бирка в МП может содержать разный текст. |
› Понедельник
› 20.06.2016
› 08:40
› Сообщение #
Спс огромное .
Важная бирка - буду изучать ). Удачки. Добавлено (20.06.2016, 07:29) --------------------------------------------- Здравствуйте . Мучаюсь с одной ерундой кажется такая ерунда но ответа в - community.bistudio.com найти не могу.Подскажите если не сложно. С бирками более менее разобрался на тригерах ими пользуюсь.И проблемка с деспавном. Например респлю 2 юнита с обинаковой биркой и если удалять - _crateWR = _trigger getVariable 'crateW'; deletevehicle _crateWR; - он удаляет 1 юнита. Пользуюсь следующим : - Код { if (_x getVariable 'mission' == _trigger) then { if (alive _x) then { _cleanunits = _x getVariable 'missionclean'; if (!isNil "_cleanunits") then { call { if(_cleanunits == "ground") exitWith { ai_ground_units = (ai_ground_units -1); }; if(_cleanunits == "air") exitWith { ai_air_units = (ai_air_units -1); }; if(_cleanunits == "vehicle") exitWith { ai_vehicle_units = (ai_vehicle_units -1); }; if(_cleanunits == "static") exitWith { ai_emplacement_units = (ai_emplacement_units -1); }; }; }; }; deleteVehicle _x; }; } count allUnits + Vehicles + allDead; Находит всех юнтов,технику,трупов и удаляет - в этом плане все отлично. Но если респлю - вреки ,здания ,ящики с боеприпасами - удалить их не могу - незнаю как их включить в массив удаления -- count allUnits + Vehicles + allDead; Пробовал все - CfgVehicles. И не могу определить их названия для включения в массив удаления. Подскажите плиз. Добавлено (20.06.2016, 07:45) --------------------------------------------- И еще вопросец Неарестом можно пользоватся для нахождения бирок? Добавлено (20.06.2016, 08:40) --------------------------------------------- СПС большущее за бирки я разобрался с удалением собрал все в сет через неарест и удалил по биркам спс.
1122
|
› Понедельник
› 20.06.2016
› 11:46
› Сообщение #
Но если респлю - вреки ,здания ,ящики с боеприпасами - удалить их не могу - незнаюкак их включить в массив удаления } count allUnits + Vehicles + allDead; если твои объекты в них не попадают, надо сделать свой массив и добавлять созданные объекты в него самому. например в начале заявляеш свой массив AddObjects = []; при создании добавляеш в него предмет _ob = "Вещ" createVehicle _pos; AddObjects set [count AddObjects, _ob]; И сам массив добавляеш в скрипт проверки } count allUnits + Vehicles + allDead + AddObjects; после удаления объектов в массиве появляются дыры под названием ObjNull от них надо очищаться } count allUnits + Vehicles + allDead + AddObjects; AddObjects = AddObjects - [ObjNull]; |
› Понедельник
› 20.06.2016
› 21:20
› Сообщение #
Спс огромное разобрался.А чем дыры страшны?
И последний момент если не сложно подскажите. На примере миссии задавал растояние на респ маркеров - чтоб не респились друг на друга а щас что не делаю не как. Вот пример на маркерах и пытался на тригер поставить - у меня вначале маркер респится потом на него тригер - : Сам маркер ----- _m%1 = createMarker['mySpot%1',[_newPos select 0,_newPos select 1]]; а это мои каракули на растояние до маркера -- : avoid_missions=true; mission_spread5 = 50; mission_markers5 = ['mySpot%1']; { mission_markers5 set [count mission_markers5, _x]; } count ['mySpot%1']; _validspot = false; _i = 1; while{!_validspot} do { _i = _i + 1; _validspot = true; if (avoid_missions) then { { if (getMarkerColor _x != "" && (_position distance (getMarkerPos _x) < mission_spread5)) exitWith { _validspot = false; }; } count mission_markers5; }; }; А это на тригер и не как не запустить в работу- на маркерах работает : avoid_missions=true; mission_spr = 50; mission_trigger = _trigger; { mission_trigger set [count mission_trigger, _x]; } count _trigger; _validspot = false; _i = 1; for "_cnt" from 0 to (_count-1) step 1 do { while{!_validspot} do { _trigger = createTrigger["EmptyDetector",_newPos]; _i = _i + 1; _validspot = true; if (avoid_missions) then { { if (_trigger _x != "" && (_position distance (_trigger _x) < mission_spr)) exitWith { _validspot = false; }; } count mission_trigger; }; }; };
1122
|
› Понедельник
› 20.06.2016
› 21:52
› Сообщение #
avoid_missions=true;
mission_spr = 50; mission_trigger = _trigger; { mission_trigger set [count mission_trigger, _x]; } count _trigger; _validspot = false; _i = 1; for "_cnt" from 0 to (_count-1) step 1 do { while{!_validspot} do { _trigger = createTrigger["EmptyDetector",_newPos]; _i = _i + 1; _validspot = true; if (avoid_missions) then { { if (_trigger _x != "" && (_position distance (_trigger _x) < mission_spr)) exitWith { _validspot = false; }; } count mission_trigger; }; }; }; |
› Понедельник
› 20.06.2016
› 22:28
› Сообщение #
Triger_2 = compile preprocessFile "Triger_2.sqf";
Pos_mark_fnc3 = compile preprocessFile "Pos_mark_fnc3.sqf"; Rastonovka_obect = compile preprocessFile "Rastonovka_obect.sqf"; Triger_DESPAWN = compile preprocessFile "Triger_DESPAWN.sqf"; FFA_SHRON=['USOrdnanceBox_EP1']; FFA_Wreck=['land_chz_zaz968_1','land_chz_kamaz_korpus']; DIR_OBEKT=[0,45,60,90,180,200,250,300,360]; [[FFA_SHRON, 3,DIR_OBEKT], [getMarkerPos "center7", [10,300]],5,[100, 100],[10, 10],0.1,[0,false], [5, 20, 25], [[getMarkerColor "colorred"],100],1500,_cnt,1,0,'mySpot'] call Rastonovka_obect; _type = ((_this select 0) select 0); // массив обьектов _count = ((_this select 0) select 1); // кол-во обьектов _dirVEH = ((_this select 0) select 2); // дир обьектов _marker = ((_this select 1) select 0); // центр радиуса размещения обьекта _radius1 = (((_this select 1) select 1) select 0); // радиус размещения обьекта _radius2 = (((_this select 1) select 1) select 1); // радиус размещения обьекта _minDistance = _this select 2; // минимально допустимая дистанция до ближайшего объекта. 0 - по дефолту _minradius = ((_this select 3) select 0); // минимальный радиус поиска площадки вокруг обьекта _maxradius = ((_this select 3) select 1); // максимальный радиус поиска площадки вокруг обьекта _minGradient=((_this select 4) select 0); // минимальное значение максимального допустимого наклона (разница высот) площадки _maxGradient=((_this select 4) select 1); // максимальное значение максимального допустимого наклона (разница высот) площадки _gradientRadius = _this select 5; // радиус окружности, в пределах которой учитывается _minGradient _waterMode=((_this select 6) select 0); _onShore=((_this select 6) select 1); // true если необходима вода в радиусе 25 метров _onroad=((_this select 7) select 0); _xr=((_this select 7) select 1); // 1 радиус в котором ищется наличие дороги. _xrm=((_this select 7) select 2); // 2 радиус в котором ищется наличие дороги. _neartype=((_this select 8) select 0); // массив обьектов возле которых при заданной дистанции от обьекта нельзя ставить обьект. _xdistance=((_this select 8) select 1); // дистанция до обьектов возле которых нельзя ставить нужный нам обьект(ы). _xc = _this select 9; // кол-во проверок позиций _cnt = _this select 10; _Shron = _this select 11; _flih = _this select 12; mySpot = _this select 13; _newPos=[_marker, [_radius1,_radius2], _minDistance, [_minradius, _maxradius], [_minGradient, _maxGradient], _gradientRadius, [_waterMode,_onShore], [_onroad, _xr, _xrm], [_neartype,_xdistance],_xc,_cnt,_trigger] call Pos_mark_fnc3; sleep 2; _trigger = createTrigger["EmptyDetector",_newPos]; _trigger setTriggerType "NONE"; _trigger setTriggerArea [_triggerdis, _triggerdis, 0, false]; _trigger setTriggerActivation ['ANY', 'PRESENT', true]; _trigger setTriggerTimeout [0, 0, 0, false]; _trigger setTriggerStatements ["{isPlayer _x} count thisList > 0", "nul = [thisTrigger]call Triger_2","nul = [thisTrigger]call Triger_DESPAWN"]; _trigger setMusicEffect "22_ending2" и вот тут не знаю как задать ему респ на растоянии от друг друга. Добавлено (20.06.2016, 22:28)
1122
|
› Понедельник
› 20.06.2016
› 22:38
› Сообщение #
Чтото мудрёное ты затеял, мне вникать не охота.
|
› Понедельник
› 20.06.2016
› 23:27
› Сообщение #
Всеравно спс огромное разберусь .
Так все работает нормально но растояние не задать друг от друга. взял куча скриптов и леплю чегото). Хочу сделать чистую карту с респом всего при подходе в радиусе. Чтоб без лаг игруха шла , и заставлено всем карта была. Так уже все работает все на тригерах все кишит и без лаг. СПС большущее без помощи андруцио и тебя застрял бы на бирках и удалялках). Добавлено (20.06.2016, 23:27)
1122
|
› Понедельник
› 20.06.2016
› 23:36
› Сообщение #
Я не могу понять что ты делаеш.
Дистанция проверяется этим _position distance (getMarkerPos _x) < mission_spread5) зачем лепить всё остальное мне не понятно |
› Понедельник
› 20.06.2016
› 23:39
› Сообщение #
Вот это изначальный маркер -
if ( (_waterMode == 2) && sw && mn) then { _newPos = _testPos; call compile format [" _m%1 = createMarker[""mySpot%1"",[_newPos select 0,_newPos select 1]]; _m%1 setMarkerShape ""ICON""; _m%1 setMarkerType ""DOT""; _m%1 setmarkercolor ""colorred""; ",_cnt]; breakTo "main"; }; я поменял на выше и вывел его в набор респа все работает. А ВОТ ЭТО Я ПРАВИЛЬНО ЗАПИСАЛ В МАСИВ? --- mission_markers5 = ['_mySpot%1']; { mission_markers5 set [count mission_markers5, _x]; } count ['_mySpot%1']; ЭТО ПРАВИЛЬНО ПО СКРИПТОПИСАНИЮ ИЛИ НЕТ?
1122
|
› Вторник
› 21.06.2016
› 00:19
› Сообщение #
mission_markers5 = ['_mySpot%1'];
{ mission_markers5 set [count mission_markers5, _x]; } count ['_mySpot%1']; это ваще не пойми-что. т.ё. слова то понятные, но суть не имеет смысла |
› Вторник
› 21.06.2016
› 00:25
› Сообщение #
Цитата { _newPos = _testPos; call compile format [" _m%1 = createMarker[""mySpot%1"",[_newPos select 0,_newPos select 1]]; _m%1 setMarkerShape ""ICON""; _m%1 setMarkerType ""DOT""; _m%1 setmarkercolor ""colorred""; ",_cnt]; breakTo "main"; }; это тоже "Художественное произведение" )) куда проще было написать так Код _mk = createMarker[format ["mySpot%1",_cnt], _testPos]; _mk setMarkerShape "ICON"; _mk setMarkerType "DOT"; _mk setmarkercolor "colorred"; |
› Вторник
› 21.06.2016
› 16:31
› Сообщение #
СПС .
Повозился немного - и не знаю как включить в массив этот маркер и дать проверку - нет знаний и примеров нет под рукой. Сделал проще на маркере делаю маленкий предмет и от него пляшет проверка на дистанцию другого маркера а в конце циклов неарестом удаляю мелкий предмет (ненужный по игре) спс за подмогу.
1122
|
› Вторник
› 21.06.2016
› 16:41
› Сообщение #
mission_markers5 = [];
.............. _mk = createMarker[format ["mySpot%1",_cnt], _testPos]; _mk setMarkerShape "ICON"; _mk setMarkerType "DOT"; _mk setmarkercolor "colorred"; mission_markers5 set [count mission_markers5, _mk]; |
| |||
Чат сайта |