Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
Tiberian

Турель. Гибнет боец AI

Добрый день всем. А может ночь. У кого как...
Хочу создать станкового пулеметчика по скрипту:
 

//проргамма создания станка с пулемаетчиком
private ["_position","_direction","_typeWeapon","_skin","_vehicle","_unit"];
_position=_this select 0;
_direction=_this select 1;
_typeWeapon=_this select 2;
_skin=_this select 3;
///////////////////////
_unitGroupTurret = createGroup east;
///////////////////////
_vehicle = createVehicle [_typeWeapon,_position, [], 0, 'CAN_COLLIDE'];
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_vehicle];
[_vehicle,_typeWeapon] spawn server_updateObject;
_vehicle setDir _direction;
_vehicle setPosATL _position;
_vehicle = nil;
//////////////////////
_unit = _unitGroupTurret createUnit [_skin,_position, [], 5, "LIEUTENANT"];
_unit setDir _direction;
//[_unit] joinSilent _unitGroupTurret;
_unit addMagazine ["50Rnd_127x107_DSHKM", 3];
_unit setskill ["general",1];
_unit enableAI "TARGET";
_unit enableAI "AUTOTARGET";
_unit enableAI "ANIM";
_unit enableAI "FSM";
_unit setCombatMode "RED";
_unit setBehaviour "AWARE";
///////////////////////////////
_unit moveInGunner _vehicle;
//конец программы

В результате станок стоит, боец AI мертвый лежит рядом. РПТ выдает такую ошибку:
 

...
19:20:52 "HIVE: Starting"
19:20:52 "HIVE: trying to get objects"
19:20:53 Error in expression <tBehaviour "AWARE";
_unit moveInGunner _vehicle;
19:20:53   Error position: <_vehicle;
19:20:53   Error Undefined variable in expression: _vehicle
19:20:53 File mpmissions\DayZ_Epoch_24.Napf\addons\my_Bots\CreateTurret.sqf, line 29
...

В чем может быть проблема? 

Share this post


Link to post
Share on other sites

15 answers to this question

Recommended Posts

  • 0

ты забудь про свою группу, и назначение.

ты смотри что реально показывает side после создания юнита.

Да.Ты был прав. Группы, в которые входили патрули и стрелки турелей были разные  EAST и WEST соответственно.

Признаю команда 

  • group createUnit [type, position, markers, placement, special]

не гарантирует присоединение к группе group , необходимо дублирование командой

  • UnitArray joinSilent group

тогда юнит гарантированно будет в группе group

 

Теперь все заработало! Благодарю за помощь!

Edited by Tiberian (see edit history)

Share this post


Link to post
Share on other sites



  • 0

ты сам обнуляешь переменную с техникой

_vehicle = nil;

а потом ставишь за нее бота, мб в этом?

Share this post


Link to post
Share on other sites
  • 0

ты сам обнуляешь переменную с техникой

_vehicle = nil;

а потом ставишь за нее бота, мб в этом?

МММ... может быть. Попробую. Но разве тогда бы не исчезал станок?

Share this post


Link to post
Share on other sites
  • 0

ты сам обнуляешь переменную с техникой

_vehicle = nil;

а потом ставишь за нее бота, мб в этом?

