Извините что кидаю сюда, тему просто создать не могу((( (группа не позволяет ) Вот решил выложить мануалы по созданию модификаций
[cut noguest=ПОСТАНОВКА УСЛОВИЙ]Чтобы проверить выполнение того или иного действия игроком или NPC, необходимо задать условие. Например, мы хотим узнать, достиг ли игрок нужной точки на карте (эта команда используется практически в любой миссии игры). Для этого нужно поставить условие:
if 0
00EC: actor $PLAYER_ACTOR 0 ()near point 1812.369 -1929.922 radius 80.0 80.0
Первая команда означает, что идет постановка условия, цифра 0 в первой строке показывает, что условие всего лишь одно. Если нужно, чтобы одновременно выполнялось несколько условий, например два, смело меняйте 0 на 1. Максимальное число допустимых условий в игре — восемь. Команда с проверкой на 8 условий будет выглядеть следующим образом:
if 7
Если же вы хотите, чтобы выполнялось одно из условий, то нужно использовать следующую конструкцию:
if 21
Пример:
00D6: if 21
Наша цель - малогабаритный авиалайнер, наше оружие - пусковая установка...
8118: NOT actor $my_act dead
8119: NOT car $my_act wrecked
После того как условия наложены, необходимо создать переход. Переходы делятся на условные, которые осуществляются при наличии определенных условий, и безусловные — выполняемые без всяких условий. Создаются переходы следующими командами:
004D: jump if false ЈЈCheck1
0002: jump ЈЈNext
Первая команда соответствует условному переходу, вторая — безусловному. Рассмотрим на примере, как создать поток с постановкой условий:
:Start_Mod
0001: wait 0 ms
0213: $my_pick = create_pickup -1 (INFO) type 3 at 2027.77 -1420.52 16.49
:Check1
0001: wait 0 ms
00D6: if 0
0214: pickup $my_pick picked up
004D: jump if false ЈЈCheck1
0002: jump ЈЈNext
:Next
0001: wait 0 ms
018C: play sound 1052 at 0.0 0.0 0.0
004E: end thread
Пример созданных "пикапов" с оружием на карте.
Сначала создается поток (thread), в котором на карте помещается определенный предмет. После создания объекта генерируется блок с проверкой, суть которой — зарегистрировать, взял ли игрок объект. Если это условие не выполняется, то команда 004D: jump if false ЈЈCheck1 вернет к блоку Check1 и проверка условия начнется снова. Если игрок взял приготовленное ему оружие, команда 0002: jump ЈЈNext осуществит переход к следующему блоку, в котором проигрывается определенный звук.
Командой end thread данный скрипт завершит свою работу. Команда 0002: Next безусловного перехода может быть использована для создания перехода к нужному вам блоку без постановки условия:
Start_Mod
0001: wait 0 ms
0213: $my_pick = create_pickup -1 (INFO) type 3 at 2027.77 -1420.52 16.49
0002: jump ЈЈNext
:Next
0001: wait 0 ms
018C: play sound 1052 at 0.0 0.0 0.0
004E: end thread[/cut]
Добавлено (16.08.2010, 22:53)
---------------------------------------------
Позволяли бы ещё встовлять скрины было бы красива, а так читайте дальше))
[cut noguest=СОЗДАНИЕ АКТЕРОВ И ТРАНСПОРТА]Теперь займемся созданием персонажей и транспортных средств на игровой карте. Прежде чем поместить NPC или машину на карту, нужно загрузить определенную модель в память игры. Для этого используются две команды:
0247: request model 520
038B: load requested models
Первая указывает, какую именно модель нужно загрузить, а вторая непосредственно подгружает модель в память. Если пропустить эту операцию, при тестировании мода San Andreas вылетит с ошибкой. После загрузки модели в память игры необходимо провести проверку: загружена ли она. Для этого используется следующая команда:
0248: model 520 available
В целом конструкция будет выглядеть следующим образом:
:Load1
0001: wait 0 ms
0247: request model 520
038B: load requested models
:Load2
0001: wait 0 ms
00D6: if 0
0248: model 520 available
004D: jump if false ЈЈLoad2
0002: jump ЈЈCreate_Model
Если модель успешно загружена, то можно приступать к созданию персонажа или транспортного средства. Сначала рассмотрим определение персонажей. Для создания модели NPC на карте используется следующая команда:
Вражеские NPC готовы порвать Сиджея в клочья!
009A: $actor1 = create actor 4 41 at 1230.0 2540.0 12.0
actor1 — имя персонажа (можете смело менять на свое, только не забудьте поменять его и в последующих командах), 41 — номер загруженной модели, а 1230.0 2540.0 12.0 — координаты, по которым модель будет создана. Номера моделей персонажей, а также их названия содержатся в файле peds.ide в папке DATA. Для примера разберем одну из строк файла:
41, HFYST, HFYST, CIVFEMALE, STAT_STREET_GIRL, woman,1983,1, null,6,1,PED_TYPE_GEN,VOICE_GEN_HFYST ,VOICE_GEN_HFYST
41 — номер модели, о котором упоминалось чуть выше, HFYST — имя персонажа, остальные параметры для расстановки модели на карте не нужны.
Для определения координат вы можете воспользоваться программой San Andreas Place Manager или любой другой. Рассмотрим принцип определения координат только для этой программы. Первым делом скопируйте программу в корневой каталог игры. После того как она будет запущена, нажмите клавишу ADD PLACE, а затем — Click Here to insert.
Утилита вставит в поля x, y, z текущие координаты игрока. После этого скопируйте координаты из полей x, y, z на место тех, по которым должен быть создан персонаж, предварительно заменив знак “,” (запятая) в координатах на “.” (точка).
Созданным персонажем можно манипулировать, используя ряд команд. Ниже рассмотрены основные из них:
05E2: unknown_action_sequence $actor1 $PLAYER_ACTOR
Данная команда заставит NPC следовать главной цели — убить игрока любым способом.
Если вы хотите, чтобы актер не убегал при звуке выстрела, смело используйте эту команду:
0350: unknown actor $actor not scared flag 1
Также созданному персонажу можно дать оружие:
01B2: give actor $actor1 weapon 31 ammo 60
31 здесь — номер оружия в игре, 60 — количество патронов.
Обратите внимание, что прежде чем использовать тот или иной ствол, его надо загрузить в память игры.
Для M4 номер модели для загрузки в память игры 356, а номер модели в игре — 31. Аналогично для Shotgspa — 351 и 27, а для Minigun — 362 и 38.
Следующая команда позволяет изменять меткость стрельбы:
02E2: set_actor $actor weapon_accuracy_to 90
Цифру 90 можно менять на любую от 1 до 100.
Для проверки, не умер ли персонаж, используется следующая конструкция:
:Check_Dead
0001: wait 0 ms
00D6: if 0
0118: actor $actor1 dead
004D: jump if false ЈЈCheck_Dead
0002: jump ЈЈPassed
Возле персонажа можно поставить маркер (метку), которая будет показывать его местоположение на карте. Для его создания используется следующая команда:
0187: $marker1 = create marker above actor $actor1
marker1 — название маркера (можете назвать его как захотите), actor1 — имя персонажа, над которым этот маркер будет создан. Чтобы убрать созданную метку, используйте следующую команду:
0164: disable marker $marker1
Созданного актера можно заставить передвигаться по карте, для этого используются следующие команды:
05D3: unknown_action_sequence $PLAYER_ACTOR 2099.12 -1651.26 12.63 4 3000
05F5: unknown_action_sequence $PLAYER_ACTOR 2099.12 -1651.26 12.63 6 10000
PLAYER_ACTOR — имя персонажа (если хотите, чтобы эта команда была применима к главному герою, не изменяйте имя), 2099.12 -1651.26 12.63 — координаты точки, к которой должен следовать персонаж. Первая команда заставляет персонажа идти, а вторая — бежать в заданную точку.
Используя ряд нижеприведенных команд и меняя имя персонажа actor на имя созданного вами NPC, вы можете создать телохранителя, который будет защищать от всех, кто нападает на Сиджея:
Да здравствует Сэм Фишер и Splinter Cell! Учимся создавать стелс-миссии...
0568: $actor 1
0446: (unknown) $actor 0
08AF: $actor 1000
077A: $actor 4 25
0631: put_actor $actor in_group $PLAYER_GROUP
01B2: give actor $actor weapon 38 ammo 600
02E2: set_actor $actor weapon_accuracy_to 90
0223: set_actor $actor health_to 2000
0187: $mark_act = create_marker_above_actor $actor
Для проверки, достиг ли персонаж какой-либо точки на карте, используется следующая конструкция:
:Check_Point
0001: wait 0 ms
00D6: if 0
00EC: actor $PLAYER_ACTOR 0 ()near point 1812.369 -1929.922 radius 2.0 2.0
004D: jump if false ЈЈCheck_Point
0002: jump ЈЈ<Блок, если условие выполняется>
Если вы создали на карте транспортное средство и хотите, чтобы тот или иной персонаж залез в него в роли пассажира, используйте команду:
05CA: unknown_action_sequence $PLAYER_ACTOR $10946 10000 0
Здесь PLAYER_ACTOR — имя NPC, 10946 — название машины, в которую он должен сесть.
Если же вы хотите, чтобы выбранный вами персонаж сел на место водителя, необходимо прописать следующую команду:
05CB: unknown_action_sequence $PLAYER_ACTOR $10946 -1
Чтобы проверить, находится ли наш персонаж в том или ином транспортном средстве, используйте вот такую конструкцию:
:In_Car_Check
0001: wait 0 ms
00D6: if 0
0448: actor $PLAYER_ACTOR in car $my_car
004D: jump if false ЈЈIn_Car_Check
0002: jump ЈЈ<Блок, если условие выполняется>
В этой команде my_car — машина, в которой должен находиться персонаж.
Об “актерах” мы поговорили достаточно, теперь перейдем к транспортным средствам.
По воздуху и по воде
Code
Рассмотрим вкратце способы управления воздушными и водными средствами передвижения. Начнем с вертолетов. Чтобы заставить “вертушку” лететь к указанной точке, используйте следующую команду:
[b]04A2: heli $my_car fly to 2488.562 -1662.864 12.8757 speed 0.0 40.0[/b]
[b]my_car[/b] — название вертолета (можете поменять на любое другое название), [b]2488.562 -1662.864 12.8757[/b] — координаты, по которым должен прибыть вертолет, и [b]40.0[/b] — скорость полета геликоптера.
Если вы хотите, чтобы выбранный вами вертолет использовал магнит, вводите вот это:
[b]0788: enable heli $my_car magnet 1[/b]
Несложно обыграть, скажем, такую ситуацию: по дороге едет авто, прямо над ним летит вертолет, который в определенный момент цепляет машину магнитом.
С самолетами дела обстоят намного сложнее — в интернете практически невозможно найти команды управления этим видом транспорта, поэтому ваш покорный слуга дни и ночи напролет занимался поиском команды, которая смогла бы заставить взлететь любой лайнер. Команда была найдена, используйте на здоровье:
[b]04D2: unknown RC car $my_car race to -1836.487 -333.7172 110.7474 0.0 40.0[/b]
Напоследок рассмотрим команды для манипуляции катерами и другим водным транспортом. Чтобы задать скорость движения лодки, используйте нижеуказанную команду:
[b]02DB: set boat $my_car speed to 100.0[/b]
Чтобы заставить катер плыть к нужной точке, примените команду:
[b]02D3: boat $my_car drive to 171.0578 942.3843 6.0[/b]
[b]171.0578 942.3843 6.0[/b] — координаты точки прибытия.
Все модели машин, людей, оружия нужно выгружать из памяти перед окончанием работы скрипта. Делается это следующей командой:
[b]0249: release model 570[/b]
[b]570[/b] — номер загруженной в память игры модели.
[/cut]Добавлено (16.08.2010, 22:54)
---------------------------------------------
[off]Исправьте пожалуйста чтобы спойлер закрывался, а то редактировать не могу(([/off]