-
Posts
983 -
Joined
-
Last visited
-
Days Won
4
Content Type
Profiles
Forums
Events
Everything posted by BAntDit
-
Так следующим полноценным DCS ЛА будет F-15C?
-
Я сегодня тоже потренировался использовать force correlate mode - в целом выполняется легко, но дальность, чтобы тягаться с Бук-ом все равно не достаточная - AGM-65K дотягивается максимум на 10 миль, Бук производит пуски с 15. Пробовал на разных высотах заходить и на малых и на 30 забирался - не подобраться.
-
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
При этом добавлю, что активация групп скриптом в текущей версии не предусмотрена, так что это все сделать лучше триггером (хотя само условие активации можно вычислить скриптом). -
А смешного то что? То что DCS World превращается в набор уфолетиков в авангарде c Су-25Т? - ну раз это всем так нравится надо ещё название сменить на Ace Combat, а то Digital Comat Simbulator лицемерно звучит.
-
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
1. Нет, динамической расстановки наземки пока нет, но вещь эта очень нужная и слышал что её многие просят у ED, так что надеюсь в скором времени появится. 2. Зато после патча 1.2.3. появилась возможность динамически задавать маршруты для наземки! - можно делать, чтобы группа меняла маршрут при определенных обстоятельствах куда нибудь уезжала и т.п. - это уже весьма не плохо. Но я пока не тестировал эту возможность. Будет время проверю как это работает. -
Зато A-10C ни разу не бета, а тем не менее лишен большой части своих возможностей благодаря последнему патчу. Как выяснилась проблема гораздо шире, А-10С не только не видит облучение от Су-27 в online - он вообще не видит облучения от любых ястребов, которые находятся под управлением других игроков (т.е. всех кто не бот). И дело не RWR, т.к. облучение от ботов видно - это похоже спасибо надо сказать оптимизации сетевой игры, круто оптимизировали. Я так понимаю все, кто летает на А-10С теперь должны тихо ждать в сторонке до выхода 1.2.4 или дольше? Тестеры вообще хоть что-то проверяю прежде чем это в обновление попадает?
-
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
У меня пока не было времени проверить, что изменилось после патча 1.2.3 по части скриптов. Хьюи добавлю как только выйдет - это не долго (главное точно знать какое имя класса будет у нового ЛА, хотя наверно будет такое же как у нелетаба). -
Патч 1.2.3 для всего и для мира, и для его модулей, в том числе для A-10C (http://forums.eagle.ru/showthread.php?t=101961).
-
А что патч 1.2.3. к DCS: A-10C отношения не имеет? Всё туда я пишу! Речь идет именно о проблемах А-10С после патча.
-
Проверил, 100% баг! Облучения от Су-27-ых на А-10С нет, Р-27Р тоже прилетают без облучения. Два, Су-25 рядом со мной видят облучение от Су-27, на А-10С тишина. Мало было одного читалета Су-25Т, теперь добавился Су-27 стелс.
-
Вопрос, тем кто летает на А-10С: после выхода патча 1.2.3 кто-нибудь хоть раз в Online видел облучение от Су-27? В оффлайн проверил, все работает. В онлайн нет, все атаки без облучения - мне как-то совсем не верится, что сразу после выхода 1.2.3 все дружно сказали - "так посоны радаром больше не пользуемся!". Учитывая, что в 1.2.2. скрытые атаки были редкость. Во-вторых, совсем не верится, что когда на карте все выключено, Су-27-ые только с помощью ОЛС могут обнаружить кого угодно и где угодно. И, в третьих, уж совсем не вероятно, что Р-27Р прилетает без облучения.
-
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
Пока, к сожалению, нет - не продвигается. Из того, что я планировал, большую часть я успел реализовать в декабре. И в принципе, доделывать не так уж много осталось, но начиная с этого года меня очень сильно загрузили на работе - так к слову, сегодняшний выходной, у меня первый в этом году... Когда теперь смогу вернуться к тому, что начал делать для DCS World пока не знаю, но самому хочется поскорее - тем более вышел патч 1.2.3, там много исправлений и нововведений, которые я как раз ждал, но пока нет возможности их оценить. -
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
Готово. Нашлось свободное время - написал скрипт, который учитывает потери штурмов, вертолетов и истребителей для каждой коалиции. Скрипт нужно подключать к миссии через триггер MISSION START и действие DO SCRIPT FILE (как и в предыдущем примере, который я выкладывал). Скрипт ведет учет по следующим типам ЛА: Пилоты и самолеты учитываются отдельно (т.е. потеря самолет не всегда означает потерю пилота). Учитываются ЛА как игроков, так и ботов (если делать учет только игроков, то скрипт выглядел бы сложнее. Хотя на этот случай у меня тоже есть реализованный пример :) ) Также есть небольшой фиче-баг: если пилот вышел в зрители до того как подбитый самолет разбился, потеря самолета не считается. Этот косяк не обойти. Для учета пилотов и самолетов в скрипте задан следующий набор флагов: при желании можете менять флаги на любые другие (обратите внимание, что в скриптах имена флагов хоть и задаются числами, но имеют тип строки. Видимо, это предпосылка к нормальным именованным флагам :) ). Вот сам скрипт (также прикрепил файл-скрипт counter_casualty.lua к сообщению) -- таблица имен флагов, занятых в учете потерь: counter_flag_names = { ["red_fighter_pilots"] = '1001', -- 1001 - флаг учета пилотов ИАП красных ["red_fighters"] = '1002', -- 1002 - флаг учета самолетов ИАП красных ["red_strike_pilots"] = '1003', -- 1003 - флаг учета пилотов ШАП красных ["red_strikers"] = '1004', -- 1004 - флаг учета самолетов ШАП красных ["red_heli_pilots"] = '1005', -- 1005 - флаг учета пилотов АА красных ["red_helicopters"] = '1006', -- 1006 - флаг учета вертолетов АА красных ["blue_fighter_pilots"] = '1007', -- 1007 - флаг учета пилотов ИАП синих ["blue_fighters"] = '1008', -- 1008 - флаг учета самолетов ИАП синих ["blue_strike_pilots"] = '1009', -- 1009 - флаг учета пилотов ШАП синих ["blue_strikers"] = '1010', -- 1010 - флаг учета самолетов ШАП синих ["blue_heli_pilots"] = '1011', -- 1011 - флаг учета пилотов АА синих ["blue_helicopters"] = '1012', -- 1012 - флаг учета вертолетов АА синих }; -- на всякий случай: обнуление флагов trigger.action.setUserFlag(counter_flag_names.red_fighter_pilots, 0); trigger.action.setUserFlag(counter_flag_names.red_fighters, 0); trigger.action.setUserFlag(counter_flag_names.red_strike_pilots, 0); trigger.action.setUserFlag(counter_flag_names.red_strikers, 0); trigger.action.setUserFlag(counter_flag_names.red_heli_pilots, 0); trigger.action.setUserFlag(counter_flag_names.red_helicopters, 0); trigger.action.setUserFlag(counter_flag_names.blue_fighter_pilots, 0); trigger.action.setUserFlag(counter_flag_names.blue_fighters, 0); trigger.action.setUserFlag(counter_flag_names.blue_strike_pilots, 0); trigger.action.setUserFlag(counter_flag_names.blue_strikers, 0); trigger.action.setUserFlag(counter_flag_names.blue_heli_pilots, 0); trigger.action.setUserFlag(counter_flag_names.blue_helicopters, 0); -- обработчик событий: customEventHandler = {}; -- функция обработки событий: function customEventHandler:onEvent(event) -- учет потреянных пилотов: if (world.event.S_EVENT_PILOT_DEAD == event.id) then local _status, _aircraft_properties = pcall(function() return { typeName = event.initiator:getTypeName(), coalition = event.initiator:getCoalition(); } end); if not _status then env.warning('Не удается получить тип ЛА или его коалицию, в котором был унитожен пилот.', false); else -- учет потерь пилотов ШАП: if 'Su-25T' == _aircraft_properties.typeName or 'Su-25' == _aircraft_properties.typeName or 'A-10A' == _aircraft_properties.typeName or 'A-10C' == _aircraft_properties.typeName then if _aircraft_properties.coalition == coalition.side.RED then local _pilot_counter_value = trigger.misc.getUserFlag(counter_flag_names.red_strike_pilots); trigger.action.setUserFlag(counter_flag_names.red_strike_pilots, _pilot_counter_value + 1); end if _aircraft_properties.coalition == coalition.side.BLUE then local _pilot_counter_value = trigger.misc.getUserFlag(counter_flag_names.blue_strike_pilots); trigger.action.setUserFlag(counter_flag_names.blue_strike_pilots, _pilot_counter_value + 1); end end -- учет потерь пилотов АА: if 'Ka-50' == _aircraft_properties.typeName then if _aircraft_properties.coalition == coalition.side.RED then local _pilot_counter_value = trigger.misc.getUserFlag(counter_flag_names.red_heli_pilots); trigger.action.setUserFlag(counter_flag_names.red_heli_pilots, _pilot_counter_value + 1); end if _aircraft_properties.coalition == coalition.side.BLUE then local _pilot_counter_value = trigger.misc.getUserFlag(counter_flag_names.blue_heli_pilots); trigger.action.setUserFlag(counter_flag_names.blue_heli_pilots, _pilot_counter_value + 1); end end -- учет потреь пилотов ИАП: if 'P-51D' == _aircraft_properties.typeName or 'Su-27' == _aircraft_properties.typeName or 'MiG-29A' == _aircraft_properties.typeName or 'MiG-29S' == _aircraft_properties.typeName or 'F-15C' == _aircraft_properties.typeName or 'Su-33' == _aircraft_properties.typeName then if _aircraft_properties.coalition == coalition.side.RED then local _pilot_counter_value = trigger.misc.getUserFlag(counter_flag_names.red_fighter_pilots); trigger.action.setUserFlag(counter_flag_names.red_fighter_pilots, _pilot_counter_value + 1); end if _aircraft_properties.coalition == coalition.side.BLUE then local _pilot_counter_value = trigger.misc.getUserFlag(counter_flag_names.blue_fighter_pilots); trigger.action.setUserFlag(counter_flag_names.blue_fighter_pilots, _pilot_counter_value + 1); end end end end -- учет потерянных самолетов: if (world.event.S_EVENT_CRASH == event.id) then local _status, _aircraft_properties = pcall(function() return { typeName = event.initiator:getTypeName(), coalition = event.initiator:getCoalition(); } end); if not _status then env.warning('Не удается получить тип разбившегося ЛА или его коалицию.', false); else -- учет потерь самолетов ШАП: if 'Su-25T' == _aircraft_properties.typeName or 'Su-25' == _aircraft_properties.typeName or 'A-10A' == _aircraft_properties.typeName or 'A-10C' == _aircraft_properties.typeName then if _aircraft_properties.coalition == coalition.side.RED then local _plane_counter_value = trigger.misc.getUserFlag(counter_flag_names.red_strikers); trigger.action.setUserFlag(counter_flag_names.red_strikers, _plane_counter_value + 1); end if _aircraft_properties.coalition == coalition.side.BLUE then local _plane_counter_value = trigger.misc.getUserFlag(counter_flag_names.blue_strikers); trigger.action.setUserFlag(counter_flag_names.blue_strikers, _plane_counter_value + 1); end end -- учет потерь вертолетов АА: if 'Ka-50' == _aircraft_properties.typeName then if _aircraft_properties.coalition == coalition.side.RED then local _heli_counter_value = trigger.misc.getUserFlag(counter_flag_names.red_helicopters); trigger.action.setUserFlag(counter_flag_names.red_helicopters, _heli_counter_value + 1); end if _aircraft_properties.coalition == coalition.side.BLUE then local _heli_counter_value = trigger.misc.getUserFlag(counter_flag_names.blue_helicopters); trigger.action.setUserFlag(counter_flag_names.blue_helicopters, _heli_counter_value + 1); end end -- учет потреь самолетов ИАП: if 'P-51D' == _aircraft_properties.typeName or 'Su-27' == _aircraft_properties.typeName or 'MiG-29A' == _aircraft_properties.typeName or 'MiG-29S' == _aircraft_properties.typeName or 'F-15C' == _aircraft_properties.typeName or 'Su-33' == _aircraft_properties.typeName then if _aircraft_properties.coalition == coalition.side.RED then local _plane_counter_value = trigger.misc.getUserFlag(counter_flag_names.red_fighters); trigger.action.setUserFlag(counter_flag_names.red_fighters, _plane_counter_value + 1); end if _aircraft_properties.coalition == coalition.side.BLUE then local _plane_counter_value = trigger.misc.getUserFlag(counter_flag_names.blue_fighters); trigger.action.setUserFlag(counter_flag_names.blue_fighters, _plane_counter_value + 1); end end end end end; -- добавление созданного обработчика событий: world.addEventHandler(customEventHandler); -- функция вывода на экран информации о потерях: function showCasualties() local _red_fighter_pilots = trigger.misc.getUserFlag(counter_flag_names.red_fighter_pilots); local _blue_fighter_pilots = trigger.misc.getUserFlag(counter_flag_names.blue_fighter_pilots); local _red_fighters = trigger.misc.getUserFlag(counter_flag_names.red_fighters); local _blue_fighters = trigger.misc.getUserFlag(counter_flag_names.blue_fighters); local _red_strike_pilots = trigger.misc.getUserFlag(counter_flag_names.red_strike_pilots); local _blue_strike_pilots = trigger.misc.getUserFlag(counter_flag_names.blue_strike_pilots); local _red_strikers = trigger.misc.getUserFlag(counter_flag_names.red_strikers); local _blue_strikers = trigger.misc.getUserFlag(counter_flag_names.blue_strikers); local _red_heli_pilots = trigger.misc.getUserFlag(counter_flag_names.red_heli_pilots); local _blue_heli_pilots = trigger.misc.getUserFlag(counter_flag_names.blue_heli_pilots); local _red_helicopters = trigger.misc.getUserFlag(counter_flag_names.red_helicopters); local _blue_helicopters = trigger.misc.getUserFlag(counter_flag_names.blue_helicopters); local _casualties_report = 'Потери красных: \n\r'; _casualties_report = _casualties_report .. 'Потери ИАП: пилотов - ' .. _red_fighter_pilots .. ', самолетов - ' .. _red_fighters .. '\n\r'; _casualties_report = _casualties_report .. 'Потери ШАП: пилотов - ' .. _red_strike_pilots .. ', самолетов - ' .. _red_strikers .. '\n\r'; _casualties_report = _casualties_report .. 'Потери АА: пилотов - ' .. _red_heli_pilots .. ', вертолетов - ' .. _red_helicopters .. '\n\r\n\r'; _casualties_report = _casualties_report .. 'Потери синих: \n\r'; _casualties_report = _casualties_report .. 'Потери ИАП: пилотов - ' .. _blue_fighter_pilots .. ', самолетов - ' .. _blue_fighters .. '\n\r'; _casualties_report = _casualties_report .. 'Потери ШАП: пилотов - ' .. _blue_strike_pilots .. ', самолетов - ' .. _blue_strikers .. '\n\r'; _casualties_report = _casualties_report .. 'Потери АА: пилотов - ' .. _blue_heli_pilots .. ', вертолетов - ' .. _blue_helicopters .. '\n\r'; trigger.action.outText(_casualties_report, 20); end; Также в скрипте реализована функция showCasualties(); - эта функция выводит на экран информацию о потерях каждой коалиции. Функцию можно вызвать в любой момент в игре через DO SCRIPT или через расширенные действия ППМ, используя PrefomCommand Run script, или через триггерные действия, также используя PrefomCommand Run script. Ну и по традиции, прикладываю демонстрационную миссию-пример, чтобы можно было посмотреть как это работает и как этим пользоваться. counter_casualty.lua counter_casualty.miz -
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
Да, можно. Как время появится, выложу скрипт. -
Ага. Вот такую ошибку выдает при запросе списка серверов: 00079.951 INFO NET: sent serverlist request 00080.136 ERROR NET: eagledcs:iq:serverlist error: 503 Я так понимаю: Service Temporarily Unavailable
-
I've tested. This function does not work in DCS ver .1.2.2. Will this function work in DCS ver. 1.2.3?
-
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
Все, готово. Написал скрипт, который содержит функции создания дыма на позиции первого и последнего юнита либо синего, либо красного. Функции могут быть вызваны в любой момент миссии для любой наземной группы. Скрипт нужно подключать к миссии через триггер MISSION START и действие DO SCRIPT FILE (см. скриншот mission_start_trigger). Вот скрипт (прикрепил файл-скрипт к сообщению smoke.lua): -- этот скррипт содержит функции для создания дыма на позициях -- первого и последнего юниат. -- функции могут быть вызваны в любой момент в игре, при необходимости -- функция для дыма любого цвета function makeSmoke(_group_name, _smoke_color) if nil == _group_name then -- на сякий случай проверка аргумента: -- если он кривой, то запишем об этом в лог и выйдем из функции env.error('Ошибка в функции makeSmoke: аргумент _group_name не может быть nil', false); return; end local _dcsw_group = Group.getByName(_group_name); local _status, _units = pcall(function() return _dcsw_group:getUnits(); end); if not _status then -- если пошло что-то не так, то делаем запись в лог env.error('Не удалось получить юниты группы ' .. _group_name .. '. Возможно, имя группы указанно не верно', false); else local _count_units = #_units; if _count_units > 0 then local _first_unit_status, _first_unit_position = pcall(function() return _units[1]:getPosition(); end); local _last_unit_status, _last_unit_position = pcall(function() return _units[_count_units]:getPosition(); end); if not _first_unit_status then env.error('Не удалось получить позицию первого юнита группы ' .. _group_name .. '. Какая-то бида :(', false); else -- дымим на позиции первого: trigger.action.smoke(_first_unit_position.p, _smoke_color); end if not _last_unit_status then env.error('Не удалось получить позицию последнего юнита группы ' .. _group_name .. '. Какая-то бида :(', false); else -- дымим над последним: trigger.action.smoke(_last_unit_position.p, _smoke_color); end else -- если функция вызвана, а в группе ни одного живого юнита env.info('Не возможно создать дым для группы ' .. _group_name .. '. Группа уничтожена.', false); end end end; -- функция, чтобы подымить красным: function makeRedSmoke(_group_name) makeSmoke(_group_name, trigger.smokeColor.Red); end; -- функция, чтобы подымить синим: function makeBlueSmoke(_group_name) makeSmoke(_group_name, trigger.smokeColor.Blue); end; Для того, чтобы вызвать дым в нужный момент миссии, нужно вызвать функцию makeBlueSmoke(_group_name) или makeRedSmoke(_group_name) в зависимости от того какой цвет дыма нужно, где вместо _group_name нужно указать имя группы. Например, если имя группы smokers, то так: makeRedSmoke("smokers"); 1. Функции можно вызвать тригеерами используя DO SCRIPT. 2. Можно вызвать через расширенные действия ППМ, используя PrefomCommand Run script 3. Можно через триггерные действия вызвать. Тоже используя PrefomCommand Run script См. скриншоты. И ещё миссию прикрепил для примера: там вызов синего дыма через триггер, вызов красного через расширенные действия ППМ smoke.lua make_smoke.miz -
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
ok, сделаю. Выложу скрипт сегодня вечером или завтра днем. Я сегодня пока не знаю во сколько до дому доберусь. -
А что кроме Су-25Т больше нет ничего? Обычный Су-25 и то весьма не плох, особенно на сервере War, где и ПВО то серьёзного нет. А Су-25Т это мифический самолет.
-
Су-25T сам по себе весь читерский. Предлагаю убрать его.
-
Я просил сделать Debug Console - расскажи мне как её можно сделать скриптами? Она очень нужна. Я сейчас собираюсь сделать для себя временное подобие Debug Console с помощью slmod, но все равно это будет только подобие,а не полноценная консоль отладки.
-
Разработка миссии на основе Simulator Scripting Engine
BAntDit replied to BAntDit's topic in Треки, Миссии и Кампании
Доступ к стандартным mission score, на сколько я знаю, сейчас не доступен через Simulator Scripting Engine. Можно попробовать написать хотелку, чтобы эти триггерные команды сделали доступным через скрипты. Лучше писать сюда: http://forums.eagle.ru/showthread.php?t=95148&page=11 - вроде самая живая тема по скриптам. ----------------------------------------- ага, спасибо - я вечером посмотрю. Кстати, на почту мне так он и не пришел - ты наверно когда записывал мою почту, записал bandit вместо bantdit - так многие путают ) -
Вообще я заметил, что чем больше народу тем чаще выкидывает. На War-е всегда много народу, там и выкидывает соответственно чаще.