Гайд Запускаем сцену BigSmoke (встреча) с помощью SA-MP

vawylon

Участник
Автор темы
8
93
img_1656433935__sa-mp-184.png

Сложно назвать данный пост уроком скорее пособие или гайд от чего можно отталкиваться или куда идти, как говорится стартап, возможно я первый в этом направлении. Если данная идея урока даст какие-то новые идеии в самп я буду очень рад!
Я считаю, что катсцены они необходимы в SAMP в обозримом будующем надеюсь, что большие сервера будут записывать анимации с помощью инструментов, создавать таким или подобным способом целые сюжеты или миссии ограблений как в гта 5. Это очень интересное направление и точно бы зацепило игроков.
Здесь не будит конкретики вы не получите готовый результат только наработки опыт и от чего отталкиваться.
Я отлично понимаю, что с помощью pawn это какое-то извращенство запускать сцены так как минимум необходимы анимации, а анимации загружаются через лаунчер или samp 0.3.8 могу ошибаться. Если есть лаунчер очевидно лучше запускать с помощью скриптов а не таким образом.
Цель всего этого была только моей целью разобраться как работают кат сцены.

Сцена начнётся 5:41

[media]

Информацию можно прочитать вот тут http://gtamodding.ru/wiki/Катсцены


Что у нас есть?
Анимации. Все анимации катсцен находятся в файле GTA San Andreas\anim.img в файлах .ifp
координаты камеры. GTA San Andreas\anim.img .dat
Данные (свойства катсцены) В файлах GTA San Andreas\anim.img .cat
Файлы img открываются с помощью GTA-SA Crazy IMG Editor


Анимации
1. Как я понял ApplayAnimation (ApplayActorAnimation) ограничены 1812 анимациями в списке нету анимации катсцен (файл cats.img)
img_1656430693__1.png

Открываем программу GTA CRAZY
Выделяем всё (файл cats.img) (CNTRL + A) выкидываем все файл в отдельную папку (CNTRL+E)

Тут проблема.
Нужные файлы я искал с помощью метода тыка (программа для просмотра анимации GTAAnimManager) определил, что файлы
intro1a.ifp
intro1a.dat
intro1a.cat
Отвечают за миссию BigSmoke первая встреча с ним.

Открываем файл intro.cut с помощью текствого редактора и находим строчки
img_1656430748__2.png

Код:
model
1, csbat, csbat [бита которую держит бигсмоук]
1, csframe, csframe [объект рамка с фото которую поднимает CJ]
1, csmomchair, csmomchair [стул который передвигает CJ]
1, csplay, csplay [CJ]
1, cssmoke, cssmoke {BigSmoke]
end
здесь участвует бигсмоук и CJ
У бигмоука анимация cssmoke
У CJ csplay
Найдем их...

Открываем программу GTAAnimManager, открываем файл intro1a.ifp и видим анимации скинов и объектов. Отлично, теперь выдёргиваем анимации csplay и cssmoke и добавляем в файл anim.img в библиотеку "airport"
img_1656430797__3.png

img_1656431188__4.png

img_1656431216__5.png

[/code]

Звуки
Со звуками интереснее. Звуки я прослушивал так же с помощью тыка а именно программа Saat Gui Frontend она показывает название звуковой дорожки но ID для PlayerPlaySound не отображает.
Первый звук первой библиотеке "STREAM" файл "'10-70 in Doherty; don't worry'.ogg" это первый id PlayerPlaySound а последний естественно последний id который есть в samp.
img_1656431329__6.png

Как я нашел дорожку катсцены?
Тыкал на все подряд пока не понял что они находятся в библиотеке "STREAM>Cutscene>BigSmoke 1# (Intro).ogg
Посчитал с самого начала и до конца звуковой дорожки, примерно 680 дорожка
С помощью функции
Код:
CMD:play(playerid, p[])
{
    PlayerPlaySound(playerid, strval(p), 0.0, 0.0, 0.0);
    return 1;
}
Уже точно определил 704 звуковая дорожка катсцены BigSmoke
Отлично!
Анимации есть звуки есть.

Камера
Тут вообще атас!
Есть координаты в файле intro1a.dat:
;
54, << количество координат (X Y Z)
0.000000f,-0.648281,[0.278520,1.694988,-0.648281,0.278520,1.694988,-0.648281,0.278520,1.694988,
0.066667f,-0.648281,0.278520,1.694988,-0.648281,0.278520,1.694988,-0.862671,0.238780,1.860105,
2.232667f,-1.291714,0.159251,2.190541,-1.291714,0.159251,2.190541,-1.291714,0.159251,2.190541,
2.252667f,-0.678756,-6.537179,1.225464,-0.678756,-6.537179,1.225464,-0.678756,-6.537179,1.225464,
3.299667f,-0.651127,-6.260975,1.263485,-0.651127,-6.260975,1.263485,-0.651127,-6.260975,1.263485,
3.319667f,-2.046676,0.015347,2.319760,-2.046676,0.015347,2.319760,-2.046676,0.015347,2.319760,

0.066667f, время или скорость камеры (0.066667 * 1000
Почему X Y Z а координат 9 да потому что не разобрался и недопонял. Это последний столбец в файле отвечает за координаты
Я просто сделал так:

{0.000000,-0.648281,[0.278520,1.694988,},
{0.066667,-0.648281,0.278520,1.694988},
{2.232667,-1.291714,0.159251,2.190541},
{2.252667,-0.678756,-6.537179,1.225464},
{3.299667,-0.651127,-6.260975,1.263485},
3.319667,-2.046676,0.015347,2.319760,}

Оффсет координаты:
Координаты расположены в файле cut
Код:
info
offset 2496.729980 -1691.670044 1013.760010
end

На эти координаты нужно создать актёров с углом 0 градусов

Код:
new Float:offsetcutX = 2496.729980, offsetcutY = -1691.670044, Float:offsetcutY =1013.760010
cj = CreateActor(0, 2496.729980 -1691.670044 1013.760010, 0.0);
smoke = CreateActor(269, 2496.729980 -1691.670044 1013.760010, 0.0);
[code]

Если сразу применить анимацию, то она не воспроизведётся потому что она раньше "дойдёт" до клиента чем появятся актёры.
[code]

Для теста сделаю команду
[code]
CMD:play(playerid)
{
ApplayActorAnimation(cj, "airport", "csplay", 4.1, 0, 0, 0, 0, 0);
ApplayActorAnimation(smoke, "airport", "cssmoke", 4.1, 0, 0, 0, 0, 0);
//воспроизведём звуковую дорожку
PlayerPlaySound(playerid, 704, 0.0, 0.0, 0.0);
return 1;
}

Результат
Когда начальные координаты относительно позиции игрока
img_1656432187__sa-mp-190.png

img_1656432244__sa-mp-189.png


Уже в доме CJ
img_1656432277__sa-mp-175.png

img_1656432344__sa-mp-184.png


Проблеммы из за которых я всё удалил и собирал наработки по крупицам.
1. Персонаж пропадает если камера не наведена на оффсет координаты
2. Не понятные вектора камеры в файле cut
3. Необходимо загружать анимации то есть необходим лаунчер.


Автор я vawylon