Перейти к содержанию
ToxaSM

Вопросы по созданию МП-миссий

Рекомендуемые сообщения

Есть одна команда:

unitOne ["USEWEAPON", <target vehicle>, <target unit>, <weapon index>]

Если я все правильно понял, то:

 

unitOne - стрелок

<target vehicle> - цель для стрельбы

<target unit>  - оружие

<weapon index> - режим стрельбы

 

Как с поморью всего этого заставить стрелять статичный миномет без стрелка?

 

Вариант с размещением объекта игровой логики (тот который в юнитах) в качестве стрелка у меня не сработал.

logic action ["useWeapon",targ,wep,0];

targ - пустая техника

wep - ванильный миномет(эйсовский не подходит сюда)

Индексы перепробовал от -1 до 5.

В рпт на этот счет тоже ничего нет.

 

Fire и DoFire так же требует наличия стрелка в миномете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя по примерам то


<target vehicle> - цель для стрельбы
техника которая будет стрелять

 <target unit> - оружие

кто будет стрелять (определенный юнит или с определенного места в технике)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты


Судя по примерам то

 

А можно примеры?

 

На бисовики приведена такая команда:

gameLogic action ["useWeapon",vehicle unit1,unit1,0]

Не думаю что получится застрелиться таким образом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не думаю что получится застрелиться таким образом.

а причем тут это ?

здесь вообще не ставится цель куда стрелять


это команда просто позволяет сказать кому и как стрелять


https://community.bistudio.com/wiki/Arma_3_Actions#UseWeapon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем стрелять из миномёта куда-то , если можно на нужном месте сразу спавнить взрывы какие угодно и при каких угодно условиях?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[member=Kronos],

Вписал 

logic action ["useWeapon",wep,gunner wep,0];

Все равно не работает. Если что я про двойку говорю.

 

 

 

[member=crabe],там не во взрывах дело, а в самом выстреле из миномета. Надо именно чтобы он выстрелил, остальное не так важно. 

 

UDP.Выстрел происходит, но только если за стрелком сидит какой либо юнит.

 

UPD.

sleep 5;
"SMD_SLA_MP" createUnit [ getmarkerPos "111", group player, "gnr=this"];
gnr moveInGunner wep;
sleep 20;
logic action ["useWeapon",wep,gunner wep,0];

Эти 5 строчек вроде бы справляются со своей задачей.

 

В связи с этим возникает следующий вопрос: как отреагирует вогологика на все это, посреди миссии?

Изменено пользователем LazyLucky

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Главное бота из миномёта не выкидывать первые 600 секунд  :)

 


Надо именно чтобы он выстрелил, остальное не так важно. 

Думаю, всё это также легко симулируется и без бота и без миномёта.
Наверное, надо боту мозги отключать или дружить со всеми, а то начнёт, понимаешь поливать с миномёта тех, кого не надо...

Лучше бы рассказал зачем тебе это вообще нужно.

Изменено пользователем crabe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю где еще спросить, так что спрошу тут. Есть ли в сборке А3 этот автомобиль?

[attachment=1105:arma2_vehicles_civilian_LadaLM.jpg]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

---

Изменено пользователем Shockster
Рецидив, временный бан на форуме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
[member=CaesarSalad], http://cup-arma3.org/downloads/vehicle-pack/ может там есть? Изменено пользователем DmitRich

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, должна ли такая конструкция работать?
 

(_vehicle getVariable "AddActionCounter") = _vehicle addAction [ "start TSS", "TDA.sqf", [], 1, false, true, "teamSwitchPrev", "driver _target == player"];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[b][member=RamZesIV][/b], работать должно, но имхо бессмысленно. т.к

_actionId = object addAction [ "action title", "actionScript.sqf"]

т.е в переменной перед  равно где дальше будет addAction, будет хранится только ID. А у тебя там счетчик (судя по коду). И если ты хочешь додавить к счетчику, я бы сделал это в 2 хода.

_actionId = object addAction [ "action title", "actionScript.sqf"];
object setVariable ["AddActionCounter" ,((object getVariable "AddActionCounter") +1),true]; //узнали и добавили и тут же опубликовали.
object setVariable ["AddActionIdArray" ,((object getVariable "AddActionIdArray") +[_actionId]),true]; // возможно не прокатит но можно разбить на 2 строчки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Увеличение счетчика есть, я не стал его здесь писать. Спасибо, уже разобрался. Была какая-то ошибка, из-за которой эта конструкция не работала, а я предполагал, что должна. Массив не нужен, потому что эддэкшены будут удаляться без накопления очереди. Вообще все это намутил, чтобы включать и выключать скрипт через эддэкшен. Включил скрипт - эддэкшен удалился, счетчик апнулся и создался новый по новому id. Новый эддэкшен выключает скрипт, удаляет эддэкшен по апнутому id, снова апает счетчик и создает новый эддекшен, копию первого, но с другим id. И так циклическим - вкл/выкл с постоянным приращением счетчика id эддэкшенов. Как я понял, в арме иначе нельзя. Или есть нормальные варианты? Изменено пользователем RamZesIV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[member=RamZesIV],чото ты мутишь :)  (с моей колокольни)

 


Включил скрипт - эддэкшен удалился,

 

можно же удалить экшен прям из скрипта.

К примеру тебе надо сделать экшон вкл/выкл чегото и чтобы они менялись.

 

в ините

_actionId = object addAction [ "enable action title", "enableActionScript.sqf"];

enableActionScript.sqf

/*
target (_this select 0): Object - the object which the action is assigned to
caller (_this select 1): Object - the unit that activated the action
ID (_this select 2): Number - ID of the activated action (same as ID returned by addAction)
*/

_object = _this select 0; // на чем висел экшон в нашем случае это object
_caller = _this select 1; //кто вызвал - у нас в 99% случаях это будет player
_actionId =  _this select 2; // ID экшона, ОН ТОЧНО ТАКОЙЖЕ КАК И В init (код выше)

//этот код не будет работать пока игрок не наждем на экшон а значит..
_object removeAction _actionId; //удаляем с техники (в твоем случае) экшон включения.
_object addAction [ "disable action title", "disableActionScript.sqf"]; //экшон отключения
//ниже полезная нагрузка скрипта enableActionScript

disableActionScript.sqf

/*
target (_this select 0): Object - the object which the action is assigned to
caller (_this select 1): Object - the unit that activated the action
ID (_this select 2): Number - ID of the activated action (same as ID returned by addAction)
*/

_object = _this select 0; // на чем висел экшон в нашем случае это object
_caller = _this select 1; //кто вызвал - у нас в 99% случаях это будет player
_actionId =  _this select 2; // ID экшона, ОН ТОЧНО ТАКОЙЖЕ КАК И В enableActionScript.sqf (код выше)

//этот код не будет работать пока игрок не наждем на экшон а значит..
_object removeAction _actionId; //удаляем с техники (в твоем случае) экшон выключения.
_object addAction [ "enable action title", "enableActionScript.sqf"]; //экшон включения
//ниже полезная нагрузка скрипта disableActionScript.sqf

ябы так сделал, топорно возможно, но пашет как часы.

 

Заметь первая часть кода одинаковая - значит оформляешь как функцию...

Изменено пользователем StDIABLO

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[member=crabe],очевидно чтобы небыло возможности включать 2 раза скрипт. Кстати реально можно же не удалять, а делать hide

Изменено пользователем StDIABLO

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хех, тогда зачем потом пересоздавать его с новым ID и вести подсчёты срабатываний?

Тут что-то нечисто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно же не удалять, а делать hide

Если речь о параметре hideOnUse самого эддэкшена, то он не пашет, эддэкшен никуда не девается. Не нашел причину. Поэтому он удаляется, а при создании нового, насколько я знаю, id автоматом увеличивается, поэтому у меня счетчик и приращивается.

Только сейчас догнал, что приращивать нужно не 1, а 2, потому что одно приращивание на вкл, другое на выкл :army_yoba:
А если заработает hideOnUse, то как потом, после выключения скрипта, снова сделать этот эддэкшен видимым?

а зачем тебе постоянно удалять экшены? Чем не угодили старые?

Включил ты термодымовую аппаратуру, а эддэкшен не пропал и жмешь, сколько влезет, каждый раз создавая новый скрипт генерации дыма. Ну и в качестве индикации. Пропал эддэкшен на вкл и вместо него эддэкшен на выкл - значит ТДА включена.
 

можно же удалить экшен прям из скрипта.

Так и сделано. При запуске скрипта он удаляет эддэкшен, а по завершении снова его создает.
 

_actionId = _this select 2; // ID экшона, ОН ТОЧНО ТАКОЙЖЕ КАК И В init (код выше)

С этим была какая-то засада, поэтому сделал счетчик. Попробую разобраться, может и правда фигней занимаюсь. Функции пока не освоил, не рискну - еще и из-за них на неделю зависну :D

Изменено пользователем RamZesIV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[b][member=RamZesIV][/b],

Так как раз hideonUSE этим и занимается. Он убирает строчку при выборе, но не удаляет экшен и его опять можно юзать, покрутив колесом. По умолчанию, никаких телодвижений для этого не нужно, если ты этот экшен не удаляешь после первого прогона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если речь о параметре hideOnUse самого эддэкшена, то он не пашет, эддэкшен никуда не девается. Не нашел причину.

А если заработает hideOnUse, то как потом, после выключения скрипта, снова сделать этот эддэкшен видимым?


Неизвестно, сколько раз может быть использован этот скрипт на каком-нибудь "Медном тазу". У нас сейчас много миссий с большим количеством техники и захламлять память уже ненужными данными нежелательно или я ошибаюсь и заметной роли это не сыграет? А то ведь чуть лишнего здесь, чуть там, а в итоге потеря фпс. Не?

Изменено пользователем RamZesIV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[b][member=RamZesIV][/b],

Разве один экшен не лучше постоянного спавна многих других? :)

Все экшены в арме исполняют скрипты, которые зарыты в конфигах: сесть на пассажира, разложить треногу, зарядить снаряд. Большая часть, конечно, минимального размера и из пары команд. но всё равно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.