Norman Eisenherz 309 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 Здрасьте. Есть диалог выбора типа ПНВ при прокачке брони, который выглядит примерно так: фраза 11: выбираю ПНВ "Зеленый" / действие: установка ПНВ тип 1 фраза 12: выбираю ПНВ "Цифровой" / действие: установка ПНВ тип 2 … фраза 18: выбираю ПНВ "Белая ночь" / действие: установка ПНВ тип 8 Можно ли получить номер, id или текст последней задействованной в диалоге фразы, чтобы исходя из этого определять тип ПНВ и не писать 8 однотипных функций? Думаю, где-то должна храниться информация "скрипт был вызван из фразы phrase_id диалога dialog_id". Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
lordmuzer 743 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 И Вам не хворать. В xml диалоги добавить тег <action> примерно вот так <phrase id="123"> <text>dialog_123</text> <action>dialogs.action</action> </phrase> где dialogs.action - function action(first_speaker, second_speaker, dialog_id, phrase_id) в файле dialogs.script Как то так? Ссылка на комментарий
AndreySol 215 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 5 часов назад, Kirgudu сказал: Через нет-пакет. Вроде как story_id - свойство объекта "только для чтения". Сомнительно, что получится задать его простой правкой нет-пакета. В поясниловке к модулю Artos'а есть целый раздел об этом... Ссылка на комментарий
Graff46 598 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 @AndreySol,@Змея, Можно и записывать. Если еспользуйте X-Ray extensions, то там есть отдельная ф-ция. Логику можно задать в секции НПС или нет-пакетом. Ссылка на комментарий
Kirgudu 1 207 Опубликовано 2 Ноября 2018 Поделиться Опубликовано 2 Ноября 2018 (изменено) @AndreySol, если порыться в самом модуле, можно увидеть, что свойство story_id входит в массив state свойств класса net_cse_alife_object. В то же время в классе net_cse_abstract есть position, direction и др. свойства, но вот именно story_id там нет. Думаю, значение story_id должно прекрасно устанавливаться без дополнительных плясок с бубном, требующихся при работе с абстрактной частью пакета. Мне кажется, что в сопроводиловке к модулю Артос просто описАлся. Но если я не прав - с удовольствием посыплю голову пеплом. В таком случае в той же сопроводиловке написано, как нужно действовать. 10 часов назад, Змея сказал: Как функцию спавна писать в скрипте? Я предложил почти готовый код спавна, в который надо только подставить нужные значения. Если угодно - обрамить дополнительно в функцию. Ну и подключить перед этим модуль, разумеется, а как это сделать - подробно написано в соответствующей теме и в документации к модулю. Помощь помощи рознь. Можно расжевать и положить в рот, а можно дать наводку и научить питаться самостоятельно. Предпочитаю делать второе. P.S. По логике: если брать мой пример выше, то содержимое кастом даты можно установить так: --... local data = pk:get() data.custom_data:setString("логика и проч.") --... Изменено 2 Ноября 2018 пользователем Kirgudu 1 Инструмент Ссылка на комментарий
dsh 3 824 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 4 hours ago, Kirgudu said: Но если я не прав - с удовольствием посыплю голову пеплом. Прав, прав. story_id через нетпакет устанавливается. Единственное, что нужно помнить устанавливающим, что движок его зарегистрирует только при следующей загрузке сейва. Т.е. после сейв-лоада, ну или при переходе на другую локацию, что то же самое. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Zagolski 74 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 А зачем заспавненному неписю вообще устанавливать story_id, зачем он ему нужен? 3 часа назад, dsh сказал: что движок его зарегистрирует только при следующей загрузке сейва Вроде даже при перезапуске игры. Ссылка на комментарий
dsh 3 824 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 4 hours ago, Zagolski said: зачем заспавненному неписю вообще устанавливать story_id Например, что бы его потом по этому story_id найти и что нибудь с ним сделать. Или, что бы движок не удалил его трупик, если он будет долго лежать. А может ещё для чего, кто знает. 4 hours ago, Zagolski said: Вроде даже при перезапуске игры. Точно не только при перезапуске игры. Но это относится к оригинальному движку. В NLC, к примеру, понятия не имею, как оно будет, что там переписали и поменяли. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Okichi 922 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 22 минуты назад, dsh сказал: NLC, к примеру, понятия не имею, как оно будет, что там переписали и поменяли. То же самое осталось. Присваиваем story_id - переходим на другую локацию ( или сохраняемся и грузим сэйв) - получаем непися с новоприсвоенным story_id След от кругов на воде - это тоже след (с) Ссылка на комментарий
Fenrir02 199 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 Здравствуйте! Подскажите, какой функцией можно включать/выключать фонарик в X-Ray extensions? И как подключить коллбэк на изменение состояния фонарика? Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Graff46 598 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 @Fenrir02, https://xray-engine.org/index.php?title=X-Ray_extensions Ссылка на комментарий
Fenrir02 199 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 @Graff46, уже три раза перечитал эту статью. Не могу понять, как использовать эти функции: switch_torch(bool<switch_on>) -- переключает фонарь bool<is_on> is_torch_enabled() -- возвратит true, если фонарь включён Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Graff46 598 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 @Fenrir02, Эти методы применимы к клиентскому объекту фонаря. db.actor:object('device_torch'):switch_torch( true или false) -- включить или выключить фонарик db.actor:object('device_torch'):is_torch_enabled() --Возвратит true или false в зависимости включен-ли фонарь 1 2 Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 Доброго времени. У меня вот какой вопросик странный есть: возможно ли каким-то образом перебрать всех живых НПС и получить имя абсолютно случайного живого НПС? Ссылка на комментарий
naxac 2 445 Опубликовано 3 Ноября 2018 Поделиться Опубликовано 3 Ноября 2018 (изменено) @_Sk8_AsTeR_, можно так примерно (для онлайновых нпс): local obj local tbl = {} for i = 1, 65534 do obj = level.object_by_id( i ) if obj and isStalker( obj ) and obj:alive() then table.insert( tbl, obj:character_name() ) end end return tbl[ math.random( #tbl ) ] Либо по таблице db.storage пройтись. Для оффлайновых придется читать имя из их нет-пакета. Изменено 3 Ноября 2018 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 4 Ноября 2018 Поделиться Опубликовано 4 Ноября 2018 Здрасьте. Имеется массив: local nv_type = { ["bad"] = { ["price"] = 10*k, ["id"] = 911 }, ["good"] = { ["price"] = 25*k, ["id"] = 912 }, … ["bast"] = { ["price"] = 30*k, ["id"] = 918 } } Как, имея конечное значение определенной строки, получить ссылку с названиями секций, например "nv_type.good.id" для значения "912"? Простой поиск через "for key, value in pairs do" с возвратом имени ключа результата не дает (видимо, потому, что массив многоуровневый). Сразу уточню, построение массива наоборот ( [911] = { [type] = "good", [price] = 10*k }, …) не рассматривается. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Overfirst 630 Опубликовано 4 Ноября 2018 Поделиться Опубликовано 4 Ноября 2018 (изменено) print(nv_type["good"].id) -- печатать фиксированный элемент for k, v in pairs(nv_type) do -- печатать всё print(nv_type[k].id) end Что-то такое? Изменено 4 Ноября 2018 пользователем Overfirst Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 4 Ноября 2018 Поделиться Опубликовано 4 Ноября 2018 Я вот так делаю Spoiler local result = "" for i, v in pairs(nv_type) do if v == choice then result = i else result = "nope" end end db.actor:give_talk_message(result, task_texture, task_rect, "iconed_trade_info") и получаю сообщение "nope". Как эту функцию перестроить, чтобы получить номер главной секции ("good") по значению входящего ключа ("id" = 911)? Примечание: choice = номер фразы в диалоге, 911…918. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Overfirst 630 Опубликовано 4 Ноября 2018 Поделиться Опубликовано 4 Ноября 2018 (изменено) local nv_type = { ["bad"] = { ["price"] = 10*k, ["id"] = 911 }, ["good"] = { ["price"] = 25*k, ["id"] = 912 }, ["bast"] = { ["price"] = 30*k, ["id"] = 918 } } function get(choice) local result = "nope" for k, v in pairs(nv_type) do if nv_type[k].id == choice then result = k break end end return result end PS: мне уже надоело редачить посты, чтобы исправлять табуляцию. Я ставлю одну, в посте их оказывается две. Сделал пробелами. Что я делаю не так? Изменено 4 Ноября 2018 пользователем Overfirst Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Kirgudu 1 207 Опубликовано 4 Ноября 2018 Поделиться Опубликовано 4 Ноября 2018 @Overfirst, твой пример можно сделать ещё проще, без повторного поиска в массиве: --... if v.id == choice then --... А про табуляции отпиши в "вопросы и предложения", сюда админы могут и не заходить. 1 Инструмент Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти