PDA

Просмотр полной версии : [Вопрос] Не играет анимация у актёра(CreateActor)



Nurick
25.05.2016, 00:29
Доброй ночи!
И снова этот актёр, не могу смысла уловить этих функции(CreateActor)
С начало была проблема при направлении камеры на актёра актёр не появлялся с этим уладили спасибо "ziggi"
Теперь актёр появляется при наведении камеры но не проигрывается анимация, тоесть при заходе на сервер камера подаёт координаты x.z.y там стоит актёр и выполняет действие(анимация) актёр стоит но анимация не выполняется!


public OnPlayerRequestClass(playerid, classid)
{
TogglePlayerSpectating( playerid, 1 );
SetTimerEx( "SetPlayerCameraPosRequestClass", 100, false, "i", playerid );
return 1;
}


forward SetPlayerCameraPosRequestClass( playerid );
public SetPlayerCameraPosRequestClass( playerid )
{
SetPlayerCameraPos( playerid, 1020.799438, -2063.270263, 21.035518 );
SetPlayerCameraLookAt( playerid, 1024.366699, -2066.773925, 21.031612 );
return 1;
}


new actor_graffiti;


actor_graffiti = CreateActor( 5, 1024.2950, -2072.8521, 19.3672, 180.0 );


ApplyActorAnimation( actor_graffiti, "GRAFFITI", "spraycan_fire", 4.1, 1, 1, 1, 0, 0 );

И пробовал делать погрузку анимаций:


public OnActorStreamIn(actorid, forplayerid)
{
if( !GetPVarInt( actorid, "Animations" ) ) RreloadActorAnimLib( actorid );
return 1;
}


stock RreloadActorAnimLib( actorid )
{
ApplyActorAnimation( actorid, "GRAFFITI", "NULL", 0.0, 0, 0, 0, 0, 0 );
SetPVarInt( actorid, "Animations", 1 );
}

Анимация срабатывает только при спавне игрока(OnPlayerSpawn)

ziggi
25.05.2016, 10:07
Попробуй добавить прелоад анимация для игрока. Или можно попробовать делать прелоад сразу после создания NPC.

Nurick
25.05.2016, 10:50
Что-то не получается, пробовал делать preload анимация для игрока не чего не изменилось, по поводу второго варианта можно по подробнее.

Предварительная загрузка анимаций для актёра:

public OnActorStreamIn(actorid, forplayerid)
{
if( !GetPVarInt( actorid, "Animations" ) ) RreloadActorAnimLib( actorid );
return 1;
}


stock RreloadActorAnimLib( actorid )
{
ApplyActorAnimation( actorid, "GRAFFITI", "NULL", 0.0, 0, 0, 0, 0, 0 );
SetPVarInt( actorid, "Animations", 1 );
}

Далее я создаю актрёра и придаю ему анимацию:


new actor_graffiti;


public OnGameModeInit()
{
actor_graffiti = CreateActor( 5, 1024.2950, -2072.8521, 19.3672, 180.0 );
ApplyActorAnimation( actor_graffiti, "GRAFFITI", "spraycan_fire", 4.1, 1, 1, 1, 0, 0 );
return 1;
}

А если я делаю анимацию при спавне игрока, то анимация срабатывает когда игрок спавнится то актёра выполняет анимацию:


public OnPlayerSpawn(playerid)
{
ApplyActorAnimation( actor_graffiti, "GRAFFITI", "spraycan_fire", 4.1, 1, 1, 1, 0, 0 );
return 1;
}

ziggi
25.05.2016, 15:55
Попробуй так:

actor_graffiti = CreateActor(...);
RreloadActorAnimLib(actor_graffiti)
Но я не думаю, что это срабоатет.

Nurick
25.05.2016, 16:57
К сожалению не помогло

Nurick
25.05.2016, 19:52
Проблема решена. Тему можно закрывать!

Сделал предварительную загрузку анимаций(Для игрока):

public OnPlayerConnect(playerid)
{
if( !GetPVarInt( playerid, "Animations" ) ) PreloadAnimLib( playerid );
return 1;
}


stock PreloadAnimLib( playerid )
{
ApplyAnimation( playerid, "GRAFFITI", "NULL", 0.0, 0, 0, 0, 0, 0 );
SetPVarInt( playerid, "Animations", 1 );
}

А далее использовал анимацию для актёра(ApplyActorAnimation):


ApplyActorAnimation( actor_graffiti, "GRAFFITI", "spraycan_fire", 4.1, 1, 1, 1, 0, 0 );

ziggi
25.05.2016, 21:15
Проблема решена. Тему можно закрывать!

Сделал предварительную загрузку анимаций(Для игрока):

public OnPlayerConnect(playerid)
{
if( !GetPVarInt( playerid, "Animations" ) ) PreloadAnimLib( playerid );
return 1;
}


stock PreloadAnimLib( playerid )
{
ApplyAnimation( playerid, "GRAFFITI", "NULL", 0.0, 0, 0, 0, 0, 0 );
SetPVarInt( playerid, "Animations", 1 );
}

А далее использовал анимацию для актёра(ApplyActorAnimation):


ApplyActorAnimation( actor_graffiti, "GRAFFITI", "spraycan_fire", 4.1, 1, 1, 1, 0, 0 );

Собственно, это то, что я имел ввиду во втором посте. Но ты же это уже это пробовал, что изменилось?


Что-то не получается, пробовал делать preload анимация для игрока не чего не изменилось, по поводу второго варианта можно по подробнее.

Nurick
25.05.2016, 21:40
Просто когда делал предварительную анимацию для игрока использовал ApplyAnimation и анимация не проигрывалась попробовал с той же preload использовать ApplyActorAnimation и анимация воспроизвелась