Покой – это ложь; есть только страсть.
Через страсть я познаю силу.
Через силу я познаю власть.
Через власть я познаю победу.
Через победу мои оковы рвутся.
Кодекс ситов
Дрю Карпишин, Трилогия Дарта Бэйна





Сколько глобус ни крути, там Fess-Style не найти...
Сайт Fess'a » Досмотр - Форум
[ Новые сообщения · Участники · Правила форума · Поиск ]
Страница 1 из 11
Форум » Форум Редакторов » Редактор ARMA » Досмотр
Досмотр
ShatenДата: Воскресенье, 22.12.2013, 23:24 | Сообщение # 1

Авы нет

Группа: Удаленные





Привет, Fess !
Сделал функцию досмотра, за основу взял твой скрипт обыска ящиков. Получилось вот что, игрок (player, делаю для мультиплеера) подходить к юниту s1, и у него появляется функция "обыскать", она вызывает скрипт, в нем я прописал Player action ["GEAR",s1]. Все хорошо, любой игрок может открыть инвентарь s1 находясь рядом.

Теперь вопрос:
1 Возможно ли провернуть тоже самое, но не для s1, а для любого юнита перед игроком (в радиусе пары метров) ?
2 Тоже самое, но что бы эта функция была доступна не всем игрокам, а конкретным ?
3 Тоже, но функция доступна в определенном месте (досмотровая), я так понимаю это триггер и условие на присутствие в нем юнита (name in thisList)?

Интересны все три варианта, для разных сценариев. 
Очень тебе признателен за твои видео, много узнал, много понял, спасибо !
 
FessДата: Воскресенье, 22.12.2013, 23:30 | Сообщение # 2

Добрый админ
Сообщений: 2338
Статус:
Цитата Shaten ()
Возможно ли...

Возможно, все три пункта. Я даже как-то делал функцию рукопашного боя.
Типа подходишь к любому игроку вражеской фракции и появляется надпись "Убить..."
Здесь тот же принцип.

Ну всё, написал, проверил, все работает.
Значит, смотри. Вот коды двух файлов

Цитата dosmotr.sqf
DOSMOTR = FALSE;

// Ждем, пока игрок войдет в зону досмотра
while {!DOSMOTR} do {sleep 1;};

_side = EAST; // сторона тех, к кому будет применяться обыск, задаешь сам, EAST\WEST\т.д.
_marked = [];

while {DOSMOTR} do {

// ищем вражеских мужиков
_array = getPos player nearEntities ["MAN", 5];
// если вражеские мужики найдены то
if ({side _x == _side} count _array > 0) then {

{
// Добавляем действие на обыск
if(side _x == _side && !(_x in _marked)) then {

_x addAction ["Обыскать..","check.sqs", [], 10, false, true, "", "player distance _target < 3 && DOSMOTR && alive _target"];
_marked set [count _marked, _x]; // заносим его в массив обыскиваемых мужиков

};
} forEach _array;
};
sleep 1;
};

// Освобождаем память от мужиков
_marked = [];
// Перезапускаем этот скрипт
as = [] execVM "dosmotr.sqf";


Цитата check.sqs
_gen = _this select 0
_caller = _this select 1
_id = _this select 2
; it's to remove the action once it is activated
; _gen removeAction _id

_caller action ["GEAR",_gen]

В самой игре тебе надо будет поставить триггер с многоразовой активацией, размер выставишь какой тебе нужен.
В поля пишешь

Цитата Активация
DOSMOTR = TRUE; hint "TRUE"

Цитата Деактивация
DOSMOTR = FALSE; hint "FALSE"

Теперь жмёшь F2 и соединяешь себя и флажок триггера голубой ниточкой.
Всё. Любой юнит стороны _side можно будет обыскать.

Прилагаю пример миссии для ArmA III
http://yadi.sk/d/FUCtWpu8Ej6uN
 
ShatenДата: Понедельник, 23.12.2013, 01:08 | Сообщение # 3

Авы нет

Группа: Удаленные





Вот спасибо !
Возник еще вопросик.
Ставлю триггер tr1 пишу ему в активацию: tr1 = nearestObjects [thisTrigger, ["Building"], 1000]; 
{_x setDammage 1} forEach tr1;
Все дома в радиусе километра разрушаются, но вот деревья, заборы и столбы остаются. Как их уронить? Ставил вместо "Building" "Land", ничего не происходит, кроме собственной смерти если рядом. Пробовал ставить Trees и Wall ради эксперимента, тоже ничего. Отдельно забор по id уронить можно, а вот кучей не вышло.
ArmA 2
 
FessДата: Понедельник, 23.12.2013, 09:47 | Сообщение # 4

Добрый админ
Сообщений: 2338
Статус:
Цитата Shaten ()
Ставлю триггер tr1 пишу ему в активацию: tr1 = nearestObjects [thisTrigger, ["Building"], 1000];
{_x setDammage 1} forEach tr1;
Все дома в радиусе километра разрушаются, но вот деревья, заборы и столбы остаются. Как их уронить?

Уважаемый Shaten, почти правильно делал) Надо было так:

Код
{_x setDamage 1} forEach nearestObjects [player, [], 500];

Само собой, вместо player подставишь любой нужный тебе объект.
 
Форум » Форум Редакторов » Редактор ARMA » Досмотр
Страница 1 из 11
Поиск: