Нужен плагин, который показывает ник игрока при наводки на него.

Someone

Участник
Сообщения
1,933
Реакции
1,653
на алерсе нашёл темку про это help for use getclientaimtarget - AlliedModders
и раеко предложил вот этот способ ещё
PHP:
new client = GetEntPropEnt(spectator, Prop_Send, "m_hObserverTarget");
и как он работает я не знаю.

Я тоже видел, но это другое.

Там человек хотел, чтобы писался ник и steamid игрока за которым наблюдаешь из спектров.

Работает он судя по всему так же.
--- Добавлено позже ---
Ща испробую!
--- Добавлено позже ---

Все очень хорошо работает! Только можешь доделать чтобы писало все красным или синим цветом и чтобы показала противник или союзник?

Во, приделал:

yEfquDiLWX4.jpg
xJu9sRP_Rzg.jpg

PHP:
#pragma semicolon 1

#include <sdktools>
#include <csgo_colors>

new Float:g_fUpdateTime;

public OnPluginStart()
{
    decl Handle:hCvar;
 
    hCvar = CreateConVar("sm_aimname_update_time", "1.0", "Время обновления Hint'a", 0, true, 0.0, true, 1.0);
    HookConVarChange(hCvar, OnUpdateTimeChange);
    g_fUpdateTime = GetConVarFloat(hCvar);
 
    CloseHandle(hCvar);
 
    CreateTimer(g_fUpdateTime, Nick_Timer, _, TIMER_REPEAT);
}

public OnUpdateTimeChange(Handle:hCvar, const String:oldValue[], const String:newValue[])        g_fUpdateTime = GetConVarFloat(hCvar);

public Action Nick_Timer(Handle timer)
{
    for(new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            new target = TraceClientViewEntity(i);
            if (target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
            {
                new targetteam = GetClientTeam(target);
                new iteam = GetClientTeam(i);
                if(iteam != targetteam)
                {
                    CGOPrintHintText(i, "{{#FF0000==Вы смотрите на противника}}.\n     {{#FF0000==Это}} {{#F7FF00==%N}}.", target);
                }
                else if (iteam == targetteam)
                {
                    CGOPrintHintText(i, "{{#00FF04==Вы смотрите на союзника}}.\n     {{#00FF04==Это}} {{#00D5FF==%N}}.", target);
                }
            }
        }
    }
    return Plugin_Continue;
}

stock TraceClientViewEntity(client)
{
    new Float:m_vecOrigin[3];
    new Float:m_angRotation[3];

    GetClientEyePosition(client, m_vecOrigin);
    GetClientEyeAngles(client, m_angRotation);

    new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
    new pEntity = -1;

    if (TR_DidHit(tr))
    {
        pEntity = TR_GetEntityIndex(tr);
        CloseHandle(tr);
        return pEntity;
    }

    if(tr != INVALID_HANDLE)
    {
        CloseHandle(tr);
    }
 
    return -1;
}

public bool:TRDontHitSelf(entity, mask, any:data)
{
    return (1 <= entity <= MaxClients && entity != data);
}

Только не знаю, как себя поведет с очень длинным ником.
 
Последнее редактирование:

Karmushka

Karma
Сообщения
199
Реакции
30
Я тоже видел, но это другое.

Там человек хотел, чтобы писался ник и steamid игрока за которым наблюдаешь из спектров.

Работает он судя по всему так же.
--- Добавлено позже ---


Во, приделал:

yEfquDiLWX4.jpg
xJu9sRP_Rzg.jpg

PHP:
#pragma semicolon 1

#include <sdktools>
#include <csgo_colors>

new Float:g_fUpdateTime;

public OnPluginStart()
{
    decl Handle:hCvar;

    hCvar = CreateConVar("sm_aimname_update_time", "1.0", "Время обновления Hint'a", 0, true, 0.0, true, 1.0);
    HookConVarChange(hCvar, OnUpdateTimeChange);
    g_fUpdateTime = GetConVarFloat(hCvar);

    CloseHandle(hCvar);

    CreateTimer(g_fUpdateTime, Nick_Timer, _, TIMER_REPEAT);
}

public OnUpdateTimeChange(Handle:hCvar, const String:oldValue[], const String:newValue[])        g_fUpdateTime = GetConVarFloat(hCvar);

public Action Nick_Timer(Handle timer)
{
    for(new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            new target = TraceClientViewEntity(i);
            if (target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
            {
                new targetteam = GetClientTeam(target);
                new iteam = GetClientTeam(i);
                if(iteam != targetteam)
                {
                    CGOPrintHintText(i, "{{#FF0000==Вы смотрите на противника}}.\n     {{#FF0000==Это}} {{#F7FF00==%N}}.", target);
                }
                else if (iteam == targetteam)
                {
                    CGOPrintHintText(i, "{{#00FF04==Вы смотрите на союзника}}.\n     {{#00FF04==Это}} {{#00D5FF==%N}}.", target);
                }
            }
        }
    }
    return Plugin_Continue;
}

stock TraceClientViewEntity(client)
{
    new Float:m_vecOrigin[3];
    new Float:m_angRotation[3];

    GetClientEyePosition(client, m_vecOrigin);
    GetClientEyeAngles(client, m_angRotation);

    new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
    new pEntity = -1;

    if (TR_DidHit(tr))
    {
        pEntity = TR_GetEntityIndex(tr);
        CloseHandle(tr);
        return pEntity;
    }

    if(tr != INVALID_HANDLE)
    {
        CloseHandle(tr);
    }

    return -1;
}

public bool:TRDontHitSelf(entity, mask, any:data)
{
    return (1 <= entity <= MaxClients && entity != data);
}

Только не знаю, как себя поведет с очень длинным ником.
Ща испробую)
--- Добавлено позже ---
Все найс спасибо тебе большое круто все работает)
 
Последнее редактирование:

Drimer

Участник
Сообщения
203
Реакции
54
Я тоже видел, но это другое.

Там человек хотел, чтобы писался ник и steamid игрока за которым наблюдаешь из спектров.

Работает он судя по всему так же.
--- Добавлено позже ---


Во, приделал:

yEfquDiLWX4.jpg
xJu9sRP_Rzg.jpg

PHP:
#pragma semicolon 1

#include <sdktools>
#include <csgo_colors>

new Float:g_fUpdateTime;

public OnPluginStart()
{
    decl Handle:hCvar;

    hCvar = CreateConVar("sm_aimname_update_time", "1.0", "Время обновления Hint'a", 0, true, 0.0, true, 1.0);
    HookConVarChange(hCvar, OnUpdateTimeChange);
    g_fUpdateTime = GetConVarFloat(hCvar);

    CloseHandle(hCvar);

    CreateTimer(g_fUpdateTime, Nick_Timer, _, TIMER_REPEAT);
}

public OnUpdateTimeChange(Handle:hCvar, const String:oldValue[], const String:newValue[])        g_fUpdateTime = GetConVarFloat(hCvar);

public Action Nick_Timer(Handle timer)
{
    for(new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            new target = TraceClientViewEntity(i);
            if (target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
            {
                new targetteam = GetClientTeam(target);
                new iteam = GetClientTeam(i);
                if(iteam != targetteam)
                {
                    CGOPrintHintText(i, "{{#FF0000==Вы смотрите на противника}}.\n     {{#FF0000==Это}} {{#F7FF00==%N}}.", target);
                }
                else if (iteam == targetteam)
                {
                    CGOPrintHintText(i, "{{#00FF04==Вы смотрите на союзника}}.\n     {{#00FF04==Это}} {{#00D5FF==%N}}.", target);
                }
            }
        }
    }
    return Plugin_Continue;
}

stock TraceClientViewEntity(client)
{
    new Float:m_vecOrigin[3];
    new Float:m_angRotation[3];

    GetClientEyePosition(client, m_vecOrigin);
    GetClientEyeAngles(client, m_angRotation);

    new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
    new pEntity = -1;

    if (TR_DidHit(tr))
    {
        pEntity = TR_GetEntityIndex(tr);
        CloseHandle(tr);
        return pEntity;
    }

    if(tr != INVALID_HANDLE)
    {
        CloseHandle(tr);
    }

    return -1;
}

public bool:TRDontHitSelf(entity, mask, any:data)
{
    return (1 <= entity <= MaxClients && entity != data);
}

Только не знаю, как себя поведет с очень длинным ником.
Ошибка при компиляции
/home/groups/sourcemod/upload_tmp/phpKk5N4u.sp(4) : fatal error 182: cannot read from file: "csgo_colors"
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,606
Реакции
5,096
он откомпилил прекрасно.
Естественно, он мануалы читал.

Можешь вот это попробовать (обновил немного свой старый плагин, переписал под новый синтаксис).
Он ещё и ХП показывает (в зависимости от настроек может показывать всем или только союзникам).
КВары:
  • sm_hint_info_mode 0 - плагин отключён, 1 - ХП видят все, 2 - ХП видят только союзники
  • sm_hint_info_alive 0 - информацию видят только наблюдатели, 1 - информацию видят все
 

Вложения

  • csgo_player_hint_info.sp
    3.1 КБ · Просмотры: 104
  • csgo_player_hint_info.smx
    5.4 КБ · Просмотры: 55
Последнее редактирование:

Drimer

Участник
Сообщения
203
Реакции
54
Естественно, он мануалы читал.

Можешь вот это попробовать (обновил немного свой старый плагин, переписал под новый синтаксис).
Он ещё и ХП показывает (в зависимости от настроек может показывать всем или только союзникам).
Не в этот раз,интересует меня только показ ника врага.Т.к из-за скинов не понять свой или нет)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,606
Реакции
5,096
@Drimer, плагин показывает союзник или нет в прицеле, его ник и ХП
Скрин сделать не могу из-за отсутствия собственного сервака CSGO
--- Добавлено позже ---
Почему-то мне кажется, что это не баг, а фича
это просто true на false нужно было сменить
вот этот способ ещё
PHP:
new client = GetEntPropEnt(spectator, Prop_Send, "m_hObserverTarget");
и как он работает я не знаю.
Это только для спектаторов работает, емнип.
 
Последнее редактирование:

skywalker

Участник
Сообщения
1,153
Реакции
263
Естественно, он мануалы читал.

Можешь вот это попробовать (обновил немного свой старый плагин, переписал под новый синтаксис).
Он ещё и ХП показывает (в зависимости от настроек может показывать всем или только союзникам).
КВары:
  • sm_hint_info_mode 0 - плагин отключён, 1 - ХП видят все, 2 - ХП видят только союзники
    sm_hint_info_alive 0 - информацию видят только наблюдатели, 1 - информацию видят все
А можно сделать,чтоб показывало в худе цветным, настройкой html цветами?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,606
Реакции
5,096
@skolobes, инфа о том союзник или враг (для спектаторов - CT или T) пишет в цвете.
Инфу о нике и ХП - белым, чтобы было лучше видно.
Но можно и поизвращаться
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,927
  • Команда форума
  • #36
куда ты sdktools дел?! :blink:
Если я не ошибаюсь, то SDKTools и SDKHooks вырезан в SM 1.9
По крайней мере, у знакомых плагины, требующие их, не заводились с ошибкой, мол нет этих расширений.
 

Rilsan

Участник
Сообщения
180
Реакции
24
Естественно, он мануалы читал.

Можешь вот это попробовать (обновил немного свой старый плагин, переписал под новый синтаксис).
Он ещё и ХП показывает (в зависимости от настроек может показывать всем или только союзникам).
КВары:
  • sm_hint_info_mode 0 - плагин отключён, 1 - ХП видят все, 2 - ХП видят только союзники
    sm_hint_info_alive 0 - информацию видят только наблюдатели, 1 - информацию видят все
где там ник выводится? хочу добавить "Вы смотрите на"
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,606
Реакции
5,096
@Tony, вообще-то я как раз это специально убрал чтобы текст не резало (ограничение на количество символов никуда не делось, а кириллица занимает в 2 раза больше места)

PrintHintText(client, "*писать_здесь*%N
 

Overlord

Участник
Сообщения
537
Реакции
108
Я тоже видел, но это другое.

Там человек хотел, чтобы писался ник и steamid игрока за которым наблюдаешь из спектров.

Работает он судя по всему так же.
--- Добавлено позже ---


Во, приделал:

yEfquDiLWX4.jpg
xJu9sRP_Rzg.jpg

PHP:
#pragma semicolon 1

#include <sdktools>
#include <csgo_colors>

new Float:g_fUpdateTime;

public OnPluginStart()
{
    decl Handle:hCvar;

    hCvar = CreateConVar("sm_aimname_update_time", "1.0", "Время обновления Hint'a", 0, true, 0.0, true, 1.0);
    HookConVarChange(hCvar, OnUpdateTimeChange);
    g_fUpdateTime = GetConVarFloat(hCvar);

    CloseHandle(hCvar);

    CreateTimer(g_fUpdateTime, Nick_Timer, _, TIMER_REPEAT);
}

public OnUpdateTimeChange(Handle:hCvar, const String:oldValue[], const String:newValue[])        g_fUpdateTime = GetConVarFloat(hCvar);

public Action Nick_Timer(Handle timer)
{
    for(new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            new target = TraceClientViewEntity(i);
            if (target > 0 && target <= MaxClients && IsClientInGame(target) && IsPlayerAlive(target))
            {
                new targetteam = GetClientTeam(target);
                new iteam = GetClientTeam(i);
                if(iteam != targetteam)
                {
                    CGOPrintHintText(i, "{{#FF0000==Вы смотрите на противника}}.\n     {{#FF0000==Это}} {{#F7FF00==%N}}.", target);
                }
                else if (iteam == targetteam)
                {
                    CGOPrintHintText(i, "{{#00FF04==Вы смотрите на союзника}}.\n     {{#00FF04==Это}} {{#00D5FF==%N}}.", target);
                }
            }
        }
    }
    return Plugin_Continue;
}

stock TraceClientViewEntity(client)
{
    new Float:m_vecOrigin[3];
    new Float:m_angRotation[3];

    GetClientEyePosition(client, m_vecOrigin);
    GetClientEyeAngles(client, m_angRotation);

    new Handle:tr = TR_TraceRayFilterEx(m_vecOrigin, m_angRotation, MASK_VISIBLE, RayType_Infinite, TRDontHitSelf, client);
    new pEntity = -1;

    if (TR_DidHit(tr))
    {
        pEntity = TR_GetEntityIndex(tr);
        CloseHandle(tr);
        return pEntity;
    }

    if(tr != INVALID_HANDLE)
    {
        CloseHandle(tr);
    }

    return -1;
}

public bool:TRDontHitSelf(entity, mask, any:data)
{
    return (1 <= entity <= MaxClients && entity != data);
}

Только не знаю, как себя поведет с очень длинным ником.
Можно ли как то сделать, чтобы плагин показывался поверх других? (shavit hud не дает показаться этому плагину)
 
Сверху Снизу