GTA Builder Форум

GTA Vice City => Общие вопросы => Тема начата: mfisto от Января 14, 2015, 06:37:36 pm

Название: Двигатель авто в Vice City.
Отправлено: mfisto от Января 14, 2015, 06:37:36 pm
Вот возник вопрос: как заставить работать двигатель авто, когда Tommy пассажиром?
Название: Re: Двигатель авто в Vice City.
Отправлено: Shagg_E от Января 14, 2015, 09:01:37 pm
Чтобы двигатель включился, когда томми сел пассажиром?
Попробуй
03A2: set_vehicle $ID action 9
wait 0
03A2: set_vehicle $ID action 0
Если не выйдет - wait по-больше попробуй. Если опять нет - то через память как-нибудь придется
Название: Re: Двигатель авто в Vice City.
Отправлено: mfisto от Января 15, 2015, 09:40:14 am
Суть wait здесь в чем?
Название: Re: Двигатель авто в Vice City.
Отправлено: Shagg_E от Января 15, 2015, 11:56:43 am
wait здесь лишь на основе моих знаний игры. Как правило, если выполнять 2 противоречивых действия без wait-а - результата не будет никакого(например, чтобы в катсцене выключить черные рамки, нужно сначала включить, а потом выключить widescreen. Если это сделать без хотя бы нулевого wait-а - черные рамки не выключатся). Т.е., по моим прогнозам, если этот способ хоть немного рабочий - то лишь с wait-ом, а без него с машиной не произойдет абсолютно ничего. Конечно, я могу ошибаться, т.к. это всё теория.
Название: Re: Двигатель авто в Vice City.
Отправлено: mfisto от Января 15, 2015, 02:25:23 pm
Немного оффтопа. Wait используется для выполнения опкодов, а также для прерывания на заданное кол-во времени. Что это значит: пока игра не встретит wait, все опкоды не будут применены, а также если не будет wait игра встанет на паузу (черный экран). По сути обязательное условие. Исключение составляет конец скрипта. По идее wait надо назвать так: "execute_with_timer". Благодаря wait мы имеем склейку опкодов, т.е. это гарантирует, при отсутствии ошибок, последовательное применение данных опкодов за один раз (конечно за одну и ту же долю секунду это не произодет по понятным причинам). Из этого расчета и строится весь скрипт. Например, мы хотим применить какие-то задачи для актера, при условии что это выполнимо, можно писать, без проверки что актер жив, сколько угодно опкодов для актера. НО в самом начале  необходимо поставить проверку, далее когда наши условия будут удовлетворены, ставим wait, и что происходит, начинается обработка опкодов и применение их. Так устроен движок, а именно, все активные потоки, включая main, проходят по этапно от wait к wait. Движок проверяет, найден wait идем дальше, нету в потоке wait и поток завершился игра встает на паузу, что мы наблюдаем при неграматном скриптинге.

Еще офтоп. Вообще это плохо, что нету встроенной проверки обхода ошибок - предсказуемого поведения при наличии ошибок. Это обеспечило бы скриптеру фору по времени и не пришлось бы перезапускать все, но это не сделано и скорей всего не так просто, поэтому ошибки целиком и полностью перекладываются на руки скириптера.
Название: Re: Двигатель авто в Vice City.
Отправлено: Shagg_E от Января 15, 2015, 08:36:48 pm
Ну, примерно это я и имел в виду
Название: Re: Двигатель авто в Vice City.
Отправлено: Shagg_E от Января 15, 2015, 10:00:03 pm
Так что - получилось? Мне просто самому интересно(запишу на будущее), а тестировать нет времени(сейчас готовлю один занятный мод)
Название: Re: Двигатель авто в Vice City.
Отправлено: mfisto от Января 15, 2015, 10:15:40 pm
Нет не проверял, тоже типа занят))).
Название: Re: Двигатель авто в Vice City.
Отправлено: xanser от Января 17, 2015, 09:40:04 pm
Я попробовал переписать этот опкод в виде функции, там вроде все просто, но у меня что-то неадекватное происходит с машиной. Из всех цифр у меня сработало только значение 3, включился какой-то автопилот, при 2 машина поехала под землей, остальные цифры выключают звук, но по-моему вместе со звуками окружающего мира, включают стоп-сигналы, вобщем что-то паранормальное.
Название: Re: Двигатель авто в Vice City.
Отправлено: Shagg_E от Января 17, 2015, 10:05:14 pm
Игрок не должен быть за рулем(управлять машиной). В идеале - тачка актера:
Actions
0 - Brake without lights
1 - Brake with lights
2 - Brake without lights
3 - Reverse
4 - Turn left wide
5 - Turn right wide
7 - Drive forward and turn left
8 - Drive forward and turn right
9 - Drive forward
10 - Turn left slightly
11 - Turn right slightly
13 - Reverse and turn left
14 - Reverse and turn right
19 - Turn left slightly, flash the rear lights
20 - Turn left slightly, switch rear lights on for 4 seconds
21 - Turn right slightly, switch rear lights for 4 seconds
22 - Drive back
23 - Drive forward very fast
24 - Switch lights on at animation time