Попробовал убрать эту строку (( Без изменений. 

Share this post


Link to post
Share on other sites
  • 0

МММ... может быть. Попробую. Но разве тогда бы не исчезал станок?

ты обнуляешь переменную, а не объект. как бы он исчезал?

Share this post


Link to post
Share on other sites
  • 0

ты обнуляешь переменную, а не объект. как бы он исчезал?

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

Share this post


Link to post
Share on other sites
  • 0

Практически решил:

в функции 

_unit = _unitGroupTurret createUnit [_skin,_position, [], 5, "LIEUTENANT"];

поменял "LIEUTENANT" на "NONE", как это требует синтаксис

group createUnit [type, position, markers, placement, special]
/*
group: Group - Existing group new unit will join
[type, position, markers, placement, special]: Array
type: String - Class name of unit to be created as per CfgVehicles
position: Position, Position2D or Object - Location unit is created at
markers: Array - Placement markers
placement: Number - Placement radius
special: String - Unit placement special, one of "NONE", "FORM", "CAN_COLLIDE", "CARGO"
*/

И никакого звания ЛЕЙТЕНАНТ здесь не подразумевается...
НО все же. Мой скрипт как внешняя функция (в отдельном файле). В скрипте, в котором идет обращение к этой функции стоит цикл, в котором и идет обращение к скрипту. Количество циклов 4. Один из четырех встал как надо. Но трое все равно мертвы. РПТ перестал выдавать ошибку. Теперь вообще ничего не понимаю...

Share this post


Link to post
Share on other sites
  • 0

1.мб его твоя пушка давит не? создавай юнита на расстоянии 5м от пушки.

2. добавь событие онмпкилл юниту, а в нем(событии) вывод в рпт. и посмотри, от чего дохнет.

Share this post


Link to post
Share on other sites
  • 0

1.мб его твоя пушка давит не? создавай юнита на расстоянии 5м от пушки.

2. добавь событие онмпкилл юниту, а в нем(событии) вывод в рпт. и посмотри, от чего дохнет.

Попробую, но врятли. У меня в функции указано создавать объект (боец) в пятиметровой зоне от указанной точки

unit = _unitGroupTurret createUnit [_skin,_position, [], 5, "LIEUTENANT"];

5ка и есть как раз placement: Number - Placement radius...

У меня есть предположение, сегодня попробую:

Думаю строка 

  1. _vehicle = nil;

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

 

Share this post


Link to post
Share on other sites
  • 0

Мое предположение не подтвердилось. При перестановки функции  _vehicle = nilпосле  _unit moveInGunner _vehicle; ситуация не изменилась.
Что касается события добавил вот такие строки:
 

_unit addEventHandler ["killed", "diag_log text format ['[addEventHandler] Killed by %1',_this select 1]"];
_unit addMPEventHandler ["mpkilled", "diag_log text format ['[addMPEventHandler] Killed by %1',_this select 1]"];

 

РПТ выдает следующее:
 

...
11:34:28 [addMPEventHandler] Killed by O 1-2-D:2
11:34:28 [addEventHandler] Killed by O 1-2-D:2
11:34:32 [addMPEventHandler] Killed by O 1-2-D:4
11:34:32 [addEventHandler] Killed by O 1-2-D:4
...
11:34:35 [addMPEventHandler] Killed by O 1-2-D:6
11:34:35 [addEventHandler] Killed by O 1-2-D:6
11:34:40 [addMPEventHandler] Killed by O 1-2-M:1 REMOTE
11:34:43 [addMPEventHandler] Killed by O 1-2-M:8 REMOTE
11:34:45 [addMPEventHandler] Killed by O 1-2-M:3 REMOTE
11:35:41 [addMPEventHandler] Killed by B 1-1-B:1 (Tiberian) REMOTE
11:35:41 [addEventHandler] Killed by B 1-1-B:1 (Tiberian) REMOTE
...

Одного убил я,чтобы проверить различия в убийствах. И тут я начинаю предполагать, что их валят свои?

Edited by Tiberian (see edit history)

Share this post


Link to post
Share on other sites
  • 0

1. Радиус не гарантирует установку.

Кто мешает его задать к примеру так?

createUnit [_skin,[(_position select 0)+5, (_position select 1)+5, (_position select 2)], [], 0, "NONE"];

 

 

2. Для того, чтобы понять, кто кого валит, надо понять, что за объекты - 1-2-M:1 и т.п.

Выведи _this вместо _this select 1

+ выведи typeOf (_this select 1) + координаты и т.п. - больше инфы об объекте который бота убил получи.

И все будет видно.

 

3. Что там у тебя за _skin никто не знает, - а в cfg модели указана сторона. И она может отличаться от стороны других ботов. Тем более ты не задаешь юниту группу(она у тебя закоментирована), а случае с указанием стороны в cfg для модели, даже принудительное задание side может не помочь.

Отсюда дополнение к п.2. - выведи side в РПТ при создании, и выведи side в РПТ того кто убил бота. И все встанет на места.




Думаю строка _vehicle = nil;

 

"Срать, пердеть, колесом вертеть", на какую то локальную переменную.

Она прекрасно переинициализируется далее(если ты в цикле это создаешь). Или будет уничтожена, если ExecVM или SPAWN юзаешь.

В целом - плевать на эту строку в любом случае.

Это тебе не СИ\Дельфи, тут не типизированные переменные.

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites
  • 0

1. Радиус не гарантирует установку.

Кто мешает его задать к примеру так?

createUnit [_skin,[(_position select 0)+5, (_position select 1)+5, (_position select 2)], [], 0, "NONE"];

 

 

2. Для того, чтобы понять, кто кого валит, надо понять, что за объекты - 1-2-M:1 и т.п.

Выведи _this вместо _this select 1

+ выведи typeOf (_this select 1) + координаты и т.п. - больше инфы об объекте который бота убил получи.

И все будет видно.

 

3. Что там у тебя за _skin никто не знает, - а в cfg модели указана сторона. И она может отличаться от стороны других ботов. Тем более ты не задаешь юниту группу(она у тебя закоментирована), а случае с указанием стороны в cfg для модели, даже принудительное задание side может не помочь.

Отсюда дополнение к п.2. - выведи side в РПТ при создании, и выведи side в РПТ того кто убил бота. И все встанет на места.

 

 

"Срать, пердеть, колесом вертеть", на какую то локальную переменную.

Она прекрасно переинициализируется далее(если ты в цикле это создаешь). Или будет уничтожена, если ExecVM или SPAWN юзаешь.

В целом - плевать на эту строку в любом случае.

Это тебе не СИ\Дельфи, тут не типизированные переменные.

Установлено: бойцов убивают "свои".

Объясню и спрошу:

Делаю миссию (с нуля). Алгоритм скриптов

1. миссия

1.1 создать базу

1.1.1 создать объекты базы

1.1.2 создать турель (для некоторых баз. Турель: станок + боец к нему)

1.2 создать подвижной конвой

1.3 создать статичный конвой ("пограничник")

1.4 создать объект-награду

 

И вот получается что подвижной конвой и бойцы станочники оказались в разных группах и как следствие враги...

И теперь спрошу: как объединить подвижной конвой, пограничников и бойцов за станком в одну группу? Самый простой способ конечно запихнуть в один файл... а если нет?

Edited by Tiberian (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Установлено: бойцов убивают "свои".

Объясню и спрошу:

Делаю миссию (с нуля). Алгоритм скриптов

1. миссия

1.1 создать базу

1.1.1 создать объекты базы

1.1.2 создать турель (для некоторых баз. Турель: станок + боец к нему)

1.2 создать подвижной конвой

1.3 создать статичный конвой ("пограничник")

1.4 создать объект-награду

 

И вот получается что подвижной конвой и бойцы станочники оказались в разных группах и как следствие враги...

И теперь спрошу: как объединить подвижной конвой, пограничников и бойцов за станком в одну группу? Самый простой способ конечно запихнуть в один файл... а если нет?

Да плевать на разные группы - ты смотри SIDE который у твоих групп и бойцов.

Share this post


Link to post
Share on other sites
  • 0

Да плевать на разные группы - ты смотри SIDE который у твоих групп и бойцов.

... = createGroup east;

Для всех бойцов в разных файлах (скриптах).

Share this post


Link to post
Share on other sites
  • 0

... = createGroup east;

Для всех бойцов в разных файлах (скриптах).

ты забудь про свою группу, и назначение.

ты смотри что реально показывает side после создания юнита.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By lucho003
      patrolpos  в  каком формате ее вписывать?
    • By PLAYERDEAD
      Подскажите  Сложные ИИ Миссии для Overpoch'a. 
      Мои игроки проходят миссии без всяких проблем...
      Стояли WAI с приват раздела
    • By anikinvitaly
      Подскажите, кто знает как в WAI добавить бота с СВД например, на вышку или на крышу и чтобы он не бегал а сидел и выцеливал игроков.
    • By DrTauren
      Что такое A3EAI:
      A3EAI это аддон миссий, созданный специально для ARMA3: Epoch с учётом его особенностей. Плагин создан на основе DZAI 2.2.1. Если вы пользовались DZAI, то вы точно знаете чего ожидать от этого плагина.
       
      Особенности A3EAI:
      Автоматически генерируемые статические спавны ботов в определённых локациях при наличии игроков вблизи последней Динамический спавн ботов: боты рандомно появляются вблизи игрока и начинают на него охоту Случайный спавн ботов: группы ботов появляются вблизи определённых городов Патрули ботов (воздушные и наземные): патрули на машинах, которые ездят по карте и ищут игроков для охоты. Тем же занимаются воздушные патрули. Из вертолётов могут выпрыгивать десантные группы. Разные группы ботов могут периодически кооперироваться чтобы помочь "своим" в бою Вы также можете сами выбирать к\акие патрули вам нужны и спавнить их в нужных локациях A3EAI использует "эпочевские" таблицы лута для выдачи оного ботам Автоматический поиск ошибок: осуществляется автоматический поиск ошибок в файлах при старте миссии. В случае если ошибка будет найдена, то скрипт запускает восстановление  
      A3EAI-master.zip
      Либо скачиваем с GitHub
       
      Инструкция по установке:
      1) Качаем архив, копируем файлы Addons, A3EAI_config.sqf, A3EAI_custom_defs
      2) Открываем вашу папку @EpochHive
      Внимание: A3EAI требует что бы серверная папка Epoch`а была названа именно так: @EpochHive (без учёта регистра), так как она и должна быть названа изначально 3) Копируем прямо в эту папку написанные выше файлы. Если система предложит заменить\объеденить файлы, выбираем "Да"
      Внимание: файлы эпохи не заменяются 4) Настройки скрипта вы можете изменить в файле A3EAI_config.sqf
       
       
    • By Gallion2005
      Доброго времени суток . Подскажите как установить миссии WAI. Убился уже. Все сделал как в гайде тут на форуме - не работает. Серв грузится, но миссии не появляются. Потом сделал все по инструкции на epochmode - не работает!
      Я так понял что все изначально заточено под Чернорусь... Может координаты где какие менять нужно для Napf?
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.