|
Как запретить повторное использование умения на объекте?
|
|
| San-Cat |
Дата: Понедельник, 27 Октября 2025, 20:48 | Сообщение # 1 |
|
Котов
Автор темы
Житель пустошей
Сообщений: 4
OffLine
|
Немного экспозиции: Сделал через HOOK_USESKILL сбор материалов с объектов карты. Создал табличку с поддерживаемыми объектами (например, дерево, кукуруза, кости, шины и т.д), создал таблицу собираемых материалов, прикрутил проверки навыков, рандом и все такое прочее. Получился, модуль сбора каких-то материалов для последующего создания из них чего-то в Самоделкине.
Теперь, логично было бы как-то запретить "обыскивать" уже "обысканный" предмет, в этом и состоит задача, для которой я ищу решение. Какие я вижу варианты: 1. Уничтожать обысканный объект. Насколько понимаю из прочтенной документации, это возможно. Но чисто визуально не всегда будет уместно: для срубленного дерева или подобранной шины нормально, а для обысканного газетного автомата не очень. 2. Создать массив структур "Объект-scenery, признак обыска" и менять в нем признак для конкретного объекта. Почитал про массивы, вижу, что есть "array list_as_array(int type)" - правильно ли я понимаю, что он с помощью него можно автоматом составить полный список объектов scenery?
И что думаете про эти два варианта? Может быть, есть еще какие-то идеи?
|
| |
| |
| Mr-Stalin |
Дата: Понедельник, 27 Октября 2025, 23:46 | Сообщение # 2 |
|
Мистер Сталин
Солдат братства
Сообщений: 775
OffLine
|
Цитата San-Cat (  ) Теперь, логично было бы как-то запретить "обыскивать" уже "обысканный" предмет, в этом и состоит задача, для которой я ищу решение. Что значит уже обысканный? - не понимаю.
Ну да ладно, для объекта ставишь флаг, что его уже обыскали - то есть это вариант 2 но супер упрощенная реализация. 
свободные флаги можешь взять/посмотреть в файле define_extra.h
Код /* Object flags for get/set_flags */ с пометкой - может использоваться вашими скриптами
можешь конечно заморочится с массивами - такой безопасный вариант, так как флаги могут быть кем-то заняты ( и мало ли вдруг движку понадобится).
Fallout: sfall Projects Fallout: Mods and Tools
|
| |
| |
| San-Cat |
Дата: Вторник, 28 Октября 2025, 09:26 | Сообщение # 3 |
|
Котов
Автор темы
Житель пустошей
Сообщений: 4
OffLine
|
Цитата Mr-Stalin (  ) Что значит уже обысканный? - не понимаю. Я там опечатался, подразумевался обысканный объект (scenery), а не предмет.
Цитата Mr-Stalin (  ) можешь конечно заморочится с массивами Отсюда, где я теоретизирую, мне видится, что это не очень замороченный вариант - при заходе на карту получить массив объектов, потом перегнать его в двумерный массив объект/флаг, поработать с ним, а после выхода с карты уничтожить. Для несохраняющихся карт (всякие случайные) выглядит работоспособно.
Для карт городов надо, наверное, эти массивы хранить постоянно, иначе вся затея с запретом повторного обыска лишена смысла. Или вообще запретить обыск в городах.
Еще подумал, чем плох первый вариант с удалением объектов - подобным эксплойтом можно будет обойти какие-то специально созданные преграды, например, прорубиться до точки выхода на первой же локации при входе в Храм, минуя испытание и Арройо.
|
| |
| |
| Mr-Stalin |
Дата: Вторник, 28 Октября 2025, 11:22 | Сообщение # 4 |
|
Мистер Сталин
Солдат братства
Сообщений: 775
OffLine
|
Цитата San-Cat (  ) Еще подумал, чем плох первый вариант с удалением объектов - подобным эксплойтом можно будет обойти какие-то специально созданные преграды, например, прорубиться до точки выхода на первой же локации при входе в Храм, минуя испытание и Арройо. Если уничтожаемый обьект блокирует путь, то на его месте создаешь блокиратор пути. Хотя тогда дальше одного дерева не срубишь), и тогда усложнять логику надо будет с установкой блокираторов. Помню в фоонлайне пенек срубленого дерева создавали.
С массивами так, (хз какая там у тебя концепция) создаешь массив и записываешь в него уникальные id объектов, предварительно назначенный обьекту который облутали. Потом просто проверяешь есть id в массиве или нет.
Fallout: sfall Projects Fallout: Mods and Tools
|
| |
| |
| San-Cat |
Дата: Вторник, 28 Октября 2025, 12:08 | Сообщение # 5 |
|
Котов
Автор темы
Житель пустошей
Сообщений: 4
OffLine
|
Цитата Mr-Stalin (  ) С массивами так, (хз какая там у тебя концепция) создаешь массив и записываешь в него уникальные id объектов, предварительно назначенный обьекту который облутали.Потом просто проверяешь есть id в массиве или нет. О! Это круче, чем держать массив всех объектов! Присвоение делается через set_unique_id(ObjectPtr obj)?
Только я не могу найти в документации, как добавить новый элемент в уже существующий массив. Для этого надо его каждый раз пересобирать заново?
|
| |
| |
| Mr-Stalin |
Дата: Вторник, 28 Октября 2025, 17:12 | Сообщение # 6 |
|
Мистер Сталин
Солдат братства
Сообщений: 775
OffLine
|
Цитата San-Cat (  ) set_unique_id(ObjectPtr obj)? Да.
Цитата San-Cat (  ) как добавить новый элемент в уже существующий массив Плохо читаешь. https://nuclear-grot.ucoz.net/Documentation/Arrays.html
Fallout: sfall Projects Fallout: Mods and Tools
|
| |
| |