Заработай на своем сайте Купите рекламу от 5 центов за клиента!
GTA Скриптинг
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Научись скриптить

Реклама

Главная » Статьи » Учения скриптингу » Уроки

EXTERNAL СКРИПТЫ

"External" в переводе с английского означает "внешний".Внешние скрипты - это скрипты храня-

щиеся в файле "script.img", который лежит в одной папке с "Main.scm",но для нас это не важно,

потому что любой билдер для Сан Андреаса поддерживает работу с внешними скриптами через

"Main.scm",наверняка Вы встречали в коде Main'a к-л информацию о внешних скриптах,весь конец

кода Main'a состоит из них,но про дописывание свох внешних скриптов потом.Сейчас я расскажу,

как использовать уже готовые,или как я модифицировал некоторые из них:

Давайте начнём с самого первого внешнего скрипта - парашут для игрока:

ПАРАШУТ ДЛЯ ИГРОКА

Покапавшись немного в нём я переписал его так,что как бы CJ не падал с парашутом,ему ничего

не будет,вот описание по установке:

1) Если вы не используете оригинальный Main.scm,то переходите ко второй части установки,а

если используете оригинальный,то сначало находим label ":INTRO_7264",затем в нём находим

строку с текстом "create_thread @A_TERM", и после нёё вставляем :

create_thread @MaxHealth

Затем находим строку с текстом --Mission 0-- и перед ней вставляем :

:MaxHealth

wait 1000

062A: change_stat 24 to 1000.0

wait 500

actor.Health($PLAYER_ACTOR)=1000

end_thread

Теперь переходите к третьей части установки.

2 )Если максимальная жизнь игрока маленькая,как в самом начале,то создаём поток,там где

и всегда , с именем MaxHealth , затем находим строку с текстом --Mission 0-- и перед

ней вставляем :

:MaxHealth

wait 1000

062A: change_stat 24 to 1000.0

wait 500

actor.Health($PLAYER_ACTOR)=1000

end_thread

Если же максимальная жизнь большая,то переходим сразу к третьей части установки.

 

3) Находим label ":PLCHUTE_1231" ,затем в этом label'e находим строку с текстом "$1513 = 2"

и заменяем эту строку на данное выражение:

$1513 = 3 // integer values

0812: unknown_action_sequence $PLAYER_ACTOR "FALL_SKYDIVE" "PED" 1.0 1 0 0 0 100

wait 0

actor.Health($PLAYER_ACTOR) = 1000

0992: set_player $PLAYER_CHAR weapons_scrollable 1

