Средноаритметично работещ "timelimitvote".

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

Средноаритметично работещ "timelimitvote".

Мнение от iv69 » 15 Авг 2018, 13:26

Здравейте,
Трябва ми timelimitvote(за DeatMatch сървър с ботове) за продължителност на всяка карта, подобен на посочения по-долу от мен, но да "сумира" избраните от всеки играч "минути", и да "вади" средноаритметичната стойност на всичките вотове за продължителност на картата.
За да стане малко по-ясно ще дам един малък пример:
Ако има 6 живи играча които гласуват например така
-1 за 40мин - 1х40 = 40
-2 за 30м - 2х30 = 60
-2 за 20м - 2х20 = 40
-1 за 15м - 1х15 = 15
Общо = 155мин от 6 играча;
Средното е :
155:6=25.83...мин т.е. = 25мин продължителност на картата(ако може да се приемат само целите мин за валидни, ако е по-лесно...)

Просто колкото са гласувалите , само техните стойности да се пресмятат..ако гласува само един - колкто е гласувал - толкова ...
Подобен плъгин съм виждал някога много отдавна бе сега не мога да го открия, и май не бе много изпипан.
Прилагам код, който според мен не работи, но просто да служи като "основа" за онова което което искам да е като времена и да виждат играчите, и как да гласуват...

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

#include <amxmodx>
#include <amxmisc>

#define PLUGIN	"TimeLimit vote"
#define AUTHOR	"many"
#define VERSION	"1.0.0"

new choises[6]
new Float:g_timelimit

public plugin_init() 
{
	register_plugin("PLUGIN", "VERSION", "AUTHOR")
	set_task(60.0, "start_vote");
}

public start_vote(id)
{	
	new menu = menu_create("\rChoose timelimit for this map?", "menu_handler")
	menu_additem(menu, "\w15 minutes", "1", 0)
	menu_additem(menu, "\w20 minutes", "2", 0)
	menu_additem(menu, "\w25 minutes", "3", 0)
	menu_additem(menu, "\w30 minutes", "4", 0)
	menu_additem(menu, "\w40 minutes", "5", 0)
	menu_addblank(menu, 0)
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	
	new players[32], inum
	get_players(players, inum, "ch")
	for(new i = 0; i < inum; i++)
	{
		menu_display(players[i], menu, 0)
	}
	
	set_task(22.0, "finish_vote")
	
	choises[1] = choises[2] = choises[3] = choises[4] = choises[5] = 0
	
	return 1
}

public menu_handler(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_cancel(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], name[32]
	new access, callback
	
	menu_item_getinfo(menu, item, access, data, 5, _, _, callback)
	
	new key = str_to_num(data)
	get_user_name(id, name, 31)
	
	switch (key) 
	{
		case 1: 
		{
			client_print (0, print_chat, "[AMXX] %s voted for 15 minutes", name);
		}
		case 2:
		{
			client_print (0, print_chat, "[AMXX] %s voted for 20 minutes", name);
		}
		case 3:
		{
			client_print (0, print_chat, "[AMXX] %s voted for 25 minutes", name);
		}
		case 4:
		{
			client_print (0, print_chat, "[AMXX] %s voted for 30 minutes", name);
		}
		case 5:
		{
			client_print (0, print_chat, "[AMXX] %s voted for 40 minutes", name);
		}
	}
	
	++choises[key]
	
	menu_cancel(id)
	return PLUGIN_HANDLED
}

public finish_vote()
{
	g_timelimit = get_cvar_float("mp_timelimit")
	
	if(choises[1] > choises[2] && choises[1] > choises[3] && choises[1] > choises[4] && choises[1] > choises[5])
	{
		client_print(0, print_chat, "[AMXX] Option ^"15 minutes^" won with %d votes", choises[1])
		server_cmd("mp_timelimit 5");
	}
	
	else if(choises[2] > choises[1] && choises[2] > choises[3] && choises[2] > choises[4] && choises[2] > choises[5])
	{
		client_print(0, print_chat, "[AMXX] Option ^"20 minutes^" won with %d votes", choises[2])
		server_cmd("mp_timelimit 10");
	}
	else if(choises[3] > choises[1] && choises[3] > choises[2] && choises[3] > choises[4] && choises[3] > choises[5])
	{
		client_print(0, print_chat, "[AMXX] Option ^"25 minutes^" won with %d votes", choises[3])
		server_cmd("mp_timelimit 15");
	}
	
	else if(choises[4] > choises[1] && choises[4] > choises[2] && choises[4] > choises[3] && choises[4] > choises[5])
	{
		client_print(0, print_chat, "[AMXX] Option ^"30 minutes^" won with %d votes", choises[4])
		server_cmd("mp_timelimit 20");
	}
	
	else if(choises[5] > choises[1] && choises[5] > choises[2] && choises[5] > choises[3] && choises[5] > choises[4])
	{
		client_print(0, print_chat, "[AMXX] Option ^"40 minutes^" won with %d votes", choises[5])
		server_cmd("mp_timelimit 25");
	}
}  

public plugin_end() 
{
	set_cvar_float("mp_timelimit", g_timelimit)
}
Благодаря !

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

Средноаритметично работещ "timelimitvote".

Мнение от iv69 » 15 Авг 2018, 21:25

поразрових се , и... намерих отговора тук в сайта :
viewtopic.php?t=3354

Заключете моля ви !

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

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

Кой е на линия

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