Автор |
Сообщение |
bibika |
Добавлено: Вт Мар 15, 2016 17:52
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Автозапись Демо на наших серверах.
Помнится одобрили вы данную затею, нарыл минималистический плагин для реализации.
Исходный код:
#include <amxmodx>
#define DEMO_NAME "PWRFACTORY" // Название демо.
#define DEMO_DELAY 6.0 // Задержка перед уведомлением игрока о записи демо (сек).
new bool:iDemoStart[33] = false;
public plugin_init()
{
register_plugin("Auto Demo Recording", "1.0", "neygomon & Makzz");
register_clcmd("joinclass", "start_demo");
register_clcmd("menuselect", "start_demo");
}
public client_putinserver(id)
set_task(DEMO_DELAY, "start_demo_info", id);
public client_disconnect(id)
iDemoStart[id] = false;
public start_demo(id)
{
if(is_user_ignore(id)) return;
if(!iDemoStart[id])
{
client_cmd(id, "stop; record ^"%s^"", DEMO_NAME);
iDemoStart[id] = true;
}
}
public start_demo_info(id)
{
new iTime[9], iData[64];
get_time("%H:%M:%S", iTime, ;
get_time("%d.%m.%Y", iData, 63);
ChatColor(id, "Запись демо началась %s.dem", DEMO_NAME);
ChatColor(id, "Время записи: %s. Дата: %s.", iTime, iData);
}
is_user_ignore(id)
return !is_user_connected(id) || is_user_bot(id) || is_user_hltv(id);
stock ChatColor(const id, const szMessage[], any:...)
{
static szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);
if(!IdMsg) IdMsg = get_user_msgid("SayText");
message_begin(MSG_ONE, IdMsg, .player = id);
write_byte(id);
write_string(szMsg);
message_end();
}
Как работает:
При заходе на сервер начинается запись демо, через 6 секунд игроку выводится оповещение об этом, в нижнем левом углу.
Демо-запись пишется в папку cstrike, и имеет название PWRFACTORY.dem, чтобы игроки могли быстро её найти.
Демо при каждом перезаходе на сервер, либо смене карты начинает записываться заного, затирая старое.
Сначала я думал что за бред, как мы найдём нужную нам демку, а потом допёрло что человек же не сможет её затереть после бана, т.к. не сможет зайти на сервер, таким образом мы экономим место на диске у игроков, ведь демка весит достаточно.
Единственный минус состоит в том, что если кто-то захочет вытащить свой момент из демки, но карта сменится, демка затрётся , но наша цель была записать и предъявить демо при необоснованном бане.
Вообщем слушаю ваше мнение. |
|
|
Вернуться к началу
|
|
bibika |
Добавлено: Ср Мар 16, 2016 2:34
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Цитата: Я где-то такое говорил? Shocked Название же одно будет, откуда 10 демок? Не я к тому, что есть плагины, которые пишут разные демки на разные карты и время игры, соответственно, сколько игр столько и демозаписей, сыграл 100 игр, будет 100 демок, а это уже засирание клиента.
Я, кстати, тоже не задумывался о месте, но прикинув логику работы данного варианта, пришёл к мысли, что всё отлично |
|
|
Вернуться к началу
|
|
Lost Ghost |
Добавлено: Ср Мар 16, 2016 20:42
|
|
|
* Админ GunGame *
Информация
На форуме с: 04.01.2013
Возраст: 124
Сообщения: 1523
|
Вася, если с работой плагина всё ОК, то может уже запустить его? |
Музыка онлайн |
|
Вернуться к началу
|
|
bibika |
Добавлено: Ср Мар 16, 2016 22:17
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Иммунитет для админов нужно сделать, чтобы они могли писать демки свои. |
|
|
Вернуться к началу
|
|
Lost Ghost |
Добавлено: Чт Мар 17, 2016 0:53
|
|
|
* Админ GunGame *
Информация
На форуме с: 04.01.2013
Возраст: 124
Сообщения: 1523
|
Чтобы они смогли писать свои демки, достаточно остановить текущую запись командой STOP |
Музыка онлайн |
|
Вернуться к началу
|
|
bibika |
Добавлено: Чт Мар 17, 2016 8:34
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Это понятно, но зачем лишние сложности |
|
|
Вернуться к началу
|
|
Lost Ghost |
Добавлено: Чт Мар 17, 2016 8:58
|
|
|
* Админ GunGame *
Информация
На форуме с: 04.01.2013
Возраст: 124
Сообщения: 1523
|
Сложность как раз в том, что еще надолго может зависнуть этот вопрос с флагом для админа. |
Музыка онлайн |
|
Вернуться к началу
|
|
bibika |
Добавлено: Чт Мар 17, 2016 9:05
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Так я то не против, вон у сыра надо спрашивать, смогут ли наши админы осилить команду Stop в консоле) |
|
|
Вернуться к началу
|
|
KABANOFF [PWR] |
Добавлено: Чт Мар 17, 2016 10:19
|
|
|
* Админ AIM + HS *
Информация
На форуме с: 27.02.2014
Возраст: 33
Сообщения: 2350
Откуда: Латвиджа
|
Цитата: смогут ли наши админы осилить команду Stop в консоле) Наберут, блин, по объявлению, а потом мучайся с ними. |
|
|
Вернуться к началу
|
|
:D |
Добавлено: Чт Мар 17, 2016 11:00
|
|
|
* Очень приятно, Царь *
Информация
На форуме с: 18.10.2011
Сообщения: 1555
Откуда: Санкт-Петербург
|
Ну действительно, писать СТОП то особо то не напряжно. Но если бы можно обойтись без этого то это только лишь + Зачем эти лишние телодвижения. |
|
|
Вернуться к началу
|
|
bibika |
Добавлено: Чт Мар 17, 2016 12:42
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Цитата: Зачем эти лишние телодвижения
Цитата: Сложность как раз в том, что еще надолго может зависнуть этот вопрос с флагом для админа.
Вот надо решить, нам нужен максимально быстрый ввод плагина в действие, либо удобство. |
|
|
Вернуться к началу
|
|
:D |
Добавлено: Чт Мар 17, 2016 12:47
|
|
|
* Очень приятно, Царь *
Информация
На форуме с: 18.10.2011
Сообщения: 1555
Откуда: Санкт-Петербург
|
Ну мне пока, до плагина например, ничто не мешает писать демо. Давно ведь пишем, я бы и потерпел до конечного решения вопроса. Я за удобство Срочности же нет такой. |
|
|
Вернуться к началу
|
|
bibika |
Добавлено: Чт Мар 17, 2016 14:03
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Т.е. ты пишешь на всех кого банишь? |
|
|
Вернуться к началу
|
|
o5 |
Добавлено: Чт Мар 17, 2016 14:15
|
|
|
* Бан по ассисту *
Информация
На форуме с: 13.08.2011
Возраст: 37
Сообщения: 5796
|
Я тоже не вижу причины для подобной спешки, даже сам плагин не особо и сдался. Если Лосту это так срочно нужно, можно поставить пока на один только ГГ.
P.S. Кабанова тоже набрали по объявлению, как помнится.
P.P.S. Этот чёртов смайлик я теперь почти в каждой теме могу использовать к месту. |
Сыр и дырки в сыре: Больше сыра — больше дырок. Больше дырок — меньше сыра. Больше сыра = меньше сыра! |
|
Вернуться к началу
|
|
bibika |
Добавлено: Чт Мар 17, 2016 14:28
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Да смайлик действительно крут - добавлено спустя 7 минут: Сейчас напишу скриптеру, который в стиме у меня есть, думаю он допилит быстро. |
|
|
Вернуться к началу
|
|
o5 |
Добавлено: Чт Мар 17, 2016 14:37
|
|
|
* Бан по ассисту *
Информация
На форуме с: 13.08.2011
Возраст: 37
Сообщения: 5796
|
Цитата: Сейчас напишу скриптеру
К слову, я уже писал ранее про это. Правда, там исполнение самого плагина выглядит несколько иначе, но, возможно, строчки для флага могут быть схожими. |
Сыр и дырки в сыре: Больше сыра — больше дырок. Больше дырок — меньше сыра. Больше сыра = меньше сыра! |
|
Вернуться к началу
|
|
bibika |
Добавлено: Чт Мар 17, 2016 15:40
|
|
|
* Главный главнюк *
Информация
На форуме с: 25.10.2009
Возраст: 37
Сообщения: 7835
Откуда: Питер
|
Цитата: К слову, я уже писал ранее про это. Правда, там исполнение самого плагина выглядит несколько иначе, но, возможно, строчки для флага могут быть схожими. Блин, отлично, я его проверю и если всё гуд, то мы победили - добавлено спустя 27 минут: Плагин работает!!!
Пришлось правда к нему языковой файл искать, но это фигня.
/****************************************/
/* */
/* Auto Demo Recorder */
/* by IzI */
/* */
/* Change by Safety1st: */
/* Demo recording for admins with defined flag is disabled by default */
/****************************************/
#include <amxmodx>
#define PLUG_ADMIN ADMIN_LEVEL_G //Access flag required to bypass demo recording if amx_demo_disableforadmins=1
#pragma semicolon 1
new g_Toggle, g_DMod, g_UseNI, g_RStartAfter, g_DemoName, g_DemoNamePrefix, g_DisForAdm;
public plugin_init() {
register_plugin( "Auto Demo Recorder", "1.5", "IzI" );
g_Toggle = register_cvar( "amx_demo", "1" );
g_DMod = register_cvar( "amx_demo_mode", "0" );
g_UseNI = register_cvar( "amx_demo_steamid", "0" );
g_RStartAfter = register_cvar( "amx_demo_rectime", "15" ); // If it is less than 5, it will automatically set to 5, but willn't apply the changes to the console. I recommend to use default settings.
g_DemoName = register_cvar( "amx_demo_name", "PWRFACTORY" );
g_DemoNamePrefix = register_cvar( "amx_demo_prefix", "PWR Guard" );
g_DisForAdm = register_cvar( "amx_demo_disableforadmins","0" );
register_dictionary( "demorecorder.txt" );
}
public client_putinserver( id ) {
if( get_pcvar_num( g_Toggle ) ) {
new Float:delay = get_pcvar_float( g_RStartAfter );
if( delay < 5 )
set_pcvar_float( g_RStartAfter, ( delay = 5.0 ) );
set_task( delay, "Record", id );
}
}
public Record( id ) {
if( !is_user_connected( id ) || get_pcvar_num( g_Toggle ) != 1 || get_pcvar_num( g_DisForAdm ) == 1 && get_user_flags(id) & PLUG_ADMIN )
return;
// Getting time, client SteamID, server's name, server's ip with port.
new szSName[128], szINamePrefix[64], szTimedata[9];
new iUseIN = get_pcvar_num( g_UseNI );
new iDMod = get_pcvar_num( g_DMod );
get_pcvar_string( g_DemoNamePrefix, szINamePrefix, 63 );
get_time ( "%H:%M:%S", szTimedata, 8 );
switch( iDMod ) {
case 0: get_pcvar_string( g_DemoName, szSName, 127 );
case 1: get_user_ip( 0, szSName, 127, 0 );
case 2: get_user_name( 0, szSName, 127 );
}
if( iUseIN ) {
new szCID[32];
get_user_authid( id, szCID, 31 );
format( szSName, 127, "[%s]%s", szCID, szSName );
}
// Replacing signs.
replace_all( szSName, 127, ":", "_" );
replace_all( szSName, 127, ".", "_" );
replace_all( szSName, 127, "*", "_" );
replace_all( szSName, 127, "/", "_" );
replace_all( szSName, 127, "|", "_" );
replace_all( szSName, 127, "\", "_" );
replace_all( szSName, 127, "?", "_" );
replace_all( szSName, 127, ">", "_" );
replace_all( szSName, 127, "<", "_" );
replace_all( szSName, 127, " ", "_" );
// Displaying messages.
client_cmd( id, "stop; record ^"%s^"", szSName );
client_print( id, print_chat, "[%s] %L ^"%s.dem^"", szINamePrefix, LANG_PLAYER, "RECORDINGIN", szSName );
client_print( id, print_chat, "[%s] %L", szINamePrefix, LANG_PLAYER, "RECORDINGAT", szTimedata );
}
- добавлено спустя 15 минут: Плагин установил на все сервера кроме кнайфа. После смены карты, плагин заработает, желательно чтобы кто-то проверил, зайдя на сервер под админкой и без неё. При админки ничего не будет выводится и писаться, без админки через 15 секунд после входа выведется сообщение и начнётся запись.
Название демозаписи: PWRFACTORY.dem
Отсрочка начала записи: 15 секунд.
Иммунитет администраторов: Включён. |
|
|
Вернуться к началу
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы |
|