Вопрос на счет промежутков количества реальных игроков

neon060794

Участник
Сообщения
12
Реакции
1
Подскажите, пожалуйста, будет ли учитываться два значения, т.е. промежутки в данном коде (выделено красным цветом)? И как сделать, если нет?
public OnClientConnected1(client)
{
if (!IsFakeClient(client) && GetRealClientCount(false) > 1 <= 2)
{
UnhookEvent("player_spawn", BotSpawn);
save_bot = GetConVarInt(bot_quota_1);
}
}

public OnClientConnected2(client)
{
if (!IsFakeClient(client) && GetRealClientCount(false) > 2 <= 5)
{
UnhookEvent("player_spawn", BotSpawn);
save_bot = GetConVarInt(bot_quota_2);
}
}

public OnClientConnected3(client)
{
if (!IsFakeClient(client) && GetRealClientCount(false) > 5 <= 10)
{
UnhookEvent("player_spawn", BotSpawn);
save_bot = GetConVarInt(bot_quota_3);
}
}

public OnClientConnected4(client)
{
if (!IsFakeClient(client) && GetRealClientCount(false) > 10)
{
UnhookEvent("player_spawn", BotSpawn);
save_bot = GetConVarInt(bot_quota_4);
}
}
--- Добавлено позже ---
плагин на добавления ботов при определенном количестве игроков, само количество в CVAR - bot_quota_1, bot_quota_2 и т.д.
 

Вложения

  • Bot.sp
    2.7 КБ · Просмотры: 5
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
будут конечно, вот только не так как ты надеешься чтобы они учитывались

вообще сравнение переменной с 2 числами нужно делать так: if(0 < x < 100500) или if(100500 > x > 0)
Т.е.
GetRealClientCount(false) > 1 <= 2 правильно будет писать как 1 < GetRealClientCount() <= 2
GetRealClientCount(false) > 2 <= 5
--> 2 < GetRealClientCount() <= 5
GetRealClientCount(false) > 5 <= 10
--> 5 < GetRealClientCount() <= 10
PHP:
    bot_quota_1 = FindConVar("bot_quota_1");
    bot_quota_2 = FindConVar("bot_quota_2");
    bot_quota_3 = FindConVar("bot_quota_3");
    bot_quota_4 = FindConVar("bot_quota_4");
И в какой же игре существует такие переменные? Я, например, о такой не знаю.
--- Добавлено позже ---
PHP:
    if (GetRealClientCount(false) == 0)
...
stock GetRealClientCount(bool:inGameOnly = false){}
Вообще-то, установка дефолтного значения параметра функции предназначен обычно, чтобы вызывать эту функцию, не прописывая параметр, если он должен совпадать с дефолтным:
PHP:
    if (GetRealClientCount() == 0)    // кстати можно написать ещё так: if (!GetRealClientCount())
...
stock GetRealClientCount(bool:inGameOnly = false){}
--- Добавлено позже ---
PHP:
BJAP0()
{
    SetConVarInt(bot_join_after_player, 0);
}

HEBS()
{
    HookEvent("player_spawn", BotSpawn);
}
Какой смысл делать функции, состоящие из одной строки (а ту в свою очередь из вызова 1 другой функции)? Ты этим совершенно ничего не экономишь (даже не факт, что получится уменьшить размер исходника).
--- Добавлено позже ---
PHP:
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if (IsFakeClient(client) && !b_join && GetRealClientCount(false) == 0)
        ChangeClientTeam(client, 0);
не мешало бы просто в начале функции проверить значение переменной b_join, а затем (если это значение соответствует необходимому) уже получать значения из события:
PHP:
    if(b_join) return;
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if (IsFakeClient(client) && !GetRealClientCount()) ChangeClientTeam(client, 0);
--- Добавлено позже ---
Сакральный смысл вот этого я не понял
PHP:
public OnPluginStart()
{
...
    HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);
...
}

public RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    UnhookEvent("round_start", RoundStart, EventHookMode_PostNoCopy); // О_о
...
}
Это для того, чтобы отловилось только одно единственное событие начала раунда после загрузки плагина? И больше нас это событие вообще больше никогда не будет интересовать до следующего запуска плагина?
--- Добавлено позже ---
new clients = 0; равнозначно записи new clients;
Т.к. при new без указания значения переменной автоматически при компиляции прописывается дефолтное значение, равное нулю (для булевой переменной 0 равен false)
 
