AMARANT Posted June 6, 2011 Share Posted June 6, 2011 Заметил досадный баг, что некоторые анимации, в частности требуемые мне FOOD => FF_Sit_Eat1, FF_Sit_Eat2, FF_Sit_Eat3 проваливают ноги игрока в пол Из-за чего такое может быть и можно ли как-то это исправить? Link to comment
Kernell Posted June 6, 2011 Share Posted June 6, 2011 Это анимации такие, MTA тут не причём (Заметь на SAMP также) Link to comment
MX_Master Posted June 6, 2011 Share Posted June 6, 2011 > проваливают ноги игрока в пол лучше показать скрином Link to comment
KagerA Posted June 6, 2011 Share Posted June 6, 2011 Если при этих анимациях персонаж двигается, то идей, как это исправить нет. Но если он просто стоит, исполняя их, то решений масса: 1 выставляем педу/игроку гравитацию 0 и телепортируем чуть выше (0.5 мб) (для отмены просто выставить гравитацию обратно 0.008) 2 создаём любой обьект, делаем невидимым, рассылаем всем клиентам функции об отмене коллизий с ним, аттачим к этому обьекту игрока/педа. И задаём обьекту такие координаты, чтобы анимация смотрелась хорошо. (для отмены придётся заносить ид обьекта в массив или в elementData игроку, чтобы потом вычислять и уничтожать) Link to comment
lil Toady Posted June 6, 2011 Share Posted June 6, 2011 Я так понимаю, это анимации из роликов в игре (когда с девахой кушаешь где-нибудь), так что необычное поведение ожидаемо. Link to comment
MX_Master Posted June 6, 2011 Share Posted June 6, 2011 нащщет оффсетов - верно, они у каждой анимации свои, поэтому позицию нужно корректировать, если знаете начальные оффсеты анимации Link to comment
AMARANT Posted June 6, 2011 Author Share Posted June 6, 2011 Это анимации такие, MTA тут не причём (Заметь на SAMP также) Честно говоря скриптить начал сразу с МТА, устройство SAMP не знаю, до этого имел дело совсем с другими играми и языками программирования. В общем понятно, что вина таких анимаций совсем не сам мультиплеер. лучше показать скрином Пишу с работы, поэтому к сожалению не имею такой возможности. Если нужно будет, выложу дома. Если при этих анимациях персонаж двигается, то идей, как это исправить нет. Но если он просто стоит, исполняя их, то решений масса: Нет, персонаж не двигается, он сидит за столом в обеденной 1 выставляем педу/игроку гравитацию 0 и телепортируем чуть выше (0.5 мб) (для отмены просто выставить гравитацию обратно 0.008) Хороший вариант, более прост в исполнении нежели второй. Надеюсь что правильно понял твое решение, дома испробую. 2 создаём любой обьект, делаем невидимым, рассылаем всем клиентам функции об отмене коллизий с ним, аттачим к этому обьекту игрока/педа. И задаём обьекту такие координаты, чтобы анимация смотрелась хорошо. (для отмены придётся заносить ид обьекта в массив или в elementData игроку, чтобы потом вычислять и уничтожать) Проверю этот вариант, если вариант №1 не проканает... Я так понимаю, это анимации из роликов в игре (когда с девахой кушаешь где-нибудь), так что необычное поведение ожидаемо. Не, не с девахой. Это анимация педов, когда они сидят в пиццериях, бургершотах и т.п. и кушают нащщет оффсетов - верно, они у каждой анимации свои, поэтому позицию нужно корректировать, если знаете начальные оффсеты анимации "оффсеты" - в смысле координаты? Link to comment
MX_Master Posted June 6, 2011 Share Posted June 6, 2011 оффсеты = смещения от текущей позиции Link to comment
KagerA Posted June 6, 2011 Share Posted June 6, 2011 добавлю, что первый способ по сравнению со вторым имеет несколько недостатков: 1 если как-то физически воздействовать на педа, который завис в воздухе с гравитацией 0, то он далеко улетит (сосбно скорости он не будет убавлять вообще, если не врежется, как вариант он может улететь в "космос") - возможно это пофикисить, заморозив игрока, или постоянно портая в нужную позицию с каким-то таймером(вобщем тут решений опять масса) 2 при таком варианте можно лишь изменить "оффсет" по z, в то время как при аттаче - по всем трём координатам. впрочем в этом случае это не важно, насколько я понимаю. Link to comment
MX_Master Posted June 6, 2011 Share Posted June 6, 2011 в setPedAnimation для этого есть параметр "updatePosition" -> false Link to comment
KagerA Posted June 6, 2011 Share Posted June 6, 2011 нет, этот аргумент просто влияет на анимации, которые сами по себе могут сдвинуть персонажа, например анимация бега(если тру, перс будет бежать, если фолс, то он будет бежать и телепортироваться обратно). а я говорю о том, что если педа(или машину), у которой выставлена гравитация 0 (невесомость), толкнуть, то он/она улетит далеко и надолго Link to comment
MX_Master Posted June 6, 2011 Share Posted June 6, 2011 понял но если сажать игрока/бота, предварительно придавая ему какое-то нужное смещение. Насколько я знаю, при анимациях перс даже находясь в воздухе не будет падать, т.к. анимация блокирует всего его перемещения, основанные на взаимодействии с окружающим миром. Если еще и параметр "interruptable" использовать, то сбить анимацию будет ваще ничем нельзя. И все это без гравити (: Link to comment
AMARANT Posted June 6, 2011 Author Share Posted June 6, 2011 MX_Master, объясни тогда пожалуйста как мне узнать эти оффсеты, т.е. чтобы сместить все правильно в нужное положение и вообще с помощью какой функции, потому что я знаю только setElementPosition. Link to comment
MX_Master Posted June 6, 2011 Share Posted June 6, 2011 только тестово, узнаешь в клиенте текущую позицию игрока/бота до и после применения анимки, от координат "ДО" отнимаешь коорды "ПОСЛЕ" = оффсеты ( смещения ) но кроме этого нужно еще повернуть игрока/бота на правильный Z угол. Если места посадки заведомо известны, то для каждой нужно знать Z угол посадки игрока/бота а выставить, канеш, setElementPosition как ты и сказал Link to comment
Kernell Posted June 6, 2011 Share Posted June 6, 2011 В ручную, выше было сказано, что оффсеты у каждой анимации свои. Просто подгоняешь и запоминаешь их. Link to comment
AMARANT Posted June 6, 2011 Author Share Posted June 6, 2011 Все, я кажется понял Спасибо за помощь, приду - буду пробовать)) Link to comment
AMARANT Posted June 6, 2011 Author Share Posted June 6, 2011 Блин, смещаю вверх педа, а он все равно падает вниз в то же положение Link to comment
MX_Master Posted June 7, 2011 Share Posted June 7, 2011 смещаешь ДО или ПОСЛЕ setPedAnimation? Link to comment
KagerA Posted June 7, 2011 Share Posted June 7, 2011 MX_MASTER, с чего ты взял, что анимация не даст педу упасть?? с анимацией или без, пед всегда физический обьект и будет падать, поддаваться ударам машин и тд. Это же элементарно. Сходи, да протесть, портани педа повыше да примени анимацию, упадёт... в данном случае, как я уже говорил, надо выставлять гравитацию 0, чтобы не падал. Либо заморозить, как предложил Kernell, но помнится мне, что пед дёргается, если его заморозить в воздухе... но если память мне изменяет, то это подходит куда лучше чем гравити. ах да, и ещё: вычислять оффсеты, как разность между координатами при начале и конце анимации? оО это бред, потому, что: таким образом можно вычислить оффсеты токо по x и y, анимаций, которые смещают персонажа по Z вроде вообще не существует (анимацией прыжка например ты никогда ничего не перепрыгнешь, врежешься). Ты же не думаешь, что анимация, при которой персонаж поколено в земле реально смещает его вниз на пол клетки? а анимации из блока SWAT, при которых перс визуально вообще под землю проваливается, реально смещают его под землю?)) Link to comment
Kernell Posted June 7, 2011 Share Posted June 7, 2011 KagerA, Вспомни миссию из сингла где нужно заминировать плотину (изнутри) и спрыгнуть с неё. Вот чётко видно всё как игрок с анимацией прыжка летит вниз. P.S. Ещё как вариант setElementCollisionsEnabled Link to comment
KagerA Posted June 7, 2011 Share Posted June 7, 2011 да боже ты мой, что все такие упёртые? запусти МТА, напиши простой код(или юзни фриром), примени к себе эту анимацию и зацени, как твой персонаж провалится под землю и вдруг вернётся обратно по её окончании, блок DAMM_Jump или как-то так называется персонаж по оси Z двигается ТОЛЬКО ВИЗАУАЛЬНО. его координаты НЕ ИЗМЕНЯЮТСЯ. в катсценах в игре этого было достаточно PS: для справки, чтобы "лететь вниз", анимация не нужна, элементарная гравитация, но если говорить о катсценах, то там у персонажа отключалась вся физика и все коллизии (неважно как, просто факт) Link to comment
MX_Master Posted June 7, 2011 Share Posted June 7, 2011 Просто так ничего не говорю, включи анимацию плаванья и ты всегда будешь находится на том Z уровне, где анимация началась, и никогда не упадешь, если под ногами нет объекта или земли. Да и ваще, те кто спорит и разбрасывается словом "бред" на каждый чужой пост не вызывают доверия. Link to comment
KagerA Posted June 7, 2011 Share Posted June 7, 2011 я так же не говорю ничего просто так, прямо сейчас нахожусь на своём локале и только что испробовал простую команду портануть себя на 10 клеток вверх применить ко мне анимация удара кулаком результат:я падаю и в падении бью кулаком. Некоторые анимации содержат в себе подобие "кода", я как-то раз какой-то анимацией забор сломал... как называется анимация плавания, может она "особенная" а я и не знаю? попробовал анимации плавания - та же песня, падаю и плыву. уж не знаю что у вас там за чудеса на 1.1, но на 1.0.5 (и предыдущих) никогда на одной только анимации люди не летали Link to comment
MX_Master Posted June 7, 2011 Share Posted June 7, 2011 я говорю о том, что сам видел но если твой трюк с гравити поможет автору темы, то пусть он сделает именно так. Кстати, все эксперименты я обычно провожу с ботами. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now