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

Auto Demo Record 1.0

Alraune

Участник
Сообщения
216
Реакции
52
Более адекватный вариант, версия 1.1:***Скрытое содержимое не может быть процитировано.***Где:
PATH_DEMO_RECORD - ваш путь записи демо-роликов клиенту после папки cstrike (будет отображён и в меню помощи);
//KickClient - если слэши // переместить выше (закрыть сообщение в чат), то отказавшегося в записи игрока кикнет.
А возможно устроить плагин так, чтобы хинт появлялся с интервалом? Например после первого респауна игрка или уже после выбора команды. Перебивает Приветствие с важной инфой... а хочется попробовать )
И ещё идея....Записывать видео на стороне клиента без его согласия из админки. С выбором игрока .
 
Последнее редактирование:
Сообщения
10
Реакции
1
"Нужно минимум 15 сообщений и минимум 10 репутации, чтобы появилась кнопка мне нравится/лайк и т.д."
**Скрыто: чтобы увидеть содержимое, у вас должно быть как минимум 100 сообщений.**
На это можно ответить только матом в 3 этажа,который я воспроизводить не буду,чтоб не забанили!:feminist:
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
уже после выбора команды
Так и сделано. Остаётся разве что выбрать класс игрока.
Записывать видео на стороне клиента без его согласия из админки. С выбором игрока
Он всё равно должен нажать "ОК", у него всё равно выскочит MOTD-окно - если читер не дурак, то догадается. Оффтоп
На это можно ответить только матом в 3 этажа
Специально сделал доступным код для "проверенных" пользователей по той же причине, по какой эти команды на новой CS:S давно запретили. Выше @Серый™ дал другой - в чём проблема?
 

Felton

Участник
Сообщения
799
Реакции
59
Скажите как сделать что бы меню записи дэмо выскакивало чуть позже т.к сервер DeathMatch а там при заходе в игру вылазеет меню выбора оружия и тут же перебивает меню записи .И как повторно вызвать меню записи дэмо если сначало человек отказался от записи а потом всётаки решил начать запись?Такое возможно реализовать?
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
  • Автор ресурса
  • #26
Кто-нибудь подскажет как редактировать свой пост :blink:
или это могут делать делать только модераторы... бред
 

Alraune

Участник
Сообщения
216
Реакции
52
Скажите как сделать что бы меню записи дэмо выскакивало чуть позже т.к сервер DeathMatch а там при заходе в игру вылазеет меню выбора оружия и тут же перебивает меню записи .И как повторно вызвать меню записи дэмо если сначало человек отказался от записи а потом всётаки решил начать запись?Такое возможно реализовать?
Да тоже просила... При входе на сервер как почти у всех - Правила. А тут закрываешь motd и сразу предлагается сделать демку. Правила перекрываются. Вот и думай что важнее...Или как в первом варианте плагина - эрроры в лог, но зато есть шанc тапнуть оба хинта . В общем как в жизни - выбор есть , но он не велик :D
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #28
Так сделать задерку либо у того либо у того
 

Felton

Участник
Сообщения
799
Реакции
59
@R1KO,
Я же и прошу сделать задержку что бы меню записи дэмо выскакивало чуть позже.Но вот как это сделать не знаю .Брал поправленный плагин от AlmazON с 8 поста version = "1.1".Вопрос остался открытым.......
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #30
@Felton, как буду дома - сделаю. Ну если никто раньше не сделает
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Более поздний показ меню записи демо-ролика, сразу после начала игры новоподключившимся. Для это версии требуется SDKHooks:[HIDE-REPLY-THANKS]
PHP:
#pragma semicolon 1
#include <sourcemod>
#include <sdkhooks>

#define PATH_DEMO_RECORD    "SAVE"

new Handle:KV;

public Plugin:myinfo =
{
    name    =    "DemoRecord client [SDKHooks]",
    author    =    "Mumuxtarka & AlmazON edition",
    version    =    "1.2e"
};

public OnPluginStart()
{
    HookEvent("player_activate", Event_PlayerActivate);
    KV = CreateKeyValues("DemoRecord");
}

public OnConfigsExecuted()
{
    decl String:command_record[128], String:map[32],
         String:time[17];

    GetCurrentMap(map, sizeof(map));
    FormatTime(time, sizeof(time), "%d-%m-%Y_%H-%M");
    FormatEx(command_record, sizeof(command_record), "record %s/%s_%s", PATH_DEMO_RECORD, time, map);
    KvSetString(KV, "cmd", command_record);
}

public Event_PlayerActivate(Handle:event, const String:name[], bool:dontBroadcast)
{
    SDKHook(GetClientOfUserId(GetEventInt(event, "userid")), SDKHook_SpawnPost, ShowWelcome);
}

public ShowWelcome(client)
{
    SDKUnhook(client, SDKHook_SpawnPost, ShowWelcome);
    WelcomePanel(client);
}

WelcomePanel(client)
{
    decl String:name[MAX_NAME_LENGTH],
         String:buffer[66], Handle:panel;
    GetClientName(client, name, MAX_NAME_LENGTH);

    SetPanelTitle(panel = CreatePanel(), "[DemoRecord] Автоматическая запись демо\n");

    FormatEx(buffer, sizeof(buffer), "Добро пожаловать, %s!", name);
    DrawPanelText(panel, buffer);

    DrawPanelText(panel, "Хочешь записать свою игру?\n \n");
    DrawPanelItem(panel, "Да");
    DrawPanelItem(panel, "Нет\n \n");
    DrawPanelItem(panel, "Как это работает?");

    SendPanelToClient(panel, client, Select_Record_Panel, 90);

    CloseHandle(panel);
}

public Select_Record_Panel(Handle:panel, MenuAction:action, client, index)
{
    if (action == MenuAction_Select)
    {
        switch(index)
        {
            case 1: ShowVGUIPanel(client, "info", KV);
            case 2:
            {
                PrintToChat(client, "\x01\x04[DemoRecord] \x01Вы отказались от записи \x03демо\x01!");
                //KickClient(client, "Вы отказались от записи демо!");
            }
            case 3: RulesPanel(client);
        }
    }
}

RulesPanel(client)
{
    decl String:buffer[128], Handle:panel;
    SetPanelTitle(panel = CreatePanel(), "[DemoRecord] Как это работает?\n \n");

    DrawPanelText(panel, "С Вашего соглашения автоматически запишется демо,");
    FormatEx(buffer, sizeof(buffer), "которое будет сохранено в папке cssv34/cstrike/%s/", PATH_DEMO_RECORD);
    DrawPanelText(panel, buffer);
    DrawPanelText(panel, "В случае бана или других спорных моментов,");
    DrawPanelText(panel, "при предоставлении демо, вопросы будут решаться быстрей.\n \n");
    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) WelcomePanel(client);
}
[/HIDE-REPLY-THANKS]Где:
PATH_DEMO_RECORD - ваш путь записи демо-роликов клиенту после папки cstrike (будет отображён и в меню помощи);
//KickClient - если слэши // переместить выше (закрыть сообщение в чат), то отказавшегося в записи игрока кикнет.
Оффтоп
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #32
@AlmazON, а почему бы просто не сделать таймер?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
просто не сделать таймер
Так не надо гадать, читают MOTD или ещё что: играешь - значит всё, даже по логике, лучше начать записывать демку. Да и затраты на таймер могут быть велики: проверить "в игре", а если таймер большой - необходимо убивать его при выходе, чтобы не создалось куча.
Полная автоматика, если только у кого-то ещё и на этот момент не должно появляться другое меню.
 

Felton

Участник
Сообщения
799
Реакции
59
@AlmazON,
На старушке version "1.2e" не работает.Проверил на домашнем ждал и играл минут 40 так и не появилось меню записи дэмо .Эрроров нет .Удалил.
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
ждал и играл минут 40
Оффтоп Там сразу должно появиться, как только на респауне игрок окажется. У меня появлялось, итог: твой SDKHoooks "кривой", что уже выяснялось ранее.
@R1KO, а ты и свою версию выложи, с таймером. Всё равно вряд ли всё всех устроит в одной.
 
Последнее редактирование:

Felton

Участник
Сообщения
799
Реакции
59
нужно что бы меню записи дэмо выскакивало чуть позже ну скжем секунд через 5-8 как только человек зашол на сервер т.к сервер DeathMatch а там при заходе в игру вылазеет меню выбора оружия и тут же пропадает меню записи.А если сначало зайти в сектры то меню записи показывает.Это я говорю про version "1.1"
Тут получается что разници нет какая версия
Как ты говориш Там сразу должно появиться, как только на респауне игрок окажется.Так вот я и говорю что игрок появляется и выскакивает меню выбора оружия а меню записи пропадает
И как повторно вызвать меню записи дэмо если сначало человек отказался от записи а потом всётаки решил начать запись?
 
Последнее редактирование:

Alraune

Участник
Сообщения
216
Реакции
52
нужно что бы меню записи дэмо выскакивало чуть позже ну скжем секунд через 5-8 как только человек зашол на сервер т.к сервер DeathMatch а там при заходе в игру вылазеет меню выбора оружия и тут же пропадает меню записи.А если сначало зайти в сектры то меню записи показывает.Это я говорю про version "1.1"
Тут получается что разници нет какая версия
Как ты говориш Там сразу должно появиться, как только на респауне игрок окажется.Так вот я и говорю что игрок появляется и выскакивает меню выбора оружия а меню записи пропадает
И как повторно вызвать меню записи дэмо если сначало человек отказался от записи а потом всётаки решил начать запись?
Поддерживаю! Было бы чудно, если бы запись демки возможно было начать по команде в любой момент, и остановить той же командой , например !dem , по аналогии с выключением и вкл. музыки в конце раунда .
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
  • Автор ресурса
  • #38
Вот кому надо, запись демо сразу при заходе на сервер. sm_auto_demo_url ссылка на мод окно, квар прописываем в server.cfg .
PHP:
new String:g_sMsg[PLATFORM_MAX_PATH], String:g_sHostname[150], String:g_sMap[32];

public Plugin:myinfo =
{
    name = "Auto demo",
    author = "Grey™ edit AlmazON",
    description = "Auto demo client",
    version = "1.2",
    url = "HLmod.ru"
};

public OnPluginStart()
{
    decl Handle:hCvar;
    GetConVarString(hCvar = CreateConVar("sm_auto_demo_url", "", ""), g_sMsg, PLATFORM_MAX_PATH);
    HookConVarChange(hCvar, AutoDemoUrlChange);
    HookConVarChange(hCvar = FindConVar("hostname"), HostName);
    GetConVarString(hCvar, g_sHostname, 150);
    CloseHandle(hCvar);
    HookEvent("player_activate", Event_PlayerActivate);
}

public AutoDemoUrlChange(Handle:convar, const String:oldValue[], const String:newValue[]) strcopy(g_sMsg, PLATFORM_MAX_PATH, newValue);

public HostName(Handle:convar, const String:oldValue[], const String:newValue[]) strcopy(g_sHostname, 150, newValue);

public OnConfigsExecuted()
{
    if (!GetCurrentMap(g_sMap, 32)) g_sMap = "MAP";
}

public Event_PlayerActivate(Handle:event, String:name[], bool:dontBroadcast) CreateTimer(0.2, start_demo, GetEventInt(event, "userid"));

public Action:start_demo(Handle:hTimer, any:userid)
{
    new iClient = GetClientOfUserId(userid);
    if (iClient && IsClientInGame(iClient))
    {
        decl String:sBuffer[192];
        WritePackCell(hTimer = CreateDataPack(), userid);
        FormatTime(sBuffer, 20, "%d.%m.%y|%H:%M:%S", userid = GetTime());
        WritePackString(hTimer, sBuffer);
        CreateTimer(10.0, advet_demo, hTimer, TIMER_DATA_HNDL_CLOSE|TIMER_FLAG_NO_MAPCHANGE);
        FormatTime(sBuffer, 20, "%d-%m-%y_%H-%M-%S", userid);
        if (Format(sBuffer, 192, "record save//%s_%s; joingame", sBuffer, g_sMap) > 14)
        {
            KvSetString(hTimer = CreateKeyValues("data"), "title", g_sHostname);
            KvSetString(hTimer, "type", "2");
            KvSetString(hTimer, "cmd", sBuffer);
            KvSetString(hTimer, "msg", g_sMsg);
            ShowVGUIPanel(iClient, "info", hTimer);
        }
        CloseHandle(hTimer);
    }
    return Plugin_Stop;
}

public Action:advet_demo(Handle:hTimer, Handle:hPack)
{
    ResetPack(hPack);
    new iClient = GetClientOfUserId(ReadPackCell(hPack));
    if (iClient)
    {
        decl String:sTime[20];
        ReadPackString(hPack, sTime, 20);
        TeamColorPrintToChat(iClient, "\x01\x04[\x03Team-Magic\x04]\x01: Запись демо началась \x03%s \x01на \x04%s", sTime, g_sMap);
        TeamColorPrintToChat(iClient, "\x01\x04[\x03Team-Magic\x04]\x01: Место хранения демок \x04cstrike/save");
    }
    return Plugin_Stop;
}

stock TeamColorPrintToChat(client, const String:text[], any:...)
{
    decl String:buffer[192], player[1], Handle:h;
    player[0] = client;
    if ((h = StartMessage("SayText2", player, 1, 0)) != INVALID_HANDLE)
    {
        SetGlobalTransTarget(client);
        VFormat(buffer, 192, text, 3);
        BfWriteByte(h, client);
        BfWriteByte(h, true);
        BfWriteString(h, buffer);
        EndMessage();
    }
}
объясни , пожалуйста, что это за проверка я не пойму зачем она
PHP:
if (Format(sBuffer, 192, "record save//%s_%s; joingame", sBuffer, g_sMap) > 14)
 

Revelation

Участник
Сообщения
14
Реакции
0
почему ошибками спамит?
Оффтоп

И ещё, как сделать чтоб не motd открывалось, а в окне слева писалось мол ( Запись демо началась - Демо сохраняется в папку 'тут путь' ) Спасибо!
 

mumuxtarka

Участник
Сообщения
46
Реакции
5
  • Автор ресурса
  • #40
почему ошибками спамит?
Оффтоп

И ещё, как сделать чтоб не motd открывалось, а в окне слева писалось мол ( Запись демо началась - Демо сохраняется в папку 'тут путь' ) Спасибо!
Ошибка потому что версия в шапке темы с багом. Не используй ее.

Вот еще две версии плагина
DemoRecord_MotdInfo - Предлагает записать демо при входе на сервер и отображает инфо о записи демо в motd окне.
DemoRecord_Auto - Автоматически записывает демо при входе на сервер.
 

Вложения

  • DemoRecord_MotdInfo.rar
    6.3 КБ · Просмотры: 60
  • DemoRecord_Auto.rar
    4.3 КБ · Просмотры: 117
Последнее редактирование:
Сверху Снизу