Автор Тема: Подмена текстур мусора на улицах  (Прочитано 4053 раз)

Оффлайн ilufir

  • Прохожий
  • *
  • Сообщений: 73
  • Репутация: +2/-0
  • Я пытался
    • Просмотр профиля
Подмена текстур мусора на улицах
« : Март 26, 2017, 04:38:10 pm »
Помнится, кто-то на форумах говорил про партиклы такую замечательную вещь, как "партиклы не меняют свою текстуру - что нарисовано, то нарисовано". Так вот, опытным путем я установил - к партиклас мусора на улицах это правило не прменяется. Если менять текстуру в них - текстура меняется на всех обьектах, например, газетах. Так вот - во-первых, есть ли идеи, как это можно применить, и во-вторых, как сделать больше текстур мусора на улицах?

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Подмена текстур мусора на улицах
« Ответ #1 : Март 27, 2017, 12:07:22 am »
Если бы было наоборот, то можно было бы менять текстуру на ходу каждую миллисекунду, и, т.к. уже отрендеренных газет это бы не касалось - на улицах можно было бы добиться некоего разнообразия, как уже проделывалось с бандами.
Но если, как ты пишешь, текстура меняется сразу на всех объектах - то хз...

Оффлайн ilufir

  • Прохожий
  • *
  • Сообщений: 73
  • Репутация: +2/-0
  • Я пытался
    • Просмотр профиля
Re: Подмена текстур мусора на улицах
« Ответ #2 : Март 27, 2017, 12:44:53 am »
Если бы было наоборот, то можно было бы менять текстуру на ходу каждую миллисекунду, и, т.к. уже отрендеренных газет это бы не касалось - на улицах можно было бы добиться некоего разнообразия, как уже проделывалось с бандами.
Но если, как ты пишешь, текстура меняется сразу на всех объектах - то хз...

Ага. Вообще, я попробовал точно так же менять текстуру на ходу у дождя и луж крови. И пришёл к выводу - правило "что отрисовано - то не меняется" применимо лишь к статичным текстурам. А если текстура двигается по экрану - таким образом ее можно разве что анимировать.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Подмена текстур мусора на улицах
« Ответ #3 : Март 28, 2017, 01:08:14 pm »
Приведи пример рабочего кода и сами замещаемые текстуры, от реализации зависят и идеи.

Оффлайн ilufir

  • Прохожий
  • *
  • Сообщений: 73
  • Репутация: +2/-0
  • Я пытался
    • Просмотр профиля
Re: Подмена текстур мусора на улицах
« Ответ #4 : Март 28, 2017, 01:48:41 pm »
Приведи пример рабочего кода и сами замещаемые текстуры, от реализации зависят и идеи.
Ну я сделал это по-старинке, через CLEO.
Использовал read memory и write memory, из IDA базы брал четырехбайтные адреса RwTexture или CTexture, они взаимозаменямы. Соответственно сначала считывается нужная текстура, затем ставится на другой адрес. Чуть позже напишу простенький пример, заменяющий кровь, например, на газеты, или что-нибудь в этом роде.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Подмена текстур мусора на улицах
« Ответ #5 : Март 28, 2017, 01:57:37 pm »
Видимо это что-то похожее на это http://forum.gtabuilder.ru/index.php?topic=323.msg2069#msg2069. Получается действительно что-то связанное с анимацией/покадровой заменой текстур можно сделать, например те же электронные часики / телевизоры и т.д.

Оффлайн ilufir

  • Прохожий
  • *
  • Сообщений: 73
  • Репутация: +2/-0
  • Я пытался
    • Просмотр профиля
Re: Подмена текстур мусора на улицах
« Ответ #6 : Март 28, 2017, 04:29:20 pm »
Видимо это что-то похожее на это http://forum.gtabuilder.ru/index.php?topic=323.msg2069#msg2069. Получается действительно что-то связанное с анимацией/покадровой заменой текстур можно сделать, например те же электронные часики / телевизоры и т.д.


Нуу... почти. За тем исключением, что таким образом я лишь подменил текстуры партиклов... Так что способ заменить текстуру на статичном объекте еще не найден

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Подмена текстур мусора на улицах
« Ответ #7 : Апрель 01, 2017, 12:31:05 pm »
Цитировать
"партиклы не меняют свою текстуру - что нарисовано, то нарисовано"
Нету такого правила. По крайней мере, в GTA и Direct3D.
Каждый кадр экран очищается и всё рисуется по новой.

И что вообще понимать под "партиклами"? Если это то, что отрисовано через игровую систему эффектов (частиц) - то мусор это не "партикл".
Оно рисуется в отдельной процедуре. Смотри в базе класс CRubbish.

Цитировать
как сделать больше текстур мусора на улицах?
Разобрать методы CRubbish, написать для них замену, а там рисовать что захочешь.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Подмена текстур мусора на улицах
« Ответ #8 : Апрель 01, 2017, 06:08:40 pm »
С "мусором" всё не совсем так просто.
Функции надо переписывать. Или делать очень грязные хуки. Возможно, увеличить лимит обьектов мусора (с выделением памяти под новый массив, заменой всех ссылок и так далее).
Я детально не смотрел, но, думаю, всё так и работает:
Есть 32 "слота" для обьектов мусора, по 8 на каждый "вид" мусора: gameleaf01_64, gameleaf02_64, newspaper01_64, newspaper02_64.
При этом, если миссия "PamphletMission" (насколько я понял - миссия, где надо разбрасывать газеты по городу; флаг прохождения миссии устанавливается опкодом

) не пройдена, то 8 слотов для обьекта мусора "newspaper02_64" используются для обьекта "newspaper01_64".
Т.е. нельзя просто так "добавить" ещё один "тип" мусора - надо либо выделять больше слотов, либо распределять те 32 слота как-то по-другому (и тут уже точно надо будет переписывать методы CRubbish).
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv