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/
DibokDibokin 1 Опубликовано 13 Августа 2020 Поделиться Опубликовано 13 Августа 2020 Здравстуйте. Пытаюсь привязать объектам, чьи визуалы box_wood_01, box_paper и box_metall_01 хоть какие-нибудь метки на ПДА и миникарте. Вот последний код, который я пытался использовать: local is_box = { ["dynamics\\box\\box_wood_01"] = true, ["dynamics\\box\\box_metall_01"] = true, ["dynamics\\box\\box_paper"] = true, } function show_boxes() local sim = alife() for i=1,65534 do local obj = id and db.storage[id] and db.storage[id].object if (obj and is_box[obj:get_visual_name()]) then level.map_add_object_spot_ser(obj.id, "название_метки") end end end До этого были ещё и другие. Сейчас и не вспомню. Второй день сижу, пытаюсь. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1344802
Zander_driver 10 348 Опубликовано 13 Августа 2020 Поделиться Опубликовано 13 Августа 2020 (изменено) Только что, DibokDibokin сказал: local obj = id and db.storage[id] and db.storage[id].object И чему тут будет равен obj ? Сдается мне, тип будет boolean, а значение false, потому что в этой цепочке and-условий первым идет неопределенное id, если верить коду, равное nil. Поэтому следующая проверка if (obj and... - по факту проверяет if (false and... - и далее уже ничего не выполняется. И до попытки найти поле id у объекта "false", код не добирается. А то вылетел бы. Только что, DibokDibokin сказал: Второй день сижу, пытаюсь. Когда код творит что-то не то, что от него ожидается, полезно его снабдить выводами в лог интересующей информации. Пусть пишет, как у него дела, у кода этого. Тогда и дебаг быстрее делается. Изменено 13 Августа 2020 пользователем Zander_driver 1 1 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1344803
DibokDibokin 1 Опубликовано 13 Августа 2020 Поделиться Опубликовано 13 Августа 2020 14.08.2020 в 00:52, Zander_driver сказал: И чему тут будет равен obj ? Вот ещё вариант: local is_box = { ["dynamics\\box\\box_wood_01"] = true, ["dynamics\\box\\box_metall_01"] = true, ["dynamics\\box\\box_paper"] = true, } function show_boxes() local sim = alife() for i=1,65534 do local se_obj = sim:object(i) if (se_obj and is_box[se_obj:get_visual_name()]) then level.map_add_object_spot_ser(se_obj.id, "название_метки") end end end Лог вылета: FATAL ERROR [error]Expression : <no expression> [error]Function : CScriptEngine::lua_error [error]File : ..\xrServerEntities\script_engine.cpp [error]Line : 189 [error]Description : fatal error [error]Arguments : LUA error: d:\stalker\gamedata\scripts\xr_show_box.script:11: attempt to call method 'get_visual_name' (a nil value) stack trace: 0023:00773DCC xrCore.dll, xrDebug::fatal() 0023:054CEC1F xrGame.dll, CDialogHolder::UseIndicators() 0023:00453F6E xrEngine.exe, CInput::OnFrame() 0023:0040F2DA xrEngine.exe, CRenderDevice::message_loop() Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1344804
Zander_driver 10 348 Опубликовано 13 Августа 2020 Поделиться Опубликовано 13 Августа 2020 Только что, DibokDibokin сказал: get_visual_name Такой метод есть у клиентских объектов, но у серверных его нет. О чем лог собственно, и сообщает. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1344805
WinCap 323 Опубликовано 13 Августа 2020 Поделиться Опубликовано 13 Августа 2020 @DibokDibokin, попробуй так: local s_obj = alife():object(i) if s_obj ~= nil then local c_obj = level.object_by_id(s_obj.id) if (c_obj and is_box[c_obj:get_visual_name()]) then 1 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1344806
mdm64 586 Опубликовано 15 Августа 2020 Поделиться Опубликовано 15 Августа 2020 Доброго времени! Думается, мой вопрос имеет прямое отношение к скриптам - как реализовать (и есть ли мануал?) замедление или полную остановку игрового времени во время диалогов с неписями, во время чтения различных найденных документов ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1344923
Zander_driver 10 348 Опубликовано 15 Августа 2020 Поделиться Опубликовано 15 Августа 2020 @mdm64, level.set_time_factor, если правильно помню. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1344924
Chypakabra 782 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 15.08.2020 в 15:36, mdm64 сказал: как реализовать (и есть ли мануал?) замедление или полную остановку игрового времени во время диалогов с неписями Я так понимаю - хотите фичу а-ля Фоллаут? при диалогах и открытии инвентаря - все и всё вокруг замирают и ожидают действия игрока? 15.08.2020 в 15:58, Zander_driver сказал: level.set_time_factor, Это остановит только течение времени - смену дня и ночи и погодных циклов, а вот НПС и зверушки как бегали и стреляли/кусались так и будут 2 1 Личный архив по играм Архив по Trilogy EE Скрипт гладкого интерфейса AMK-Team Файлы BFG Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345055
UriZzz 1 004 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 В shadows addon 0.8 реализовано замедление времени по горячей клавише, может есть смысл по ковырять аддон? 1 Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345061
mdm64 586 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 @Zander_driver, Да, он, вернее, требуется управление им. @ted.80, Да, именно так. Просто в моём моде, который ещё верстается, есть довольно много больших диалогов и другой текстовой информации, во время которых (если игрок умеет читать) может произойти всё, что угодно - от выброса до нападения мутантов или враждебных сталкеров. Да и само время игры тратится по сути впустую, частенько будет получаться так - утром проснулся, похавал, поговорил с неписем или прочитал найденную инфу, и уже пора ужинать и баиньки... Конечно, несколько преувеличенно сказал, но суть именно такова. Вот этого мне и нужно избежать. @UriZzz, Честно говоря, пропустил эту фичу, аддон вроде как знакомый на слух. Ну, на крайняк придётся ковырнуть его, просто на это тоже требуется время, а чтобы разобраться в чужих скриптах, иногда немалое. Потому и задал вопрос, вдруг есть у кого нужное, уже выдернутое или просто есть. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345079
aromatizer 4 586 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 2 часа назад, mdm64 сказал: есть довольно много больших диалогов и другой текстовой информации Предлагаю пару простых вариантов: 1. В gamedata/config/alife.ltx: time_factor = 3 или меньше. Это уменьшит скорость течения времени в игре. 2. Ставить игру на паузу при чтении текстов. Соответственно, надпись "пауза" переместить так, чтобы не мешала. 1 Отношения между людьми- главная ценность в человеческом обществе.Любая полученная информация- это только повод для размышлений, а не побуждение к действию.Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAEНакопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345104
mdm64 586 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 @aromatizer, Не лучший вариант. У меня обычно стоит time_factor = 10, и то потери игрового времени напрягают, а многие для себя ставят от 3 до 6. А ставить на паузу тоже не вариант - каждый раз перемещать надпись "Пауза", а кроме того, насколько я помню, в режиме паузы в ЗП прокрутка не работает, опять же, иногда по несколько раз за прочтение одного документа снимать паузу, прокручивать и снова ставить паузу... сгодится, разве что, в качестве старого деревянного костыля.... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345108
_g.script 3 669 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 12 минут назад, mdm64 сказал: каждый раз перемещать надпись "Пауза" Зачем каждый раз? 2 Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345110
aromatizer 4 586 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 (изменено) 2 часа назад, mdm64 сказал: У меня обычно стоит time_factor = 10, и то потери игрового времени напрягают Не понял: переведи. А так-то time_factor = 10 предназначен для того, чтобы игрок быстрее бежал вперед, а не вдумчиво читал простыни текстов.) Думается мне, что оптимальное значение time_factor = 3. Изменено 16 Августа 2020 пользователем aromatizer Отношения между людьми- главная ценность в человеческом обществе.Любая полученная информация- это только повод для размышлений, а не побуждение к действию.Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAEНакопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345129
mdm64 586 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 (изменено) @aromatizer, Да, для чтения 3-ка удобнее, слов нет. Но понимаешь, как-то контрреволюционно выглядит ситуация, когда ГГ за 3-10 минут выносит хорошо вооружённую многочисленную базу, тратя на переход из одного здания в другое несколько секунд. Не? Я не сторонник иссуплённого реализьма, но всё-таки какие-то более или менее реальные соответствия, хотя бы в плане затрачиваемого времени должны быть. Другой вопрос, что привязывать к реальному времени чтение документов и диалогов попросту не вижу смысла. Изменено 16 Августа 2020 пользователем mdm64 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345134
Chypakabra 782 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 6 часов назад, mdm64 сказал: время игры тратится по сути впустую, частенько будет получаться так - утром проснулся, похавал, поговорил с неписем или прочитал найденную инфу, и уже пора ужинать и баиньки В игре есть парные info_portion: ui_inventory/ui_inventory_hide, ui_talk/ui_talk_hide, которые отлавливаются при - открытии/закрытии - инвентаря и диалога соответственно, написать Function() [и поставить её на апдейт] которая будет менять time_factor от 1 до 10, в нужное время - это убережёт от выбросов, голода, жажды, и смерти от старости - во время чтения длинных диалогов, но от зверушек и злобных нпс не спасёт. 2 2 1 Личный архив по играм Архив по Trilogy EE Скрипт гладкого интерфейса AMK-Team Файлы BFG Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345135
mdm64 586 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 @ted.80, Так, а вот это уже очень интересно! я с парными поршнями дела не имел, поэтому просьба, если не сильно трудно, можно написать какой-то образец, инструкцию или шаблон толковый? Я хотя бы смогу освоить эти парные поршни, судя по описанию, они мне много где будут нужны. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345136
Chypakabra 782 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 @mdm64, попробуй этот код сунуть в файл bind_stalker.script в function actor_binder:update(delta) в самый конец функции перед заключительным end if db.actor:has_info("ui_inventory") or db.actor:has_info("ui_talk") then level.set_time_factor(1) elseif db.actor:has_info("ui_inventory_hide") or db.actor:has_info("ui_talk_hide") then level.set_time_factor(10) end 1 1 3 Личный архив по играм Архив по Trilogy EE Скрипт гладкого интерфейса AMK-Team Файлы BFG Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345137
mdm64 586 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 (изменено) @ted.80, Благодарю! Я так понимаю, что при этом изменяется ход времени при открытии-закрытии инвентаря, верно? Аналогично вторая пара поршней так же может быть использована для диалогов, насколько я понял. Что-нибудь кроме этого нужно в другие места добавлять? Поршни парные они системные или их необходимо всё-таки прописывать, как и "обычные"? Изменено 16 Августа 2020 пользователем mdm64 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345139
Zander_driver 10 348 Опубликовано 16 Августа 2020 Поделиться Опубликовано 16 Августа 2020 Только что, mdm64 сказал: Поршни парные они системные или их необходимо всё-таки прописывать Системные. Их движок выдает/забирает, прописывать никуда не требуется. Только что, mdm64 сказал: Что-нибудь кроме этого нужно в другие места добавлять? Неа. @ted.80, абсолютно готовый код написал, "под ключ" бери-пользуйся. 1 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/524/#findComment-1345141
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти