0x690220 - дисстанция прорисовки, в опциях можно настроить максимум 1.8
0x69022C - это максимальное расстояние до LODов, по умолчанию 300.0
(http://s6.postimg.org/ki35wmyv5/scr001.jpg) (http://s6.postimg.org/5an6ca70h/scr002.jpg)Лучше все-таки кроме обсуждения здесь сделать еще накопительную страницу, где бы все систематизировать,Я так-то думал, что будут выкладывать в виде архивов rar или zip с небольшим описанием. Сектору спасибо за выкладки.
Цвет лазера снайперки LASER.
Не знаю, но может быть кому это пригодиться, изменить сам цвет лазера, не точки текстуры. Ниже дам конкретные адреса:
0AA7: call_function 0x4D92D0 num_params 12 pop 12 0 0 0 0 1 1 1 1 7@ 6@ 5@ 4@ 10@
На самом деле, в оригинале пераметры идут в другую сторону, просто в CLEO почему-то нужно делать задом наперед. Оригинал:Параметры, думаю, такие же.Круто, ну вот и выяснилось, как это настроить! А то я гадал - если текущий вариант настройки(4 единицы и 4 нуля) реагирует на всё, имеющее кол - что же скрывают эти 4 нуля? Оказалось, что фигню: dummy, невидимые объекты, камеры и объекты без кола :D
Нужно просто получить структуру авто и добавить смещение, не нужно вызывать никакой функции. Потом прочитать значение.Я так и сделал для того, чтобы убрать коллизию колес. Но чтобы "заспавнить" оторваное колесо и заставить "исчезнуть" оригинальное - пришлось копошить функции
пришлось копошить функции
В sdk есть же всё это.Ну, мне нужно было в CLEO и я нашел - no problem ;D Кроме этого самого левого заднего колеса, которое вызывает краш..
Только само колесо при этом не появляется. Надо смотреть CAutomobile::Fix. Там есть это, но самому разобрать этот момент не вышло. Надеюсь, что DK подскажет. ;)Так я же раскопал адреса(см. код скрипта). Так же, как колесо скрывается(значение 0), его можно и "вернуть"(1). А еще оно тоже становится видимым при вкл/выкл повтора.
У тебя там смещение неправильное для этого колеса. См. здесь https://sannybuilder.com/forums/viewtopic.php?pid=25844#p25844 (https://sannybuilder.com/forums/viewtopic.php?pid=25844#p25844).За смещение спс(
И нумерация колёс правильно будет 0-3
осталось найти правильный номер этого колеса, как компонента для создания объекта-клонаЕсли я правильно понял, то ты про это:
Если я правильно понял, то ты про это:Ох, shi...!
Теоретически, теперь через неё можно отделять любой компонент(если добавить варианты, помимо 4х колес)Не только теоретически, но и практически.
Оказывается, функция 0x59AAA0 (создающая "клон" отрываемого компонента) возвращает struct этого "клона", что позволяет в дальнейшем, например, взять под управление оторванное колесо!Я же написал уже, что в sdk есть такое дело.
Я же написал уже, что в sdk есть такое дело.Код: C++
CObject* SpawnFlyingComponent(int nodeIndex, unsigned int collisionType);
Почему бы не посмотреть там? Хотя с другой стороны, так не будет приятных открытий, сделанных самостоятельно. ;)
Оказывается, функция 0x59AAA0 (создающая "клон" отрываемого компонента) возвращает struct этого "клона"
Если бы посмотрел в sdk, то увидел бы сразу функция возвращает что-то и что именно или не возвращает.Не думаю, что я что-то увидел бы в sdk, если я не увидел это в idb базе, хотя там всё было под носом и очевидно. Просто на момент, когда я нашел эту функцию, мне не нужно было знать struct колеса, поэтому я не обратил на это внимания, а потом(когда потребовалось) - обратил. Ставить Visual Studio 2017, чтобы поставить sdk, чтобы проделывать те же операции уже в нем - пока смысла не вижу :-\
Ставить Visual Studio 2017, чтобы поставить sdk, чтобы проделывать те же операции уже в нем - пока смысла не вижу :-\Если просто посмотреть какой-либо класс в sdk, то ставить VS не обязательно. Можно посмотреть на github. Например, класс CAutomobile про функцию которого шла речь https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_vc/game_vc/CAutomobile.h (https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_vc/game_vc/CAutomobile.h)
Например, класс CAutomobile про функцию которого шла речь https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_vc/game_vc/CAutomobile.h (https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_vc/game_vc/CAutomobile.h)И как мне поможет это, если там описаний функций нет? :D
Коллизия колеса восстанавливается
...
Только само колесо при этом не появляется.
копошить;D
59 - Щелчок "Нет боеприпасов" (щелчок снайперской винтовки)
60 - Щелчок "Нет боеприпасов" (щелчок гранатомета)
63-69, 71-73, 77-89, 100, 101, 159-162, 168, 169, 179 - "Action" звуки (например, пикапы)
167 - Звук "Таймер"
176, 177 - Тихие щелчки (выключение радио?)
178 - Порыв ветра
184 - Пуля пролетает справа
185 - Пуля пролетает слева
193 - Звук активации детонатора
194 - Звук смены радиостанции
195-198 - Звуки меню
199 - Шум
Другие значения ни к чему не приводят. В коде игры есть лимит 204, так что дальше проверять нет смысла. Пробовал расширить лимит до 65535 - всё равно после 199 ни одного звука не услышал(проверял до 1000).
103 - крик смерти
107 - крик утопления
108 - продолжительный крик ужаса
110 - фраза угрозы кому-либо(иногда нужно толкнуть педа для фразы)
113 - фразы драки(иногда нужно толкнуть педа для фразы)
120 - панический крик
125 - фразы после боя/драки
129 - фразы напарникам("Попал!", "Он мой!", "Я взял его!", "Я вижу его!" и в таком духе)
130 - фразы противнику("Ты окружен!")
131 - фразы напарникам("Я тебя прикрою!")
132 - фразы противнику("Стоять!")
133 - фразы напарникам("Прикройте")
134 - фразы прохожим
135 - фразы напарникам
138 - фразы начала боя/драки
139 - стихие крики потери сознания/смерти
142 - раздраженные фразы("Не беси меня!", "Отвали!" и т.п.)
Shagg_E, структура, скорее всего, идентична той, что в GTA3.Да, скорее всего. Я доковырял - вроде совпадает
https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_III/game_III/CFire.h
CPointLights ([url]http://forum.gtabuilder.ru/index.php?topic=200.msg2183#msg2183[/url]):
0x9751B0 - количество PointLights
0x7E4FE0 - начало пула PointLights (максимум - 32 элемента)
каждый PointLight состоит из 44(0x2С) байт.
Структура совпадает с GTA3 ([url]https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_III/game_III/CPointLights.h[/url]), я просто добавлю пояснения.
0x00 [float] - x coord
0x04 [float] - y coord
0x08 [float] - z coord
0x0С [float] - x direction
0x10 [float] - y direction
0x14 [float] - z direction
0x18 [float] - дальность света
0x1С [float] - red(0.0-1.0)
0x20 [float] - green(0.0-1.0)
0x24 [float] - blue(0.0-1.0)
0x28 [byte] - тип света(0 - светит во все стороны из центра, 1 - фары, светят строго по вектору, 3-4 - хз, не освещают динамику, скорее всего нужны для источников, которые кроме 2dfx никак не проявляют себя)
0x29 [byte] - тип "дымки" вокруг света(0 - нет "дымки", 1 и 2 - есть)
0x2A [bool] - генерация дополнительной тени авто игрока вблизи тени(0 - нет, 1 - да)
0x2B [byte] - не используется(пустышка)
Продолжаю разбор каждого элемента, пост будет обновляться.
Где то еще должен быть пункт который добавляет к источнику lens-flareЭто уже в 2dfx. PointLight - это чисто сам свет от источника. Т.е. то, что освещает педов, авто, катсценовые и динамические объекты.
Недавние находки:Код: Text
0A8C: write_memory 0x488F94 size 5 value 0x90 virtual_protect 1 // Disable traffic lights 0A8C: write_memory 0x488FCC size 5 value 0x90 virtual_protect 1 // Disable traffic lights 0A8C: write_memory 0x488FE3 size 5 value 0x90 virtual_protect 1 // Disable traffic lights 0A8C: write_memory 0x48901C size 5 value 0x90 virtual_protect 1 // Disable traffic lights 0A8C: write_memory 0xA10ADC size 1 value 1 virtual_protect 1 // Make all traffic lights green 0A8C: write_memory 0x54F429 size 5 value 0x90 virtual_protect 1 // Disable plane trails 0A8C: write_memory 0x4ABD45 size 4617 value 0x90 virtual_protect 1 // Disable cheat codes
очень полезные находки, можно подробные объяснения их.Первые 5 строк отключают свет светофоров и делают так, чтобы машины стали игнорировать эти светофоры.
Отключение прицела/атаки у игрока:Код: TextВключение обратно:
0AC8: 0@ = allocate_memory_size 1898 0AB1: call_scm_func @COPY_MEMORY 4 0x53497B 0@ 1898 2 // CopyFrom, CopyTo, Size, Step wait 0 // IMPORTANT WAIT!!! 0A8C: write_memory 0x53497B size 1898 value 0x90 virtual_protect 1 // Disable Player Aim and AttackКод: TextSCM-функция COPY_MEMORY:
0AB1: call_scm_func @COPY_MEMORY 4 0@ 0x53497B 1898 2 // CopyFrom, CopyTo, Size, Step 0AC9: free_allocated_memory 0@Код: Text
:COPY_MEMORY 0006: 6@ = 0 :COPY_MEMORY_CYCLE 001D: 2@ > 6@ jf @COPY_MEMORY_RETURN 0085: 4@ = 0@ 005A: 4@ += 6@ 0A8D: 5@ = read_memory 4@ size 3@ virtual_protect 1 0085: 4@ = 1@ 005A: 4@ += 6@ 0A8C: write_memory 4@ size 3@ value 5@ virtual_protect 1 005A: 6@ += 3@ jump @COPY_MEMORY_CYCLE :COPY_MEMORY_RETURN 0AB2: ret 0
Суть в чем: чтобы заблочить возможность целиться и атаковать, нужно занопить по адресу 0x53497B 1898 байт. Но чтобы потом вернуть всё обатно - нужно предварительно скопировать оригинальные 1898 байт в свежесозданный буфер, что скрипт и делает.
Где это может пригодиться? Ну например - в некоторых интерьерах или стелс-миссиях, где игрок не должен будет никого атаковать.
тоесть если мы будем нажимать кнопку огонь (ЛКМ) то игрок не будет выполнять никаких действий?Да. Будто и нет такой механики. При этом, в отличии от отключения всех драк(ранее в этой теме) - педы не теряют возможности атаковать. Да и игрок под управлением ИИ сможет атаковать.
Я подумал, типа совета, ведь не обязательно нопить всю функцию, достаточно завершить ее также, как она завершается в конце и все. (Совет Шэггги)Не знал) Спасибо, надо будет попробовать, как будет время. Но вообще я нуб в подобных операциях и понимании asm кода, так что ничего удивительного, что сделал так колхозно.
Возможно ли сделать так, например записать ночные адреса памяти, и заменить на дневные, чтобы убрать свет и не возиться в файлах игры?Время действие timeobj объектов прописано в ide. Игра "не знает", какие из этих объектов дневные, а какие - ночные. Она просто включает/выключает их в зависимости от времени, которое указано в ide.
тоесть если мы будем нажимать кнопку огонь (ЛКМ) то игрок не будет выполнять никаких действий?Да. Будто и нет такой механики. При этом, в отличии от отключения всех драк(ранее в этой теме) - педы не теряют возможности атаковать. Да и игрок под управлением ИИ сможет атаковать.
Т.е. выключается только сама привязка контроллера к атакам.
а не подскажешь пожалуйста участок кода который отвечает за посадку игрока в Авто когда он нажимает FПока это не разбирал, к сожалению. Ты есть на Discord сервере SDK? Там могут помочь найти этот участок.
а не подскажешь пожалуйста участок кода который отвечает за посадку игрока в Авто когда он нажимает FПока это не разбирал, к сожалению. Ты есть на Discord сервере SDK? Там могут помочь найти этот участок.
пользуюсь только ВКЖаль. В Дискорде есть много спецов. Целые группы, полные опытными модмейкерами.
05DF: write_memory 0x69A1D8 size 4 value 150.0 virtual_protect 1 // LOD людей и машин(70.0 default)
05DF: write_memory 0x687138 size 4 value 150.0 virtual_protect 1 // Удаляет транспорт, когда игрок повёрнут спиной к машине(40.0 default)
05DF: write_memory 0x6871F8 size 4 value 150.0 virtual_protect 1 // Удаляет транспорт, в зоне видимости игрока(120.0 default)
05DF: write_memory 0x687200 size 4 value 150.0 virtual_protect 1 // Удаляет транспорт, когда игрок смотрит под ноги(70.0 default)
Тогда не обратил внимание, но сейчас заметил: с этими адресами есть нюанс. Если у всех выставить одинаковое значение - могут возникать ситуации, когда транспорт будет появляться и сразу же исчезать, так что лучше, чтобы первое значение было меньше остальных. Т.е. либо его уменьшить, либо остальные увеличить (хотя бы на 10 юнитов, но разница быть должна).Код: [Выделить]05DF: write_memory 0x69A1D8 size 4 value 150.0 virtual_protect 1 // LOD людей и машин(70.0 default)
05DF: write_memory 0x687138 size 4 value 150.0 virtual_protect 1 // Удаляет транспорт, когда игрок повёрнут спиной к машине(40.0 default)
05DF: write_memory 0x6871F8 size 4 value 150.0 virtual_protect 1 // Удаляет транспорт, в зоне видимости игрока(120.0 default)
05DF: write_memory 0x687200 size 4 value 150.0 virtual_protect 1 // Удаляет транспорт, когда игрок смотрит под ноги(70.0 default)
Не знаю может уже кто это знает, но на всякий случай скину сюда.
Нашел способ отключения короны и света практически у всех пикапов.
Прошерстил функцию CPickups::DoPickUpEffects в IDA.
Эти три адреса влияют на размер короны:
0x688308 float
0x688334 float
0x688300 float
Пишем в них 0.0 для отключения короны.
Далее адреса с байтовым значением влияют на свет от некоторых пикапов.
По умолчанию значения в адресах 1. Для отключения света пишем в них 0.
0x43F21F BYTE - отключает свет у пикапа сохранения.
0x43F14F BYTE - отключает свет у пикапа взятки.
0x43F1C1 BYTE - отключает свет у пикапа недоступной недвижимости.
0x43F1DF BYTE - отключает свет у пикапа wMIDBigdollar (пикап вырученных с недвижимости денег?).
0x43f243 BYTE - отключает свет у пикапа одежды.
Эти адреса вроде как тоже отключают свет (но толком не понял где именно) :
0x43f1ac BYTE. ?
0x43F17A BYTE. ?
0x43F11C BYTE. ?
https://sun9-13.userapi.com/impf/wF6081-x17ArfRiNJtBQULTTbfOF2jtu7JQkOA/nmdA8NL0Qz4.jpg?size=1280x1024&quality=96&sign=79e977ad43945502551d7c91f0326d73&type=album
https://sun9-20.userapi.com/impf/RYV5x2lHZG7RgvuWcVGTLciw2fs_fmpP7uJFgw/v7E_uOrX9ag.jpg?size=1280x1024&quality=96&sign=9cea2049f7c8a42af5bd5f699ff544cd&type=album
кто нибуть знает адресс памяти который отвечает за дистанцию отрисовки педа созданного скриптом она равна примерно 168,0Честно говоря, до твоего сообщения я понятия не имел, что у созданных скриптом педов какие-то другие дистанции прорисовки :D