Counter-Strike 1.6
CS1.BG | DUST2 NOSHTA GARMI [RANKED PLAY] #1
45.144.155.113:27015
de_dust2
Играчи: 30/32
de_dust2
Counter-Strike 1.6
Cs-PlovdiV.com - Aim Attack 93.123.16.4:27022 aim_aztec Играчи: 0/16

Timeleft със собствена стойност и рестарт на всеки 45 минути

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от EMOTO2.COM » 15 Окт 2023, 20:59

Здравейте, това е обикновенния timeleft плугин с някой допълнителни редакции. В момента всичко е ок и работи добре но желая да се направят някой промени. Стойността на mp_timelimit на сървъра е зададена на 0 и на всеки 45 минути в сървъра се прави автоматичен рунд рестарт без да се сменя картата. При проверка на timeleft винаги показва съобщението от 76 ред а именно:

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

		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t45 !yminutes before auto restart!")
Може ли някой да направи да се показва реалното оставащо време до автоматичния рестарт (тоест виртуална стойност на mp_timelimit от 45 минути = 2700 секунди) и след рестарта брояча да започва отначало?

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

#include <amxmodx>

new g_TimeSet[32][2]
new g_LastTime
new g_CountDown
new g_Switch

public plugin_init()
{
	register_plugin("TimeLeft", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("timeleft.txt")
	register_cvar("amx_time_voice", "1")
	register_srvcmd("amx_time_display", "setDisplaying")
	register_clcmd("say timeleft", "sayTimeLeft", 0, "- displays timeleft")
	register_clcmd("say thetime", "sayTheTime", 0, "- displays current time")
	
	set_task(0.6, "timeRemain", 8648458, "", 0, "b")
}

public sayTheTime(id)
{
	if (get_cvar_num("amx_time_voice"))
	{
		new mhours[6], mmins[6], whours[32], wmins[32], wpm[6]
		
		get_time("%H", mhours, 5)
		get_time("%M", mmins, 5)
		
		new mins = str_to_num(mmins)
		new hrs = str_to_num(mhours)
		
		if (mins)
			num_to_word(mins, wmins, 31)
		else
			wmins[0] = 0
		
		if (hrs < 12)
			wpm = "am "
		else
		{
			if (hrs > 12) hrs -= 12
			wpm = "pm "
		}

		if (hrs) 
			num_to_word(hrs, whours, 31)
		else
			whours = "twelve "
		
		client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm)
	}
	
	new ctime[64]
	
	get_time("%H!y:!t%M!y:!t%S !yDate: !t%d!y/!t%m!y/!t%Y", ctime, 63)
	chat_color(0, "!g[EMOTO2.COM] !yCurrent time: !t%s", ctime)
	
	return PLUGIN_CONTINUE
}

public sayTimeLeft(id)
{
	if (get_cvar_float("mp_timelimit"))
	{
		new a = get_timeleft()
		
		if (get_cvar_num("amx_time_voice"))
		{
			new svoice[128]
			setTimeVoice(svoice, 127, 0, a)
			client_cmd(id, "%s", svoice)
		}
		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t%d!y:!t%02d", (a / 60), (a % 60))
	}
	else
		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t45 !yminutes before auto restart!")
	
	return PLUGIN_CONTINUE
}

setTimeText(text[], len, tmlf, id)
{
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	if (secs == 0)
		format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE")
	else if (mins == 0)
		format(text, len, "Auto restart game in %d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
	else
		format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
}

setTimeVoice(text[], len, flags, tmlf)
{
	new temp[7][32]
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	for (new a = 0;a < 7;++a)
		temp[a][0] = 0

	if (secs > 0)
	{
		num_to_word(secs, temp[4], 31)
		
		if (!(flags & 8)) 
			temp[5] = "seconds "
	}
	
	if (mins > 59)
	{
		new hours = mins / 60
		
		num_to_word(hours, temp[0], 31)
		
		if (!(flags & 8))
			temp[1] = "hours "
		
		mins = mins % 60
	}
	
	if (mins > 0)
	{
		num_to_word(mins, temp[2], 31)
		
		if (!(flags & 8))
			temp[3] = "minutes "
	}
	
	if (!(flags & 4))
		temp[6] = "remaining "
	
	return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6])
}

findDispFormat(time)
{
	for (new i = 0; g_TimeSet[i][0]; ++i)
	{
		if (g_TimeSet[i][1] & 16)
		{
			if (g_TimeSet[i][0] > time)
			{
				if (!g_Switch)
				{
					g_CountDown = g_Switch = time
					remove_task(8648458)
					set_task(0.9, "timeRemain", 34543, "", 0, "b")
				}
				
				return i
			}
		}
		else if (g_TimeSet[i][0] == time)
		{
			return i
		}
	}
	
	return -1
}

public setDisplaying()
{
	new arg[32], flags[32], num[32]
	new argc = read_argc() - 1
	new i = 0

	while (i < argc && i < 32)
	{
		read_argv(i + 1, arg, 31)
		parse(arg, flags, 31, num, 31)
		
		g_TimeSet[i][0] = str_to_num(num)
		g_TimeSet[i][1] = read_flags(flags)
		
		i++
	}
	g_TimeSet[i][0] = 0
	
	return PLUGIN_HANDLED
}

public timeRemain(param[])
{
	new gmtm = get_timeleft()
	new tmlf = g_Switch ? --g_CountDown : gmtm
	new stimel[12]
	
	format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60)
	
	if (g_Switch && gmtm > g_Switch)
	{
		remove_task(34543)
		g_Switch = 0
		set_task(0.6, "timeRemain", 8648458, "", 0, "b")
		
		return
	}

	if (tmlf > 0 && g_LastTime != tmlf)
	{
		g_LastTime = tmlf
		new tm_set = findDispFormat(tmlf)
		
		if (tm_set != -1)
		{
			new flags = g_TimeSet[tm_set][1]
			new arg[128]
			
			if (flags & 1)
			{
				new players[32], pnum
				
				get_players(players, pnum, "c")
				
				for (new i = 0; i < pnum; i++)
				{
					setTimeText(arg, 127, tmlf, players[i])
					
					if (flags & 16)
						set_hudmessage(0, 255, 255, -1.0, 0.33, 0, 0.0, 0.9, 0.1, 0.5, -1)
					else
						set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1)
					
					show_hudmessage(players[i], "%s", arg)
				}
			}

			if (flags & 2)
			{
				setTimeVoice(arg, 127, flags, tmlf)
				client_cmd(0, "%s", arg)
			}
		}
	}
}

stock chat_color(const id, const input[], any:...)
{
	new count = 1, players[32]

	static msg[191]

	vformat(msg, 190, input, 3)

	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	replace_all(msg, 190, "!t2", "^0")

	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i])
				write_string(msg)
				message_end()
			}
		}
	}
}
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
Hurricane
Извън линия
Потребител
Потребител
Мнения: 193
Регистриран на: 04 Юни 2022, 21:18
Се отблагодари: 17 пъти
Получена благодарност: 71 пъти

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от Hurricane » 15 Окт 2023, 21:36

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

#include <amxmodx>

new g_TimeSet[32][2]
new g_LastTime
new g_CountDown
new g_Switch

public plugin_init()
{
	register_plugin("TimeLeft", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("timeleft.txt")
	register_cvar("amx_time_voice", "1")
	register_srvcmd("amx_time_display", "setDisplaying")
	register_clcmd("say timeleft", "sayTimeLeft", 0, "- displays timeleft")
	register_clcmd("say thetime", "sayTheTime", 0, "- displays current time")
	
	set_task(0.6, "timeRemain", 8648458, "", 0, "b")
}

public sayTheTime(id)
{
	if (get_cvar_num("amx_time_voice"))
	{
		new mhours[6], mmins[6], whours[32], wmins[32], wpm[6]
		
		get_time("%H", mhours, 5)
		get_time("%M", mmins, 5)
		
		new mins = str_to_num(mmins)
		new hrs = str_to_num(mhours)
		
		if (mins)
			num_to_word(mins, wmins, 31)
		else
			wmins[0] = 0
		
		if (hrs < 12)
			wpm = "am "
		else
		{
			if (hrs > 12) hrs -= 12
			wpm = "pm "
		}

		if (hrs) 
			num_to_word(hrs, whours, 31)
		else
			whours = "twelve "
		
		client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm)
	}
	
	new ctime[64]
	
	get_time("%H!y:!t%M!y:!t%S !yDate: !t%d!y/!t%m!y/!t%Y", ctime, 63)
	chat_color(0, "!g[EMOTO2.COM] !yCurrent time: !t%s", ctime)
	
	return PLUGIN_CONTINUE
}

public sayTimeLeft(id)
{
	new a = get_timeleft()
	
	if (get_cvar_float("mp_timelimit"))
	{
		if (get_cvar_num("amx_time_voice"))
		{
			new svoice[128]
			setTimeVoice(svoice, 127, 0, a)
			client_cmd(id, "%s", svoice)
		}
		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t45 !yminutes before auto restart!")
	}
	else
		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t%d!y:!t%02d", (a / 60), (a % 60))
	
	return PLUGIN_CONTINUE
}

setTimeText(text[], len, tmlf, id)
{
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	if (secs == 0)
		format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE")
	else if (mins == 0)
		format(text, len, "Auto restart game in %d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
	else
		format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
}

setTimeVoice(text[], len, flags, tmlf)
{
	new temp[7][32]
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	for (new a = 0;a < 7;++a)
		temp[a][0] = 0

	if (secs > 0)
	{
		num_to_word(secs, temp[4], 31)
		
		if (!(flags & 8)) 
			temp[5] = "seconds "
	}
	
	if (mins > 59)
	{
		new hours = mins / 60
		
		num_to_word(hours, temp[0], 31)
		
		if (!(flags & 8))
			temp[1] = "hours "
		
		mins = mins % 60
	}
	
	if (mins > 0)
	{
		num_to_word(mins, temp[2], 31)
		
		if (!(flags & 8))
			temp[3] = "minutes "
	}
	
	if (!(flags & 4))
		temp[6] = "remaining "
	
	return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6])
}

findDispFormat(time)
{
	for (new i = 0; g_TimeSet[i][0]; ++i)
	{
		if (g_TimeSet[i][1] & 16)
		{
			if (g_TimeSet[i][0] > time)
			{
				if (!g_Switch)
				{
					g_CountDown = g_Switch = time
					remove_task(8648458)
					set_task(0.9, "timeRemain", 34543, "", 0, "b")
				}
				
				return i
			}
		}
		else if (g_TimeSet[i][0] == time)
		{
			return i
		}
	}
	
	return -1
}

public setDisplaying()
{
	new arg[32], flags[32], num[32]
	new argc = read_argc() - 1
	new i = 0

	while (i < argc && i < 32)
	{
		read_argv(i + 1, arg, 31)
		parse(arg, flags, 31, num, 31)
		
		g_TimeSet[i][0] = str_to_num(num)
		g_TimeSet[i][1] = read_flags(flags)
		
		i++
	}
	g_TimeSet[i][0] = 0
	
	return PLUGIN_HANDLED
}

public timeRemain(param[])
{
	new gmtm = get_timeleft()
	new tmlf = g_Switch ? --g_CountDown : gmtm
	new stimel[12]
	
	format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60)
	
	if (g_Switch && gmtm > g_Switch)
	{
		remove_task(34543)
		g_Switch = 0
		set_task(0.6, "timeRemain", 8648458, "", 0, "b")
		
		return
	}

	if (tmlf > 0 && g_LastTime != tmlf)
	{
		g_LastTime = tmlf
		new tm_set = findDispFormat(tmlf)
		
		if (tm_set != -1)
		{
			new flags = g_TimeSet[tm_set][1]
			new arg[128]
			
			if (flags & 1)
			{
				new players[32], pnum
				
				get_players(players, pnum, "c")
				
				for (new i = 0; i < pnum; i++)
				{
					setTimeText(arg, 127, tmlf, players[i])
					
					if (flags & 16)
						set_hudmessage(0, 255, 255, -1.0, 0.33, 0, 0.0, 0.9, 0.1, 0.5, -1)
					else
						set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1)
					
					show_hudmessage(players[i], "%s", arg)
				}
			}

			if (flags & 2)
			{
				setTimeVoice(arg, 127, flags, tmlf)
				client_cmd(0, "%s", arg)
			}
		}
	}
}

stock chat_color(const id, const input[], any:...)
{
	new count = 1, players[32]

	static msg[191]

	vformat(msg, 190, input, 3)

	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	replace_all(msg, 190, "!t2", "^0")

	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i])
				write_string(msg)
				message_end()
			}
		}
	}
}

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от EMOTO2.COM » 15 Окт 2023, 22:00

Благодаря за бързия отговор, но както вече казах трябва да се използва виртуална стойност от 2700 секунди а не да взема стойността от mp_timelimit която в моя случай е 0.
Изображение
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
Hurricane
Извън линия
Потребител
Потребител
Мнения: 193
Регистриран на: 04 Юни 2022, 21:18
Се отблагодари: 17 пъти
Получена благодарност: 71 пъти

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от Hurricane » 15 Окт 2023, 22:42

Demo:
Screenshot_42.png
Screenshot_42.png (98.3 KiB) Преглеждано 461 пъти
Screenshot_42.png
Screenshot_42.png (98.3 KiB) Преглеждано 461 пъти

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

#include <amxmodx>

new g_TimeSet[32][2]
new g_LastTime
new g_CountDown
new g_Switch

new iTime = 2700

#define iTime_ID 356563

public plugin_init()
{
	register_plugin("TimeLeft", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("timeleft.txt")
	register_cvar("amx_time_voice", "1")
	register_srvcmd("amx_time_display", "setDisplaying")
	register_clcmd("say timeleft", "sayTimeLeft", 0, "- displays timeleft")
	register_clcmd("say thetime", "sayTheTime", 0, "- displays current time")
	
	set_task(0.6, "timeRemain", 8648458, "", 0, "b")
}

public plugin_cfg()
{	
	set_task(1.0, "iTime_Countdown" , iTime_ID , _, _, "b");
}

public iTime_Countdown()
{
	iTime--
	
	if(iTime == 0)
	{
		if(task_exists(iTime_ID))
		{
			remove_task(iTime_ID)
		}
		
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_HANDLED;
}

public sayTheTime(id)
{
	if (get_cvar_num("amx_time_voice"))
	{
		new mhours[6], mmins[6], whours[32], wmins[32], wpm[6]
		
		get_time("%H", mhours, 5)
		get_time("%M", mmins, 5)
		
		new mins = str_to_num(mmins)
		new hrs = str_to_num(mhours)
		
		if (mins)
			num_to_word(mins, wmins, 31)
		else
			wmins[0] = 0
		
		if (hrs < 12)
			wpm = "am "
		else
		{
			if (hrs > 12) hrs -= 12
			wpm = "pm "
		}

		if (hrs) 
			num_to_word(hrs, whours, 31)
		else
			whours = "twelve "
		
		client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm)
	}
	
	new ctime[64]
	
	get_time("%H!y:!t%M!y:!t%S !yDate: !t%d!y/!t%m!y/!t%Y", ctime, 63)
	chat_color(0, "!g[EMOTO2.COM] !yCurrent time: !t%s", ctime)
	
	return PLUGIN_CONTINUE
}

public sayTimeLeft(id)
{
	new a = get_timeleft()
	
	if (get_cvar_float("mp_timelimit"))
	{
		
		if (get_cvar_num("amx_time_voice"))
		{
			new svoice[128]
			setTimeVoice(svoice, 127, 0, a)
			client_cmd(id, "%s", svoice)
		}
		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t%d!y:!t%02d !ysecunds before auto restart!", (iTime / 60), (iTime % 60))
	}
	else
		
		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t%d!y:!t%02d", (a / 60), (a % 60))
	
	return PLUGIN_CONTINUE
}

setTimeText(text[], len, tmlf, id)
{
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	if (secs == 0)
		format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE")
	else if (mins == 0)
		format(text, len, "Auto restart game in %d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
	else
		format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
}

setTimeVoice(text[], len, flags, tmlf)
{
	new temp[7][32]
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	for (new a = 0;a < 7;++a)
		temp[a][0] = 0

	if (secs > 0)
	{
		num_to_word(secs, temp[4], 31)
		
		if (!(flags & 8)) 
			temp[5] = "seconds "
	}
	
	if (mins > 59)
	{
		new hours = mins / 60
		
		num_to_word(hours, temp[0], 31)
		
		if (!(flags & 8))
			temp[1] = "hours "
		
		mins = mins % 60
	}
	
	if (mins > 0)
	{
		num_to_word(mins, temp[2], 31)
		
		if (!(flags & 8))
			temp[3] = "minutes "
	}
	
	if (!(flags & 4))
		temp[6] = "remaining "
	
	return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6])
}

findDispFormat(time)
{
	for (new i = 0; g_TimeSet[i][0]; ++i)
	{
		if (g_TimeSet[i][1] & 16)
		{
			if (g_TimeSet[i][0] > time)
			{
				if (!g_Switch)
				{
					g_CountDown = g_Switch = time
					remove_task(8648458)
					set_task(0.9, "timeRemain", 34543, "", 0, "b")
				}
				
				return i
			}
		}
		else if (g_TimeSet[i][0] == time)
		{
			return i
		}
	}
	
	return -1
}

public setDisplaying()
{
	new arg[32], flags[32], num[32]
	new argc = read_argc() - 1
	new i = 0

	while (i < argc && i < 32)
	{
		read_argv(i + 1, arg, 31)
		parse(arg, flags, 31, num, 31)
		
		g_TimeSet[i][0] = str_to_num(num)
		g_TimeSet[i][1] = read_flags(flags)
		
		i++
	}
	g_TimeSet[i][0] = 0
	
	return PLUGIN_HANDLED
}

public timeRemain(param[])
{
	new gmtm = get_timeleft()
	new tmlf = g_Switch ? --g_CountDown : gmtm
	new stimel[12]
	
	format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60)
	
	if (g_Switch && gmtm > g_Switch)
	{
		remove_task(34543)
		g_Switch = 0
		set_task(0.6, "timeRemain", 8648458, "", 0, "b")
		
		return
	}

	if (tmlf > 0 && g_LastTime != tmlf)
	{
		g_LastTime = tmlf
		new tm_set = findDispFormat(tmlf)
		
		if (tm_set != -1)
		{
			new flags = g_TimeSet[tm_set][1]
			new arg[128]
			
			if (flags & 1)
			{
				new players[32], pnum
				
				get_players(players, pnum, "c")
				
				for (new i = 0; i < pnum; i++)
				{
					setTimeText(arg, 127, tmlf, players[i])
					
					if (flags & 16)
						set_hudmessage(0, 255, 255, -1.0, 0.33, 0, 0.0, 0.9, 0.1, 0.5, -1)
					else
						set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1)
					
					show_hudmessage(players[i], "%s", arg)
				}
			}

			if (flags & 2)
			{
				setTimeVoice(arg, 127, flags, tmlf)
				client_cmd(0, "%s", arg)
			}
		}
	}
}

stock chat_color(const id, const input[], any:...)
{
	new count = 1, players[32]

	static msg[191]

	vformat(msg, 190, input, 3)

	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	replace_all(msg, 190, "!t2", "^0")

	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i])
				write_string(msg)
				message_end()
			}
		}
	}
}

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от EMOTO2.COM » 16 Окт 2023, 00:29

В момента отново ми показва съобщението 0:00 секунди на което изпратих снимка преди. Това което си дал забелязвам някой подобрения но съобщенията са разменени и гласовите съобщения за времето не си съвпадат. Когато напиша различна стойност от 0 на mp_timelimit, например 10 минути, тогава виждам съобщението от твоята снимка която си дал. Другото което е, че в чата изписва примерно 43:50 оставащи минути а ми пуска гласово съобщение за 8:50 оставащи минути примерно.

Когато правиш тестове, пускай сървъра със mp_timelimit 0 за да не става допълнително объркване.
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
TryAgain
Извън линия
Потребител
Потребител
Мнения: 182
Регистриран на: 25 Яну 2017, 16:59
Се отблагодари: 1 път
Получена благодарност: 26 пъти

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от TryAgain » 16 Окт 2023, 09:23

Няма да сменя картата след като изтече времето.
Нямам време трябва да се допише в public iTime_Countdown().

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

#include <amxmodx>

new g_TimeSet[32][2]
new g_LastTime
new g_CountDown
new g_Switch

new iTime = 2700

#define iTime_ID 356563

