Перейти к контенту

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

4 минуты назад, Шипэтя сказал:

Извиняюсь за не знание, не судите я начинаю осваивать скрипты и по это много ошибаюсь, а может есть статейка где что то подобное рассказывается ?

Не видел я такой статьи, могу только скинуть пример как это сделано


Подарки

  • 2
  • Ссылка на комментарий

    Подскажите, пожалуйста, как прописать логику враждебному нпс так, чтобы он не атаковал актора при приближении к нему, не сходил с точки спавна и постоянно проигрывал анимацию состояния транса (trans_0_idle_0)? Короче, примерно тоже самое, что и в тч, когда монолитовцы сидят вокруг кучи мусора и вращают головами.

    Изменено пользователем Rod_K
    Ссылка на комментарий

    Подскажите, как добавить новую кнопку в пда?  Делаю по аналогии с кнопкой "центр на меченом", но кнопки не появляется. Пробовал удалить секцию кнопки "центр на меченом", но вылета не было, просто кнопка не появилась. Значит - её нигде не требуют. Но моя кнопка даже с готовой секцией не появляется. Неужели это тоже движковая тема? Всем спасибо

     OBNs8aTWS9M.jpg?size=1158x236&quality=96

    God save Hatsune Miku!


    Подарки

  • Ссылка на комментарий
    3 часа назад, Labadal сказал:

    Неужели это тоже движковая тема?

    Да.

    • Спасибо 1
    • Согласен 1
    • Полезно 1

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

    Ссылка на комментарий
    6 часов назад, Labadal сказал:

    Пробовал удалить секцию кнопки "центр на меченом", но вылета не было, просто кнопка не появилась. Значит - её нигде не требуют.

    Часть элементов движковых интерфейсов строится по принципу

    if (uiXml.NavigateToNode("какая-то нода xml", 0)) {	

    Т.е. если их удалить из xml-конфига, элемент исчезает без вылета. Вернуть на место - появляется. Другие элементы требуются без проверок и их удаление из конфигов вызовет вылет.

    Но в любом случае, и те и другие спрашивает движок. Чтобы эта "какая-то нода" была прочитана, движок должен ее запросить. В дефолтном ТЧ, емнип, чтением xml-конфигов любых в принципе, только движок и занимается.

    Изменено пользователем Zander_driver
    • Спасибо 1

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий

    Подскажите, почему получается вылет при определении переменной ini-файла:

    local ltx="weapons\\upgrade.ltx"

    local ini=ini_reader.iniReader(ltx) --вылет

    local ini=ini_file(ltx) --тоже вылет

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

    [error]Expression    : fatal error
    [error]Function      : CInifile::r_section
    [error]File          : Xr_ini.cpp
    [error]Line          : 397
    [error]Description   : Can't open section '%s'
    [error]Arguments     : wpn_ak74

    ...

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

    [wpn_ak74_kalibr]:wpn_ak74
    ammo_class             = ammo_5.56x45_ss190, ammo_5.56x45_ap, ammo_5.56x45_gd
    inv_name                = wpn-ak74_kalibr
    description            = enc_kalibr_wpn_ak74
    inv_grid_x         = 41
    inv_grid_y         = 9
    cost                    = 3200
    silencer_name                  = wpn_addon_sil_556_ar
    silencer_x                     = 225
    silencer_y                     = 15
    cheat_item = true

     

    Думается, из-за ":wpn_ak74" после имени секции. Но как тогда явно указать такой файл для чтения из него?

    Ссылка на комментарий
    Только что, phalcor сказал:

    Подскажите, почему получается вылет при определении переменной ini-файла:

    Потому, что это надо делать как-то так:

    local kn_ini = ini_file([[weapons\\upgrade.ltx]])

     

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

    Думается

    А думается неправильно.

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

    • Спасибо 1

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий

    @Zander_driver Всё тоже самое - тот же вылет!

    Пробовал так:

    local kn_ini = ini_file([[weapons\\upgrade.ltx]]) --так вылета нет, но в log пишет: WARNING: CLocatorAPI::check_for_file file not found file z:\op21-repack\gamedata\config\weapons\\upgrade.ltx in files list (size = 83322) 

    соответственно, так как файл не найден, то и чтения из него не будет...  Пробуем убрать один слэш:

    local kn_ini = ini_file([[weapons\upgrade.ltx]]) --так вылет.  

    Как же сделать присвоение переменной ini?!

    Ссылка на комментарий

    @phalcor, может так:

    local kn_ini = ini_file("weapons\\upgrade.ltx")

     

    P.S. Ищи примеры кода в папке "scripts", там всё есть.

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

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


    Подарки

  • Ссылка на комментарий

    Ситуация немного проясняется. Дело всё-таки в наследуемой секции.

    Вот у меня в файле upgrade.ltx такая запись: [wpn_ak74_kalibr]:wpn_ak74

    Если добавить наследуемую секцию [wpn_ak74] в ЭТОТ ЖЕ файл, всё работает! Если она в другом файле - вылет, расписанный мною выше.

    Получается, подключить такой файл через переменную ini = ini_file(имя) невозможно?  

     

    Ссылка на комментарий

    @phalcor, нужно выбрать "вышестоящий" файл, тот в котором подключен upgrade.ltx. Рискну предположить, что это:

    local kn_ini = ini_file("weapons.ltx")

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

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


    Подарки

  • Ссылка на комментарий

    @WinCap, попробовал weapons.ltx - там тоже вылет. 

    В общем, у меня задача стояла такая - определить, является ли запрашиваемый параметр оружия "родным" (прописанным непосредственно под секцией это оружия), или же он наследуемый.

    Пока решения не вижу.

     

    Ссылка на комментарий
    Только что, phalcor сказал:

    Если добавить наследуемую секцию [wpn_ak74] в ЭТОТ ЖЕ файл, всё работает!

    Естественно, родитель для наследования должен быть виден там, где ты его наследуешь.

    Если ты хочешь, чтобы все выше-объявленные секции конфига были видны для твоей, то и подключай его к system.ltx, и доступ получай через system_ini().

    Файлы, доступ к которым получается через ini_file(), подключаются как отдельная система конфига, независимая и несвязанная с system_ini. К ним может быть тоже что-то подключено через #include, но это все равно будет обособленная система.

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

    В общем, у меня задача стояла такая - определить, является ли запрашиваемый параметр оружия "родным" (прописанным непосредственно под секцией это оружия), или же он наследуемый.

    Есть такая идея...

    local ltx = system_ini()
    function found_line(section, line)
      local lc = ltx:line_count(section)
      local a = 1
      while a < lc do
        local key = ''
        local value = ''
        local r = ltx:r_line(section, a, key, value)
        if r and key == line then
          return true
        end
        a = a + 1
      end
      return false
    end

    Методы line_count и r_line точно есть в OGSR (Это не я добавил). Есть ли они в оригинальном ТЧ, честно говоря не помню. Если есть, то должно сработать.

    Если же нету, то боюсь, не существует способа узнать то что тебе нужно из скриптов.

    • Полезно 1

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий

    @Zander_driver , спасибо за идею, методы у меня работают (ОП 2.1), вот только функция всегда выдаёт "true",

    т.е. какой параметр ей в line не укажи, она его всегда найдёт в system_ini() - оно и правильно, ведь это обобщённое, так сказать хранилище всех параметров данной секции. 

    Ну что жеж, констатируем - нет у нас методов против Кости Сапрыкина для решения моей задачи по определению, оригинален или наследуем параметр.

    Ссылка на комментарий
    7 минут назад, phalcor сказал:

    вот только функция всегда выдаёт "true"

    Это естественно. После прочтения ini-файла, наследуемые параметры копируются в конечную секцию, и присутствую в ней в полном составе.

     

    7 минут назад, phalcor сказал:

    нет у нас методов ... по определению, оригинален или наследуем параметр.

    Здесь возможен только "костыль". Если точно знать имя конечной секции, а также имя наследуемой, то можно прочитать параметр дважды - из одной и из другой секции. Если параметр различается, значит, он был переопределен. По другому никак.

     

     

    Изменено пользователем WinCap
    • Согласен 2
    • Полезно 1

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


    Подарки

  • Ссылка на комментарий
    8 минут назад, WinCap сказал:

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

    А вот это идея. Остаётся узнать, а есть ли способ прочитать в переменную parent-секцию (то, что после двоеточия) - [wpn_ak74_m1]:wpn_ak74 ?

    Ссылка на комментарий
    4 минуты назад, phalcor сказал:

    есть ли способ прочитать в переменную parent-секцию

    Нет.

    Если это действительно необходимо для реализации какой-то мега крутой идеи, то можно вручную составить таблицу наследований секций:

    local tbl = {
      ["wpn_ak74_m1"] = "wpn_ak74",
      и т.д.
    }

     

    Изменено пользователем WinCap
    • Спасибо 1

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)


    Подарки

  • Ссылка на комментарий
    Только что, WinCap сказал:

    можно вручную составить таблицу наследований секций:

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

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

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий

    Здравствуйте. Как определить, принадлежит ли определенный гейм-вертекс текущей локации? ЗП.

    New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор

    Русификатор для игры Vendetta: Curse of Raven's Cry

    Ссылка на комментарий

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

    Комментарии могут оставлять только зарегистрированные пользователи

    Создать аккаунт

    Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

    Зарегистрировать новый аккаунт

    Войти

    Есть аккаунт? Войти.

    Войти
    • Недавно просматривали   1 пользователь

    AMK-Team.ru

    ×
    ×
    • Создать...