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 Ссылка на комментарий
RayTwitty 516 Опубликовано 16 Декабря 2024 Поделиться Опубликовано 16 Декабря 2024 @Norman Eisenherz если важно получить время, то скорее всего без правок движка никак. Или хотя бы расширить кастрированные луашные пространства имен ("лайтовые правки движка") - io, os и т.д. Вроде давно были эти библиотеки внедренные в xrLua.dll или проброшенные туда, без правки основного движка (xrGame.dll, .exe etc). Суть наводки - может быть можно будет получить текущее время системы в мс и уже это ловить на сталкерском апдейте вместо time_global(). 1 1 Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 17 Декабря 2024 Поделиться Опубликовано 17 Декабря 2024 Нет, именно для этих действий точность не важна. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
deniska9999den 3 Опубликовано 21 Декабря 2024 Поделиться Опубликовано 21 Декабря 2024 Вопрос, как повесить функцию на взрыв гранаты (платформа ЗП, граната Ф-1 или РГД-5). Например кидаем гранату и после взрыва используется аптечка (антирад, еда) или в месте взрыва появляется какой-нибудь предмет (мутант)? Или повесить функцию на исчезновение болта (после того как кинем, болт исчезает и на его месте пояляется предмет или используется предмет из инвентаря. Ссылка на комментарий
Капрал Хикс 541 Опубликовано 22 Декабря 2024 Поделиться Опубликовано 22 Декабря 2024 Кто-то делал дезориентацию НПС гранатой "Заря-2" в ТЧ? В OLR такой фишки нет... Ссылка на комментарий
Balavnik 141 Опубликовано 25 Декабря 2024 Поделиться Опубликовано 25 Декабря 2024 Как на чистом тч узнать координаты, куда смотрит прицел? А где зима? Ссылка на комментарий
Капрал Хикс 541 Опубликовано 26 Декабря 2024 Поделиться Опубликовано 26 Декабря 2024 Есть мод на умное выпадение частей монстров, если в кость запчасти попала пуля, часть не выдаётся. Так вот там кости учитываются по номерам. Вопрос - где номера эти костей в моделях смотреть? Как эта нумерация высчитывается? Ссылка на комментарий
ted.80 370 Опубликовано 26 Декабря 2024 Поделиться Опубликовано 26 Декабря 2024 @Капрал Хикс для npc есть вот это, https://www.amk-team.ru/forum/topic/4188-soc-raschet-povrezhdeniy-pri-strelbe-po-nepisyam/?do=findComment&comment=452177 для монстров скорее всего что-то похожее 1 Личный АРХИВ по S.T.A.L.K.E.R Ссылка на комментарий
Капрал Хикс 541 Опубликовано 26 Декабря 2024 Поделиться Опубликовано 26 Декабря 2024 @ted.80 , благодарю. Нашёл тулзу для просчёта, dump_ogf. Позволяет узнать всё о модели. https://synthira.ru/load/drugie_igry/s_t_a_l_k_e_r/s_t_a_l_k_e_r_2/dump_ogf/24-1-0-3265 1 1 1 Ссылка на комментарий
Капрал Хикс 541 Опубликовано 28 Декабря 2024 Поделиться Опубликовано 28 Декабря 2024 Ищу готовый скрипт, который обводит рамочками в оптике людей и мутантов. Ссылка на комментарий
Капрал Хикс 541 Опубликовано 29 Декабря 2024 Поделиться Опубликовано 29 Декабря 2024 Как добавить в скрипт проверку, что в опциях игры нажата определённая кнопка-"флажок"? Сама кнопка в опциях "Игра" успешно добавлена, флажок работает. Ссылка на комментарий
ted.80 370 Опубликовано 29 Декабря 2024 Поделиться Опубликовано 29 Декабря 2024 @Капрал Хикс https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/?do=findComment&comment=1322813 1 Личный АРХИВ по S.T.A.L.K.E.R Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 16 Января Поделиться Опубликовано 16 Января (изменено) [ТЧ 1.0006] Задача: добавить субтитры к звуку "val_rob_guard_jeer" – угроза от охранника на ферме в ТД после покупки "гаусски за 800". В [xr_meet] приветствия вычитываются по шаблону "расстояние | анимация@звук | …" – добавлять в логику действие %…% без правок скрипта бесполезно. Попытался просто вывести название звука в сообщение в указанных ниже местах скрипта – никакой реакции. Куда надо привязаться для получения ссылки на звук? [Edit] После перезапуска игры обработался вызов meet_manager.sound. Снимаю вопрос. Spoiler [xr_meet.script] function action_meet_wait:execute () … xr_sound.set_sound(self.object, meet_manager.sound, nil, idle_timeout) sms(meet_manager.sound) -- тут … function Cmeet_manager:update() … self.state,self.sound = self.state_zone,self.sound_zone else self.state,self.sound = self:process_meet() end sms(self.sound) -- тут Изменено 16 Января пользователем Norman Eisenherz 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Black_Raven_03 30 Опубликовано 19 Января Поделиться Опубликовано 19 Января (изменено) Снова нужна помошь, опять Новый Арсенал 7, соотв. ОГСР 2020г. Мне нужно найти и удалить один предмет в инвентаре из нескольких одинаковых, когда делаю так: local item, sil_items db.actor:iterate_ruck( function(dummy, item) if item.section == sil_sect then table.insert(sil_items, item:id()) end end ) if sil_items[1] ~= nil then db.actor:mark_item_dropped(level.object_by_id(sil_items[1])) alife():release(alife():object(sil_items[1])) else return end получаю ошибку вида "attempt to index a local sil_items (a nil value)" Что я натворил не так?! Изменено 19 Января пользователем Black_Raven_03 Скрытый текст AMD FX-8100 (Bulldozer) , 28GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Ссылка на комментарий
Kirgudu 1 255 Опубликовано 20 Января Поделиться Опубликовано 20 Января 12 часов назад, Black_Raven_03 сказал: local item, sil_items Налицо ошибка объявления переменной. В таком виде движок ничего не знает о том, что sil_items - это таблица, и считает, что это простая переменная, значение по умолчанию которой - nil. Индексировать действительно нечего. Чтобы исправить ситуацию, достаточно в первой строке написать так: 12 часов назад, Black_Raven_03 сказал: local item, sil_items = nil, {} то есть присвоить начальные значения переменным явным образом. 1 2 1 Инструмент Ссылка на комментарий
Norman Eisenherz 322 Опубликовано 20 Января Поделиться Опубликовано 20 Января @Black_Raven_03 При таких условиях можно прямо указать предмет: local item = db.actor:object(sect) if item then alife():release( alife():object( item:id() ) ) end Перебор инвентаря пригодится при удалении нескольких предметов с одинаковой секцией. 1 1 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Black_Raven_03 30 Опубликовано 20 Января Поделиться Опубликовано 20 Января @Norman Eisenherz , забыл написать (мой косяк) - размер-то таблицы меняется, при этом нужно будет (позже, когда с одним тестовым отработаю) удалять только часть (больше одного, но не все) серверных предметов для этой таблицы.@Kirgudu , м-да, как ты и написал, мне с самого начала следовало явно проинициализировать переменные (хреново мои мозги поздно вечером работают). 1 Скрытый текст AMD FX-8100 (Bulldozer) , 28GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM! Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136 Ссылка на комментарий
Pavel_2000 5 Опубликовано 26 Января Поделиться Опубликовано 26 Января Как отследить смерть вороны от рук гг? Смотрел скрипты чн с мини игрой, так и не понял как там отслеживается смерть вороны. Хочу сделать что-то наподобие достижения, гг убил 50 ворон. «Если долго мучиться, что-нибудь получится»Охотник за артефактами|Crow Game Killer Ссылка на комментарий
Kirgudu 1 255 Опубликовано 26 Января Поделиться Опубликовано 26 Января @Pavel_2000 в ЧН и ЗП колбэк bind_crow.crow_binder:death_callback вполне себе работает. В ТЧ - наверное, подключать примерно аналогичный биндер. 1 1 Инструмент Ссылка на комментарий
AkkurDev 0 Опубликовано 3 Февраля Поделиться Опубликовано 3 Февраля (изменено) Всем привет. Решил для себя изучить модели поведения персонажей. В качестве эксперимента, была выбрана доработка существующего скрипта xr_kamp. Идея: NPC во время дождя должны перемещаться в укрытие, а не сидеть пятой точкой в грязи; при этом, если дождь слабый, они двигаются в укрытие пешком, а если сильный - бегом. Все, как у людей, в общем. Добавил оператор, эвалуатор: пока оператор пустой, корректно отрабатывает переключение со схемы на схему. Стоило добавить в оператор логику смены положения - нпс начали втыкать: просто встают, стоят и смотрят в одну точку; более того - переключение схем не происходит. Предваряя вопросы: укрытие возвращается корректно, не nil, lvid выводится корректно. Хочется знать, что я забыл добавить или наоборот добавил лишнего в операторе перемещения на точку. Спасибо. Код: -- Персонаж бежит в укрытие, если начался дождь class "action_move_to_cover" (action_base) function action_move_to_cover:__init (npc_name,action_name,storage) super (nil,action_name) self.a = storage end function action_move_to_cover:initialize() action_base.initialize(self) -- Эти строки во всех схемах self.object:set_desired_position() self.object:set_desired_direction() -- Очищаю анимации жратвы и бряцанья на гитаре (как минимум, надеюсь, что корректно очищаются) self.object:clear_animations() -- Разрешаю движение self.object:movement_enabled(true) -- Двигаться линейно self.object:set_detail_path(move.line) -- не знаю, что это, во всех схемах есть self.object:set_path_type(game_object.level_path) -- Меняю состояние тела на бегущее (мб, неправильно?) self.object:set_body_state(move.run) -- Тип движения - бег (пока идет отладка, позже планировал добавить и шаг) self.object:set_movement_type(move.run) -- Бежит спокойно, без паники self.object:set_mental_state(anim.free) -- не знаю, что это, на разных форумах по AI рекомендовано, не знаю - нужно ли тут self.object:remove_all_restrictions() -- Запрещаю нпс издавать звуки и вступать в диалог с ГГ xr_sound.set_sound(self.object, nil) stop_play_sound(self.object) self.object:disable_talk() end function action_move_to_cover:execute () action_base.execute (self) local npc = self.object if npc then -- Получил ближайшее укрытие к персонажу local cover = ogsm_respawn.get_nearest_hide(npc) if cover then -- Получил данные об укрытии local area = cover.obj local lvid = area:level_vertex_id() -- Отправляю NPC на указанную точку state_mgr.set_state(npc,"raid") utils.send_to_nearest_accessible_vertex(npc, lvid) end end end function action_move_to_cover:finalize () action_base.finalize (self) end Изменено 3 Февраля пользователем AkkurDev Добавлено Опричник, 3 Февраля Перемещено. Ссылка на комментарий
h0N0r 366 Опубликовано 3 Февраля Поделиться Опубликовано 3 Февраля @AkkurDev в помощь: xray_logic_npc_by_red75 4 https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти