Вторник, 23.04.2024, 10:11
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 5 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум » Игры серии ГТА » Справочная информация » [DOC] Документация по адресам gta_sa.exe 1.0US
[DOC] Документация по адресам gta_sa.exe 1.0US
DK22PacДата: Четверг, 14.06.2012, 15:26 | Сообщение # 61
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
0x8A6214 BYTE[4] traflight_colorRedTable
0x8A6218 BYTE[4] traflight_colorGreenTable
0xA9AD94 BYTE[4] traflight_colorBlueTable


Сообщение отредактировал DK22Pac - Четверг, 14.06.2012, 15:26
 
Den_spbДата: Пятница, 15.06.2012, 03:57 | Сообщение # 62
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Цвета шестиугольников только не меняются - видимо записаны в другом месте.
 
DK22PacДата: Суббота, 15.09.2012, 20:59 | Сообщение # 63
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
0x6C6520 ; CHeli *__cdecl createHeliToFollowPed(CPed *ped, char bFlagHeliModel)
Если не ошибаюсь, то можно только 2 таких верта создать (если больше, то могут возникнуть глюки).
Code
0AA5: call 0x6C6520 2 2 bHeliType 0 ped 0@

bHeliType:
Code
0 - POLMAV (497)
1 - VCNMAV (488)

Модели нужно самостоятельно загрузить.

Добавлено (14.08.2012, 02:15)
---------------------------------------------
ox6A45C0 ; void __thiscall CAutomobile::ProcessOnWater(CAutomobile *this)
Чё-то типо того. Вызывается в ::preRender, если включен чит CarsOnWater.
В самой функции какие-то рассчёты с коллизией (а именно - suspension lines)

Добавлено (19.08.2012, 02:45)
---------------------------------------------
Разобрал кое-какие процедуры CVehicle\CAutomobile\CDamageManager, позже выложу.

Добавлено (15.09.2012, 20:59)
---------------------------------------------
0x8D31A4 someGun RwV3D <0.0, 0.5, 0.2>
Офсет выстрела для модели RcTiger
0x8D316C gunShotInterval_ms dd 60
Интервал выстрела


Сообщение отредактировал DK22Pac - Суббота, 15.09.2012, 21:01
 
muvДата: Вторник, 08.01.2013, 07:35 | Сообщение # 64
Группа: Пользователи
Сообщений: 6
Статус: Offline
Как вычислить фпс игры в клео?
 
Den_spbДата: Вторник, 08.01.2013, 23:16 | Сообщение # 65
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Можно так:
Код
{$CLEO}
wait 0
while true
     32@ = 0
     wait 0
     0093: 32@ = integer 32@ to_float
     0@ = 1000.0  
     0073: 0@ /= 32@ // (float)  
     0092: 0@ = float 0@ to_integer  
     03F0: enable_text_draw 1
     045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 0@  // ~1~
end
 
muvДата: Среда, 09.01.2013, 09:36 | Сообщение # 66
Группа: Пользователи
Сообщений: 6
Статус: Offline
а как ещё можно?
хотя не надо, так всё хорошо работает
и спасибо большое!


Сообщение отредактировал muv - Среда, 09.01.2013, 09:55
 
DK22PacДата: Пятница, 03.01.2014, 15:12 | Сообщение # 67
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
0x432B10 CCarCtrl::PickNextNodeAccordingStrategy(CVehicle *car)
Фактически, в этой функции происходит выбор следующей точки маршрута для автомобиля.
Для разных видов т.н. "Стратегии" (преследование, движения к пункту назначения, рандомная езда) - разный метод выбора. 
Код
switch ( car->m_autoPilot.m_nCarMission )
   {
     case MISSION_RAMPLAYER_FARAWAY:
     case MISSION_BLOCKPLAYER_FARAWAY:
     case MISSION_2B:
       result = CCarCtrl::PickNextNodeToChaseCar(car, *v3, v6->y, v5, v4);
       break;
     case MISSION_RAMCAR_FARAWAY:
     case MISSION_BLOCKCAR_FARAWAY:
     case MISSION_34:
     case MISSION_36:
     case MISSION_3D:
     case MISSION_41:
     case MISSION_42:
     case MISSION_43:
     case MISSION_44:
       result = CCarCtrl::PickNextNodeToChaseCar(car, v14->x, v12->y, v10->z, car->m_autoPilot.m_pTargetCar);
       break;
     case MISSION_GOTOCOORDS:
     case MISSION_GOTOCOORDS_ACCURATE:
       result = CCarCtrl::PickNextNodeToFollowPath(car);
       break;
     default:
       CCarCtrl::PickNextNodeRandomly(car);

0x436540 CCarCtrl::UpdateCarOnRails(CVehicle *car)
Это функция, которая обновляет положение автомобиля на дороге.
Код
CCurves::CalcCurvePoint(&v31, &v30, &in, &v28, v26, speedScaleFactor, &outPoint, &moveForce);
LODWORD(outPoint.z) = 0x41700000u;
CCarCtrl::DragCarToPoint(v1, &outPoint);
 
Den_spbДата: Пятница, 03.01.2014, 20:18 | Сообщение # 68
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Цитата DK22Pac ()
0x432B10 CCarCtrl::PickNextNodeAccordingStrategy(CVehicle *car)

Спасибо за информацию.
Цитата DK22Pac ()
0x436540 CCarCtrl::UpdateCarOnRails(CVehicle *car)

Про эту функцию я знаю, у меня в базе она отмечена как "MovingCarsAndBikesByRoutes_cdecl proc near".
Если обратить внимание на начало функции, то там есть проверка текущей анимации автомобиля:
Код
.text:00436560 06C                 movsx   eax, byte ptr [esi+3BBh] ; AutomobileEvent

При записи по адресу CCarCtrl+0x3BB значения 24 (это значение игра записывает в структуру в тот момент, когда автомобиль или мотоцикл соприкасается с препятствием), перемещение транспортного средства бота по пути мгновенно прекращается. Так работает скрипт AutoTrafFix, опубликованный на данном сайте. Недостаток данного метода в том, что транспортное средство бота резко останавливается перед препятствием.
Тема на форуме, посвященная траффику автомобилей: http://modsforgta.ucoz.ru/forum/10-75-1
 
Den_spbДата: Воскресенье, 05.01.2014, 18:23 | Сообщение # 69
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Существует опкод, предназначенный для включения и отключения стандартного траффика поездов (в т.ч. и трамваев)
Код
06D7: enable_train_traffic 0

Однако в некоторых условиях отключенный данным способом траффик может быть снова включен игрой.
Есть другой, радикальный способ отключения траффика - через игровую память:
Код
{$CLEO}
0A8C: write_memory 0x6F7AE8 size 2 value 0x01B0 virtual_protect 1          // mov al, 1
0A8C: write_memory 0x6F7AEA size 1 value 0x90 virtual_protect 1            // NOP
0A8C: write_memory 0x6F7AEB size 2 value 0x9090 virtual_protect 1          // NOP
0A93:
Эта информация может быть полезна разработчикам, создающим модификации на тему ж/д транспорта.
 
RecoilДата: Среда, 29.09.2021, 18:43 | Сообщение # 70
Группа: Проверенные
Сообщений: 12
Статус: Offline
Привет Денис! Может помнишь меня еще с GTT.
Иногда вне сезона вожусь с IDA, нашел много чего, хотел сделать два скрипта:
-по всем вращениям и перемещениям компонентов транспортных средств и дальности стельбы (найдено много, почти  все)
-все оффсеты транспорта (найдено много чего)
Чем глубже я копал тем труднее становилось, помочь некому, Дмитрию ты помогал, а он не очень спешит помочь, пишут занят, я тоже между прочим занят.
Застрял на таких моментах
Скорость вращения пикапа
.text:00455CD0 038 D8 0D 0C 9B 85 00                       fmul    ds:flt_859B0C
при попытке изменения скорости, пикап начинает вращаться с периодическими остановками и скачками.
Пытаюсь изменить расположение реактивных струй у джетпака, с помощью Lua MemoryEditor https://u.to/bMWiGw советую всем эту прогу для редактирования памяти в игре!
и это получается
https://u.to/bcWiGw
пишу скрипт, он не работает, так и не понял в чем дело
{$CLEO}
0A8C: write_memory 0xC195D8 size 4 value 0.0 virtual_protect 1 // X  (0)
0A8C: write_memory 0xC195DC size 4 value 1.0 virtual_protect 1 // Y (0)
0A8C: write_memory 0xC195E0 size 4 value 1.0 virtual_protect 1 // Z (-0.15)
0A93:

Все попытки найти оффсет тепловой ловушки Flare для самолета Гидра провалились.

з.ы.
Столкнулся с проблемой, хочу для civdens.asi добавить как в  BongHitTrafficIII.asi дальность для припаркованных авто, нашел эти адреса
.text:006F30BB 02C                 fmul    ds:flt_858970 //  этот адрес отвечает за максимальную дальность припаркованного транспорта
.rdata:00858970     flt_858970      dd 160.0                ; DATA XREF: sub_404690+1Cr
.text:006F2FB9 02C                 fcomp   ds:flt_858B40   ; 50.0 // этот за минимальную дальность ??
.rdata:00858B40     flt_858B40      dd 50.0                 ; DATA XREF: sub_409760+131r
Максимальную дальность удается увеличить в два раза, а больше никак, а в 4, 6 раз? Как обойти лимит?


Сообщение отредактировал Recoil - Суббота, 16.10.2021, 20:31
 
Den_spbДата: Среда, 29.09.2021, 21:39 | Сообщение # 71
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Привет, Юра! Приятно вновь видеть участников GTT спустя такое долгое время!

Давно не занимался скриптингом и, в частности, работой с памятью, поэтому сложно сходу вникать в такие вопросы, но попробуем. Начнем с джетпака - у меня есть предположение, что в 0xC195D8 записывается не значение, а адрес переменной, в которую уже надо записать значение. На этот вывод толкает то, что игра по-разному реагирует на этот код:
Код
{$CLEO}
wait 1000
model.Load(#JETPACK)

07A7: put_jetpack_on_actor $PLAYER_ACTOR
038B: load_requested_models

0AC6: 0@ = label @VECTOR pointer

0A8C: write_memory 0xC195D8 size 4 value 0@ virtual_protect 1 // X  (0)

0A8C: write_memory 0@ size 4 value 10.0 virtual_protect 0 // X  (0)

:VECTOR
hex
00 00 00 00    00 00 00 00     00 00 00 00
00 00 00 00    00 00 00 00     00 00 00 00
00 00 00 00    00 00 00 00     00 00 00 00
00 00 00 00    00 00 00 00     00 00 00 00
end
0A93:
Если записать в первые четыре байта буфера 0 или целое число, то ничего не происходит. Если записать дробное число - игра вылетает. Пока у меня нет IDA и базы gta_sa.exe, постараюсь завтра установить - тогда смогу посмотреть, что это за адреса.
 
RecoilДата: Среда, 29.09.2021, 22:00 | Сообщение # 72
Группа: Проверенные
Сообщений: 12
Статус: Offline
Вот что нашел в базе IDA по джетпаку, точнее что сохранил по этой теме
Jetpack
.data:00C195D8                             ; RwV3d gJetBallOffset
.data:00C195D8 ?? ?? ?? ?? ?? ?? ?? ??+    gJetBallOffset  RwV3d <?>

0xC195D8  x  (0.0)
0xC195DC  y  (0.0)
0xC195E0  z  (-0.15)

.data:008D2F68                             ; RwV3d JETPACK_POS_OFFSET
.data:008D2F68 CD CC CC 3D 0A D7 A3 3D+    JETPACK_POS_OFFSET RwV3d <0.1, 0.079999998, 0.0>
.data:008D2F68 00 00 00 00                                                         ; DATA XREF: CTaskSimpleJetpack__Process+4Ao
.data:008D2F74                             ; RwV3d JETPACK_ROT_AXIS
.data:008D2F74 00 00 00 00 00 00 80 3F+    JETPACK_ROT_AXIS RwV3d <0.0, 1.0, 0.0>  ; DATA XREF: CTaskSimpleJetpack__Process+65o

база https://u.to/jtqiGw
IDA pro 
игра https://u.to/j9qiGw


Сообщение отредактировал Recoil - Суббота, 13.11.2021, 11:15
 
Den_spbДата: Среда, 29.09.2021, 22:21 | Сообщение # 73
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Ты правильно всё делал, значения записываются по адресам напрямую.
У меня сейчас всё тоже заработало) Значения и пишутся, и читаются - эффект в игре появился!
Код
{$CLEO}

0A8C: write_memory 0xC195D8 size 4 value 2.0 virtual_protect 1 // X  (0)
0A8C: write_memory 0xC195DC size 4 value 1.0 virtual_protect 1 // Y (0)
0A8C: write_memory 0xC195E0 size 4 value 0.5 virtual_protect 1 // Z (-0.15)

wait 1000
model.Load(#JETPACK)

038B: load_requested_models
07A7: put_jetpack_on_actor $PLAYER_ACTOR

0A8D: 0@ = read_memory 0xC195D8 size 4 virtual_protect 1
0A8D: 1@ = read_memory 0xC195DC size 4 virtual_protect 1
0A8D: 2@ = read_memory 0xC195E0 size 4 virtual_protect 1

0@ *= 1000.0
1@ *= 1000.0
2@ *= 1000.0

0092: 0@ = float 0@ to_integer
0092: 1@ = float 1@ to_integer
0092: 2@ = float 2@ to_integer

while true
wait 0

03F0: enable_text_draw 1
045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 0@  // ~1~
045A: draw_text_1number 200.0 250.0 GXT 'NUMBER' number 1@  // ~1~
045A: draw_text_1number 200.0 300.0 GXT 'NUMBER' number 2@  // ~1~

end

0A93:
Прикрепления: 6088060.jpg (299.3 Kb)
 
RecoilДата: Среда, 29.09.2021, 23:18 | Сообщение # 74
Группа: Проверенные
Сообщений: 12
Статус: Offline
Спасибо. Но у меня скрипт не работает, может конфликт, надо разбираться
https://u.to/mOKiGw
Тестировал один плагин  [SA]ObjectDatLoader у меня не работает, хотелось сборку эффектов сделать из множества модов, что творится не пойму sad


Сообщение отредактировал Recoil - Среда, 29.09.2021, 23:22
 
Den_spbДата: Пятница, 01.10.2021, 21:11 | Сообщение # 75
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Попробуй этот код. Здесь значения адресов читаются и выводятся на экран постоянно. Поэтому если скрипт не изменил их, или игра поставила стандартные значения обратно - это будет видно.

Код
{$CLEO}

0A8C: write_memory 0xC195D8 size 4 value 2.0 virtual_protect 1 // X  (0)
0A8C: write_memory 0xC195DC size 4 value 1.0 virtual_protect 1 // Y (0)
0A8C: write_memory 0xC195E0 size 4 value 3.5 virtual_protect 1 // Z (-0.15)

wait 1000
model.Load(#JETPACK)

038B: load_requested_models
07A7: put_jetpack_on_actor $PLAYER_ACTOR

while true
    wait 0
    0A8D: 0@ = read_memory 0xC195D8 size 4 virtual_protect 1
    0A8D: 1@ = read_memory 0xC195DC size 4 virtual_protect 1
    0A8D: 2@ = read_memory 0xC195E0 size 4 virtual_protect 1
    
    0@ *= 1000.0
    1@ *= 1000.0
    2@ *= 1000.0
    
    0092: 0@ = float 0@ to_integer
    0092: 1@ = float 1@ to_integer
    0092: 2@ = float 2@ to_integer
    03F0: enable_text_draw 1
    045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 0@  // ~1~
    045A: draw_text_1number 200.0 250.0 GXT 'NUMBER' number 1@  // ~1~
    045A: draw_text_1number 200.0 300.0 GXT 'NUMBER' number 2@  // ~1~
end

0A93:

Попробовал сейчас снова. С первого раза не работает и значения в адресах не записались. Перезагрузил сохранение - со второй попытки заработало.
 
Форум » Игры серии ГТА » Справочная информация » [DOC] Документация по адресам gta_sa.exe 1.0US
  • Страница 5 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск: