[ARZ] API для работы с моделями из новых аттачей

SR_team

like pancake
Автор темы
BH Team
4,803
6,475
В начале этого (2024) года, на аризоне появилась новая система загрузки моделей для аттачей. Нужна она что бы не разруливать конфликты FLA и SAMP. Данная система предоставляет альтернативные id для создания объектов.

Объекты прописываются в json файле arizona/NamedModels.json.
Загрузить и использовать модели из своего кода можно воспользовавшись функциями экспортируемыми из vorbisFile.dll. Объявление функций приложено ниже в аттаче.

is_simple_model_existsПроверяет, что модель с данным id прописана в json
get_simple_models_countРазмер пула моделей (для перебора всех). В пуле могут быть пробелы!
request_simple_model_loadАсинхронный запрос на загрузку модели. После него надо подождать, пока модель загрузится
load_simple_modelЗагрузка модели с блокировкой основного потока. Ждать загрузки не надо, но будет микрофриз, как с самповскими объектами
unload_simple_modelУдаление модели
get_simple_modelПолучение указателя на CBaseModelInfo модели (вернет NULL, если модель еще не загружена)
get_simple_model_infoПолучение информации о модели (используемые DFF, TXD, etc...)
find_simple_models_by_nameПоиск id'ов по названию DFF. (например можно найти все ретекстуры часов, использующие общую модель)

Алсо, по загрузке моделей. Под капотом все модели shared_ptr, и запросы на загрузку не теряются. Соответственно, после первого запроса на загрузку, модель 100% загрузится и повторять запрос не надо, если вы не вызывали выгрузку модели. Т.к. shared_ptr не отдается наружу (из-за возможных различий в ABI), то его счетчик инткерминтируется/декриминтируется при запросах на загрузку/выгрузку моделей.
 

Вложения

  • SimpleModelLoaderAPI.zip
    1.4 KB · Просмотры: 60

Lance_Sterling

Известный
959
337
круто, модель я загрузил, а как создать теперь объект? айди отличаются в списке и в игре
1727720516741.png

1727720595485.png

подгружаю модель, возвращает true
эмулирую аттач этого объекта
1727720552885.png

чота нихуя не получается, мне лень отслеживать неизвестные рпц/пакеты, чо делать, есть функции?

@SR_team
 

SR_team

like pancake
Автор темы
BH Team
4,803
6,475
круто, модель я загрузил, а как создать теперь объект? айди отличаются в списке и в игре
Посмотреть вложение 253189
Посмотреть вложение 253191
подгружаю модель, возвращает true
эмулирую аттач этого объекта
Посмотреть вложение 253190
чота нихуя не получается, мне лень отслеживать неизвестные рпц/пакеты, чо делать, есть функции?

@SR_team
На сайте серверные id'ы. Данное API предоставляет тебе доступ к CBaseModelInfo модели. Через него например можно создать кламп/атомик вызвав функцию CBaseModelInfo::CreateInstance. И уже кламп/атомик можно рендерить
 
  • Нравится
Реакции: Lance_Sterling