Боты

Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
isss67wtf, он хуже, чем zBot. И встроенного zBot достаточно для реализации своих планов.
 

GIT

Сообщения
82
Реакции
6
Помог
2 раз(а)
mr_CHikAZ, работает вот так , показывает то пинг , то бот надпись
16 Сен 2017
Tranquillity, Подскажи , а где редактируется , как боты будут двигаться и есть ли у них самообучение?
 
Сообщения
1,536
Реакции
2,324
Помог
39 раз(а)
GIT, вроде 2017 год, пора освоить поиск в сети по ключевым словам, его же специально сделали для вас Ларри Пейдж и Сергей Брин.
Каждую новую карту боты автоматически анализируют при первом запуске и строят базовые маршруты (waypoints), для ручной правки есть список консольных команды, который есть в сети, либо в теме с конфигом ботов, которую я кидал раньше.
 
Сообщения
36
Реакции
33
Почему-то при использовании ReGameDLL+ReHLDS - боты YaPB, добавляются только в наблюдатели (Spectators). При этом, на оригинальном движке HL с использованием ReGameDLL всё было нормально, началось это после замены HLDS на ReHLDS. Как можно это исправить? Для меня использование YaPB очень важно. Спасибо за ответ!
 
Сообщения
350
Реакции
73
Помог
1 раз(а)
Вы с этими ботами скоро совсем угробите кс. Будете в будущем с одними ботами играть. Представьте вы обычный игрок, через год игры вам сообщают, что вы играли с ботами. Будете вы играть дальше в кс? зная что на каждом сервере стоят боты. Скоро таких ботов сделают, что вы вообще от реальных игроков не отличите. Это так быстро сейчас разойдется в массы (так как это репостится на каждом сайте), что потом каждый второй сервер будет писать, что у него нет ботов. Но игроки уже верить никому не будут. Вот тогда мы все дружно будем играть с одними ботами.
 
Последнее редактирование:
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
GALAXY, не вижу ничего плохого в том, что на сервере присутствуют боты. Особенно в ночное время, когда онлайн спадает. Если тебе нравится этот сервер и хочется поиграть на нем, а людей нет, то боты приходят на помощь.
 
Сообщения
36
Реакции
33
Сбросьте, пожалуйста, нормальный профиль на csbot (zbot), а то у меня сидят только, кемперят, и это на сложнейшем уровне. Скачивала с интернета, не помогло. А у YaPB реакция лучше, отступать и прятаться умеют ))
 
Сообщения
36
Реакции
33
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Emilyfayri, находите в интернете исправленные навигации для ботов для этих же карт, где вырезаны все ненужные кемперские места для ботов, которые создаются автоматом при анализе карты. Или сами редактируйте и убирайте ненужные вам кемперские места.

Поищите тут: https://gamebanana.com/gamefiles/cats/4428
 
Сообщения
36
Реакции
33
Emilyfayri, находите в интернете исправленные навигации для ботов для этих же карт, где вырезаны все ненужные кемперские места для ботов, которые создаются автоматом при анализе карты. Или сами редактируйте и убирайте ненужные вам кемперские места.

Поищите тут: https://gamebanana.com/gamefiles/cats/4428
Спасибо! Я поняла проблему, буду искать. Называется, начала использовать игровую мышь, сразу скилл повысился :smile3: Перестали устраивать стандартные боты. Насчёт вэйпоинтов, привыкла пользоваться готовыми. Буду искать, или редактировать, хотя раньше пыталась, ума не хватило (мозги забиты совсем другим)
 
Сообщения
36
Реакции
33
Заработал у меня YaPB! "Не знаю, что я сделала, но это помогло" (с). На одной из копий клиента (я часто делаю архивацию, перед тем, как что-то изменить в клиенте), достаточно было отключить\удалить модуль принудительного включения CSBot'a - csbot_enable_mm и всё заработало.

Теперь у меня другой вопрос: почему-то на больших картах, например: de_lost_tomb, при большом количестве ботов, CSBot очень сильно тормозит игру, особенно в момент стрельбы. При переходе на ReGameDLL стало лучше, но всё равно игра часто идёт рывками. Можно ли это как-то исправить?
Интересно, что при использовании YaPB тормозов не наблюдается, а значит дело не в настройках игры.
 
Сообщения
36
Реакции
33
Ещё пара вопросов:
1. CSBot встроен в файл mp.dll?
2. Существуют ли какие-нибудь неофициальные модификации этого бота (кроме ReGame.dll)?
Спасибо!
23 Фев 2018
Первый вопрос не глупый, а скорее, некорректный. Я имею в виду, не оформлял ли кто-нибудь CSBot отдельным от mp.dll файлом библотеки?

Ещё несколько вопросов:
1. Отличается ли ИИ бота для CS Source от бота для CS1.6?
2. И пытался ли кто-нибудь перенести бота из CSS в CS1.6?
 
Последнее редактирование:
Сообщения
2,143
Реакции
1,225
Помог
44 раз(а)
Первый вопрос не глупый, а скорее, некорректный. Я имею в виду, не оформлял ли кто-нибудь CSBot отдельным от mp.dll файлом библотеки?
Раньше он был отдельно. Потом его просто добавили в ReGameDLL.

1. Отличается ли ИИ бота для CS Source от бота для CS1.6?
2. И пытался ли кто-нибудь перенести бота из CSS в CS1.6?
1) Да
2) Не знаю. Попробуйте погуглить.

P.S. Разные движки - разные ИИ.
 
Сообщения
36
Реакции
33
Раньше он был отдельно. Потом его просто добавили в ReGameDLL.
Спасибо за ответ. Надо полагать, здесь, на сайте есть старые версии. Мне просто интересно ))

2) Не знаю. Попробуйте погуглить..
Искала, уже не раз, ничего не нашла.
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
оформлял ли кто-нибудь CSBot отдельным от mp.dll файлом библотеки?
CSBot, CZBots - это всё взято на прямую из CS:Condition Zero.
Немножко расскажу предысторию. Ранее, умельцы выяснили, что библиотека czero подходит для cstrike, если просто переименовать её, однако наблюдался ряд проблема, так и нововведений. Опытным путём решили, что код для ботов czero & cstrike - один. Отличается на моментах, где библиотека определяет папку игры.

Умельцы создали плагин к metamod (DLL-ку), который заставлял библитоеку GameDLL думать, что она работает работает с CZero. Проделал этот финт разработчик YaPB (Whistler <[email protected]>", "http://yapb.bots-united.com").
C++:
//
// engine_api.cpp
//
// Implementation of Half-Life engine functions
//

#include "main.h"
#ifdef _WIN32
#include <io.h>
#else
#include <unistd.h>
#endif

int pfnPrecacheModel(char* s) {
   if (strncmp(s, "models/hostage", 14) == 0 ||
      strstr(s, "spetsnaz") != NULL ||
      strstr(s, "militia") != NULL) {
      RETURN_META_VALUE(MRES_SUPERCEDE, g_engfuncs.pfnPrecacheModel("models/hostage.mdl"));
   }
   RETURN_META_VALUE(MRES_IGNORED, 0);
}

int pfnPrecacheSound(char* s) {
   if (strncmp(s, "hostage/", 8) == 0) {
      static int i = 0;
      switch (i++ % 5) {
      case 0:
         RETURN_META_VALUE(MRES_SUPERCEDE, (*g_engfuncs.pfnPrecacheSound)("hostage/hos1.wav"));
      case 1:
         RETURN_META_VALUE(MRES_SUPERCEDE, (*g_engfuncs.pfnPrecacheSound)("hostage/hos2.wav"));
      case 2:
         RETURN_META_VALUE(MRES_SUPERCEDE, (*g_engfuncs.pfnPrecacheSound)("hostage/hos3.wav"));
      case 3:
         RETURN_META_VALUE(MRES_SUPERCEDE, (*g_engfuncs.pfnPrecacheSound)("hostage/hos4.wav"));
      case 4:
      default:
         RETURN_META_VALUE(MRES_SUPERCEDE, (*g_engfuncs.pfnPrecacheSound)("hostage/hos5.wav"));
      }
   }
   RETURN_META_VALUE(MRES_IGNORED, 0);
}

void pfnSetModel(edict_t *e, const char *m) {
   if (strncmp(m, "models/hostage", 14) == 0) {
      g_engfuncs.pfnSetModel(e, "models/hostage.mdl");
      RETURN_META(MRES_SUPERCEDE);
   }
   RETURN_META(MRES_IGNORED);
}

int pfnModelIndex(const char *m) {
   if (strncmp(m, "models/hostage", 14) == 0) {
      RETURN_META_VALUE(MRES_SUPERCEDE, g_engfuncs.pfnModelIndex("models/hostage.mdl"));
   }
   RETURN_META_VALUE(MRES_IGNORED, 0);
}

void pfnEmitSound(edict_t *entity, int channel, const char *sample, float volume, float attenuation, int fFlags, int pitch) {
   if (strncmp(sample, "hostage/", 8) == 0) {
      if (strncmp(sample, "hostage/huse/", 13) == 0) {
         switch (rand() % 5) {
         case 0:
            (*g_engfuncs.pfnEmitSound)(entity, channel, "hostage/hos1.wav", volume, attenuation, fFlags, pitch);
            break;
         case 1:
            (*g_engfuncs.pfnEmitSound)(entity, channel, "hostage/hos2.wav", volume, attenuation, fFlags, pitch);
            break;
         case 2:
            (*g_engfuncs.pfnEmitSound)(entity, channel, "hostage/hos3.wav", volume, attenuation, fFlags, pitch);
            break;
         case 3:
            (*g_engfuncs.pfnEmitSound)(entity, channel, "hostage/hos4.wav", volume, attenuation, fFlags, pitch);
            break;
         case 4:
         default:
            (*g_engfuncs.pfnEmitSound)(entity, channel, "hostage/hos5.wav", volume, attenuation, fFlags, pitch);
            break;
         }
      }
      RETURN_META(MRES_SUPERCEDE);
   }
   RETURN_META(MRES_IGNORED);
}


byte *pfnLoadFileForMe(char *filename, int *pLength) {
   int length = strlen(filename);
   if (strcmp(&filename[length - 4], ".nav") == 0) {
      int i = length;
      while (i > 0 && filename[i] != '/' && filename[i] != '\\')
         i--;
      if (i > 0)
         i++;
#ifndef __linux__
      if (access(va("czero\\maps\\%s", &filename[i]), 0) != -1) {
#else
      if (access(va("czero/maps/%s", &filename[i]), 0) != -1) {
#endif
         RETURN_META_VALUE(MRES_SUPERCEDE, (*g_engfuncs.pfnLoadFileForMe)(va("../czero/maps/%s", &filename[i]), pLength));
      }
   }
   RETURN_META_VALUE(MRES_IGNORED, 0);
}

void pfnGetGameDir(char *szGetGameDir) {
   strcpy(szGetGameDir, "czero");
   RETURN_META(MRES_SUPERCEDE);
}

void pfnSetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value) {
   if (strcmp(key, "model") == 0) {
      if (strcmp(value, "spetsnaz") == 0) {
         char *models[] = {"urban", "gsg9", "sas", "gign"};
         g_engfuncs.pfnSetClientKeyValue(clientIndex, infobuffer, key, models[rand() % 4]);
         RETURN_META(MRES_SUPERCEDE);
      } else if (strcmp(value, "militia") == 0) {
         char *models[] = {"terror", "leet", "arctic", "guerilla"};
         g_engfuncs.pfnSetClientKeyValue(clientIndex, infobuffer, key, models[rand() % 4]);
         RETURN_META(MRES_SUPERCEDE);
      }
   }
   RETURN_META(MRES_IGNORED);
}

C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine,
                                   int *interfaceVersion)
{
   pengfuncsFromEngine->pfnPrecacheModel = pfnPrecacheModel;
   pengfuncsFromEngine->pfnPrecacheSound = pfnPrecacheSound;
   pengfuncsFromEngine->pfnSetModel = pfnSetModel;
   pengfuncsFromEngine->pfnModelIndex = pfnModelIndex;
   pengfuncsFromEngine->pfnEmitSound = pfnEmitSound;
   pengfuncsFromEngine->pfnLoadFileForMe = pfnLoadFileForMe;
   pengfuncsFromEngine->pfnGetGameDir = pfnGetGameDir;
   pengfuncsFromEngine->pfnSetClientKeyValue = pfnSetClientKeyValue;

   return TRUE;
}
В итоге, в ReGameDLL. что бы не нужно было так извращаться с подменой и обманом GameDLL - разработчики, имея исходный код, внесли коррективы для удобства управления этими возможностями из CS:CZ.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу