HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Вопрос по ботам
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Вопрос по ботам

HPB_bot как и все боты основывается на коде игрока, т.е. бот - это игрок + ИИ. Так вот в HPB_bot есть такая функция:

C++ Source Code:
1
// this is the LINK_ENTITY_TO_CLASS function that creates a player (bot)
2
void player( entvars_t *pev )
3
{
4
  static LINK_ENTITY_FUNC otherClassName = NULL;
5
  if (otherClassName == NULL)
6
    otherClassName = (LINK_ENTITY_FUNC)GetProcAddress(h_Library, "player");
7
  if (otherClassName != NULL) {
8
    (*otherClassName)( pev );
9
  }
10
  else {
11
    errorMsg( "Can't get player() function from MOD!" );
12
    printf("Parabot - Can't get player() function from MOD!\n" );
13
    Sleep(5000);
14
    exit(0);
15
  }
16
}

Она "извлекает" из дллки мода функцию игрока. Собственно мне не нужно извлекать её, т.к. я интегрировал ботов в серверную дллку. Мне нужно чтобы функция "player" считывалась другим способом, не из сторонней серверной дллки, а из серверной дллки, в которую включены боты и для ботов она не является сторонней. Естественно я не знаю как это сделать.

Сообщить модератору | | IP: Записан
Сообщение: 37556

Старое сообщение 27-09-2008 14:21
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34573
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Попробуй так:
GetProcAddress( GetModuleHandle(NULL), "player");

__________________

Сообщить модератору | | IP: Записан
Сообщение: 37557

Старое сообщение 27-09-2008 14:26
-
LLAPb
Всея руси

Дата регистрации: Apr 2008
Проживает: Москва
Сообщений: 34
Возраст: 36

Рейтинг



Цитата:
Ku2zoff писал:
я интегрировал ботов в серверную дллку


Да ладно? И сколько ты времени убил на такое? И неужели вызов функции "player" - единственная "проблема", возникающая при этом?

Сообщить модератору | | IP: Записан
Сообщение: 37558

Старое сообщение 27-09-2008 14:32
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



XaeroX не помогло. Пишет Can't get player() function from MOD! Надо как-то по-другому.

Сообщить модератору | | IP: Записан
Сообщение: 37570

Старое сообщение 27-09-2008 15:41
- За что?
LLAPb
Всея руси

Дата регистрации: Apr 2008
Проживает: Москва
Сообщений: 34
Возраст: 36

Рейтинг



Ну можешь тупо вбить код макроса LINK_ENTITY_TO_CLASS вместо всего этого...

З.Ы. вы не отвечаете на мой ответ

Сообщить модератору | | IP: Записан
Сообщение: 37571

Старое сообщение 27-09-2008 15:45
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



LLAPb ну захотелось мне так сделать. Сначала полтора часа вырезал из ботов поддержку модов(DMC,TFC,CS,HW,OP4). Потом за час интегрировал.

Цитата:

LLAPb писал:
И неужели вызов функции "player" - единственная "проблема", возникающая при этом? 0_o

Других проблем пока нет, т.к. игра вылетает при попытке создать бота. Вообще я смотрел исходники bot10 от Ботмана(там они интегрированные) и сравнивал, чтобы ничего не упустить.

А вообще я интегрировал ботов, чтобы работали все функции всех энтитей. Ведь боты рассчитаны на сдк 2.0. Ничего с ними правильно не работает не то что в Спирите, даже в хл, когда они стоят сторонней дллкой. Но главная проблема, которая меня заставила этим заняться - загрузка\сохранение.

Сообщить модератору | | IP: Записан
Сообщение: 37572

Старое сообщение 27-09-2008 15:49
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32296
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff ктож с ботами сохраняется

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 37595

Старое сообщение 27-09-2008 19:13
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Дядя Миша вы наверное не поняли. Когда подключена сторонняя дллка ботов, то когда играешь в одиночную игру, после сохранения и последующей загрузки все брашевые энтити(func_tracktrain, func_door) "зависают", т.е. не продолжают движение, а монстры тупо стоят на месте и ни на что не реагируют. Если вспомнить Akimbot, с ними было примерно то же, только энтити сразу не работали. В поздних версиях HPB_bot всё отлично работает(вспомним Ретрибьюшн). Ну а я взял себе в качестве ботов для мода Parabot. Они основываются на хрензнаеткаком HPB_bot'e, который появился раньше чем СДК 2.0

Может есть вариант решения проблемы типа операций с классом CBasePlayer? Или придётся малость переписывать класс бота, чтобы он наследовал класс игрока(как bot10)?

Сообщить модератору | | IP: Записан
Сообщение: 37608

Старое сообщение 28-09-2008 03:30
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32296
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff халфа овладевает серверной дллкой, примерно как бумер крестьянами во дворе, экспорты тчинков при загрузке вызываются напрямую. И стоит ли удивляться, что халфа вызывая соответствующие экспорты из дллки бота не может добится адекватных результатов.
В Xash я всчячески пытался избавиться от указателей на функции типа Think, которые потом вызываются экспортом. Но это ИМХО чересчур радикальный метод.
Надо все эти экспорты тчинков добавить в дллку бота и связать с тчинками сервера.
Тогда по идее все должно заработать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 37635

Старое сообщение 28-09-2008 10:41
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34573
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
экспорты тчинков при загрузке вызываются напрямую

Халфе все равно, какой дллкой овладевать, как и бумеру в случае крестьян во дворе. Есть пара функций pfnFunctionName/pfnNameForFunction, которые работают напрямую с символами дллки. А дллка, которой овладели, примерно как бумер - крестьянами во дворе, должна в свою очередь сама овладеть другой дллкой, тоже как бумер крестьянами во дворе, разумеется, и в своих экспортах (которые вызывает овладевшая ею халфа) вызывать экспорты дллки, которой овладела она сама. Как бумер крестьянами во дворе, да.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 37644
Метки: хихи

Старое сообщение 28-09-2008 11:57
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



В общем, с функцией игрока я разобрался.

C++ Source Code:
otherClassName = (LINK_ENTITY_FUNC)GetProcAddress("папкамода/dlls/server.dll", "player");

Просто загрузил функцию игрока в дллку из неё же самой. Осталось несколько проблем:
1. Боты не спавнятся как положено(у меня такая фишка как в DMC - когда жмём ОК и закрываем motd игрок спавнится) а во внешней ботовской дллке спавнились.
2. Боты не атакуют никого.

Первая проблема, думаю, скоро будет решена, т.к. я знаю путь решения, вторая пока является действительно проблемой.

Сообщить модератору | | IP: Записан
Сообщение: 37649

Старое сообщение 28-09-2008 14:43
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32296
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff и охота тебе чужих ботов ковыять? лучше своих напиши
KutuZoffBot их назовем

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 37651

Старое сообщение 28-09-2008 15:23
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34573
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Ku2zoff писал:
2. Боты не атакуют никого.

Я не понимаю, как можно так формулировать проблему. Ты не знаком с методикой отладки программ? Ты не знаешь про такие инструменты, как ALERT, MessageBox и __asm int 3? Вот сначала наставь их в коде и разберись, что именно не работает, а потом формулируй проблему. В 99% случаев ты даже сам сообразишь, как ее исправить.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 37654

Старое сообщение 28-09-2008 15:52
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32296
Нанёс повреждений: 392 ед.

Рейтинг



Ну __asm int 3 это када совсем жопа

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 37655

Старое сообщение 28-09-2008 17:42
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34573
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Дядя Миша а я, наоборот, эту команду юзаю чаще всех. Мне удобнее сразу все нужные переменные в окне Watch посмотреть, чем вбивать их в строку форматирования ALERT'a

__________________

Сообщить модератору | | IP: Записан
Сообщение: 37658

Старое сообщение 28-09-2008 17:58
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 22:42. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Вопрос по ботам
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024