Плагин votechat

AleksandrM3

Участник
Сообщения
137
Реакции
2
Добрый день, есть замечательный плагин Players Votes там есть такие команды как: say votekick, voteban, votemap и votemute для использования игроками, а возможно изменить данный плагин чтобы игроки в отсутствие админа могли включить общий Голосовой чат, например командой votechat. Или может уже есть отдельный плагин на данную команду?
за ранее спасибо.
 
Последнее редактирование:

AleksandrM3

Участник
Сообщения
137
Реакции
2

Конечно спасибо но я в скриптах и их редактировании не особо понимаю, не подскажите что от туда взять и куда вставить чтобы нормально было?
В идеале конечно отдельный плагин на эту команду, но и на этом спасибо. Буду пробовать разбираться
 
Последнее редактирование:

BatyaMedic

Участник
Сообщения
766
Реакции
127
Конечно спасибо но я в скриптах и их редактировании не особо понимаю, не подскажите что от туда взять и куда вставить чтобы нормально было?
В идеале конечно отдельный плагин на эту команду, но и на этом спасибо. Буду пробовать разбираться
Оффтоп
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Там всё готово, ставь и проверяй votealltalk
 

AleksandrM3

Участник
Сообщения
137
Реакции
2
Geck0, TolikCorp, Ладно вам, налетели как галки, я еще молодой серверо-держатель, неопытный, вот глупые вопросы и спрашиваю.
Ну раз уж я затупил, то скажите мне куда там эти файлы вставлять чтобы правильно было, а то у меня сервер на myarene и плагины там устанавливаются автоматически нажатием одной кнопки.
 

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
/пользователь/путь_к_серверу/мод/addons/sourcemod/
.smx — в папку plugins/
.phrases.txt — translations/
.cfg — configs/

На странице с плагином это написано: http://savepic.su/4444470.png
 

AleksandrM3

Участник
Сообщения
137
Реакции
2
вот спасибо!

Добавлено через 52 минуты
TolikCorp, Там не только votealltalk, там по сути готовая админка для любого игрока на сервере, про что я раньше и говорил (что мне нужна лишь часть этого плагина) там и кик и бан, продление и смена карты, а мне нужен только votealltalk, и в этом плагине все сделано в виде голосования, т.е любой игрок один раз пишет команду и сразу запускается голосование на включение какой то из команд (это совсем не удобно).
Мне все это не нужно, мне нужна только одна команда на запуск только голосования на включение общего голосового чата, когда 50% игроков на сервера напишет команду votealltalk
 
Последнее редактирование:

TolikCorp

Участник
Сообщения
874
Реакции
334
Есть вариант, что без голосовалки, ТУПО СОБИРАЮТСЯ ПОДПИСИ ИГРОКОВ командой и потом он включается.

PHP:
new IsPlayerVoted[MAXPLAYERS+1] = {0, ...};
new Handle:g_hSvAlltalk;
public OnPluginStart()
{
    RegConsoleCmd("sm_votealltalk", votealltalk);
    g_hSvAlltalk = FindConVar("sv_alltalk");
}
public Action:votealltalk(client, args)
{
    if(client && IsClientInGame(client))
    {
        IsPlayerVoted[client] = !IsPlayerVoted[client];
        new votes;
        new client_count;
        for(new i = 1; i <= MaxClients; i++)
            if(IsClientInGame(i) && !IsFakeClient(i))
            {
                votes += IsPlayerVoted[i];
                client_count++;
            }
        if(votes/client_count*100 > 40)
            SetConVarBool(g_hSvAlltalk, true);
        else
            SetConVarBool(g_hSvAlltalk, false);
        PrintToChatAll("[VoteAllTalk] %N %s за AllTalk! (%d/%d)", client, IsPlayerVoted[client] ? "проголосовал" : "забрал свой голос", votes, votes/client_count);
    }
    return Plugin_Handled;
}    
public OnClientConnected(client)
    IsPlayerVoted[client] = 0;
    
public OnClientDisconnect(client)
    IsPlayerVoted[client] = 0;

Критики, будьте помягче :) Набросал кодик, проверяй.
Приложил скомпилированный, вдруг не знаешь как это делается)
 

Вложения

  • votealltalk.smx
    3.5 КБ · Просмотры: 7
Последнее редактирование:

AleksandrM3

Участник
Сообщения
137
Реакции
2
Есть вариант, что без голосовалки, ТУПО СОБИРАЮТСЯ ПОДПИСИ ИГРОКОВ командой и потом он включается.



Критики, будьте помягче :) Набросал кодик, проверяй.
Приложил скомпилированный, вдруг не знаешь как это делается)

Попробовал работает, но немножко не так, у тебя получается надо в консоле прописывать sm_votealltalk, если админ вводит, то сразу выскакивает голосование на включение общего чата, если игроки, то начинают копиться голоса на включение, сколько надо игроков на это не знаю, сервер полный, не все делают то что надо.
В идеале надо чтобы не в консоле игроки прописывали, а в чате просто votealltalk ( аналогично командам rtv, votemap, и т.д) , да и админов можно исключить, они и так через админку могут включить его. А так и за это спасибо.
 

TolikCorp

Участник
Сообщения
874
Реакции
334
!votealltalk в чат)
Можно еще одну консольную команду зарегать sm_alltalk
И в чате использовать как !alltalk
RegConsoleCmd("sm_alltalk", votealltalk);
 

AleksandrM3

Участник
Сообщения
137
Реакции
2
!votealltalk в чат)
Можно еще одну консольную команду зарегать sm_alltalk
И в чате использовать как !alltalk
RegConsoleCmd("sm_alltalk", votealltalk);

сделай если не сложно. а то длинные слова, народ на сервере не всегда воспринимает)
 

TolikCorp

Участник
Сообщения
874
Реакции
334
PHP:
new IsPlayerVoted[MAXPLAYERS+1] = {0, ...}; 
new Handle:g_hSvAlltalk; 
public OnPluginStart() 
{ 
    RegConsoleCmd("sm_alltalk", votealltalk);
    RegConsoleCmd("sm_at", votealltalk);
    g_hSvAlltalk = FindConVar("sv_alltalk"); 
} 
public Action:votealltalk(client, args) 
{ 
    if(client && IsClientInGame(client)) 
    { 
        IsPlayerVoted[client] = !IsPlayerVoted[client]; 
        new votes; 
        new client_count; 
        for(new i = 1; i <= MaxClients; i++) 
            if(IsClientInGame(i) && !IsFakeClient(i)) 
            { 
                votes += IsPlayerVoted[i]; 
                client_count++; 
            } 
        if(votes/client_count*100 > 40) 
            SetConVarBool(g_hSvAlltalk, true); 
        else 
            SetConVarBool(g_hSvAlltalk, false); 
        PrintToChatAll("[VoteAllTalk] %N %s за AllTalk! (%d/%d)", client, IsPlayerVoted[client] ? "проголосовал" : "забрал свой голос", votes, votes/client_count); 
    } 
    return Plugin_Handled; 
}     
public OnClientConnected(client) 
    IsPlayerVoted[client] = 0; 
     
public OnClientDisconnect(client) 
    IsPlayerVoted[client] = 0;
В чат писать:
1) !alltalk
2) !at
 

Вложения

  • votealltalk.smx
    3.5 КБ · Просмотры: 5

AleksandrM3

Участник
Сообщения
137
Реакции
2
PHP:
new IsPlayerVoted[MAXPLAYERS+1] = {0, ...}; 
+; 
           
      [B][U]  if(votes/client_count*100 > 40) [/U][/B]
          
     
1) !alltalk
2) !at[/QUOTE]

И еще такой момент, а сколько игроков должно прописать эту команду чтобы она заработала, и какая переменная отвечает за это.  У меня сейчас на сервере из 22 двух игроков 14 написали, но не заработало. а если админ пропишет сразу включается. Ведь тут главное чтобы игроки в отсутствии админа могли включать, и количество проголосовавших было не более 50 процентов от всего количества игроков на сервере.
 

TolikCorp

Участник
Сообщения
874
Реакции
334
По идеи:
votes/client_count*100 > 40

Количество голосов/Количество игроков на сервере в данный момент, выраженное в процентах больше 40
Если два раза прописать !at пишет же что проголосовал или забрал голос?
 

AleksandrM3

Участник
Сообщения
137
Реакции
2
По идеи:
votes/client_count*100 > 40

Количество голосов/Количество игроков на сервере в данный момент, выраженное в процентах больше 40
Если два раза прописать !at пишет же что проголосовал или забрал голос?

Да второй раз голос забирается, я тоже подумал про это otes/client_count*100 > 40, но по факту голосов надо больше чем 40 процентов, из 22 игроков 14 прописали эффекта никакого
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Как вариант - скобочки попробовать.
PHP:
new IsPlayerVoted[MAXPLAYERS+1] = {0, ...}; 
new Handle:g_hSvAlltalk = INVALID_HANDLE;
public OnPluginStart() 
{ 
    RegConsoleCmd("sm_alltalk", votealltalk);
    RegConsoleCmd("sm_at", votealltalk);
    g_hSvAlltalk = FindConVar("sv_alltalk"); 
} 
public Action:votealltalk(client, args) 
{ 
    if(client && IsClientInGame(client)) 
    { 
        IsPlayerVoted[client] = !IsPlayerVoted[client]; 
        new votes; 
        new client_count; 
        for(new i = 1; i <= MaxClients; i++) 
            if(IsClientInGame(i) && !IsFakeClient(i)) 
            { 
                votes += IsPlayerVoted[i]; 
                client_count++; 
            } 
        if((votes/client_count*100) > 40) 
            SetConVarBool(g_hSvAlltalk, true); 
        else 
            SetConVarBool(g_hSvAlltalk, false); 
        PrintToChatAll("[VoteAllTalk] %N %s за AllTalk! (%d/%d)", client, IsPlayerVoted[client] ? "проголосовал" : "забрал свой голос", votes, votes/client_count); 
    } 
    return Plugin_Handled; 
}     
public OnClientConnected(client) 
    IsPlayerVoted[client] = 0;
     
public OnClientDisconnect(client) 
    IsPlayerVoted[client] = 0;
и кстати, скопируй, что в чат выводится, когда пишешь !at
 

AleksandrM3

Участник
Сообщения
137
Реакции
2
я же админ у меня сразу выскакивает голосование а у игроков

*УБИТ* qua[D]Неспеша<3 : !votealltalk
[VoteAllTalk] qua[D]Неспеша<3 AllTalk! (12/0)
*УБИТ* qua[D]Неспеша<3 : !votealltalk
[VoteAllTalk] qua[D]Неспеша<3 AllTalk! (13/0)
Смертная тень killed Eladiel with m4a1.
Скачать карты можно тут - http://vk.com/topic-32115378_27755167
Miss Aferistka (STEAM_0:0:552853402) connected from Russian Federation
Miss Aferistka подключился
BOTAN killed Safarov with ak47.
*УБИТ* чepenaxa торчилла : !votealltalk
[VoteAllTalk] чepenaxa торчилла AllTalk! (14/0)
*УБИТ* Просто Игрок : !votealltalk
[VoteAllTalk] Просто Игрок AllTalk! (13/0)
*УБИТ* Просто Игрок : !votealltalk
[VoteAllTalk] Просто Игрок AllTalk! (14/0)
это из моей консоли, незнаю наверно не это тебе было нужно,
 

TolikCorp

Участник
Сообщения
874
Реакции
334
PHP:
new IsPlayerVoted[MAXPLAYERS+1] = {0, ...};
new Handle:g_hSvAlltalk = INVALID_HANDLE;
public OnPluginStart()
{
    RegConsoleCmd("sm_alltalk", votealltalk);
    RegConsoleCmd("sm_at", votealltalk);
    g_hSvAlltalk = FindConVar("sv_alltalk");
}
public Action:votealltalk(client, args)
{
    if(client && IsClientInGame(client))
    {
        IsPlayerVoted[client] = !IsPlayerVoted[client];
        new votes;
        new client_count;
        for(new i = 1; i <= MaxClients; i++)
            if(IsClientInGame(i) && !IsFakeClient(i))
            {
                votes += IsPlayerVoted[i];
                client_count++;
            }
        //if((votes/client_count*100) > 40) 
        if(RoundFloat(FloatMul((float(votes)/float(client_count)),100.0)) >= 50)
            SetConVarBool(g_hSvAlltalk, true);
        else
            SetConVarBool(g_hSvAlltalk, false);
        PrintToChatAll("[VoteAllTalk] %N %s за AllTalk! (%d/%d)", client, IsPlayerVoted[client] ? "проголосовал" : "забрал свой голос", votes, RoundFloat(float(client_count)*0.50));
    } 
    return Plugin_Handled; 
}     
public OnClientConnected(client) 
    IsPlayerVoted[client] = 0;
     
public OnClientDisconnect(client) 
    IsPlayerVoted[client] = 0;
Всё, теперь ОК, сам проверил.
 
Последнее редактирование:

AleksandrM3

Участник
Сообщения
137
Реакции
2
вот только эту строчку надо изменить да?
 
Сверху Снизу