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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Graff46 621 Опубликовано 10 Апреля 2018 Поделиться Опубликовано 10 Апреля 2018 3 минуты назад, Overfirst сказал: поглядеть, как воспроизведение партиклов реализовано в sr_particle.script Побыстрому глянул, я так понял, что там апдейт проверяет партикл на проигрывание, если партикл "выключился" - то запускает его по новой... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1165814
Graff46 621 Опубликовано 10 Апреля 2018 Поделиться Опубликовано 10 Апреля 2018 (изменено) 1 час назад, Overfirst сказал: Можно пример секции такого объекта? не видит physic_object Можете эту секцию скинуть, она наверно в system.ltx? *Не нужно Изменено 10 Апреля 2018 пользователем Graff46 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1165815
Dennis_Chikin 3 665 Опубликовано 11 Апреля 2018 Поделиться Опубликовано 11 Апреля 2018 Партикл - партиклу рознь. Есть бесконечные, есть те, для которых время ограничено. Последние - да, надо перезапускать, если еще нужны. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1165976
Graff46 621 Опубликовано 11 Апреля 2018 Поделиться Опубликовано 11 Апреля 2018 (изменено) 39 минут назад, Dennis_Chikin сказал: Есть бесконечные Time_limit'а нет, может death убрать, что бы партикл играл бесконечно? И по каким полям в СДК опрделить бесконечный ли партикл? Изменено 11 Апреля 2018 пользователем Graff46 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1165994
Dennis_Chikin 3 665 Опубликовано 11 Апреля 2018 Поделиться Опубликовано 11 Апреля 2018 А death - это вообще где ? И, да, я не уверен, что движок делает с партиклами, хранящимися внутри функций. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1166001
Graff46 621 Опубликовано 11 Апреля 2018 Поделиться Опубликовано 11 Апреля 2018 5 часов назад, Dennis_Chikin сказал: А death - это вообще где ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1166084
Dennis_Chikin 3 665 Опубликовано 11 Апреля 2018 Поделиться Опубликовано 11 Апреля 2018 Так это вообще-то запуск другого элемента, когда закончился основной. Вообще, на сколько я понял, запускается particle group, а не element, так ? Тогда время надо смотреть для каждого из элементов. И, да, отключенные, но оставленные эффекты и элементы - хороший способ получить странных и загадочных вылетов. p.s. Но вообще это все уже явно не скрипты. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1166089
Sla-Sla 43 Опубликовано 12 Апреля 2018 Поделиться Опубликовано 12 Апреля 2018 Всем привет, у меня такой вопрос: знает ли кто-нибудь, как реализован разрыв тел в аномалиях? Какой скрипт за это отвечает? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1166273
Dennis_Chikin 3 665 Опубликовано 13 Апреля 2018 Поделиться Опубликовано 13 Апреля 2018 Ни какой. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1166282
The ReapeR 72 Опубликовано 15 Апреля 2018 Поделиться Опубликовано 15 Апреля 2018 (изменено) Господа, вопрос. Работаю на довольно сильно измененной скриптовой базе. В какой-то момент стал ловить вылет на юзании неписей, причем только генериков, и только когда по идее должны появиться стандартные фразы "Что интересного можешь рассказать?" и т.д. Сидорович полностью рабочий. Диалог с Волком проходит безо всяких проблем, пока не тыкнешь "Я попробую" или "Не слабо. Но не пойду". Вылет не содержит никаких отсылок к LUA, лишь ни о чем мне не говорящий стектрейс: stack trace: 0023:0773F45E xrGame.dll Предыдущий снапшот папки scripts такой проблемы не содержит, но изменений с тех пор гора. Сам вопрос: какова цепочка вызовов функций при юзании генерик-непися (в ванили)? Одним из первых, насколько понимаю, вызывается xr_motivator.motivator_binder:use_callback(). И судя по добавленному дебагу, он отрабатывает от начала и до конца. А далее? Благодарю. UPD: к слову, death_manager полностью рабочий. Сталкеры убиваются, инвентарь чистится, лут генерится в соответствии с дроп-секциями. Можно обыскать, стянуть предметы, никаких проблем. UPD2: вылет исправил -- накосячил в dialog_manager. Но цепочку вызовов для общего развития все ж интересно узнать. Изменено 15 Апреля 2018 пользователем The ReapeR Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1166766
Fenrir02 199 Опубликовано 18 Апреля 2018 Поделиться Опубликовано 18 Апреля 2018 Доброго времени! Помогите составить таблицу. if box:is_inv_box_empty() then if box:section()=="box" then level.start_stop_menu(level.main_input_receiver(), true) alife():create("treasure_item", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) alife():release(alife():object(box:id())) end end Другими словами, нужна таблица секций рюкзаков, составленная в примерно таком виде: local box = { "box", "box_2", "box_3" } Заранее спасибо. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1167493
AndreySol 215 Опубликовано 21 Апреля 2018 Поделиться Опубликовано 21 Апреля 2018 В 18.04.2018 в 22:49, Fenrir02 сказал: нужна таблица секций рюкзаков Ну так таблица уже есть. Тебе нужно в ф-ции проверить наличие конкретного тайника в этой таблице ? Тогда так: таблицу лучше назвать к примеру local all_box_table = {"box","box_2","box_3"} if box:is_inv_box_empty() then if all_box_table[box:section()] then level.start_stop_menu(level.main_input_receiver(), true) alife():create("treasure_item", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) alife():release(alife():object(box:id())) end end 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1167994
qwertyuiop 16 Опубликовано 24 Апреля 2018 Поделиться Опубликовано 24 Апреля 2018 Оживил непись: alife():release(obj) .. obj = alife():create(spawn_id) Пытаюсь сделать другом, в другом скрипте и не сразу. if obj and IAmAStalker[obj:clsid()] and obj:alive() and obj:name() == name then printf("set friend %s",name) obj:set_relation(game_object.friend,db.actor) end вылет attempt to call method 'set_relation' (a nil value) Непись живая, на одном уровне с ГГ, воюет. Почему может быть вылет? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1168815
Graff46 621 Опубликовано 24 Апреля 2018 Поделиться Опубликовано 24 Апреля 2018 Подскажите где в ТЧ в скриптах отловить момент когда НПС повернулся куда ему надо и начал выполнять анимацию? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1168845
dsh 3 824 Опубликовано 24 Апреля 2018 Поделиться Опубликовано 24 Апреля 2018 @qwertyuiop судя по всему, obj у тебя является серверным объектом, а у него нет метода set_relation(). Этот метод есть только у клиентского объекта. 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1168846
The ReapeR 72 Опубликовано 28 Апреля 2018 Поделиться Опубликовано 28 Апреля 2018 Вот сейчас интересненького (наверное) на поболтать принес. Unfortunately, @Bak пока так и не объявился в сети, решил отзеркалить часть лички тут: В 10.04.2018 в 15:11, The ReapeR сказал: Салют! Заметил интересную особенность с AI additions 2.0f4 для Теней. Я сейчас копаюсь со своим модом, подсмотрел в ZRP 1.09 (http://www.metacognix.com/files/stlkrsoc/index.html) механизм валидации основных модулей еще до открытия главного меню. Если вкратце, там в ui_main_menu добавляется переменная а-ля: local all_good = db and modules and xr_logic Потом на ините меню проверяется ее значение, и в случае false предупреждаем о проблемах (modules, как знаешь, загружает все схемы при любом обращении). Ну и вот, если раньше все схемы загружались уже после загрузки спавна, то теперь это происходит дважды: при ините главного меню и на "Сервер: Старт" (тоже по вине ui_main_menu). На этом моменте спавн еще не загружен, clsids, скорее всего, не валидны, A-Life тоже. А в rx_ai первой строчкой идет rx_utils.init() -> init_clsids() -> запрашивается куча клсидов, далее local alife = alife() и проч. В такой комбинации на нетспавне актора загрузка дропается с логом "attempt to access field actor_net_spawn (a nil value)" на строчке из bind_stalker if rx_ai rx_ai.actor_net_spawn(). Дебаг показал интересненькое: init_clsids() из rx_utils падает на запросе клсида актора, ни rx_utils, ни rx_ai, ни modules далее уже не читаются, потому движок LUA и не видит функцию. Собственно, вопрос, чисто из спортивного интереса. Что в принципе правильнее: исправить инит rx_ai или не заигрывать с модулями (по идее, могу и то, и то)? Насколько адекватно загружать схемы в такую рань, и должны ли они все быть независимыми от этапа инита (SANB и все ванильные модули, включая xr_kamp с оттаскиванием трупов, загружаются без проблем)? Спасибо) В 15.04.2018 в 11:32, The ReapeR сказал: А. Насчет дедманов из xr_kamp чуть наврал) Пришлось инит таблицы body_grab_bones перенести в конструктор, так как там запрашиваются клсиды. По всем rx_* очмного различного инита выполняется за пределами функций, просто в теле. Полностью как следует прибраться пока не смог, загружаю схемы отдельно от вызова modules, позже, на ините спавна. Кстати, насколько же шатка и зависима от условий загрузка схем в ванили: первый вызов modules приходится на get_stype() в xr_gulag, когда запускается первая gulag:beginJob() для, если не ошибаюсь, раненого Толика. То есть любое вмешательство в данную функцию, либо же референс к modules в каком-либо другом кастомном скрипте раньше данного места приведет к более ранней или поздней загрузке схем (или вообще незагрузке). Явно нигде схемы они не грузят, все юзание modules сводится к запросам значений stype_*. М? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1169483
Dennis_Chikin 3 665 Опубликовано 28 Апреля 2018 Поделиться Опубликовано 28 Апреля 2018 Ы ? Как бы да, стартовая менюшка - сама по себе, пространства _G, game, level и еще много разных - сами по себе. Более того, традиционная лапша в сталкере, и, особенно, модах, со всеми перекрестными ссылками, требует долгого распутывания, если мы хотим что-то в каком-то ином порядке, чем в том, в котором как-то работает. типа так: https://www.dropbox.com/s/miqjdrqmn95nbjn/_init.script?dl=0 (закомментированное - работало после распутывания, но перестало после принятия дополнительных мер "против читеров поганых" в одном и том же по сути моде.) 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1169602
Zagolski 74 Опубликовано 2 Мая 2018 Поделиться Опубликовано 2 Мая 2018 А из-за чего и где неписю может добавляться во входные рестрикторы все аномалии на уровне, кто-нибудь может подсказать? Не всем неписям, только одному (пока одного выявил). Не могу никак разобраться, с какого аномалии ему добавляются. Другим как и положено - обычно по одному рестриктору, накрывающий смарт. В итоге у этого перца список создается длиной больше 4096 байт и игра падает. Добавляются они в gulag:set_restrictions через add_restrictions, но откуда они взялись у этого нпс? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1170351
Zagolski 74 Опубликовано 2 Мая 2018 Поделиться Опубликовано 2 Мая 2018 (изменено) Выявил, что добавляются в amk_anoms.syncronize() (амк-шные динамические аномалии), оттуда корни растут. И почему-то одному неписю, который ничем непримечателен. Длиннющая строка всех аномалий записывается ему в рестрикторы. Ошибка неординарная, но может у кого было подобное. Не могу понять, откуда они тащатся и почему только ему одному. Изменено 2 Мая 2018 пользователем Zagolski Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1170442
abramcumner 1 229 Опубликовано 2 Мая 2018 Поделиться Опубликовано 2 Мая 2018 (изменено) @Zagolski, именно так и действует обход аномалий в АМК. Остальные НПЦ попадают в исключения, а ему одному подрубаются. Надо посмотреть в скриптах условия включчения схемы обхода аномалий. И использовать кстати любую другую схему обхода, по-моему во всех из них в рестрикторы пишутся не все аномалии на уровне, а только ближайшие. Изменено 2 Мая 2018 пользователем abramcumner Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/453/#findComment-1170445
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти