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

[SoC] Ковыряемся в файлах

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

13 часов назад, ed_rez сказал:

ТЧ какой-то счетчик глючит или глючил

Да, по прошествии игрового месяца счетчик переполнялся и начинались сбои по выбросу и погоде. Но насколько помню, это дело правили и сбоев не возникало. Скорее, дело в адаптации.

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

Сталкер - наше всё!

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

Есть, значитца, ручной телепортатор от stalk9r на основе мобильного менеджера от Singapur22.

 

7a7b08a2c4234b92cdc42fd3ab5e851b0589d438

 

На ТЧ и OGSE работает, а вот на движке OGSR Engine стабильный вылет:

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

 

FATAL ERROR

[error]Expression    : vl_Count
[error]Function      : _VertexStream::Lock
[error]File          : D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\Layers\xrRender\R_DStreams.cpp
[error]Line          : 63
[error]Description   : Missing or invalid texture! vl_Count=0.

 

 

Причем вылетает на выделенной строке, в момент создания edit_box-а

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

 

--//----------------------------------------------------------------------------------------------
--// Базовый класс всплывающих окон
--//----------------------------------------------------------------------------------------------
class "base_total" (CUIScriptWnd)

function base_total:__init(owner, target)super()
    self.owner = owner
    self.target = target
    self.Xml = CScriptXmlInit()
    self.Xml:ParseFile("ui_autotele_win.xml")

    self.Message_box_error = CUIMessageBoxEx()
    self.Message_box_error:Init("message_box_error")

    self.BackFrame = self.Xml:InitFrame("frame_message", self)
    self.Title = self.Xml:InitStatic("frame_message:title", self.BackFrame)

    self.BtnOk = self.Xml:Init3tButton("button_ok", self)
    self:Register(self.BtnOk, "button_ok")
    self:AddCallback("button_ok",     ui_events.BUTTON_CLICKED,    self.ClickOk,     self)

    self.BtnCancel = self.Xml:Init3tButton("button_cancel", self)
    self:Register(self.BtnCancel, "button_cancel")
    self:AddCallback("button_cancel", ui_events.BUTTON_CLICKED,    self.ClickCancel, self)
end

function base_total:ClickOk()
    self:ClickCancel()
end

function base_total:ClickCancel()
    self:GetHolder():start_stop_menu(self, true)
end


--//----------------------------------------------------------------------------------------------
--// Класс всплывающего окошка с редактором ввода
--//----------------------------------------------------------------------------------------------
class "message_editBox" (base_total)

--/args/>
--'owner    --объект, из которого было открыто данное окно
--'target    --функция или метод, в который требуется передать введённый текст(значение) при клике кнопки "OK"
--'veric    --функция или метод, проверки валидности вводимого текста(значения). Должен возвращать два значения (валидность, текст ошибки)
--'str        --текст по умолчанию (выводится в эдит, при старте окна)
--'format    --формат ввода. ("s" -все символы, "n" -только целые числа, "f" -только числа, в том числе и с плавающей запятой)
--'...        --набор дополнительных параметров, требующих передачи их в функцию target (передача производится в виде таблицы)
function message_editBox:__init(owner, target, veric, str, format, ...) super(owner, target)
    self.veric = veric
    self.str = str
    self.args = {...}
    self:Init(262,284,500,200)

    local num = format == "n"
    local flt = format == "f"
    local tlt = (format and #format > 1 and format) or nil
    local prst = (num and "число.") or (flt and "значение float.") or "имя:"
    local title = tlt or "Введите нужное ".. prst
    self.Title:SetText(title)

    local teg_edit = (flt == true and "_f") or ""
    self.edit = self.Xml:InitEditBox("edit_box"..teg_edit, self)
    self.edit:SetNumbersOnly(num)
    self.edit:SetText(self.str or "")
end

 

 

Что не нравится движку - не понимаю...

Ежели кому интересно, то вот рабочий телепортатор на чистый ТЧ, выдача у Волка. В архиве пяток точек телепортации.

 

https://yadi.sk/d/racxiYHJJwNqrQ

 

Прошу помощи .........

  • Нравится 1

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

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

@nasar75

В xml-файлах из папки config\ui в описании этого edit_box\edit_box_f похоже прописана не существующая текстура. Добавь...

  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

@AndreySol, Действительно, заменил текстуру - и всё заработало.

    <edit_box x="50" y="75" width="400" height="32">

        <!-- <texture>ui\ui_autotele_string</texture> --> так на ОГСР вылетает
        <texture>ui_linetext_e</texture> так работает.

    </edit_box>

 

Благодарю. Значит, и мобильник можно будет запустить...

  • Полезно 1

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

Ссылка на комментарий
2 часа назад, nasar75 сказал:

<!-- <texture>ui\ui_autotele_string</texture> --> так на ОГСР вылетает
        <texture>ui_linetext_e</texture> так работает.

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

Изменено пользователем 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.

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

Тот же вылет на огср движке при добавлении пда из АМК 2, на чистом тч все работает. Все таки это какой то специфический баг.

Да по моему огср движок не вылетает при отсутствии текстур, просто пишет в лог информацию.

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

[error]Expression    : vl_Count
[error]Function      : _VertexStream::Lock
[error]File          : c:\projects\ogsr-engine\ogsr_engine\layers\xrrender\r_dstreams.cpp
[error]Line          : 63
[error]Description   : Missing or invalid texture! vl_Count=0.

Указаний в логе нет не на что не ссылается, просто вылет.

Я нашел причину вылета у себя. Надо в систем.лтх указать конфиги с текстурами для пда.:biggrin:

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

@Stalkersof, дык и я про что... А то движок нипричом...

Ищи в xml-файлах ПДА описание едит_бокса ( edit_box ) и меняй текстуру на дефолтную (ui_string_01 , ui_string_02 и тд ), без пути <texture>ui\....</texture>

 

Названия текстур смотри в файлах

amk_pda_blank.xml
ui_common.xml
ui_hud.xml
ui_numpad.xml
ui_old_textures.xml
ui_statistics.xml

 

Поиск по выражению _back" ............

 

Ну или запихай нужные текстуры в ui_old_textures.dds (там много пустого места) и добавь описание в ui_old_textures.xml.

Я так зделал...

 

Зы. А вылета 

[error]Line          : 63
[error]Description   : Missing or invalid texture! vl_Count=0.

 

в FAGе АМК нету... 

 

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

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

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

@Stalkersof, дык и я про что... А то движок нипричом...

Я просто в system.ltx в секцию [texture_desc] зарегистрировал файлы amk_pda.xml и amk_pda_blank.xml из-за этого вылет. Получается прописана текстура в мульти текстуре, но движок ее найти не может. После регистрации файлов все нормально.

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

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

@nasar75, Я же кидал вот тут и спавнер и телепорт для огср. Берите уже готовое.

  • Спасибо 2
 

Desktop: i7-11700k/Gigabyte Z590 D/64 Гб DDR4-3600 (2х32Гб)/RTX 3060 12Гб/HP Z24n G3 - WUXGA/Kingston HyperX Predator (m2) 240Гб + Kingston A2000 1Тб + 4HDD (11Тб)/Thermaltake smart BM2 - 650Вт/Win10+QtTab

Notebook: Dell Precision 7710/i7-6820HQ/32Гб DDR4 (2х16Гб)/FHD 17,3"/Quadro M4000M 4Гб/ ADATA Legend 960 4Тб + Crucial P3 4Тб/Win10+QtTab

\\\ Дополнения к ОГСЕ 0693 /// \\\ OGSRmod ///\\\Огниво (говорим обо всём)///\\\Балкон///

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

по моему огср движок не вылетает при отсутствии текстур, просто пишет в лог информацию.

Он не вылетал при отсутствии текстур для моделей. и окружения.

А при отсутствии текстур для GUI, в особенности если отсутствующая текстура указана в XML-файле, оригинальный OGSR вполне себе вылетает, причем с не-таким логом, как это было в оригинале ТЧ. Это мне пришлось у себя править.

Изменено пользователем Zander_driver
  • Согласен 2
  • Полезно 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.

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

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

Именно. Та же проблема - с Мобилой модмейкера того же автора. А текстур там - мама не горюй, десятка 3 - 4.

И попробуй перелопать все и найди, какая именно потерялась. Я пробовал - убил два вечера, не нашёл.

  • Согласен 2

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Ссылка на комментарий
1 час назад, Shadowman сказал:

Я пробовал - убил два вечера

 

Шел очередной вечер. Что-то стало проявляться...

ae8415c6749d2103da6376f406f7ad2ad4a42338

  • Нравится 3

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

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

Привет всем. Хочу сделать, чтобы актор не смог свистнуть определенную вещь. Добавил в bind_stalker.script в функцию actor_binder:on_item_take (obj) такой код:

if obj:section() == "exo_outfit" and not
        has_alife_info("инфопорция") then
        db.actor:give_info_portion("инфопорция")
    end

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

Иначе, получится, что добыл где-то игрок экзоскелет на другой локации, а на него здесь обиделись :biggrin:. Пробовал в скрипте и в ЛЕ просто переименовать этот  exo_outfit  - тогда не работает.

Может, возможно как-то получить предмет не по section, а по story id, например, или еще как-то, чтобы игра понимала, что имеется ввиду конкретный экземпляр экзоскелета?

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

@Muzafir, можно сделать экзоскелету уникальную секцию, например, exo_outfit_q1, и по ней проверять. Либо, если эта экза через all.spawn заспавнена, делать проверку по имени объекта:

if obj:name() == "esc_exo_outfit_0001" then...

Либо присвоить story_id при спавне, либо в all.spawn, и проверять

if obj:story_id() == story_ids.forbidden_ekza then...

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

 

В общем, способов море.

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

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

naxac.gif

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

Всем привет! У меня 2 вопроса: 1) Где изменять визуалы группировок НПС и чтобы лутаемые костюмы соответствовали визуалу. 2) Где изменять вооружение НПС.

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

@naxac,  Спасибо, думаю f obj:story_id()  - оптимальный вариант

а if obj:name()  - еще лучше, Работает по названию, которое дал в ЛЕ. И не нужно лишних story id

@ru trash_, Профили НПС описаны в файлах character_desc_имя локации.xml. Чтобы лутаемый костюм соответствовал профилю, нужно его в разделе supplies указать, наверное. Там же и вооружить можешь НПС по своему усмотрению.

Изменено пользователем Muzafir
Ссылка на комментарий
58 минут назад, ru trash_ сказал:

чтобы лутаемые костюмы соответствовали визуалу

В death_manager.script поставить проверку при обыске трупа и по его визуалу спавнить соответствующий костюм. Для понимания посмотри какой-нибудь аддон или мод с лутом брони, например старый IMM.

  • Спасибо 1

Здесь могла быть ваша реклама.

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

Всем привет! Есть такая функция:

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

function give_treasure()
    treasure_manager.get_treasure_manager():give_treasure("название тайника")
end

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

Секция on_use в логике, по видимому, не работает с трупами. Known info  - просто выдает инфопорцию, а функцию же надо еще как-то вызвать.

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

А как можно прикрутить ее к трупу

xr_motivator.script

Вот тут

function motivator_binder:use_callback(obj, who)
  if not self.object:alive() then
    -- твоя функция

 

  • Спасибо 1
  • Согласен 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.

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

просто выдает инфопорцию, а функцию же надо еще как-то вызвать.

Так через инфопоршни можно вызывать функции. Это так, на будущее.

  • Согласен 5

GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Куча раритетных модов на моем облаке — на память о былом.

JNCR — Coming Soon...

i5-10400F / RAM 16GB / GTX 1660 Super / 1TB HDD+256GB SSDm2 / Win 11 PRO x64 / Samsung Curved 27" x2

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

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