Транспортом являются все самолёты,машины,мотоциклы,велосипеды,катера,верто- лёты и поезда.Я разделил эту главу на несколько частей: 1 - Создание припаркованных транспортных средств.Пример. 2 - Общие команды,т.е. команды применимые ко всем видам транспртных средств. 3 - Команды,применимые только для машин,мотоциклов и велосипедов. 4 - Команды,применяемые к самолётам. 5 - Команды,применяемые к вертолётам. 6 - Команды,применяемые к лодкам. 7 - Команды,применяемые к поездам. 8 - Условия(проверки). 9 - Примеры.
1) Создание припаркованных транспортных средств. Чтобы создать припаркованное транспортных средство не надо загружать никаких моделей,надо в первую очередь создать свой поток,потом написать начало,ваит и конец потока:
create_thread @MyCars
:MyCars wait 0 -------Тут надо писать создание припаркованного тр. средства.------- end_thread
Там где написано "-------Тут надо писать ..." описывается создание транспортного средства. Оно состоит из двух команд: 014B: $Car = init_parked_car_generator #Model 8 8 0 alarm 50 door_lock 0 0 40000 at X Y Z angle 180.0 014C: set_parked_car_generator $Car cars_to_generate_to 101 Разберём эти две команды поподробнее: 1 команда: $Car - имя тр. средства,не должно повторяться. #Model - показывает,машина какой модели должна быть припаркована,все модели в первой колонке файла "handling.cfg" после вырыжения "- cars -".Файл в папке "data" вашего San Andreas'a. Не забывайте,что там модели написаны без знака # впереди,а в SB этот знак надо обязательно добавлять. Цифры 8 8 обозначают цвет машины,цвета описаны в файле "Carcols.dat",лежит в папке "data". Цифра 50 показывает установленность сигнализации в машине,это проценты. Цифра 0 после слова "door_lock" показывает вероятность(в процентах) закрытых дверей. Цифра 0 после слова "lock 0" указывает будут ли менты реагировать на то, что вы угнали машину,если 0,то будут,а если 1,то им это будет по-барабану. Цифра 40000 указывает цену машины,правда зачем она нужна,ведь тачку всё равно не продать. X,Y,Z - понятно,что это координаты машины. Цифра 180.0 указывает на угол поворота машины. 2 команда: $Car - имя тр. средства,которое мы только-что создали. 101 - частота появления машины,если поставим 0,то вообще никогда тачку не увидим,а вот если 101,то транспортное средство будет появлятся всегда.
Теперь вы знаете,как создать припаркованную машину,давайте создадим припаркованных Урануса и Инфернуса возле дома CJ'я: Если вы ещё не создали поток с именем MyCars,то создаёи его вот так:
create_thread @MyCars // Если не поняли,где его создавать,то читайте первую главу.
:MyCars wait 0 014B: $Car1 = init_parked_car_generator #URANUS 8 8 0 alarm 0 door_lock 0 0 40000 at 2488.74 -1670.0 13.34 angle 120.0 // Команда должна быть написана на одной строке !!! 014C: set_parked_car_generator $Car1 cars_to_generate_to 101 014B: $Car2 = init_parked_car_generator #INFERNUS 8 8 0 alarm 50 door_lock 0 0 40000 at 2479.71 -1671.72 13.4 angle 120.0 // Команда должна быть написана на одной строке !!! 014C: set_parked_car_generator $Car2 cars_to_generate_to 101 end_thread
Если у вас игра начинается не возле дома CJ'я,то едьте к его дому и смотрите на припаркован- ные машины,а если вы с самого начала там появляетесь,то отъедьте недалеко,потом приедьте обратно и получите своего Урануса и Инфернуса вместе с ним тоже.Теперь эти машины будут появлятся постоянно. А вот сейчас я расскажу о транспорте,который специально создают для потоков,так называемом- одноразовом транспорте.
2) Общие команды,т.е. команды применимые ко всем видам транспртных средств:
Начнём конечно с команды создания транспртного средства: car.Create($Car,#MODEL,1024.0,768.0,32.0) $Car - имя нашей машины. #MODEL - модель машины,где смотреть все модели написал раньше. 1024.0 - координата по оси X. 768.0 - координата по оси Y. 32.0 - координата по оси Z. Эта команда создаёт транспорт один раз,потом он там появлятся сам не будет,поэтому её и ис- пользуют во всех потоках и миссиях. car.Destroy($Car) - уничтожает машину. car.PutAt($Car,X,Y,Z) - помещает в заданную точку. 03C0: $Car = actor $PLAYER_ACTOR car - записывает в переменную $Car машину актёра. 02E3: $Speed = car $Car speed - присваевает переменной скорость машины. 04BA: set_car $Car speed_instantly 20.0 - устанавливает скорость машины. Car.SetMaxSpeed($Car, 10.0) - устанавливает максимальную скорость машины,т.е. ту ,до которой машина может сама разогнаться. car.RemoveReferences($Car) - удалить все свединия о машине $Car. 0229: set_car $Car color_to 11 0 - цвета написаны в файле "Carcols.dat" из папки "data". 0294: set_car $Car sprayable 0 - машину можно перекрашивать,если 1 и нельзя,если 0. car.StorePos($Car,$X,$Y,$Z) - записать координаты машины в переменные $X,$Y и $Z. 0622: AS_unknown_remove_actor $Actor from_car $Car - убрать актёра из машины. 05CD: AS_actor $Actor exit_car $Car - актёр выходит из машины,если та стоит и выпрыгивает, если едет. 0407: create_coordinate $X1 $Y1 $Z1 from_car $Car offset 0.0 10.8 3.0 0683: attach_car $Car_1 to_car $Car_2 at_offset 0.0 -4.6 0.65 rotation 0.0 0.0 0.0 - прицепляет одну машину к другой на опред. расстоянии под опред. углами вращения. marker.CreateAboveCar($Mark,$Car) - создаёт маркер над транспортным средством. car.DoorStatus($Car) = 0 - двери у машины открыты,если 2,то закрыты. Car.LockInCurrentPosition($Car) = true - закрепить машину в конкретной позици. car.SetImmunities($Car,1,1,1,1,1) - устанавливает машине определённые имунитеты,тут первая цифра - защита от пуль, вторая - от огня, третья - от взрывов, четвертая - от оружия ближнего боя,пятая от столкновений. 066C: $P = attach_particle "CEMENT" to_vehicle $C offset 0.0 -4.4 0.0 rotation 0.0 1.0 0.0 1 - прицепить Раrticle эффект к машине.Все Раrticle эффекты описаны в главе "Раrticle эффекты". 041E: set_radio_station 0 - устанавливает радиостанцию.Вот их номера: 0 - PlayBack 1 - K-Rose 2 - K-DST 3 - Bounce FM 4 - SFUR 5 - Radio Los Santos 6 - Radio X 7 - CSR 103.9 8 - K-JAH West Radio 9 - Master Sounds 10 - WCTR Talking Radio 11 - MP3 Player 12 - Выключить радио
3) Машины,мотоциклы и велосипеды: Подбирайте команды с умом,например на велосипед или мотоцикл гидравлику не поставишь,просто некоторые команды тут только для машин.
car.DriveTo($Car) - машина едет в заданную точку. car.ToggleTaxiLight($Car) = true - включить значок такси на машине,false - выкл. 067F: set_car $Car headlights 2 - включить у машины фары,если 0,то выключить. 06E9: request_car_component #COMPONENT - загрузить компонент тюнинга 06E7: $Comp = add_car_component #COMPONENT to_car $Car - прицепить машине компонент тюнинга. Car.SetToNormalDriver($Car) - устанавливает машине нормального водителя. Car.SetDriverBehaviour($Car,Nowhere) - устанавливает тип езды для машины,0 или Nowhere - никуда не ехать,1 или FollowRoad - следовать дороге, 2 - ездить за игроком, 4 - ездить за игроком,8 - ехать напрямик,не обращая внимания на дорогу. 07F8: car $Car_1 follow_vehicle $Car_2 radius 27.0 - заставляет одну машину следовать за другой,держась на определённом расстоянии. car.ToggleHydraulics($Car) = true - устанавливает на машину гидравлику. 0657: car $Car open_component 0 - открывает часть машины.Вот номера частей: 0 - Капот. 1 - Багажник. 2 - Дверь водителя или левого переднего места. 3 - Дверь правого переднего места. 4 - Дверь заднего левого места. 5 - Дверь заднего правого места. 00AE: unknown_set_car 71@ to_ignore_traffic_lights 2 - машина игнорирует светофоры(2-да). 0674: set_car_model #ADMIRAL numberplate "VOVAN" - присваевает модели машины задний номер с текстом VOVAN. Сначало надо написать эту команду,а потом уже создать машину с такой моделью. 0939: attach_car $Car to_object $Obj at_offset 0.0 0.0 -0.8 rotation 0.0 0.0 180.0 - прицепить машину к объекту.
4) Команды,применяемые к самолётам:
04D2: unknown_RC_car $Plane race_to 1600.0 1200.0 64.0 - заставляет настоящий самолёт лететь к заданной точке. 070F: (unknown) $Plane 0.0 130.0 130.0 - заставляет самолёт лететь под опред.углом(0.0) на опред.высоте(130.0 130.0).Если рассмотреть карту SA,как плоскость,то легко подсчитать угол полёта. 08E6: plane $Plane change_landing_gear 1 - шасси у самолёта выпушенуо,если 1 и не выпущено, если 0,но временами эти команды проглючивают. 084E: flying_vehicle $SamNeLet use_primary_gun 1 - использование самолётом (ГИДРА) ракет. 0841: flying_vehicle $SamNeLet use_secondary_gun 1 - использование пулемёта (ДИЛЛЕР). 0724: flying_vehicle $SamNeLet follow_and_attack_player $PLAYER_CHAR radius 40.0 - самолёт держится на определённом радиусе от игрока и атакует его.
5) Команды,применяемые к вертолётам:
04A2: heli $Heli fly_to 640.0 480.0 128.0 speed 60.0 60.0 - указывает вертолёту,куда надо лететь,высотой являются последние два параметра "60.0 60.0". 084E: flying_vehicle $Heli use_primary_gun 1 - использование вертолётом (HUNTER) ракет. 0841: flying_vehicle $Heli use_secondary_gun 1 - исп. вертолётом (HUNTER) пулемёта. 0724: flying_vehicle $Heli follow_and_attack_player $PLAYER_CHAR radius 40.0 - вертолётом держится на определённом радиусе от игрока и атакует его. 0788: enable_heli $Heli magnet 1 - устанавливает на вертолёт магнит,если 0,то убирает.
6) Команды применяемые к лодкам:
02D3: boat $Boat drive_to 10000.0 -100.0 0.0 - лодка плывёт в заданную точку. 02DB: set_boat $Boat speed_to 50.0 - установить лодке скорость.
7)Команды применяемые к поездам:
06D8: $Train = create_train_at 2285.1523 -1257.4998 23.0 type 15 direction 1 - создаёт поезд типа 15 и ставит его на рельсы. 06DD: set_train $Train speed 23.0 - устанавливает скорость поезда. 06D7: toggle_train_traffic 0 - частота появления поездов(0-нет вообще,1+ - как всегда).
8) Вот проверки,применяющиеся к транспортным средствам :
0185: car $Car health >= 10 - жизни машины $Car больше либо равняется 10 07AB: car $Car_1 attached_to_car $Car_2 - машина 1 пицеплена к машине 2. 0495: car $Car burning - машина горит. 02CA: car $Car bounding_sphere_visible - игрок видит авто $Car 02BF: car $Car sunk - машина с именем $Car упало в воду 0981: train $Poezd wrecked - поезд с именем $Poezd уничтожен 01C1: car $Car stopped - машина с именем $Car остановилась 03C9: car $Car damaged - машина с именем $Car повреждена 096E: car $Car lowrider - машина с именем $Car лоурайдер 01C1: car $Car stopped - машина с именем $Car стоит на месте Car.Id($car) == #HYDRA - модель машины с именем $Car-это #HYDRA //тут перед всем опкодом можно поставить "not",потому-что тут нет кодового слова. 01F3: car $Car airborne - машина с именем $Car находится в воздухе //я думаю,что вы поняли,что и в эту команду можно вставить "not". 03CE: car $Car stuck - машина с именем $Car перевёрнута 0119: car $Car wrecked - машина с именем $Car уничтожена 01B0: car $Car stopped 0 near_point X Y Z radius 4.0 4.0 4.0 машина с именем $Car остано- вилась в радиусе 4.0 от точку с координатами X Y Z 01F4: car $Car flipped - машина с именем $Car тонет 056E: $Car - машина $Car существует 0431: car $Car car_passenger_seat_free 0 - место 0 в машине $Car свободно 051D: cars $Car_1 and $Car_2 collided - машина $Car_1 и $Car_2 столкнулись. 0803: car $Car have_hydraulics - у машины $Car есть гидравлика
9) Примеры:
1. Давайте сделаем так,что когда игрок садится в машину,то она становится неуязвимой,и все двери у неё становятся запертыми,так что менты вас оттуда не смогут вытащить:
create_thread @SuperCar //создаём поток,если не знаете как,то читайте первую главу.
:SuperCar // Начинаем поток wait 5000 // ждём 5 секунд if and // условие с выполнением всех подусловий player.defined($Player_char) // подусловие - игрок существует actor.driving($Player_actor) // подусловие - игрок за рулём jf @SuperCar // если эти два подусловия не выполнились,то переходим 03C0: $Car = actor $PLAYER_ACTOR car//Присваиваем переменной имя машины игрока // на начало car.SetImmunities($Car,1,1,1,1,1) // устанавливаем машине иммунитеты car.DoorStatus($Car) = 2 // делаем двери закрытыми. wait 2000
:SuperCar_2 // создаём второй label wait 0 // не ждём ,но писать всё равно надо if // просто условие not actor.driving($Player_actor) // актёр не за рулём jf @SuperCar_2 // если всё таки за рулём,то переходим на начало label'a car.DoorStatus($Car) = 0 // если он не за рулём,то возвращаем машине откр. двери car.SetImmunities($Car,0,0,0,0,0) // и делаем машину опять уязвимой car.RemoveReferences($Car) // и удаляем все сведения о машине игрока,чтобы память jump @SuperCar // переходим к началу потока //зря не забивать
|