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

Norman Eisenherz

Жители
  • Число публикаций

    819
  • Регистрация

  • Последнее посещение

  • Дней в топе

    1
  • AMKoin

    20,226 [Подарить AMKoin]

Весь контент пользователя Norman Eisenherz

  1. Вопрос по функции transfer_item: ссылка дается на секцию предмета, и если в инвентаре несколько предметов с одинаковыми секциями, часто передается не тот, что в слоте. Попытка сослаться на id() вместо секции (как в варианте alife():release) делает функцию "пустышкой" – вылета нет, но и эффекта тоже никакого. Какую проверку можно ввести для точного определения предмета?
  2. @AndreySol Попробовал создать два объекта в одной функции – получается два тестовых сообщения с разными id объектов. Это предполагаемый результат, или как-то можно передать две пары "id, obj" в одном вызове функции?
  3. @UriZzz [treasure_manager.script] function CTreasure:use(npc).
  4. @Kirgudu Не "возможно", а так и есть – надо дождаться выхода в онлайн, чтобы потом переносить объекты в созданные коробки. Ссылку на id я могу передать только на один объект в одном колбэке, поэтому второй все равно придется искать через перебор (если только колбэк не понимает две пары аргументов "id, obj"). Во втором посте как раз вариант с прямой передачей одного id вместо ссылки на info_id общего колбэка.
  5. Я опять встрял, и не могу понять, во что именно… Есть две функции: одна привязана к "info_callback" и спавнит предмет в момент начала торговли, другая запускается после спавна предмета и должна получить его id. Как только я пытаюсь добавить в аргументы второй функции "info_id" для дальнейших действий на основании инфо-поршней из основного колбэка, функция перестает видеть созданный объект, хотя вызывается строго после его создания. Может ли проблема быть в том. что в первой функции создаются два объекта, а колбэк только на одном? Код ниже, требуется передать (info_id) в функцию "transfer". Переделал вызовы так, чтобы "info_id" читался непосредственно в "bind_stalker", а функция, зависящая от спавна, только перебрасывала предметы. С одной коробкой работает, с двумя – не переносятся предметы из второй коробки, хотя id второй коробки читается правильно и предметы _в_ эту коробку точно переносятся, если что-нибудь купить (коробки на время теста не удаляются). Посмотрите, пожалуйста, кто-нибудь, где я косячу: https://drive.google.com/open?id=1ak0_jspeRXxoTxxHIDLCe-J0-Psp41DS
  6. Какое сильное колдунство… В оригинальном коде всего одно упоминание такого callback'а, и то в качестве теста. Всем спасибо, противная недоработка наконец-то "подпернута" костылем.
  7. @AndreySol Лучше это будет для тех, кто знает ассемблер и структуру движка. В X-Ray Extensions какое-то обозначение для экипированных предметов есть, но у меня с пропатченым файлом движка (правки версии 230.15) игра начинает вылетать при каждом обращении к инвентарю, поэтому пытаюсь сделать костыль. Меня вполне устроит, если временный ящик будет рождаться за спиной и после торговли удаляться из игры. Все, последний вопрос: id коробки невозможно поймать сразу после ее создания (на секунду позже – пожалуйста, но два раза открывать диалог торговли не торт). Такое впечатление, что функция перебора id запускается слишком быстро – до того, как новая коробка успевает получить свой id. Как можно отложить выполнение перебора id, скажем, на 0,5 секунды?
  8. @AndreySol Идея в том, чтобы временно скидывать вещи из слотов в ящик на время торговли и обыска. Пока привязался к коробке около арены (story_id = 573), но я не могу таскать ее за собой на другие карты. Можно спавнить ящик под ноги и обращаться к нему через level.object_by_id (почему-то он ловится только при повторном вызове функции), но хочется все-таки спавнить ящик прямо в инвентарь и отправлять предметы в него. Так можно вообще?
  9. Хочу создать коробку и сложить в нее определенные предметы. Для ссылки на коробки из списка story_ids есть функция level.object_by_sid(#). Как вычислить id коробки в инвентаре? Обращение через db.actor:object("box"):id() или alife():object(все то же самое) приводит к вылету с ошибкой "attempt to index a nil value". Коробка не обнаруживается даже через проверку if act:object("box"), хотя успешно спавнится в инвентарь по этому же имени.
  10. В all.spawn прописаны объекты, которые заранее рождаются на карте локации, но не те, которые по ходу игры создаются через рандомный лут? Имена последних должны иметь какие-то случайные приставки к имени секции, так?
  11. @AndreySol И вот тут я теряюсь: для ПБ есть название секции "wpn_pb" и инвентарное имя "wpn-pb". Какое имя используется в функции удаления, если она срабатывает с вариантом "wpn_pb"? Имя файла модели?
  12. Здрасьте. Повесил в [bind_stalker.script] простую функцию с удалением предмета из инвентаря по имени секции. Взял для тестов пистолет ПБ и прицел ПСО-1: пистолет удаляется, прицел – нет. Оба предмета не квестовые, оба не находятся в слотах, конфиги предметов стандартные. В чем разница? local del = "wpn_pb" -- local del = "wpn_addon_scope" if act:object(del) then alife():release(alife():object(del), true) end
  13. Здрасьте. Хочу подвинуть текст около иконки Меченого в разделе КПК "Данные" (ранг, группировка, репутация). Единственная строчка в конфиге [config\ui\actor_statistic.xml], которая влияет на этот текст – <character_info x="26" y="58" width="236" height="120"/>, но ее изменение смещает текст только вместе с иконкой, а задача как раз в том, чтобы разлепить их. Я что-то упускаю, или этот блок существует только как единое целое? Для справки, редактирование файла [config\ui\stalkers_ranking_character.xml] позволяет подвинуть аналогичный текст в разделе "Ранги" (топ 20) отдельно от иконки, но текст в разделе "Данные" не является прямой ссылкой на этот блок.
  14. Здрасьте. Возникла необходимость прочитать (сравнить) определенное значение из списка с записями вида ["k"]={v1, v2, v3}, то есть под каждым ключом список значений, но эти значения не "true", и не списки. Я пошел через размер таблицы-ключа и обращение по числовым индексам. Есть ли способ проще? В поиске "rep_inc[k]["i"], но без кавычек переменная считается тегом "курсив".
  15. @h0N0r heading="1", судя по разборам на форуме, применяется для поворота текстур на ходу. Долго бы я искал причину на фоне того, что для стрелок переходов по умолчанию прописан и поворот, и четыре разных направления, которые вроде бы уже не требуется поворачивать.
  16. @h0N0r "У меня такая же нога, и не болит" =) Размеры вывода у меня отличаются от габаритов текстур. Метод тыка показал, что если в описании текстуры один габарит, а при выводе другой, и не указан параметр stretch="1", вместо растяжения получается смещение (опять какая-то травматология). Теперь другая странность: иконки некоторых переходов поворачиваются на 90° при определенных условиях. Например, иконка выхода на Кордон из Темной долины, если Меченый находится в ТД, или иконка перехода от Бара на Армейские склады, если Меченый на Свалке. Случалось такое?
  17. Здрасьте. Прикрутил иконки переходов с направлениями ("lchanger_(direction)_location" вместо "level_changer") – они все отображаются правее и ниже центров старых иконок, и хинты всплывают, только если наводиться на левый верхний угол новой иконки (на старый центр). Менял привязки в [scripts\level_tasks.script], размер вывода иконок в [config\ui\map_spots_lchangers.xml] – 12x12 вместо 32x32, и сами иконки в [textures\ui\ui_icons_map.dds], но ставил стрелки на те же места. Что я делаю не так? https://farm8.staticflickr.com/7832/33607263418_c44258fb96_o.jpg
  18. @WinCap То есть, я все понял наоборот: в кавычках "где", а после "что" искать. Достаточно было в указанную конструкцию дописать "_outfit" к каждому виду брони.
  19. Здрасьте. В солянке 2010 есть конструкция с поиском по нескольким шаблонам (вроде по принципу ИЛИ): if not string.find("device_torch,wpn_knife,bolt",i_section) and item:parent() then trup:drop_item(item). Попытался повторить в обычной версии ТЧ с триггером на сброс предмета – без эффекта. Не могу сказать, как именно применяется указанная конструкция в солянке, но допускается ли вообще поиск сразу по нескольким шаблонам?
  20. @Баба ЯГА Тоже думал про вариант с поршнями, но с промежуточным спавном коробки или с использованием синего ящика рядом с торговцем (образец в скрипте телепорта на арену). Надо поковырять, но будет это нескоро – пока другой мод в планах. Что касается чтения типа и количества заряженных патронов, а также наличия обвеса, надо разбирать нетпакет оружия. naxac выкладывал примерчик; оригинальное сообщение найти не могу, поэтому, с позволения автора, приведу код здесь:
  21. Пытаюсь без движковых правок подступиться к вопросу исключения экипированных предметов из окна торговли. Первая стадия – отслеживание события. Добавил тестовое сообщение в функцию "mob_trade:start_trade(zone, obj)" файла [mob_trade.script] – тоже никакой реакции на начало торговли.
  22. @lordmuzer Да, ТЧ. Кто-то отписывал на форуме (может, не на этом?), что смог привязать этот callback и к актеру, но дальше "буду пробовать" сообщений не было. В файле "mob_trade.script" смотреть особо не на что: привязка сделана, действия нет.
  23. Здрасьте. Хочу добавить callback на событие "trade_start". Какие аргументы надо указывать в скобках? Указал (actor, npc), привязал тестовое сообщение – никакой реакции. [bind_stalker.script] function actor_binder:net_destroy() … self.object:set_callback(callback.trade_start, nil) … function actor_binder:reinit() … self.object:set_callback(callback.trade_start, self.trade_start, self) … function actor_binder:trade_start(actor, npc) news_manager.send_tip(db.actor, "start") end
  24. @lordmuzer Автоматы с прицелами спавнятся в руках наемников. В указанном файле нет ни одного случая одновременного использования "lr300" и "scope" – откуда берутся прицелы?
  25. Здрасьте. Где описан лут наемников на Армейских складах? В оригинальной игре у них гарантированно спавнятся автоматы с прицелами SUSAT, но в папках "scripts" и "config\gameplay" такие прицелы обнаруживаются только в общих списках лута, без привязки к группировкам или локациям.
×
×
  • Создать...