Плъгин да завърта на определено време най-добрите играчи в сървъра

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Dvstoyanov89
Извън линия
Потребител
Потребител
Мнения: 41
Регистриран на: 11 Май 2019, 14:04
Се отблагодари: 11 пъти
Получена благодарност: 6 пъти

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от Dvstoyanov89 » 24 Май 2019, 17:21

Здравейте, преди време бях видял във един сървър подобен плъгин, но не мога да го намеря. Идеята е следната, примерно на 5-10 минути да смени 1вите играчи в TABSCORE от Т на CT и обратно.
Поздрави!

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

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от OciXCrom » 25 Май 2019, 00:16

Cvar: sbp_swap_delay = 600 -- през колко секунди да сменя играчите.

Ще смени първия играч от всеки отбор според броя на убийства.
Ако има повече от един човек със същия брой на убийства, ще избере този с най-малкия брой на умирания.

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

#include <amxmodx>
#include <cromchat>
#include <cstrike>

new g_pSwapDelay

public plugin_init()
{
	register_plugin("Swap Best Players", "1.0", "OciXCrom")
	g_pSwapDelay = register_cvar("sbp_swap_delay", "600")
	CC_SetPrefix("&x04[SBP]")
}

public plugin_cfg()
{
	set_task(get_pcvar_float(g_pSwapDelay), "swap_best_players", .flags = "b")
}

public swap_best_players()
{
	new iPlayers[32], id[2], iPnum
	get_players(iPlayers, iPnum, "e", "CT")

	if(!iPnum)
	{
		return
	}

	SortCustom1D(iPlayers, iPnum, "sort_players")
	id[0] = iPlayers[0]

	get_players(iPlayers, iPnum, "e", "TERRORIST")

	if(!iPnum)
	{
		return
	}

	SortCustom1D(iPlayers, iPnum, "sort_players")
	id[1] = iPlayers[0]

	cs_set_user_team(id[0], CS_TEAM_T)
	cs_set_user_team(id[1], CS_TEAM_CT)

	new szName[2][32]
	get_user_name(id[0], szName[0], charsmax(szName[]))
	get_user_name(id[1], szName[1], charsmax(szName[]))

	CC_SendMessage(0, "&x03%s &x01and &x03%s &x01have swapped teams!", szName[0], szName[1])
}

public sort_players(id1, id2)
{
	if(get_user_frags(id1) > get_user_frags(id2))
	{
		return -1
	}
	else if(get_user_frags(id1) < get_user_frags(id2))
	{
		return 1
	}
	else
	{
		if(cs_get_user_deaths(id1) < cs_get_user_deaths(id2))
		{
			return -1
		}
		else if(cs_get_user_deaths(id1) > cs_get_user_deaths(id2))
		{
			return 1
		}
	}

	return 0
}

Аватар
Dvstoyanov89
Извън линия
Потребител
Потребител
Мнения: 41
Регистриран на: 11 Май 2019, 14:04
Се отблагодари: 11 пъти
Получена благодарност: 6 пъти

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от Dvstoyanov89 » 25 Май 2019, 10:05

Всичко е точно, но как може да се оправи това, че сменя играчите, но си ме оставя във противниковата база. Примерно мести ме терорист, но ме спаунва във базата на CT

Друг проблем е, че сменя играчите само 1 път, след това през целия мап плъгина е неактивен.

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

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от OciXCrom » 25 Май 2019, 13:43

Искаш да respawn-ва всеки път ли? Защото смяната може да се случи и по време на рунд.

Сигурен ли си, че става само един път? Ако да, има ли някакви грешки в конзолата?

Имай предвид, че смяната няма да се случи ако няма поне един играч във всеки отбор.

Аватар
Dvstoyanov89
Извън линия
Потребител
Потребител
Мнения: 41
Регистриран на: 11 Май 2019, 14:04
Се отблагодари: 11 пъти
Получена благодарност: 6 пъти

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от Dvstoyanov89 » 25 Май 2019, 14:40

Искам да кажа, че когато започне нов рунд, тогава ни разменя. До тук ок, но аз съм вече във противниковата база и ги избивам изненадващо :D

Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от iv69 » 25 Май 2019, 17:15

Dvstoyanov89 написа: 25 Май 2019, 14:40 Искам да кажа, че когато започне нов рунд, тогава ни разменя. До тук ок, но аз съм вече във противниковата база и ги избивам изненадващо :D
Може би е от значение и дали сървъра е Classic или Respawn ??? При втория случай рунда започва малко по-различно...

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

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от OciXCrom » 25 Май 2019, 21:40

Ако искаш, мога да го направя да ги разменя в края на рунда. Обаче ако сървърът е с respawn, по-добре е да се прероди играчът.

Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от iv69 » 25 Май 2019, 22:33

OciXCrom написа: 25 Май 2019, 21:40 Ако искаш, мога да го направя да ги разменя в края на рунда. Обаче ако сървърът е с respawn, по-добре е да се прероди играчът.
Така, как обясни човека на мене ми прозвуча, че сървъра му е Classic (.. но аз съм вече във противниковата база...) или пък е Respawn, но е с spawnmode = none , тоест се прераждат само в базите си. При мен е с spawnmode = preset , тоест използвам си predefined spawns , но понякога като сложа нов плъгин и само сменя картата а не ресвам сървъра, нещо ми се бъгва и започват да се раждат в базите си... и става интересното... с активиран FFA :). Не е изключено и на него нещо да се е бъгнало?

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

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от OciXCrom » 26 Май 2019, 00:25

Ето за двамата вариант, пък изберете си кой ще ползвате.

Cvar: sbp_respawn:
  • ако е сложено на 1, ще замени играчите веднага когато минат дадените секунди и ще ги съживи в новите им бази;
  • ако е сложено на 0, ще изчака до края на рунда да замени играчите, обаче няма да ги съживи.

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

#include <amxmodx>
#include <cromchat>
#include <cstrike>
#include <hamsandwich>

new bool:g_bShouldSwap, g_pSwapDelay, g_pRespawn

public plugin_init()
{
	register_plugin("Swap Best Players", "1.1", "OciXCrom")
	register_logevent("OnRoundEnd", 2, "1=Round_End")
	g_pSwapDelay = register_cvar("sbp_swap_delay", "600")
	g_pRespawn = register_cvar("sbp_respawn", "1")
	CC_SetPrefix("&x04[SBP]")
}

public plugin_cfg()
{
	set_task(get_pcvar_float(g_pSwapDelay), "time_to_swap", .flags = "b")
}

public time_to_swap()
{
	if(get_pcvar_num(g_pRespawn) == 1)
	{
		swap_best_players(true)
	}
	else
	{
		CC_SendMessage(0, "The game will attempt to swap the best players when the &x03round ends&x01.")
		g_bShouldSwap = true
	}
}

public OnRoundEnd()
{
	if(g_bShouldSwap)
	{
		swap_best_players(false)
		g_bShouldSwap = false
	}
}

public swap_best_players(bool:bRespawn)
{
	new iPlayers[32], id[2], iPnum
	get_players(iPlayers, iPnum, "e", "CT")

	if(!iPnum)
	{
		return
	}

	SortCustom1D(iPlayers, iPnum, "sort_players")
	id[0] = iPlayers[0]

	get_players(iPlayers, iPnum, "e", "TERRORIST")

	if(!iPnum)
	{
		return
	}

	SortCustom1D(iPlayers, iPnum, "sort_players")
	id[1] = iPlayers[0]

	cs_set_user_team(id[0], CS_TEAM_T)
	cs_set_user_team(id[1], CS_TEAM_CT)

	if(bRespawn)
	{
		ExecuteHam(Ham_CS_RoundRespawn, id[0])
		ExecuteHam(Ham_CS_RoundRespawn, id[1])
	}

	new szName[2][32]
	get_user_name(id[0], szName[0], charsmax(szName[]))
	get_user_name(id[1], szName[1], charsmax(szName[]))

	CC_SendMessage(0, "&x03%s &x01and &x03%s &x01have swapped teams!", szName[0], szName[1])
}

public sort_players(id1, id2)
{
	if(get_user_frags(id1) > get_user_frags(id2))
	{
		return -1
	}
	else if(get_user_frags(id1) < get_user_frags(id2))
	{
		return 1
	}
	else
	{
		if(cs_get_user_deaths(id1) < cs_get_user_deaths(id2))
		{
			return -1
		}
		else if(cs_get_user_deaths(id1) > cs_get_user_deaths(id2))
		{
			return 1
		}
	}

	CC_SendMessage(0, "Unable to swap players because &x032 or more &x01of them have the exact same score.")
	return 0
}

Аватар
Dvstoyanov89
Извън линия
Потребител
Потребител
Мнения: 41
Регистриран на: 11 Май 2019, 14:04
Се отблагодари: 11 пъти
Получена благодарност: 6 пъти

Плъгин да завърта на определено време най-добрите играчи в сървъра

Мнение от Dvstoyanov89 » 26 Май 2019, 12:49

При мен всичко е точно. Благодаря :lock:

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

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

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 15 госта