AndrewMor 529 Опубликовано 27 Марта 2019 Поделиться Опубликовано 27 Марта 2019 11 минут назад, Баба ЯГА сказал: я тут учу Lua -> Полезно. Но почему я на функции, модули, операторы (выше по списку) не могу перейти? Сталкер - наше всё! Ссылка на комментарий
Баба ЯГА 7 Опубликовано 27 Марта 2019 Поделиться Опубликовано 27 Марта 2019 @AndrewMor, нажимай на иконку книжечку в меню слева, которая возле ссылки, я тоже сначала на ссылки нажимал, ссылки не работают там, а вот если на книжечку нажать - то меню открывается. 1 Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
AndrewMor 529 Опубликовано 27 Марта 2019 Поделиться Опубликовано 27 Марта 2019 @Баба ЯГА, А ларчик просто открывался. Как всегда, все гениальное лежит на самом виду, спасибо. 1 Сталкер - наше всё! Ссылка на комментарий
Norman Eisenherz 317 Опубликовано 30 Марта 2019 Поделиться Опубликовано 30 Марта 2019 (изменено) Здрасьте. Возникла необходимость прочитать (сравнить) определенное значение из списка с записями вида ["k"]={v1, v2, v3}, то есть под каждым ключом список значений, но эти значения не "true", и не списки. Я пошел через размер таблицы-ключа и обращение по числовым индексам. Есть ли способ проще? В поиске "rep_inc[k]["i"], но без кавычек переменная считается тегом "курсив". Spoiler local rep_inc = { [0.25] = { "bandit_", "killer_", "novice_", "_beretta", "_colt", "_eagle", "_fort", "_pb", "_pm", "_sig220", "_walther", "_usp", "_ak74u", "_bm16", "_mp5" }, [0.1] = { "exo_", "military_", "_gauss", "_svu", "_svd", "_vintorez", "_rg", "_rpg7" } } function rep_grade(slot) local sect = slot:section() local value = 0.15 for k, v in pairs(rep_inc) do for i = 1, table.getn(rep_inc[k]) do if string.find(sect, rep_inc[k]) then value = k break end end end return valueend Изменено 30 Марта 2019 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
ptichkin 0 Опубликовано 1 Апреля 2019 Поделиться Опубликовано 1 Апреля 2019 Всем привет! Делаю мод, в котором хочу восстановить гражданских зомби. С помощью скриптов добавил им радиационный фон и реакцию детектора при приближении к ним. Но я в скриптах - нуб, просто повезло, что под рукой оказались подходящие шаблоны. Ещё я хочу восстановить для зомби анимацию приема пищи. Просто вместо этого типа анимации проигрывается анимация "stand_idle_". На форуме по ковырянию в файлах "Теней Чернобыля" мне посоветовали вообще править движок, но этот вариант меня не устраивает, поскольку до доводки до ума зомби я вставил в мультиплеер дополнительное оружие, а игра с модифицированным движком не может при выборе сетевой игры распознать версии игр с немодифицированными движками. Остается только надежда восстановить не действующие анимации зомби через скрипт, но как я уже упоминал, в скриптах я - нуб. Кто-нибудь раньше пытался восстановить недействующие анимации монстров через скрипт? Был бы очень признателен за консультацию по этой теме. Ссылка на комментарий
Norman Eisenherz 317 Опубликовано 6 Апреля 2019 Поделиться Опубликовано 6 Апреля 2019 Здрасьте. Повесил в [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 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 (изменено) 7 часов назад, Norman Eisenherz сказал: alife():object(del) Ф-ция object с строковым аргументом ищет объект по имени. А ты в ф-цию подсовываешь конфиговую секцию. В случае с удалением "wpn_pb" - просто совпадение, что существует обект с таким именем. Сделай правильно, примерно так: local obj = db.actor:object("wpn_addon_scope") if obj then alife():release(alife():object(obj:id()), true) end Изменено 7 Апреля 2019 пользователем AndreySol 2 Ссылка на комментарий
Norman Eisenherz 317 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 @AndreySol И вот тут я теряюсь: для ПБ есть название секции "wpn_pb" и инвентарное имя "wpn-pb". Какое имя используется в функции удаления, если она срабатывает с вариантом "wpn_pb"? Имя файла модели? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 4 часа назад, Norman Eisenherz сказал: Имя файла модели? Ну при чем тут файл модели ? Вот несколько фрагментов из распакованного спавна: Скрытый текст ; cse_abstract properties section_name = wpn_bm16 <-- это конфиговая секцияname = esc_wpn_bm16 <-- это уникальное имя объекта position = 338.799987792969, 15.3627433776855, 242.199981689453 direction = -3.42261046171188e-008, -0.838799953460693, -1.56779897212982 ...... ; cse_abstract properties section_name = bandagename = esc_bandage_0005 position = 340.254608154297, 18.6207141876221, 239.889846801758 ...... Имя предмета может быть задано несколькими способами: разработчиком, при размещении объекта через СДК(или ACDC) или автогенерацией в движке или в СДК.. И ф-ция удаления не использует имен - она принимает аргументом указатель на серверный класс предмета... Ссылка на комментарий
Norman Eisenherz 317 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 В all.spawn прописаны объекты, которые заранее рождаются на карте локации, но не те, которые по ходу игры создаются через рандомный лут? Имена последних должны иметь какие-то случайные приставки к имени секции, так? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Norman Eisenherz 317 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 (изменено) Хочу создать коробку и сложить в нее определенные предметы. Для ссылки на коробки из списка story_ids есть функция level.object_by_sid(#). Как вычислить id коробки в инвентаре? Обращение через db.actor:object("box"):id() или alife():object(все то же самое) приводит к вылету с ошибкой "attempt to index a nil value". Коробка не обнаруживается даже через проверку if act:object("box"), хотя успешно спавнится в инвентарь по этому же имени. Изменено 7 Апреля 2019 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 1 час назад, Norman Eisenherz сказал: Хочу создать коробку и сложить в нее определенные предметы Это ты инвентарный ящик хочешь ГГ в рюкзак запихнуть ? Ссылка на комментарий
Norman Eisenherz 317 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 @AndreySol Идея в том, чтобы временно скидывать вещи из слотов в ящик на время торговли и обыска. Пока привязался к коробке около арены (story_id = 573), но я не могу таскать ее за собой на другие карты. Можно спавнить ящик под ноги и обращаться к нему через level.object_by_id (почему-то он ловится только при повторном вызове функции), но хочется все-таки спавнить ящик прямо в инвентарь и отправлять предметы в него. Так можно вообще? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
AndreySol 215 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 23 минуты назад, Norman Eisenherz сказал: но хочется все-таки спавнить ящик прямо в инвентарь и отправлять предметы в него. Так можно вообще? Нет, реализация подобного функционала для инвентарных предметов не предусмотрена. 26 минут назад, Norman Eisenherz сказал: Идея в том, чтобы временно скидывать вещи из слотов в ящик на время торговли и обыска. Идея - не фонтан... Тут однозначно лучше будет движковая правка. Ссылка на комментарий
Norman Eisenherz 317 Опубликовано 7 Апреля 2019 Поделиться Опубликовано 7 Апреля 2019 @AndreySol Лучше это будет для тех, кто знает ассемблер и структуру движка. В X-Ray Extensions какое-то обозначение для экипированных предметов есть, но у меня с пропатченым файлом движка (правки версии 230.15) игра начинает вылетать при каждом обращении к инвентарю, поэтому пытаюсь сделать костыль. Меня вполне устроит, если временный ящик будет рождаться за спиной и после торговли удаляться из игры. Все, последний вопрос: id коробки невозможно поймать сразу после ее создания (на секунду позже – пожалуйста, но два раза открывать диалог торговли не торт). Такое впечатление, что функция перебора id запускается слишком быстро – до того, как новая коробка успевает получить свой id. Как можно отложить выполнение перебора id, скажем, на 0,5 секунды? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
naxac 2 447 Опубликовано 8 Апреля 2019 Поделиться Опубликовано 8 Апреля 2019 (изменено) @Norman Eisenherz, тебе нужно получить онлайновый (клиентский) объект ящика? Иcпользуй каллбэк на выход в онлайн: function spawn_box() local se_obj = alife():create("box", position, lv, gv) level.client_spawn_manager():add(se_obj.id, -1, this.spawn_callback) end function spawn_callback(id, obj) -- тут делаешь что хочешь со своим ящиком: это obj end Изменено 8 Апреля 2019 пользователем naxac 3 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
AndreySol 215 Опубликовано 8 Апреля 2019 Поделиться Опубликовано 8 Апреля 2019 (изменено) 9 часов назад, naxac сказал: Иcпользуй каллбэк на выход в онлайн: @Norman Eisenherz, чтоб понятнее было - практически все в движке завязано на апдейте, соответственно, от момента создания объекта, до его выхода в он-лайн, проходит определенный промежуток времени(некое кол-во апдейтов (тиков системного таймера)). Именно для этой ситуации, разрабами был введен кэллбэк на выход объекта в он-лайн... Изменено 8 Апреля 2019 пользователем W.A.S.P. Ссылка на комментарий
Norman Eisenherz 317 Опубликовано 8 Апреля 2019 Поделиться Опубликовано 8 Апреля 2019 Какое сильное колдунство… В оригинальном коде всего одно упоминание такого callback'а, и то в качестве теста. Всем спасибо, противная недоработка наконец-то "подпернута" костылем. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 10 Апреля 2019 Поделиться Опубликовано 10 Апреля 2019 Господа, подскажите добрым советом, как проиграть звук? Задумка такая: в определенные часы будут от лица ГГ (типа по рации) проигрываться рандомные звуки, обрывки чьих-то фраз и тд, и всё это дело НПС будут комментировать в чат текстом, типа: "Что это было?" или "Вы тоже это слышали?" Так вот, помогите пожалуйста по возможности с построением ф-ции с проигрыванием рандомного ogg из папки? Нужно только проигрывание рандомного звука... Ссылка на комментарий
Graff46 598 Опубликовано 10 Апреля 2019 Поделиться Опубликовано 10 Апреля 2019 (изменено) @_Sk8_AsTeR_, Скрытый текст do local lastIdx function name () local sndTblPath = ["", "", ""] -- список путей до файлов со свуками local idx = math.random(0, table.getn(sndTblName)) if idx ~= lastIdx then local sndPath = sndTblName[)] local snd = xr_sound.get_safe_sound_object(sndPath) -- путь до звукового файла snd:play_no_feedback(db.actor, sound_object.s2d, 1, vector(), 1.0) else for i=1,100 do 2+2*5 end return name () end end end Изменено 10 Апреля 2019 пользователем Graff46 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти