Simple Demo Recorder [Colored Messages]

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Потребителски аватар

sianbg gta5-bg
VIP
VIP
Мнения: 230
Регистриран: 13 ное 2017, 12:18
Контакти:

Simple Demo Recorder [Colored Messages]

Мнение от sianbg gta5-bg » 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 TM
Администратор
Администратор
Мнения: 5037
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 469 пъти
Години: 21
Контакти:

Simple Demo Recorder [Colored Messages]

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

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

Потребителски аватар

sianbg gta5-bg
VIP
VIP
Мнения: 230
Регистриран: 13 ное 2017, 12:18
Контакти:

Simple Demo Recorder [Colored Messages]

Мнение от sianbg gta5-bg » 09 фев 2018, 15:44

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

Потребителски аватар

SmirnoffBG ῌΞƦΘЄⱿ
Потребител
Потребител
Мнения: 164
Регистриран: 27 ное 2016, 19:43
Местоположение: София
Се отблагодари: 4 пъти
Получена благодарност: 5 пъти
Години: 23
Контакти:

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)
Изображение

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5037
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 469 пъти
Години: 21
Контакти:

Simple Demo Recorder [Colored Messages]

Мнение от OciXCrom TM » 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
Потребител
Потребител
Мнения: 546
Регистриран: 13 окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 10 пъти

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 TM
Администратор
Администратор
Мнения: 5037
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 469 пъти
Години: 21
Контакти:

Simple Demo Recorder [Colored Messages]

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

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

Код: Избери всички

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

Потребителски аватар

ElitePower
Потребител
Потребител
Мнения: 546
Регистриран: 13 окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 10 пъти

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 TM
Администратор
Администратор
Мнения: 5037
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 56 пъти
Получена благодарност: 469 пъти
Години: 21
Контакти:

Simple Demo Recorder [Colored Messages]

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

Код: Избери всички

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

Потребителски аватар

viewsonic
Потребител
Потребител
Мнения: 135
Регистриран: 09 юни 2018, 17:46
Се отблагодари: 23 пъти
Контакти:

Simple Demo Recorder [Colored Messages]

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

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

Код: Избери всички

93.123.18.76:27016

Потребителски аватар

thoughtz 821E3
Тестов модератор
Тестов модератор
Мнения: 285
Регистриран: 13 окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 23 пъти
Получена благодарност: 25 пъти
Години: 27
Контакти:

Simple Demo Recorder [Colored Messages]

Мнение от thoughtz 821E3 » 30 яну 2019, 01:02

Кои съобщения искаш да не се показват?

Отговори

Върни се в “Одобрени плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост