Как запретить повторное использование умения на объекте? - Nuclear Grot: Форум
Информация о новых релизах
📡 29.09.2025 - Вышел новый релиз sfall версии 5.1.3.0.


🔥 Новые сообщенияОбновленные темы 🔎 Поиск по форуму
  • Страница 1 из 1
  • 1
Как запретить повторное использование умения на объекте?
San-Cat Дата: Понедельник, 27 Октября 2025, 20:48 | Сообщение # 1
Котов
Автор темы
Житель пустошей
Сообщений: 4
Награды: 0
OffLine
Немного экспозиции:
Сделал через HOOK_USESKILL сбор материалов с объектов карты. Создал табличку с поддерживаемыми объектами (например, дерево, кукуруза, кости, шины и т.д), создал таблицу собираемых материалов, прикрутил проверки навыков, рандом и все такое прочее. Получился, модуль сбора каких-то материалов для последующего создания из них чего-то в Самоделкине.

Теперь, логично было бы как-то запретить "обыскивать" уже "обысканный" предмет, в этом и состоит задача, для которой я ищу решение.
Какие я вижу варианты:
1. Уничтожать обысканный объект.  Насколько понимаю из прочтенной документации, это возможно. Но чисто визуально не всегда будет уместно: для срубленного дерева или подобранной шины нормально, а для обысканного газетного автомата не очень.
2. Создать массив структур "Объект-scenery, признак обыска" и менять в нем признак для конкретного объекта. Почитал про массивы, вижу, что есть "array list_as_array(int type)" - правильно ли я понимаю, что он с помощью него можно автоматом составить полный список объектов scenery?

И что думаете про эти два варианта? Может быть, есть еще какие-то идеи?
 
Mr-Stalin Дата: Понедельник, 27 Октября 2025, 23:46 | Сообщение # 2
Мистер Сталин
Солдат братства
Сообщений: 775
Награды: 39
OffLine
Цитата San-Cat ()
Теперь, логично было бы как-то запретить "обыскивать" уже "обысканный" предмет, в этом и состоит задача, для которой я ищу решение.
Что значит уже обысканный? - не понимаю.

Ну да ладно, для объекта ставишь флаг, что его уже обыскали - то есть это вариант 2 но супер упрощенная реализация. smile

свободные флаги можешь взять/посмотреть в файле define_extra.h
Код
/* Object flags for get/set_flags */
с пометкой - может использоваться вашими скриптами

можешь конечно заморочится с массивами - такой безопасный вариант, так как флаги могут быть кем-то заняты ( и мало ли вдруг движку понадобится).

Fallout: sfall Projects
Fallout: Mods and Tools
 
San-Cat Дата: Вторник, 28 Октября 2025, 09:26 | Сообщение # 3
Котов
Автор темы
Житель пустошей
Сообщений: 4
Награды: 0
OffLine
Цитата Mr-Stalin ()
Что значит уже обысканный? - не понимаю.
Я там опечатался, подразумевался обысканный объект (scenery), а не предмет.

Цитата Mr-Stalin ()
можешь конечно заморочится с массивами
Отсюда, где я теоретизирую, мне видится, что это не очень замороченный вариант - при заходе на карту получить массив объектов, потом перегнать его в двумерный массив объект/флаг, поработать с ним, а после выхода с карты уничтожить. Для несохраняющихся карт (всякие случайные) выглядит работоспособно.

Для карт городов надо, наверное, эти массивы хранить постоянно, иначе вся затея с запретом повторного обыска лишена смысла. Или вообще запретить обыск в городах.

Еще подумал, чем плох первый вариант с удалением объектов - подобным эксплойтом можно будет обойти какие-то специально созданные преграды, например, прорубиться до точки выхода на первой же локации при входе в Храм, минуя испытание и Арройо.
 
Mr-Stalin Дата: Вторник, 28 Октября 2025, 11:22 | Сообщение # 4
Мистер Сталин
Солдат братства
Сообщений: 775
Награды: 39
OffLine
Цитата San-Cat ()
Еще подумал, чем плох первый вариант с удалением объектов - подобным эксплойтом можно будет обойти какие-то специально созданные преграды, например, прорубиться до точки выхода на первой же локации при входе в Храм, минуя испытание и Арройо.
Если уничтожаемый обьект блокирует путь, то на его месте создаешь блокиратор пути. Хотя тогда дальше одного дерева не срубишь),  и тогда усложнять логику надо будет с установкой блокираторов.
Помню в фоонлайне пенек срубленого дерева создавали.

С массивами так, (хз какая там у тебя концепция) создаешь массив и записываешь в него уникальные id объектов, предварительно назначенный обьекту который облутали.
Потом просто проверяешь есть id в массиве или нет.

Fallout: sfall Projects
Fallout: Mods and Tools
 
San-Cat Дата: Вторник, 28 Октября 2025, 12:08 | Сообщение # 5
Котов
Автор темы
Житель пустошей
Сообщений: 4
Награды: 0
OffLine
Цитата Mr-Stalin ()
С массивами так, (хз какая там у тебя концепция) создаешь массив и записываешь в него уникальные id объектов, предварительно назначенный обьекту который облутали.Потом просто проверяешь есть id в массиве или нет.
О! Это круче, чем держать массив всех объектов! Присвоение делается через set_unique_id(ObjectPtr obj)?

Только я не могу найти в документации, как добавить новый элемент в уже существующий массив. Для этого надо его каждый раз пересобирать заново?
 
Mr-Stalin Дата: Вторник, 28 Октября 2025, 17:12 | Сообщение # 6
Мистер Сталин
Солдат братства
Сообщений: 775
Награды: 39
OffLine
Цитата San-Cat ()
set_unique_id(ObjectPtr obj)?
Да.

Цитата San-Cat ()
как добавить новый элемент в уже существующий массив
Плохо читаешь.
https://nuclear-grot.ucoz.net/Documentation/Arrays.html
Код
array [index]= ...


Fallout: sfall Projects
Fallout: Mods and Tools
 
  • Страница 1 из 1
  • 1
Поиск: