Написание скриптов

Эта статья поможет вам преобрести начальные навыки в написании скриптов.


  1. Нам понадобятся следующие программы (все есть на данном сайте): MafiaDataXTractor и BSV.
  2. Запустите программу MafiaDataXTractor, если необходимо, то пропатчите предварительно игру.
  3. Отметьте в появившемся окне A1.dta (Missions) и нажмите кнопку "Extract".
  4. Запускаем BSV.
  5. Жмем "Load" в появившемся окне выбираем файл ..\Missions\FreeRide\scene2.bin и жмем "Открыть"

Скрипт можно вписать не во все фреймы. Для скриптов доступны только фреймы, созданные типом «Human», «Others». Естественно если хотите вставить Охраника, Водилу или какого-то персонажа, то надо использовать "Human". А вот если вы хотите вставить дополнительную функцию (показывать координаты, делать SAVE, изменять погоду и т.д.), то надо использовать "Others". В данной статье мы будем вставлять человека.

Создаем персонажа:
Жмём "Insert" - "Human". Теперь в поле "Name" пишем имя для персонажа (у нас пусть будет "civic").
В поле "Model" вписываем название модели персонажа ( у нас это будет "Большой Дик" BigDig.i3d или BigDig.4ds). Мы можете указать имя любого другого персонажа.
Далее заполняем поле "Trans". Здесь мы указываем координаты нашего персонажа, например, поставим: X = -1708,762, Y = 14,303179, Z = 582,30718 – это координаты места в «China Town», в центре площади.
В поле "Size" устанавливаем размеры персонажа. Размер персонажа ставим в X,Y,Z равный 1. Но при желании можно и поэкспериментировать с этими величинами.
В поле "Sex" пишем значение исходя из пола персонажа. В нашем случае "Male" поэтому число от 0 до 29 (29 - уже "Female").
В поле "Behaviour" выбираем "No reaction", нам ведь не надо чтоб он напал на нас или же убежал.
Жмем "insert"
BigDig в China Town
Все персонаж вставлен, теперь займемся написанием скрипта

Создаем скрипт:
Впишите вместо «////////////////» этот скрипт:

dim_act 3
dim_flt 3
dim_frm 3

findactor 0,"Tommy"
findactor 1,"civic"

human_addweapon 1,10,50,1000
human_setproperty 1,1000,Energy

{
label 1
enemy_playanim "NudaStativ.i3d"
wait 1500
goto 1
}

event use_ab, 10970013
event_use_cb 1
enemy_actionsclear
enemy_stop
enemy_talk 0, 16010270
enemy_wait
enemy_talk 1, 16010280
enemy_wait
enemy_talk 0, 14010530
enemy_wait
human_addweapon 0,4,1,0
freeride_scoreadd -500
return


Теперь давайте разберемся, что это мы только что "воткнули" в игру. Начнем попорядку:
dim_act 3
Число 3 определяет количество акторов допущенных в ваш скрипт. Число должно быть равно или больше числа используемых акторов. В нашем случае 2 актора,но мы пишем 3 навсякий случай (можно написать и 99).
dim_flt 3
Число 3 учитывает общее число переменных в вашем скрипте. Используется для создания более сложных скриптов. Мы можем поместить в наш скрипт неопасаясь последсвий. В нашем случае нет переменных, но мы пишем 3 навсякий случай (можно написать и 99).
dim_frm 3
Число 3 устанавливает количество фреймов в вашем сценарии.
findactor 0,”Tommy”
Значит мы находим в списке фреймов актор Tommy - актор игрока, и присваиваем ему номер 0. Номер мы присваиваем для того, чтобы далее в скрипте не писать целое имя, а вписывать просто номер.
findactor 1,”civic”
Значит мы находим в списке фреймов актор civic - актор персонажа, и присваиваем ему номер 1.
human_addweapon 1,10,50,1000
Актору 1 мы даем оружие 10 (Thompson 1928) с 50 патронами в магазине и с запасом в 1000 патронов, но если вы даете биту (или предмет кроме оружия) то эта строка будет иметь такой вид human_addweapon 1,4,1,0. Актором 1 является civic.
Вот список некоторых предметов
2- Кастет
3- Нож
4- Бита
5- Коктель Молотова
6- Colt Detective Special
7- S&W model 27 Magnum
8- S&W model 10 M&P
9- Colt 1911
10- Thompson 1928
11- Дробовик
12- Обрез
13- US Rifle M1903 Springfield
14- Mosin-Nagant 1891/30
15- Граната
17- Bucket
18- Flashlight
20- Bar
22- Bomb
25- Фомка
28- ДОСКА
29- Бутылка
33- Thompson 1928 без звука
34- Pump shotgun без звука
human_setproperty 1,1000,Energy
Актору 1 мы даем 1000 единиц здоровья.
{
То что находится между такими скобка является не основным скриптом, т.е. выполняется пока не выполнится какое либо условия. В нашем скрипте будет анимация до того как мы поюзаем персонажа.
label 1
Метка 1 число значения не имеет.
enemy_playanim "NudaStativ.i3d"
Анимация, т.е. то чем занимается персонаж все время пока основная часть скрипта не выполняется.
wait 1500
Время отводимое на выполнение анимации и до перехода к goto 1.
goto 1
Вернуться к метке 1.
}
event use_ab, 10970013
Эта надпись будет отображаться в меню (например: "Поговорить с Сэмом").
event_use_cb 1
Мы юзаем актора 1
enemy_actionsclear
Очищаются действия.
enemy_stop
Персонаж останавливается.
enemy_talk 0, 16010270
Актор 0 говорит фразу 16010270
enemy_wait
Пока не закончится фраза скрипт дальше не выполняется.
enemy_talk 1, 16010280
Актор 1 говорит фразу 16010280
enemy_wait
Пока не закончится фраза скрипт дальше не выполняется.
enemy_talk 0, 14010530
Актор 0 говорит фразу 14010530
enemy_wait
Пока не закончится фраза скрипт дальше не выполняется.
human_addweapon 0,4,1,0
Актору 0 мы даем оружие биту.
freeride_scoreadd -500
Со счета Tommy снимается 500 $, если без "-", то прибавляется.
return
Возврат в состояние до event use_ab, 10970013 для того чтобы можно было повторно использовать персонажа.

Теперь можно добавлять или убирать функции к скрипту. Для того чтобы можно было вам сделать что-нибудь более сложное вам понадобиться этот файл, терпение и "прямые руки" :)



Автор: CAPONE
Если у вас остались вопросы, то пишите в Гостевую или на E-mail.



 

Hosted by uCoz