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

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

Как переместить всё содержимое некоторого тайника в инвентарь НПС ? Любые намёки, любые идеи пригодятся. А лучше, если есть готовое решение.

Ссылка на комментарий
03.04.2020 в 02:32, Norman Eisenherz сказал:

Есть ли какой-то фикс для меток, которые остаются после сюжетных заданий (АТП, X-16, РГ-6)?

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

 

Добавлю: та еще мутота, но все решаемо. В частности, по РГ-6 долго не мог добиться результата, в итоге все ж  сделал. Но где и что правил - увы, не помню.

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

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

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

Как переместить всё содержимое некоторого тайника в инвентарь НПС ?

Как-то так

treasure:transfer_item(obj, npc)

Где treasure, obj, npc - это клиентские объекты тайника, перемещаемого итема, и НПС, соответственно. И делать надо в цикле, перебирая все итемы в тайнике.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Это какая-то проверка, помогающая найти ID объекта?

Да не проверка это, не ищи там глубокого смысла. Цитата вырвана из контекста; речь идёт всего лишь о том, что имея id, можно получить сам объект.

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

@AndrewMor, вопросег такой, дебильный, а можно ли как проверить - висит ли маркер на НПС до сих пор или самоудалился?

Изменено пользователем W.A.S.P.

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

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

@UriZzz

  if level.map_has_object_spot(obj.id, "green_location") ~= 0 then ...

где obj - серверный объект нпс.

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

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

naxac.gif

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

имея id, можно получить сам объект

Просто там дело было в вылете: https://ap-pro.ru/forum/100-9999-826159-16-1452077092

И вопрос касательно того, что значат цифры 1394:

child registered but not found [1394]

Думал это может story_id а выходит, просто id, который никем кроме движка не указывается.

Отсюда вопрос, как зная id из вылета, найти объект с таким id?

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

Отсюда вопрос, как зная id из вылета, найти объект с таким id?

Вот так

21 час назад, aka_sektor сказал:

alife():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.

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

как зная id из вылета, найти объект с таким id?

Боюсь, что в данном случае - никак, потому что этого объекта уже нет.  
Здесь, емнип, имеется парент, у которого есть зарегистрированный в игре  потомок, но реально потомка уже не существует.
Точно такой же вылет был, причем в качестве парента указывался объект "лестница". Так и не смогла отрыть, что же за "чайлд" мог быть у лестницы...

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

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

Так и не смогла отрыть, что же за "чайлд" мог быть у лестницы...

Такие вылеты и такие взаимосвязи ловятся перебором серверных объектов при загрузке сейва.

На постоянку такие проверки вешать на лоад конечно не надо. Но если вылет возник - то повесить. Перебрать все 65к объектов, у них проверить парент, получить этот парент, проверить его класс, и соответствует ли он тому набору классов, которому позволено иметь чилды.

При нормально устроенной игре, эта вся канитель не даст ничего, т.е. 65к проверок вернут нулевой результат. А если вот такой вылет возникает, то как раз и будет поймана эта пара до исчезновения чилда, до вылета, до вообще всего что такая парочка могла бы натворить. И выводится в лог - владелец такой-то, секция такая то. Чилд такой-то, секция такая-то. Дальше уже дело техники, выяснить что это за фигня и как так получилось, что они воссоединились. Устраняется причина, а затем и описанная проверка.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

А если вот такой вылет возникает, то как раз и будет поймана эта пара до исчезновения чилда, до вылета,

Дело в том, что на момент, когда мы стали ловить этот вылет, объекта-потомка с таким id в игре УЖЕ не было. 
Конечно же, он наверняка существовал N сэйвов назад, но у нас этих N не было, а были последние несколько - и в них объекта-потомка с таким id не существовало тоже.
Поскольку вылет такой случался при автосэйве (переход с локи на локу) и только  в нем - а автосэйв при этом на другой локации создавался нормально, то дальше не копали.
 

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

Ссылка на комментарий
04.04.2020 в 10:03, Zander_driver сказал:

