Иконка ресурса

Panorama TimeLeft 1.1.1

Нет прав для скачивания

wayLANder

Где AlmazON?
Сообщения
1,689
Реакции
531
поменяй координаты проблема?
SetHudTextParams(-1.0, 0.99,
Видимо, ты не понял главную суть вопроса. У кого-то эта панель сверху с игроками, у кого-то - снизу.
Тоесть 100% у кого-то будет таймер накладываться на панель
 
Сообщения
437
Реакции
65
Видимо, ты не понял главную суть вопроса. У кого-то эта панель сверху с игроками, у кого-то - снизу.
Тоесть 100% у кого-то будет таймер накладываться на панель
Я понял суть вопрос. Пусть сделает ее сбоку просто, я не зря выделил координаты.
 
Сообщения
437
Реакции
65
Еще один вариант кода.

Код:
public void OnPluginStart()
{
    CreateTimer(1.0, Timeleft, _, TIMER_REPEAT);
}

public Action Timeleft(Handle timer)
{
    char time[60];
    int iTimeleft;

    GetMapTimeLeft(iTimeleft);
    FormatTime(time, sizeof(time), "%M:%S", iTimeleft);

    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i) && !IsFakeClient(i))
        {
            char message[60];
            Format(message, sizeof(message), "Timeleft: %s", time);
            SetHudTextParams(-1.0, 1.00, 1.0, 4, 180, 255, 255, 0, 0.00, 0.00, 0.00);
            ShowHudText(i, -1, message);
        }
    }
    return Plugin_Continue;
}
 

igroman1266

Бух
Сообщения
142
Реакции
73
Еще один вариант кода.

Код:
public void OnPluginStart()
{
    CreateTimer(1.0, Timeleft, _, TIMER_REPEAT);
}

public Action Timeleft(Handle timer)
{
    char time[60];
    int iTimeleft;

    GetMapTimeLeft(iTimeleft);
    FormatTime(time, sizeof(time), "%M:%S", iTimeleft);

    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i) && !IsFakeClient(i))
        {
            char message[60];
            Format(message, sizeof(message), "Timeleft: %s", time);
            SetHudTextParams(-1.0, 1.00, 1.0, 4, 180, 255, 255, 0, 0.00, 0.00, 0.00);
            ShowHudText(i, -1, message);
        }
    }
    return Plugin_Continue;
}
Ты если берешь код с alliedmods, то хотя бы автора указывай
 
Сообщения
57
Реакции
8
дайте smx , а то чет у меня не компилит, руки не и с того места наверное у меня(
 
Сообщения
631
Реакции
538
Всем привет. Можно сделать так чтобы время до конца карты было видно когда только нажимаешь TAB и кол-во наблюдателей заодно? Спасибо.

 
Последнее редактирование:
Сообщения
909
Реакции
383
@Yura7181,
PHP:
public Plugin myinfo =
{
    name = "Panorama timeLeft",
    description = "Отображение времени до конца карты",
    author = "Phoenix (˙·٠●Феникс●٠·˙)",
    version = "1.0.0",
    url = "zizt.ru hlmod.ru"
};

bool g_bPanorama[MAXPLAYERS + 1];


public void ClientConVar(QueryCookie hCookie, int iClient, ConVarQueryResult hResult, const char[] sCvarName, const char[] sCvarValue)
{
   if(hResult == ConVarQuery_Okay) g_bPanorama[iClient] = true; // Использует
}

public void OnClientDisconnect(int iClient)
{
    g_bPanorama[iClient] = false;
}

public void OnClientPutInServer(int iClient)
{
   QueryClientConVar(iClient, "@panorama_debug_overlay_opacity", ClientConVar);
}

public void OnMapStart()
{
    CreateTimer(1.0, Timer_UPDATE, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_UPDATE(Handle timer)
{
    int timeleft;
    char sBuf[255];
    GetMapTimeLeft(timeleft);
    if(timeleft > 0) FormatEx(sBuf, sizeof sBuf, "До конца карты - %d:%02d", timeleft / 60, timeleft % 60);
    else sBuf = "Последний раунд";

    SetHudTextParams(-1.0, 0.99, 1.5, 0, 255, 255, 0);
    for(int iClient = 1; iClient <= MaxClients; iClient++)
    {
        if(g_bPanorama[iClient] && ( GetClientButtons(iClient) & IN_SCORE) )
        {           
            Format(sBuf,sizeof sBuf, "%s\n%d Spectators",sBuf,SpecTimer(iClient));
            ShowHudText(iClient, 4, sBuf);
        }
    }
    return Plugin_Continue;
}
stock int SpecTimer(int client)
{
    int target = 0;

    if ( !IsPlayerAlive( client ) )
    {
        int newtarget = GetClientObserverTarget( client );
        
        if ( 0 < newtarget && newtarget <= MaxClients
        &&    IsClientInGame( newtarget )
        &&  IsPlayerAlive( newtarget )
        &&  GetClientObserverMode( client ) != 6)
        {
            target = newtarget;
        }
    }
    else
    {
        target = client;
    }


    if ( !target ) return 0;

    int num;

    for ( int i = 1; i <= MaxClients; i++ )
    {
        if ( i == target ) continue;
        
        if ( !IsClientInGame( i ) ) continue;
        
        if ( IsFakeClient( i ) ) continue;
        
        if ( IsPlayerAlive( i ) ) continue;
        
        
        if ( GetClientObserverTarget( i ) == target && GetClientObserverMode( client ) != 6 )
            ++num;
    }
    return num;
}
stock int GetClientObserverMode( int client )
{
    return GetEntProp( client, Prop_Send, "m_iObserverMode" );
}

stock int GetClientObserverTarget( int client )
{
    return GetEntPropEnt( client, Prop_Send, "m_hObserverTarget" );
}
 
Сообщения
631
Реакции
538
@Yura7181,
PHP:
public Plugin myinfo =
{
    name = "Panorama timeLeft",
    description = "Отображение времени до конца карты",
    author = "Phoenix (˙·٠●Феникс●٠·˙)",
    version = "1.0.0",
    url = "zizt.ru hlmod.ru"
};

bool g_bPanorama[MAXPLAYERS + 1];


public void ClientConVar(QueryCookie hCookie, int iClient, ConVarQueryResult hResult, const char[] sCvarName, const char[] sCvarValue)
{
   if(hResult == ConVarQuery_Okay) g_bPanorama[iClient] = true; // Использует
}

public void OnClientDisconnect(int iClient)
{
    g_bPanorama[iClient] = false;
}

public void OnClientPutInServer(int iClient)
{
   QueryClientConVar(iClient, "@panorama_debug_overlay_opacity", ClientConVar);
}

public void OnMapStart()
{
    CreateTimer(1.0, Timer_UPDATE, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

public Action Timer_UPDATE(Handle timer)
{
    int timeleft;
    char sBuf[255];
    GetMapTimeLeft(timeleft);
    if(timeleft > 0) FormatEx(sBuf, sizeof sBuf, "До конца карты - %d:%02d", timeleft / 60, timeleft % 60);
    else sBuf = "Последний раунд";

    SetHudTextParams(-1.0, 0.99, 1.5, 0, 255, 255, 0);
    for(int iClient = 1; iClient <= MaxClients; iClient++)
    {
        if(g_bPanorama[iClient] && ( GetClientButtons(iClient) & IN_SCORE) )
        {          
            Format(sBuf,sizeof sBuf, "%s\n%d Spectators",sBuf,SpecTimer(iClient));
            ShowHudText(iClient, 4, sBuf);
        }
    }
    return Plugin_Continue;
}
stock int SpecTimer(int client)
{
    int target = 0;

    if ( !IsPlayerAlive( client ) )
    {
        int newtarget = GetClientObserverTarget( client );
       
        if ( 0 < newtarget && newtarget <= MaxClients
        &&    IsClientInGame( newtarget )
        &&  IsPlayerAlive( newtarget )
        &&  GetClientObserverMode( client ) != 6)
        {
            target = newtarget;
        }
    }
    else
    {
        target = client;
    }


    if ( !target ) return 0;

    int num;

    for ( int i = 1; i <= MaxClients; i++ )
    {
        if ( i == target ) continue;
       
        if ( !IsClientInGame( i ) ) continue;
       
        if ( IsFakeClient( i ) ) continue;
       
        if ( IsPlayerAlive( i ) ) continue;
       
       
        if ( GetClientObserverTarget( i ) == target && GetClientObserverMode( client ) != 6 )
            ++num;
    }
    return num;
}
stock int GetClientObserverMode( int client )
{
    return GetEntProp( client, Prop_Send, "m_iObserverMode" );
}

stock int GetClientObserverTarget( int client )
{
    return GetEntPropEnt( client, Prop_Send, "m_hObserverTarget" );
}
Спасибо. У меня одного не работает?
 
Сообщения
268
Реакции
11
Сообщения
631
Реакции
538
залей .smx вместе с .sp
.smx выше в обсуждениях
--- Добавлено позже ---

либо скомпилль
@Yura7181, Не знаю как у вас, у меня прекрасно работает.
Проверил. На тестовом и основном сервере. не работает. Я не говорю о оригинальном плагине в шапке темы. В любом случае спасибо за ответ.
--- Добавлено позже ---
Может он просто хотел получить сколько наблюдателей на сервере, а не кол-во тех кто следит за игроком...
Да как на скриншоте выше.
--- Добавлено позже ---
Может он просто хотел получить сколько наблюдателей на сервере, а не кол-во тех кто следит за игроком...
Проверил. На тестовом и основном сервере. не работает. Я не говорю о оригинальном плагине в шапке темы. В любом случае спасибо за ответ.
--- Добавлено позже ---

Да как на скриншоте выше.
Перекомпилировал на др. версии соурсмода и заработало. Спасибо.
 
Последнее редактирование:
Сообщения
108
Реакции
4
Из-за недавних обновлений панорамы появились ошибки в логах.

L 09/02/2018 - 10:15:03: [SM] Call stack trace:
L 09/02/2018 - 10:15:03: [SM] [0] ShowHudText
L 09/02/2018 - 10:15:03: [SM] [1] Line 45, C:\Users\user\Desktop\\addons\sourcemod\scripting\timeleft_panorama.sp::Timer_UPDATE
L 09/02/2018 - 10:15:04: [SM] Exception reported: Client 5 is not in-game
L 09/02/2018 - 10:15:04: [SM] Blaming: timeleft_panorama.smx
 
Сообщения
77
Реакции
3
Показывает последний раунд, хотя у меня стоит в насройказ
mp_maxround 999
а время карты через !timelift 30 минут (через другой плагин настроено)
 
Сверху