Jump to content

Помощь разработчику миссий


StarLey_Andrew

Recommended Posts

В 15.12.2022 в 18:57, SL PAK сказал:

Нет отмены действия. В настройках РАЗНЫЕ можно включить автосохранение в редакторе, например каждую минуту. Загрузка сохранений в меню редактора ФАЙЛ - ОТКАТИТЬ.

А куда сохраняются файлы откатов? Если они самоликвидируются после выхода из редактора, это хорошо. У меня проблема. Винчестер 500 гб. На нем установлен только DCS и винда. Осталось всего 40 гигов.

GreyCat_SPb

Link to comment
Share on other sites

11 часов назад, =BK=Solovyov [27] сказал:

Сделай в миссии один слот командира под паролем, и в редакторе пропиши радиоменю для конкретной группы. Командиром садишься в этот юнит и должно работать только у тебя. Расскажешь, что получилось)

 

Я так и делаю. Правда, сколько пароли не ставил игра пароль не требует. Я вхожу в слот мастера, хотя пароль стоит, но игра его не требует. Далее есть борт, кстати тоже запоролен в редакторе, но игра пароль не требует) на группу , которого сделаны менюшки ф10. Но это не удобно. На миссии 20 человек, постоянно идут переговоры. И тут я раз проваливаюсь в борт рация слетает. Прожимаю нужное меню в ф10 и бегу на слот мастера обратно , а там срс потерял все диапазоны частот и всё начинаю настраивать заново и так раз 15 за игру. Не удобно так. Люди теряют управленца полётами.))) 

Link to comment
Share on other sites

  • ED Team
11 часов назад, ASW сказал:

А куда сохраняются файлы откатов?

Не пробовал включать автоматику, но все файлы пользователя сохраняются в пользовательскую папку. Смотрите где там появляются свежие файлы.

Есть еще вариант с системным темпом, там есть папка DCS с временными файлами.

  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...

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

1446046802101.jpeg

PJn4Zorh.jpg

Или это в хотелки?

  • Like 1
Link to comment
Share on other sites

  • ED Team
1 час назад, asbond сказал:

Или это в хотелки?

У нас боту для применения вооружения нужно выполнить целый свой ритуал с заходом на цель. Работать синхронно с ведущим-игроком он не умеет. Такие картинки в симуляторе можно сделать, только если "ведомый" игрок. Есть такой момент в промо-ролике к кампании "Курсант".

 

Приказываете ведомому атаковать и пристраиваетесь к нему сзади в строй. Непросто и забавно может быть так атаковать.

Link to comment
Share on other sites

Пара ботов при атаке выстраивается так: атакующий заходит на цель. Второй сзади и выше (прикрывает). Наблюдал у самолётов и вертолетов). Если вы дадите команду боту (прикрой меня), то он займёт позицию сзади и выше (в колонне). Думаю, атака парой имеет такое правило-алгоритм

ZAR_Magadan

Link to comment
Share on other sites

  • 3 weeks later...

Есть команды в триггерах "излучение объекта выкл" и "излучение объекта вкл". Если это применимо к ПВО надо команду излучение объекта выкл накладывать на каждую антенну или только на командный пункт? 

Можно ли этими командами научить ПВО выключаться, когда рядом врага нет и включаться когда враг в зоне пуска?

 


Edited by Lehha50rus
Link to comment
Share on other sites

  • ED Team
15 часов назад, Lehha50rus сказал:

Если это применимо к ПВО надо команду излучение объекта выкл накладывать на каждую антенну или только на командный пункт?

Накладывать на излучатель, т.е. РЛС обнаружения и наведения. Можно например установить комплексу несколько РЛС, но включенной держать только одну. И включать остальные по уничтожению предыдущих.

Также можно в начале миссии выключить все РЛС (или просто наложить на комплекс заклятие "ИИ ГРУППЫ ВЫКЛЮЧИТЬ") и включать все когда самолет противника залетает в установленную зону. И выключать когда вылетает из неё. Тут удобно использовать два триггера с типом ГРАНИЧНЫЕ - они будут срабатывать при каждом пересечении самолетом границы триггерной зоны.

Способы самозащиты рассматривались в этом видео:

Есть способ управления ПВО с помощью скриптов, но тут надо въезжать в тему:

 

 

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...

Можно ли как-то увеличить интервал между пусками КР с бомбардировщика? Поставил атаку точки, КР, весь боезапас. Бомбардировщик пустил змейку из 8 КР. Любое попадание по змейке ракетой с более-менее солидной БЧ (пробовал Феникс, Р27) выносит по 2-3 КР разом.

Link to comment
Share on other sites

  • ED Team
18 минут назад, snaryad2 сказал:

Поставил атаку точки, КР, весь боезапас.

Попробуйте не весь боезапас, а одну ракету. И далее по курсу создайте еще несколько ППМ с одиночными пусками.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Подскажите, можно ли как-то триггером накидывать очки в списке игроков?

______________________

GA-X79-UD3, Core 4820K (3,7 ГГц), GTX 1080 (8 Гб), 32 Гб DDR3 // Win 7 SP1 // Joy Logitech G940 // EDTracker

FC3, CA, Ка-50, Ми-8, Ми-24, M-2000, A-10С, F/A-18, Supercarrier, Nevada, Persian Gulf, NS 430, Christen Eagle II, Yak-52

Link to comment
Share on other sites

  • 5 weeks later...

День добрый.

Подскажите пожалуйста как в редакторе сделать команду боту (группе к примеру) идти с одного ППМ до другого с включенными БАНО и проблесковыми маяками?

Сопровождаю группу на задание ночью. Тьма полная. Чтобы встать нормально за ними - нужны ориентиры, чтобы хоть немного визуально наблюдать их. Как это можно сделать? В триггерах и опциях ППМ ничего подобного не нашёл. А то они (боты) после взлёта проблесковые да БАНОшки гасят и их вообще не видно. 

YouTube - WaffenCatLive

 

Microsoft Windows 10 Pro x64 | ASrock Fatal1ty K4 gaming x470 | SSD m.2 Samsung 970 EVO | AMD Ryzen 7 2700X (4.3Ghz) | RAM 32G ddr4 ballistix Sport (3200MHz) | Super JetStream GeForce RTX2080 | Thrustmaster HOTAS Warthog | TrackIR 5 + TrackClip PRO :pilotfly:

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • ED Team
31 минуту назад, WaffenCat сказал:

А то они (боты) после взлёта проблесковые да БАНОшки гасят и их вообще не видно. 

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

Link to comment
Share on other sites

Только что, SL PAK сказал:

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

Там тьма. Да и самолёты тёмные (B-2)

А через скрипты нельзя заставить? Прописать там что-нибудь. 

YouTube - WaffenCatLive

 

Microsoft Windows 10 Pro x64 | ASrock Fatal1ty K4 gaming x470 | SSD m.2 Samsung 970 EVO | AMD Ryzen 7 2700X (4.3Ghz) | RAM 32G ddr4 ballistix Sport (3200MHz) | Super JetStream GeForce RTX2080 | Thrustmaster HOTAS Warthog | TrackIR 5 + TrackClip PRO :pilotfly:

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • ED Team
3 минуты назад, WaffenCat сказал:

А через скрипты нельзя заставить? Прописать там что-нибудь.

Сомнительно, так как это модель поведения.

Аргументы по которым загораются огни можно посмотреть, открыв модель ЛА в ModelViewer2.exe. Lua я знаю поверхностно, есть ли возможность применить эти аргументы к ботам не ведаю. Идея такая выглядит конфликтной, так как боты сами этими аргументами рулят.

Link to comment
Share on other sites

Только что, SL PAK сказал:

Сомнительно, так как это модель поведения.

Аргументы по которым загораются огни можно посмотреть, открыв модель ЛА в ModelViewer2.exe. Lua я знаю поверхностно, есть ли возможность применить эти аргументы к ботам не ведаю. Идея такая выглядит конфликтной, так как боты сами этими аргументами рулят.

Печально, ну ладно. Попробую так слетать.

Спасибо! 

6 минут назад, SL PAK сказал:

Сомнительно, так как это модель поведения.

Аргументы по которым загораются огни можно посмотреть, открыв модель ЛА в ModelViewer2.exe. Lua я знаю поверхностно, есть ли возможность применить эти аргументы к ботам не ведаю. Идея такая выглядит конфликтной, так как боты сами этими аргументами рулят.

nullВот нашёл чего...правда как с этим работать - непонятно.

Может тут можно подредактировать на какой высоте включает и выключает БАНО и маячок? null

image.png

image.png

YouTube - WaffenCatLive

 

Microsoft Windows 10 Pro x64 | ASrock Fatal1ty K4 gaming x470 | SSD m.2 Samsung 970 EVO | AMD Ryzen 7 2700X (4.3Ghz) | RAM 32G ddr4 ballistix Sport (3200MHz) | Super JetStream GeForce RTX2080 | Thrustmaster HOTAS Warthog | TrackIR 5 + TrackClip PRO :pilotfly:

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • ED Team

Это просто описываются огни для модели - какие, как горят, какими аргументами управляются.

Включаются они не по высоте, а по ситуации. Модель поведения, прописанная скорей всего не в открытом файле.

Link to comment
Share on other sites

2 минуты назад, SL PAK сказал:

Это просто описываются огни для модели - какие, как горят, какими аргументами управляются.

Включаются они не по высоте, а по ситуации. Модель поведения, прописанная скорей всего не в открытом файле.

Ну ладно. Принято. 

YouTube - WaffenCatLive

 

Microsoft Windows 10 Pro x64 | ASrock Fatal1ty K4 gaming x470 | SSD m.2 Samsung 970 EVO | AMD Ryzen 7 2700X (4.3Ghz) | RAM 32G ddr4 ballistix Sport (3200MHz) | Super JetStream GeForce RTX2080 | Thrustmaster HOTAS Warthog | TrackIR 5 + TrackClip PRO :pilotfly:

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • 2 weeks later...
В 27.03.2023 в 15:52, Granica сказал:

Как поставить технику в ангар? На пол шишечки вариант не годится))) Ехать она внутрь тоже не хочет

Digital Combat Simulator.jpg

Сначала ставишь технику, потом сверху ангар, но не передвинаешь на них ангар, м именно ставишь новый объект сверху техники

5636927.png

Наши сервера и статистика - https://aviabk.ru

 

Link to comment
Share on other sites

  • 2 weeks later...

В Редакторе, в триггеных действиях есть опция "Удалить объекты и деревья в триггерной зоне", а можно ли ещё и траву удалить?


Edited by VanekK30

signature_GR(SW).jpg
ВПГ "Стража России" ведёт набор лётчиков на самолёты Су-27 и МиГ-29!

2.PNGVAT "Guard of Russia"

3.PNGВПГ "Стража России"

png-transparent-discord-computer-servers-teamspeak-discord-icon-video-game-smiley-online-chat-thumbnail (1).pngВПГ "Стража России"

Link to comment
Share on other sites

Подскажите, если готовый скрипт для такой ситуации?  Есть триггерная зона в которой например каждые 5 минут появляется группа (один самолет или один вертолет). и летит по маршруту. Или этот же самолет появляется через какое то время снова если он уничтожен. Я такое видел на серверах 4YA. Перегнал трек в miz, там есть эти самолеты, которые появляются в разных местах карты и патрулируют. У них две точки маршрута. Как сделано я так и не понял.  В CTLD я этого не нашел, там SPAWN для наземных групп. С CTLD только начал разбираться, но связанное с  SPAWN воздушных групп не нашел.

GreyCat_SPb

Link to comment
Share on other sites

7 hours ago, ASW said:

Подскажите, если готовый скрипт для такой ситуации?  Есть триггерная зона в которой например каждые 5 минут появляется группа (один самолет или один вертолет). и летит по маршруту. Или этот же самолет появляется через какое то время снова если он уничтожен. Я такое видел на серверах 4YA. Перегнал трек в miz, там есть эти самолеты, которые появляются в разных местах карты и патрулируют. У них две точки маршрута. Как сделано я так и не понял.  В CTLD я этого не нашел, там SPAWN для наземных групп. С CTLD только начал разбираться, но связанное с  SPAWN воздушных групп не нашел.

Группы спаунятся в независимости от того воздушные они или нет с точки зрения скрипта. Почти наверняка есть что-то в MOOSE. Но желаемую логику неплохо было бы описать точнее, ибо спаунить каждые N минут и после уничтожения - немного разные задачи.

В общем случае обычно делают так: в редакторе создают группы-шаблоны вместе со всеми ППМ, вооружение и т.д., ставят им late activation и далее скриптом на базе этих шаблонов создают новые группы, которые будут лететь и выполнять задачи по заданному в редакторе маршруту. Под спойлером пример моего скрипта, который спаунит группы по F10.

Spoiler
GeoTools = {}

---Calculates coordinates with bearing and range from given point
---Keeps the same altitude that center has
---@param center Vec3
---@param bearingRad number #in radians
---@param rangeMeters number #in meters
---@return Vec3
function GeoTools.projectPoint(center, bearingRad, rangeMeters)
    ---@type Vec3
    local point = {}
    point.x = math.cos(bearingRad) * rangeMeters + center.x
    point.z = math.sin(bearingRad) * rangeMeters + center.z
    point.y = center.z
    return point
end

---Returns distance in meters between two Vec3 points
---Ignores altitude
---@param a Vec3
---@param b Vec3
---@return number
function GeoTools.getDistance(a, b)
    return ((a.x - b.x) ^ 2 + (a.z - b.z) ^ 2) ^ 0.5
end

---Returns slant distance between two Vec3 points
---@param a Vec3
---@param b Vec3
---@return number
function GeoTools.getSlantDistance(a, b)
    return ((a.x - b.x) ^ 2 +
        (a.y - b.y) ^ 2 +
        (a.z - b.z) ^ 2) ^ 0.5
end

LuaTools = {}
function LuaTools.deepCopy(src)
    local dest
    if type(src) == "table" then
        dest = {}
        for key, value in next, src, nil do
            dest[LuaTools.deepCopy(key)] = LuaTools.deepCopy(value)
        end
        setmetatable(dest, LuaTools.deepCopy(getmetatable(src)))
    else
        dest = src
    end
    return dest
end

DbgTools = {}
function DbgTools.value2string(arg)
    local msg = ""
    if type(arg) == "string" then
        msg = arg
    elseif type(arg) == "number" then
        msg = string.format("%.2f", arg)
    elseif type(arg) == "table" then
        for key, value in pairs(arg) do
            msg = msg .. '["' .. key .. '"] = ' .. tostring(value) .. ',\n'
        end
    end
    return msg
end

function DbgTools.print(arg, seconds, clear)
    clear = clear or false
    seconds = seconds or 30
    local msg = DbgTools.value2string(arg)
    trigger.action.outText(msg, seconds, clear)
end

function DbgTools.logInfo(arg)
    local msg = DbgTools.value2string(arg)
    env.info(msg)
end

function DbgTools.logError(arg)
    local msg = DbgTools.value2string(arg)
    env.error(msg)
end

ConvTools = {}

function ConvTools.m2nm(m)
    return m / 1852
end

function ConvTools.nm2m(nm)
    return nm * 1852
end

function ConvTools.m2ft(m)
    return m * 3.28084
end

function ConvTools.ft2m(ft)
    return ft * 0.3048
end

---@class RedGroup
---@field name string
---@field caption string
---@field data table
---@field templateData table
RedGroup = {}
RedGroup.__index = RedGroup

---@param name string
---@param caption string
---@return RedGroup
function RedGroup.new(name, caption)
    local newObj = setmetatable({}, RedGroup)
    newObj.name = name
    newObj.caption = caption
    return newObj
end

function RedGroup:setTemplate(groupData)
    self.templateData = groupData
    self.templateData.groupId = 0
    self.templateData.lateActivation = false
end

---@param ip Vec3 | nil Initial point
function RedGroup:getData(ip)
    local data = LuaTools.deepCopy(self.templateData)
    if ip then
        for i, unitData in ipairs(data.units) do
            unitData.x = ip.x + i * 30
            unitData.y = ip.z + i * 30
            unitData.alt = ip.y
        end
        data.route.points[1].x = ip.x
        data.route.points[1].y = ip.z
        data.route.points[1].alt = ip.y
    end
    return data
end

function RedGroup:spawn()
    local groupData = self:getData()
    coalition.addGroup(country.id.CJTF_RED, Group.Category.AIRPLANE, groupData)
end

---Spawns group at given point
---@param ip Vec3
function RedGroup:spawnAt(ip)
    local groupData = self:getData(ip)
    coalition.addGroup(country.id.CJTF_RED, Group.Category.AIRPLANE, groupData)
end

---@class RandomLimits
---@field a number
---@field b number

