Bohdan
Компетентный
Наверное, многие из вас замечали, что иногда при вызове ApplyAnimation() для игрока она проигрывается не с первого раза. Этот баг можно наблюдать очень часто.
Почему так происходит? Дело в том, что в оперативную память клиента еще не подгружена библиотека с нужной анимацией. При вызове функции из не подгруженной библиотеки искомая библиотека подгружается, при вызове функции второй раз - анимация уже сможет проиграться, так как библиотека подгружена. Это надо исправить.
Что мы здесь наблюдаем? Мы, по сути, вызываем анимацию NULL из библиотеки animlib. Так как NULL - это отсутствие анимации, библиотека подгружается, но никаких анимаций не проигрывается.
Теперь, по-хорошему, нужно подгрузить все анимации для игрока. Поскольку библиотек много, рекомендую подключать только часто используемые (полный список можно посмотреть на
Теперь в паблике OnPlayerSpawn достаточно вызвать функцию PreloadAllAnimLibs(playerid), чтобы все библиотеки подгрузились и анимация работала с первого раза и без перебоев.
Что делать с данными функциями - Ваше дело. Можно устанавливать проверку на то, подгружены ли анимации, можно подгружать библиотеки по необходимости. Я лишь даю основу для размышлений.
Автор: SHOROOP
Почему так происходит? Дело в том, что в оперативную память клиента еще не подгружена библиотека с нужной анимацией. При вызове функции из не подгруженной библиотеки искомая библиотека подгружается, при вызове функции второй раз - анимация уже сможет проиграться, так как библиотека подгружена. Это надо исправить.
PHP:
stock PreloadAnimLib(playerid, animlib[])
{
ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
return 1;
}
Теперь, по-хорошему, нужно подгрузить все анимации для игрока. Поскольку библиотек много, рекомендую подключать только часто используемые (полный список можно посмотреть на
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
), но на всякий случай - прилагаю код, где подгружаются ВСЕ библиотеки анимаций. Вынесем ее в отдельную функцию, для которой параметром будет ID игрока.
PHP:
stock PreloadAllAnimLibs (playerid)
{
PreloadAnimLib(playerid,"AIRPORT");
PreloadAnimLib(playerid,"Attractors");
PreloadAnimLib(playerid,"BAR");
PreloadAnimLib(playerid,"BASEBALL");
PreloadAnimLib(playerid,"BD_FIRE");
PreloadAnimLib(playerid,"BEACH");
PreloadAnimLib(playerid,"benchpress");
PreloadAnimLib(playerid,"BF_injection");
PreloadAnimLib(playerid,"BIKED");
PreloadAnimLib(playerid,"BIKEH");
PreloadAnimLib(playerid,"BIKELEAP");
PreloadAnimLib(playerid,"BIKES");
PreloadAnimLib(playerid,"BIKEV");
PreloadAnimLib(playerid,"BIKE_DBZ");
PreloadAnimLib(playerid,"BLOWJOBZ");
PreloadAnimLib(playerid,"BMX");
PreloadAnimLib(playerid,"BOMBER");
PreloadAnimLib(playerid,"BOX");
PreloadAnimLib(playerid,"BSKTBALL");
PreloadAnimLib(playerid,"BUDDY");
PreloadAnimLib(playerid,"BUS");
PreloadAnimLib(playerid,"CAMERA");
PreloadAnimLib(playerid,"CAR");
PreloadAnimLib(playerid,"CARRY");
PreloadAnimLib(playerid,"CAR_CHAT");
PreloadAnimLib(playerid,"CASINO");
PreloadAnimLib(playerid,"CHAINSAW");
PreloadAnimLib(playerid,"CHOPPA");
PreloadAnimLib(playerid,"CLOTHES");
PreloadAnimLib(playerid,"COACH");
PreloadAnimLib(playerid,"COLT45");
PreloadAnimLib(playerid,"COP_AMBIENT");
PreloadAnimLib(playerid,"COP_DVBYZ");
PreloadAnimLib(playerid,"CRACK");
PreloadAnimLib(playerid,"CRIB");
PreloadAnimLib(playerid,"DAM_JUMP");
PreloadAnimLib(playerid,"DANCING");
PreloadAnimLib(playerid,"DEALER");
PreloadAnimLib(playerid,"DILDO");
PreloadAnimLib(playerid,"DODGE");
PreloadAnimLib(playerid,"DOZER");
PreloadAnimLib(playerid,"DRIVEBYS");
PreloadAnimLib(playerid,"FAT");
PreloadAnimLib(playerid,"FIGHT_B");
PreloadAnimLib(playerid,"FIGHT_C");
PreloadAnimLib(playerid,"FIGHT_D");
PreloadAnimLib(playerid,"FIGHT_E");
PreloadAnimLib(playerid,"FINALE");
PreloadAnimLib(playerid,"FINALE2");
PreloadAnimLib(playerid,"FLAME");
PreloadAnimLib(playerid,"Flowers");
PreloadAnimLib(playerid,"FOOD");
PreloadAnimLib(playerid,"Freeweights");
PreloadAnimLib(playerid,"GANGS");
PreloadAnimLib(playerid,"GHANDS");
PreloadAnimLib(playerid,"GHETTO_DB");
PreloadAnimLib(playerid,"goggles");
PreloadAnimLib(playerid,"GRAFFITI");
PreloadAnimLib(playerid,"GRAVEYARD");
PreloadAnimLib(playerid,"GRENADE");
PreloadAnimLib(playerid,"GYMNASIUM");
PreloadAnimLib(playerid,"HAIRCUTS");
PreloadAnimLib(playerid,"HEIST9");
PreloadAnimLib(playerid,"INT_HOUSE");
PreloadAnimLib(playerid,"INT_OFFICE");
PreloadAnimLib(playerid,"INT_SHOP");
PreloadAnimLib(playerid,"JST_BUISNESS");
PreloadAnimLib(playerid,"KART");
PreloadAnimLib(playerid,"KISSING");
PreloadAnimLib(playerid,"KNIFE");
PreloadAnimLib(playerid,"LAPDAN1");
PreloadAnimLib(playerid,"LAPDAN2");
PreloadAnimLib(playerid,"LAPDAN3");
PreloadAnimLib(playerid,"LOWRIDER");
PreloadAnimLib(playerid,"MD_CHASE");
PreloadAnimLib(playerid,"MD_END");
PreloadAnimLib(playerid,"MEDIC");
PreloadAnimLib(playerid,"MISC");
PreloadAnimLib(playerid,"MTB");
PreloadAnimLib(playerid,"MUSCULAR");
PreloadAnimLib(playerid,"NEVADA");
PreloadAnimLib(playerid,"ON_LOOKERS");
PreloadAnimLib(playerid,"OTB");
PreloadAnimLib(playerid,"PARACHUTE");
PreloadAnimLib(playerid,"PARK");
PreloadAnimLib(playerid,"PAULNMAC");
PreloadAnimLib(playerid,"ped");
PreloadAnimLib(playerid,"PLAYER_DVBYS");
PreloadAnimLib(playerid,"PLAYIDLES");
PreloadAnimLib(playerid,"POLICE");
PreloadAnimLib(playerid,"POOL");
PreloadAnimLib(playerid,"POOR");
PreloadAnimLib(playerid,"PYTHON");
PreloadAnimLib(playerid,"QUAD");
PreloadAnimLib(playerid,"QUAD_DBZ");
PreloadAnimLib(playerid,"RAPPING");
PreloadAnimLib(playerid,"RIFLE");
PreloadAnimLib(playerid,"RIOT");
PreloadAnimLib(playerid,"ROB_BANK");
PreloadAnimLib(playerid,"ROCKET");
PreloadAnimLib(playerid,"RUSTLER");
PreloadAnimLib(playerid,"RYDER");
PreloadAnimLib(playerid,"SCRATCHING");
PreloadAnimLib(playerid,"SHAMAL");
PreloadAnimLib(playerid,"SHOP");
PreloadAnimLib(playerid,"SHOTGUN");
PreloadAnimLib(playerid,"SILENCED");
PreloadAnimLib(playerid,"SKATE");
PreloadAnimLib(playerid,"SMOKING");
PreloadAnimLib(playerid,"SNIPER");
PreloadAnimLib(playerid,"SPRAYCAN");
PreloadAnimLib(playerid,"STRIP");
PreloadAnimLib(playerid,"SUNBATHE");
PreloadAnimLib(playerid,"SWAT");
PreloadAnimLib(playerid,"SWEET");
PreloadAnimLib(playerid,"SWIM");
PreloadAnimLib(playerid,"SWORD");
PreloadAnimLib(playerid,"TANK");
PreloadAnimLib(playerid,"TATTOOS");
PreloadAnimLib(playerid,"TEC");
PreloadAnimLib(playerid,"TRAIN");
PreloadAnimLib(playerid,"TRUCK");
PreloadAnimLib(playerid,"UZI");
PreloadAnimLib(playerid,"VAN");
PreloadAnimLib(playerid,"VENDING");
PreloadAnimLib(playerid,"VORTEX");
PreloadAnimLib(playerid,"WAYFARER");
PreloadAnimLib(playerid,"WEAPONS");
PreloadAnimLib(playerid,"WUZI");
return 1;
}
Что делать с данными функциями - Ваше дело. Можно устанавливать проверку на то, подгружены ли анимации, можно подгружать библиотеки по необходимости. Я лишь даю основу для размышлений.
Автор: SHOROOP
