#1 11-05-2007 13:48

Dan
Registered: 11-05-2007
Posts: 4

Проблема со вставкой машины

Вставляю код из Руководства по скриптингу в конец оригинального main и прописываю

create_thread @NRG_500

перед последней end_thread. То есть последние строки выглядят так:

:HOTDOGV_716
jump @HOTDOGV_77 
create_thread @NRG_500
end_thread

В данном случае мотоцикл не появляется.


Если вставляю создание потока в ряд с остальными (то есть примерно на 950 строке), а сам код прямо перед --Mission 0--, то игра вылетает при загрузке. Что в коде неверно?

:NRG_500
wait 100
thread 'NRG'
Model.Load(#NRG500)
038B: load_requested_models

:NRG_510
Wait 100
If and  
Model.Available(#NRG500)
jf @NRG_510
30@ = Car.Create(#NRG500, 2034.2462, 994.1775, 10.8203 )

///////////// Код выгрузки модели
:NRG_520
wait 100
if AND
Car.Wrecked(30@)
jf @NRG_520
Car.Destroy(30@)
Car.RemoveReferences(30@)
Model.Destroy(#NRG500)
end_thread

Last edited by Dan (11-05-2007 13:50)

Offline

#2 11-05-2007 15:02

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Проблема со вставкой машины

В данном случае мотоцикл не появляется.

потому что игра никогда не прийдет на команду create_thread. Перед ней стоит jump, и нет меток. Добавлять потоки нужно не после внешних скриптов, а перед миссиями.

Если вставляю создание потока в ряд с остальными (то есть примерно на 950 строке), а сам код прямо перед --Mission 0--

вот это правильная вставка.

Ты начал новую игру? При загрузке сейвов игра будет вылетать.

Offline

#3 11-05-2007 17:35

Dan
Registered: 11-05-2007
Posts: 4

Re: Проблема со вставкой машины

не начал. я знал что после редактирования скриптов приходится начинать заново, но думал только после каких-то существенных модификаций. почему игре такое мелкое изменение не нравится-то?

Offline

#4 12-05-2007 04:52

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Проблема со вставкой машины

Ну, не вдаваясь в детали, скажу - любой новый опкод меняет всю дальнейшую структуру кода, все последующие опкоды смещаются на какое-то количество байт вперед или назад (если, наоборот, существующий опкод удалить). При загрузке сейва игра восстанавливает указатели в потоках на те позиции, которые были при сохранении (обычно это команда wait 0), а т.к. опкоды были смещены, то указатель вполне может указывать, например, на середину опкода, что при парсинге скрипта неминуемо вызовет ошибку игры.

Есть технология, позволяющая добавлять такие потоки как этот, без начала новой игры. Поищи на gtaforums.com или missions.gtamaps.net по слову Darkpact.

Offline

#5 12-05-2007 05:45

Dan
Registered: 11-05-2007
Posts: 4

Re: Проблема со вставкой машины

технология есть, но, увы, код не хочет компилироваться ни mission builder'ом (как сказано в ридми), ни sanny builder'ом.

Offline

#7 12-05-2007 13:16

Dan
Registered: 11-05-2007
Posts: 4

Re: Проблема со вставкой машины

smile вопрос: код из того поста куда вставлять?

та версия, что я качал, являлась декомпилированным мэйном, в нее разве вставлять?

Offline

#8 12-05-2007 14:00

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Проблема со вставкой машины

Я никогда не этим не пользовался. Нужно заменить в mission 0 (в оригинальном декомпилированном майне) тот код, что идет в версии Darkpact под MB на тот, что написан для SB. После этого вставляешь команду create_thread @NRG500 в то место, где это положено, а сам поток перед mission 0.

Offline

Board footer

Powered by FluxBB