Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 13 Сентября 2023 Поделиться Опубликовано 13 Сентября 2023 1. ED (hex) = 237 (16^1 * 14 + 16^0 * 13), иначе не сходится. 2. Картинка сложилась: в [lua_help.script] указаны действующие ссылки и неправильные значения, а при проверке if dik == DIK_keys.MOUSE_1 и т. п. читаются движковые значения. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
wdfgosdgf 62 Опубликовано 13 Сентября 2023 Поделиться Опубликовано 13 Сентября 2023 Подскажите, пожалуйста, можно ли делать проверку расстояния от актора до произвольных координат, не привязанных к игровому объекту? Мне нужна просто проверка расстояния до заданной мной фиксированной точки на локации, не хотелось бы спавнить объекты без необходимости. Как это сделать правильно? Anomaly 1.5.2. Вот пример (оно работает, если что): function is_swamp() local actor = db.actor local obj_pos = vector():set(44.860466003418,-3.8407301902771,-361.91436767578) if actor and obj_pos then if actor:position():distance_to(obj_pos) < 75 then log("ambient_sound: actor in swamp zone! ") --return true end end end ПОСЛЕДНИЕ ВЕРСИИ ПРАВОК И АДДОНОВ: Турель расходует патроны v1.01 ОП2.2 Миноискатель v1.3 + фикс разброса вещей ОП2.2 Объемный звук дождя v1.1 ОП2.2 Дистанция и инфа только со смарт-биноклем в руках ОП2.2 Возврат травы в Тёмную лощину. Фикс пака HD текстур ОП2.2 Аномальные документы с вертолёта v1.0 ОП2.2 + адапт. для LSC 30.08 БТРы и турели издают звук v1.41 ОП2.2 Ссылка на комментарий
I am Dead 918 Опубликовано 15 Сентября 2023 Поделиться Опубликовано 15 Сентября 2023 14.09.2023 в 02:34, wdfgosdgf сказал: Вот пример (оно работает, если что): Ну так в чем суть вопроса если есть рабочий код?) 3 Ссылка на комментарий
Stalkersof 185 Опубликовано 21 Сентября 2023 Поделиться Опубликовано 21 Сентября 2023 Привет друзья. Подскажите как скриптом прочитать параметр из user.ltx Freeplay Graphic Mod(FGM) Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 21 Сентября 2023 Поделиться Опубликовано 21 Сентября 2023 (изменено) В ТЧ через файловую систему: local file = getFS():r_open(полный путь) или …($app_data_root$, "user.ltx") local text = file:r_stringZ() -- дальше разбирать полученный текст через string.find, string.match и прочие методы В ЧН через библиотеку io: local filename = "_appdata_\\user.ltx" for line in io.iines(filename) do -- построчное чтение local x = line:find(…) … Еще через консоль можно: get_console():get_тип(название параметра или привязки клавиши). Изменено 21 Сентября 2023 пользователем Norman Eisenherz 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Stalkersof 185 Опубликовано 21 Сентября 2023 Поделиться Опубликовано 21 Сентября 2023 Забыл уточнить для ТЧ. А нет ли у кого полного кода или функции. Разбирать и парсить еще не умею. Freeplay Graphic Mod(FGM) Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 21 Сентября 2023 Поделиться Опубликовано 21 Сентября 2023 При одном параметре можно обойтись консолью. Если надо больше, требуется полное описание задачи. 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Stalkersof 185 Опубликовано 27 Сентября 2023 Поделиться Опубликовано 27 Сентября 2023 (изменено) Привет всем у меня опять проблемка. В начале скрипта помещаю некую переменную и присваиваю ей значение, по этому условию выполняю некое действие в функции по нажатию кнопки. Смысл в том чтоб по условию выполнить действие один раз при нажатии кнопки. Все прекрасно работает только до перезагрузки сейва и вообще при любой загрузке кроме ни. Весь код приводить не буду просто кусочек. Простая задача вроде а всю голову сломал. --в начале скрипта local outfit = false --в кусок кода в функции при нажатии кнопки if not outfit then item:set_condition(1) self:GetStatic("no_money"):SetText("Костюм отремонтирован") outfit = true else self:GetStatic("no_money"):SetText("Закончились кевларовые пластины") end Да забыл уточнить ремнабор многоразовый вернее трех разовый. т.е скрипт запускается три раза до удаления предмета из инвентаря. Все ломается после загрузки сейва. Изменено 27 Сентября 2023 пользователем Stalkersof Freeplay Graphic Mod(FGM) Ссылка на комментарий
Kirgudu 1 255 Опубликовано 27 Сентября 2023 Поделиться Опубликовано 27 Сентября 2023 @Stalkersof разумеется, так и будет, поскольку при каждой загрузке из сохранения твоя строка в начале скрипта выполняется заново, и переменная приобретает первоначальное значение. Чтобы этого не происходило, значение переменной нужно не просто присваивать, но также сохранять в сейве (и читать оттуда при загрузке). Примеров достаточно на любой вкус, даже в оригинале: см. xr_logic.pstor_store / xr_logic.pstor_retrieve (но это не лучший из вариантов, разве что для единичного использования). 1 1 1 Инструмент Ссылка на комментарий
Max_Raf 35 Опубликовано 27 Сентября 2023 Поделиться Опубликовано 27 Сентября 2023 Здравствуйте. Интересует пару вопросов. 1. Есть ли у кого какой-либо парсер xml данных нпс по specific_character id, чтобы получить этим самым парсером данные по спавну оружия и предметов у конкретного нпс? (всё думаю сделать скриптовую замену спавна предметов нпсам при спавне, через условную Lua-таблицу. В теории можно было бы просто <supplies> закоментить и спавнить что хош уже в скриптах, но было бы здорово получить хоть какие то данные из xml, чтобы хоть как то не подтереть что квестовое ненароком) 2. Словил прикол с поведением зверушек. А именно: 1) заспавнил зверушку и перманентно её ослепил. (set_fov(0)) 2) далее просто сделал движение и зверушка меня услышала и начала бежать на меня. 3) Я убежал, аж за АИ-сетку, чтобы зверушка отстала от меня. 4) Зверушка отагрилась и уселась под кустом отдыхать 5) Самый сок: я возвращаюсь на АИ-сетку за овер9999 метров от неё, она начинает бежать на меня. Самое интересное что best_enemy == nil , а get_enemy == 0. По моему монстры не обнуляют что то у себя, тем самым и возникают проблемы с тем что они порой "видят спиной". Вот интересно мнение спеца на подобное. 3. Монстры "видят спиной", как лечить? 4. Ребят, как реализовать рандомные апгрейды в ЗП на заспавненных предметах? В наличии есть m_netpk, но не знаю какой параметр и как "подкручивать" 5. есть у кого рабочая схема работы подствольников для нпс на COC 1.4.22 ? 6. в COC 1.4.22 когда нпс стреляют из РГ-6 то у них затем в некоторой области зависает danger_inertion: стоят тупо озираются и ничего больше не делают. Мало ли у кого есть правка. 7. Пытаюсь перенести музыку из бара на базе ЧН в ЧН - в ЗП COC 1.4.22. Столкнулся с проблемой при установке комментария на музыку . Использовал oggcommentfix ver. 8 и ничего не вышло,звучит всё так же "из головы" а не от бара. Может кто подсказать в чём дело? Мб каким другим софтом коммент править? ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий
Zander_driver 10 343 Опубликовано 28 Сентября 2023 Поделиться Опубликовано 28 Сентября 2023 9 часов назад, Max_Raf сказал: было бы здорово получить хоть какие то данные из xml, чтобы хоть как то не подтереть что квестовое ненароком Для того чтоб составить луа-таблицу под ваши нужды, совершенно нет нужды пользоваться луа. Давно есть готовые инструменты для парсинга xml на любом удобном языке, из массово-употребимых. php, C++, или другие по вкусу. Пишете там свой парсер, он вам дает данные, а их уже Ctrl+C -> Ctrl+V в свой Lua-скрипт. Ну, я лично делал бы так. Если все же категорически хочется юзать Луа - тут это обсуждалось. 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 1 Октября 2023 Поделиться Опубликовано 1 Октября 2023 Кто-нибудь разбирал методы биндеров подробно? 1. Что такое net_Relcase и почему этот метод вызывается 10–20 раз подряд при спавне объекта, а после по 1–2 раза при обращении к инвентарю и прочих вроде бы не связанных с отдельным объектом действиях? Есть старый пост, но он мало похож на правду – метод net_destroy показывает, что объект находится в онлайне при всех вызовах net_Relcase. В движке под таким методом вроде как удаляются ссылки на объект. 2. При каких условиях вызываются методы net_import и net_export? Есть другой старый пост, но он, видимо, вообще не про биндеры. 3. Зачем нужен метод reinit(section), если ссылку на секцию объекта можно получить через self.object в методе reload, который вызывается при тех же условиях "спавн / онлайн"? 4. Обязательно ли выполнять обновление объекта через общий класс object_binder в методах reload, reinit и update? 5. Обязательно ли проверять объект через object_binder.net_spawn? 6. Обязательно ли удалять биндер через object_binder.net_destroy? 7. Почему для разрушаемых объектов вроде ящиков привязка событий через set_callback указана не в reinit, а в net_destroy? 8. Обязательно ли отключать обработку событий в net_destroy? 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
wdfgosdgf 62 Опубликовано 5 Октября 2023 Поделиться Опубликовано 5 Октября 2023 Подскажите, пожалуйста, как правильно запускать звук на воронах, чтобы он двигался вместе с ними? НПС, например, при движении ведут звук за собой, а на воронах он остаётся в точке начала воспроизведения. snd:play_no_feedback(obj, sound_object.s3d, 0, obj:position(), 1) -- звук не движется за объектом Я что-то неправильно делаю или для ворон это не работает в принципе? Через play_at_pos тот же результат. Если для ворон движение звука не сделать в принципе, то ещё вопрос: snd:play_at_pos(obj, obj:position(), 5, sound_object.s3d) Если задать timeout 5 секунд для звука движущегося объекта, в какой позиции он начнёт воспроизводиться?: 1. в той, где объект был на момент выполнения функции 2. в той, где объект будет находиться в момент начала воспроизведения звука после истечения таймера 1 ПОСЛЕДНИЕ ВЕРСИИ ПРАВОК И АДДОНОВ: Турель расходует патроны v1.01 ОП2.2 Миноискатель v1.3 + фикс разброса вещей ОП2.2 Объемный звук дождя v1.1 ОП2.2 Дистанция и инфа только со смарт-биноклем в руках ОП2.2 Возврат травы в Тёмную лощину. Фикс пака HD текстур ОП2.2 Аномальные документы с вертолёта v1.0 ОП2.2 + адапт. для LSC 30.08 БТРы и турели издают звук v1.41 ОП2.2 Ссылка на комментарий
RayTwitty 516 Опубликовано 9 Октября 2023 Поделиться Опубликовано 9 Октября 2023 (изменено) @wdfgosdgf https://xray-engine.org/index.php?title=Класс_sound_object Автоматическое изменение позиции звука не реализовано, нужно делать ручками. В твоем случае надо подвязаться на апдейт биндера вороны и обновлять позицию звука через метод set_position. Разумеется, для каждой вороны свой экземпляр звукового объекта, ссылка на который сохраняется в биндере. Изменено 9 Октября 2023 пользователем RayTwitty 3 1 Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 13 Октября 2023 Поделиться Опубликовано 13 Октября 2023 On 12/8/2014 at 11:51 AM, Dennis_Chikin said: Ну, помним, незабвенный watcher_act.scrip, когда непись прямо во время боя прется через всю локацию, ни на что не обращая внимания, подбирать упавший бинтик, на другом краю этой локации, причем ориентируясь НА СЛУХ. Надо полагать, это файл из НС-2010, в котором "ориентирование на слух" представлено перебором стандартного списка memory_sound_objects. Потестил в ТЧ: бинты и прочие медикаменты при сбросе даже рядом с NPC в список источников звука не заносятся. В "солянке" не правленый движок, скрипты только – была ли в действительности такая проблема? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 343 Опубликовано 14 Октября 2023 Поделиться Опубликовано 14 Октября 2023 13.10.2023 в 09:02, Norman Eisenherz сказал: не правленый движок, скрипты только – была ли в действительности такая проблема? Была в свое время на наверное львиной доле модов на базе оригинального движка 1.0004 - 1.0006 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Colder 12 Опубликовано 17 Октября 2023 Поделиться Опубликовано 17 Октября 2023 Всем привет. Хочу выдать инфопорцию при сдачи второстепенных квестов. Делаю так: Скрытый текст В task_manager.script пишу: в function CRandomTask:__init() self.reward_info = utils.cfg_get_string(self.task_ini, id, "reward_info", nil, false, "") в function CRandomTask:init_reward_dialog(dlg, parent) if self.reward_info ~= nil then phrase_script:AddGiveInfo(self.reward_info) end Соответственно в ltx: reward_info = инфопорция Но ничего не происходит. Что я пишу не так? Ссылка на комментарий
WinCap 316 Опубликовано 17 Октября 2023 Поделиться Опубликовано 17 Октября 2023 @Colder, попробуй так: в function CRandomTask:__init() curr_task_info.reward_info = utils.cfg_get_string(self.task_ini, id, "reward_info", nil, false, nil) в function CRandomTask:init_reward_dialog(dlg, parent) if self.task_info[v].reward_info ~= nil then phrase_script:AddGiveInfo(self.task_info[v].reward_info) end 1 1 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 18 Октября 2023 Поделиться Опубликовано 18 Октября 2023 При отслеживании события callback.hit в обработчик передается аргумент local_direction – какой-то вектор из трех дробных значений. В движке есть комментарий "convert impulse into local coordinate system". Что за значения пишутся в этот вектор и куда их можно применить? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Капрал Хикс 541 Опубликовано 21 Октября 2023 Поделиться Опубликовано 21 Октября 2023 Подскажите, в оригинале ТЧ можно влиять на голод ГГ скриптами? Скажем, повесить на апдейт увеличение сытости при наличии в инвентаре определённой брони? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти