Jump to content

Оживление ботов (peds) в MTA:SA


Recommended Posts

Цель:

  • Создать минимальный, простой и эффективный набор функций (ресурс или библиотеку) для управления ботами, чтобы даже новичок мог добавить ботов в свой скрипт и без проблем управлять ими.

Требования:

  • Боты, созданные сервером, должны синхронизироваться, созданные клиентом - нет.
  • Набор функций должен быть очень простым, что-то вроде
    - "дойти/добежать/доехать в какую-то точку карты или до элемента" (goToPoint, goToElement)
    - "сесть/выйти из машины" (enter/exitVehicle)
    - "следовать за элементом" (chaseElement)
    - "выстрелить/стрелять в какую-то точку карты или элемент" (fireToPoint, fireToElement)
    - "драться с элементом" (fightWithElement)
    - ...
  • Когда бот ничего не делает, или просто следует куда-то, он должен быть интерактивным. Если он без оружия и игрок целиться в него, он должен поднять руки вверх. Если просто стоит на месте - выполнять какие-то анимации простоя, переминаться с ноги на ногу, чесать репу, курить и т.д.

Ваши предложения относительно ботов пишите в этой теме, т.к. есть еще очень много разных состояний для ботов и описать их одним разом в одном предложении нельзя.. Этот небольшой проектик должен быть общественным, чтобы поднять интерес игроков и скриптеров к MTA и придать игровому миру больше глубины. Проект лучше всего дислоцировать на Гугл Коде, т.к. он бесплатен, открыт для всех и довольно прост в обращении.

Что скажете? Есть желающие заняться этим?

Link to comment

ну это самое меньшее, что можно заскриптить, на стороне клиента сбрасывать событие повреждения бота, если в его данных стоит галочка - бессмертен

Link to comment

поиск пути-то несложно, я как-то делал ботов-зомби, которые с горем пополам находили путь к своим жертвам... если расставить на местности вей-поинты то вполне всё реализуемо. вопрос в том, что делать с ботами, у которых отсутсвует синкер? как заставить бота, который на другом конце города примчаться к игроку? вычислять время его движения между вей-поинтами и телепортировать с одного ну другой разве что... впрочем лагучая погрешность здесь всё-равно будет

Link to comment

Ну не скажи, найти путь в пределах прямой видимости это одно, а найти путь на бОльших расстояниях это уже совсем другая опера. Кто нибудь знает как это реализовывалось в сингле, подозреваю что для сложных перемещений там просто заранее составлялись маршруты.

Link to comment

ну смотря о каком именно расстоянии идёт речь. можно же взять все возможные маршруты по вей-поинтам и найти наименьший? конечно если под рассстоянием мы подразуемваем половину лос-сантоса то это определённо не слишком оптимизированный вариант... но можно сделать два типа вей-поинтов "большой" и "маленький", если мы имеем дело с маленькиим расстоянием в каких-нить переулках, то бот будет ходить по "маленьким", а если на больших расстояниях, то соотвественно по "большим", которые будут располагаться на дорогах/тротуарах. Вообще мы тут ерундой, чувствую, страдаем, кому охота будет по всей СА расставлять эти самые вей-поинты. Надо взглянуть чем эти "вей-поинты" представлены в сингле и уже из этого составлять алгоритм...

Link to comment

Всё уже давно придумано, у меня где-т был скрипт где бот отвезет тебя в любую точку города. Используя пути извлеченные из СА и A* алгоритм для поиска кратчайшего пути. В самой СА они никогда не ищут кратчайший путь куда-либо. Потому что это были либо миссии, где пути заданы, любо обычные пешеходы, которым путь расчитывать не надо. Предупреждаю, что расчёт пути занимает некоторое время. (Даже в гта4 вы можете заметить что gps не зразу показывает путь, а с задержкой)

Link to comment

потому что он ищет путь сразу и весь (: а вы сами как обычно путь по городу ищете - примерно знаете конечную точку и по мере езды выбираете более быстрый вариант

так все-таки может начать сначала не с транспорта, а с пеших перемещений?

кстати, вопрос выше прозвучал - если у бота в данный момент нет синкера, как он себя должен вести?

Link to comment

Можно считывать НОДЫ гта са. Далее уже состовлять пути (загрузили ноды, разместили как нужно их в памяти и т.д.). Если вдруг чо надумаете по нодам, то помогу, проблем нет :) Главное их правильно в ЛУА считать, а то в павн у меня их считать не получилось :(

Link to comment
Можно считывать НОДЫ гта са. Далее уже состовлять пути (загрузили ноды, разместили как нужно их в памяти и т.д.). Если вдруг чо надумаете по нодам, то помогу, проблем нет :) Главное их правильно в ЛУА считать, а то в павн у меня их считать не получилось :(

структуру НОДов знаешь? дай пжлста. Я хочу механизм динамической подгрузки опробовать.

Link to comment

Вообще был такой скрипт который заставлял ботов ходить по путям только в свой файл записаны. С мта сайта его удалили, но я то запасливый) http://narod.ru/disk/14961339001/_world-peds.zip.html Правда боты там трусливые все без исключения. И вроде там с ходьбой по путям вроди чтото не очень, точно не помню.

Link to comment
Можно считывать НОДЫ гта са. Далее уже состовлять пути (загрузили ноды, разместили как нужно их в памяти и т.д.). Если вдруг чо надумаете по нодам, то помогу, проблем нет :) Главное их правильно в ЛУА считать, а то в павн у меня их считать не получилось :(

структуру НОДов знаешь? дай пжлста. Я хочу механизм динамической подгрузки опробовать.

Сам расписывать не хочу, http://www.gtamodding.com/index.php?tit ... 8GTA_SA%29

Link to comment
Можно считывать НОДЫ гта са. Далее уже состовлять пути (загрузили ноды, разместили как нужно их в памяти и т.д.). Если вдруг чо надумаете по нодам, то помогу, проблем нет :) Главное их правильно в ЛУА считать, а то в павн у меня их считать не получилось :(

Эти ноды уже сконвертировал в Lua таблицу Lil_Toady

P.S. После сессии присоединюсь в к вам.

Link to comment
  • 2 weeks later...

Тут скорее таблицы нужно сравнивать с массивами, а не с файлами..

По сути это и есть массив, только туда можно поместить данные разных типов..

Хоть массив в массиве :D

На самом деле очень удобная и эффективная вещь.

Link to comment
Тут скорее таблицы нужно сравнивать с массивами, а не с файлами..

По сути это и есть массив, только туда можно поместить данные разных типов..

Хоть массив в массиве :D

На самом деле очень удобная и эффективная вещь.

да я в курсе что это. просто привычка, не хранить тонны информации в оперативной памяти...

Настоящии программеры, ***и клали на экзамены D:

Link to comment
Настоящии программеры, ***и клали на экзамены D:

Это те, настоящие программеры, которые уже кончили универ, или те, "настоящие программеры" которые еще в школе учатся?

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...