---@class RedAir
---@field list RedGroup[]
---@field refPoint Vec3
---@field bearingLimits RandomLimits
---@field rangeLimits RandomLimits
---@field altitudeLimits RandomLimits
RedAir = {}
RedAir.__index = RedAir

---@return RedAir
function RedAir.new()
    local newObj          = setmetatable({}, RedAir)
    newObj.list           = {}
    newObj.bearingLimits  = { a = 0, b = 360 }
    newObj.rangeLimits    = { a = 0, b = 100 }
    newObj.altitudeLimits = { a = 30000, b = 50000 }
    newObj.refPoint       = { x = 0, y = 0, z = 0 }
    return newObj
end

function RedAir:addTemplate(name, caption)
    local redGroup = RedGroup.new(name, caption)
    table.insert(self.list, redGroup)
    return self -- just for fluent calls
end

function RedAir:loadTemplates()
    local redCoalition = env.mission.coalition.red
    for _, country in ipairs(redCoalition["country"]) do
        for _, group in ipairs(country["plane"]["group"]) do
            for _, tmpl in ipairs(self.list) do
                if group.name == tmpl.name then
                    tmpl:setTemplate(LuaTools.deepCopy(group))
                end
            end
        end
    end
    return self
end

---@param point Vec3
function RedAir:setReferencePoint(point)
    self.refPoint = point or { x = 0, y = 0, z = 0 }
end

function RedAir.activateGroup(args)
    ---@type RedAir
    local obj = args.obj
    local group = obj.list[args.index]
    group:spawnAt(obj:getRandomSpawnPoint())
end

function RedAir:setBearingLimits(a, b)
    self.bearingLimits.a = a
    self.bearingLimits.b = b
    return self
end

function RedAir:setRangeLimits(a, b)
    self.rangeLimits.a = a
    self.rangeLimits.b = b
    return self
end

function RedAir:setAltitudeLimits(a, b)
    self.altitudeLimits.a = a
    self.altitudeLimits.b = b
    return self
end

function RedAir:getRandomSpawnPoint()
    local bearing  = math.random(self.bearingLimits.a, self.bearingLimits.b)
    local range    = math.random(self.rangeLimits.a, self.rangeLimits.b)
    local altitude = math.random(self.altitudeLimits.a, self.altitudeLimits.b)

    local point    = GeoTools.projectPoint(self.refPoint,
        math.rad(bearing), ConvTools.nm2m(range))

    point.y        = ConvTools.ft2m(altitude)
    return point
end

function RedAir:initMenu(parentPath)
    local parent = missionCommands.addSubMenu("Hostile Activate", parentPath)
    for i, redGroup in ipairs(self.list) do
        missionCommands.addCommand(redGroup.caption, parent,
            RedAir.activateGroup, { obj = self, index = i })
    end
end

function main()
    local redAir = RedAir.new()
    redAir:setReferencePoint(coalition.getMainRefPoint(coalition.side.RED))
    redAir:addTemplate("fulcrumSingle", "Fulcrum Single")
        :addTemplate("fulcrumPair", "Fulcrums Pair")
        :addTemplate("fulcrumFlight", "Fulcrums Flight")
        :addTemplate("flankerSingle", "Flanker Single")
        :addTemplate("flankerPair", "Flankers Pair")
        :addTemplate("flankerFlight", "Flankers Flight")
        :loadTemplates()
        :setRangeLimits(5, 30)
        :setBearingLimits(180, 359)
        :setAltitudeLimits(35000, 50000)
        :initMenu()
end

main()

 

 

  • Like 1

Верните короновирус в качестве главной проблемы, спать в маске буду, обещаю.

Скрытый текст

Hardware: AMD 5900x, 64Gb RAM@3200MHz, NVidia RTX3070 8Gb, Monitor 3440x1440(21:9), Samsung 980pro 1Tb NVMe SSD, VKB Gunfighter+MCGU, Virpil Throttle CM3, VKB T-Rudder, TrackIR.

 

Link to comment
Share on other sites

Спаунить каждые N минут. Вся фишка в том, касаемо тех серверов, там есть группы, которые спаунятся в воздухе и есть группы обычные, которые взлетают в определенное время. Учитывая длительность миссии в 8 часов получается эффект неожиданности. По F-10 ты создаешь себе врага сам и знаешь, когда он появится. 

GreyCat_SPb

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...