Написание плагинов

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
@Kotya, надо бы добавить подсчёт ботов, которые уже есть на сервере, а то при каждом использовании команды будет добавляться по 5 ботов.
И в OnClientDisconnect_Post() добавить проверку является ли вышедший игрок человеком.
Ну и переменная iClients в этом коде бесполезна.
 

Yurka_Bear

Участник
Сообщения
61
Реакции
4
Но не уверен, что будет работать корректно, GetClientCount() вроде ботов тоже считает
Вообще никак на команду не реагирует. Пишу в чате bot_add и ничего((( Конфиг bot.cfg ведь не надо подгружать или надо?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
Но не уверен, что будет работать корректно, GetClientCount() вроде ботов тоже считает
можно считать сколько игроков в командах 2 и 3 (там вроде можно считать только людей)
имя функции не помню, правда
Сообщения автоматически склеены:

@shantik2012, так у плагина другая команда используется
 

Kotya

Участник
Сообщения
15
Реакции
9
Вообще никак на команду не реагирует. Пишу в чате bot_add и ничего((( Конфиг bot.cfg ведь не надо подгружать или надо?
Команда sm_addbot
C++:
#include <console.inc>

#define MaxBots 5

new i;
new bool:bAddBots;

public OnPluginStart()
{
    AddCommandListener(botAction, "sm_addbot");
}

public OnMapStart()
{
    bAddBots = false;
}

public Action:botAction(client, const String:command[], argc)
{
    if (client && IsClientInGame(client) && !IsFakeClient(client))
    {
        if (!bAddBots)
        {
            if (GetClientCount_WithoutBots() == 1)
            {
                bAddBots = true;
                for (i = 0; i < MaxBots; i++)
                {
                    ServerCommand("bot_add");
                }
            }
        }
    }
}

public OnClientDisconnect_Post(client)
{
    if (bAddBots)
    {
        if (GetClientCount_WithoutBots() < 1)
        {
            bAddBots = false;
            ServerCommand("bot_kick");
        }
    }
}

public GetClientCount_WithoutBots()
{
    new iCounts
    for(i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            iCounts++;
        }
    }
    return iCounts;
}
 

Yurka_Bear

Участник
Сообщения
61
Реакции
4
Ура
Команда sm_addbot
C++:
#include <console.inc>

#define MaxBots 5

new i;
new bool:bAddBots;

public OnPluginStart()
{
    AddCommandListener(botAction, "sm_addbot");
}

public OnMapStart()
{
    bAddBots = false;
}

public Action:botAction(client, const String:command[], argc)
{
    if (client && IsClientInGame(client) && !IsFakeClient(client))
    {
        if (!bAddBots)
        {
            if (GetClientCount_WithoutBots() == 1)
            {
                bAddBots = true;
                for (i = 0; i < MaxBots; i++)
                {
                    ServerCommand("bot_add");
                }
            }
        }
    }
}

public OnClientDisconnect_Post(client)
{
    if (bAddBots)
    {
        if (GetClientCount_WithoutBots() < 1)
        {
            bAddBots = false;
            ServerCommand("bot_kick");
        }
    }
}

public GetClientCount_WithoutBots()
{
    new iCounts
    for(i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            iCounts++;
        }
    }
    return iCounts;
}
Урра! Все работает. Только пришость убрать из спеков source TV(с ним не хотелись боты добавляться). Можно это поправить пожалуйста?
 

Kotya

Участник
Сообщения
15
Реакции
9
Ура

Урра! Все работает. Только пришость убрать из спеков source TV(с ним не хотелись боты добавляться). Можно это поправить пожалуйста?
C++:
#include <console.inc>

#define MaxBots 5

new i;
new bool:bAddBots;

public OnPluginStart()
{
    AddCommandListener(botAction, "sm_addbot");
}

public OnMapStart()
{
    bAddBots = false;
}

public Action:botAction(client, const String:command[], argc)
{
    if (client && IsClientInGame(client) && !IsFakeClient(client))
    {
        if (!bAddBots)
        {
            if (GetClientCount_WithoutBots() == 1)
            {
                bAddBots = true;
                for (i = 0; i < MaxBots; i++)
                {
                    ServerCommand("bot_add");
                }
            }
        }
    }
}

public OnClientDisconnect_Post(client)
{
    if (bAddBots)
    {
        if (GetClientCount_WithoutBots() < 1)
        {
            bAddBots = false;
            ServerCommand("bot_kick");
        }
    }
}

public GetClientCount_WithoutBots()
{
    new iCounts
    for(i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i) && !IsClientSourceTV(i))
        {
            iCounts++;
        }
    }
    return iCounts;
}
 

Yurka_Bear

Участник
Сообщения
61
Реакции
4
C++:
#include <console.inc>

#define MaxBots 5

new i;
new bool:bAddBots;

public OnPluginStart()
{
    AddCommandListener(botAction, "sm_addbot");
}

public OnMapStart()
{
    bAddBots = false;
}

public Action:botAction(client, const String:command[], argc)
{
    if (client && IsClientInGame(client) && !IsFakeClient(client))
    {
        if (!bAddBots)
        {
            if (GetClientCount_WithoutBots() == 1)
            {
                bAddBots = true;
                for (i = 0; i < MaxBots; i++)
                {
                    ServerCommand("bot_add");
                }
            }
        }
    }
}

public OnClientDisconnect_Post(client)
{
    if (bAddBots)
    {
        if (GetClientCount_WithoutBots() < 1)
        {
            bAddBots = false;
            ServerCommand("bot_kick");
        }
    }
}

public GetClientCount_WithoutBots()
{
    new iCounts
    for(i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i) && !IsClientSourceTV(i))
        {
            iCounts++;
        }
    }
    return iCounts;
}
Все отлично, только опять проблема. Они все убитые)
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Все отлично, только опять проблема. Они все убитые)
C++:
#include <console.inc>
#define MaxBots 5
new i;
new bool:bAddBots;

public OnPluginStart()
{
    AddCommandListener(botAction, "sm_addbot");
}

public OnMapStart()
{
    bAddBots = false;
}

public Action:botAction(client, const String:command[], argc)
{
    if (client && IsClientInGame(client) && !IsFakeClient(client))
    {
        if (!bAddBots)
        {
            if (GetClientCount_WithoutBots() == 1)
            {
                bAddBots = true;
                for (i = 0; i < MaxBots; i++)
                {
                    ServerCommand("bot_add");
                }
            }
            for(new t = 0;t<=MaxClients;t++)
            {
                if(IsFakeClient(t)&&!IsPlayerAlive(t)) CS_RespawnPlayer(t);
            }
        }
    }
}

public OnClientDisconnect_Post(client)
{
    if (bAddBots)
    {
        if (GetClientCount_WithoutBots() < 1)
        {
            bAddBots = false;
            ServerCommand("bot_kick");
        }
    }
}


public GetClientCount_WithoutBots()
{
    new iCounts
    for(i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i) && !IsClientSourceTV(i))
        {
            iCounts++;
        }
    }
    return iCounts;
}
 

Yurka_Bear

Участник
Сообщения
61
Реакции
4
C++:
#include <console.inc>
#define MaxBots 5
new i;
new bool:bAddBots;

public OnPluginStart()
{
    AddCommandListener(botAction, "sm_addbot");
}

public OnMapStart()
{
    bAddBots = false;
}

public Action:botAction(client, const String:command[], argc)
{
    if (client && IsClientInGame(client) && !IsFakeClient(client))
    {
        if (!bAddBots)
        {
            if (GetClientCount_WithoutBots() == 1)
            {
                bAddBots = true;
                for (i = 0; i < MaxBots; i++)
                {
                    ServerCommand("bot_add");
                }
            }
            for(new t = 0;t<=MaxClients;t++)
            {
                if(IsFakeClient(t)&&!IsPlayerAlive(t)) CS_RespawnPlayer(t);
            }
        }
    }
}

public OnClientDisconnect_Post(client)
{
    if (bAddBots)
    {
        if (GetClientCount_WithoutBots() < 1)
        {
            bAddBots = false;
            ServerCommand("bot_kick");
        }
    }
}


public GetClientCount_WithoutBots()
{
    new iCounts
    for(i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i) && !IsClientSourceTV(i))
        {
            iCounts++;
        }
    }
    return iCounts;
}
C:\Users\¤щўяш\Desktop\bot_add.sp(32) : error 017: undefined symbol "CS_RespawnPlayer"
Сообщения автоматически склеены:

Вообщем ребят, проблема была в следущем. У меня на сервере при смене карты, 30 сек разминка. На ней добавляешь ботов, и все гуд. Разминка заканчивается, делается рестарт раунда, и после они все мертвы.
 
Последнее редактирование:

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
C:\Users\¤щўяш\Desktop\bot_add.sp(32) : error 017: undefined symbol "CS_RespawnPlayer"
Сообщения автоматически склеены:

Вообщем ребят, проблема была в следущем. У меня на сервере при смене карты, 30 сек разминка. На ней добавляешь ботов, и все гуд. Разминка заканчивается, делается рестарт раунда, и после они все мертвы.
x:
#include <sourcemod>
#include <cstrike>
#pragma tabsize 4
#define MaxBots 5
new i;
new bool:bAddBots;

public OnPluginStart()
{
    AddCommandListener(botAction, "sm_addbot");
    HookEvent("round_start",Ev_RS);
}

public OnMapStart()
{
    bAddBots = false;
}

public Ev_RS(Handle:event, const String:name[], bool:dontBroadcast)
{
    for(new t = 0;t<MaxClients;t++)
    {
        if(IsFakeClient(t)&&!IsPlayerAlive(t))
        {
            CS_RespawnPlayer(t);
        }
    }
}

public Action:botAction(client, const String:command[], argc)
{
    if (client && IsClientInGame(client) && !IsFakeClient(client))
    {
        if (!bAddBots)
        {
            if (GetClientCount_WithoutBots() == 1)
            {
                bAddBots = true;
                for (i = 0; i < MaxBots; i++)
                {
                    ServerCommand("bot_add");
                }
            }
        }
    }
}

public OnClientDisconnect_Post(client)
{
    if (bAddBots)
    {
        if (GetClientCount_WithoutBots() < 1)
        {
            bAddBots = false;
            ServerCommand("bot_kick");
        }
    }
}


public GetClientCount_WithoutBots()
{
    new iCounts;
    for(i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i) && !IsClientSourceTV(i))
        {
            iCounts++;
        }
    }
    return iCounts;
}
 
Последнее редактирование:

Yurka_Bear

Участник
Сообщения
61
Реакции
4
x:
#include <sourcemod>
#include <cstrike>
#pragma tabsize 4
#define MaxBots 5
new i;
new bool:bAddBots;

public OnPluginStart()
{
    AddCommandListener(botAction, "sm_addbot");
    HookEvent("round_start",Ev_RS);
}

public OnMapStart()
{
    bAddBots = false;
}

public Action:Ev_RS(Event:event, const String:name[], bool:dontBroadcast)
{
    for(new t = 0;t<MaxClients;t++)
    {
        if(IsFakeClient(t)&&!IsPlayerAlive(t))
        {
            CS_RespawnPlayer(t);
        }
    }
}

public Action:botAction(client, const String:command[], argc)
{
    if (client && IsClientInGame(client) && !IsFakeClient(client))
    {
        if (!bAddBots)
        {
            if (GetClientCount_WithoutBots() == 1)
            {
                bAddBots = true;
                for (i = 0; i < MaxBots; i++)
                {
                    ServerCommand("bot_add");
                }
            }
        }
    }
}

public OnClientDisconnect_Post(client)
{
    if (bAddBots)
    {
        if (GetClientCount_WithoutBots() < 1)
        {
            bAddBots = false;
            ServerCommand("bot_kick");
        }
    }
}


public GetClientCount_WithoutBots()
{
    new iCounts;
    for(i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i) && !IsClientSourceTV(i))
        {
            iCounts++;
        }
    }
    return iCounts;
}
error 100: function prototypes do not match
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,519
Реакции
4,979
error 100: function prototypes do not match
ты всё сообщение цитируй: там должно быть написано как минимум на какую строку ругается
Сообщения автоматически склеены:

@Palonez, в 19 строке Handle:event должно быть:
тип хэндла Event только в новом синтаксе есть.
 

Yurka_Bear

Участник
Сообщения
61
Реакции
4
исправил то, проверь



Да я на старом никогда не писал, путаю что где
Все работает!
Сообщения автоматически склеены:

@Kotya, @Grey83, Ребятушки, спасибо вам большое за помощь, терпение и отзывчивость. Все работает. Вы умницы. Счастья вам, здоровья и любви.
@Palonez,
 

alexey_gamov

Участник
Сообщения
22
Реакции
6
Каким образом можно разрешить закупку после окончания mp_buytime определенному игроку?
 

samec051

Участник
Сообщения
26
Реакции
3
Добрый день.
Использую этот плагин: Модуль плагина - [Shop] Weapon Giver
Но возникла проблема при выдаче через него ножей, не могу подобрать правильные 'clip' и 'ammo', проблема в этом?
Или через этот плагин вообще нельзя ножи выдавать?
 

alexey_gamov

Участник
Сообщения
22
Реакции
6
Добрый день.
Использую этот плагин: Модуль плагина - [Shop] Weapon Giver
Но возникла проблема при выдаче через него ножей, не могу подобрать правильные 'clip' и 'ammo', проблема в этом?
Или через этот плагин вообще нельзя ножи выдавать?
clip - количество патрон в текущей обойме.
ammo - количество патрон в резерве.

У ножей естественно этих параметров нет, надо добавлять условие.
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Всем привет, может кто-то сделать чтобы при выборе скина в начале следующего раунда показывало модель от 3 лица?
Сообщения автоматически склеены:

Всем привет, может кто-то сделать чтобы при выборе скина в начале следующего раунда показывало модель от 3 лица?
Не очень удобно выходит, что можно просмотреть модель которую выбрал только тогда, когда тебя убили
 

Вложения

  • Agents.sp
    38.5 КБ · Просмотры: 4
Последнее редактирование:
Сверху Снизу