Плагин votechat

Тема в разделе "Counter-Strike: Source", создана пользователем AleksandrM3, 5 ноя 2014.

  1. AleksandrM3

    AleksandrM3

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

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
  3. AleksandrM3

    AleksandrM3

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

    BatyaMedic Ньюсмейкер

    Сообщения:
    769
    Симпатии:
    123
    Оффтоп
     
  5. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    Там всё готово, ставь и проверяй votealltalk
     
  6. AleksandrM3

    AleksandrM3

    Сообщения:
    110
    Симпатии:
    1
    Geck0, TolikCorp, Ладно вам, налетели как галки, я еще молодой серверо-держатель, неопытный, вот глупые вопросы и спрашиваю.
    Ну раз уж я затупил, то скажите мне куда там эти файлы вставлять чтобы правильно было, а то у меня сервер на myarene и плагины там устанавливаются автоматически нажатием одной кнопки.
     
  7. The Night Fury

    The Night Fury Администратор

    Сообщения:
    1.221
    Симпатии:
    914
    /пользователь/путь_к_серверу/мод/addons/sourcemod/
    .smx — в папку plugins/
    .phrases.txt — translations/
    .cfg — configs/

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

    AleksandrM3

    Сообщения:
    110
    Симпатии:
    1
    вот спасибо!

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

    TolikCorp

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

    PHP:
    new IsPlayerVoted[MAXPLAYERS+1] = {0, ...};
    new 
    Handle:g_hSvAlltalk;
    public 
    OnPluginStart()
    {
        
    RegConsoleCmd("sm_votealltalk"votealltalk);
        
    g_hSvAlltalk FindConVar("sv_alltalk");
    }
    public 
    Action:votealltalk(clientargs)
    {
        if(
    client && IsClientInGame(client))
        {
            
    IsPlayerVoted[client] = !IsPlayerVoted[client];
            new 
    votes;
            new 
    client_count;
            for(new 
    1<= MaxClientsi++)
                if(
    IsClientInGame(i) && !IsFakeClient(i))
                {
                    
    votes += IsPlayerVoted[i];
                    
    client_count++;
                }
            if(
    votes/client_count*100 40)
                
    SetConVarBool(g_hSvAlltalktrue);
            else
                
    SetConVarBool(g_hSvAlltalkfalse);
            
    PrintToChatAll("[VoteAllTalk] %N %s за AllTalk! (%d/%d)"clientIsPlayerVoted[client] ? "проголосовал" "забрал свой голос"votesvotes/client_count);
        }
        return 
    Plugin_Handled;
    }    
    public 
    OnClientConnected(client)
        
    IsPlayerVoted[client] = 0;
        
    public 
    OnClientDisconnect(client)
        
    IsPlayerVoted[client] = 0;
    Критики, будьте помягче :) Набросал кодик, проверяй.
    Приложил скомпилированный, вдруг не знаешь как это делается)
     

    Вложения:

    • votealltalk.smx
      Размер файла:
      3,5 КБ
      Просмотров:
      2
    Последнее редактирование: 6 ноя 2014
    AleksandrM3 нравится это.
  10. AleksandrM3

    AleksandrM3

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

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    !votealltalk в чат)
    Можно еще одну консольную команду зарегать sm_alltalk
    И в чате использовать как !alltalk
    RegConsoleCmd("sm_alltalk", votealltalk);
     
  12. AleksandrM3

    AleksandrM3

    Сообщения:
    110
    Симпатии:
    1
    сделай если не сложно. а то длинные слова, народ на сервере не всегда воспринимает)
     
  13. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    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(clientargs

        if(
    client && IsClientInGame(client)) 
        { 
            
    IsPlayerVoted[client] = !IsPlayerVoted[client]; 
            new 
    votes
            new 
    client_count
            for(new 
    1<= MaxClientsi++) 
                if(
    IsClientInGame(i) && !IsFakeClient(i)) 
                { 
                    
    votes += IsPlayerVoted[i]; 
                    
    client_count++; 
                } 
            if(
    votes/client_count*100 40
                
    SetConVarBool(g_hSvAlltalktrue); 
            else 
                
    SetConVarBool(g_hSvAlltalkfalse); 
            
    PrintToChatAll("[VoteAllTalk] %N %s за AllTalk! (%d/%d)"clientIsPlayerVoted[client] ? "проголосовал" "забрал свой голос"votesvotes/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 КБ
      Просмотров:
      1
  14. AleksandrM3

    AleksandrM3

    Сообщения:
    110
    Симпатии:
    1
     
  15. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    По идеи:
    votes/client_count*100 > 40

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

    AleksandrM3

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

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    Как вариант - скобочки попробовать.
    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(clientargs

        if(
    client && IsClientInGame(client)) 
        { 
            
    IsPlayerVoted[client] = !IsPlayerVoted[client]; 
            new 
    votes
            new 
    client_count
            for(new 
    1<= MaxClientsi++) 
                if(
    IsClientInGame(i) && !IsFakeClient(i)) 
                { 
                    
    votes += IsPlayerVoted[i]; 
                    
    client_count++; 
                } 
            if((
    votes/client_count*100) > 40
                
    SetConVarBool(g_hSvAlltalktrue); 
            else 
                
    SetConVarBool(g_hSvAlltalkfalse); 
            
    PrintToChatAll("[VoteAllTalk] %N %s за AllTalk! (%d/%d)"clientIsPlayerVoted[client] ? "проголосовал" "забрал свой голос"votesvotes/client_count); 
        } 
        return 
    Plugin_Handled
    }     
    public 
    OnClientConnected(client
        
    IsPlayerVoted[client] = 0;
         
    public 
    OnClientDisconnect(client
        
    IsPlayerVoted[client] = 0
    и кстати, скопируй, что в чат выводится, когда пишешь !at
     
  18. AleksandrM3

    AleksandrM3

    Сообщения:
    110
    Симпатии:
    1
    я же админ у меня сразу выскакивает голосование а у игроков

    *УБИТ* 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)
    это из моей консоли, незнаю наверно не это тебе было нужно,
     
  19. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
    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(clientargs)
    {
        if(
    client && IsClientInGame(client))
        {
            
    IsPlayerVoted[client] = !IsPlayerVoted[client];
            new 
    votes;
            new 
    client_count;
            for(new 
    1<= MaxClientsi++)
                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_hSvAlltalktrue);
            else
                
    SetConVarBool(g_hSvAlltalkfalse);
            
    PrintToChatAll("[VoteAllTalk] %N %s за AllTalk! (%d/%d)"clientIsPlayerVoted[client] ? "проголосовал" "забрал свой голос"votesRoundFloat(float(client_count)*0.50));
        } 
        return 
    Plugin_Handled
    }     
    public 
    OnClientConnected(client
        
    IsPlayerVoted[client] = 0;
         
    public 
    OnClientDisconnect(client
        
    IsPlayerVoted[client] = 0
    Всё, теперь ОК, сам проверил.
     
    Последнее редактирование: 6 ноя 2014
  20. AleksandrM3

    AleksandrM3

    Сообщения:
    110
    Симпатии:
    1
    вот только эту строчку надо изменить да?