Model.Destroy(#PARACHUTE)

04EF: release_animation "PARACHUTE"

if

model.Available(#GUN_PARA)

jf @PLCHUTE_A1

model.Destroy(#GUN_PARA)

:PLCHUTE_A1

wait 0

end_thread

4) Находим label ":PLCHUTE_2386" находим в нём строку "Actor.Angle($PLAYER_ACTOR) = 1@" ,

и меняем её на данное выражение :

0812: unknown_action_sequence $PLAYER_ACTOR "FALL_SKYDIVE" "PED" 1.0 1 0 0 0 100

actor.Health($PLAYER_ACTOR) = 1000

0992: set_player $PLAYER_CHAR weapons_scrollable 1

Model.Destroy(#PARACHUTE)

04EF: release_animation "PARACHUTE"

if

model.Available(#GUN_PARA)

jf @PLCHUTE_A2

model.Destroy(#GUN_PARA)

:PLCHUTE_A2

wait 0

end_thread

Теперь компилируем,запускаем игру и падаем сколько влезет !!!

Если что-то непонятно,то вопросы ко мне на http://Missions.GTAmaps.ovl.ru

 

ПАРАШУТ ДЛЯ АКТЁРОВ

Второй скрипт про парашут для актёров мало чем отличается от первого,вот только его можно

прицеплять.

Чтобы прицепить скрипт к актёру,надо сначало его загрузить:

08A9: load_external_script 1 (PARACHUTE) // весь список скриптов приведён в начале Main'a

После того,как мы загрузили скрипт,надо же ещё создать актёра,который будет его выполнять,

чтобы актёр использовал скрипт нужна данная команда:

0913: run_external_script 1 -1 -5.0 10.0 -5.0 -1.0 5.25 6.75 1 $Act

1 - номер скрипта

-1 - что-то типа времени,если ставить 0,то вообще ничего не будет

-5.0 - скорость снижения актёра без парашута,если (-) поменять на (+),то актёр полетит вверх

10.0 -5.0 - вот эти 2 параметра указывают на принадлежность раскрытого парашута к игроку,

если их выставить по 0.0 ,то актёр будет лететь,как если игрок летит с нераскрытым пара-

шутом и мы жмём клавишу "Назад",предыдущий параметр скорости снижения уже не будет действо-

вать,если парашут раскрыт

-1.0 - а будет действовать вот этот,который показывает скорость снижения актёра с раскрытым

парашутом

5.25 - показывает на сколько сместится актёр,если парашут откроется

6.75 - это скорость смещения,поставьте 50(+) и увидите эффект ракеты !

1 - если 0,то актёр летит с нераскрытым парашутом,и все параметры должны быть выставлены

соответственно:

0913: run_external_script 1 -1 0.0 0.0 0.0 0.0 0.0 0.0 0 $Act

Можно менять только первый 0.0 скорость смещения вниз/вверх,если 1,то у актёра парашут от-

крыт,почитайте выше,а вообще-то этот параметр когда нужен,а когда нет.

$Act - имя актёра,который будет выполнять скрипт

Это очень непонятная команда,SB вообще пишет,что в ней 32 параметра должно быть,так что пой-

мите сами,что абсолютно всего я не знаю.

Вот вам пример:

create_thread @ParaTest // создаём поток

:ParaTest // начинаем поток

wait 0 // ждём 0 мс,если не напишем,то может повиснуть

if // условие

player.Defined($PLAYER_CHAR) // проверка(игрок существует)

jf @ParaTest // если не существует,то прыгаем на начало

wait 3000 // ждём 3 сек

04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 0.0 1500.0

// создаём точку на большой высоте от игрока

0376: $Act = create_random_actor 1@ 2@ 3@ // создаём в этой точке случайного актёра

actor.LockInCurrentPosition($Act ) = true // закрепляем актёра в данной позиции

08A9: load_external_script 1 // загружаем наш скрипт

:ParaTest_2 // создаём второй label

wait 0 // ждём 0 мс,если не напишем,то может повиснуть

if // условие

08AB: external_script 1 loaded // проверка(скрипт 1 уже загружен)

jf @ParaTest_2 // если ещё не загружен,то переходим на начало label'a

actor.LockInCurrentPosition($Act ) = false // делаем актёра не закреплённым

wait 400 // ждём немного

0913: run_external_script 1 -1 -59.0 0.0 0.0 0.0 0.0 0.0 0 $Act // запускаем скрипт с па-

// раметрами,соответствующими просому полёту

02A3: toggle_widescreen 1 // включаем широкий экран

:ParaTest_3 // создаём третий label

wait 0 // ждём 0 мс,если не напишем,то может повиснуть

0819: 16@ = actor $Act distance_from_ground // измеряем расстояние от актёра до земли

04C4: create_coordinate 4@ 5@ 6@ from_actor $Act offset 0.0 -2.0 10.0 // создаём коорд-ы

camera.SetPosition(4@,5@,6@,0.0,0.0,0.0) // ставим по ним камеру

camera.OnPed($Act,15,2) // и направляем на актёра

if //

16@ < 200.0 проверка (если позиция актёра меньше,чем 200)

jf @ParaTest_3 // если проверка не выполнилась,т.е высота больше,чем 200,то прыгаем к на-

// чалу label'a

camera.Restore_WithJumpCut // восстанавливаем нормальную позицию камеры

02A3: toggle_widescreen 0 // выключаем широкий экран

actor.PutAt($Act,0.0,0.0,0.0) // помещаем актёра туда,откуда он больше не вернётся

actor.RemoveReferences($Act) // удаляем все сведения об актёре

end_thread // и завершаем поток

Ещё пример,но тут актёр уже летит на парашуте :

Комментировать небуду,потому что это практически тоже самое,что и предыдущий,скажу только,

что основное отличие в в строке 0913: run_external_script... Думаю,что сами разберётесь:

create_thread @ParaTest2

:ParaTest2

wait 0

player.Defined($PLAYER_CHAR)

jf @ParaTest

wait 3000

04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 0.0 150.0

0376: $Act = create_random_actor 1@ 2@ 3@

actor.LockInCurrentPosition($Act ) = true

08A9: load_external_script 1

:ParaTest2_2

wait 0

if

08AB: external_script 1 loaded

jf @ParaTest2_2

actor.LockInCurrentPosition($Act ) = false

wait 200

0913: run_external_script 1 -1 -5.0 10.0 -5.0 -1.0 5.25 6.75 1 $Act

actor.RemoveReferences($Act)

end_thread

И под конец скажу,что:

0913: run_external_script 1 -1 -59.0 0.0 0.0 0.0 0.0 0.0 0 $Act // эту команду используйте,

чтобы получить эффект парашута,как в первом примере.

0913: run_external_script 1 -1 -5.0 10.0 -5.0 -1.0 5.25 6.75 1 $Act // эту команду исполь-

зуйте,чтобы получить эффект парашута,как во втором примере.

 

РАЗНЫЕ

Рассмоттрим скрипт "VENDING_MACHINE" про автомат напитков,тут интерестые только 2 вещи:

узнаём стат наетости CJ'я,это стат под номером 245 ,

команда блокировки клавиши: 07CC: player $PLAYER_CHAR disable_key_15 1

Но,увы,каким образом заставить эту команду работать,я не знаю,если вы узнаете как,то скажите

пожалуйста мне.

Ну давайте изменим ,хоть чуть-чуть, этот скрипт:

Ищем label с именем :VENDING_1210 ,находим в нём строку с текстом 0623: add 5 to_stat 245 ,

число 5 изменяем на ,допустим, 100 ,и там где написано $3396 += 30 ,меняем число 30 на 1000 .

Результат таков,что CJ будет пополнять своё здоровье по максимуму и сразу будет наедаться.

ДЕЙСТВИЯ НАД ВНЕШНИМИ СКРИПТАМИ

08E8: assign_external_script_handle 'DEALER' to_actor_model #BMYDRUG - данная команда

заставляет всех актёров с моделью #BMYDRUG выполнять скрипт 'DEALER',скрипт торговца крэком.

Я хочу ещё добавить сюда про тюнинг машин,без добавления моделей в Define objects,но я в этом

скрипте туплю,по поводу одежды,причёсок,татуировок всё написано в главе "Примочки игрока".

Категория: Уроки | Добавил: gtascript (11.08.2007)
Просмотров: 963 | Комментарии: 1 | Рейтинг: 0.0/0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Часы

Скорость интернета

Друзья сайта

eServer.ru :: Хостинг-оператор #1 Сайт полностью посвящен мультфильму
САЙТ КАМРАНА!!!! Бесплатные игры, программы, МР3, новости и многое другое Только на сайте КАМРАНА!!!!! Все о Mafia 2 GTAIV Портал Только русские файлы для gta san andreas Софт для gta sanandreas Лада-тюнинг-эксклюзивные тюнингованые авто для GTA:SA


Статистика

Dating.ru Топ100 - Игры RusTusovka.COM - ТОП 100 Русско-Язычных Сайтов Русский Топ Рейтинг Топ GamerPro SERP: gta скрипты программы миссии


Copyright MyCorp © 2025 Конструктор сайтов - uCoz