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

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


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

 

 

use_object по идее
- у актора эти коллбеки работают, а на предмет в инвентари у актора - почему то нет, т.е. если добавить вывод в консоль на net_spawn/net_destoy моего объекта - то при добавлении, использовании из инвентаря - в консоли вывод есть (типа таки да, мой биндер прибинделся). А вот коллбеки - тишина, предмет просто "съедается", в консоли просто появляется сообщение о том что он удаляется (sv destroy с моим классом)...
Ссылка на комментарий

Так простите, использование в инвентаре - это съедание. Что там можно запустить, если предмета УЖЕ нет ?

Использование "на земле" - это именно использование. Вызов соответствующего коллбэка. С самим предметом ничего не происходит.

2 большие разницы.

 

Это кроме того, что в классе может быть вообще не предусмотрено. Проверять надо - бросить на землю, и там использовать.

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

Ну как бы да. use_callback вызывается у самого актора, при съедении им итема.

а так же у внешне-лежащих объектов, когда актор их юзает, но не ест :)

drop_callback - у актора при дропе итема. а не у самого итема.

  • Спасибо 1

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

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

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

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

Т.е. использование биндера на предмет в инвентаре, на который я хочу повесить custom callback- такого функционала нет? только через actor_binder? в моей внутренней логике callback.on_use_item должен был вызываться у прибинженого объекта при нажатии на клавищу "Использовать" в инвентаре :) .
В связи с этим следующие вопросы, на которые не смог найти ответа на форуме-
1)можно ли через конфиг создать инвентарный предмет используемый но не съедаемый (какой либо другой class), или только переспавнивать в калбеке?
2) цепочка калбеков у актора - use_object->"съедается" итем->drop_item, или "съедается" итем->use_object->drop_item
3)почему в биндере актора большинство обработок на использование, например в НС, повешено на drop_item, а не на use_object? в drop_item ведь итем все еще существует, так какая разница?
 
Благодарю!

http://www.amk-team.ru/forum/index.php?showtopic=13054
В каких-то древних версиях, типа 1.0, это не работало. dc

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

1)можно ли через конфиг создать инвентарный предмет используемый но не съедаемый (какой либо другой class), или только переспавнивать в калбеке?

Нельзя. Коллбек use_object вызывается только для съедаемых предметов. Можно выставить ему очень большое количество порций.

 

2) цепочка калбеков у актора - use_object->"съедается" итем->drop_item, или "съедается" итем->use_object->drop_item

Что такое "съедается"? Последовательность такая:

выбираешь в инвентаре "использовать",

применяются эффекты,

коллбек use_object,

если съели весь, то коллбек drop_item и удаление предмета

 

3)почему в биндере актора большинство обработок на использование, например в НС, повешено на drop_item, а не на use_object? в drop_item ведь итем все еще существует, так какая разница?

По историческим причинам. До использования коллбека use_object использовалась связка on_drop_item/проверка надличия предмета на следующем апдейте
  • Спасибо 1
Ссылка на комментарий

 

 

2)

Это же можно самому протестировать)

 

 

Коллбек use_object вызывается только для съедаемых предметов.

Вообще-то еще для юзаемых физ-объектов, когда их юзает актор. У самого актора да, для съедаемых им.

Щас задумался над логикой такого сочетания... это когда мы в выжигателе жмем на рычаг, то рычаг должен по логике актора съесть :blink:

 

 

3)

Исторически так сложилось, да. А еще из-за инертности много чего, эти методы усердно копируются из мода в мод. Что не есть хорошо.

  • Спасибо 1

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

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

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

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

Вообще-то еще для юзаемых физ-объектов, когда их юзает актор. У самого актора да, для съедаемых им.

Щас задумался над логикой такого сочетания... это когда мы в выжигателе жмем на рычаг, то рычаг должен по логике актора съесть :blink:

Речь шла об инвентарных предметах. В инвентаре коллбек вызывается при "съедании".

Также коллбек вызывается при взаимодействии с физическими предметами.

 

В коллбеке просто передается, кто с кем взаимодейтсвует. Съедаемые предметы могут взаимодействовать только через поедание. Физические не только.

А так да - с точки зрения рычага это рычаг взаимодействует с актором :)

Ссылка на комментарий
[std_item]:identity_immunities
parent_props
[item1]:std_item
child_props
[item2]:std_item
child_props
[item3]:std_item
child_props

Можно ли при таком описании узнать что item* наследуются от std_item? section() возвращает item*, parent к инвентарным итемам смысла нет . или это чисто описательная способность конфигов?

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

parent вообще то как раз к инвентарным предметам и применяется, возвращая владельца итема.

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

  • Спасибо 1

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

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

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

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

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

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

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

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

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

Ребята,прошу помогите начинающему мод-мейкеру.

Я увидел в ОГСЕ классную пушку "молотилка" имя ее.

Мне сообщили что она так же имеется в солянке,самое интересное - что там где она есть (в 12-ого года соли и ОГСЕ) вытащить ее практически нельзя,я выдрал из бедной солянки один файл - ltx. который должен лежать в папке weapons.

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

 

С солянкой другой "геморрой",там кароче такая ситуация - в "meshes'aх" ничего нету (файлов указанных в файле ЭЛ ТЕ ИКС sayga_12c_m1_hud.ogf,sayga_12c_m1.ogf ПРОСТО НЕТУ!)

 

ТЕКСТУРЫ - тоже пропали??

либо я такой криворукий,либо - так все сложно.

Тут еще одна проблема навалилась,скопировал - на 31%(по моим предположениям) распакованную геймдату - в папку с игрой,и там пишет вот что :(игра не запускается с такими логами)

Expression : I


Function : CInifile::Load
File : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
Line : 166
Description : Can't find include file:
Arguments : Installer_wpn\ammo\ammo_16x70.ltx

 

каждый раз - патроны разные,прописываю из лога строчку ( #"Installer_wpn\ammo\ammo_16x70.ltx")в нужный файл,т.е - в Installer.ltx

 

Не нужно писать жирным шрифтом. здесь все, всё видят. Пока пред устно.

Изменено пользователем Хемуль36рус

[Eger.Overkill] // Ⓐ // Eкьюалити / Uнити // 

 "Burn the rich // eat the rich"

О себе : Какой-то Ноунэйм с олд форума , заядлый нарушитель общественного порядка и правил , рецидивист.

Egor4ikModMaker.gif

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

Наследование по предметам очень упростило бы групповую обработку (при условии что правильно описаны конфиги предметов), инклюды - было бы удобно, скорее всего для некого "виртуального редактора" всей структуры скриптов сталкера (ИМХО).

 

Уважаемые знающие, не могу найти на форуме описание классов для работы с GUI (в том числе и в теме GUI :( ) и соответственно описание структуры xml для этих классов. Интересуют всякие табы, фреймы, выпадающие списки. Благодарю за любую инфомауцию!

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

 

 

не могу найти на форуме описание классов для работы с GUI

Хм, а в "Справочнике по функциям и классам" - Создание и управление худом и пользовательским интерфейсом ?

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

Очень кратко, к сожалению, и там только список классов, без описания xml конфигов к ним. и хотел пример использования TabControl.

 

И да, к сожалению - цитата из этого поста "В неохваченном осталась тема о создании окон на основе XML описания." Данный вопрос очень интересует, после вдумчивого прочтения существующих xml-ек озарение не наступило, ибо вариантов таких описаний очень много, а хочется почитать какой нибудь единый справочник.

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

@Winsor, получи знания сам, напиши статью. Что-бы сократить время можно посмотреть сразу в движке, я 15 дополнительных атрибутов насчитал для статиков. Разумеется для каждого класса свои атрибуты. Их много, просто так их тебе я думаю никто описывать не будет. Туторов по ним я вроде не видел.

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

@Winsor, есть еще вариант создавать объекты GUI-классов с помощью скриптов, и с помощью них же управлять. Тут щас по традиции поднимут вайн что это ненужно и неправильно, я же придерживаюсь позиции что ненужен xml :)
 А своими методами я лично доволен.

Я подниму вайн, что давно уже нужна статья и хорошая, читабельная рыба. dc

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

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

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

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

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

Вопрос телепатам:

 

Как можно спрятать окно диалога, где идет треп с неписем/торговцем ?

Ну, например, с Сидоровичем. Вот это вот, центральное, где "Привет-привет !" "Обнимемся-обнимемся !" и т.д.

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

 

 

upd: нет, осознание - не то. Нужен именно фон. Ну вот как я с ремонтом картинки показывал, но там был готовый. Осталось только элементы между рамочками вписать. Хочется опять же готовый.

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

@Dennis_Chikin, есть ключ need_osoznanie_mode, который скрывает лист диалога, а так же иконки актора и нпс, в общем что ты у осознанца видишь вот это то и есть, можешь любому ставить работает 100%, проверял и не раз. Метода для отдельного скрытия этого окна нет, это уже нужно в движке добавлять. Черная текстурка, ну это можешь из любой вырезать черную часть и размножить :)

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

При помощи известной матери нашел пост, из которого вообще что-то понятно.

 

function Vehicles:GetDescription(id)

return game.translate_string(self.vehicles[id].descr)

end

 

game.translate_string() - функция игры, преобразующая поданную строку в текст, прописанный для нее в соответствующем xml-файле.

 

self.vehicles - таблица, заполняющаяся в function Vehicles:LoadFromLtx() из конфига.

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

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

Значит долго не заходил не было времени,  спасибо за ответ, хорошо а теперь откуда берется тогда значения из таблицы если эта вот эта таблица да?

name             = ltx:r_string(id, "inv_name"),
				descr            = ltx:r_string(id, "description"),
				cost             = ltx:r_u32   (id, "cost"),
				has_trunk        = ltx:r_bool  (id, "has_trunk"),
				trunk_capacity   = ltx:r_float (id, "trunk_capacity"),
				fuel_tank        = ltx:r_float (id, "fuel_tank"),
				fuel_consumption = ltx:r_float (id, "fuel_consumption"),
				dist_use_fuel    = ltx:r_float (id, "dist_use_fuel")

По ошибкам вроде не найдены эти значения хотя в файлах конфигов по машинам вроде правки сделаны

http://www.amk-team.ru/forum/index.php?showtopic=12820&view=findpost&p=920464

Собственно еще один вопрос к знатокам, обыскал форум не нашел как запустить диалог у мертвого непися как будто он живой, вышло недоразумение сталкера уже нет в живых а он нужен для квеста, переигрывать сначала  игры не хочется, нашел файлы логики этого сталкера попробовал закоментить on_death = death но ничего не вышло

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

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

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

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

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

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

Войти

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

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

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