Jump to content

[Help, Lua, Scripting] Ped walking style


Recommended Posts

Заезженная уже несколько лет тема, вот решил попробовать реализовать уникальные походки с помощью анимаций.

Сразу к минусам: не будет следов крови, не будет слышно как топает. - Нет так страшно.

А теперь к проблеме: setPedAnimation записывает анимацию в задачу педу TASK_SIMPLE_NAMED_ANIM, которая конфликтует с задачами TASK_SIMPLE_CAR_SET_PED_IN_AS_DRIVER и TASK_SIMPLE_CAR_SET_PED_IN_AS_PASSENGER (т.е. сесть в авто водителем / пассажиром). В итоге игрок не может сесть в авто, так как событие "сесть в авто" перекрывает анимация. Работает нормально если сначала применить анимацию (ручками), а потом нажать на F. Думать о событии типа "OnClientVehiclePreStartEnter" не стоит, так как игрок может часто переключаться с шага на бег, что значит анимации будут меняться и всегда перекроют событие "сесть в авто".

Может имеет смысл запросить доп. аргумент для функции setPedAnimation?

P.S. Ссылка на ресурс: http://webfile.ru/5799244

P.S.S. Проверки типа "игрок стреляет" и т.д. не стал делать, это вопрос менее приоритетный.

Link to comment

Хочу обозначить важный момент по оптимизации. Применение анимаций должно быть исключительное клиентским. Т.е. сервер разослал всем клиентам имя группы анимаций для какого-то ПЕДа. А клиенты уже сами применяют анимации согласно полученному названию группы, зоне действия стримера и действий ПЕДа. Это чтобы не забивать эфир канала связи.

Возможно, я не прав, но применять анимации можно, основываясь также и на состоянии BIND'ов тоже.

Ща просто занят, вечером более детально всмотрюсь в код и может что-то добавлю..

Link to comment

Я изначально применял анимации на клиенте, пока не обнаружил что они не синхронизируются, пришлось делать ввиде тригера.

Возможно, я не прав, но применять анимации можно, основываясь также и на состоянии BIND'ов тоже.

Тогда когда перс будет бежать к машине (сам после нажатия F), анимации не будет.

Link to comment

да да, я помню тоже себя поймал на том, что юзал анимации в клиенте, думая, что они синхронизируются (:

То, что они будут применяться в клиенте это все равно в данном случае правильно. Потому что вся логика и действия все равно будут выполняться в клиенте. Сервер нам нужен будет только, когда стиль ходьбы у ПЕДа измениться. Тогда он разошлет всем клиентам об этом инфо, но не более. Применяться анимация должна по идее не только к локальному игроку, но и к другим ПЕДам, которые есть в стриме с локальным игроком.

Насчет, анимации бега к машине.. Сам этот бег, это простой игровой скрипт, который юзает BIND'ы действий передвижения ПЕДа для достижения точки возле транспорта. Если это критично, что ПЕД пробежит быстро и обычным стилем, то придется долго думать над этим и извращаться (: Подобный игровой скрипт бега к тачке можно заскриптить в крайнем случае.

Смотрю скрипты и внесу изменения.. потом проверю, если предположение мое правильное, то можно продолжить двигаться так и далее..

Link to comment
Подобный игровой скрипт бега к тачке можно заскриптить в крайнем случае.

Вот с этим не уверен. Контрол enter_passenger не доступен для изменения состояний, на него можно только повесить обработчик или отключить совсем.

Т.е. даже если реализовать свой бег к машине, то когда пед подойдёт к двери, он не сядет в неё. (Реализовывать анимациями и setVehicleDoorOpenRatio?)

Executing client-side command: setControlState( "enter_passenger", true ) 
Command results: false [boolean] 

Link to comment

Странно, что lil_Toady даже не отписался в этой теме. Видимо разработчикам и вправду плевать на эти походки (хотя они играют большую роль на самом деле).

Link to comment

Поверь мне, есть у нас вещи и занятия поважнее чем походки персонажей :) А lil Toady ваще надо монумент поставить за его всестороннюю поддержку МТА. Лично меня бы не хватило даже на половину того времени, которое он в общем потратил на МТА проект.

Я кстати вспомнил как я сделал какую-то скриптовую заплатку для одного бага с FPS, и вроде выложил ее на форум здесь. И не прошло недели, как ccw добавил в код МТА заплатку для этого бага, основанную на этом методе. Я не знаю, возможно, ccw сам догадался, или ему кто-то сказал о способе, который я предложил в русском форуме. Главное, что от этого все только выиграли. Сам бы я на уровне С++ никогда бы такого не сделал :)

Лучше вернемся к тому, что мы хорошо умеем, от этого выиграют все.

Link to comment

При высоком FPS нельзя ходить с аимом? Этот баг ещё присутствует при FPS > ~80 (при 80 ещё как-то получается умудриться короткими нажатиями A и D, а вот при 100 уже никак).

P.S. Зря походки персонажей откидывают, недооцениваете их важность. В MTA сейчас понапихают фишек, а баги висят...

Link to comment

Скриптово нужно фиксить только баги игрового движка, но не баги самого MTA.

Полноценные и правильные походки скриптово не реализуешь, и было бы куда правильнее реализовывать их на уровне самого движка GTA SA (с окружающими игроками всё проще, ибо это ведь по сути те же боты).

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...