Когда-то Den_spb показывал код для SA, чтобы менять модель авто не создавая при этом новую:
03C0: 1@ = actor $PLAYER_ACTOR car
0A97: 2@ = car 1@ struct
0AA6: call_method 0x6D6A40 struct 2@ params 1 pop 0 %какой-либо ид машины из vehicles.dat%
Как писал Денис
Но метод работает только при следующих условиях:
1.Предварительно загружена новая модель.
2.Старая и новая модели однотипны (например, 4-дверное авто заменить на 2-дверное не получится, только 4-дверное на 4-дверное).
Там были проблемы с колёсами. Сейчас что-то вспомнил про это и подумал, что надо для авто вызывать CAutomobile::SetModelIndex, а для другого типа транспорта соответственно свой метод. Тогда никаких проблем нет. А если менять модель на ту же самую, то и загрузка модели не нужна. Способ хорошо подходит для просмотра и замены экстр на транспорте.
Вот код в виде клео скрипта для VC
{$CLEO .cs} // VC 1.0
6@ = -1
while true
wait 0
if
0256: player $PLAYER_CHAR defined
then
if and
05EE: key_pressed 52 // 4
Actor.Driving($PLAYER_ACTOR)
84C9: not player $player_char driving_flying_vehicle
847E: not player $player_char driving_a_motorbike
84A8: not player $PLAYER_CHAR driving_boat
then
03C0: 0@ = actor $PLAYER_ACTOR car
0441: 1@ = car 0@ model
0506: set_car_model 1@ next_variation 6@ 6@
05E7: 2@ = car 0@ struct
05E3: call_method 0x59E590 struct 2@ params 1 pop 0 1@ // CAutomobile::SetModelIndex
0085: 7@ = 6@
7@ += 1
01E3: show_text_1number_styled GXT 'NUMBER' number 7@ time 2000 style 4
if
not 6@ >= 5
then
6@ += 1
else
6@ = -1
end
repeat
wait 0
until 85EE: not key_pressed 52 // 4
end
end
end
Хотел перенести на основу plugin-sdk, но не вышло пока. Вот эти строчки не знаю, как реализовать
05E7: 2@ = car 0@ struct
05E3: call_method 0x59E590 struct 2@ params 1 pop 0 1@