Simple Demo Recorder [Colored Messages]

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Simple Demo Recorder [Colored Messages]

Мнение от sianbg » 09 Фев 2018, 11:27

Не. Това е за формата на времето, а не за името на демото. Опитах да го направя да добавя и датата към името на видеото. Пробвай така

Код за потвърждение: Избери целия код

#include <amxmodx>

#define CC_COLORS_TYPE CC_COLORS_SHORT
#include <cromchat>

#define PLUGIN_VERSION "2.0"
#define MAX_MESSAGE_LENGTH 192
#define MAX_DEMO_NAME_LENGTH 64
#define MAX_TIME_LENGTH 32
#define DEMO_MESSAGES 2
#define REPLACER_SYMBOL "_"

#define ARG_NAME "<name>"
#define ARG_NAME_FULL "<name>.dem"
#define ARG_TIME "<time>"

new const g_szSymbols[][] = { " ", ":", ".", "*", "/", "|", "\", "?", ">", "<" }

enum _:Cvars
{
	dem_delay,
	dem_msg_delay,
	dem_name,
	dem_message,
	dem_message2,
	dem_time_format
}

enum _:CvarValues
{
	Float:cv_dem_delay,
	Float:cv_dem_msg_delay,
	cv_dem_name[MAX_DEMO_NAME_LENGTH],
	cv_dem_message[MAX_MESSAGE_LENGTH],
	cv_dem_message2[MAX_MESSAGE_LENGTH],
	cv_dem_time_format[MAX_TIME_LENGTH]
}

new g_eCvars[Cvars], g_eCvarValues[CvarValues]

public plugin_init()
{
	register_plugin("Simple Demo Recorder", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXDemoRecorder", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	g_eCvars[dem_delay] = register_cvar("dem_delay", "15.0")
	g_eCvars[dem_msg_delay] = register_cvar("dem_msg_delay", "0.1")
	g_eCvars[dem_name] = register_cvar("dem_name", "CRX Auto Demo")
	g_eCvars[dem_message] = register_cvar("dem_message", "!g[!tDemo RecordeR!g] !nWe are now recording in your !gcstrike !nfolder: !t<name>")
	g_eCvars[dem_message2] = register_cvar("dem_message2", "!g[!tDemo RecordeR!g] !nDemo recording has been started at: !t<time>")
	g_eCvars[dem_time_format] = register_cvar("dem_time_format", "%X")
}

public plugin_cfg()
{
	g_eCvarValues[cv_dem_delay] = get_pcvar_float(g_eCvars[dem_delay])
	g_eCvarValues[cv_dem_msg_delay] = get_pcvar_float(g_eCvars[dem_msg_delay])
	get_pcvar_string(g_eCvars[dem_name], g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]))
	get_pcvar_string(g_eCvars[dem_message], g_eCvarValues[cv_dem_message], charsmax(g_eCvarValues[cv_dem_message]))
	get_pcvar_string(g_eCvars[dem_message2], g_eCvarValues[cv_dem_message2], charsmax(g_eCvarValues[cv_dem_message2]))
	get_pcvar_string(g_eCvars[dem_time_format], g_eCvarValues[cv_dem_time_format], charsmax(g_eCvarValues[cv_dem_time_format]))
	
	for(new i; i < sizeof(g_szSymbols); i++)
		replace_all(g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]), g_szSymbols[i], REPLACER_SYMBOL)
		
	add(g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]), ".dem")
}

public client_putinserver(id)
	set_task(g_eCvarValues[cv_dem_delay], "StartRecording", id)

public StartRecording(id)
{
	if(!is_user_connected(id))
		return
	
	
	new szTime[MAX_TIME_LENGTH]
	get_time(g_eCvarValues[cv_dem_time_format], szTime, charsmax(szTime))
	client_cmd(id, "stop; record ^"%s-%s^"", g_eCvarValues[cv_dem_name], szTime)
	set_task(g_eCvarValues[cv_dem_msg_delay], "SendMessages", id)
}

public SendMessages(id)
{
	if(!is_user_connected(id))
		return
		
	new szMessage[DEMO_MESSAGES][MAX_MESSAGE_LENGTH]
	copy(szMessage[0], charsmax(szMessage[]), g_eCvarValues[cv_dem_message])
	copy(szMessage[1], charsmax(szMessage[]), g_eCvarValues[cv_dem_message2])
	
	for(new i; i < DEMO_MESSAGES; i++)
	{
		apply_replacements(szMessage[i], charsmax(szMessage[]))
		CC_SendMessage(id, szMessage[i])
	}
}

apply_replacements(szMessage[], const iLen)
{
	replace_all(szMessage, iLen, ARG_NAME, g_eCvarValues[cv_dem_name])
	
	if(contain(szMessage, ARG_TIME) != -1)
	{
		new szTime[MAX_TIME_LENGTH]
		get_time(g_eCvarValues[cv_dem_time_format], szTime, charsmax(szTime))
		replace_all(szMessage, iLen, ARG_TIME, szTime)
	}
}

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Simple Demo Recorder [Colored Messages]

Мнение от OciXCrom » 09 Фев 2018, 14:43

Идеята да се записва демо с различно име всеки път е категорично лоша. Демо от 30 минути игра може да надхвърли 100 MB големина. По този начин постоянно ще пълниш игрите на хората с огромни файлове, докато компютърът им не спре да работи поради липса на free disk space.

Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Simple Demo Recorder [Colored Messages]

Мнение от sianbg » 09 Фев 2018, 15:44

Като ползва %a на cvar командата ще е приемливо решение. Така ще има демо 7 дни назад, докато някое демо не презапише друго.

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Simple Demo Recorder [Colored Messages]

Мнение от SmirnoffBG » 12 Фев 2018, 14:58

Warning: Tag mismatch on line 56
Warning: Tag mismatch on line 57

new g_eCvars[Cvars], g_eCvarValues[CvarValues]
56: g_eCvarValues[cv_dem_delay] = get_pcvar_float(g_eCvars[dem_delay])
57: g_eCvarValues[cv_dem_msg_delay] = get_pcvar_float(g_eCvars[dem_msg_delay])

Fix:
g_eCvarValues[cv_dem_delay] = floatround(get_pcvar_float(g_eCvars[dem_delay])*10.0)
g_eCvarValues[cv_dem_msg_delay] = floatround(get_pcvar_float(g_eCvars[dem_msg_delay])*10.0)
set_task(float(g_eCvarValues[cv_dem_delay])/10.0, "StartRecording", id)
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Simple Demo Recorder [Colored Messages]

Мнение от OciXCrom » 12 Фев 2018, 16:51

Това никак не е fix. Стойностите са плаващи числа и такива трябва да останат. Въпросният warning е бъг от стария компилатор - на 1.8.3 няма да го изпише. Може да се "оправи" като добавиш _: преди функциите:

Код за потвърждение: Избери целия код

g_eCvarValues[cv_dem_delay] = _:get_pcvar_float(g_eCvars[dem_delay])
g_eCvarValues[cv_dem_msg_delay] = _:get_pcvar_float(g_eCvars[dem_msg_delay])

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Simple Demo Recorder [Colored Messages]

Мнение от ElitePower » 16 Юли 2018, 13:30

Как да направя да спре да се показва второто съобщение? Сложих // пред втория текст, за да спре, но за сметка на това излиза празен ред.
g_eCvars[dem_message2] = register_cvar("dem_message2", "!g[!tDemo RecordeR!g] !nDemo recording has been started at: !t<time>")

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Simple Demo Recorder [Colored Messages]

Мнение от OciXCrom » 16 Юли 2018, 15:41

Махни този ред:

Код за потвърждение: Избери целия код

copy(szMessage[1], charsmax(szMessage[]), g_eCvarValues[cv_dem_message2])

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Simple Demo Recorder [Colored Messages]

Мнение от ElitePower » 16 Юли 2018, 19:52

Същата работа, позволих си да премахна и други неща свързани с второто съобщение, но без желания ефект. Ето кода, тествай, за да се увериш .

Код за потвърждение: Избери целия код

#include <amxmodx>

#define CC_COLORS_TYPE CC_COLORS_SHORT
#include <cromchat>

#define PLUGIN_VERSION "2.0"
#define MAX_MESSAGE_LENGTH 192
#define MAX_DEMO_NAME_LENGTH 64
#define MAX_TIME_LENGTH 32
#define DEMO_MESSAGES 2
#define REPLACER_SYMBOL "_"

#define ARG_NAME "<name>"
#define ARG_NAME_FULL "<name>.dem"
#define ARG_TIME "<time>"

new const g_szSymbols[][] = { " ", ":", ".", "*", "/", "|", "\", "?", ">", "<" }

enum _:Cvars
{
	dem_delay,
	dem_msg_delay,
	dem_name,
	dem_message,
	dem_time_format
}

enum _:CvarValues
{
	Float:cv_dem_delay,
	Float:cv_dem_msg_delay,
	cv_dem_name[MAX_DEMO_NAME_LENGTH],
	cv_dem_message[MAX_MESSAGE_LENGTH],
	cv_dem_time_format[MAX_TIME_LENGTH]
}

new g_eCvars[Cvars], g_eCvarValues[CvarValues]

public plugin_init()
{
	register_plugin("Simple Demo Recorder", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXDemoRecorder", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	g_eCvars[dem_delay] = register_cvar("dem_delay", "15.0")
	g_eCvars[dem_msg_delay] = register_cvar("dem_msg_delay", "0.1")
	g_eCvars[dem_name] = register_cvar("dem_name", "CRX Auto Demo")
	g_eCvars[dem_message] = register_cvar("dem_message", "!g[!tDemo RecordeR!g] !nDemo Name -> !t<name> | start na zapisvaneto -> !t<time>")
	g_eCvars[dem_time_format] = register_cvar("dem_time_format", "%X")
}

public plugin_cfg()
{
	g_eCvarValues[cv_dem_delay] = _:get_pcvar_float(g_eCvars[dem_delay])
	g_eCvarValues[cv_dem_msg_delay] = _:get_pcvar_float(g_eCvars[dem_msg_delay])
	get_pcvar_string(g_eCvars[dem_name], g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]))
	get_pcvar_string(g_eCvars[dem_message], g_eCvarValues[cv_dem_message], charsmax(g_eCvarValues[cv_dem_message]))
	get_pcvar_string(g_eCvars[dem_time_format], g_eCvarValues[cv_dem_time_format], charsmax(g_eCvarValues[cv_dem_time_format]))
	
	for(new i; i < sizeof(g_szSymbols); i++)
		replace_all(g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]), g_szSymbols[i], REPLACER_SYMBOL)
		
	add(g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]), ".dem")
}

public client_putinserver(id)
	set_task(g_eCvarValues[cv_dem_delay], "StartRecording", id)

public StartRecording(id)
{
	if(!is_user_connected(id))
		return
	
	client_cmd(id, "stop; record ^"%s^"", g_eCvarValues[cv_dem_name])
	set_task(g_eCvarValues[cv_dem_msg_delay], "SendMessages", id)
}

public SendMessages(id)
{
	if(!is_user_connected(id))
		return
		
	new szMessage[DEMO_MESSAGES][MAX_MESSAGE_LENGTH]
	copy(szMessage[0], charsmax(szMessage[]), g_eCvarValues[cv_dem_message])
	
	for(new i; i < DEMO_MESSAGES; i++)
	{
		apply_replacements(szMessage[i], charsmax(szMessage[]))
		CC_SendMessage(id, szMessage[i])
	}
}

apply_replacements(szMessage[], const iLen)
{
	replace_all(szMessage, iLen, ARG_NAME, g_eCvarValues[cv_dem_name])
	
	if(contain(szMessage, ARG_TIME) != -1)
	{
		new szTime[MAX_TIME_LENGTH]
		get_time(g_eCvarValues[cv_dem_time_format], szTime, charsmax(szTime))
		replace_all(szMessage, iLen, ARG_TIME, szTime)
	}
}

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Simple Demo Recorder [Colored Messages]

Мнение от OciXCrom » 16 Юли 2018, 19:53

Код за потвърждение: Избери целия код

#define DEMO_MESSAGES 2
Това е колко съобщения ще бъдат изпратени. Намали го на 1.

Аватар
viewsonic
Извън линия
Потребител
Потребител
Мнения: 135
Регистриран на: 09 Юни 2018, 17:46
Се отблагодари: 22 пъти
Обратна връзка:

Simple Demo Recorder [Colored Messages]

Мнение от viewsonic » 30 Яну 2019, 00:59

а възможно ли е да се направят тези съобщения за demo recoder да не се показват ?

Код за потвърждение: Избери целия код

93.123.18.76:27016

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Одобрени плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 10 госта