Проблема с плагином Spectr_bot

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
43
Реакции
0
Помог
1 раз(а)
Ошибка
[AMXX] Run time error 10 (plugin "spect_bot.amxx") (native "cs_set_user_team") - debug not enabled!
[AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
ОС
Linux
Amx Mod X
Amx Mod X = 1.9.0
Билд
Build date: 09:47:42 Sep 29 2018 (1631)
ReGamedll
ReGameDLL version: 5.7.0.323-dev
Версия Metamod
Metamod v1.21p37
Список метамодулей
description      stat pend  file              vers      src   load  unlod
[ 1] VoiceTranscoder RUN - VoiceTranscoder. v2017RC3 ini ANY ANY
[ 2] Reunion RUN - reunion_mm_i386. v0.1.0.9 ini Start Never
[ 3] ReAuthCheck RUN - reauthcheck_mm_i v0.1.6 ini Start Never
[ 4] AMX Mod X RUN - amxmodx_mm_i386. v1.9.0.5 ini Start ANY
[ 5] Rechecker RUN - rechecker_mm_i38 v2.5 ini Chlvl ANY
[ 6] WHBlocker RUN - whblocker_mm_i38 v1.5.696 ini Chlvl ANY
[ 7] ReSemiclip RUN - resemiclip_mm_i3 v2.3.9 ini Chlvl ANY
[ 8] CStrike RUN - cstrike_amxx_i38 v1.9.0.5 pl4 ANY ANY
[ 9] CSX RUN - csx_amxx_i386.so v1.9.0.5 pl4 ANY ANY
[10] MySQL RUN - mysql_amxx_i386. v1.9.0.5 pl4 ANY ANY
[11] SQLite RUN - sqlite_amxx_i386 v1.9.0.5 pl4 ANY ANY
[12] Engine RUN - engine_amxx_i386 v1.9.0.5 pl4 ANY ANY
[13] ReAPI RUN - reapi_amxx_i386. v5.8.0.1 pl4 ANY Never
[14] ReAimDetector RUN - reaimdetector_am v0.2.2 pl4 ANY Never
[15] FakeMeta RUN - fakemeta_amxx_i3 v1.9.0.5 pl4 ANY ANY
[16] Ham Sandwich RUN - hamsandwich_amxx v1.9.0.5 pl4 ANY ANY
[17] Fun RUN - fun_amxx_i386.so v1.9.0.5 pl4 ANY ANY
[18] GeoIP RUN - geoip_amxx_i386. v1.9.0.5 pl4 ANY ANY
[19] ReCSDM RUN - csdm_amxx_i386.s v3.6 pl4 ANY ANY
Список плагинов
name                    version     author            file             status
[ 1] FreshBans 1.4.0b kanagava fresh_bans_1.4. running
[ 2] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a running
[ 3] Advanced Gag 1.9.0 neygomon amx_gag.amxx running
[ 4] Advanced MapChooser 1.4 neygomon map_chooser.amx running
[ 5] Admin Loader 3.5 neygomon admin_loader.am running
[ 6] Admin Commands 1.9.0.5241 AMXX Dev Team admincmd.amxx running
[ 7] Admin Chat 1.9.0.5241 AMXX Dev Team adminchat.amxx running
[ 8] Anti Flood 1.9.0.5241 AMXX Dev Team antiflood.amxx running
[ 9] Maps Menu 1.9.0.5241 AMXX Dev Team mapsmenu.amxx running
[ 10] Restrict Weapons 1.9.0.5241 AMXX Dev Team restmenu.amxx running
[ 11] Admin Votes 1.9.0.5241 AMXX Dev Team adminvote.amxx running
[ 12] Players Menu 1.9.0.5241 AMXX Dev Team plmenu_L.amxx running
[ 13] c4 timer 1.1 cheap_suit c4timer.amxx running
[ 14] Stats Configuration 1.9.0.5241 AMXX Dev Team statscfg.amxx running
[ 15] Say /me, Say /hp 1.4 neygomon sayme.amxx running
[ 16] Map Manager 2.5.61 Mistrick mapmanager.amxx running
[ 17] Weapon Icon 1.0 Zenix weapon_icon.amx running
[ 18] HS_Blood 1.1 tuty hs_blood.amxx running
[ 19] Auto Restart 1.0.3 neygomon auto_rr.amxx running
[ 20] DemoRecoder 1.1 neygomon demo_rec.amxx running
[ 21] Menus Front-End 1.5 neugomon menufront_end.a running
[ 22] MenuGen 1.0 CrAsH MenuGen.amxx running
[ 23] [ReAPI] IDEAL VIP 1.4.8 Wikiname (Remake re_ideal_vip.am running
[ 24] Invisible Spectator 1.0 ReHLDS Team invisible_spect running
[ 25] WeaponMenu 1.1 neygomon wmenu.amxx running
[ 26] Lite Admin ESP 1.0 neygomon admin_esp.amxx running
[ 27] ScreenMaker 1.1 neygomon screen_maker.am running
[ 28] Log Connect 1.0 Leo_[BH] log_connect.amx running
[ 29] Fire in the hole 0.1 VEN fire_in_the_hol running
[ 30] AFK Control 1.4.1 [Rnd neygomon afk_control.amx running
[ 31] Ping Control 0.3 neygomon ping_control.am running
[ 32] Show Damage 1.0 neygomon damager.amxx running
[ 33] ResetScore and GameNam 1.0 Phantom rs_and_game_nam running
[ 34] Top Awards 0.11c Safety1st top_awards.amxx running
[ 35] [ReAPI] Parachute 10.0 Leo_[BH] parachute_vip.a running
[ 36] Advert Messages 1.2.2 neygomon adverts.amxx running
[ 37] HUD_Adverts_Deads 1.3.1 pUzzlik hud_message_dea running
[ 38] [Reapi] Block Advert 1.4 neygomon block_advert.am running
[ 39] AntiAd 0.1 Mati antiad.amxx running
[ 40] Anti Reklama 1.1 MarcaD anti_reklama.am running
[ 41] Spect Bot 1.4 Jack Daniel`s spect_bot.amxx running
[ 42] Chat Manager 1.1.1-11 Mistrick chatmanager.amx running
[ 43] RC BaseChanger 1.0 AMXX rc_basechanger. running
[ 44] ReChecker Logging 1.0 AMXX rc_logging.amxx running
[ 45] Fake Ping 1.0 MeRcyLeZZ/gyxoBk FakePing.amxx running
[ 46] Game Namer 1.1 NeuroToxin gamenamechanger running
[ 47] Lite VoteBan 1.4 neygomon voteban.amxx running
[ 48] Plugin Name Version Author no_shipci.amxx running
[ 49] Advanced Experience Sy 0.5.9 [REA serfreeman1337/s aes_main.amxx running
[ 50] AES: CStrike Addon 0.5.9 [REA serfreeman1337/s aes_exp_cstrike running
[ 51] AES: Informer 0.5.9 [REA serfreeman1337/s aes_informer.am running
[ 52] AES: Admin Tools 0.5.9 [REA serfreeman1337/s aes_exp_editor. running
[ 53] AES: StatsX 0.5.9 [REA serfreeman1337/s aes_statsx_cstr running
[ 54] AES: Bonus System 0.5.9 Vega serfreeman1337/s aes_bonus_syste running
[ 55] AES: Bonus CSTRIKE 0.5.9 [REA serfreeman1337/s aes_bonus_cstri running
[ 56] ReCSDM Main 3.6 ReCSDM Team csdm_main.amxx running
[ 57] ReCSDM Equip 3.6 ReCSDM Team csdm_equip.amxx running
[ 58] ReCSDM Spawns 3.6 ReCSDM Team csdm_spawn_pres running
[ 59] ReCSDM Misc 3.6 ReCSDM Team csdm_misc.amxx running
[ 60] ReCSDM Stripper 3.6 KWo csdm_stripper.a running
[ 61] ReCSDM Protection 3.6 BAILOPAN csdm_protection running
[ 62] ReCSDM FFA 3.6 ReCSDM Team csdm_ffa.amxx running
Автор плагина
"Jack Daniel`s"
Версия плагина
"1.4"
Исходный код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>

new const Plugin[] = "Spect Bot"
new const Version[] = "1.4"
new const Author[] = "Jack Daniel`s"

new g_BotName, g_Immunity, g_Auto
new g_Bot

public plugin_init()
{
register_plugin(Plugin, Version, Author)

g_BotName = register_cvar("sbot_name","HLRV - vk.com/gameclub_18")
g_Auto = register_cvar("sbot_auto","1")
g_Immunity = register_cvar("sbot_immunity","1")

set_task(10.0, "ServerStatus", 777, _, _, "b")
}

public createBot()
{
new BotName[32]

get_pcvar_string(g_BotName, BotName, charsmax(BotName))
g_Bot = engfunc(EngFunc_CreateFakeClient, BotName)

if (g_Bot > 0)
{
dllfunc(MetaFunc_CallGameEntity, "HLRV - vk.com/gameclub_18", g_Bot)
set_pev(g_Bot, pev_flags, FL_FAKECLIENT)

set_pev(g_Bot, pev_model, "")
set_pev(g_Bot, pev_viewmodel2, "")
set_pev(g_Bot, pev_modelindex, 0)

set_pev(g_Bot, pev_renderfx, kRenderFxNone)
set_pev(g_Bot, pev_rendermode, kRenderTransAlpha)
set_pev(g_Bot, pev_renderamt, 0.0)

set_team(g_Bot)
if (get_pcvar_num(g_Immunity))
set_user_flags(g_Bot, ADMIN_IMMUNITY)
}
else
log_amx ("[Spect Bot] Error!")

return PLUGIN_CONTINUE
}

public removeBot(Bot)
{
server_cmd("kick #%d", get_user_userid(Bot))
g_Bot = 0
}

public set_team(Bot)
{
if (cstrike_running()) {
cs_set_user_team(Bot, CS_TEAM_UNASSIGNED)
}
}

public ServerStatus()
{
if (get_pcvar_num(g_Auto))
{
if(is_user_connected(g_Bot))
{
if(get_playersnum(1) > (get_maxplayers() - 2))
removeBot(g_Bot)
}
else
{
if(get_playersnum(1)+1 < get_maxplayers())
createBot()
}
}
else
{
if(is_user_connected(g_Bot))
createBot()
}

if(is_user_connected(g_Bot))
{
set_team(g_Bot)

if (get_user_team(g_Bot) > 0) {
server_cmd("kick #%d", get_user_userid(g_Bot))
createBot()
}
}
}
Дорогие и уважаемые пользователи замечательного форума dev-cs. Прошу у Вас помощи. Помогите решить данную проблему. Всем хорошего настроения!
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
1,336
Реакции
528
Помог
91 раз(а)
Vadim35, для начала бы прочитать что пишет и последовать совету
add "debug" after the plugin name in plugins.ini
 
Сообщения
43
Реакции
0
Помог
1 раз(а)
present, можно пожалуйста подробнее ))) чутка не догоняю
 
Сообщения
43
Реакции
0
Помог
1 раз(а)
present, спасибо, сейчас сделаю
9 Мар 2019
present,
[CSTRIKE] Invalid player 1 (no private data)
[AMXX] Displaying debug trace (plugin "spect_bot.amxx", version "1.4")
[AMXX] Run time error 10: native error (native "cs_set_user_team")
[AMXX] [0] spect_bot.sma::set_team (line 63)
[AMXX] [1] spect_bot.sma::createBot (line 44)
[AMXX] [2] spect_bot.sma::ServerStatus (line 79)
Вот что теперь пишет
 
Сообщения
2,722
Реакции
2,997
Помог
60 раз(а)
Если у вас задача бота добавлять когда нет народа - используйте лучше более свежий плагин от SISA
Там и по коду лучше.
Оригинальная тема.

Код:
#include <amxmodx>
#include <fakemeta>
#include <amxmisc>

#define BOTS_TASKID_DELAY1            683246            // Уникальный ID для таска (первый бот)
#define BOTS_TASKID_DELAY2            683247            // Уникальный ID для таска (второй бот)

// Bots Data
enum _:e_BotsData
{
    BOTS_ACTIVE_1,        // Активность первого бота
    BOTS_ACTIVE_2,        // Активность второго бота
    BOTS_BLOBALID[33]    // Глобальный ID ботов
};

// Message IDs vars
new g_msgTeamInfo;

// Data
new g_iBotsData[e_BotsData], g_BotsName[2][32], g_Bot_Maxplayers[2];

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

/*===============================================================================================================================================
                                                                    [Plugin Init]
================================================================================================================================================*/
public plugin_init()
{
    register_plugin("Spectator Bots", "2.1", "SISA");

    // Message IDs
    g_msgTeamInfo = get_user_msgid("TeamInfo");
}

/*===============================================================================================================================================
                                                                     [Plugin Cfg]
================================================================================================================================================*/
public plugin_cfg()
{
    // Задаем переменные
    new cfgdir[64], szServerIP[32], iData[7];

    // Получаем путь к папке с Конфигами
    get_configsdir(cfgdir, charsmax(cfgdir));

    // Название первого Бота
    iData[0] = register_cvar("specbots_name1", "Server IP: ");

    // Название второго Бота
    iData[1] = register_cvar("specbots_name2", "Site: Lan-Game.com");

    // Задержка на добавление бота после смены карты
    iData[2] = register_cvar("specbots_time_delay_start", "2.0");

    // Задержка на добавление бота при дисконнекте Игрока
    iData[3] = register_cvar("specbots_time_delay_disconnect", "3.0");

    // Максимальное количество игроков, при котором первый бот выйдет с сервера
    iData[4] = register_cvar("specbots_maxplayers1", "6");

    // Максимальное количество игроков, при котором второй бот выйдет с сервера
    iData[5] = register_cvar("specbots_maxplayers2", "8");

    // Автоматически добавлять IP:PORT сервера к значению квара "specbots_name1"
    iData[6] = register_cvar("specbots_host_autodetect", "1");

    // Подгружаем Конфиг
    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[]));
    g_fCvars_Time_Delay_Start = get_pcvar_float(iData[2]);
    g_fCvars_Time_Delay_Disconnect = get_pcvar_float(iData[3]);
    g_Bot_Maxplayers[0] = get_pcvar_num(iData[4]);
    g_Bot_Maxplayers[1] = get_pcvar_num(iData[5]);

    // Если разрешен Автодетект IP:PORT сервера
    if(get_pcvar_num(iData[6]))
    {
        // Находим 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);
}

/*===============================================================================================================================================
                                                                     [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_BLOBALID][id] == 1)
        g_iBotsData[BOTS_ACTIVE_1] = 0;    // Делаем Первого бота Не Активным

    // Если вышел Второй Бот
    if(g_iBotsData[BOTS_BLOBALID][id] == 2)
        g_iBotsData[BOTS_ACTIVE_2] = 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]);
    }
}

/*===============================================================================================================================================
                                                                        [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;
    else if(iBotNum == 2)
        g_iBotsData[BOTS_ACTIVE_2] = 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();
}
 

Вложения

Сообщения
43
Реакции
0
Помог
1 раз(а)
wopox1337, а как изменить название 2го бота. Что бы не брал ip адрес автоматически. А самому написать его ник который хочу
 
Сообщения
43
Реакции
0
Помог
1 раз(а)
Osenniy Shelest, вообщем пока все настроил. Вроде работает так как нужно. Имя поменял в файле spectator_bots.cfg нужно было выставить значение specbots_host_autodetect "0"
 
Сообщения
58
Реакции
-14
Vadim35, ну я не устонавливал с двумя ботами)) а вот один пробовал.. и когда все игроки убиты раунд еще продолжается 10-15 секунд.. или игрок играет ну его показывает что он в спекторах ну он играет и невидимый становиться.. удалил spect_bot и все стала норм...
 
Сообщения
43
Реакции
0
Помог
1 раз(а)
Osenniy Shelest, сейчас использую этот плагин в моде CSDM. Работает пока без нареканий!
 
Сообщения
36
Реакции
33
Нафлудили тут.

wopox1337 дал ссылку на нормальный плагин, сама его использую, вместо того, что создаёт невидимого игрового бота.
 

ifx

Сообщения
330
Реакции
149
Помог
4 раз(а)
Vadim35, на regamedll и так есть поддержка через квар бесконечного раунда
 
Статус
В этой теме нельзя размещать новые ответы.

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

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