Spec Bots, Боты для спеков |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
Spec Bots, Боты для спеков |
iShot |
23.2.2019, 18:48
Сообщение
|
|
SISA, сервер 20 слотов, 1 резервный для игроков с привилегиями, в исходнике редактировал под амх 1.8.2, проблема в том что боты не выходят сервера, на сервере 19/20, три слота из них занимают наблюдение, это два бота и хлтв, в чём проблема?
улыбнись :) |
|
|
SISA |
23.2.2019, 19:33
Сообщение
|
SISA, сервер 20 слотов, 1 резервный для игроков с привилегиями, в исходнике редактировал под амх 1.8.2, проблема в том что боты не выходят сервера, на сервере 19/20, три слота из них занимают наблюдение, это два бота и хлтв, в чём проблема? А зачем тебе ещё боты в спеках ? И сколько ты ставил слотов для выхода моих ботов ? |
|
|
|
iShot |
23.2.2019, 19:35
Сообщение
|
|
SISA, забыл добавить в то сообщение
Cкрытый текст Код:
// Задержка на добавление бота после смены карты (не менее 2 секунд !!!)
Отредактировал: iShot, - 23.2.2019, 19:37
улыбнись :) |
|
|
SISA |
23.2.2019, 21:08
Сообщение
|
На сервере, кроме игроков, боты есть ? Попробуй снизить specbots_maxplayers1 и specbots_maxplayers2 до 16 и 17 слотов для теста. Эти квары учитывают реальных игроков и HLTV. Ботов они не учитывают, по этому, фактически, у тебя из 19ти игроков, 16 реальных + 1 HLTV. В итоге получается 17, а первый бот выйдет только при 18ти игроках.
Отредактировал: SISA, - 23.2.2019, 21:12
|
|
Поблагодарили 1 раз
|
|
Maksumus |
24.2.2019, 8:54
Сообщение
|
|
|
iShot |
24.2.2019, 19:35
Сообщение
|
|
улыбнись :) |
|
|
Shadowless |
20.12.2019, 11:15
Сообщение
|
|
WITH 3 BOTS + CFGprecache
Cкрытый текст #include <amxmodx> #include <fakemeta> #include <amxmisc> #define BOTS_TASKID_DELAY1 683246 #define BOTS_TASKID_DELAY2 683247 #define BOTS_TASKID_DELAY3 683248 // Bots Data enum _:e_BotsData { BOTS_ACTIVE_1, BOTS_ACTIVE_2, BOTS_ACTIVE_3, BOTS_BLOBALID[33] }; // Message IDs vars new g_msgTeamInfo; // Data new g_iBotsData[e_BotsData], g_BotsName[3][32], g_Bot_Maxplayers[3]; // Cvars new Float:g_fCvars_Time_Delay_Start, Float:g_fCvars_Time_Delay_Disconnect; //Offsets #define m_iTeam 114 #define CBASEMONSTER_LINUX_XTRA_OFF 5 new const SpecBots_ConfigFile[] = "addons/amxmodx/configs/spectator_bots.cfg" /*=============================================================================== ================================================================ [Plugin Init] ================================================================================ ================================================================*/ public plugin_init() { register_plugin("Spectator Bots", "2.1", "SISA"); // Message IDs g_msgTeamInfo = get_user_msgid("TeamInfo"); } /*=============================================================================== ================================================================ [Plugin Cfg] ================================================================================ ================================================================*/ public plugin_precache() { if(!file_exists(SpecBots_ConfigFile)) { write_file(SpecBots_ConfigFile, "Spec Bots - Settings^n") write_file(SpecBots_ConfigFile, "specbots_name1 ^"Server IP: ^"") write_file(SpecBots_ConfigFile, "specbots_name2 ^"Site: CS.com^"") write_file(SpecBots_ConfigFile, "specbots_name3 ^"VK: VK.com^"") write_file(SpecBots_ConfigFile, "specbots_time_delay_start ^"2.0^"") write_file(SpecBots_ConfigFile, "specbots_time_delay_disconnect ^"3.0^"") write_file(SpecBots_ConfigFile, "specbots_maxplayers1 ^"28^"") write_file(SpecBots_ConfigFile, "specbots_maxplayers2 ^"27^"") write_file(SpecBots_ConfigFile, "specbots_maxplayers3 ^"26^"") write_file(SpecBots_ConfigFile, "specbots_host_autodetect ^"0^"") } } public plugin_cfg() { // Задаем переменные new cfgdir[64], szServerIP[32], iData[9]; // Получаем путь к папке с Конфигами get_configsdir(cfgdir, charsmax(cfgdir)); iData[0] = register_cvar("specbots_name1", "Server IP: "); iData[1] = register_cvar("specbots_name2", "Site: MinimalServ.com"); iData[2] = register_cvar("specbots_name3", "FB: MInimaL"); iData[3] = register_cvar("specbots_time_delay_start", "2.0"); iData[4] = register_cvar("specbots_time_delay_disconnect", "3.0"); iData[5] = register_cvar("specbots_maxplayers1", "6"); iData[6] = register_cvar("specbots_maxplayers2", "8"); iData[7] = register_cvar("specbots_maxplayers3", "10"); iData[8] = register_cvar("specbots_host_autodetect", "0"); // Подгружаем Конфиг server_cmd("exec %s/spectator_bots.cfg", cfgdir); server_exec(); // Берем значения Кваров из конфига get_pcvar_string(iData[0], g_BotsName[0], charsmax(g_BotsName[])); get_pcvar_string(iData[1], g_BotsName[1], charsmax(g_BotsName[])); get_pcvar_string(iData[2], g_BotsName[2], charsmax(g_BotsName[])); g_fCvars_Time_Delay_Start = get_pcvar_float(iData[3]); g_fCvars_Time_Delay_Disconnect = get_pcvar_float(iData[4]); g_Bot_Maxplayers[0] = get_pcvar_num(iData[5]); g_Bot_Maxplayers[1] = get_pcvar_num(iData[6]); g_Bot_Maxplayers[2] = get_pcvar_num(iData[7]); // Если разрешен Автодетект IP:PORT сервера if(get_pcvar_num(iData[8])) { // Находим IP:PORT сервера get_user_ip(0, szServerIP, charsmax(szServerIP), 0); // Запоминаем IP:PORT сервера в глобальный массив strcat(g_BotsName[0], szServerIP, charsmax(g_BotsName[])); } // Создаем двух Ботов set_task(g_fCvars_Time_Delay_Start, "Task_Add_Fake_Bot", BOTS_TASKID_DELAY1, "1", 2); set_task(g_fCvars_Time_Delay_Start, "Task_Add_Fake_Bot", BOTS_TASKID_DELAY2, "2", 2); set_task(g_fCvars_Time_Delay_Start, "Task_Add_Fake_Bot", BOTS_TASKID_DELAY3, "3", 2); } /*=============================================================================== ================================================================ [Client Disconnected] ================================================================================ ================================================================*/ public client_disconnected(id) { // Задаем переменные static iPlayersNum, Players[32]; // Получаем количество игроков, исключая Ботов get_players(Players, iPlayersNum, "c"); // Если первый бот Не Создан и Количество игроков не превышает допустимый Максимум if(!g_iBotsData[BOTS_ACTIVE_1] && iPlayersNum <= g_Bot_Maxplayers[0] && !g_iBotsData[BOTS_BLOBALID][id]) { // Если таск не Выполняется if(!task_exists(BOTS_TASKID_DELAY1)) set_task(g_fCvars_Time_Delay_Disconnect, "Task_Add_Fake_Bot", BOTS_TASKID_DELAY1, "1", 2); // Отправляем таск на создание Первого Бота } // Если второй бот Не Создан и Количество игроков не превышает допустимый Максимум if(!g_iBotsData[BOTS_ACTIVE_2] && iPlayersNum <= g_Bot_Maxplayers[1] && !g_iBotsData[BOTS_BLOBALID][id]) { // Если таск не Выполняется if(!task_exists(BOTS_TASKID_DELAY2)) set_task(g_fCvars_Time_Delay_Disconnect, "Task_Add_Fake_Bot", BOTS_TASKID_DELAY2, "2", 2); // Отправляем таск на создание Второго Бота } if(!g_iBotsData[BOTS_ACTIVE_3] && iPlayersNum <= g_Bot_Maxplayers[2] && !g_iBotsData[BOTS_BLOBALID][id]) { // Если таск не Выполняется if(!task_exists(BOTS_TASKID_DELAY3)) set_task(g_fCvars_Time_Delay_Disconnect, "Task_Add_Fake_Bot", BOTS_TASKID_DELAY3, "3", 2); // Отправляем таск на создание Второго Бота } // Если вышел Первый Бот if(g_iBotsData[BOTS_BLOBALID][id] == 1) g_iBotsData[BOTS_ACTIVE_1] = 0; // Делаем Первого бота Не Активным // Если вышел Второй Бот if(g_iBotsData[BOTS_BLOBALID][id] == 2) g_iBotsData[BOTS_ACTIVE_2] = 0; // Делаем Второго бота Не Активным // Если вышел Второй Бот if(g_iBotsData[BOTS_BLOBALID][id] == 3) g_iBotsData[BOTS_ACTIVE_3] = 0; // Делаем Второго бота Не Активным // Обнуляем номер Бота g_iBotsData[BOTS_BLOBALID][id] = 0; } /*=============================================================================== ================================================================ [Client Putinserver] ================================================================================ ================================================================*/ public client_putinserver(id) { // Задаем переменные static iPlayersNum, Players[32]; // Получаем количество игроков, исключая Ботов get_players(Players, iPlayersNum, "c"); // Обнуляем номер Бота g_iBotsData[BOTS_BLOBALID][id] = 0; // Если первый бот Создан и Количество игроков превышает допустимый Максимум if(g_iBotsData[BOTS_ACTIVE_1] && iPlayersNum >= g_Bot_Maxplayers[0]) { // Делаем Первого бота Не Активным g_iBotsData[BOTS_ACTIVE_1] = 0; // Киаем бота server_cmd("kick ^"%s^"", g_BotsName[0]); } // Если второй бот Создан и Количество игроков превышает допустимый Максимум if(g_iBotsData[BOTS_ACTIVE_2] && iPlayersNum >= g_Bot_Maxplayers[1]) { // Делаем Второго бота Не Активным g_iBotsData[BOTS_ACTIVE_2] = 0; // Киаем бота server_cmd("kick ^"%s^"", g_BotsName[1]); } // Если второй бот Создан и Количество игроков превышает допустимый Максимум if(g_iBotsData[BOTS_ACTIVE_3] && iPlayersNum >= g_Bot_Maxplayers[2]) { // Делаем Второго бота Не Активным g_iBotsData[BOTS_ACTIVE_3] = 0; // Киаем бота server_cmd("kick ^"%s^"", g_BotsName[2]); } } /*=============================================================================== ================================================================ [Task Add Fake Bot] ================================================================================ ================================================================*/ public Task_Add_Fake_Bot(param[2]) { // Задаем переменные static msg[128], iPlayersNum, Players[32]; // Находим номер Бота new iBotNum = str_to_num(param); // Получаем количество игроков, исключая Ботов get_players(Players, iPlayersNum, "c"); // Если на сервере слишком много игроков if(iPlayersNum >= g_Bot_Maxplayers[iBotNum-1]) return; // Создаем Бота new Bot = engfunc(EngFunc_CreateFakeClient, g_BotsName[iBotNum-1]); // Если бот не был Создан if(!Bot) { // Отсправляем информацию в Амх Логи log_amx("[SpecBot] Couldn't create a bot"); return; } // Вызываем ПриватДату engfunc(EngFunc_FreeEntPrivateData, Bot); // Задаем Сетинфо set_user_info(Bot, "model", "gordon"); set_user_info(Bot, "*bot", "1"); // Вызываем фейковый Коннект dllfunc(DLLFunc_ClientConnect, Bot, g_BotsName[iBotNum-1], "127.0.0.1", msg); // Если бот Не Подключен if(!is_user_connected(Bot)) return; // Вызываем Путинсервер dllfunc(DLLFunc_ClientPutInServer, Bot); // Ставим Флаги set_pev(Bot, pev_spawnflags, pev(Bot, pev_spawnflags) | FL_FAKECLIENT); set_pev(Bot, pev_flags, pev(Bot, pev_flags) | FL_FAKECLIENT); // Глобальная активность Ботов if(iBotNum == 1) g_iBotsData[BOTS_ACTIVE_1] = 1; if(iBotNum == 2) g_iBotsData[BOTS_ACTIVE_2] = 1; if(iBotNum == 3) g_iBotsData[BOTS_ACTIVE_3] = 1; // Запоминаем ID бота g_iBotsData[BOTS_BLOBALID][Bot] = iBotNum; // Если Бот Не Валиден if(pev_valid(Bot) != 2) return; // Меняем команду set_pdata_int(Bot, m_iTeam, 3, CBASEMONSTER_LINUX_XTRA_OFF); // Меняем данные dllfunc(DLLFunc_ClientUserInfoChanged, Bot, engfunc(EngFunc_GetInfoKeyBuffer, Bot)); // Отправляем мессагу со сменой Команды message_begin(MSG_BROADCAST, g_msgTeamInfo); write_byte(Bot); write_string("SPECTATOR"); message_end(); } |
|
|
Takashi Murakami |
29.5.2020, 0:16
Сообщение
|
Боты не учитываются как игроки. Почему? На мониках видно 2/32, но в самой игре показывает 0/32 игроков на сервере.
Как пофиксить? Мб в дпрото что изменить нужно?
Отредактировал: Takashi Murakami, - 29.5.2020, 0:44
|
|
|
|
Takashi Murakami |
29.5.2020, 12:37
Сообщение
|
Ни со стима, ни с пираток, их не показывает как игроков. Хотя на других серверах (которые у меня тоже в избранном), стоит точно такой же плагин. И там даже при пустом сервере 2/32. А у меня 0/32. В чём проблема не подскажешь?
Отредактировал: Takashi Murakami, - 29.5.2020, 12:38
|
|
|
|