Рейтинг - 0.0 (0)

Всем привет! Пришло время рассмотреть визуальные эффекты в GTA San Andreas. Сами эффекты реализуются при помощи систем частиц ( particles ). Но что бы не путать всё распределим эффекты на три группы: эффекты, короны и проекции.

Эффекты.

Думаю вы замечали в игре их, например взять эффект нитро из выхлопной трубы? или взять даже той огонь, что присутствует в игре. Эффекты никак не могут влиять на игрока. Тоесть, если СЖ в эффекте огня, то он не будет получать урон. Рассмотрим опкоды:

064B: 0@ = create_particle "EXHALE" at 2490.4514 -1674.7673 13.3359 type 1
Здесь:
0@ - переменная ффекта
"EXHALE" - имя самого эффекта ( см.Эффекты частицы )
2490.4514 -1674.7673 13.3359 - координаты создания
1 - какой то тип. Я не знаю за что он отвечает, так что оставляем как есть
064C: make_particle 0@ visible

Делает эффект видимым. Начинает воспроизведения. А опкод

064E: stop_particle 0@

останавливает воспроизведения системы частиц.

064F: remove_references_to_particle 0@ // Выгружает из памяти эффект

0976: destroy_particle 139@ // mission version
0650: destroy_particle 0@ // Опкоды 0976 и 0650 уничтожают эффект

Также есть возможность прицепить эффект к сущностям:

0669: 0@ = attach_particle "EXHALE" to_actor $PLAYER_ACTOR with_offset 0.0 0.116 0.048 flag 1
066A: 0@ = attach_particle "EXHALE" to_actor $PLAYER_ACTOR with_offset 0.0 0.116 0.048 rotation 90.0 90.0 90.0 flag 1
066B: 0@ = attach_particle "EXHALE" to_car $CAR with_offset 0.0 0.116 0.048 flag 1
066C: 0@ = attach_particle "EXHALE" to_car $CAR with_offset 0.0 0.116 0.048 rotation 90.0 90.0 90.0 flag 1
066D: 0@ = attach_particle "EXHALE" to_object $OBJECT with_offset 0.0 0.116 0.048 flag 1
Здесь:
0@ - переменная для эффекта
"EXHALE" - имя самого эффекта
$PLAYER_ACTOR, $CAR, $OBJECT - переменные субъектов ( актёра, транспорта и объекта )
0.0 0.116 0.048 - координаты относительно субъекта
90.0 90.0 90.0 - ротация эффекта ( разворот на угол по осям X, Y и Z )
1 - флаг. Зачем он я не знаю, так что ставим 1.

Можно так же прицепить эффект определённой части тела актёра:

0883: attach_particle 0@ to_actor $PLAYER_ACTOR mode 5
Здесь:
5 - режим. Почему назвали именно режимом не знаю wacko Чем ниже число, тем ниже относительно актёра будет прицеплен к актёру. Чем больше - тем выше.

Вот Вам простейший пример использования:

{$cleo}
0000:

:A
thread 'a'
wait 5000
0669: 0@ = attach_particle "EXHALE" to_actor $PLAYER_ACTOR with_offset 0.05 0.12 0.0 flag 1
0883: attach_particle 0@ to_actor $PLAYER_ACTOR mode 5
064C: make_particle 0@ visible
0A93: end_custom_thread

Эффект дыма будет прицеплен ко рту СЖ. Вот скрин:

Плюсы: ничего не нужно загружать. Минусы: не все эффекты воспроизводятся постоянно. Много из них проигрываются только 1 раз. Возможно это связано как то с типом или флагом.

Короны.

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

024F: create_corona_with_radius 2.0 type 9 lensflares 0 with_color 0 255 0 at 2490.4514 -1674.7673 13.3359
04D5: create_corona_at 2490.4514 -1674.7673 13.3359 radius 2.0 type 9 flare 0 RGB 0 255 0
Здесь:
2490.4514 -1674.7673 13.3359 - координаты появления короны
2.0 - радиус короны. Чем больше, тем громаднее она будет
9 - тип короны ( см. Короны→типы корон )
lensflares 0 = flare 0 - блик короны ( см. Короны→типы lensflares )
with_color 0 255 0 и RGB 0 255 0 - указывает цвет в цветовой схеме ( R - красный, G - зелёный, B - синий ). Диапазон значений от 0 до 255

Как видите в переменную короны не заносятся. Что бы их было видно нужно поставить опкод в цикл. Давайте напишем пример для корон:

{$cleo}
0000:

while 8AB0: not key_pressed 49 // 1
04D5: create_corona_at 2490.4514 -1674.7673 13.3359 radius 2.0 type 9 flare 0 RGB 0 255 0
wait 0
end

0A93: end_custom_thread

Пока игрок на нажмёт кнопку 1 на Гроув будет рисоваться корона. Скрин, как всегда:

Плюсы: опять ничего дополнительно загружать не нужно. Можно указывать цвет короне, что может делать гта необычной, например можно создать скрипт, когда в СЖ есть броня, то вокруг него будет корона. Чем то будет смахивать на щит мага из игры WoW. Минусы: корону нельзя создать. Её нужно рисовать в цикле. Особенность: корона будет "смотреть" в камеру под любым углом.

Проекции.

Это те же эффекты. Отличие в том, что они не имеют анимации и их можно отредактировать. К примеру можно привести тени. Рассмотрим опкод для рисования проекции:

016F: create_particle 6 rotation_factor 180.0 size 7.0 intensity 255 flags 255 0 0 at 2490.4514 -1674.7673 13.3359
Здесь:
6 - тип проекции ( см. Типы проекций )
180.0 - угол поворота проекции по оси Z
7.0 - размер. чем больше, тем громаднее будет проеция
255 - интенсивность. Если простыми словами, то прозрачность в диапазоне от 0 до 255. Если поставить 0, то проекцию не будет видно вообще
flags 255 0 0 - цветовая схема RGB. Выше указано что это
2490.4514 -1674.7673 13.3359 - точка рисования

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

{$cleo}
0000:

while 8AB0: not key_pressed 49 // 1
016F: create_particle 6 rotation_factor 180.0 size 7.0 intensity 255 flags 255 0 0 at 2490.4514 -1674.7673 13.3359
wait 0
end

0A93: end_custom_thread

А вот и лужа крови:

Плюсы и минусы такие же как и в корон. Если нечем заняться, то вот вам задание: Сделать проекцию зелёного цвета ( как бы имитируя лужу кислоты ) и когда СЖ ( или какой то другой пед ) попадает в неё у него отнимается какое-то количество жизни.


Теги: ПРОЕКЦИИ, carona, projectile, эффекты частиц, эффекты, короны

undead099032   (04.08.12 13:57)
А вот я хочу например как в вове типо если встать в эту лужу и она будет прибавлять хп! Как это сделать?

NARC   (04.08.12 14:50)
Сделай проверку если СЖ в точке где лежимт петно тогда прибавляй ХП

undead099032   (05.08.12 11:01)
Вот я сделал анимацию дальше мне надо чтобы после анимации появилось пятно как это сделать? А то у меня получилось что после проигрывания анимации у CJ востановились хп

NARC   (05.08.12 13:13)
Вот тебе код:
Code
{$cleo}
0000:

:HEAL
thread 'HEAL'
wait 0
if
0AB0: key_pressed 49 // 1
jf @HEAL
0@ = 0.0 // time
00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@

while not 0@ > 4000.0
if OR
0118: actor $PLAYER_ACTOR dead
0741: actor $PLAYER_ACTOR busted
then
break
end
016F: create_particle 3 rotation_factor 0.0 size 5.0 intensity 255 flags 0 255 0 at 1@ 2@ 3@
if
00EC: actor $PLAYER_ACTOR 0 near_point 1@ 2@ radius 5.0 5.0
then
0226: 5@ = actor $PLAYER_ACTOR health
5@ += 1
0223: set_actor $PLAYER_ACTOR health_to 5@
end
0@ += 50.0
wait 0
end

jump @HEAL
4000.0 - время действия короны.
Получилась хилка как у друида из ВоВ ))

Правда действует она только на СЖ. Что бы действувала на всех, то нужно спрашивать других, ато у меня не работают опкоды занесения в переменную педов smile

KiLLeR96   (06.08.12 20:08)
Можно ли создать свой эффект ?

NARC   (09.08.12 13:49)
Есть редактор эффектов. Если разберёшься, то создаш свой эффект редактируя "effects.fxp"

undead099032   (09.08.12 11:12)
А как сделать чтобы эффект атаковал? Вот я сделал горящую голову как сделать чтобы при нажатии на любую клавишу изо бра CJ выходил огонь?

KRIK666   (29.01.13 14:54)
люди добрые помогите!!! возможно ли сделать по средствам проэкций подсветку объекта автомобиля или педа соответствено при движение она тоже должна двигатся????
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Какая GTA Вам понравилась больше всего?
Всего ответов: 7
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 2
Гостей: 1
Пользователей: 1
wmysterio
Сегодня нас посетили:
wmysterio, Dyabda
Реклама