Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'setobjectmaterial'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Информационный раздел
    • Новости портала
    • Команда портала
    • Техническая поддержка
    • Предложения по доработке
    • Приватный форум
  • CRMP 0.3е
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Дополнительные скрипты
    • Мануалы/Уроки
    • Ваши сервера
    • Модификации
    • Поиск
    • Файловый архив
    • Другое
  • CRMP 0.3.7
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Плагины
    • Поиск
    • Документация
  • Моделирование
    • Autodesk 3ds Max
    • Zanoza Modeler
  • Торговая площадка
    • Покупка/Продажа
    • Стол заказов
  • Графика
    • Уроки Photoshop
    • Авторские работы
    • Заказы
    • Всё для Adobe Photoshop
  • Другое
    • Обзоры хостингов
    • Флейм

Поиск результатов в...

Поиск результатов, которые содержат...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Найдено: 3 результата

  1. Официальная тема на SA-MP форуме: http://forum.sa-mp.com/showthread.php?t=582490 Всем привет, я не буду подробно объяснять что и для чего это, вся информация есть по ссылке сверху, просто скажу, что я адаптировал Texture Studio под CR-MP 0.3e. Скачать: Texture Studio (CR-MP 0.3e) (1).rar Примечания: Текущая версия TS для CR-MP 0.3e очень нестабильна и имеет куча проблем, со временем я попытаюсь выпустить более стабильную версию. Авторство: Авторы и разработчики Texture Studio: Pottus, Crayder. Разработчик адаптации для CR-MP 0.3e: я (Владимир Сергеенко/JoKeR_2020).
  2. Smolin

    Ретекстур объекта

    Доброго времени суток. В этом примере я расскажу, как сделать ретекстур объектов. Для начала скачиваем программу Map Editor Цель работы: Научиться пользоваться функцией SetObjectMaterial. Прямая ссылка на источник на wiki SetObjectMaterial Переходим к практике. Открываем Map Editor, ставите объект, куда захотите и какой хотите, в моем случае - киоск (ID: 4638). Помечено галочками - что собрался ретекстурить. Текстура в моем случае будет ID: 4442 (гараж). Жмем на киоск 2 раза и откроется окно: Видим Model Textures Где написано Material: ... - индексы у нас их 10, придется подбирать индекс/ы, я уже подобрал - 10 (Material: 10 split: 10 Tex: brusch). Открываем .txd объекта, у которого будем брать текстуру и копируем название текстуры. В моем случае - будет самая первая текстура (gar_wall1) объекта гаража (4442): Для того, чтобы открыть текстуры объекта, скачиваем эту программу TXD Workshop Теперь всё основное у нас есть. Переходим к заключению. Открываем ваш GM (gamemode) и переходим в паблик OnGameModeInit. В любое место этого коллбэка вставляем: new- переменная объекта (назвать можно по-разному) переменная = CreateDynamicObject(4638, -343.51, 433.54, 11.70, 0.00, 0.00, 0.00); - объект киоска SetDynamicObjectMaterial(вставляем переменную, индекс (в моем случае это 10-ый), ид объекта у которого брали текстуру (в моем случае - гараж), "название текстуры гаража (gen_garages)", "название текстуры (в моем случае (gar_wall1)", по умолчанию здесь оставляем значение - 0); Выходит у нас так: new kiosk; kiosk = CreateDynamicObject(4638, -343.51, 433.54, 11.70, 0.00, 0.00, 0.00); SetDynamicObjectMaterial(kiosk, 10, 4442, "gen_garages", "gar_wall1", 0); Наглядный пример работоспособности: На этом всё, Господа, советую почитать сабж от SHOROOP'a - Почему не стоит злоупотре######ть изменением материалов (нюансы SetObjectMaterial) (http://cr-mp.ru/forum/topic/15110-pochemu-ne-stoit-zloupotrebliat-izmeneniem-mat/) P.S: на крышу киоска не обращайте внимание - стоит мод - зима SHOROOP'a. Остальные вопросы, касающиеся этому сабжу - задавайте здесь.
  3. Поскольку в настоящий момент обрели популярность работы с использованием функций замены текстур SetObjectMaterial(), считаю нужным расставить точки над i и оповестить о нескольких нюансах работы этой функции. Для начала - немного теоретической части для общего понимания механизма рендера движком моделей, и начнем с рендера SA без учета мультиплеера. Как многим известно, информация о моделях и их расположении подгружается движком из IDE (Item DEfinition file) и IPL (Item PLacement file) соответственно. Более того, масштабные модели имеют низкополигональную версию - LOD, который отрисовывается раньше основной модели и перестает отрисовываться при достижении нужного радиуса рендера. Соответственно, механика процесса такова: - игрок попал в зону отрисовки LOD: отрисовывается LOD. - игрок из зоны отрисовки LOD переходит в зону основного рендера: LOD выгружается из памяти и в рендере более не участвует до следующего вызова, рендерится основная модель. - игрок из зоны рендера основной модели переходит в зону рендера LOD: основная модель выгружается из памяти, рендерится LOD. - игрок выходит из зоны рендера LOD: LOD выгружается из памяти и в рендере не участвует. Созданные сервером объекты LOD не рендерят - серверу неоткуда брать информацию о нужном LOD. Поэтому схема упрощается: - игрок попал в зону основного рендера: рендерится основная модель. - игрок из зоны рендера основной модели выходит: основная модель выгружается из памяти (учитывая наличие стримера: оригинальная схема модели не выгружает, но жестко лимитирует их количество, выделяя память специально для них). Как можно заметить, без необходимости модель не занимает места в ОЗУ, тем самым экономя ресурсы. Основная проблема SetObjectMaterial (и производных, SetObjectMaterialText, к примеру) - она НЕ ВЫГРУЖАЕТ модель из ОЗУ. Схема рендера получается неполной: - игрок попал в зону основного рендера: рендерится основная модель. - игрок из зоны рендера основной модели выходит: основная модель НЕ ВЫГРУЖАЕТСЯ из памяти, загаживая стек. Стек не бесконечен. В случае SA максимально возможное количество используемой ОЗУ колеблется в районе 1.6ГБ. В случае переполнения стека движок пытается обратиться к участку памяти, доступа к которому у него нет, вследствие чего клиент падает с ошибкой, именуемой в народе "С++". Чрезмерное использование SetObjectMaterial еще больше увеличивает шансы выхода за пределы стека. Посему один небольшой совет: используйте функцию только там, где это действительно необходимо. К слову, корректно эта функция не работает даже на свежем SA:MP 0.3.7. Disclaimer: - использование данного материала без явного разрешения автора запрещено; - использование данного материала без явного указания автора, даже при его явном согласии, запрещено. От автора: я бы предложил закрепить в шапке, но это уже на усмотрение остальных.
×

Важная информация

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