Основы написания скриптов
В этой небольшой статье я расскажу, как же запустить нашу малюсенькую карту. Предупреждаю, нужны прямые руки и желательны хотя бы самые малые знания в программировании. Для написания скриптов достаточно блокнота, но для компиляции извольте скачать программу miss.exe, официальный компилятор от разработчиков.
Разберем минимум, необходимый для старта. Откройте блокнот и введите в нем следующие строки:
PLAYER_PED player = ( 250.0 , 4.0 , 2.0 ) 25 0
LEVELSTART
SET_DEATHARREST_STATE ( player , ON )
LEVELEND
В первой строке формата
PLAYER_PED playername = ( float X , float Y , float Z ) remap rotation
мы задаем начальные координаты игрока, где:
playername – имя нашего персонажа для дальнейшего использования в скрипте.
X, Y, Z – координаты старта (координаты можно получить в строке состояния редактора, наведя на нужный блок).
remap – номер скина персонажа, все номера скинов есть в справочнике.
rotation – поворот персонажа, измеряется в градусах (0 – юг, 180 - север).
LEVELSTART
Запускает уровень. Все что написано до этой команды – лишь описания и одежда актеров. Считать все что выше – как в программировании – описания переменных.
SET_DEATHARREST_STATE ( player , ON )
Команда, которая выполняется сразу после старта, включает возможность ареста и убийства главного героя, чтобы было не так сладко
LEVELEND
Заключающая строка скрипта.
Итак, сохраним данный четырех строчный скрипт под именем mymap.mis. Откройте его программой miss.exe, скомпилируйте – Run\Run Parser. Полученный на выходе scr файл кидаем в папку gta2\data, туда же нашу gmp-карту. Удостоверьтесь в правильности указанных вами в скрипте стартовых координат, а то окажитесь где-нибудь в воде

Для старта нашу карту необходимо прописать в test1.seq, так что придется скачать seq file. Не поленитесь вeрнуться сюда, как только проверите работоспособность карты и скриптов

Удачи.
:здесь по замыслу автора вы читаете раздел Seq файл:
Теперь мы знаем что к чему и как проверять свою карту, продолжим изучение скриптов. Оружие. Оружие на карте можно разместить тремя способами. Генератором оружия, который обновляет исчезнувший предмет, просто объектом одноразового подбора, и банально дать оружие игроку командой
GIVE_WEAPON ( charname , weapon_type , amount of ammo )
Где charname – кому дать, в данном случае нашему главному герою, имя которого ранее описано в PLAYER_PED, weapon_type – типа оружия, в данном случае базука (весь список можно найти в справочнике), amount of ammo – количество (99 - максимальное).
Sample: GIVE_WEAPON ( player , rocket_launcher , 99 )
Генератор объектов описывается как переменная и создается во время игры, либо до LEVELSTART полностью:
GENERATOR name = ( float X , float Y , float Z ) rotation object-type mindelay maxdelay ammo
Где name – имя нашего генератора, xyz – координаты, rotation – поворот, mindelay-maxdelay – минимальное и максимальное время регенерации (в тысячных секунды), ammo – кол-во выдаваемого наркотика.
Sample: GENERATOR generator_shutgun = ( 217.0 , 48.0 , 2.0 ) 0 collect_06 1300 1300 30
НО! Генератор надо включить, т.к. по умолчанию он выключен

SWITCH_GENERATOR ( generator_shutgun , ON )
Вот теперь все

Полный список объектов можно получить в справочнике.
Так же можно просто положить на дорогу оружие, описав до старта
OBJ_DATA name
И создав объект после старта
name = CREATE_OBJ ( float X , float Y , float Z ) rotation model value END
Но можно еще проще – создать сразу, до старта:
OBJ_DATA name = ( float X , float Y , float Z ) rotation model value
Кстати, таким же макаром с помощью OBJ_DATA создаются и авто-мастерские

Только вместо model ставится car_shop, а в value тип мастерской, например oilslick_shop.
Авто. Авто можно поставить на обочину двумя способами.
PARKED_CAR_DATA car_1 = ( 247.5 , 2.5 , 2.0 ) 34 90 spider //описывать до старта
или обычным нам способом, как с объектами
CAR_DATA car1
LEVELSTART
car1 = CREATE_CAR (87.9, 118.3, 2.0) 7 180 spider END
или
CAR_DATA name = ( float X , float Y , float Z ) remap rotation model
Где remap – цвет, а с остальным все и так понятно. Весь список авто и красок можно найти в справочнике. Так же авто можно дать сигнализацию. Перед этим авто должно обязательно создано!
GIVE_CAR_ALARM ( carname )
Радио. Максимум можно расположить на карте 4 радиостанции. Описывать до старта.
RADIO_STATION name = radio_type ( x , y )
Список радио можно найти в справочнике. Если кто-то знает зачем указывать координаты радио – обязательно сообщите

Для меня это остается загадкой.
Количество необходимых для прохождения карты очков можно установить следующим образом:
DECLARE_FINISH_SCORE ( кол-во очков )
Описывается после старта, как команда.
Все эти скрипты являются основными, с этими знаниями можно только и делать что обычные мясные карты

Но даже зная эти основы, вы никогда не напишите никакого сюжета. Для более подробного изучения следует обратиться к официальному руководству(лежит вместе с miss.exe), где есть полные описания всех команд в игре, а так же изучить примеры разборов.
Seq File
GTA2\Data\test1.seq - это файл, содержащий информацию, какие карты запускать при выборе того или иного района в singleplayer. Максимум - 3 района + 9 бонус карт. Т.е. можно в игру загрузить сразу и Dullswill, и Mini с ботом, и еще что-нибудь, например оставить стандартный район. Примерно это будет выглядеть так (без бонус карт):
MainOrBonus = MAIN //Выбираем будет это район или его бонус
GMPFile = Dullswill.gmp //Имя карты
STYFile = wil.sty //Имя файла с тайлами
SCRFile = Dullswill.scr //Имя файла скриптов
Description = City 1 Map //Номер района
MainOrBonus = MAIN
GMPFile = Mini_M.gmp
STYFile = wil.sty
SCRFile = Mini.scr
Description = City 2 Map
MainOrBonus = MAIN
GMPFile = bil.gmp
STYFile = bil.sty
SCRFile = bil.scr
Description = City 3 Map
С таким test1.seq, в игре первым районом будет Dullswill, вторым Mini с ботом, третьим стандартный, а бонус карт не будет.
Справочник
Справочник содержит расшифровку и списки индетификаторов.
Оружие для персонажей
PISTOL
MACHINE_GUN
ROCKET_LAUNCHER
ELECTRO_GUN
MOLOTOV
SHOTGUN
ELECTRO_BATON
SILENCED_MACHINE_GUN
FLAME_THROWER
DUAL_PISTOL
GRENADE
MICROWAVE
Оружие для авто
CAR_BOMB
CAR_MACHINE_GUN
CAR_OIL
CAR_FLAMETHROWER
CAR_MINE
WATER_CANNON
TANK_GUN
JEEP_GUN
Авто
ALFA
ALLARD
AMDB4
APC
BANKVAN
BMW
BOXCAR
BOXTRUCK
BUG
BUG2
BUICK
BURNT1
BURNT2
BUS
COPCAR
DART
EDSEL
EDSELFBI
F250
FIAT
FIRETRUK
GRAHAM
GTRUCK
GT24640
GT90
GUNJEEP
HOTDOG
ICECREAM
ISETLIMO
ISETTA
JEEP
JEFFREY
LIMO
LIMO2
MEDICAR
MERC
MESSER
MIURA
MONSTER
MORGAN
MORRIS
PICKUP
RTYPE
SKYLINE
SPIDER
SPRITE
STINGRAY
STRATOS
STRATOSB
STRIPETB
STYPE
STYPECAB
SWATVAN
T2000GT
TANK
TANKER
TAXI
TBIRD
TOWTRUCK
TRAIN
TRAINCAB
TRAINFB
TRANCEAM
TRUKCAB1
TRUKCAB2
TRUKCONT
TRUKTRNS
TVVAN
VAN
VESPA
VTYPE
WBTWIN
XK120
ZCX5
Цвета авто
0 AlpBlue
1 Black
2 Black3
3 Blue
4 BlueGrey
5 BrGreen
6 BriteRed
7 Brown
8 Browner
9 BSilver
10 BYellow
11 Cream
12 Cyan
13 DBeige
14 DBlue
15 DeepBlue
16 DGreen
17 DRed
18 Drust
19 Gold
20 Green
21 Grey
22 LBrown
23 Olive
24 Orange
25 PaleBlue
26 PinkRed
27 Purple
28 Red
29 Rust
30 Silver
31 Skyblue
32 Turquoiz
33 White
34 Whiter
35 Yellow
36 zzgbank
Объекты
COLLECT_00 // питолет
COLLECT_01 // автомат
COLLECT_02 // базука
COLLECT_03 // електрошок
COLLECT_04 // коктель молотова
COLLECT_05 // гранаты
COLLECT_06 // дробовик
COLLECT_08 // огнемет
COLLECT_09 // автомат с глушителем
COLLECT_10 // двойной пистолет
COLLECT_15 // авто - бомба
COLLECT_16 // авто - масло
COLLECT_17 // авто - мины
COLLECT_18 // авто - автомат
COLLECT_19 // авто - пушка танка
COLLECT_20 // авто - водяная пушка
COLLECT_21 // авто - огренная пушка
COLLECT_22 // авто - пулемет
COLLECT_23 // авто - мгновенная бомба
COLLECT_28 // множитель
COLLECT_29 // жизнь
COLLECT_30 // здоровье
COLLECT_31 // броня
COLLECT_32 // ключ из тюрьмы
COLLECT_33 // взятка
COLLECT_34 // неуязвимость
COLLECT_35 // двойной урон
COLLECT_36 // двойная скорость перезарядки
COLLECT_37 // электроудар
COLLECT_38 // уважение
COLLECT_39 // невидимость
COLLECT_40 // банда (только мльтиплеер)
Мастерские
CAR_SHOP
BOMB_SHOP
MINES_SHOP
OILSLICK_SHOP
MACHINEGUN_SHOP
Скин персонажа
0 Blue Police
1 Green Police
2 Red Police
3 Yellow Police
4 Khaki Police
5 Red head Redneck
6 Blond head Redneck
7 Yellow Scientist
8 Zaibatsu remap
9 Kristna remap
10 Russian remap
11 Loony remap
12 Elvis remap
13 Yakuza remap
14 Fireman remap
15 Green Shorts Ped
16 Medic Remap
17 Mugger Remap
18 Blue Dumy remap
19 Light Blue Dummy remap
20 T-Shirt and shorts dummy remap
21 short sleeved shirt and trousers dummy remap
22 prison uniform
23 Hulk1 ( normal )
24 Hulk2 ( green )
25 player ped
26 naked dummy
27-52 assorted dummy remaps
Радиостанции
STATION_ZAIBATSU
STATION_YAKUZA
STATION_LOONIE
STATION_REDNECK
STATION_KRISHNA
STATION_RUSSIAN
STATION_SCIENTIST
STATION_INDUSTRIAL
STATION_RESIDENTIAL
STATION_DOWNTOWN
Пример разбора.
При создании уровня нужно разложить его на несколько логически законечнных отрывков. Начало действия - действие - завершение действия. Начало: копы бегут к двери и открывают ее, напарник персонажа бьет одного из них, после чего начинается погром. Игрок убивает остальных копов и освобождает Марселлоса. Уоллеса, надо полагать. Итак, самым первым действием будет простое - копы бегут к двери. Началом этого скрипта служит сам старт игры. Персонажам дается характеристика определяющая их отношение к игроку и его напарнику, а так же задание - двигаться в некую точку. По прибытии в пункт назначения - опасная близость к напарнику героя - этот отрывок заканчивается и начинается следующий.
//устанавливаем "банду"
SET_GANG_INFO (prisonersgang , 22 , ELECTRO_BATON , ELECTRO_BATON , ELECTRO_BATON , 0, 0.0 , 0.0 , 0.0 , 0, bug , 0 )
//устанавливаем уровень разыскиваемости
DECLARE_POLICELEVEL (4)
//устанавливаем зоны
MAP_ZONE prisoners1 = ( 0 , 0 , 0 , 0 , 250 , 0 , 0 , 0 , 1000 , 0 , 0)
//координаты игрока
PLAYER_PED player = (98.0 , 96.0 , 2.0) 22 0
//счетчики для внутриигровых событий
SAVED_COUNTER getaway=1
COUNTER world=1
COUNTER coppers=1
//объекты, броня
OBJ_DATA armor1
//стрелки
ARROW_DATA arrow1
ARROW_DATA arrow2
//звуки
SOUND dooropen
SOUND alarm1
SOUND alarm2
SOUND alarm3
SOUND alarm4
SOUND haha
//персонажи
CHAR_DATA cop1
CHAR_DATA cop2
CHAR_DATA cop3
CHAR_DATA cop4
CHAR_DATA cop5
CHAR_DATA cop6
CHAR_DATA cop7
CHAR_DATA cop8
CHAR_DATA cop9
CHAR_DATA cop10
CHAR_DATA cop11
CHAR_DATA cop12
CHAR_DATA cop13
CHAR_DATA cop14
CHAR_DATA tower1
CHAR_DATA tower2
CHAR_DATA tower3
CHAR_DATA tower4
CHAR_DATA tower5
CHAR_DATA tower6
CHAR_DATA tower7
CHAR_DATA tower8
CHAR_DATA tower9
CHAR_DATA tower10
CHAR_DATA tower11
CHAR_DATA friend1
CHAR_DATA friend2
CHAR_DATA marsellos
CHAR_DATA guard1
CHAR_DATA guard2
CHAR_DATA guard3
CHAR_DATA guard4
//тачки
CAR_DATA car1
CAR_DATA car2
CAR_DATA car3
CAR_DATA car4
CAR_DATA car5
CAR_DATA car6
CAR_DATA truck1
CAR_DATA truck2
CAR_DATA swatcar1
CHAR_DATA guardcar1
CHAR_DATA guardcar2
CHAR_DATA guardcar3
CHAR_DATA guardcar4
//начало
LEVELSTART
//уровень освещенности по дефолту
SET_AMBIENT_LEVEL (0.2, 0)
//расставляем персонажей и прописываем их ВНЕШНИЙ ВИД
marsellos = CREATE_CHAR (87.0, 103.0, 2.0) 22 0 criminal END
friend2 = CREATE_CHAR (98.0, 100.0, 2.0) 22 180 criminal END
friend1 = CREATE_CHAR (97.3, 96.1, 2.0) 22 180 dummy END
cop1 = CREATE_CHAR (92.5, 115.5, 2.0) 0 180 dummy END
cop2= CREATE_CHAR (93.5, 115.5, 2.0) 0 180 police END
cop14= CREATE_CHAR (93.5, 114.5, 2.0) 0 180 police END
cop3= CREATE_CHAR (100.5, 98.5, 2.0) 0 225 police END
cop4= CREATE_CHAR (94.5, 98.5, 2.0) 0 120 police END
cop5= CREATE_CHAR (91.5, 116.5, 2.0) 0 180 police END
cop6= CREATE_CHAR (93.5, 116.5, 2.0) 0 180 police END
cop7= CREATE_CHAR (83.5, 104.5, 2.0) 0 90 police END
cop8= CREATE_CHAR (83.5, 105.5, 2.0) 0 90 police END
cop9= CREATE_CHAR (81.3, 111.5, 2.0) 3 180 swat END
tower1 = CREATE_CHAR (76.5, 120.5, 7.0) 0 180 police END
tower2 = CREATE_CHAR (88.5, 122.5, 7.0) 0 180 police END
tower3 = CREATE_CHAR (76.5, 106.5, 7.0) 0 90 police END
tower4 = CREATE_CHAR (88.5, 132.5, 7.0) 0 270 police END
tower5 = CREATE_CHAR (96.5, 132.5, 7.0) 0 270 police END
tower6 = CREATE_CHAR (96.5, 127.5, 7.0) 0 225 police END
tower7 = CREATE_CHAR (106.5, 121.5, 7.0) 0 225 police END
tower8 = CREATE_CHAR (107.5, 108.5, 7.0) 0 270 police END
tower9 = CREATE_CHAR (104.5, 91.5, 7.0) 0 0 police END
tower10 = CREATE_CHAR (92.5, 91.5, 7.0) 0 0 police END
tower11 = CREATE_CHAR (77.5, 91.5, 7.0) 0 45 police END
cop10= CREATE_CHAR (83.0, 120.0, 2.0) 3 0 swat END
cop11= CREATE_CHAR (83.0, 120.5, 2.0) 3 0 swat END
//cop12= CREATE_CHAR (83.0, 121.5, 2.0) 3 0 swat END
//cop13= CREATE_CHAR (83.0, 119.5, 2.0) 3 0 swat END
guard1= CREATE_CHAR (89.8, 135.2, 2.0) 3 270 swat END
//расставляем тачки и прописываем их тип
car1 = CREATE_CAR (87.9, 118.3, 2.0) 0 180 copcar END
car2 = CREATE_CAR (86.9, 118.3, 2.0) 7 180 edsel END
car3 = CREATE_CAR (85.9, 118.3, 2.0) 3 180 spider END
car4 = CREATE_CAR (84.9, 118.3, 2.0) 0 180 morris END
car5 = CREATE_CAR (83.9, 118.3, 2.0) 30 180 fiat END
car6 = CREATE_CAR (103.9, 111.3, 2.0) 0 180 copcar END
car6 = CREATE_CAR (104.9, 111.3, 2.0) 12 180 limo END
truck1 = CREATE_CAR (129.5, 92.5, 2.0) 7 95 jeep END
guardcar1 = CREATE_CAR (91.4, 135.3, 2.0) 0 0 SWATVAN END
guardcar2 = CREATE_CAR (91.4, 136.7, 2.0) 0 180 SWATVAN END
guardcar3 = CREATE_CAR (94.5, 122.7, 2.0) 0 188 SWATVAN END
guardcar4 = CREATE_CAR (94.5, 124.2, 2.0) 0 188 SWATVAN END
swatcar1 = CREATE_CAR (85.5, 121.5, 2.0) 0 210 SWATVAN END
//раздаем оружие
GIVE_WEAPON (cop1 , shotgun)
GIVE_WEAPON (cop3 , pistol)
GIVE_WEAPON (cop4 , pistol)
GIVE_WEAPON (cop5 , pistol)
GIVE_WEAPON (cop6 , pistol)
GIVE_WEAPON (cop7 , pistol)
GIVE_WEAPON (cop8 , pistol)
GIVE_WEAPON (cop9 , machine_gun)
GIVE_WEAPON (cop10 , machine_gun)
GIVE_WEAPON (cop11 , machine_gun)
//GIVE_WEAPON (cop12 , machine_gun)
GIVE_WEAPON (cop14 , pistol)
GIVE_WEAPON (tower1 , molotov)
GIVE_WEAPON (tower2 , molotov)
GIVE_WEAPON (tower3 , molotov)
GIVE_WEAPON (tower4 , molotov)
GIVE_WEAPON (tower5 , molotov)
GIVE_WEAPON (tower6 , molotov)
GIVE_WEAPON (tower7 , molotov)
GIVE_WEAPON (tower8 , molotov)
GIVE_WEAPON (tower9 , molotov)
GIVE_WEAPON (tower10 , molotov)
GIVE_WEAPON (tower11 , molotov)
GIVE_WEAPON (guard1 , rocket_launcher)
//ставим броню
armor1 = CREATE_OBJ ( 82.0 , 105.0, 2.0 ) 0 COLLECT_31 END
//расставляем персонажам реакцию на выстрелы
SET_CHAR_THREAT_REACTION ( cop1 , NO_REACTION )
SET_CHAR_THREAT_REACTION ( cop2 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( cop3 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( cop4 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( cop5 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( cop6 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( cop7 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( cop8 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( cop9 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( cop14 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( friend1 , NO_REACTION )
SET_CHAR_THREAT_REACTION ( friend2 , NO_REACTION )
SET_CHAR_THREAT_REACTION ( marsellos , NO_REACTION )
SET_CHAR_THREAT_REACTION ( tower1 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower2 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower3 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower4 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower5 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower6 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower7 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower8 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower9 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower10 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( tower11 , REACT_AS_NORMAL )
SET_CHAR_THREAT_REACTION ( guard1 , REACT_AS_NORMAL )
//СУТЬ СКРИПТА. Показать игроку сообщения и заставить 3 полицейских
//идти в конкретную зону.
//скрипт: (до тех пор пока счетчик гетавай=1, покажи мессагу из r.gxt
//под номером 1019 и сообщение 1020, потом дай задание трем персонажам
//"идти в нужную зону", и если персонаж коп2 придет в нужную зону,
//переведи счетчик гетавай в положение 2)
WHILE (getaway=1)
DISPLAY_MESSAGE (1019)
DISPLAY_BRIEF (1020)
SET_CHAR_OBJECTIVE (cop1, GOTO_AREA_ON_FOOT, 97.5, 98.1, 2.0)
SET_CHAR_OBJECTIVE (cop2, GOTO_AREA_ON_FOOT, 97.5, 97.5, 2.0)
SET_CHAR_OBJECTIVE (cop14, GOTO_AREA_ON_FOOT, 94.0, 97.5, 2.0)
IF (LOCATE_CHARACTER_ON_FOOT ( cop2 , 97.5 , 97.5, 2.0, 1.0, 1.0))
set getaway=2
ENDIF
ENDWHILE
//СУТЬ СКРИПТА: Показать игроку новое сообщение, открыть клетку
//игрока, заставить одного копа убить игрока, а другого - убить этого
//копа, остальные пусть стоят на месте
//срипт: (до тех пор пока гетавай=2, убери все сообщения с экрана,
//покажи сообщение 1022, потом открой дверь и убери из игры нужный блок
//(открой клетку то есть), потом дай задание персонажам, выведи стрелку
//на полицейского, и переведи счетчик в положение 3)
WHILE (getaway=2)
CLEAR_ALL_BRIEFS ( )
DISPLAY_BRIEF (1022)
dooropen = CREATE_SOUND ( 98.0 , 97.1 , 2.0 ) GARAGE_OPEN play_instant END
REMOVE_BLOCK ( 97 , 97 , 2 , DONT_DROP )
SET_CHAR_OBJECTIVE (cop2, kill_char_any_means, player)
SET_CHAR_OBJECTIVE (cop1, WAIT_ON_FOOT)
SET_CHAR_OBJECTIVE (cop14, WAIT_ON_FOOT)
SET_CHAR_OBJECTIVE (friend1, kill_char_any_means, cop2)
POINT_ARROW_AT (arrow1, cop2)
set getaway=3
ENDWHILE
//СУТЬ СКРИПТА: если полицейского ударил персонаж friend1, заставить
//перевести всех остальных копов в "преступников", и заставить их
//следовать за игроком, раздать им оружие и организовать сирену
//скрипт: (пока счетчик гетавай=3, если персонажа коп-2 ударил
//персонаж фриенд-1, очисти все сообщения с экрана и покажи сообщение
//1021, потом измени тип персонажей, добавь группу персонажей к игроку
//чтобы они за ним следовали, потом добавь в эту группу персонажей,
//раздай им оружие, создай 4 звука тревоги, убери старую стрелку и
//поставь новую, измени уровень полиции на 4, и переведи счетчик на 4)
WHILE (getaway =3 )
IF (CHECK_CHAR_BEEN_PUNCHED_BY ( cop2 , friend1))
CLEAR_ALL_BRIEFS ( )
DISPLAY_BRIEF (1021)
SET_CHAR_OCCUPATION ( friend1 , criminal )
SET_CHAR_OCCUPATION ( cop1 , criminal )
ADD_GROUP_TO_CHARACTER (player, 0)
ADD_EXISTING_CHAR_TO_GROUP ( player, friend1 )
ADD_EXISTING_CHAR_TO_GROUP ( player, cop1 )
GIVE_WEAPON (friend1, shotgun)
GIVE_WEAPON (player, shotgun)
alarm1 = CREATE_SOUND ( 92.5 , 97.5 , 2.0 ) PRISON_alarm play_forever END
alarm2 = CREATE_SOUND ( 92.5 , 111.5 , 2.0 ) PRISON_alarm play_forever END
alarm3 = CREATE_SOUND ( 92.5 , 123.5 , 2.0 ) PRISON_alarm play_forever END
alarm4 = CREATE_SOUND ( 83.5 , 119.5 , 2.0 ) PRISON_alarm play_forever END
remove_arrow (arrow2)
point_arrow_at (arrow1, 98.0, 99.0, 2.0)
ALTER_WANTED_LEVEL ( player , 4 )
set getaway=4
ENDIF
ENDWHILE
//СУТЬ СКРИПТА: сымитировать расстрел игроком замка клетки Марселлоса,
после чего открыть ему клетку и присоединить Марселлоса к группе
игрока, и дать ему пистолет
//скрипт: (пока счетчик гетавай=4, если персонаж стреляет в зоне
//такой-то, убери все сообщения, покажи сообщение 1023, убери блок
//такой-то, открой дверь, создай звук хохота, добавь персонажа в группу,
//дай ему оружие, переведи стрелку на новый объект)
WHILE (getaway=4)
IF (IS_CHAR_FIRING_IN_AREA ( player , 98.0 , 98.8 , 2.0 , 0.5 , 0.5 ))
CLEAR_ALL_BRIEFS ( )
DISPLAY_BRIEF (1023)
REMOVE_BLOCK (97, 98, 2, DONT_DROP)
dooropen = CREATE_SOUND ( 98.0 , 98.8 , 2.0 ) GARAGE_OPEN play_instant END
haha = CREATE_SOUND ( 98.0 , 98.8 , 2.0 ) SMUG_LAUGH play_instant END
ADD_EXISTING_CHAR_TO_GROUP ( player, friend2 )
GIVE_WEAPON (friend2 , pistol)
point_arrow_at (arrow1, 91.0, 105.0, 2.0)
set getaway=5
ENDIF
ENDWHILE
..........................
..........................
..........................
//конец скрипта
LEVELEND
http://gta2info.3dn.ru/load <<--Все проги моно скачать тут!
Сообщение отредактировал Esparo: 20 January 2012 - 14:38