Рейтинг - 0.0 (0)

Как и в предыдущем уроке, мы рассмотрим опкоды. Но на этот раз тема касается транспорта.

Транспорт разделяется условно на 4 группы: машины ( в том числе байки и велики ), поезда, лодки, воздушные средства передвижения. Большинство опкодов можно применить ко всем видам транспорта. Рассмотрим их:

Безусловные
car.PutAt($Car, 10.0, -1400.0, 18.0)
перемещает машину в заданные координаты
car.Destroy($Car)
уничтожить машину
car.Health($CAR) = 500
устанавливает количество жизни машине ( если ниже 251 то машина начнёт гореть! )
car.RemoveReferences($Car)
стирает все сведения о машине
03C0: $Car = actor $PLAYER_ACTOR car
записывает в переменную машину, в которой сидит актёр
02E3: $Speed = car $Car speed
записывает в переменную скорость с которой едет транспорт
04BA: set_car $Car speed_instantly 20.0
устанавливает машине скорость
Car.SetMaxSpeed($Car, 10.0)
устанавливает максимальную скорость машины, до которой она может разогнаться ( если за рулём машини СЖ, то опкод не работает )
0294: set_car $Car sprayable 1
машину можно перекрашивать ( если поставить 0 - то нельзя )
car.DoorStatus($Car) = 2
замыкает двери машины( если поставить 0 то двери можно будет открывать)
0229: set_car $Car color_to 11 0
устанавливает цвета машины ( см. Цвета автомобилей ) Первая цифра: основной цвет, другая - вторичный цвет.
car.SetImmunities($Car,1,1,1,1,1)
устанавливает машине иммунитеты от взрывов, падения и т.п.
0ABE: vehicle $Car engine_on
включает мотор машины
02D4: car $Car turn_off_engine
выключает мотор машины
0A26: set_radio_to_favorite_station
устанавливает радио на самую используемую радиостанцию
041E: set_radio_station 0
устанавливает радио на определённую радиостанцию. Список радиостанций смотрите в нашей базе данных. Если вы используете служебный транспорт ( пожарную, скорую ), то опкод может не сработать.
Условные
0495: car $Car burning
роверка: машина горит?
car.Defined($CAR)
проверка: машина существует?
02BF: car $Car sunk
проверка: машина упала в воду?
01C1: car $Car stopped
проверка: машина остановилась?
03C9: car $Car damaged
проверка: машина повреждена?
01F3: car $Car airborne
проверка: машина в воздухе?
0119: car $Car wrecked
проверка: машина уничтожена?
051D: cars $Car1 and $Car2 collided
проверка: машина1 столкнулась с машиной2?
01F4: car $Car flipped
проверка: машина перевернулась?
03CE: car $Car stuck
проверка: машина застряла ( не может двигаться )?

Команды, свойственны только машинам, великам и байкам:

Безусловные
car.DriveTo($car, -6.0, 1350.0, 47.0)
заставляет машину ехать в заданные координаты
car.ToggleTaxiLight($Car) = true
включить значок ТАКСИ на машине ( если поставить false - то выключить значок )
067F: set_car $Car headlights 2
включить фары в машине ( если поставить 0 - то выключить )
01EC: make_car $Car very_heavy 1
делает машину очень тяжелой ( как отключить этот параметр я не знаю )
Car.SetToNormalDriver($Car)
машине будет обычный водитель
Сar.SetToPsychoDriver($Car)
в машине будет сумасшедший водитель
Car.SetDriverBehaviour($Car, Nowhere)
устанавливает тип езды машине. Вот все типы, известные мне:
ТипОписание
0никуда не ехать
1следовать дороге
2ездить за игроком
4ездить за игроком
8ехать напрямик, не обращая внимания на дорогу
07F8: car $Car1 follow_vehicle $Car2 radius 27.0
заставляет машину1 следовать за машиной2 на растоянии 27.0
car.ToggleHydraulics($Car) = true
устанавливает на машину гидравлику
0657: car $Car open_component 0
открывает часть машины. Вот список известных мне частей:
ЧастьОписание
0Капот.
1Багажник.
2Дверь водителя или левого переднего места.
3Дверь правого переднего места.
4Дверь заднего левого места.
5Дверь заднего правого места.
00AE: set_car $Car traffic_behaviour_to 2
машина будет игнорировать светофоры
Car.SetAnimation($Car, 9, 4000)
некая анимация для транспорта ( нужно, что бы в машине был водитель ).
Здесь:
4000 - время за которое будет воспроизводится данная анимация
9 - номер анимации. Все известные мне на данный момент анимации перечислены в таблице ниже
ТипОписание
3едет задом
5поворачивает колёса вправо
6едет по кругу против часовой стрелки
8едет по кругу по часовой стрелке
9едет прямо

