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" считывалась другим способом, не из сторонней серверной дллки, а из серверной дллки, в которую включены боты и для ботов она не является сторонней. Естественно я не знаю как это сделать.
LLAPb ну захотелось мне так сделать. Сначала полтора часа вырезал из ботов поддержку модов(DMC,TFC,CS,HW,OP4). Потом за час интегрировал.
Цитата:
LLAPb писал:
И неужели вызов функции "player" - единственная "проблема", возникающая при этом? 0_o
Других проблем пока нет, т.к. игра вылетает при попытке создать бота. Вообще я смотрел исходники bot10 от Ботмана(там они интегрированные) и сравнивал, чтобы ничего не упустить.
А вообще я интегрировал ботов, чтобы работали все функции всех энтитей. Ведь боты рассчитаны на сдк 2.0. Ничего с ними правильно не работает не то что в Спирите, даже в хл, когда они стоят сторонней дллкой. Но главная проблема, которая меня заставила этим заняться - загрузка\сохранение.
Дядя Миша вы наверное не поняли. Когда подключена сторонняя дллка ботов, то когда играешь в одиночную игру, после сохранения и последующей загрузки все брашевые энтити(func_tracktrain, func_door) "зависают", т.е. не продолжают движение, а монстры тупо стоят на месте и ни на что не реагируют. Если вспомнить Akimbot, с ними было примерно то же, только энтити сразу не работали. В поздних версиях HPB_bot всё отлично работает(вспомним Ретрибьюшн). Ну а я взял себе в качестве ботов для мода Parabot. Они основываются на хрензнаеткаком HPB_bot'e, который появился раньше чем СДК 2.0
Может есть вариант решения проблемы типа операций с классом CBasePlayer? Или придётся малость переписывать класс бота, чтобы он наследовал класс игрока(как bot10)?
Ku2zoff халфа овладевает серверной дллкой, примерно как бумер крестьянами во дворе, экспорты тчинков при загрузке вызываются напрямую. И стоит ли удивляться, что халфа вызывая соответствующие экспорты из дллки бота не может добится адекватных результатов.
В Xash я всчячески пытался избавиться от указателей на функции типа Think, которые потом вызываются экспортом. Но это ИМХО чересчур радикальный метод.
Надо все эти экспорты тчинков добавить в дллку бота и связать с тчинками сервера.
Тогда по идее все должно заработать.
Дядя Миша писал: экспорты тчинков при загрузке вызываются напрямую
Халфе все равно, какой дллкой овладевать, как и бумеру в случае крестьян во дворе. Есть пара функций pfnFunctionName/pfnNameForFunction, которые работают напрямую с символами дллки. А дллка, которой овладели, примерно как бумер - крестьянами во дворе, должна в свою очередь сама овладеть другой дллкой, тоже как бумер крестьянами во дворе, разумеется, и в своих экспортах (которые вызывает овладевшая ею халфа) вызывать экспорты дллки, которой овладела она сама. Как бумер крестьянами во дворе, да.
Просто загрузил функцию игрока в дллку из неё же самой. Осталось несколько проблем:
1. Боты не спавнятся как положено(у меня такая фишка как в DMC - когда жмём ОК и закрываем motd игрок спавнится) а во внешней ботовской дллке спавнились.
2. Боты не атакуют никого.
Первая проблема, думаю, скоро будет решена, т.к. я знаю путь решения, вторая пока является действительно проблемой.
Я не понимаю, как можно так формулировать проблему. Ты не знаком с методикой отладки программ? Ты не знаешь про такие инструменты, как ALERT, MessageBox и __asm int 3? Вот сначала наставь их в коде и разберись, что именно не работает, а потом формулируй проблему. В 99% случаев ты даже сам сообразишь, как ее исправить.
Дядя Миша а я, наоборот, эту команду юзаю чаще всех. Мне удобнее сразу все нужные переменные в окне Watch посмотреть, чем вбивать их в строку форматирования ALERT'a