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

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

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

@yurv3, устойчивое ощущение, что так оно не взлетит. Тут либо с нетпакетами баловаться, наподобие такого или такого (там дальше есть про нюансы и подводные камни) + соответствующие модули обработки нетпакетов. Либо переползать на что-то модернизированное в плане бинарей (в X-Ray Extensions, например, добавлен метод прямой записи sid'а - assign_story_id()).

p.s: нужен всё-таки story_id или id? Несколько разные вещи.

Изменено пользователем Купер
  • Спасибо 1
Ссылка на комментарий

@yurv3 

Во первых, StoryID(sid) - свойство объекта "только для чтения", изменить его просто так не получится.

Во вторых, в примере кода явная белиберда - зачем объявлять переменную, а потом присваивать ей значение ID созданного объекта? Каким боком это относится к sid?

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

@AndreySol Я в скриптах полный ноль, использовал найденный на форумах.   Мне нужно не изменить а присвоить StoryID(sid) созданному через скрипт тайнику на Затоне.  Есть скрипты с присвоением sid НПС, монстрам или трупу. А вот к тайникам я такого не нашел.

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

в присвоение сида запутался. 

Если у вас не модифицированный движок, и нужно присвоить SID уже после НИ " на лету" - вам действительно в нетпакеты. 

  • Спасибо 1

След от кругов на воде - это тоже след (с)

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

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

Проще говоря, на не-модифицированном движке, нормально присвоить сид - нельзя. Так чтобы объект обнаруживался по alife():story_object(ваш_сид)

Можно это сделать на X-Ray Ext, или на 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.

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

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

В смысле? Именно через нетпакет я и присваивала стори_айди, когда было надо.
Через присвоение data.story_id  для непися значения из заранее записанного в game_story_ids.ltx. В  game_story_ids.ltx же можно ручками записать все, что нужно. 

А потом неписю, не имевшему sid-а, присвоить. 
Движок НЛС-ный, и никаких дополнительных ф-ций вида assign_story_id там конечно же не было...

  • Согласен 1

След от кругов на воде - это тоже след (с)

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

Через нет пакеты работает, но применится только после сейв-лоада. Например, при переходе на другую локацию. 

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

@dsh 

И как это будет выглядеть в игре? После спавна объекта, с присвоением через н\п sid, будете игроку типа сообщение выводить на экран, что мол сделай сэйв\лоад, так надо.

  • Согласен 1
Ссылка на комментарий
1 час назад, Okichi сказал(а):

В  game_story_ids.ltx же можно ручками записать все, что нужно. 

А потом неписю, не имевшему sid-а, присвоить. 

Ну если только так... Я бы не называл это полноценным присвоением, когда сид сам по себе УЖЕ присутствует в файлах при запуске игры. Потому и сказал, что так не работает.

Присвоение - это типа такого:

function set_story_id(sobj)
local sid = 1
while alife():story_object(sid) do sid = sid + 1 end
alife():assign_story_id(sid, sobj.id)
return sid
end -- Т.е. выполняется поиск свободного сид и его занятие, прямо при запуске функции.
--И затем сразу, а не после сейв-лоада, мы можем получать наш объект через 
alife():story_object(sid)

 

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

Ссылка на комментарий
19 минут назад, AndreySol сказал(а):

как это будет выглядеть в игре

Нормально это выглядит, когда нет других вариантов. Игрок все равно рано или поздно перейдет на другую локу и все применится. Обычно СИД назначают на "поюзать на будущее", а не "вот прям сразу присвоили и начали использовать". Для "сразу использовать" есть же много других способов.
У человека, как я поняла, не модифицированный движок, а сделать нужно. 

 

 

17 минут назад, Zander_driver сказал(а):

Присвоение - это типа такого:

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

  • Согласен 1

След от кругов на воде - это тоже след (с)

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

Так-с, что-то приехал. Не хватает "сала в черепе"(c).

Вводная: трансфер инвентаря ГГ в inventory_box, находящийся на другой локации. Други, ткните куда-нибудь носом на предмет реализации.

Ссылка на комментарий
8 минут назад, Купер сказал(а):

трансфер инвентаря ГГ в inventory_box, находящийся на другой локации

А в чем проблема?

При трансфере, указывается id адресата-нового владельца. Затем передаваемые итемы приобретают game_vertex_id & level_vertex_id, идентичные таковым у нового владельца. Это если смотреть на операцию "трансфер", с точки зрения движка. При трансферах там нужны именно id - что передаем, от кого передаем, кому передаем.

А вот если со стороны скриптов плясать... наверное, проблема начинается там, где в качестве аргументов/операторов, доступных скрипту функций, выступают игровые объекты (game_object), а не их id.

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

 

Ну или дедовский костыльный способ - тут удаляем, там спавним, перетаскивая если надо, нетпакеты.

  • Спасибо 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.

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

Господа, подскажите, почему может не работать добавление оружия/брони/патронов Сидоровичу через [supplies_start]? Изменение/добавление/удаление еды и медицины работает исправно, но добавить что-то своё не получается, как бы не пытался (вместо NO_TRADE ставил всё как надо)? Там изначально в разделе оружия, патронов и брони были гроза, пачка 5.45 и костюм наёмника соответственно, которые также имеют свои показатели, но не появляются.

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

Хочу убрать логику на территории Бара:

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

[logic]
active = sr_territory@outside

[sr_territory@outside]
on_actor_inside = sr_territory@inside

[sr_territory@inside]
on_actor_outside = sr_territory@outside
territory_hit = {-bar_dolg_territory_1_hit -bar_arena_fight_begin -bar_arena_fight} %+bar_dolg_territory_1_hit =bar_territory_logic%, {-bar_dolg_territory_2_hit -bar_arena_fight_begin -bar_arena_fight} %+bar_dolg_territory_2_hit =bar_territory_logic%, {-bar_dolg_territory_3_hit -bar_arena_fight_begin -bar_arena_fight} %+bar_dolg_territory_3_hit =bar_territory_logic%
territory_death = {-bar_dolg_territory_kill -bar_arena_fight_begin -bar_arena_fight} %+bar_dolg_territory_kill =bar_territory_logic%

Если я сделаю так:

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

[logic]
;active = sr_territory@outside

;[sr_territory@outside]
;on_actor_inside = sr_territory@inside

;[sr_territory@inside]
;on_actor_outside = sr_territory@outside
;territory_hit = {-bar_dolg_territory_1_hit -bar_arena_fight_begin -bar_arena_fight} %+bar_dolg_territory_1_hit =bar_territory_logic%, {-bar_dolg_territory_2_hit -bar_arena_fight_begin -bar_arena_fight} %+bar_dolg_territory_2_hit =bar_territory_logic%, {-bar_dolg_territory_3_hit -bar_arena_fight_begin -bar_arena_fight} %+bar_dolg_territory_3_hit =bar_territory_logic%
;territory_death = {-bar_dolg_territory_kill -bar_arena_fight_begin -bar_arena_fight} %+bar_dolg_territory_kill =bar_territory_logic%

Правильно ли будет? Или же нужно по-другому!

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

@Fly Торговец может брать предметы себе. Появляются ли предметы в продаже, если прописать несколько штук с вероятностью 1?

Мод на "Грозу" появляется в продаже при базовых конфигах, но очень редко.

  • Согласен 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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