Перейти к содержимому


Фотография

спавн движущейся техники выполнением действия на объекте


Лучший Ответ Djon , 26 January 2015 - 17:58

sonicand,

 

Это меню напишите в init.sqf 

menu = car addAction ["Родить танк и отправить на прогулку", {_hndl = "" execVM "tank.sqf";}, "", 1, true, true, "", "(_this distance _target) < 5"];// будет показан при дистанции меньше 5 метров	

Это файл tank.sqf

_group = createGroup east; 
     ut1 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"];	
	 ut2 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"];	
	 ut3 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"]; // три бота на маркере t
     tn1 = "B_MBT_01_TUSK_F" createVehicle (getMarkerPos "t_1"); // танк на маркере t_1	 
	 sleep 1; // задержка 1 секунда
	 ut1 moveInAny tn1;
	 ut2 moveInAny tn1;
	 ut3 moveInAny tn1; //все трое сядут в технику без анимации
     [_group, getMarkerPos "t_1", 500 ] call BIS_fnc_taskPatrol; // патрулирование территории с радиусом 500 метров вокруг маркера t_1

Сразу скажу я не стал вникать в суть того скрипта который вы написали, просто написал то о чем вы говорили. Надеюсь как и что изменить для получения желаемого объяснять не нужно подробнее.

Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 OFFLINE   sonicand

sonicand

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ukraine

Отправлено 26 January 2015 - 17:27

в а2 делал такую штуку, стоит объект, к которому подходиш, и появляется вывести танк на дистанции 50м, 100м, и т.д 

появляется танк, и сразу начинает рандомно ездить недалеко от места спавна, суть вопроса заключается в том, что он не работает на а3 (файлы менял, тобиш юниты все из армы 3, экипажи и прочяя хрень, при переносе этих скриптов иногда получалось получить спавн танка но он оказывался без экипажа и не двигался вообще) в самой карте стоят невидимые вертолетные площадки для спавна техники в нужном месте с названиями pz50, pz100 и т.д

 

инит объекта в которому подхожу и в котором выскакивает сообщение о спавне 

 

this addaction ["Вывести танк на дальности 50м","scripts\spawn_tank50.sqf"]; this addaction ["Вывести танк на дальности 100м","scripts\spawn_tank100.sqf"];this addaction ["Вывести танк на дальности 150м","scripts\spawn_tank150.sqf"] и т.д

 

содержимое файла scripts\spawn_tank50.sqf

 

tanks=[pz50];

 

 

 

spawn = tanks execvm "scripts\spawn_pz.sqf";

 

 

содержимое файла scripts\spawn_pz.sqf

 

_ins = (tanks select 0);

_tank = "ACE_T90A" createvehicle getpos _ins;
_tank setdir 320;
_randomgroup = creategroup east;
_randomcrew = _randomgroup createUnit ["RU_Soldier_Crew", getpos _ins, [], 0, "FORM"];
[_randomcrew] join grpNull;
deletegroup _randomgroup;
_randomcrew setcombatmode "BLUE";
_randomcrew moveindriver _tank;
_tank setcombatmode "BLUE";
_tank lock TRUE;
 
tank_patrol = [_tank,_randomcrew,_ins] execvm "scripts\patr_pz.sqf"; 
tanks=[];
 
содержимое файла scripts\patr_pz.sqf

_tank = _this select 0;
_randomcrew = _this select 1;
_ins = _this select 2;
_tank addEventHandler ["hit", {hint format[localize "STR_tank_hit",_this select 1,_this select 2]}];
_pos = getpos _ins;      // gl position
_2glname = call compile (str _ins + "_1");
_2pos = getpos _2glname; // "patrol" position
_tank domove _2pos;
 
for [{_i=0}, {_i<1}, {_i=_i}] do
{
sleep 0.1;
if (canmove _tank) then
{
_distance2=(_tank distance _2pos);
sleep 1;
if (_distance2< 15) then
{
_tank domove _pos;
};
 
_distance=(_tank distance _pos);
sleep 1;
if (_distance < 15) then
{
_tank domove _2pos;
};
}
else 
{
deletevehicle _randomcrew;
_tank engineOn false;
};
if (!alive _tank) then
{
deletevehicle _randomcrew;
_i=1;
};
};
_distance_kill=_tank distance player;
hint format[localize "STR_tank_destroyed",_distance_kill];
_tank removeEventHandler ["hit", 0];
sleep 1;
hint "";
sleep 30;
deletevehicle _tank;
 
 

 

 
 

  • 0

#2 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 26 January 2015 - 17:58   Лучший Ответ

sonicand,

 

Это меню напишите в init.sqf 

menu = car addAction ["Родить танк и отправить на прогулку", {_hndl = "" execVM "tank.sqf";}, "", 1, true, true, "", "(_this distance _target) < 5"];// будет показан при дистанции меньше 5 метров	

Это файл tank.sqf

_group = createGroup east; 
     ut1 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"];	
	 ut2 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"];	
	 ut3 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"]; // три бота на маркере t
     tn1 = "B_MBT_01_TUSK_F" createVehicle (getMarkerPos "t_1"); // танк на маркере t_1	 
	 sleep 1; // задержка 1 секунда
	 ut1 moveInAny tn1;
	 ut2 moveInAny tn1;
	 ut3 moveInAny tn1; //все трое сядут в технику без анимации
     [_group, getMarkerPos "t_1", 500 ] call BIS_fnc_taskPatrol; // патрулирование территории с радиусом 500 метров вокруг маркера t_1

Сразу скажу я не стал вникать в суть того скрипта который вы написали, просто написал то о чем вы говорили. Надеюсь как и что изменить для получения желаемого объяснять не нужно подробнее.


Сообщение отредактировал Djon: 26 January 2015 - 18:09

  • 0

#3 OFFLINE   sonicand

sonicand

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ukraine

Отправлено 26 January 2015 - 22:22

все отлично, работает, спасибо за совет


  • 0

#4 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 26 January 2015 - 22:24

sonicand, Да пожалуйста


  • 0

#5 OFFLINE   sonicand

sonicand

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ukraine

Отправлено 26 January 2015 - 23:47

все конечно хорошо, а как теперь убрать разбитую технику?


  • 0

#6 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 26 January 2015 - 23:53

sonicand, В целом от начала до конца опишите, что вы хотите с этим делать


  • 0

#7 OFFLINE   sonicand

sonicand

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ukraine

Отправлено 27 January 2015 - 00:11

ну вот к примеру я заспавнил технику, в моем случае это полигон, я ее убил, и что б она не садила фпс (в случае если ее будет много) да и не мешала стрелять нужно ее убрать


Сообщение отредактировал sonicand: 27 January 2015 - 00:12

  • 0

#8 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 27 January 2015 - 04:10

ну вот к примеру я заспавнил технику, в моем случае это полигон, я ее убил, и что б она не садила фпс (в случае если ее будет много) да и не мешала стрелять нужно ее убрать

В инит отспавненой техники

0 = this spawn {
    _veh = _this;
    _delTimer = 30; // Через 30 сек, разбитая техника удаляется, выставляете значение по вкусу
    
    waitUntil {sleep 1; !alive _veh}; // приостановка исполнения дальнейшего кода, пока техника цела

    sleep _delTimer;
    deleteVehicle _veh;
};

При использовании кода выше, в ините объекта в редакторе, комментарии удалить!


Сообщение отредактировал SteelRat: 27 January 2015 - 04:08

  • 0

#9 OFFLINE   sonicand

sonicand

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ukraine

Отправлено 27 January 2015 - 12:51

немного изменил скрипт для того что б вставить его в sqf файл конкретной техники, получилось так

 

_group = createGroup east; 
     _veh = "rhs_btr80_vdv" createVehicle (getMarkerPos "b");
    _delTimer = 10;    
    waitUntil {sleep 1; !alive _veh};
    sleep _delTimer;
    deleteVehicle _veh;
};

 

 

 

спасибо за советы, все проблемы решил

  • 0

#10 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 27 January 2015 - 14:15

 

немного изменил скрипт для того что б вставить его в sqf файл конкретной техники, получилось так

 

_group = createGroup east; 
     _veh = "rhs_btr80_vdv" createVehicle (getMarkerPos "b");
    _delTimer = 10;    
    waitUntil {sleep 1; !alive _veh};
    sleep _delTimer;
    deleteVehicle _veh;
};

 

 

 

спасибо за советы, все проблемы решил

 

Зачем вы создаёте группу

_group = createGroup east; 

если далее вы её не используете?

Хотя это не критично, так как движок армы автоматически удаляет пустые группы, но всё таки зачем предлагать процессору бесполезную работу?

 

ЗЫ

Хотя, я догадываюсь, это не весь кусок кода.


Сообщение отредактировал SteelRat: 27 January 2015 - 14:17

  • 0

#11 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 27 January 2015 - 15:05

Это наверное часть вот этого)


_group = createGroup east; 
//СЮДА ВСТАВИЛ КУСОК КОДА
     ut1 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"];	
	 ut2 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"];	
	 ut3 = _group createUnit ["O_crew_F",getMarkerPos "t",[],0,"FORM"]; // три бота на маркере t
     tn1 = "B_MBT_01_TUSK_F" createVehicle (getMarkerPos "t_1"); // танк на маркере t_1	 
	 sleep 1; // задержка 1 секунда
	 ut1 moveInAny tn1;
	 ut2 moveInAny tn1;
	 ut3 moveInAny tn1; //все трое сядут в технику без анимации
     [_group, getMarkerPos "t_1", 500 ] call BIS_fnc_taskPatrol; // патрулирование территории с радиусом 500 метров вокруг маркера t_1

P.S. Хотя последняя "}" говорит об обратном

P.P.S И если все работает то пусть пользуется)))


Сообщение отредактировал Djon: 27 January 2015 - 15:06

  • 0




Яндекс.Метрика