Кол-во видимых энтити от лица игрока?

Сообщения
14
Реакции
2
Помог
1 раз(а)
Добрый вечер,

Столкнулся с такой проблемкой, на определенных картах после добавления новогодних объектов украшения (плагином),
Стали пропадать некие объекты из виду игроков. Знаю что проблема заключается в кол-во видимых объектов от лица игрока и если привышен лимит 255, то остальные объекты становятся невидимыми.

Так как проблема кроется в определеннах картах, возник вопрос, возможно ли как-то заполучить кол-во объектов которые игрок видит в моменте?
Знаю о сущестовании engfunc(EngFunc_NumberOfEntities), но оно возвращает кол-во объектов на карте всеобще, что не совсем подойдёт под то что мне нужно.

Знаю что можно просто методом тыка, проверять где проблема начнется там и удалить, но стало интересно может есть способ получить цифру кодом так.
 
Сообщения
21
Реакции
10
Помог
1 раз(а)
xpombi4, Что бы включить: ents в консоль или /ents в чат
Код:
#pragma semicolon 1

#include <amxmodx>

#define PLUGIN    "Ents count HUD"
#define VERSION    "1.0"
#define AUTHOR    "Admrfsh"

#include <engine>
#include <fakemeta>

enum _:EPlayer
{
    iCurFrameEnts,
    iLastFrameEnts,
    bool:bHUDEnabled,
}

new g_ePlayerInfo[33][EPlayer];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);

    register_forward(FM_AddToFullPack, "OnEvent_AddToFullPack_Post", true);
    set_task(0.1, "OnEvent_Task_HUDUpdate", .flags = "b");

    register_clcmd("ents", "OnEvent_ClientCMD_HUDToggle");
    register_clcmd("say /ents", "OnEvent_ClientCMD_HUDToggle");
}

public client_putinserver(iPlayerId)
{
    g_ePlayerInfo[iPlayerId][bHUDEnabled] = false;
    g_ePlayerInfo[iPlayerId][iLastFrameEnts] = 0;
}

public OnEvent_ClientCMD_HUDToggle(const iPlayerId)
{
    g_ePlayerInfo[iPlayerId][bHUDEnabled] = !g_ePlayerInfo[iPlayerId][bHUDEnabled];
    return PLUGIN_HANDLED;
}

public server_frame()
{
    static i;

    for (i = 1; i <= 32; i++)
    {
        if (!g_ePlayerInfo[i][iCurFrameEnts])
        {
            continue;
        }

        g_ePlayerInfo[i][iLastFrameEnts] = g_ePlayerInfo[i][iCurFrameEnts];
        g_ePlayerInfo[i][iCurFrameEnts] = 0;
    }
}

public OnEvent_AddToFullPack_Post(const sState, const iE, const iEndId, const iHostId)
{
    g_ePlayerInfo[iHostId][iCurFrameEnts] += 1;
}

public OnEvent_Task_HUDUpdate()
{
    set_hudmessage(
        .red = 0,
        .green = 255,
        .blue = 0,
        .x = -1.0,
        .y = 0.55,
        .effects = 0,
        .fxtime = 0.0,
        .holdtime = 0.1,
        .fadeintime = 0.0,
        .fadeouttime = 0.1
    );

    static i;

    for (i = 1; i <= 32; i++)
    {
        if (!g_ePlayerInfo[i][bHUDEnabled] ||
            !is_user_connected(i) ||
            is_user_bot(i))
        {
            continue;
        }

        show_hudmessage(i, "ents: %i", g_ePlayerInfo[i][iLastFrameEnts]);
    }
}
 
Последнее редактирование:

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

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