Изменение параметров корон
|
|
DK22Pac | Дата: Суббота, 06.08.2011, 15:16 | Сообщение # 1 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Из ничего вывожу всё... Начал исследования по коронам. dword_C3E000 --> Старт массива RwTexture*, текстур корон. В CCoronas_addCorona, в отличии от GTA III, RwTexture* не передаётся как параметр. Вместо него передаётся "тип" короны. Преобразование "типа" в RwTexture* { movzx edx, [esp+arg_24] mov eax, dword_C3E000[edx*4] mov dword ptr [esp+arg_24], eax } arg_24 - параметр "тип", esp - старт стека. Как всё просто, гы) sub_6FC180 --> FillCoronaStruct
Стек процедуры
arg_8 --> red arg_C --> green arg_10 --> blue arg_14 --> alpha arg_1C --> radius arg_20 --> far_clip arg_24 --> corona_type, влияет на RwTexture* arg_44 - значение, которое влияет на fade_status (0/255). Если arg_44 > 0, то fade_status равен 255, иначе - 0.
Структура CCoronas (привожу адресса первой структуры , потом переведу в локальные оффсеты)
0xC3E058 float point.X 0xC3E05C float point.Y 0xC3E060 float point.Z 0xC3E084 byte red 0xC3E085 byte green 0xC3E086 byte blue 0xC3E087 byte alpha 0xC3E088 byte fade_status (0/255)
Сообщение отредактировал DK22Pac - Суббота, 06.08.2011, 18:55 |
|
| |
d88 | Дата: Вторник, 09.08.2011, 10:18 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| DK22Pac, так здесь можно сделать что-то, чего нельзя сделать обычными кодами?
|
|
| |
DK22Pac | Дата: Вторник, 09.08.2011, 13:50 | Сообщение # 3 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Да, можно. Например, можно использовать свои текстуры для корон. Обновление ))) 0x6FC5A0 void CCoronas__DoSunAndMoon (void) Процедура занимается созданием игровых солнца и луны
Сообщение отредактировал DK22Pac - Вторник, 09.08.2011, 14:58 |
|
| |
d88 | Дата: Вторник, 09.08.2011, 16:38 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Ну Луна и так и была в списке, а можно какие-то новые формы создать?
|
|
| |
DK22Pac | Дата: Среда, 10.08.2011, 03:07 | Сообщение # 5 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Да что угодно можно. Code {$CLEO .cs} wait 500 0390: load_txd_dictionary 'load0uk' 038F: load_texture "load0uk" as 10 while not player.Defined(0) 003D: end 04C4: store_coords_to 0@ 1@ 2@ from_actor $player_actor with_offset 3.0 3.0 2.0 0AC7: 3@ = var 0@ offset 0A9F: 4@ = current_thread_pointer 0A8D: 5@ = read_memory 0xA94B8C size 4 virtual_protect 0 while true 0AA5: call 0x6FC180 21 21 1 0 0x41700000 0 0x3FC00000 0 0 0 0 0 0 5@ 0x43160000 1.0 3@ 255 255 255 255 0 4@ 003D: end Добавлено (10.08.2011, 03:07) ---------------------------------------------
Quote (DK22Pac) 0x6FC5A0 void CCoronas__DoSunAndMoon (void) Отключил эту фигню, солнце и луна всё ещё присутствуют. PS Поменял интенсивность и тип корон, которые создаются для задних огней авто:
Сообщение отредактировал DK22Pac - Вторник, 09.08.2011, 18:26 |
|
| |
d88 | Дата: Среда, 10.08.2011, 09:49 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Quote (DK22Pac) Да что угодно можно. Не, а вот те которые светятся – есть четыре формы: шар, шероховатый, удлинённый в ширину и кольцо. А можно создать новую форму, например сосульку?
|
|
| |
DK22Pac | Дата: Среда, 10.08.2011, 12:10 | Сообщение # 7 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| По-моему, ты всё неправильно воспринимаешь. Корона - это просто текстура, "висящая" в 3д-пространтстве.
|
|
| |
d88 | Дата: Среда, 10.08.2011, 17:09 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Quote (DK22Pac) По-моему, ты всё неправильно воспринимаешь. Корона - это просто текстура, "висящая" в 3д-пространтстве. Ну да, но какая тогда текстура у тех которые я назвал? Ведь они ещё и светятся, но не так как Луна.
|
|
| |
DK22Pac | Дата: Пятница, 22.06.2012, 13:38 | Сообщение # 9 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Quote (d88) Ну да, но какая тогда текстура у тех которые я назвал? Ведь они ещё и светятся, но не так как Луна. Их можно найти в particle.txd: coronastar coronaringb coronareflect coronamoon coronaheadlightline Quote (d88) Ведь они ещё и светятся, но не так как Луна. Другие текстуры тоже должны светиться, по-моему, чем "белее" цвет, - тем ярче.
Добавлено (25.09.2011, 20:43) --------------------------------------------- 0x6FC663 указатель на текстуру солнца 0x6FC6EF указатель на текстуру солнца №2 Для солнца есть 2 короны - большая и маленькая. word_B7C4D6 цвет солнца, R ? word_B7C4D8 цвет солнца, G ? word_B7C4DA цвет солнца, B ? dword_6FC731 альфа ? dword_6FC6A6 альфа №2 ?
Добавлено (25.09.2011, 20:52) --------------------------------------------- MTA: 0xC813E0 fWindSpeedX 0xC813E4 fWindSpeedY 0xC813E8 fWindSpeedZ 0xB7C4F0 fFarClipDistance 0xB7C4F4 fFogDistance 0xB7C4D0 ucSunCoreR 0xB7C4D2 ucSunCoreG 0xB7C4D4 ucSunCoreB 0xB7C4D6 ucSunCoronaR 0xB7C4D8 ucSunCoronaG 0xB7C4DA ucSunCoronaB
Добавлено (25.09.2011, 21:04) --------------------------------------------- 0x6FC5A0 void CCoronas__DrawSun (void)
Добавлено (22.06.2012, 13:38) --------------------------------------------- Если корона с таким ID уже существует, то новая не будет создана, а старая - удалена? Code for(j = 0; j < 64; j++) { if(Coronas[j].uniqueID == ID ) break; } if ( j != 64 ) { if(!Coronas[j].FadeState && !alpha2 ) { Coronas[j].uniqueID = 0; gNumCoronas = gNumCoronas - 1; return; } goto LABEL_30; }
Сообщение отредактировал DK22Pac - Пятница, 22.06.2012, 13:38 |
|
| |
Den_spb | Дата: Пятница, 22.06.2012, 16:31 | Сообщение # 10 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Quote (DK22Pac) Если корона с таким ID уже существует, то новая не будет создана, а старая - удалена? Новая будет создана, а старая будет удалена (судя по всему структура новой короны пишется на месте старой).
|
|
| |
DK22Pac | Дата: Вторник, 26.06.2012, 23:43 | Сообщение # 11 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Параметры для 0x6FC180 void __cdecl CCoronas__registerCoronaByTexture
int ID CEntity *entity char red char green char blue char alpha RwV3D *pos float radius float farClip RwTexture *texture char nFlareType boolean enableReflection boolean checkObstacles // stored as flag to CCoronas.flags1 - Если корона за каким-то обьектом, она не будет рисоваться (например - дерево) char notUsed // Вероятно, это был какой-то флаг. Использовалось для короны лазерной точки. float normalAngle boolean longDistance // Корону видно, если отойти на 35 метров (если ближе - то не видно). Применять только для корон со статической позицией. float nearClip boolean flashWhileFading // Корона будет мигать при затухании float fadeSpeed boolean onlyFromBelow // stored as flag to CCoronas.flags2 - Корону видно только снизу char flags2 // stored as flag to CCoronas.flags2 - Используется при создании корон мигалок
Сочетание флагов: Code if (flashWhileFading && onlyFromBelow && camPos.z > coronaPos.z) { Корона будет мигать }
Сообщение отредактировал DK22Pac - Четверг, 28.06.2012, 01:04 |
|
| |
Den_spb | Дата: Среда, 27.06.2012, 04:35 | Сообщение # 12 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Хорошо, только 5-й параметр снизу это не минимальное расстояние видимости, а максимальная толщина объекта, сквозь который корона будет видна.
|
|
| |
DK22Pac | Дата: Среда, 27.06.2012, 13:25 | Сообщение # 13 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Нет, это всё же nearClip, я проверял.
|
|
| |
Den_spb | Дата: Среда, 27.06.2012, 18:37 | Сообщение # 14 |
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
| Действительно, если расстояние от камеры до центра короны меньше, чем значение параметра, то короны не видно. Но на проникающую способность этот параметр тоже влияет. Вот как выглядят поворотники при значениях параметра 0.01, 0.1, 1.0:
Видно, что если толщина объекта превышает указанную величину, то соответствующая часть короны не отображается. Схематично это выглядит так:
|
|
| |
DK22Pac | Дата: Четверг, 28.06.2012, 01:09 | Сообщение # 15 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Спасибо, буду знать. Остался только один неизвестный параметр.
|
|
| |