public plugin_init()
{
	register_plugin("TimeLeft", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("timeleft.txt")
	register_cvar("amx_time_voice", "1")
	register_srvcmd("amx_time_display", "setDisplaying")
	register_clcmd("say timeleft", "sayTimeLeft", 0, "- displays timeleft")
	register_clcmd("say thetime", "sayTheTime", 0, "- displays current time")
	
	set_task(0.6, "timeRemain", 8648458, "", 0, "b")
}

public plugin_cfg()
{	
	set_task(1.0, "iTime_Countdown" , iTime_ID , _, _, "b");
}

public iTime_Countdown()
{
	iTime--
	
	if(iTime == 0)
	{
		if(task_exists(iTime_ID))
		{
			remove_task(iTime_ID)
		}
		
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_HANDLED;
}

public sayTheTime(id)
{
	if (get_cvar_num("amx_time_voice"))
	{
		new mhours[6], mmins[6], whours[32], wmins[32], wpm[6]
		
		get_time("%H", mhours, 5)
		get_time("%M", mmins, 5)
		
		new mins = str_to_num(mmins)
		new hrs = str_to_num(mhours)
		
		if (mins)
			num_to_word(mins, wmins, 31)
		else
			wmins[0] = 0
		
		if (hrs < 12)
			wpm = "am "
		else
		{
			if (hrs > 12) hrs -= 12
			wpm = "pm "
		}

		if (hrs) 
			num_to_word(hrs, whours, 31)
		else
			whours = "twelve "
		
		client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm)
	}
	
	new ctime[64]
	
	get_time("%H!y:!t%M!y:!t%S !yDate: !t%d!y/!t%m!y/!t%Y", ctime, 63)
	chat_color(0, "!g[EMOTO2.COM] !yCurrent time: !t%s", ctime)
	
	return PLUGIN_CONTINUE
}

public sayTimeLeft(id)
{
	new a = get_timeleft()
	
	if (get_cvar_float("mp_timelimit"))
	{
		
		if (get_cvar_num("amx_time_voice"))
		{
			new svoice[128]
			setTimeVoice(svoice, 127, 0, a)
			client_cmd(id, "%s", svoice)
		}
		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t%d!y:!t%02d !ysecunds before auto restart!", (iTime / 60), (iTime % 60))
	}
	else
		chat_color(0, "!g[EMOTO2.COM] !yTime left: !t%d!y:!t%02d", (iTime / 60), (iTime % 60))
	
	return PLUGIN_CONTINUE
}

setTimeText(text[], len, tmlf, id)
{
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	if (secs == 0)
		format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE")
	else if (mins == 0)
		format(text, len, "Auto restart game in %d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
	else
		format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
}

setTimeVoice(text[], len, flags, tmlf)
{
	new temp[7][32]
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	for (new a = 0;a < 7;++a)
		temp[a][0] = 0

	if (secs > 0)
	{
		num_to_word(secs, temp[4], 31)
		
		if (!(flags & 8)) 
			temp[5] = "seconds "
	}
	
	if (mins > 59)
	{
		new hours = mins / 60
		
		num_to_word(hours, temp[0], 31)
		
		if (!(flags & 8))
			temp[1] = "hours "
		
		mins = mins % 60
	}
	
	if (mins > 0)
	{
		num_to_word(mins, temp[2], 31)
		
		if (!(flags & 8))
			temp[3] = "minutes "
	}
	
	if (!(flags & 4))
		temp[6] = "remaining "
	
	return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6])
}

findDispFormat(time)
{
	for (new i = 0; g_TimeSet[i][0]; ++i)
	{
		if (g_TimeSet[i][1] & 16)
		{
			if (g_TimeSet[i][0] > time)
			{
				if (!g_Switch)
				{
					g_CountDown = g_Switch = time
					remove_task(8648458)
					set_task(0.9, "timeRemain", 34543, "", 0, "b")
				}
				
				return i
			}
		}
		else if (g_TimeSet[i][0] == time)
		{
			return i
		}
	}
	
	return -1
}

public setDisplaying()
{
	new arg[32], flags[32], num[32]
	new argc = read_argc() - 1
	new i = 0

	while (i < argc && i < 32)
	{
		read_argv(i + 1, arg, 31)
		parse(arg, flags, 31, num, 31)
		
		g_TimeSet[i][0] = str_to_num(num)
		g_TimeSet[i][1] = read_flags(flags)
		
		i++
	}
	g_TimeSet[i][0] = 0
	
	return PLUGIN_HANDLED
}

public timeRemain(param[])
{
	new gmtm = get_timeleft()
	new tmlf = g_Switch ? --g_CountDown : gmtm
	new stimel[12]
	
	format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60)
	
	if (g_Switch && gmtm > g_Switch)
	{
		remove_task(34543)
		g_Switch = 0
		set_task(0.6, "timeRemain", 8648458, "", 0, "b")
		
		return
	}

	if (tmlf > 0 && g_LastTime != tmlf)
	{
		g_LastTime = tmlf
		new tm_set = findDispFormat(tmlf)
		
		if (tm_set != -1)
		{
			new flags = g_TimeSet[tm_set][1]
			new arg[128]
			
			if (flags & 1)
			{
				new players[32], pnum
				
				get_players(players, pnum, "c")
				
				for (new i = 0; i < pnum; i++)
				{
					setTimeText(arg, 127, tmlf, players[i])
					
					if (flags & 16)
						set_hudmessage(0, 255, 255, -1.0, 0.33, 0, 0.0, 0.9, 0.1, 0.5, -1)
					else
						set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1)
					
					show_hudmessage(players[i], "%s", arg)
				}
			}

			if (flags & 2)
			{
				setTimeVoice(arg, 127, flags, tmlf)
				client_cmd(0, "%s", arg)
			}
		}
	}
}

stock chat_color(const id, const input[], any:...)
{
	new count = 1, players[32]

	static msg[191]

	vformat(msg, 190, input, 3)

	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	replace_all(msg, 190, "!t2", "^0")

	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i])
				write_string(msg)
				message_end()
			}
		}
	}
}


Аватар
Hurricane
Извън линия
Потребител
Потребител
Мнения: 193
Регистриран на: 04 Юни 2022, 21:18
Се отблагодари: 17 пъти
Получена благодарност: 71 пъти

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от Hurricane » 16 Окт 2023, 13:13

Така би трябвало да работи и при теб !
До колкото разбрах от описанието на темата вече имаш друг плъгин които рестартира рунда, ако не е така пиши да го добавя в този плъгин
Screenshot_50.png
Screenshot_50.png (48.09 KiB) Преглеждано 406 пъти
Screenshot_50.png
Screenshot_50.png (48.09 KiB) Преглеждано 406 пъти

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

#include <amxmodx>

new g_TimeSet[32][2]
new g_LastTime
new g_CountDown
new g_Switch

new iTime = 2700

#define iTime_ID 356563

public plugin_init()
{
	register_plugin("TimeLeft", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("timeleft.txt")
	register_cvar("amx_time_voice", "1")
	register_srvcmd("amx_time_display", "setDisplaying")
	register_clcmd("say timeleft", "sayTimeLeft", 0, "- displays timeleft")
	register_clcmd("say thetime", "sayTheTime", 0, "- displays current time")
	
	set_task(0.6, "timeRemain", 8648458, "", 0, "b")
}

public plugin_cfg()
{	
	set_task(1.0, "iTime_Countdown" , iTime_ID , _, _, "b");
}

public iTime_Countdown()
{
	iTime--
	
	if(iTime == 0)
	{
		if(task_exists(iTime_ID))
		{
			remove_task(iTime_ID)
		}
		
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_HANDLED;
}

public sayTheTime(id)
{
	if (get_cvar_num("amx_time_voice"))
	{
		new mhours[6], mmins[6], whours[32], wmins[32], wpm[6]
		
		get_time("%H", mhours, 5)
		get_time("%M", mmins, 5)
		
		new mins = str_to_num(mmins)
		new hrs = str_to_num(mhours)
		
		if (mins)
			num_to_word(mins, wmins, 31)
		else
			wmins[0] = 0
		
		if (hrs < 12)
			wpm = "am "
		else
		{
			if (hrs > 12) hrs -= 12
			wpm = "pm "
		}

		if (hrs) 
			num_to_word(hrs, whours, 31)
		else
			whours = "twelve "
		
		client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm)
	}
	
	new ctime[64]
	
	get_time("%H!y:!t%M!y:!t%S !yDate: !t%d!y/!t%m!y/!t%Y", ctime, 63)
	chat_color(0, "!g[EMOTO2.COM] !yCurrent time: !t%s", ctime)
	
	return PLUGIN_CONTINUE
}

public sayTimeLeft(id)
{
	new a = get_timeleft()
	hook_TimeLeft(id)
	
	if (get_cvar_float("mp_timelimit"))
	{
		
		if (get_cvar_num("amx_time_voice"))
		{
			new svoice[128]
			setTimeVoice(svoice, 127, 0, a)
			client_cmd(id, "%s", svoice)
		}
		
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_CONTINUE
}

public hook_TimeLeft(id)
{
	chat_color(0, "!g[EMOTO2.COM] !yTime left: !g%d min !yand !g%02d !ysec before auto restart!", (iTime / 60), (iTime % 60))
}

setTimeText(text[], len, tmlf, id)
{
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	if (secs == 0)
		format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE")
	else if (mins == 0)
		format(text, len, "Auto restart game in %d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
	else
		format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
}

setTimeVoice(text[], len, flags, tmlf)
{
	new temp[7][32]
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	for (new a = 0;a < 7;++a)
		temp[a][0] = 0

	if (secs > 0)
	{
		num_to_word(secs, temp[4], 31)
		
		if (!(flags & 8)) 
			temp[5] = "seconds "
	}
	
	if (mins > 59)
	{
		new hours = mins / 60
		
		num_to_word(hours, temp[0], 31)
		
		if (!(flags & 8))
			temp[1] = "hours "
		
		mins = mins % 60
	}
	
	if (mins > 0)
	{
		num_to_word(mins, temp[2], 31)
		
		if (!(flags & 8))
			temp[3] = "minutes "
	}
	
	if (!(flags & 4))
		temp[6] = "remaining "
	
	return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6])
}

findDispFormat(time)
{
	for (new i = 0; g_TimeSet[i][0]; ++i)
	{
		if (g_TimeSet[i][1] & 16)
		{
			if (g_TimeSet[i][0] > time)
			{
				if (!g_Switch)
				{
					g_CountDown = g_Switch = time
					remove_task(8648458)
					set_task(0.9, "timeRemain", 34543, "", 0, "b")
				}
				
				return i
			}
		}
		else if (g_TimeSet[i][0] == time)
		{
			return i
		}
	}
	
	return -1
}

public setDisplaying()
{
	new arg[32], flags[32], num[32]
	new argc = read_argc() - 1
	new i = 0

	while (i < argc && i < 32)
	{
		read_argv(i + 1, arg, 31)
		parse(arg, flags, 31, num, 31)
		
		g_TimeSet[i][0] = str_to_num(num)
		g_TimeSet[i][1] = read_flags(flags)
		
		i++
	}
	g_TimeSet[i][0] = 0
	
	return PLUGIN_HANDLED
}

public timeRemain(param[])
{
	new gmtm = get_timeleft()
	new tmlf = g_Switch ? --g_CountDown : gmtm
	new stimel[12]
	
	format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60)
	
	if (g_Switch && gmtm > g_Switch)
	{
		remove_task(34543)
		g_Switch = 0
		set_task(0.6, "timeRemain", 8648458, "", 0, "b")
		
		return
	}

	if (tmlf > 0 && g_LastTime != tmlf)
	{
		g_LastTime = tmlf
		new tm_set = findDispFormat(tmlf)
		
		if (tm_set != -1)
		{
			new flags = g_TimeSet[tm_set][1]
			new arg[128]
			
			if (flags & 1)
			{
				new players[32], pnum
				
				get_players(players, pnum, "c")
				
				for (new i = 0; i < pnum; i++)
				{
					setTimeText(arg, 127, tmlf, players[i])
					
					if (flags & 16)
						set_hudmessage(0, 255, 255, -1.0, 0.33, 0, 0.0, 0.9, 0.1, 0.5, -1)
					else
						set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1)
					
					show_hudmessage(players[i], "%s", arg)
				}
			}

			if (flags & 2)
			{
				setTimeVoice(arg, 127, flags, tmlf)
				client_cmd(0, "%s", arg)
			}
		}
	}
}

stock chat_color(const id, const input[], any:...)
{
	new count = 1, players[32]

	static msg[191]

	vformat(msg, 190, input, 3)

	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	replace_all(msg, 190, "!t2", "^0")

	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i])
				write_string(msg)
				message_end()
			}
		}
	}
}

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от EMOTO2.COM » 16 Окт 2023, 19:36

Hurricane написа: 16 Окт 2023, 13:13 Така би трябвало да работи и при теб !
До колкото разбрах от описанието на темата вече имаш друг плъгин които рестартира рунда, ако не е така пиши да го добавя в този плъгин

Screenshot_50.png

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

#include <amxmodx>

new g_TimeSet[32][2]
new g_LastTime
new g_CountDown
new g_Switch

new iTime = 2700

#define iTime_ID 356563

public plugin_init()
{
	register_plugin("TimeLeft", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary("timeleft.txt")
	register_cvar("amx_time_voice", "1")
	register_srvcmd("amx_time_display", "setDisplaying")
	register_clcmd("say timeleft", "sayTimeLeft", 0, "- displays timeleft")
	register_clcmd("say thetime", "sayTheTime", 0, "- displays current time")
	
	set_task(0.6, "timeRemain", 8648458, "", 0, "b")
}

public plugin_cfg()
{	
	set_task(1.0, "iTime_Countdown" , iTime_ID , _, _, "b");
}

public iTime_Countdown()
{
	iTime--
	
	if(iTime == 0)
	{
		if(task_exists(iTime_ID))
		{
			remove_task(iTime_ID)
		}
		
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_HANDLED;
}

public sayTheTime(id)
{
	if (get_cvar_num("amx_time_voice"))
	{
		new mhours[6], mmins[6], whours[32], wmins[32], wpm[6]
		
		get_time("%H", mhours, 5)
		get_time("%M", mmins, 5)
		
		new mins = str_to_num(mmins)
		new hrs = str_to_num(mhours)
		
		if (mins)
			num_to_word(mins, wmins, 31)
		else
			wmins[0] = 0
		
		if (hrs < 12)
			wpm = "am "
		else
		{
			if (hrs > 12) hrs -= 12
			wpm = "pm "
		}

		if (hrs) 
			num_to_word(hrs, whours, 31)
		else
			whours = "twelve "
		
		client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm)
	}
	
	new ctime[64]
	
	get_time("%H!y:!t%M!y:!t%S !yDate: !t%d!y/!t%m!y/!t%Y", ctime, 63)
	chat_color(0, "!g[EMOTO2.COM] !yCurrent time: !t%s", ctime)
	
	return PLUGIN_CONTINUE
}

public sayTimeLeft(id)
{
	new a = get_timeleft()
	hook_TimeLeft(id)
	
	if (get_cvar_float("mp_timelimit"))
	{
		
		if (get_cvar_num("amx_time_voice"))
		{
			new svoice[128]
			setTimeVoice(svoice, 127, 0, a)
			client_cmd(id, "%s", svoice)
		}
		
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_CONTINUE
}

public hook_TimeLeft(id)
{
	chat_color(0, "!g[EMOTO2.COM] !yTime left: !g%d min !yand !g%02d !ysec before auto restart!", (iTime / 60), (iTime % 60))
}

setTimeText(text[], len, tmlf, id)
{
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	if (secs == 0)
		format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE")
	else if (mins == 0)
		format(text, len, "Auto restart game in %d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
	else
		format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
}

setTimeVoice(text[], len, flags, tmlf)
{
	new temp[7][32]
	new secs = tmlf % 60
	new mins = tmlf / 60
	
	for (new a = 0;a < 7;++a)
		temp[a][0] = 0

	if (secs > 0)
	{
		num_to_word(secs, temp[4], 31)
		
		if (!(flags & 8)) 
			temp[5] = "seconds "
	}
	
	if (mins > 59)
	{
		new hours = mins / 60
		
		num_to_word(hours, temp[0], 31)
		
		if (!(flags & 8))
			temp[1] = "hours "
		
		mins = mins % 60
	}
	
	if (mins > 0)
	{
		num_to_word(mins, temp[2], 31)
		
		if (!(flags & 8))
			temp[3] = "minutes "
	}
	
	if (!(flags & 4))
		temp[6] = "remaining "
	
	return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6])
}

findDispFormat(time)
{
	for (new i = 0; g_TimeSet[i][0]; ++i)
	{
		if (g_TimeSet[i][1] & 16)
		{
			if (g_TimeSet[i][0] > time)
			{
				if (!g_Switch)
				{
					g_CountDown = g_Switch = time
					remove_task(8648458)
					set_task(0.9, "timeRemain", 34543, "", 0, "b")
				}
				
				return i
			}
		}
		else if (g_TimeSet[i][0] == time)
		{
			return i
		}
	}
	
	return -1
}

public setDisplaying()
{
	new arg[32], flags[32], num[32]
	new argc = read_argc() - 1
	new i = 0

	while (i < argc && i < 32)
	{
		read_argv(i + 1, arg, 31)
		parse(arg, flags, 31, num, 31)
		
		g_TimeSet[i][0] = str_to_num(num)
		g_TimeSet[i][1] = read_flags(flags)
		
		i++
	}
	g_TimeSet[i][0] = 0
	
	return PLUGIN_HANDLED
}

public timeRemain(param[])
{
	new gmtm = get_timeleft()
	new tmlf = g_Switch ? --g_CountDown : gmtm
	new stimel[12]
	
	format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60)
	
	if (g_Switch && gmtm > g_Switch)
	{
		remove_task(34543)
		g_Switch = 0
		set_task(0.6, "timeRemain", 8648458, "", 0, "b")
		
		return
	}

	if (tmlf > 0 && g_LastTime != tmlf)
	{
		g_LastTime = tmlf
		new tm_set = findDispFormat(tmlf)
		
		if (tm_set != -1)
		{
			new flags = g_TimeSet[tm_set][1]
			new arg[128]
			
			if (flags & 1)
			{
				new players[32], pnum
				
				get_players(players, pnum, "c")
				
				for (new i = 0; i < pnum; i++)
				{
					setTimeText(arg, 127, tmlf, players[i])
					
					if (flags & 16)
						set_hudmessage(0, 255, 255, -1.0, 0.33, 0, 0.0, 0.9, 0.1, 0.5, -1)
					else
						set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1)
					
					show_hudmessage(players[i], "%s", arg)
				}
			}

			if (flags & 2)
			{
				setTimeVoice(arg, 127, flags, tmlf)
				client_cmd(0, "%s", arg)
			}
		}
	}
}

stock chat_color(const id, const input[], any:...)
{
	new count = 1, players[32]

	static msg[191]

	vformat(msg, 190, input, 3)

	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!t", "^3")
	replace_all(msg, 190, "!t2", "^0")

	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i])
				write_string(msg)
				message_end()
			}
		}
	}
}
Плугин за автоматичен рестарт имам и няма нужда да се слага и тук. Сега е още една идея по-добре от предишните тествания, но все още има какво да се пооправи.
1. След изтичане на зададеното време на 8 ред от кода, плугина за рестарт е направил рестарта но времето си стои 0:00 а реално трябва да започва отначало да отброява.
Изображение
2. В момента няма никакви звуци за оставащото време при timeleft или автоматичното уведомяване (звук + съобщение на 3, 5, 10 и тн. минути) от amx_time_display/timeRemain.
Присъедини се към най-доброто място за игра!
https://emoto2.com/

Аватар
Huehue
Извън линия
Модератор
Модератор
Мнения: 352
Регистриран на: 16 Яну 2017, 23:42
Местоположение: София
Се отблагодари: 7 пъти
Получена благодарност: 171 пъти
Обратна връзка:

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от Huehue » 16 Окт 2023, 19:46

Качи плъгина за автоматичен рестарт за да се направи взимане на времето от там.

Ако не искаш да го споделяш си губите времето, след като на две места отброявате различни стойности и искате да се напасват..
LOYAL TO THE OATH OF OMERTА̀

Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..

My GitHub Profile
GitHub

My AMXX Includes Collection
AMXX Include Libraries

My Steam Profile (from SteamDB)
  • Value: 4179€
  • Games owned: 1855
  • Games played: 754 (40%)
  • Hours on record: 4,994.9h

Аватар
EMOTO2.COM
Извън линия
Потребител
Потребител
Мнения: 345
Регистриран на: 11 Яну 2018, 17:02
Се отблагодари: 26 пъти
Получена благодарност: 31 пъти
Обратна връзка:

Re: Timeleft със собствена стойност и рестарт на всеки 45 минути

Мнение от EMOTO2.COM » 16 Окт 2023, 20:53

Времето е едно и също в двата плугина а именно 2700 секунди (45 минути). Според мен може да се направи timeleft-а да работи както трябва нищо, че няма да има никаква връзка с плугина за рестарт. Нямам проблем да дам кода за автоматичния рестарт но свързването им един между друг ще е по-сложно но пък ще е най-правилния начин да се направи.
Последно промяна от EMOTO2.COM на 20 Окт 2023, 13:46, променено общо 1 път.
Присъедини се към най-доброто място за игра!
https://emoto2.com/

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

Обратно към “Заявки за плъгини”

Кой е на линия

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