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

Panorama TimeLeft 1.1.1

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

komashchenko

Идиот
Сообщения
800
Реакции
1,536
Сообщения
379
Реакции
69
Годнота. В каком месте можно поменять номер канала вывода текста, чтобы избежать конфликта с другими плагинами, которые выводят инфу на экран?
 

BossKotoriiNeSmok

Голос из армии
Сообщения
511
Реакции
93
Идеально,спасибо))
--- Добавлено позже ---
Я так понял,что это время показывается только панорамщикам?:)
 
H

hirowatch

@komashchenko, а файл .sp затем что бы ко всем sm версиям подходило ? - ну в плане что бы ошибок не было
 

BossKotoriiNeSmok

Голос из армии
Сообщения
511
Реакции
93
Как убрать,что бы на разминке не работало?
--- Добавлено позже ---
И можно сделать,что бы показывало только когда мертв?
 

Rabb1t

Оратор
Ньюсмейкер
Сообщения
2,484
Реакции
890
И можно сделать,что бы показывало только когда мертв?
PHP:
if(!IsPlayerAlive(iClient){
//игрок мертв
}
Обычная проверка же.
Как убрать,что бы на разминке не работало?
Тебе надо ловить через
PHP:
m_bWarmupPeriod
 
Последнее редактирование:

Rabb1t

Оратор
Ньюсмейкер
Сообщения
2,484
Реакции
890
@BossKotoriiNeSmok, попробуй так.
PHP:
#include <sdktools_gamerules>

public Plugin myinfo =
{
   name = "Panorama timeLeft",
   description = "Отображение времени до конца карты",
   author = "Phoenix (˙·٠●Феникс●٠·˙)",
   version = "1.0.0",
   url = "zizt.ru hlmod.ru"
};

bool g_bPanorama[MAXPLAYERS + 1];
bool m_bWarmupPeriod;

public void OnPluginStart()
{
    //m_bWarmupPeriod = FindSendPropInfo("CCSGameRulesProxy", "m_bWarmupPeriod");
    CreateTimer(3.0, Timer_Handler, _, TIMER_REPEAT);
}

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] && m_bWarmupPeriod && !IsPlayerAlive(iClient))
       {      
           ShowHudText(iClient, 4, sBuf);
       }
   }
   return Plugin_Continue;
}

public Action Timer_Handler(Handle Timer)
{
    if(GameRules_GetProp("m_bWarmupPeriod") == 1)
        m_bWarmupPeriod = true;
    else
        m_bWarmupPeriod = false;
    return Plugin_Continue;
}
 

Вложения

Последнее редактирование:

Саша Шеин

Кому костылей?
Сообщения
1,572
Реакции
445
@Rabb1t, можешь объяснить, зачем отдельный таймер для m_bWarmupPeriod? И почему бы не сделать так?
PHP:
m_bWarmupPeriod = GameRules_GetProp("m_bWarmupPeriod") == 1;
@BossKotoriiNeSmok, попробуй так.
PHP:
#include <sdktools_gamerules>

public Plugin myinfo =
{
   name = "Panorama timeLeft",
   description = "Отображение времени до конца карты",
   author = "Phoenix (˙·٠●Феникс●٠·˙)",
   version = "1.0.0",
   url = "zizt.ru hlmod.ru"
};

bool g_bPanorama[MAXPLAYERS + 1];
bool m_bWarmupPeriod;

public void OnPluginStart()
{
    //m_bWarmupPeriod = FindSendPropInfo("CCSGameRulesProxy", "m_bWarmupPeriod");
    CreateTimer(3.0, Timer_Handler, _, TIMER_REPEAT);
}

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] && m_bWarmupPeriod && !IsPlayerAlive(iClient))
       {     
           ShowHudText(iClient, 4, sBuf);
       }
   }
   return Plugin_Continue;
}

public Action Timer_Handler(Handle Timer)
{
    if(GameRules_GetProp("m_bWarmupPeriod") == 1)
        m_bWarmupPeriod = true;
    else
        m_bWarmupPeriod = false;
    return Plugin_Continue;
}
 

Rabb1t

Оратор
Ньюсмейкер
Сообщения
2,484
Реакции
890
@Саша Шеин, насчет таймера ты совершенно прав, можно и в одном сделать. А вот насчет переменной, разве она тогда сама будет получать значение false, чтобы не отобраться в худе плагина?
 
Последнее редактирование:

komashchenko

Идиот
Сообщения
800
Реакции
1,536
@BossKotoriiNeSmok, от отображает только мертвым и не работает во время разминки
PHP:
#include <sdktools_gamerules>

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)
{
    if(GameRules_GetProp("m_bWarmupPeriod", 1)) return Plugin_Continue;
   
    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] && !IsPlayerAlive(iClient))
        {          
            ShowHudText(iClient, 4, sBuf);
        }
    }
    return Plugin_Continue;
}

Оффтоп
 

Rabb1t

Оратор
Ньюсмейкер
Сообщения
2,484
Реакции
890
@komashchenko, да я чет не подумал про это пока писал ночью. Можно было спокойно в этом же таймере.
 

BossKotoriiNeSmok

Голос из армии
Сообщения
511
Реакции
93
@BossKotoriiNeSmok, от отображает только мертвым и не работает во время разминки
PHP:
#include <sdktools_gamerules>

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)
{
    if(GameRules_GetProp("m_bWarmupPeriod", 1)) return Plugin_Continue;
  
    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] && !IsPlayerAlive(iClient))
        {         
            ShowHudText(iClient, 4, sBuf);
        }
    }
    return Plugin_Continue;
}

Оффтоп
Добавь уж в тему,кто хочет ,пусть будет))0
 

igroman1266

Бух
Сообщения
142
Реакции
73
Запустили карту второй раз и таймер завис. Просто пишет, что последний раунд.
 

wayLANder

Где AlmazON?
Сообщения
1,689
Реакции
531
Если у меня кол-во игроков итд внизу, то что делать?)
 

igroman1266

Бух
Сообщения
142
Реакции
73
Таймер не обновляется, если карта остаётся та же что и была
 
Сверху