...
CreateTimer(5.0, Countdown, _, TIMER_REPEAT);
...
public Action Countdown(Handle timer)
{
if(!bTrue) return Plugin_Stop;
ShowCountdown(%SomeStringValue%);
return Plugin_Continue;
}
void ShowCountdown(char[] text)
{
KeyValues kv = new KeyValues("Stuff", "title", text); // текст
kv.SetColor("color", 255, 127, 0, 255); // цвет текста
kv.SetNum("level", 1);
kv.SetNum("time", 10); // время отображения
for (int i = 1; i <= MaxClients; i++)
{
if (!IsClientInGame(i) || IsFakeClient(i)) continue;
CreateDialog(i, kv, DialogType_Msg);
}
delete kv;
}
Можно скрин? просто я не понял что за шняга!как-то такPHP:... CreateTimer(5.0, Countdown, _, TIMER_REPEAT); ... public Action Countdown(Handle timer) { if(!bTrue) return Plugin_Stop; ShowCountdown(%SomeStringValue%); return Plugin_Continue; } void ShowCountdown(char[] text) { KeyValues kv = new KeyValues("Stuff", "title", text); // текст kv.SetColor("color", 255, 127, 0, 255); // цвет текста kv.SetNum("level", 1); kv.SetNum("time", 10); // время отображения for (int i = 1; i <= MaxClients; i++) { if (!IsClientInGame(i) || IsFakeClient(i)) continue; CreateDialog(i, kv, DialogType_Msg); } delete kv; }
#pragma semicolon 1
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_death", Event_PlayerDeath);
}
public void Event_PlayerDeath(Handle event, const char[] name, bool dontBroadcast)
{
CreateTimer(5.0, Countdown, _, TIMER_REPEAT);
}
public Action Countdown(Handle timer)
{
ShowCountdown("some_text"); // передача текстового параметра
return Plugin_Continue; // эта музыка будет вечной, если я сменю батарейки
}
void ShowCountdown(char[] text)
{
KeyValues kv = new KeyValues("Stuff", "title", text); // текст
kv.SetColor("color", 255, 127, 0, 255); // цвет текста
kv.SetNum("level", 1);
kv.SetNum("time", 10); // время отображения
for (int i = 1; i <= MaxClients; i++) // показ текста всем игрокам на сервере
{
if (!IsClientInGame(i) || IsFakeClient(i)) continue;
CreateDialog(i, kv, DialogType_Msg);
}
delete kv;
}
Покажи как сделать без таймера , показ только убитым игрокам .@msl1, а не надо мешать синтаксисы для начала
Плюс ты не указал параметр для функции ShowCountdown
И какой текст и кому ты хочешь показывать?
Ещё у тебя твой плагин после нескольких смертей засрёт нагрузкой проц сервера потому что отключение повторяющегося таймера тобой не предусмотрено (м/б тебе нужен был однократный таймер или вообще нужно было сделать без него).
С небольшими исправлениями будет компилитьсяНо юзать скомпиленое не советую по указанной выше причинеPHP:#pragma semicolon 1 #pragma newdecls required public void OnPluginStart() { HookEvent("player_death", Event_PlayerDeath); } public void Event_PlayerDeath(Handle event, const char[] name, bool dontBroadcast) { CreateTimer(5.0, Countdown, _, TIMER_REPEAT); } public Action Countdown(Handle timer) { ShowCountdown("some_text"); // передача текстового параметра return Plugin_Continue; // эта музыка будет вечной, если я сменю батарейки } void ShowCountdown(char[] text) { KeyValues kv = new KeyValues("Stuff", "title", text); // текст kv.SetColor("color", 255, 127, 0, 255); // цвет текста kv.SetNum("level", 1); kv.SetNum("time", 10); // время отображения for (int i = 1; i <= MaxClients; i++) // показ текста всем игрокам на сервере { if (!IsClientInGame(i) || IsFakeClient(i)) continue; CreateDialog(i, kv, DialogType_Msg); } delete kv; }
#pragma semicolon 1
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_death", Event_PlayerDeath);
}
public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
// если текст должен создаваться каждый раз другой:
char some_text[24]; // создаём текстовую переменную
Format(some_text, sizeof(some_text), "AttackerID: %i", event.GetInt("attacker")); // формируем текст
ShowCountdown(some_text, event.GetInt("userid")); // передача текстового параметра функции вывода
// если текст должен создаваться каждый раз один и тот же:
ShowCountdown("some_text", event.GetInt("userid")); // передача текстового параметра функции вывода
}
void ShowCountdown(const char[] text, const int userID)
{
int client = GetClientOfUserId(userID);
if(!client || IsFakeClient(client)) return;
KeyValues kv = new KeyValues("Stuff", "title", text); // текст
kv.SetColor("color", 0, 127, 255, 255); // цвет текста
kv.SetNum("level", 1);
kv.SetNum("time", 10); // время отображения
CreateDialog(client, kv, DialogType_Msg);
delete kv;
}
Спасибо .@msl1, примерно так:PHP:#pragma semicolon 1 #pragma newdecls required public void OnPluginStart() { HookEvent("player_death", Event_PlayerDeath); } public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) { // если текст должен создаваться каждый раз другой: char some_text[24]; // создаём текстовую переменную Format(some_text, sizeof(some_text), "AttackerID: %i", event.GetInt("attacker")); // формируем текст ShowCountdown(some_text, event.GetInt("userid")); // передача текстового параметра функции вывода // если текст должен создаваться каждый раз один и тот же: ShowCountdown("some_text", event.GetInt("userid")); // передача текстового параметра функции вывода } void ShowCountdown(const char[] text, const int userID) { int client = GetClientOfUserId(userID); if(!client || IsFakeClient(client)) return; KeyValues kv = new KeyValues("Stuff", "title", text); // текст kv.SetColor("color", 0, 127, 255, 255); // цвет текста kv.SetNum("level", 1); kv.SetNum("time", 10); // время отображения CreateDialog(client, kv, DialogType_Msg); delete kv; }