Вис691 Автор темы 661 Опубликовано 10 сентября, 2019 Это как? Все предметы хлама из локации пропасть должны что ли? Поделиться сообщением Ссылка на сообщение
Торчок из Фрисайда 11 Опубликовано 10 сентября, 2019 Ну да. disable и всё. Поделиться сообщением Ссылка на сообщение
Вис691 Автор темы 661 Опубликовано 10 сентября, 2019 Можно поинтересоваться, а какого использование такого скрипта? В любом случае, нужно чуть больше информации. Это должно работать со всеми ячейками (включая и экстерьеры), в которые входит игрок? Пропадать должны какие-то определённые объекты или всё, что может поднять игрок (оружие, броня, медикаменты и т.д.)? В общем, чем больше подробных деталей сообщите, тем мне проще будет. Поделиться сообщением Ссылка на сообщение
Торчок из Фрисайда 11 Опубликовано 10 сентября, 2019 Со всеми ячейками и экстерьерами в которые входит игрок. Заходим и видим чистую локацию, нету не хлама, не еды ни воды, не оружия ни патронов - нет ничего. 200 лет прошло после войны, что не разложилось - давно уже расфасовано по карманам у местных барыг. Такая вот задумка. Поделиться сообщением Ссылка на сообщение
MagnuMspec 7 253 Опубликовано 10 сентября, 2019 Думаю, такая штука здорово ударит по производительности. но если что, лутоубийца реализован в Проекте Невада, правда, немного иначе. 1 Поделиться сообщением Ссылка на сообщение
Вис691 Автор темы 661 Опубликовано 10 сентября, 2019 Приходит ГГ в магазин, а там на полках/витринах пусто. Заходит к себе домой, расставляет предметы по локации, украшает полочки, а потом раз - и всё исчезает) В любом случае, задумку уловил, и вот, как бы я её реализовывал. Вначале нам нужно получить все объекты нужного типа. Сделать это можно при помощи GetRefs. На странице есть ссылка на коды различных типов, так что подобрать нужные не проблема. Чего я не знаю - это значение значения 201:Inventory Object. Есть шанс, что это прямо то, что нужно и охватывает прямо всё-всё-всё, но надо тестировать. Если нет, то придётся по очереди по каждому типу (оружие, броня, медикаменты - всё есть на странице) проходить. Также советую обратить внимание на "passing -1 will use the uGridsToLoad value from Fallout.ini to calculate this". Дальше идём по всем элементам массива через Foreach (опять же, на странице пример есть) и просто их disable, как уже верно было замечено. Можно проверок всяких добавить, например, на то, что предмет ещё не отключён (зачем нам один и тот же предмет мучить и отключать по миллиону раз?). Теперь куда это всё прицепить? Скрипты в воздухе висеть не могут. Самый очевидный вариант это загнать всё это дело в квест, и крутить, крутить, крутить с проверкой на изменение локации. Но это ужасный вариант, так делать не стоит. Тут нужно обратиться к Event'ам, а конкретно к OnCellEnter. Таким образом подсчёт будет происходить только во время смены ячейки, т.е. единожды. К сожалению, я не могу предсказать, насколько сильно подобная штука будет грузить игру, но в теории должно потянуть. Это был минимальный экскурс в направление, куда копать. Дальше всё зависит от текущих навыков, но если что всегда можно задать мне вопросы, показать нерабочий код и т.д. Удачи 1 Поделиться сообщением Ссылка на сообщение
Торчок из Фрисайда 11 Опубликовано 10 сентября, 2019 Аааа блин, я про магазы и жилища не подумал. Эта идея с голой пустошью не спонтанно родилась, я помимо SFW ещё Wasteland 2 прохожу, а там пустошь действительно пустая, максимум можно сундучок с барахлом найти или тайник какой раскопать. Ладно, пусть всё остаётся как есть. Спасибо за сообщения. 2 часа назад, MagnuMspec сказал: Думаю, такая штука здорово ударит по производительности. но если что, лутоубийца реализован в Проекте Невада, правда, немного иначе. У меня эта фишка не работает. Хотя выставил множитель 0 - количество лута зависит напрямую от удачи. Но всё равно локации хламом завалены. Поделиться сообщением Ссылка на сообщение
GardenParadise 0 Опубликовано 24 сентября, 2019 Прошу помощи в поиске или создании и интеграции скрипта управления активацией лазерного целеуказателя и освещения тактического фонаря через назначаемые клавиши для оружейного мода, который я создаю на протяжении уже более 2 лет. Мод практически готов к релизу, полностью работоспособен, содержит сотни качественных моделей тактического оружия на любой вкус и цвет, интегрированного во все необходимые уровневые списки и адекватно сбалансированного относительно друг друга, способен заменить практически все остальные оружейные моды, кроме разве что пака от Millenia. Осталось лишь создать индивидуальные иконки и внедрить вышеуказанный скрипт. В плане наличие в скрипте привязки к назначаемой клавише ( либо клавише "U") и последовательная активация ( луч1→луч2→луч1+луч2→фонарь→луч1+луч2+фонарь→отключить). Нечто подобное я видел в модах R.S.A. и прочих от Master Shifu и Chaotic Sun от kj666, но не могу без посторонней помощи создать похожее для своего мода. Также нужна помощь в создании иконок, хотя бы в виде инструкций для трансформации фотографий в рабочую текстуру иконки. Заранее благодарю всех кто откликнется и сможет помочь хотя бы советом. Поделиться сообщением Ссылка на сообщение
Вис691 Автор темы 661 Опубликовано 24 сентября, 2019 Чтобы я мог хоть как-то помочь, нужно чуть подробнее рассказать про то, что готово и в каком оно виде. 15 часов назад, GardenParadise сказал: последовательная активация ( луч1→луч2→луч1+луч2→фонарь→луч1+луч2+фонарь→отключить) Так, я понимаю сами лучи и фонарь уже есть? Если да, то в каком это всё виде? Я с оружием никогда не работал, так что особого представления, как эти лучи и фонари работают у меня нет. С иконками и подавно не подскажу. Вроде там всё на альфа-канале завязано, но могу ошибаться. Навскидку нашёл вот такой краткий туториал. Поделиться сообщением Ссылка на сообщение
GardenParadise 0 Опубликовано 27 сентября, 2019 Цитата ...Если да, то в каком это всё виде?... Это типичный оружейный мод типа сборников от Happy Hapy Gekkos ( The Armory 2.5 Final), Master Shifu ( BF4 Assault Pack FNV, R.S.A.), kj666 (Chaotic Sun) и т. п., так что за основу можно взять любой из них или им подобный. У Master Shifu и kj666 в их модах уже есть реализация скриптов активации лазерного целеуказателя, тактического фонаря и прицельной марки, но я очень далёк от понимания скриптового языка и не смогу в разумное время справиться без посторонней помощи. Можно взять за основу их скрипты (если подойдут) и переделать под новые требования, либо написать с нуля. В любом случае нужна помощь грамотного скриптолога. Поделиться сообщением Ссылка на сообщение
Вис691 Автор темы 661 Опубликовано 27 сентября, 2019 15 часов назад, GardenParadise сказал: В любом случае нужна помощь грамотного скриптолога. Помощь бывает разная. Это моя школа, я тут учитель и максимум могу помочь советом или посмотреть на что-то готовое, но, возможно, неработающее. Писать что-то за кого-то я уже не хочу, да и не могу в связи с отсутствием времени. Если где-то уже есть подобный функционал, то предлагаю попытаться разобраться в нём. Хотя чтение чужого кода зачастую бывает непростой задачей, даже если ты в этом что-то понимаешь. Ну уж и грамотным скриптологом я себя точно не назову) Поделиться сообщением Ссылка на сообщение
GardenParadise 0 Опубликовано 28 сентября, 2019 Цитата ...Ну уж и грамотным скриптологом я себя точно не назову... Зато есть связи в сообществе моддеров и возможность потянуть за необходимые ниточки для реализации такого важного для проекта Fallout SFW дополнения. Да, я готов передать все права на мой мод сообществу Falcon-Lair и оказать посильную поддержку в его внедрении в качестве универсальной библиотеки ресурсов, которой смогли бы пользоваться на базовой основе (по типу SFW-Master) все остальные моддеры. Это на самом деле важно, так как кроме огромного ресурса в виде коллекции лучшего из доступного в сети огнестрельного оружия (более 20 Гбайт), мод заменяет всё ванильное (и невыносимо убогое) на качественное и абсолютно адекватное сеттингу. Поэтому надеюсь на всеобщее понимание и посильную поддержку всех небезразличных к проекту Fallout SFW. Поделиться сообщением Ссылка на сообщение
Вис691 Автор темы 661 Опубликовано 27 февраля, 2020 Всем привет. Недавно ко мне обратился AllanMetropol18 с просьбой помочь ему с небольшим скриптом. Не раскрывая подробностей (да-да, кое-что готовится к релизу), скажу лишь, что есть набор предметов (пускай типа хлам) и у одного из НПС есть один из этих предметов в инвентаре. Для того чтобы было интереснее, будем считать, что какой из предметов конкретно попал к НПС, определялось случайным образом. Вопрос был предельно прост - можно ли в определённый момент времени (для простоты будем считать, что по завершению какого-нибудь квеста) передать этот предмет игроку? Т.к. НПС был ванильным, я предположил, что этот предмет добавляется в его инвентарь через какой-то скрипт. И, конечно, моя идея заключалась в том, чтобы найти этот скрипт, найти момент передачи и запомнить, какой из предметов был выбран рандомом. Затем, в нужный момент времени просто передаём наш запомненный предмет игроку. Звучит невероятно просто, не правда ли? Как выяснилось, существовала небольшая проблема - исходники всех скриптов были вырезаны автором мода... Несложно догадаться, что это несколько усложнило задачу. Что же делать. есть ли выход? Предлагаю вашему вниманию финальный фрагмент кода. Естественно, заработало всё не с первого раза, а т.к. тестами в игре занимался не я, то процесс немного затянулся. scn aaaCoolScriptName array_var aItems array_var Entry ref rItem begin GameMode let aItems := NPCRef.GetAllItemRefs 31 ; получить список предметов типа хлам в инвентаре НПС forEach Entry <- aItems ; цикл по всем объектам массива let rItem := Entry["value"] ; получить ref предмета if (rItem.IsInList ItemsList) ; проверить, что предмет есть в списке let rItem := rItem.gbo ; получить базовый объект NPCRef.RemoveItemTarget rItem Player 1 1 ; передать предмет игроку, сбросить владельца break ; выйти из цикла endif loop End В принципе, из комментариев должно быть всё понятно, но давайте всё же кратко пройдёмся по коду. Первым делом мы получаем список всех предметов из инвентаря НПС: let aItems := NPCRef.GetAllItemRefs 31 31 здесь задаёт тип возвращаемых предметов - в нашем случае хлам. Если ничего не указать, то вернётся массив из абсолютно всех предметов, которые есть у НПС. Подробнее про функцию и её параметры тут. Кстати, заметьте, что здесь мы собираем именно ref'ы предметов, а не их базовые объекты. Почему так, станет понятно позднее. Начинаем цикл, вытягиваем ref из массива. Тут всё стандартно. Если кому нужно подробнее, то идите сюда. А вот и причина использования ref'ов: if (rItem.IsInList ItemsList) Дело в том, что на базовых объектах данная функция отказывается работать, о чём можно понять по странице из вики. На самом деле есть альтернатива из плагина NX, которая сработает и с базовым объектом, но это лишняя зависимость, при том не самая популярная. У меня, например, этого плагина нет. А у вас? ItemsList - это form list из всех объектов, из которого и выбирается случайный. В моде он уже существовал, но создать его в случае необходимости несложно. Соответственно, мы проверяем, есть ли текущий предмет из инвентаря в этом списке. Если нет, то переходим к следующему предмету. Если да, то это и есть наш искомый, случайный предмет, который мы ищем. В таком случае мы находим его базовый объект через GBO (GetBaseObject) и передаём игроку: NPCRef.RemoveItemTarget rItem Player 1 1 Да, это JIP, но он-то уж наверняка у всех есть. Да и в моде наверняка идёт, как одно из требований. Однако никто не мешает разделить на 2 команды: NPCRef.removeItem и player.addItem. Тут уже выбирайте сами. После этого из цикла выходим через break - проверять остальные предметы нам не надо. Ну вот в общем-то и всё. Запихните этот скрипт туда. куда нужно и вы восхитительны. Точнее я восхитителен Поделиться сообщением Ссылка на сообщение
YanKoKsy1827 18 Опубликовано 1 марта, 2020 Вот у меня такой вопрос: а где собственно узнавать все команды, переменные, и т.д для скрипта? Возможно, я немного туплю, но в скриптописании я и не шарю (но приходится) Поделиться сообщением Ссылка на сообщение
Вис691 Автор темы 661 Опубликовано 8 марта, 2020 В 02.03.2020 в 00:24, YanKoKsy1827 сказал: Вот у меня такой вопрос: а где собственно узнавать все команды, переменные, и т.д для скрипта? Возможно, я немного туплю, но в скриптописании я и не шарю (но приходится) https://geckwiki.com/index.php?title=Category:Functions 1 Поделиться сообщением Ссылка на сообщение
Glain 0 Опубликовано 11 июня, 2023 Салам пополам господа писцы братства скрипта Тема такая Хочу сделать ключ, который бы запирал/отпирал двери у которых изначально ключ отсутствует. Вопрос такой: Это возможно? (потому что логически можно написать скрипт который бы детектил тригер/скрипт дверей в ячейке мира в которой игрок находится Собирал бы их айди и прописывал бы им Ключ. Но, я тут всю вашу ветку прочитал, и понял, что базовые возможности скриптовой части движка передают привет Собственно закрались сомнения насчет реализации, отсюда и вышестоящий вопрос. Есть два мода связанные с ключами. это читерский в котором при имении ключа в инвентаре игроку добавляется перк в котором просто консольная команда Unlock И более интересный - но не менее бесполезный, позволяющий открывать и запирать двери от которых у тебя есть ключ, и то работает абы как. Например можно открыть и запереть дверь снаружи, но при перемещении в интерьер, он уже пишет что у тебя от этой двери ключа нет, собственно я и не удивлен, потому что айди у двери/триггера другой, поскольку это совсем другая локация. Ну шо, интересная задачка?) Поделиться сообщением Ссылка на сообщение
Вис691 Автор темы 661 Опубликовано 12 июня, 2023 15 часов назад, Glain сказал: Это возможно? Нынче много чего стало возможно. Эта задачка - не исключение. В принципе процесс был уже описан - собрать все двери в локации, прописать им ключ. Подход видится простой: на заход в локацию срабатывает OnCellEnter. Вешаем на этот ивент скрипт, который пройдётся по объектам в ячейке и найдёт двери (например через GetFirstRef) и пропишет им ключ через SetOpenKey. Я бы, конечно, ещё проверял бы, а заперта ли дверь вообще, и уровень замка, чтобы недоступные двери не трогать. Можно ещё и контейнеры докинуть, чтобы совсем чудо-ключ получился. 1 Поделиться сообщением Ссылка на сообщение