Трябва ми 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)
}