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 Ссылка на комментарий
UriZzz 1 004 Опубликовано 7 Апреля 2021 Поделиться Опубликовано 7 Апреля 2021 @dsh так баг привращается в фичу 1 Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
mole venomous 3 520 Опубликовано 7 Апреля 2021 Поделиться Опубликовано 7 Апреля 2021 3 часа назад, Баба ЯГА сказал(а): где-то в скриптах есть коллбэк на взятие ГГ в руки физобъекта Имя скрипта как бы намекает: bind_physic_object.script Там ф-ия: generic_physics_binder:use_callback Через неё без проблем отследишь поднятие дроп-ящика, в котором заведомо может что-нибудь спаунится. А остальное... Не уверен, попробуй ковырнуть init, но думаю, выше упоминали правки движка не без причины. Здесь могла быть ваша реклама. Ссылка на комментарий
Баба ЯГА 7 Опубликовано 8 Апреля 2021 Поделиться Опубликовано 8 Апреля 2021 (изменено) По физ-объектам - понял, спасибо, нет смысла, надо движок ковырять. Есть ещё вопрос, получил через пакет данные по level_changer, там есть: dest_position = userdata dest_direction = userdata Я пробовал так: vector(t.dest_direction).x - но оно выдаёт всё по нулям... пробовал так: t.dest_directiondirection().x - так вообще ошибку выдаёт... как вместо userdata получить данные?.. shapes = table t.shapes[1]: offset = userdata t.shapes[1]: shtype = number t.shapes[1]: v2 = userdata t.shapes[1]: v3 = userdata t.shapes[1]: v1 = userdata Так-же там есть shapes - таблица, я её распарсил - но в ней тоже userdata... Как получить данные в этих случаях из userdata? 1) хочу посмотреть как там всё устроено на переходах 2) нужно изменить точку перехода и сделать радиус метра два - не больше, пробовал так: t.level_vertex_id = 397480 t.game_vertex_id = 1811 t.shapes = { { ["shtype"] = 0, ["center"] = vector():set( 0, 0, 0 ), ["radius"] = 2 } } но ничего не вышло... Изменено 8 Апреля 2021 пользователем Баба ЯГА Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
gam 117 Опубликовано 9 Апреля 2021 Поделиться Опубликовано 9 Апреля 2021 (изменено) 07.04.2021 в 17:12, dsh сказал(а): Это баг оригинального движка. Насколько помню - это недозапись в огф модели актора в костюмах группировок, где таскание трупов\вещей забагованно. В СДК должен быть указатель: stalker_hero_captures.ltx. Изменено 9 Апреля 2021 пользователем gam 2 Ссылка на комментарий
AndreySol 215 Опубликовано 9 Апреля 2021 Поделиться Опубликовано 9 Апреля 2021 @Баба ЯГА А не проще всякие объекты с шейпами в СДК настраивать? 1 Ссылка на комментарий
gam 117 Опубликовано 9 Апреля 2021 Поделиться Опубликовано 9 Апреля 2021 @Баба ЯГА Вот некоторые модели исправляющие данный косяк, сделанные правда для себя. По моему к модам Лекс антигаз и Джекман армор. Если пригодиться конечно. https://disk.yandex.ru/d/_MwdBMiNp9CvBw Ссылка на комментарий
Баба ЯГА 7 Опубликовано 12 Апреля 2021 Поделиться Опубликовано 12 Апреля 2021 Возможно ли получить в игре скриптово реальное время компьютера (не игровое время), как в Lua с помощью os.date() ? Если да, то можно пример для получения yy:MM:dd hh:mm:ss? Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
WinCap 316 Опубликовано 12 Апреля 2021 Поделиться Опубликовано 12 Апреля 2021 @Баба ЯГА, а чем os.date() не устраивает? Пример: local date_str = os.date("%y:%m:%d %H:%M:%S") Скрытый текст Теги для os.date (PiL3): %a Сокращенное название дня недели (например, Wed) %A Полное название дня недели (например, Wednesday) %b Сокращенное название месяца (например, Sep) %B Полное название месяца(например, September) %с Дата и время(например, 09/16/98 23:48:10) %d День месяца (например, 16)[01-31] %H Час в 24-часовой системе (например, 23)[00-23] %I Час в 12-часовой системе (например, 11)[00-11] %j День года (например, 259) 1001-3661 %M Минуты (например, 48)[00-59] %m Месяц (например, 09)[01-12] %p "am" или "рm" %S Секунды (10)[00-60] %w День недели (3)[0-6=Воскресенье-суббота] %x Дата (например, 09/16/98) %X Время (например, 23:48:10) %y Год как две цифры (например, 98) %Y Полный год (например, 1998) %% Знак % 1 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Баба ЯГА 7 Опубликовано 12 Апреля 2021 Поделиться Опубликовано 12 Апреля 2021 (изменено) @WinCap Я знаю как в Lua получать дату и время... Будь добр, прочитай ещё раз мой предыдущий вопрос, внимательно. Потом - сам проверь В ИГРЕ - то что ты рекомендуешь - и ты сам себе ответишь на свой вопрос: "... а чем os.date() не устраивает..." Если бы оно работало В ИГРЕ - я бы не спрашивал Вопрос - актуален: Возможно ли получить в игре скриптово реальное время компьютера (не игровое время) -> как в Lua с помощью os.date()? Если да, то можно пример для получения yy:MM:dd hh:mm:ss? Для "быстрых" и невнимательных: os.date() в игре STALKER - не работает. ! Unknown command: ..\gamedata\scripts\test.lua:101:_attempt_to_index_global_'os'_(a_nil_value) Изменено 12 Апреля 2021 пользователем Баба ЯГА 1 Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
NikitosKnyaz 0 Опубликовано 13 Апреля 2021 Поделиться Опубликовано 13 Апреля 2021 можно ли в ОП 2-1 через скрипт выдать и показать на карте все тайники существующие в зоне?! Ссылка на комментарий
I am Dead 918 Опубликовано 13 Апреля 2021 Поделиться Опубликовано 13 Апреля 2021 (изменено) @Баба ЯГА Как это не работает? В OGSE таким образом главное меню подбирается в зависимости от реального времени суток. Скрытый текст function main_menu:InitBackground() local time = level.present() and level.get_time_hours() or tonumber(os.date("%H", os.time())) local night = time <= 8 or time >= 20 self.bg_st:InitTexture(night and "ui\\ui_mm_night_back" or "ui\\ui_mm_main_back") local multiplier = 0.5625 if screen_aspect_ratio > 2 then -- ultra-wide multiplier = 0.40 end local tex_orig_w = screen_aspect_ratio * 1024 * multiplier local tex_orig_x_offs = (1024 - tex_orig_w) / 2 self.bg_st:SetOriginalRect(tex_orig_x_offs, 0, tex_orig_w, 768); end Изменено 13 Апреля 2021 пользователем I am Dead Ссылка на комментарий
Баба ЯГА 7 Опубликовано 13 Апреля 2021 Поделиться Опубликовано 13 Апреля 2021 (изменено) @I am Dead ну, может, в OGSE - уже и допилили движок и там есть такое, не спорю, у меня - нет (играю в Диетическую Солянку), кстати, в оригинале - тоже нет os. Вот по-этому и спрашиваю - может кто поможет (если, конечно, кто знает). @NikitosKnyaz 12 часов назад, NikitosKnyaz сказал(а): можно ли в ОП 2-1 через скрипт выдать и показать на карте все тайники существующие в зоне?! Скрытый текст Можно, вот так, например: function find_all_tainik() local s_obj,cnt = nil, 0 for i = 1, 65534 do s_obj = alife():object(i) if (s_obj) and (s_obj:section_name():find("inventory" , 1, true) or s_obj:section_name():find("_box" , 1, true)) then cnt = cnt + 1 get_console():execute( "load ::: ".."section: "..s_obj:section_name().." | name: "..s_obj:name().." | id: "..s_obj.id) if level.map_has_object_spot( s_obj.id, "treasure" ) == 0 then -- нет метки level.map_add_object_spot_ser( s_obj.id, "treasure", "Тайник"..s_obj:name() ) -- поставим свою end end end get_console():execute( "load ::: ".."Количество найденных тайников = "..cnt) end find_all_tainik() Изменено 13 Апреля 2021 пользователем Баба ЯГА Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
BFG 7 582 Опубликовано 13 Апреля 2021 Поделиться Опубликовано 13 Апреля 2021 @gam а может недозапись ОГФа в системсе ? В таблице капчюрс? 1 "Кругом зомби.....у меня кончаются патроны...." Ссылка на комментарий
Купер 2 987 Опубликовано 14 Апреля 2021 Поделиться Опубликовано 14 Апреля 2021 @Баба ЯГА , попробуй тут посмотреть. 1 Ссылка на комментарий
ARTLantist 14 Опубликовано 14 Апреля 2021 Поделиться Опубликовано 14 Апреля 2021 Довольно простые вопросы, никогда просто этим не интересовался, но вдруг понадобилось. Натыкался давно в инете на ответы, но сейчас, по закону подлости, когда надо, не могу найти. 1. Как скриптово активировать диалог с нужным нпс? 2. Как активировать торговлю с этим нпс? (Например, после активации определённой фразы) Ссылка на комментарий
WinCap 316 Опубликовано 14 Апреля 2021 Поделиться Опубликовано 14 Апреля 2021 @ARTLantist, поскольку вопрос задан в теме "скриптование", то: 1. Функции npc:set_start_dialog("start_dialog") и npc:restore_default_start_dialog(). 2. Функции npc:enable_trade() и npc:disable_trade(). Но, возможно, удастся обойтись стандартными средствами: 1. Теги has_info и dont_has_info для диалога или параметры meet_dialog и use в секции meet работы npc. 2. Параметр trade_enable в секции meet работы npc. 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
ARTLantist 14 Опубликовано 15 Апреля 2021 Поделиться Опубликовано 15 Апреля 2021 @WinCap да, мне именно скриптовые методы нужны) Про meet и trade_enable в логике я знаю Ссылка на комментарий
Jek@n 1 342 Опубликовано 21 Апреля 2021 Поделиться Опубликовано 21 Апреля 2021 (изменено) Приветствую. Пару вопросов: 1)В игре есть метод начать неразрываемый диалог с НПС, однако существует хитрость: если нажать паузу, а затем Esc, то такой диалог всё-таки закроется. Как это поправить? 2) Есть такая функция: Скрытый текст if math.random(100) <= 50 then действие_1 elseif math.random(100) > 50 then действие_2 end но срабатывает не всегда. Где ошибка? Спасибо. Изменено 21 Апреля 2021 пользователем Jek@n Ссылка на комментарий
WinCap 316 Опубликовано 21 Апреля 2021 Поделиться Опубликовано 21 Апреля 2021 43 минуты назад, Jek@n сказал(а): Есть такая функция: ... Где ошибка? Ошибка, как мне кажется, в elseif. В данном варианте вероятность срабатывания будет такой: 0% <-- действие_1 --> 50% <-- ничего_не_делать --> 75% <-- действие_2 --> 100%. Нужно написать так: Скрытый текст if math.random(100) <= 50 then действие_1 else действие_2 end 1 2 3 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
UriZzz 1 004 Опубликовано 21 Апреля 2021 Поделиться Опубликовано 21 Апреля 2021 4 часа назад, Jek@n сказал(а): нажать паузу, а затем Esc, то такой диалог всё-таки закроется. Как это поправить? Ну, самый простой способ: не нажимать на esc вовремя паузы. Способ по сложнее: отследить начало диалога и на это время через скрипт разбиндить клавишу паузы, что бы не работала, пример - как это сделать, предостановить не могу, так как сам далеко от компа. Ни чего больше, кроме правки движка, в голову не лезет. 2 1 Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти