Описание:
При заходе на сервер предлагается записывать демо от их лица.
Установка:
Скомпилировать при необходимости
Раскидать файлы плагина sourcemod по папкам
Исходный код
Код: Выбрать все
#pragma semicolon 1
#include <sourcemod>
new String:command_record[128];
public Plugin:myinfo =
{
name = "DemoRecord client",
author = "Mumuxtarka",
version = "1.0"
};
public OnPluginStart()
{
decl String:map[40],
String:time[20];
GetCurrentMap(map, 60);
FormatTime(time, 40, "%d-%m-%Y_%H-%M");
FormatEx(command_record, sizeof(command_record), "record SAVE/%s_%s", time, map);
}
public OnClientPutInServer(client)
{
CreateTimer(4.0, RecordPanel, GetClientUserId(client));
}
public Action:RecordPanel(Handle:timer, any:userid)
{
new client = GetClientOfUserId(userid);
if (client && GetClientTeam(client) > 0)
{
WelcomePalen(client);
return Plugin_Stop;
}
else
{
CreateTimer(4.0, RecordPanel, GetClientUserId(client));
}
return Plugin_Continue;
}
WelcomePalen(client)
{
decl String:name[32],
String:buffer[64];
GetClientName(client, name, sizeof(name));
new Handle:panel = CreatePanel();
SetPanelTitle(panel, "[DemoRecord] Автоматическая запись демо.\n");
Format(buffer, sizeof(buffer), "Добро пожаловать, %s!", name);
DrawPanelText(panel, buffer);
DrawPanelText(panel, "Хочешь записать свою игру?");
DrawPanelText(panel, " ");
DrawPanelItem(panel, "Да.");
DrawPanelItem(panel, "Нет.");
DrawPanelText(panel, " ");
DrawPanelItem(panel, "Как это работает?");
SendPanelToClient(panel, client, Select_Record_Panel, 0);
CloseHandle(panel);
}
public Select_Record_Panel(Handle:panel, MenuAction:action, client, index)
{
if (action == MenuAction_Select)
{
switch(index)
{
case 1: Recorder(client);
case 2: PrintToChat(client, "\x04[DemoRecord] \x01Вы отказались от записи демо!");
case 3: RulesPanel(client);
}
}
}
RulesPanel(client)
{
new Handle:panel = CreatePanel();
SetPanelTitle(panel, "[DemoRecord] Как это работает?");
DrawPanelText(panel, " ");
DrawPanelText(panel, "С Вашего соглашения автоматически запишется демо,");
DrawPanelText(panel, "которое будет сохранено в папке cssv34/cstrike/save/");
DrawPanelText(panel, "В случае бана или других спорных моментов,");
DrawPanelText(panel, "при предоставлении демо вопросы будут решаться быстрей.");
DrawPanelText(panel, " ");
DrawPanelText(panel, "С уважением, администрация!");
DrawPanelItem(panel, "Вернуться назад...");
SendPanelToClient(panel, client, Select_Rules_Panel, 0);
CloseHandle(panel);
}
public Select_Rules_Panel(Handle:panel, MenuAction:action, client, index)
{
if (action == MenuAction_Select)
{
if (index == 1)
{
WelcomePalen(client);
}
}
}
Recorder(client)
{
new Handle:KV = CreateKeyValues("DemoRecord");
KvSetString(KV, "cmd", command_record);
ShowVGUIPanel(client, "info", KV);
CloseHandle(KV);
}