Где treasure, obj, npc - это клиентские объекты тайника, перемещаемого итема, и НПС, соответственно. И делать надо в цикле, перебирая все итемы в тайнике.

А как сделать? Я же заранее не знаю, что окажется в тайнике.

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

не знаю, что окажется в тайнике.

А зачем это знать?

Функции iterate_inventory в тайниках тоже работают, перебирая инвентарь тайника.

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

Ссылка на комментарий
04.04.2020 в 19:48, Okichi сказал:

в данном случае - никак, потому что этого объекта уже нет.  

Парадокс.:huh:

 

А вот тут писали:

  

17.02.2012 в 00:03, smeh сказал:

LuaChecker-0.3 Может я не правильно пользуюсь?

 

17.02.2012 в 23:01, Artos сказал:

проверяй файлы чекером. Только не тем, который ты упоминал, а "Syntax Checker" (by Gun12), который тебе уже посоветовал Капрал Хикс

 

17.02.2012 в 11:19, Капрал Хикс сказал:

script Syntax Checker - есть на stalkerin.gameru.net. Не виснет на больших скриптах и может скрипты проверять группой.

 

Вот он: http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=viewtheoned&lid=447

 

Есть ли какое-то принципиальное отличие от чекера представленного в утилите SciTe: https://modfaq.ru/SciTE

(кста, вопрос к @Charsi тоже, он советовал)

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

Парадокс

Ну вот выше Зандер_драйвер дал схему, как можно попробовать обнаружить. Искать по предыдущим сэйвам, в которых этот объект-потомок еще существовал.
Но иногда в некоторых модах сразу при НИ запускается удаление ненужных объектов ( то, что есть в аллспавне, например, но реально не требуется в игре). 
Тогда, если этот чайлд вот так, с НИ, удалили - то уже не найти. Тем более, что узнаем мы об этом ( получим вылет)  только тогда, когда придем на локу, где этот удаленный объект находился.

И то - не сразу, а когда будем там перегружаться или переходить на другой уровень:  вылет будет при разрушении уровня, т.к., если я правильно поняла dsh-а, при разрушении уровня игра сначала пытается удалить "потомков", и только потом - их парентов. 

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

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

Но иногда в некоторых модах сразу при НИ запускается удаление ненужных объектов

Есть такое дело. Сам в моде так делал, когда объект не нужен со старта НИ, но в дальнейшем для квеста требуется. Но заспавнить заново проще по spawn_story_id (ессно, его изначально нужно в спавне прописать). Тогда такой объект наверно можно и отследить.

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

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

Кто разбирается в логике? Беглым взглядом гляньте:
 

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



[logic@ex_gar_eger]
suitable = {=check_npc_name(ex_gar_eger)}
prior = 200
active = animpoint@ex_gar_eger
level_spot = quest_npc

[animpoint@ex_gar_eger]
cover_name = ex_gar_a1_eger_cover
avail_animations = animpoint_sit_normal
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
gather_items_enabled = false
help_wounded_enabled = true
corpse_detection_enabled = false
invulnerable = false
def_state_moving = assault
on_info = {+ops_quest_taked} %=release_npc%
meet = meet@ex_gar_eger

[meet@ex_gar_eger]
close_anim         = nil
close_victim     = nil
far_anim         = nil
far_victim         = nil
close_distance = 0
far_distance     = 0
close_snd_distance = 3
use             = nil
close_snd_hello = nil
trade_enable = true
allow_break     = false
meet_on_talking = true


 

 

 

Чего неправильно может быть?

Выяснил только, что вылетает из-за строчки:

on_info = {+ops_quest_taked} %=release_npc%

 

Если убрать %=release_npc%, то вылета нет. Это для чего служит?

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

@aka_sektor, это попытка выполнить ф-ю release_npc, когда получаем поршень ops_quest_taked.
Надо проверить, существует ли эта ф-я в xr_effects.script. 
 

  • Согласен 2

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

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

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