Команды, свойственны самолётам:

Безусловные
04D2: set_plane $PLANE fly_autopilot_around_point 600.0 250.0 16.0 altitude_between 0.0 and 0.0
заставляет самолёт лететь в заданную точку ( последние 2 параметра не трогайте )
070F: plane $PLANE fly_direction 180.0 altitude_between 200.0 and 200.0
заставляет самолёт лететь под определённым углом ( в нашем случаи под 180.0 градусом ), остальные параметры одинаковы и указывают высоту ( в данном случаи 200.0 )
084E: flying_vehicle $PLANE use_primary_gun 1
использование ракет
0841: flying_vehicle $PLANE use_secondary_gun 1
использование пулемёта
0724: flying_vehicle $PLANE follow_and_attack_player $PLAYER_CHAR radius 40.0
самолёт будет летать около игрока в радиусе 40.0 и атаковать его ( учтите, что самолёт будет атаковать только СЖ, по этому не меняйте переменную $PLAYER_CHAR в опкоде)

Команды, применяемые к вертолётам:

Безусловные
04A2: heli $HELI fly_to 640.0 480.0 128.0 speed 60.0 70.0
заставляет вертолёт лететь в заданную точку со скоростью 60.0 и на высоте 70.0
084E: flying_vehicle $Heli use_primary_gun 1
использование вертолётом ракет
0841: flying_vehicle $Heli use_secondary_gun 1
использование вертолётом пулемёта
0724: flying_vehicle $Heli follow_and_attack_player $PLAYER_CHAR radius 40.0
тоже самое, что и опкод 0724, только с вертолётом ( заставляет атаковать СЖ )
0788: enable_heli $Heli magnet 1
устанавливает на вертолёт магнит, если 0 то убирает магнит
0789: set_heli $Heli release_stuff_from_magnet
забирает магнит с вертолёта

Команды, применяемые к лодкам:

Безусловные
02D3: boat $Boat drive_to 10000.0 -100.0 0.0
заставляет лодку плыть в заданные координаты
02DB: set_boat $Boat speed_to 50.0
устанавливает лодке нужную скорость

Команды для поездов:

Безусловные
06D8: $Train = create_train_at 2285.1523 -1257.4998 23.0 type 15 direction 1
создаёт поезд в нужных координатах. Здесь 15 - тип поезда ( в основном тип влияет на модели поезда и вагона а так же на количество самих вагонов ), 1 - указывается направление поезда. Координаты задавайте такие, что бы они были ближе к рельсам, иначе поезд создастся чёрт знает где :)
06DD: set_train $Train speed 23.0
устанавливает скорость поезду
06DC: set_train $Train acc 7.0
устанавливает ускорение для поезда
06D7: toggle_train_traffic 1
параметр влияет на появление поездов: 1 - будут появляться как обычно, 0 - не будут появляться вообще
09CF: set_train $Train flag 0
задаёт поезду флаги. Что именно задаёт этот опкод я не знаю и не использую его

К поездам мы ещё вернёмся и детально изучим их. Сейчас я выложил только опкоды.


Владимир   (12.06.12 13:41)
Не получается у меня помогите плиз. Я хочу с нажатием на кнопку "1", ставится гидравлика
Код
:CAR
if and
wait 0
0AB0: key_pressed 49
jf
wait 0
car.ToggleHydraulics($Car) = true
end

wmysterio   (12.06.12 15:18)
это смотря на какой транспорт ставится гидравлика. Модель транспорта какая?

GMSxGTR   (13.06.12 11:09)
Мне всего лишь нужен был переключатель
Включается на любой тачке в которую сядет СЖ

Code

thread 'CR_CAR_SPEED'

:CR_CAR_SPEED_19
wait 0
if and
Actor.Driving($PLAYER_ACTOR)
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
not Actor.DrivingPlane($PLAYER_ACTOR)
84A9: not actor $PLAYER_ACTOR driving_heli
84A7: not actor $PLAYER_ACTOR driving_boat
0AB0: key_pressed 49
else_jump @CR_CAR_SPEED_19
00BC: show_text_highpriority GXT 'CRSC_2' time 3000 flag 1
wait 400
jump @CR_CAR_SPEED_91

:CR_CAR_SPEED_91
wait 0
if and
0AB0: key_pressed 49
Actor.Driving($PLAYER_ACTOR)
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
not Actor.DrivingPlane($PLAYER_ACTOR)
84A9: not actor $PLAYER_ACTOR driving_heli
84A7: not actor $PLAYER_ACTOR driving_boat
else_jump @CR_CAR_SPEED_154
wait 400
jump @CR_CAR_SPEED_397

:CR_CAR_SPEED_154
if and
Actor.Driving($PLAYER_ACTOR)
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
not Actor.DrivingPlane($PLAYER_ACTOR)
84A9: not actor $PLAYER_ACTOR driving_heli
84A7: not actor $PLAYER_ACTOR driving_boat
else_jump @CR_CAR_SPEED_19
03C0: $P_A_C_C_1 = actor $PLAYER_ACTOR car
02E3: $P_A_C_S_1 = car $P_A_C_C_1 speed
if
car.ToggleHydraulics($P_A_C_C_1) = true
jump @CR_CAR_SPEED_91

:CR_CAR_SPEED_397
wait 0
if and
0AB0: key_pressed 49
Actor.Driving($PLAYER_ACTOR)
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
not Actor.DrivingPlane($PLAYER_ACTOR)
84A9: not actor $PLAYER_ACTOR driving_heli
84A7: not actor $PLAYER_ACTOR driving_boat
else_jump @CR_CAR_SPEED_460
wait 400
jump @CR_CAR_SPEED_550

:CR_CAR_SPEED_460
if and
Actor.Driving($PLAYER_ACTOR)
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
not Actor.DrivingPlane($PLAYER_ACTOR)
84A9: not actor $PLAYER_ACTOR driving_heli
84A7: not actor $PLAYER_ACTOR driving_boat
else_jump @CR_CAR_SPEED_19
03C0: $P_A_C_C_1 = actor $PLAYER_ACTOR car
02E3: $P_A_C_S_1 = car $P_A_C_C_1 speed
if
car.ToggleHydraulics($P_A_C_C_1) = false
jump @CR_CAR_SPEED_397

:CR_CAR_SPEED_550
wait 500
jump @CR_CAR_SPEED_91

wmysterio   (13.06.12 13:23)
Так если ставить гидравлику, нужно ещё указать центр контроля гидравлики. Вот скрипт:
Code
:CR_CAR_SPEED
thread 'CR_CAR_SPEED'
wait 0
0@ = 0

:CR_CAR_SPEED_1
wait 0
if AND
0AB0: key_pressed 49
Actor.Driving($PLAYER_ACTOR)
then
    if
    0@ == 0
    then
    03C0: $P_A_C_C_1 = actor $PLAYER_ACTOR car
    if
    car.Defined($P_A_C_C_1)
    then
    car.ToggleHydraulics($P_A_C_C_1) = true    
    07F5: car $P_A_C_C_1 control_hydraulics 0.0 0.0 0.0 0.0 // указываем центр контроля
    00BC: show_text_highpriority GXT 'CRSC_2' time 3000 flag 1
    0@ = 1
    wait 250
    else
    jump @CR_CAR_SPEED
    end
    else
    if
    car.Defined($P_A_C_C_1)
    then
    car.ToggleHydraulics($P_A_C_C_1) = false
    0@ = 0
    wait 250
    end    
    end    
end
jump @CR_CAR_SPEED_1
P.S Обычно такие вопросы задавай на форуме smile Там быстрее ответят =)

GMSxGTR   (13.06.12 16:10)
Ты уверен что работает?
У меня выскакивает ошибка: "Неизвестная команда car.Defined($P_A_C_C_1)."

wmysterio   (13.06.12 21:18)
Уверен. Я обычно тестирую свои скрипты перед тем, как кидать код на сайт smile

Попробуйте использовать опкод:
Code
056E:  car $P_A_C_C_1 defined

GMSxGTR   (13.06.12 21:37)
Не знаю как у тебя работает так, но у меня опять ошибка:
"Переход на нулевой оффсет."

wmysterio   (13.06.12 21:49)
Нужно добавить опкод 0000: после {$Cleo} Это сам клео так работает и в справке написано, что возникают ошибки при переходах на первую метку. Опкод всё исправит smile

GMSxGTR   (13.06.12 22:27)
Где пишут где не пишут этот 0000:, ну все таки заработало как надо.
Спасибо за помощь!

Yurko_UA   (07.07.12 13:21)
Как зделать радио, например, на тракторе или велике?

Yurko_UA   (22.08.12 12:03)
Код
:POEZD
wait 0
0AE2: $TRAIN = random_vehicle_near_point $X $Y $Z in_radius 1000.0 find_next 0 pass_wrecked 1
if or
0137: car $TRAIN model == #STREAK
0137: car $TRAIN model == #FREIGHT
jf @POEZD
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Какие моды Вы хотите видеть на сайте?
Всего ответов: 5
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
wmysterio
Реклама