GTA Builder Форум

GTA Vice City => Идеи => Тема начата: ilufir от Март 26, 2017, 04:38:10 pm

Название: Подмена текстур мусора на улицах
Отправлено: ilufir от Март 26, 2017, 04:38:10 pm
Помнится, кто-то на форумах говорил про партиклы такую замечательную вещь, как "партиклы не меняют свою текстуру - что нарисовано, то нарисовано". Так вот, опытным путем я установил - к партиклас мусора на улицах это правило не прменяется. Если менять текстуру в них - текстура меняется на всех обьектах, например, газетах. Так вот - во-первых, есть ли идеи, как это можно применить, и во-вторых, как сделать больше текстур мусора на улицах?
Название: Re: Подмена текстур мусора на улицах
Отправлено: Shagg_E от Март 27, 2017, 12:07:22 am
Если бы было наоборот, то можно было бы менять текстуру на ходу каждую миллисекунду, и, т.к. уже отрендеренных газет это бы не касалось - на улицах можно было бы добиться некоего разнообразия, как уже проделывалось с бандами (http://forum.gtabuilder.ru/index.php?topic=356.msg2295#msg2295).
Но если, как ты пишешь, текстура меняется сразу на всех объектах - то хз...
Название: Re: Подмена текстур мусора на улицах
Отправлено: ilufir от Март 27, 2017, 12:44:53 am
Если бы было наоборот, то можно было бы менять текстуру на ходу каждую миллисекунду, и, т.к. уже отрендеренных газет это бы не касалось - на улицах можно было бы добиться некоего разнообразия, как уже проделывалось с бандами ([url]http://forum.gtabuilder.ru/index.php?topic=356.msg2295#msg2295[/url]).
Но если, как ты пишешь, текстура меняется сразу на всех объектах - то хз...

Ага. Вообще, я попробовал точно так же менять текстуру на ходу у дождя и луж крови. И пришёл к выводу - правило "что отрисовано - то не меняется" применимо лишь к статичным текстурам. А если текстура двигается по экрану - таким образом ее можно разве что анимировать.
Название: Re: Подмена текстур мусора на улицах
Отправлено: xanser от Март 28, 2017, 01:08:14 pm
Приведи пример рабочего кода и сами замещаемые текстуры, от реализации зависят и идеи.
Название: Re: Подмена текстур мусора на улицах
Отправлено: ilufir от Март 28, 2017, 01:48:41 pm
Приведи пример рабочего кода и сами замещаемые текстуры, от реализации зависят и идеи.
Ну я сделал это по-старинке, через CLEO.
Использовал read memory и write memory, из IDA базы брал четырехбайтные адреса RwTexture или CTexture, они взаимозаменямы. Соответственно сначала считывается нужная текстура, затем ставится на другой адрес. Чуть позже напишу простенький пример, заменяющий кровь, например, на газеты, или что-нибудь в этом роде.
Название: Re: Подмена текстур мусора на улицах
Отправлено: xanser от Март 28, 2017, 01:57:37 pm
Видимо это что-то похожее на это http://forum.gtabuilder.ru/index.php?topic=323.msg2069#msg2069 (http://forum.gtabuilder.ru/index.php?topic=323.msg2069#msg2069). Получается действительно что-то связанное с анимацией/покадровой заменой текстур можно сделать, например те же электронные часики / телевизоры и т.д.
Название: Re: Подмена текстур мусора на улицах
Отправлено: ilufir от Март 28, 2017, 04:29:20 pm
Видимо это что-то похожее на это [url]http://forum.gtabuilder.ru/index.php?topic=323.msg2069#msg2069[/url] ([url]http://forum.gtabuilder.ru/index.php?topic=323.msg2069#msg2069[/url]). Получается действительно что-то связанное с анимацией/покадровой заменой текстур можно сделать, например те же электронные часики / телевизоры и т.д.


Нуу... почти. За тем исключением, что таким образом я лишь подменил текстуры партиклов... Так что способ заменить текстуру на статичном объекте еще не найден
Название: Re: Подмена текстур мусора на улицах
Отправлено: DK от Апрель 01, 2017, 12:31:05 pm
Цитировать
"партиклы не меняют свою текстуру - что нарисовано, то нарисовано"
Нету такого правила. По крайней мере, в GTA и Direct3D.
Каждый кадр экран очищается и всё рисуется по новой.

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

Цитировать
как сделать больше текстур мусора на улицах?
Разобрать методы CRubbish, написать для них замену, а там рисовать что захочешь.
Название: Re: Подмена текстур мусора на улицах
Отправлено: DK от Апрель 01, 2017, 06:08:40 pm
С "мусором" всё не совсем так просто.
Функции надо переписывать. Или делать очень грязные хуки. Возможно, увеличить лимит обьектов мусора (с выделением памяти под новый массив, заменой всех ссылок и так далее).
Я детально не смотрел, но, думаю, всё так и работает:
Есть 32 "слота" для обьектов мусора, по 8 на каждый "вид" мусора: gameleaf01_64, gameleaf02_64, newspaper01_64, newspaper02_64.
При этом, если миссия "PamphletMission" (насколько я понял - миссия, где надо разбрасывать газеты по городу; флаг прохождения миссии устанавливается опкодом
(http://i.imgur.com/yx0Uz1p.png)
) не пройдена, то 8 слотов для обьекта мусора "newspaper02_64" используются для обьекта "newspaper01_64".
Т.е. нельзя просто так "добавить" ещё один "тип" мусора - надо либо выделять больше слотов, либо распределять те 32 слота как-то по-другому (и тут уже точно надо будет переписывать методы CRubbish).