Фиксер втащил ящик со снаряжением в тесный трюм корабля-перехватчика.
– Мне больше нравится, когда мы всё взрываем и размазываем по стенам геонозианцев. А эти вот размышления рискуют плохо закончиться.
Команда ЭРК "Дельта"
Карен Тревисс, "Истинное Лицо"





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

Добрый админ
Сообщений: 2338
Статус:
Перенесено из другой темы.
 
DaminantДата: Вторник, 26.11.2013, 19:25 | Сообщение # 2

Авы нет

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





Fess привет, помоги если нетрудно написать скрипт на разминирование, т.е. используемтвой скрипт на спавн авиа бомбы, но необходимо чтоб он прекращался при выполнении друго скрипта с анимацией(грубо говоря, идет отсчет), боец подходит к взрывчатке из меню выбирает разминировать, перед ним на 5 сек появляется картинка с изображением бомбы, после чего он выбирает из нескольких вариантов что перерезать, и если он прав скрипт со взрывам прекращаеться)
 
FessДата: Вторник, 26.11.2013, 19:25 | Сообщение # 3

Добрый админ
Сообщений: 2338
Статус:
Цитата Daminant ()
боец подходит к взрывчатке из меню выбирает разминировать, перед ним на 5 сек появляется картинка с изображением бомбы, после чего он выбирает из нескольких вариантов что перерезать, и если он прав скрипт со взрывам прекращаеться)

Обойдетесь, сударь! Слишком уж толсто будет. Кроме того, я не знаю, как реализовать клик мышкой по проводу.
 
DaminantДата: Вторник, 26.11.2013, 19:25 | Сообщение # 4

Авы нет

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





Спасибо и на этом, я не про картинку говорил, просто анимашка появляеться на 5 сек, чел ее запоминает, и потом из меню выбирает какой из проводов резать, режет правильный все ок, неправильный бумммм, вообщем сам скрипт я нашел, но вот проблема, я в этом понимаю от силы на 10% (((

Добавлено (24.11.2013, 19:00)
---------------------------------------------
поможешь разобраться???


Код
_hours = _this select 0;
_minutes = _this select 1;
_seconds =  _this select 2;
minedObject = _this select 3;

ISMINED = true;
//Добавляет игроку действие на разминирование  

_ac1 = player addaction ["Снять заряд","disarm.sqf", [], 6,true, true, "", "player distance minedObject < 1"];

//

while {ISMINED} do
{

hintsilent composeText [parsetext format["<t size='1.5' align='left' color='#ff0000'>Timer = %1 : %2 : %3</t>",_hours, _minutes,_seconds]];
_seconds = _seconds -1;
if (_hours > 0 and _minutes > 0  and _seconds == 0)then {_minutes = _minutes - 1;_seconds =_seconds + 60};
if (_hours == 0 and _minutes > 0  and _seconds == 0)then {_minutes = _minutes - 1;_seconds =_seconds + 60};
if (_minutes == 0 and _hours > 0 and _seconds == 0)then {_hours = _hours - 1;_minutes = _minutes + 59};
if (_minutes == 1 and _seconds == 0) then {_minutes = _minutes - 1;_seconds =_seconds + 60};
if (_hours == 1 and _minutes == 0) then {_hours = _hours - 1;_minutes = _minutes + 59};

sleep 1;

if (_hours <= 0 and _minutes <= 0 and _seconds < 11)then {
   hint composeText [parsetext format["<t size='1.5' align='left' color='#ff0000'>Time= %1 : %2 : %3</t>",_hours, _minutes,_seconds]];};
if (_hours == 0 and _minutes == 0 and _seconds == 0)exitWith {
     hintsilent composeText [parsetext format["<t size='2' align='center' color='#ff0000'>TIME OUT!</t>"]];
     sleep 1;
     _bomb="bo_gbu12_lgb" createvehicle position minedObject;
     _bomb1="bo_gbu12_lgb" createvehicle position minedObject;
     _bomb2="bo_gbu12_lgb" createvehicle position minedObject;
     _bomb3="bo_gbu12_lgb" createvehicle position minedObject;
     _bomb4="bo_gbu12_lgb" createvehicle position minedObject;
     };

};
 

Код
player removeaction (_this select 2);

ISMINED = false;

hintsilent composeText [parsetext format["<t size='2' align='center' color='#00ff00'>Bomb disarmed</t>"]];
 
FessДата: Вторник, 26.11.2013, 19:25 | Сообщение # 5

Добрый админ
Сообщений: 2338
Статус:
Уважаемый Daminant, здесь ведется обратный отсчет до взрыва, если игрок не нажмет в меню "Обезвредить бомбу" до истечения срока, то на месте бомбы спавнится пять авиабомб.
 
DaminantДата: Вторник, 26.11.2013, 19:25 | Сообщение # 6

Авы нет

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





Fees, благодарю, с этим разобрался, теперь буду искать скрипт на появление картинки на экране на 5 сек, а потом связать их все вместе. Если можете что посоветовать, буду благодарен.
 
FessДата: Вторник, 26.11.2013, 19:25 | Сообщение # 7

Добрый админ
Сообщений: 2338
Статус:
Цитата Daminant ()
буду искать скрипт на появление картинки на экране на 5 сек, а потом связать их все вместе. Если можете что посоветовать, буду благодарен.

Я бы вообще сделал список в меню действий

Перекусить красный
Перекусить синий
Перекусить желтый
Перекусить зеленый!


Игрок должен последовательно в правильном порядке обрезать провода. В случае, если обезврежен лишний или неправильный провод, или перекусывание было в неверном порядке, происходит взрыв. А еще предварительно надо где-то заставить игрока прослушать лекцию о том, как обезвреживать такие бомбы. Или в брифинге миссии написать.

Можно упростить задачу и сделать обезвреживание всего за один перекус, но это слишком упростит задачу, я бы так делать не стал в своей миссии, люблю заставлять игрока страдать x))))
 
DaminantДата: Вторник, 26.11.2013, 19:26 | Сообщение # 8

Авы нет

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





yes да была и такая идея, правда немного в другом исполнении(обрезал не тот провод, таймер уменьшился, еще не тот и бумммм), правда не селен я в скриптах, вот ищу в нете что нить похожее, правда пока без вариантов(((
 
FessДата: Вторник, 26.11.2013, 19:26 | Сообщение # 9

Добрый админ
Сообщений: 2338
Статус:
Цитата Daminant ()
да была и такая идея, правда немного в другом исполнении(обрезал не тот провод, таймер уменьшился, еще не тот и бумммм), правда не селен я в скриптах, вот ищу в нете что нить похожее, правда пока без вариантов(((

Вот, смотри, что сделал.
В папку с миссией распакуй, затем создай какую-нибудь машину и пропиши у нее в инит

Код
as = [obj, 60, 'RED', 'BLUE'] spawn FESS_fnc_bomb_disposal; // тут надо 2 провода перерезать

или

Код
as = [obj, 60, 'RED'] spawn FESS_fnc_bomb_disposal; // а тут один
Прикрепления: A2_FESS_fnc_bom.rar(31Kb)
 
DaminantДата: Вторник, 26.11.2013, 19:26 | Сообщение # 10

Авы нет

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





unknw хз, не получается, возможно я что-то не правильно сделал или понял, пробовал дистанцию на приблежение к технике изменять, ничего не получилось, если нетрудно скинь по возможности миску с машиной как ты это видишь, попробую разобратся в чем проблема у меня
 
FessДата: Вторник, 26.11.2013, 19:26 | Сообщение # 11

Добрый админ
Сообщений: 2338
Статус:
Уважаемый Daminant, он ругается на очень удобную процедуру removeAllActions , которая, к сожалению, добавлена была только в А3. Так что придется удалять действия по-старинке. Замени везде в коде строчку

Код
removeAllActions minedObj;

на

Код
minedObj removeAction disp1;
minedObj removeAction disp2;
minedObj removeAction disp3;
minedObj removeAction disp4;
 
FessДата: Вторник, 26.11.2013, 19:28 | Сообщение # 12

Добрый админ
Сообщений: 2338
Статус:
Уважаемый Daminant, в функции выше бомба тикает бесконечно, цифра 60 просто для красоты передается. А вот вариант функции с обратным отсчетом, количество секунд задаешь сам

Код
FESS_fnc_bomb_disposal = {

    /*
     [_obj, _time, _trueWire] spawn FESS_fnc_bomb_disposal
     [object, 60, 'RED/YELLOW/BLUE/GREEN','RED/YELLOW/BLUE/GREEN'] spawn FESS_fnc_bomb_disposal
       
    */
          
    minedObj = _this select 0;
    _time = if(count _this > 0) then {_this select 1} else {60};
    _TrueWire1 = if(count _this > 2) then {_this select 2} else {'RED'};
    _TrueWire2 = '';
    if(count _this > 3) then {_TrueWire2 = _this select 3};    
       
    //Validate parameters
    if (((typeName minedObj) != (typeName player)) or ((typeName _time) != (typeName 2))) exitWith {["FESS_fnc_Bomber ERROR, check input data"] call BIS_fnc_error;};
    if (_TrueWire2 != '' && _TrueWire1 == _TrueWire2) exitWith {["FESS_fnc_Bomber ERROR, check your wires color"] call BIS_fnc_error;};
         
    CuttedWire = '';
    disp1 = minedObj addaction ["Перекусить <t color='#FF0000'>красный</t> провод","FESS_fnc_bomb_disposal\cutted_red.sqs", [], 10, false, true, "", "player distance _target < 3"];    
    disp2 = minedObj addaction ["Перекусить <t color='#00FF00'>зеленый</t> провод","FESS_fnc_bomb_disposal\cutted_green.sqs", [], 9, false, true, "", "player distance _target < 3"];    
    disp3 = minedObj addaction ["Перекусить <t color='#FFFF00'>желтый</t> провод","FESS_fnc_bomb_disposal\cutted_yellow.sqs", [], 8, false, true, "", "player distance _target < 3"];    
    disp4 = minedObj addaction ["Перекусить <t color='#2973CE'>синий</t> провод","FESS_fnc_bomb_disposal\cutted_blue.sqs", [], 7, false, true, "", "player distance _target < 3"];    
       
    while {CuttedWire == ''} do {
     minedObj say ["TikTak",5];    
     sleep 2;
        
     _time = _time - 1;
     hintsilent composeText [parsetext format["<t size='1.5' align='center' color='#ff0000'>До взрыва <br/>%1</t>",_time]];    
        
     if (_time == 0) exitWith {
          
       sleep 1;    
        
        /* ВЗРЫВ */    
        if(minedObj distance player < 20) then {titleCut ["","BLACK IN",2];};
        removeAllActions minedObj;
        _bomb = "bo_gbu12_lgb" createvehicle getPos minedObj;
        _bomb setVelocity [0,0,-200];
      };    
    };
       
    // если первый перекушенный провод был НЕправильным
    if(CuttedWire != _TrueWire1) exitWith {
           
        /* ВЗРЫВ */    
        if(minedObj distance player < 20) then {titleCut ["","BLACK IN",2];};
        removeAllActions minedObj;
        _bomb = "bo_gbu12_lgb" createvehicle position minedObj;
       };
       
    // если первый перекушенный провод был правильным
    if(CuttedWire == _TrueWire1) then {
        
     // если задан второй провод
     if(_TrueWire2 != '') then {
        
      CuttedWire = '';
         
      while {CuttedWire == ''} do {
       minedObj say "TikTak";    
       sleep 2;
          
       _time = _time - 1;
       hintsilent composeText [parsetext format["<t size='1.5' align='center' color='#ff0000'>До взрыва <br/>%1</t>",_time]];    
          
       if (_time == 0) exitWith {
            
         sleep 1;    
          
          /* ВЗРЫВ */    
          if(minedObj distance player < 20) then {titleCut ["","BLACK IN",2];};
          removeAllActions minedObj;
          _bomb = "bo_gbu12_lgb" createvehicle getPos minedObj;
          _bomb setVelocity [0,0,-200];
        };    
      };
          
      if(CuttedWire != _TrueWire2) exitWith {
          
        /* ВЗРЫВ */    
        if(minedObj distance player < 20) then {titleCut ["","BLACK IN",2];};
        removeAllActions minedObj;
        _bomb = "bo_gbu12_lgb" createvehicle getPos minedObj;
        _bomb setVelocity [0,0,-200];
       };
          
      if(CuttedWire == _TrueWire2) exitWith {
         
        /* ОБЕЗВРЕЖЕНО */
        removeAllActions minedObj;        
        hint composeText [parsetext format["<t size='1.5' align='center'>Бомба обезврежена</t>",_time]];    
           
       };    
          
     };    
     if (_TrueWire2 == '') exitWith {

      /* ОБЕЗВРЕЖЕНО */
      removeAllActions minedObj;
      hint composeText [parsetext format["<t size='1.5' align='center'>Бомба обезврежена</t>",_time]];    
            
     };
        
    };
};

Если у тебя A2, а не A3, то замени removeAllActions minedObj; на четыре другие строчки, как я писал выше.
 
DaminantДата: Вторник, 26.11.2013, 20:33 | Сообщение # 13

Авы нет

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





Fess, я понял что я нуб, у меня не работает не во 2 не в 3 арме данный скрипт, будет возможность скинь миской, а то я непонимаю некоторые вещи. для 2 армы нужно заменить 4 строки, а в скрипте их 6. для 3 армы вроде бомбы авиа"bo_gbu12_lgb" нет, или я ошибаюсь.
 
FessДата: Вторник, 26.11.2013, 23:25 | Сообщение # 14

Добрый админ
Сообщений: 2338
Статус:
Цитата Daminant ()
для 2 армы нужно заменить 4 строки, а в скрипте их 6.

Ты невнимательно прочитал, я же сказал заменить каждую строчку на эти четыре строчки.

Цитата Daminant ()
для 3 армы вроде бомбы авиа"bo_gbu12_lgb" нет, или я ошибаюсь.

Существует^^

Держи для А3 миссию http://www.mediafire.com/downloa....sal.rar
 
DaminantДата: Среда, 27.11.2013, 04:52 | Сообщение # 15

Авы нет

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





ссыль приватная, нет возможности скачать (
 
FessДата: Среда, 27.11.2013, 13:39 | Сообщение # 16

Добрый админ
Сообщений: 2338
Статус:
Цитата Daminant ()
ссыль приватная, нет возможности скачать (

Поправил
 
DaminantДата: Среда, 27.11.2013, 22:17 | Сообщение # 17

Авы нет

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





есть маленький нюанс, в оригинальном скрипте время идет со скоростью 1 сек на таймере 2 сек в игре, при изменении показателей 1=1 сек, накладываеться звук тиканья и получаеться какафония звука, по истечении таймера иконка времени остается висеть в углу с надписью до взрыва осталось 0 секунд. Можно ли как нить изменить это? а так все очень хорошо и красиво, мне нравится тебе огромное спасибо за идею и разработку. Можешь показать где в скрипте написано какие провода за что отвечают, в оригинале синий а потом желтый для обезвреживания, где их можно изменить для разнообразия?
 
FessДата: Четверг, 28.11.2013, 16:59 | Сообщение # 18

Добрый админ
Сообщений: 2338
Статус:
Цитата Daminant ()
есть маленький нюанс, в оригинальном скрипте время идет со скоростью 1 сек на таймере 2 сек в игре, при изменении показателей 1=1 сек, накладываеться звук тиканья и получаеться какафония звука... Можно ли как нить изменить это?

Потому что я записывал двухсекундный сэмпл. Можешь вообще звук тиканья убрать.

Если хочешь, в строке 29 и 65 поменяй с _time = _time - 1; на _time = _time - 2; тогда 1 секунда в игре будет равна 1-ой секунде на таймере (на самом деле она не будет в точности равна, а лишь примерно, ибо сам скрипт тоже съедает некоторую долю миллисекунд на выполнение). Но тогда в игре от счетчика будет отниматься по 2 секунды за раз, это немножко некрасиво.

Цитата Daminant ()
по истечении таймера иконка времени остается висеть в углу с надписью до взрыва осталось 0 секунд

Везде после /* ВЗРЫВ */ и /* ОБЕЗВРЕЖЕНО */ поставь hintsilent "";

Цитата Daminant ()
Можешь показать где в скрипте написано какие провода за что отвечают, в оригинале синий а потом желтый для обезвреживания, где их можно изменить для разнообразия?

Правильная комбинация проводов задается в строчке 109

Код
as = [obj, 60, 'BLUE','YELLOW'] spawn FESS_fnc_bomb_disposal;

Цвета проводов могут быть следующие : BLUE, RED, YELLOW, GREEN
Цвета проводов не должны повторяться (в скрипте я вроде предусмотрел эту ситуацию, должно вылететь с ошибкой)
Можно указывать только один цвет, тогда бомба будет обезврежена после перекуса первого провода
 
Форум » Форум Редакторов » Редактор ARMA » Обезвреживание бомбы
Страница 1 из 11
Поиск: