Русское сообщество по скриптингу

Spectlist / если за мной наблюдают  [Решено]

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Spectlist / если за мной наблюдают  [Решено]

Сообщение DeIIyTaT » 18 апр 2019, 01:07

Как сделать так чтобы когда Я был живой и за мной наблюдают что бы у меня показывалось только кто за мной наблюдает а не вся инфа ?
Сейчас мне выводит это :
Код: Выделить всё

format
(szHud, 245, "Игрок: %s^nДеньги: $%d | Жизни: %d^nПинг: %i | FPS: %i | Броня: %d^nУровень: %d | Кредиты: %d^n^nНаблюдают:^n", szName, cs_get_user_money(alive), get_user_health(alive), ping, get_user_fps(alive), get_user_armor(alive),rpg_get_lvl(alive), rpg_get_credits(alive));

А нужно если за мной наблюдают мне показывалось только кто наблюдает без инфы, а наблюдателям показывалась полностью инфа и кто еще наблюдает тоесть что написано выше
Код: Выделить всё

format
(szHud, 245, "Наблюдают:^n");


Исходник
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <rpgmod>
#include <engine>

#pragma semicolon 1

#define RED 64
#define GREEN 64
#define BLUE 64
#define UPDATEINTERVAL 0.1

// Comment below if you do not want /speclist showing up on chat
#define ECHOCMD

// Admin flag used for immunity
#define FLAG ADMIN_CFG 

new const PLUGIN[] = "SpecList";
new const VERSION[] = "1.6";
new const AUTHOR[] = "DeIIyTaT";

new gMaxPlayers;
new gCvarOn;
new bool:gOnOff[33] = { true, ... };
new g_fps[33][11]; 
new g_i
[33]; 

public plugin_init
()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    register_cvar
(PLUGIN, VERSION, FCVAR_SERVER, 0.0);
    gCvarOn = register_cvar("amx_speclist", "1", 0, 0.0);
    
    register_clcmd
("speclist", "cmdSpecList", -1, "");
    
    gMaxPlayers 
= get_maxplayers();
    
    set_task
(UPDATEINTERVAL, "tskShowSpec", 123094, "", 0, "b", 0);
}

public cmdSpecList(id)
{
    if( gOnOff[id] )
    {
        Color_Print(id, "!y[!gНаблюдатели!y] !yСписок наблюдателей !tВыключен");
        gOnOff[id] = false;
    }
    else
    
{
        Color_Print(id, "!y[!gНаблюдатели!y] !yСписок наблюдателей !tВключен");
        gOnOff[id] = true;
    }
    
    
#if defined ECHOCMD
    return PLUGIN_CONTINUE;
    #else
    return PLUGIN_HANDLED;
    #endif
}

public tskShowSpec(id)
{
    if( !get_pcvar_num(gCvarOn) )
    {
        return PLUGIN_CONTINUE;
    }
    
    static szHud
[1102];//32*33+45
    static szName[34];
    static bool:send;
    
    
// FRUITLOOOOOOOOOOOOPS!
    for( new alive = 1; alive <= gMaxPlayers; alive++ )
    {
        new bool:sendTo[33];
        send = false;
        
        if
( !is_user_alive(alive) )
        {
            continue;
        }
        new ping,loss;
        sendTo[alive] = true;
        get_user_ping(alive, ping, loss); 
        get_user_name
(alive, szName, 32);
        format(szHud, 245, "Игрок: %s^nДеньги: $%d | Жизни: %d^nПинг: %i | FPS: %i | Броня: %d^nУровень: %d | Кредиты: %d^n^nНаблюдают:^n", szName, cs_get_user_money(alive), get_user_health(alive), ping, get_user_fps(alive), get_user_armor(alive),rpg_get_lvl(alive), rpg_get_credits(alive));
        
        for
( new dead = 1; dead <= gMaxPlayers; dead++ )
        {
            if( is_user_connected(dead) )
            {
                if( is_user_alive(dead) || is_user_bot(dead) )
                {
                    continue;
                }
                
                if
( pev(dead, pev_iuser2) == alive )
                {
                    if(get_user_flags(id) & ADMIN_CFG)
                    {
                        get_user_name(dead, szName, 32);
                        add(szName, 33, "^n", 0);
                        add(szHud, 1101, szName, 0);
                        send = true;
                    }

                    sendTo[dead] = true;
                    
                
}
            }
        }
        
        if
( send == true )
        {
            for( new i = 1; i <= gMaxPlayers; i++ )
            {
                if( sendTo[i] == true
                        
&& gOnOff[i] == true )
                {
                    set_hudmessage(0, 255, 0, 0.75, 0.15, 0, 0.0, 1.0, 0.0, 0.0, -1);
                
                    show_hudmessage
(i, szHud);
                }
            }
        }
    }
    
    return PLUGIN_CONTINUE
;
}

public client_PreThink(id)
g_fps[id][10]++; 

public client_putinserver
(id) 
set_task
(0.1, "count", id, "", 0, "b"); 

public count
(id) { 

    if 
( g_i[id] < 9 )
    g_i[id]++; 
    else
    g_i
[id] = 0; 
    
    g_fps
[id][g_i[id]] = g_fps[id][10]; 
    g_fps
[id][10] = 0; 
} 

get_user_fps
(id)  
{ 
    new i
; 
    new j 
= 0; 
    
    for 
( i = 0; i < 9; i++ ) 
    j 
+= g_fps[id][i]; 
    
    return j 
- 5; 
}

public client_connect(id)
{
    gOnOff[id] = true;
}

public client_disconnect(id)
{
    gOnOff[id] = true;
}

stock Color_Print(const id, const input[], any:...)
{
    new iCount = 1, iPlayers[32];

    static szMsg[191];
    vformat(szMsg, charsmax(szMsg), input, 3);

    replace_all(szMsg, 190, "!g", "^4");
    replace_all(szMsg, 190, "!y", "^1");
    replace_all(szMsg, 190, "!t", "^3");
    replace_all(szMsg, 190, "/w", "^0");

    if(id) iPlayers[0] = id;
    else get_players(iPlayers, iCount, "ch");

    for (new i = 0; i < iCount; i++)
    {
        if (is_user_connected(iPlayers[i]))
        {
            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers[i]);
            write_byte(iPlayers[i]);
            write_string(szMsg);
            message_end();
        }
    }
}


Добавлено спустя 1 час 50 минут 31 секунду:
Вот у самого получилось сделать
исправил только тут
Код: Выделить всё
public tskShowSpec(id)
{
    if( !
get_pcvar_num(gCvarOn) )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    static 
szHud[1102];//32*33+45
    
static szHudTo[1102];
    static 
szName[34];
    static 
bool:send;
    
    
// FRUITLOOOOOOOOOOOOPS!
    
for( new alive 1alive <= gMaxPlayersalive++ )
    {
        new 
bool:sendTo[33];
        
send false;
        
        if( !
is_user_alive(alive) )
        {
            continue;
        }
        new 
ping,loss;
        
sendTo[alive] = false;
        
get_user_ping(alivepingloss); 
        
get_user_name(aliveszName32);
        
format(szHud245"Игрок: %s^nДеньги: $%d | Жизни: %d^nПинг: %i | FPS: %i | Броня: %d^nУровень: %d | Кредиты: %d^n^nНаблюдают:^n"szNamecs_get_user_money(alive), get_user_health(alive), pingget_user_fps(alive), get_user_armor(alive),rpg_get_lvl(alive), rpg_get_credits(alive));
        
format(szHudTo245"Наблюдают:^n");
        for( new 
dead 1dead <= gMaxPlayersdead++ )
        {
            if( 
is_user_connected(dead) )
            {
                if(
is_user_alive(dead) || is_user_bot(dead) )
                {
                    continue;
                }
                
                if( 
pev(deadpev_iuser2) == alive )
                {
                    if( !(
get_pcvar_num(gCvarImmunity)&&get_user_flags(dead0) & FLAG) )
                    {
                        
get_user_name(deadszName32);
                        
add(szName33"^n"0);
                        
add(szHud1101szName0);
                        
send true;
                    }
                    if( !(
get_pcvar_num(gCvarImmunity)&&get_user_flags(dead0) & FLAG) )
                    {
                        
get_user_name(deadszName32);
                        
add(szName33"^n"0);
                        
add(szHudTo1101szName0);
                        
send true;
                    }
                    

                    
sendTo[dead] = true;
                    
                }
            }
        }
        
        if(
send == true )
        {
            for( new 
1<= gMaxPlayersi++ )
            {
                if(
sendTo[i] == true && gOnOff[i] == true )
                {
                    
set_hudmessage(025500.750.1500.0UPDATEINTERVAL 1.00.00.0, -1);
                    
show_hudmessage(iszHud);
                }
                else if(
gOnOff[i] == true)
                {
                    
set_hudmessage(REDGREENBLUE0.750.1500.0UPDATEINTERVAL 3.00.00.0, -1);
                    
show_hudmessage(iszHudTo);
                }
            }
        }
    }
    
    return 
PLUGIN_CONTINUE;
}
 
Мой проект CSSURF.RU | SURF Сервера с RPG
amx-x.ru - Вы красавчики спасибо что вы есть ! :thumbs_up
Аватара пользователя
DeIIyTaT
 
Сообщения: 66
Зарегистрирован: 29 авг 2014, 13:53
Благодарил (а): 13 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6
html,php

Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2