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/
Norman Eisenherz 355 Опубликовано 7 Августа 2024 Поделиться Опубликовано 7 Августа 2024 В ТЧ task_num = 0 – само задание, 1 и дальше – видимые задачи. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488291
Капрал Хикс 567 Опубликовано 7 Августа 2024 Поделиться Опубликовано 7 Августа 2024 @Labadal , разведать местность, вернуться за наградой. @Norman Eisenherz , хм... Тогда ЧЯДНТ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488298
Labadal 68 Опубликовано 8 Августа 2024 Поделиться Опубликовано 8 Августа 2024 (изменено) @Капрал Хикс Попробуй в лог вывести что выводится в task_status. То бишь: local task_status = db.actor:get_task_state("тут пишешь id квеста", 0) get_console():execute(task_status) Дальше посмотрим. Изменено 8 Августа 2024 пользователем Labadal God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488315
naxac 2 605 Опубликовано 8 Августа 2024 Поделиться Опубликовано 8 Августа 2024 19 часов назад, Капрал Хикс сказал: if task_status == 0 then В lua_help есть такой класс: C++ class task { const completed = 2; const fail = 0; const in_progress = 1; const task_dummy = -1; }; Из названий констант, думаю, понятно, какая что значит. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488319
Labadal 68 Опубликовано 8 Августа 2024 Поделиться Опубликовано 8 Августа 2024 (изменено) @naxac Да я-то ему уже подробно расписал, другое дело интересно почему не работает. Такой вопросик интересный, возможно дело в логике, хотя её не трогал. Суть вот в чём, командир блокпоста с кордона, раньше при спавне всегда шёл к себе в комнату, на свои координаты, а сейчас почему-то при спавне сначала уходит к бункеру сидоровича, садится там возле забора, достаёт колбасу, исчезает, появляется на блокпосту и идёт на своё место. (если ранить в процессе ухода с блокпоста, и отбежать с глаз долой, то как успокоится идет на свои координаты) Вижу такое впервые. Изменено 8 Августа 2024 пользователем Labadal God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488330
AndrewMor 539 Опубликовано 9 Августа 2024 Поделиться Опубликовано 9 Августа 2024 03.08.2024 в 02:19, ted.80 сказал: последняя строчка eat_portions_num = -1 обозначает что предмет можно есть бесконечно он не пропадает из инвентаря и спавнить заново не нужно - пользуйся Надо ж, не знал, впервые слышу 1 Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488375
Капрал Хикс 567 Опубликовано 9 Августа 2024 Поделиться Опубликовано 9 Августа 2024 @Labadal , добавил строчку с выводом в лог, получил в консоли красным такое при заходе в спейс-рестриктор: ! Unknown command: -1 Вылета нет. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488399
Labadal 68 Опубликовано 9 Августа 2024 Поделиться Опубликовано 9 Августа 2024 (изменено) @Капрал Хикс Так у тебя всё работает. -1 значит, что задание у тебя не взято. local task_status = db.actor:get_task_state("тут пишешь id квеста", 0) -- id квеста из <game_task id="id квеста"> if task_status == 0 then -- Действия, если задание провалено elseif task_status == 2 then -- Действия, если задание выполнено elseif task_status == 1 then -- Действия, если задание активно elseif task_status == -1 then -- Действия, если задания нет ни в проваленных, ни в выполненных, ни в активных (твой случай) end Изменено 9 Августа 2024 пользователем Labadal 1 God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488405
Капрал Хикс 567 Опубликовано 9 Августа 2024 Поделиться Опубликовано 9 Августа 2024 (изменено) @Labadal , очень странно... Буду перепроверять все названия, может где-то опечатка. Изменено 9 Августа 2024 пользователем Капрал Хикс Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488407
Капрал Хикс 567 Опубликовано 11 Августа 2024 Поделиться Опубликовано 11 Августа 2024 Разобрался... Работает, но есть нюанс. Корректно проверяется название взятого квеста из файла game_tasks_by_vendor.xml, например eliminate_lager_trader. Т.е., как я понимаю, проверяется наличие взятого у квестодателя любого квеста данного типа. Если подставить название конкретного квеста из task_manager.ltx, например tm_eliminate_camp_1, то проверка не срабатывает. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488528
naxac 2 605 Опубликовано 11 Августа 2024 Поделиться Опубликовано 11 Августа 2024 @Капрал Хикс , все верно, ведь это не id таска, а секция в конфиге. Если тебе нужно проверить состояние конкретного цикличного квеста, нужно это делать в task_manager.script 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488545
Капрал Хикс 567 Опубликовано 11 Августа 2024 Поделиться Опубликовано 11 Августа 2024 3 часа назад, naxac сказал: нужно это делать в task_manager.script Вот там я и завис. Ну, пока меня и такой вариант устроит. Ещё бы награду информацией (инфопоршнем) за выполнение квеста прикрутить из АМК, но опять натыкаюсь на вылеты. Когда-то бы прикрутил на раз. Наверное сюда ткнусь за помощью. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488557
Это популярное сообщение. naxac 2 605 Опубликовано 12 Августа 2024 Это популярное сообщение. Поделиться Опубликовано 12 Августа 2024 (изменено) 20 часов назад, Капрал Хикс сказал: Вот там я и завис Выглядит это примерно так: local tm = task_manager.get_random_task() local status = tm.task_info["секция_квеста_из_task_manager.ltx"].status if status == "selected" then -- если это задание взято и активно в данный момент, то... end Изменено 12 Августа 2024 пользователем naxac 1 3 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488585
Labadal 68 Опубликовано 13 Августа 2024 Поделиться Опубликовано 13 Августа 2024 Подскажите функцию, которая при вызове удалит все трупы с локации? (вообще все, и мутантов и сталкеров, и кто бы угодно там ещё не умер) God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488630
Stalkersof 232 Опубликовано 13 Августа 2024 Поделиться Опубликовано 13 Августа 2024 Посмотри скрипт sak_off_corpses.script есть во многих модах. Ну или в браузере набери уборщик трупов. Есть разные модификации этого скрипта. 1 1 Freeplay Graphic Mod(FGM) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488636
Labadal 68 Опубликовано 13 Августа 2024 Поделиться Опубликовано 13 Августа 2024 [spawner] cond = {+info_portion} При выдаче поршня спавнится нпс. Можно сделать так, чтоб при заборе поршня он деспавнился, причем чтоб при выдаче поршня обратно - появлялся снова? God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488674
Kirgudu 1 370 Опубликовано 14 Августа 2024 Поделиться Опубликовано 14 Августа 2024 (изменено) 16 часов назад, Labadal сказал: При выдаче поршня спавнится нпс. Про OGSR не скажу; в оригинальной игре прямого способа нет, однако можно придумать обходные. 1. Маленькая поправка: он не спавнится (происходит это уже в самом начале игры), а выходит в онлайн. Соответствующая проверка на, то что ему уже можно выйти в онлайн, делается здесь: se_stalker.se_stalker:can_switch_online(). Для обеспечения обратного перехода в оффлайн можно попробовать доработать зеркальную функцию se_stalker.se_stalker:can_switch_offline() так, чтобы при отсутствии инфопорции она выдавала всегда true, но там потребуется ещё, наверное, правильное завершение текущих работ. Сам не пробовал, поэтому не могу сказать, насколько такой вариант работоспособен. 2. Есть альтернативный способ: при старте игры объект сразу удалять (именно удалять, а не оставлять в оффлайне), в нужный момент спавнить, в другой снова удалять и далее по кругу. Способ описан здесь, пояснения по использованию пару лет назад давались здесь (см. пост по ссылке и несколько следующих постов на той же и следующей страницах). Запуск спавна объекта можно при этом организовать с помощью функции, вызываемой из элемента инфопорции action (см. здесь), а запуск его удаления, скажем, в его логике по проверке отсутствия нужной инфопорции. Способов много. Изменено 14 Августа 2024 пользователем Kirgudu 1 2 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488688
Labadal 68 Опубликовано 15 Августа 2024 Поделиться Опубликовано 15 Августа 2024 (изменено) @Kirgudu всё оказалось куда проще: [spawner] cond = {+info_portion} выдаешь info_portion - нпс появляется (выходит в онлайн) забираешь info_portion - нпс исчезает (уходит в оффлайн) Изменено 15 Августа 2024 пользователем Labadal 1 God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488794
Kirgudu 1 370 Опубликовано 16 Августа 2024 Поделиться Опубликовано 16 Августа 2024 Значит, я ошибся, и первый пункт из упомянутых выше работает без всяких изменений в коде. Хорошо, если так. 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488796
Labadal 68 Опубликовано 19 Августа 2024 Поделиться Опубликовано 19 Августа 2024 Возможны ли инклуды в скриптах? у меня в _g скрипте есть несколько каллбеков из XRE: callback["on_item_belt"] = 130 callback["on_item_ruck"] = 131 callback["on_item_slot"] = 132 callback["entity_alive_before_hit"] = 152 вроде как они должны хранится в _g, но я хочу вынести их в отдельный файл, и заинклудить в _g. если так можно, конечно. Подскажите, пожалуйста. В настройках есть пункт, позволяющий кушать аптечки. Для этого есть какая-то функция в скриптах, или это полностью движковая штука? В каком порядке используются аптечки? Рандомно? или есть какой-то приоритет? God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/622/#findComment-1488919
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти