Изработка на Spec bots плъгин

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Изработка на Spec bots плъгин

Мнение от southdivision » 01 Мар 2017, 14:22

Здравейте, Spec bots плъгина да представлява просто фейк играчи със следните имена:

Server IP: xx.xxx.xx.xx:27015
Forum: http://www.amxx-bg.info/forum/forum
Website: http://www.amxx-bg.info/forum
Test1: Test1
Test2: test2

Когато има 1 играч в сървъра да се показват всичките Spec ботовете
Когато има 2 играча в сървъра да показва произволно 2 (два) от Spec ботовете
Когато има 3 играча в сървъра да се показва произволни 1 (един) от Spec ботовете
Когато има 4 играча и нагоре да няма никакви spec ботове


Благодаря

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Изработка на Spec bots плъгин

Мнение от OciXCrom » 01 Мар 2017, 21:42

Не е тествано и не знам колко добре ще работи. Частта с произволните имена не успях да я направя. Имената ще се редуват както за написани във файла.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <fakemeta>

#if defined client_disconnected
    #define client_disconnect client_disconnected
#endif

enum _:Bots
{
    FromPlayers,
    ToPlayers,
    BotsNum,
}

new const g_eBots[][Bots] =
{
    { 4, 32, -1 },
    { 3, 3, 1 },
    { 2, 2, 2 },
    { 1, 1, 5 },
    { 0, 0, -1 }
}

new const g_szBotNames[][32] = 
{
    "Server IP: xx.xxx.xx.xx:27015",
    "Forum: http://www.amxx-bg.info/forum",
    "Website: http://www.amxx-bg.inf",
    "Test1: Test1",
    "Test2: test2"
}

new g_iPlayers, g_iBots

public plugin_init()
    register_plugin("SpecBots", "1.0", "OciXCrom @ amxx-bg.info/forum")

public client_connect(id)
{
    if(!is_user_bot(id))
        g_iPlayers++
        
    set_task(3.0, "CountBots")
}
    
public client_disconnect(id)
{
    if(!is_user_bot(id))
        g_iPlayers--
        
    CountBots()
    set_task(1.0, "CountBots")
}

public CountBots()
{
    static i, j
    
    for(i = 0; i < sizeof(g_eBots); i++)
    {
        if(g_eBots[i][FromPlayers] <= g_iPlayers <= g_eBots[i][ToPlayers])
        {
            if(g_eBots[i][BotsNum] == g_iBots)
                break
                
            RemoveBots()
            
            if(g_eBots[i][BotsNum] == -1)
                break
                
            for(j = 0; j < clamp(g_eBots[i][BotsNum], .max = sizeof(g_szBotNames)); j++)
                CreateBot(g_szBotNames[j])
                
            break
        }
    }
}

RemoveBots()
{
    static iPlayers[32], iPnum, i
    get_players(iPlayers, iPnum, "d")
    
    for(i = 0; i < iPnum; i++)
        server_cmd("kick #%i", get_user_userid(iPlayers[i]))
        
    g_iBots = 0
}

CreateBot(const szName[])
{
    static szReason[128], id
    id = engfunc(EngFunc_CreateFakeClient, szName)
    engfunc(EngFunc_FreeEntPrivateData, id)
    set_pev(id, pev_flags, pev(id, pev_flags) | FL_FAKECLIENT)
    dllfunc(DLLFunc_ClientConnect, id, szName, "127.0.0.1", szReason)
    dllfunc(DLLFunc_ClientPutInServer, id)
    g_iBots++
} 
Обяснение за g_eBots:

Код за потвърждение: Избери целия код

{ 4, 32, -1 },
{ 3, 3, 1 },
{ 2, 2, 2 },
{ 1, 1, 5 },
{ 0, 0, -1 } 
Ако има от X до Y играча (или ако има X играча, ако X = Y), ще има Z ботове (-1 означава 0 ботове).
Ако има от 4 до 32 играча, ще няма ботове (-1).
Ако има 3 играча (от 3 до 3), ще има 1 бот.
Ако има 2 играча (от 2 до 2), ще има 2 бота.
Ако има 1 играч, ще има 5 бота.
Ако има 0 играчи, ще има 0 ботове.

Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Re: Изработка на Spec bots плъгин

Мнение от southdivision » 01 Мар 2017, 22:52

Добре,а възможно ли е във кик менюто на amxmodmenu ботовете да не присъстват защото могат да бъдат киквани ( да бъдат с имунитет един вид ).

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Изработка на Spec bots плъгин

Мнение от OciXCrom » 01 Мар 2017, 23:24

За тази цел трябва да се редактира менюто. Друг вариант е да се добави имунитет на ботовете. За второто добави set_user_flags(id, ADMIN_IMMUNITY) в предпоследния ред.

Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Re: Изработка на Spec bots плъгин

Мнение от southdivision » 01 Мар 2017, 23:30

Благодаря! Лок

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Semrush [Bot] и 32 госта