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

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

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

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

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

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

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

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

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

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

God save Hatsune Miku!

Ссылка на комментарий
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 11.03.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 11.03.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 11.03.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 11.03.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

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

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

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

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

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

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

Войти

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

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

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

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