_g.script 3 669 Опубликовано 12 Августа 2022 (изменено) @Houdini_one , попробуй так - посели НПСа в какой то смарт, где он отыграет нужное. А после выселяй оттуда и заселяй уже в нужный смарт. Скрытый текст [smart_terrains] unknown_smart = {-mar_polter_start_delete}mar_military = {+mar_polter_start_delete} Изменено 12 Августа 2022 пользователем mole venomous Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 18 Августа 2022 (изменено) Повесить на биндер actor_binder:use_object(obj) функцию, где будет всё это обрабатываться. Вот пример функции: Скрытый текст function use_item(obj) local obj = obj:section() if obj then if obj == "medkit" then -- юзанули аптечку - торкнуло (к вопросу о головокружении) level.add_pp_effector("alcohol.ppe", 100, false) level.add_pp_effector("duality_circle.ppe", 100, false) -- и спавним "пустую" аптечку, например (к вопросу о выдаче нового айтема взамен использованого) alife():create("medkit_empty", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end end Изменено 18 Августа 2022 пользователем mole venomous 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 18 Августа 2022 14 минут назад, Hind сказал: bind_stalker.script Нужно добавить коллбек на использование предмета, если у тебя его нет. В bind_stalker: Скрытый текст function actor_binder:net_destroy() ... self.object:set_callback(callback.use_object, nil) -- коллбэк на использование предмета .... end function actor_binder:reinit() ... self.object:set_callback(callback.use_object, self.use_object, self) ... end --// Использование предмета function actor_binder:use_object(obj) use_item(obj) end function use_item(obj) local obj = obj:section() if obj then if obj == "medkit" then -- юзанули аптечку - торкнуло (к вопросу о головокружении) level.add_pp_effector("alcohol.ppe", 100, false) level.add_pp_effector("duality_circle.ppe", 100, false) -- и спавним "пустую" аптечку, например (к вопросу о выдаче нового айтема взамен использованого) alife():create("medkit_empty", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end end 2 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 18 Августа 2022 2 минуты назад, Hind сказал: attempt to call global 'use_item' (a nil value) Создай новый скрипт, куда запихаешь ф-ию 'use_item'. И в бинд_сталкер вызывай эту ф-ию из этого скрипта (думаю, тут объяснять не надо?) Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 20 Августа 2022 1 минуту назад, Colder сказал: В каких файлах нужно ковырять treasure_manager.script Что бы всё не "ломать", думаю, править только осмотр трупа CTreasure:use(npc) 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 21 Августа 2022 (изменено) 48 минут назад, AndrewMor сказал: Можно в treasure_manager.ltx Для классических тайников. Для случайных и редких, по типу АМК-шных, генерация содержимого, вроде, не зависит от этого кондлиста (если ручками не добавлять). А вообще, если нужно полностью исключить возможность получать тайники с трупов, думаю, стоит сразу обрубить это в самом начале, при обыске жмурика, что бы ничего не обрабатывать зря. Изменено 21 Августа 2022 пользователем mole venomous 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 9 Сентября 2022 4 часа назад, Houdini_one сказал: каким образом реализовывается дневные-ночные монстры Задать условия по времени для состояний, например. Скрытый текст function load_job(sj, gname, type, squad, groups) --" Кровосос, хоум недалеко на восток от грузовика смерти if type == "esc_smart_bloodsucker" then -- днём оффлай t = { section = "logic@esc_smart_bloodsucker_day", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) -- ночью резвится t = { section = "logic@esc_smart_bloodsucker_night", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) end ... end ... function load_states(gname, type) if type == "esc_smart_bloodsucker" then return function(gulag) if db.actor ~= nil then if ( level.get_time_hours() >= 3 and level.get_time_hours() <= 21 ) then return 0 -- день else return 1 -- ночь end else return gulag.state end end end ... end 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 9 Сентября 2022 (изменено) @Houdini_one , думаю нет. Изменено 9 Сентября 2022 пользователем mole venomous Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 21 Сентября 2022 3 часа назад, Фёдор2016re2 сказал: disable Если искал в total cmd, то без квадратных скобок. Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 23 Сентября 2022 (изменено) Скрытый текст for i = 0, db.actor:belt_count() - 1 do local item = db.actor:item_on_belt(i) if item and ( item:clsid() == clsid.artefact or item:clsid() == clsid.artefact_s ) then -- log3("artefact on belt") end end Скрытый текст Вот не помню, в чистом ТЧ есть такой метод или нет, но в OGSR точно есть... local obj = db.actor:object("af_medusa") if obj and db.actor:is_on_belt(obj) then -- log3("af_medusa on belt") end PS Эти методы применимы к ОГСР Изменено 24 Сентября 2022 пользователем mole venomous 1 2 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 23 Сентября 2022 (изменено) 2 часа назад, Orсhello сказал: и item_on_belt - это уже не чистый ТЧ Верно. На чистом не работают предложенные мной варианты. Нужно городить скриптовые костыли, помнится, до ОГСР я так и делал. Или переходить на ОГСР двигатель. Изменено 23 Сентября 2022 пользователем mole venomous 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 24 Сентября 2022 (изменено) 8 часов назад, Orсhello сказал: вот такой вариант Это и есть те самые 9 часов назад, mole venomous сказал: скриптовые костыли Есть во многих модах. Похоже, единственно существующий способ "отделить мух от котлет". Изменено 24 Сентября 2022 пользователем mole venomous 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 27 Сентября 2022 При обыске трупа либо в момент смерти НПС можно спавнить всякое в этот самый труп, если предустановить какие-либо условия (по группировке, рангу, имени, секции объекта) для спавна определённых предметов. Но это требует создания множества секций того же ПДА, отличающимися только своим названием. Получать игровое название ПДА от имени его хозяина не выйдет, только если добавить ограниченное кол-во ПДА для уникальных НПС. И спавнить им ПДА сразу в конфигах либо скриптом по ходу игры. Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 27 Сентября 2022 2 минуты назад, ted.80 сказал: Воу воу палехчи, зачем такие выкрутасы Я понял вопрос юзера, как "сделать каждый пда уникальным, по имени его хозяина" Может не так понял... Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 27 Сентября 2022 (изменено) 1 час назад, ted.80 сказал: они и есть каждый унникальный О как. Даже не знал, что ПЫСовые ПДА имеют привязку к имени владельца... 9 часов назад, Houdini_one сказал: главное функцию найти Скрытый текст -- в пределах локации (иначе - скриптом левел чейнджер с последующим удалением...) function actor_displacement(position,rotation) if not rotation then rotation = 0 end db.actor:set_actor_position(position) db.actor:set_actor_direction(rotation) end Пример: actor_displacement(vector():set(-196.908,-37.402,-268.777),3) Изменено 27 Сентября 2022 пользователем mole venomous 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 27 Сентября 2022 9 минут назад, Houdini_one сказал: А что значит 3 9 минут назад, Houdini_one сказал: где вычисляется разворот? db.actor:set_actor_direction(3) 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 28 Сентября 2022 8 часов назад, Houdini_one сказал: actor_displacement(vector():set(159,23,0,10,76,14),0) С количеством запятых нужно быть скромнее actor_displacement(vector():set(159.23,0.10,76.14),0) 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 28 Сентября 2022 27 минут назад, Houdini_one сказал: Через диалог игнорирует точку разворота Видимо, так и есть. По сути, все представленные варианты работают через один метод set_actor_direction. Может быть, спецы подскажут, самому интересно... 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 2 Октября 2022 1 час назад, Orсhello сказал: Игра жутко тормозить стала Тормозит, т.к. производится подробная запись в лог. Это нужно использовать только для выявления возможной причины вылета. Нужно "довести дело" до вылета и изучать лог (будет многобукаф..). Потом отключить. 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
_g.script 3 669 Опубликовано 2 Октября 2022 24 минуты назад, Orсhello сказал: Хоть удаляй вкладку Контакты и разбиндивай кнопку Х Возможно, по этой причине в НЛС-6 (если не ошибаюсь...) так и сделано. Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение