Голосование на сервере

ALЬTAIR

Участник
Сообщения
335
Реакции
160
Есть ли такой плагин "голосование на сервере" то есть когда игрок зашёл на сервер,то у него с лева появится меню с голосованием,например:

Как вам сервер?

1.Отличный

1.Пойдёт

2.Не очень

Голосование учитывалось по стим ид,то есть если игрок 1 раз проголосовал,то при следующем подключении меню у него не было,а результат голосования записывался в отдельный файл.
 
Последнее редактирование:

SHAREN

Servers-Info.Ru
Сообщения
232
Реакции
32
Оффтоп
А я бы тебе посоветовал бы поставить Map Rate RELOADED, он работает так же как ты написал, только оценивает карту, а не сервер
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Один я не пойму, зачем проводить ТАКОЕ голосование ("как вам сервер?") когда игрок ТОЛЬКО ЗАШЕЛ на сервер? Народ либо будет тыкать 1 потому что пофиг, либо из троллинга 4, кто посмотрит.
А голосование то будет ПРИ ПЕРВОМ ЗАХОДЕ
 

ALЬTAIR

Участник
Сообщения
335
Реакции
160
Один я не пойму, зачем проводить ТАКОЕ голосование ("как вам сервер?") когда игрок ТОЛЬКО ЗАШЕЛ на сервер? Народ либо будет тыкать 1 потому что пофиг, либо из троллинга 4, кто посмотрит.
А голосование то будет ПРИ ПЕРВОМ ЗАХОДЕ
Это был всего лишь пример!
 

ALЬTAIR

Участник
Сообщения
335
Реакции
160
Вот тебе тоже пример:
PHP:
//http://world-source.ru/
 #pragma semicolon 1 
 #include <sourcemod> 

 new Handle:h_Menu, Handle:h_Timer, kick_vots[MAXPLAYERS+1], timer_sec, all_votes; 

 public OnPluginStart() 
 { 
     HookEvent("round_start", Round_Start, EventHookMode_PostNoCopy); 
 } 

 public Round_Start(Handle:event, const String:name[], bool:dontBroadcast) 
 { 
     // Если вдруг начался новый раунд, но наш таймер + меню активны, останавливаем их. 
     // Например, раунд быстро закончился, или был рестарт. 
     if (h_Timer != INVALID_HANDLE) 
     { 
         KillTimer(h_Timer); 
         h_Timer = INVALID_HANDLE; 
     } 
     if (h_Menu != INVALID_HANDLE) CloseHandle(h_Menu); 
     h_Menu = CreateMenu(Select_Func); 
     SetMenuTitle(h_Menu, "Кого кикнуть?\n \n"); 
     SetMenuExitButton(h_Menu, false); 
     decl String:StR_Id[15], String:StR_Name[MAX_NAME_LENGTH]; 
     new players = 0; 
     for (new i = 1; i <= MaxClients; i++) 
     { 
         kick_vots[i] = 0; // очищаем кол-во голосов за кик игрока (i = его индекс) 
         if (IsClientInGame(i)) 
         { 
             // получаем userid игрока и делаем его строкой, чтобы добавить в меню 
             IntToString(GetClientUserId(i), StR_Id, sizeof(StR_Id)); 
             GetClientName(i, StR_Name, sizeof(StR_Name)); 
             AddMenuItem(h_Menu, StR_Id, StR_Name); 
             players += 1; 
         } 
     } 
     // если игроков на сервере > 0 
     if (players > 0) 
     { 
         // показываем игрокам созданное меню и запускаем таймер 
         for (new i = 1; i <= MaxClients; i++) 
         { 
             if (IsClientInGame(i)) DisplayMenu(h_Menu, i, 10); 
         } 
         all_votes = 0; // сколько всего было голосов 
         timer_sec = 15; // время голосования в сек. 
         h_Timer = CreateTimer(1.0, Timer_Func, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); 
     } 
     else 
     { 
         // если нет игроков, удаляем созданное меню 
         CloseHandle(h_Menu); 
         h_Menu = INVALID_HANDLE; 
     } 
 } 

 public Select_Func(Handle:menu, MenuAction:action, i, option) 
 { 
     if (action == MenuAction_Select) 
     { 
         decl String:StR_Id[15]; 
         GetMenuItem(menu, option, StR_Id, sizeof(StR_Id)); 
         new target_index = GetClientOfUserId(StringToInt(StR_Id)); 
         if (target_index > 0) 
         { 
             all_votes += 1; 
             kick_vots[target_index] += 1; 
             PrintToChatAll("%N выбрал игрока %N", i, target_index); 
         } 
         else PrintToChat(i, "Игрок не найден"); 
     } 
 } 

 public Action:Timer_Func(Handle:timer, any:x) 
 { 
     timer_sec -= 1; 
     if (timer_sec > 0) 
     { 
         PrintHintTextToAll("До завершения голосования:\n< %d сек >", timer_sec); 
         return Plugin_Continue; 
     } 
     // Время истекло, голосование окончено 
     h_Timer = INVALID_HANDLE; 
     if (h_Menu != INVALID_HANDLE) 
     { 
         CloseHandle(h_Menu); 
         h_Menu = INVALID_HANDLE; 
     } 
     PrintHintTextToAll("Голосование завершено (%d голосов)", all_votes); 
     if (all_votes < 1) 
     { 
         return Plugin_Stop; 
     } 
     // Находим игрока, за которого больше всего проголосовали 
     new vots = 0, target_index = 0; 
     for (new i = 1; i <= MaxClients; i++) 
     { 
         if (kick_vots[i] > vots) 
         { 
             vots = kick_vots[i]; 
             target_index = i; 
         } 
     } 
     if (target_index > 0 && IsClientInGame(target_index)) 
     { 
         PrintToChatAll("Игрок %N кикнут", target_index); 
         KickClient(target_index, "бб"); 
     } 
     else PrintToChatAll("Игрок не найден"); 
     return Plugin_Stop; 
 }
Чушь!
 
Сверху Снизу