Последнее редактирование:

neon060794

Участник
Сообщения
12
Реакции
1
да это я хотел плагин переделать, особо в него не вникал, "bot_quota_1" и тд - это уже моя выдумка, чтобы значения можно было в server.cfg прописать - это плагин на добавления ботов в спеках был
--- Добавлено позже ---
будут конечно, вот только не так как ты надеешься чтобы они учитывались

вообще сравнение переменной с 2 числами нужно делать так: if(0 < x < 100500) или if(100500 > x > 0)
Т.е.
GetRealClientCount(false) > 1 <= 2 правильно будет писать как 1 < GetRealClientCount() <= 2
GetRealClientCount(false) > 2 <= 5
--> 2 < GetRealClientCount() <= 5
GetRealClientCount(false) > 5 <= 10
--> 5 < GetRealClientCount() <= 10
PHP:
    bot_quota_1 = FindConVar("bot_quota_1");
    bot_quota_2 = FindConVar("bot_quota_2");
    bot_quota_3 = FindConVar("bot_quota_3");
    bot_quota_4 = FindConVar("bot_quota_4");
И в какой же игре существует такие переменные? Я, например, о такой не знаю.
--- Добавлено позже ---
PHP:
    if (GetRealClientCount(false) == 0)
...
stock GetRealClientCount(bool:inGameOnly = false){}
Вообще-то, установка дефолтного значения параметра функции предназначен обычно, чтобы вызывать эту функцию, не прописывая параметр, если он должен совпадать с дефолтным:
PHP:
    if (GetRealClientCount() == 0)    // кстати можно написать ещё так: if (!GetRealClientCount())
...
stock GetRealClientCount(bool:inGameOnly = false){}
--- Добавлено позже ---
PHP:
BJAP0()
{
    SetConVarInt(bot_join_after_player, 0);
}

HEBS()
{
    HookEvent("player_spawn", BotSpawn);
}
Какой смысл делать функции, состоящие из одной строки (а ту в свою очередь из вызова 1 другой функции)? Ты этим совершенно ничего не экономишь (даже не факт, что получится уменьшить размер исходника).
--- Добавлено позже ---
PHP:
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if (IsFakeClient(client) && !b_join && GetRealClientCount(false) == 0)
        ChangeClientTeam(client, 0);
не мешало бы просто в начале функции проверить значение переменной b_join, а затем (если это значение соответствует необходимому) уже получать значения из события:
PHP:
    if(b_join) return;
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if (IsFakeClient(client) && !GetRealClientCount()) ChangeClientTeam(client, 0);
--- Добавлено позже ---
Сакральный смысл вот этого я не понял
PHP:
public OnPluginStart()
{
...
    HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);
...
}

public RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    UnhookEvent("round_start", RoundStart, EventHookMode_PostNoCopy); // О_о
...
}
Это для того, чтобы отловилось только одно единственное событие начала раунда после загрузки плагина? И больше нас это событие вообще больше никогда не будет интересовать до следующего запуска плагина?
--- Добавлено позже ---
new clients = 0; равнозначно записи new clients;
Т.к. при new без указания значения переменной автоматически при компиляции прописывается дефолтное значение, равное нулю (для булевой переменной 0 равен false)

да это я хотел плагин переделать, особо в него не вникал, "bot_quota_1" и тд - это уже моя выдумка, чтобы значения можно было в server.cfg прописать - это плагин на добавления ботов в спеках был
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
"bot_quota_1" и тд - это уже моя выдумка, чтобы значения можно было в server.cfg прописать
От того, что ты добавишь строчку с несуществующим кваром, появятся только сообщения в консоли сервера о несуществующем кваре.
А отлавливаться они не станут, пока ты не создашь квар плагином.
 

neon060794

Участник
Сообщения
12
Реакции
1
От того, что ты добавишь строчку с несуществующим кваром, появятся только сообщения в консоли сервера о несуществующем кваре.
А отлавливаться они не станут, пока ты не создашь квар плагином.
да, я видел, спасибо за помошь.
 
Сверху Снизу