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 Ссылка на комментарий
Баба ЯГА 7 Опубликовано 4 Февраля Поделиться Опубликовано 4 Февраля Ребята, прошу помощи, уже неделю ковыряю - неосилю... Проблема следующая: Что нужно? ГГ подходит к ящику (тайнику) и нажимает на него, срабатывает инфо ui_car_body, как узнать какой ящик открыл ГГ? Т.е. надо userdata этого конкретного ящика. Пробовал через bind_physic_object.script -> function generic_physics_binder:use_callback( item, who ) это работает частично, т.к. например на Свалке, ящик возле Беса = gar_simulation_box_2 - не срабатывает (не идёт колбек). Например для трупов сталков прекрасно работает treasure_manager.script -> function CTreasure:use( npc ) , как только нажимаешь на труп, сразу идёт колбек что это за userdata, надо тоже самое но на ящики. Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 4 Февраля Поделиться Опубликовано 4 Февраля Вот тут был разбор use_object для физических объектов. Не знаю, применимы ли такие правки к ТЧ. 2 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Баба ЯГА 7 Опубликовано 5 Февраля Поделиться Опубликовано 5 Февраля (изменено) Продолжу: Скрытый текст Ребята, прошу помощи, уже неделю ковыряю - неосилю... Проблема следующая: Что нужно? ГГ подходит к ящику (тайнику) и нажимает на него, срабатывает инфо ui_car_body, как узнать какой ящик открыл ГГ? Т.е. надо userdata этого конкретного ящика. Пробовал через bind_physic_object.script -> function generic_physics_binder:use_callback( item, who ) это работает частично, т.к. например на Свалке, ящик возле Беса = gar_simulation_box_2 - не срабатывает (не идёт колбек). Например для трупов сталков прекрасно работает treasure_manager.script -> function CTreasure:use( npc ) , как только нажимаешь на труп, сразу идёт колбек что это за userdata, надо тоже самое но на ящики. Что выяснил: [bind_physic_object](use_callback): срабатывает только тогда, если ID ящика есть в db.storage, если нету - то нет реакции, вообще никакой. Для примера тестирую на Свалке. Всего 36 рюкзаков, из них в storage только 24, более того, рюкзак который спавнится по заданию Кости на Свалке тоже в storage не добавляется, рюкзак из инвентаря если спавнить - то добавляется. Вопрос актуален: как сделать колбек на открытие любого ящика? Т.е. подошёл, нажал на любой ящик, сработала какя-то функция. ? Написал свой биндер (по аналогии [inventory_box] [m_inventory_box]:inventory_box [rx_inventory_box]:inventory_box [kostya_box] в items_devices.ltx и devices.ltx теперь не работает script_binding = bind_physic_object.init сделал так: script_binding = my_binder.init script_binding = bind_physic_object.init работает только bind_physic_object.init но он не видит все ящики сделал так: script_binding = bind_physic_object.init script_binding = my_binder.init работает только my_binder.init , он видит все ящики, всё как мне надо, НО, теперь не работает bind_physic_object.init ... Вопрос: как повесить на, например, [inventory_box] и bind_physic_object.init и my_binder.init чтобы оба работали, мой биндер нужен только для определения ящика который юзает ГГ, получается что в конструкции вида: [inventory_box] ... script_binding = bind_physic_object.init script_binding = my_binder.init работает тот что написан последним? Выходит два биндера нельзя вешать? П.С. Получается, если мой биндер видит все ящики, значит ошибка в оригинальном биндере bind_physic_object.script? Изменено 5 Февраля пользователем Баба ЯГА Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
Это популярное сообщение. RayTwitty 516 Опубликовано 5 Февраля Это популярное сообщение. Поделиться Опубликовано 5 Февраля (изменено) @Баба ЯГА в bind_physic_object.script замени одну строчку if not ini or not ini:section_exist("logic") then -> if (not ini or not ini:section_exist("logic")) and obj:section() ~= "inventory_box" then Если несколько секций ящиков, для которых нужен биндер, то добавляй аналогично: ... and obj:section() ~= "m_inventory_box" P.S. В игре сотни, если не тысячи физ. объектов, если на каждый вешать по биндеру и прочую логику, можно повесить игру. Поэтому сделали ограничение, что биндим только объекты с логикой. Там кстати ниже прожекторы выводят из под этого ограничения, наверно правильнее по классу проверить ящик, чем тут по секциям. if obj:clsid() ~= clsid.projector and obj:clsid() ~= clsid.inventory_box then Хотя работать должно одинаково. Изменено 5 Февраля пользователем RayTwitty 3 3 Ссылка на комментарий
Stalkersof 185 Опубликовано 22 часа назад Поделиться Опубликовано 22 часа назад А есть ли какая то возможность отследить момент появления ГГ после телепортации на другую локацию. Делаю проводников на движке ОГСР. Хочется прикрутить эффект после перехода на другую локацию. Freeplay Graphic Mod(FGM) Ссылка на комментарий
Balavnik 143 Опубликовано 20 часов назад Поделиться Опубликовано 20 часов назад @Stalkersof Как вариант при переходе проводником выдавать поршен "использован проводник", и при спавне актора на локации проверять, включен ли он. 1 А где зима? Ссылка на комментарий
Stalkersof 185 Опубликовано 20 часов назад Поделиться Опубликовано 20 часов назад 2 минуты назад, Balavnik сказал: при спавне актора на локации проверять А как отследить спавн актора на локации? Freeplay Graphic Mod(FGM) Ссылка на комментарий
Balavnik 143 Опубликовано 20 часов назад Поделиться Опубликовано 20 часов назад @Stalkersof bind_actor.script -> net_spawn. Но этот колбек также вызывается при загрузке сохранения(т.к. по факту происходит спавн актора на уровень, выход в онлайн). Поэтому если хочется заморочиться, то желательно другое решение искать. 1 А где зима? Ссылка на комментарий
RayTwitty 516 Опубликовано 17 часов назад Поделиться Опубликовано 17 часов назад 3 часа назад, Balavnik сказал: Но этот колбек также вызывается при загрузке сохранения(т.к. по факту происходит спавн актора на уровень, выход в онлайн). Поэтому если хочется заморочиться, то желательно другое решение искать. Ну так правильно - на предыдущей локации выдаешь инфо, на новой локации проверяешь и удаляешь. Можно еще по идее и в pstor актора сохранить флажок, чтобы с поршенами не возиться. Ссылка на комментарий
Pavel_2000 5 Опубликовано 7 часов назад Поделиться Опубликовано 7 часов назад Здравствуйте! Появился такой вопрос. Можно ли как-нибудь отследить сколько времени висит артефакт на поясе? платформа ЗП «Если долго мучиться, что-нибудь получится» Охотник за артефактами|Crow Game Killer Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти