Четверг, 12.12.2024, 02:48
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Rockets Creating | Создание Ракет
DK22PacДата: Среда, 14.09.2011, 21:34 | Сообщение # 1
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Переношу своё соообщение сюда, здесь будем обсуждать - как запускать ракеты.

Code
0x737C80 _?LaunchSamRocket

В исходниках MTA эта функция называется AddProjectile. Вот её описание на C++.
Code
bool CPedSA::AddProjectile ( eWeaponType eWeapon, CVector vecOrigin, float fForce, CVector * target, CEntity * targetEntity )
{
           return ((CProjectileInfoSA*)pGame->GetProjectileInfo())->AddProjectile ( (CEntitySA*)this, eWeapon, vecOrigin, fForce, target, targetEntity );
}

Осталось только разобрать параметры.
eWeaponType eWeapon - тип оружия? Не знаю что это, возможно, тип ракеты?
CVector vecOrigin - точка создания?
float fForce - Мощность (сила?), скорость?
CVector * target - указатель на конечную точку? Возможно, просто единичный вектор (направление полёта)?
CEntity * targetEntity - указатель на педа/автомобиль (для тепловых ракет)?

Один из вызовов в ASM:
Code
push    0
...
push    ecx
push    3F800000h
...
push    13h
push    edi
...
call    _?LaunchSamRocket


Code
0xC89110 массив структур CProjectile
0xC891A8 массив структур CProjectileInfo


Добавлено (24.07.2011, 02:29)
---------------------------------------------
eWeaponType eWeapon - тип ракеты. В exe я видел такие же значения, что и представлены ниже.
Code
16 = none    
19 = normal    
20 = heatseeking    
58 = flare


Добавлено (24.07.2011, 02:38)
---------------------------------------------
Структура
+0 = [dword] eRocketType
Code
16 = none    
19 = normal    
20 = heatseeking    
58 = flare

+4 = [dword] Указатель на Entity, который запустил ракету (вероятно, это может быть либо автомобиль, либо пед - надо проверить)
+8 = [dword] Указатель на нацеленный автомобиль (для тепловых ракет)
+12 = [dword] Неизвестно. В исходниках мультиплееров называют "Counter", что обычно означает "Счётчик количества".
+16 = [byte] Статус ракеты
Code
0 = взорвалась/не существует
1 = летит

+17 = [byte] bPadding - трёхбайтовый вектор, возможно, текущей позиции, но, скорее всего, единичный вектор направления. Пока что не понял, как именно его трансформировать. На выходе всегда получаю 0 0 255
+20 = [float] fX - бывшая позиция X
+24 = [float] fY - бывшая позиция Y
+28 = [float] fZ - бывшая позиция Z
+32 = [dword] Неизвестно. Очень часто равно 0.0.

Добавлено (24.07.2011, 03:35)
---------------------------------------------
А вот ещё одно описание
bool AddProjectile ( CEntity * creator, eWeaponType eWeapon, CVector vecOrigin, float fForce, CVector * target, CEntity * targetEntity );
Теперь ещё сложнее.

Добавлено (14.09.2011, 21:31)
---------------------------------------------
Уже со всем разобрался. Когда зайду через нормальное соединение, то выложу пример.

Добавлено (14.09.2011, 21:34)
---------------------------------------------
Также в планах - создание опкодов и класса для SB.

Code
0@ = projectile.Create(...)

Что думаете?


Сообщение отредактировал DK22Pac - Воскресенье, 24.07.2011, 03:17
 
Den_spbДата: Среда, 14.09.2011, 22:18 | Сообщение # 2
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
Quote (DK22Pac)
Также в планах - создание опкодов
Круто ты продвинулся smile
Новые опкоды пригодятся, конечно. Желательно как-то унифицировать номера вновь создаваемых опкодов, чтобы библиотеки опкодов от разных авторов были совместимы между собой. Библиотека опкодов тригонометрических функций: http://sannybuilder.com/forums/viewtopic.php?pid=10413#p10413
 
444andrei444Дата: Четверг, 15.09.2011, 20:17 | Сообщение # 3
Группа: Проверенные
Сообщений: 15
Статус: Offline
да. давно хотел новые опкоды для cleo4. А не мог бы сделать работоспособную версию опкода поиск файлов, а то вылетает при заходе в раздевалку. Хотя не буду напрашиваться. А когда ты сделаешь Этот плагин и что планируешь за опкоды добавить?
 
OptimusДата: Пятница, 16.09.2011, 07:28 | Сообщение # 4
Группа: Заблокированные
Сообщений: 27
Статус: Offline
А вы можете перевести всё это в SB что бы можно было написать всё одним скриптом а не лезть в exe и вообще память игры
 
DK22PacДата: Воскресенье, 25.09.2011, 01:26 | Сообщение # 5
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Хотел бы сделать подствольный гранатомёт, но вот только граната постоянно летит по дуге )
 
Den_spbДата: Воскресенье, 25.09.2011, 01:34 | Сообщение # 6
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
А как ты создаёшь гранату?
П.С. Подствольный гранатомёт вроде делал Ryosuke.
 
DK22PacДата: Воскресенье, 25.09.2011, 01:44 | Сообщение # 7
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Через процедуру эту, а тип снаряда ставлю "16" (или какой там у гранаты))
 
Den_spbДата: Воскресенье, 25.09.2011, 01:48 | Сообщение # 8
Создатель сайта
Группа: Администраторы
Сообщений: 1600
Статус: Offline
Quote (DK22Pac)
Через процедуру эту
Это я понял. Имелось ввиду, какие значения параметров используются?
Может, неверно задано направление полёта?
 
DK22PacДата: Воскресенье, 25.09.2011, 02:53 | Сообщение # 9
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Нет, скорее всего, это зависит от характеристик обьекта (масса и т.д.)
 
АксиомаДата: Вторник, 06.12.2011, 23:40 | Сообщение # 10
Группа: Заблокированные
Сообщений: 81
Статус: Offline
А можете эти процессы перевести в нормальный скриптовый язык что бы было понятно
 
  • Страница 1 из 1
  • 1
Поиск: