panikajo
Участник
- Сообщения
- 866
- Реакции
- 231
поменяй координаты проблема?Если у меня кол-во игроков итд внизу, то что делать?)
SetHudTextParams(-1.0, 0.99,
поменяй координаты проблема?Если у меня кол-во игроков итд внизу, то что делать?)
Решил эту проблему путём включения mp_match_end_changelevelТаймер не обновляется, если карта остаётся та же что и была
Видимо, ты не понял главную суть вопроса. У кого-то эта панель сверху с игроками, у кого-то - снизу.поменяй координаты проблема?
SetHudTextParams(-1.0, 0.99,
Я понял суть вопрос. Пусть сделает ее сбоку просто, я не зря выделил координаты.Видимо, ты не понял главную суть вопроса. У кого-то эта панель сверху с игроками, у кого-то - снизу.
Тоесть 100% у кого-то будет таймер накладываться на панель
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, то хотя бы автора указывайЕще один вариант кода.
C-подобный: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; }
githubТы если берешь код с alliedmods, то хотя бы автора указывай
пробуйдайте smx , а то чет у меня не компилит, руки не и с того места наверное у меня(
спасибопробуй
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" );
}
Спасибо. У меня одного не работает?@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" ); }
залей .smx вместе с .spСпасибо. У меня одного не работает?
либо скомпилльСпасибо. У меня одного не работает?
залей .smx вместе с .sp
.smx выше в обсуждениях
--- Добавлено позже ---
либо скомпилль
Проверил. На тестовом и основном сервере. не работает. Я не говорю о оригинальном плагине в шапке темы. В любом случае спасибо за ответ.@Yura7181, Не знаю как у вас, у меня прекрасно работает.
Да как на скриншоте выше.Может он просто хотел получить сколько наблюдателей на сервере, а не кол-во тех кто следит за игроком...
Может он просто хотел получить сколько наблюдателей на сервере, а не кол-во тех кто следит за игроком...
Перекомпилировал на др. версии соурсмода и заработало. Спасибо.Проверил. На тестовом и основном сервере. не работает. Я не говорю о оригинальном плагине в шапке темы. В любом случае спасибо за ответ.
--- Добавлено позже ---
Да как на скриншоте выше.