После админского голосования за бан игрока, бан не попадает в Систему банов

Тема в разделе "Общие вопросы", создана пользователем ★Сириус★, 13 сен 2013.

  1. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    200
    Ребят, давно заметил такую вещь.
    К примеру играем на сервере, вдруг какой-то игрок накосячил не сильно, и тут как и бан не хочется давать ну и наказать нужно, поэтому к примеру в этой ситуации через админку админ запускает голосование
    Код:
    sm_voteban "игрок"
    игроки проголосовали за "да" (тоесть да забанить игрока на 30 минут)
    игрок уходит в бан, но этот бан не высвечивается в Системе банов

    Как можно сделать, чтобы подобные баны высвечивались в системе банов?
     
  2. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    Сириус,
    За 30 минут успеваешь сервер перезапустить ? Или это так важно что бы отмечалось что игрок был забанен голосованием
     
  3. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    200
    у меня важно, я слежу за действиями админов, и попадется неадекватный админ будет баловаться таким образом, а забаненый игрок и жалобу подать не сможет на форуме, так как этот бан не зафиксирован в систме банов

    Добавлено через 46 секунд
    нет ни чего я не перезапускаю, причину я написал выше

    Добавлено через 18 минут
    в общем нашел я плагин тут: http://forums.alliedmods.net/showthread.php?t=197790
    но но там косяк один, сразу вот сколько банов мне выдал, банил себя

    [​IMG]

    править походу нужно

    Добавлено через 20 минут
    может кто-нибудь поправит плагин?
     
    Последнее редактирование: 13 сен 2013
  4. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.564
    Симпатии:
    1.150
    ★Сириус★, вот простой способ, дописываем плагин базе вотест, в нлавном файле в фуекции public Handler_VoteCallback(Handle:menu, MenuAction:action, param1, param2) строка case (voteType:ban):
    ищим
    PHP:
    BanClient(g_voteClient[VOTE_CLIENTID],
                                  
    30,
                                  
    BANFLAG_AUTO,
                                  
    g_voteArg,
                                  
    "Banned by vote",
                                  
    "sm_voteban");
    И делаем так
    PHP:
    if (SOURCEBANS_AVAILABLE())
                        {
                            
    SBBanPlayer(0g_voteClient[VOTE_CLIENTID], 30"Banned by vote");
                        }
                        else
                        {
                            
    BanClient(g_voteClient[VOTE_CLIENTID],
                                    
    30,
                                    
    BANFLAG_AUTO,
                                    
    g_voteArg,
                                    
    "Banned by vote",
                                    
    "sm_voteban");
                        }
    А вверху добавляем эти строчки
    PHP:
    #define SOURCEBANS_AVAILABLE()    (GetFeatureStatus(FeatureType_Native, "SBBanPlayer") == FeatureStatus_Available)
    native SBBanPlayer(clienttargettimeString:reason[]);
    Взял со смака.
    перевод native SBBanPlayer(Кто банит, кого баним, время, причина);

    А можно тупа сделать через
    PHP:
    ServerCommand("sm_ban #%d %d \"%s\""g_voteClient[VOTE_CLIENTID], 30"Banned by vote");
    Заместо BanClient. На счёт решётки в команде не уверен))
     
    Последнее редактирование: 13 сен 2013
    KapaT, KorDen и ★Сириус★ нравится это.
  5. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    200
    попробовал этот вариант, работает,
    но что это за ошибка при компиляции?
    [​IMG]
     
  6. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.564
    Симпатии:
    1.150
    ★Сириус★, это не ошибка, а предупреждение, ни чего особенного, просто добавь #pragma tabsize 0 в начале скрипта к #pragma semicolon 1. Такое бывает когда используют пробел и таб. Тот параметр избавляет от таких предупреждений.
    + убери пробелы в пути сервера.
    + можно компилировать один файл, просто перетаскивая на компилятор.
     
    ★Сириус★ нравится это.
  7. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    200
    а у меня еще вопрос:
    я сделал причину в условии на русско тоесть так:
    Код:
    if (SOURCEBANS_AVAILABLE()) 
                        { 
                            SBBanPlayer(0, g_voteClient[VOTE_CLIENTID], 30, "[COLOR="Red"]Забанен через голосование админа[/COLOR]"); 
                        } 
                        else 
                        { 
                            BanClient(g_voteClient[VOTE_CLIENTID], 
                                    30, 
                                    BANFLAG_AUTO, 
                                    g_voteArg, 
                                    "Banned by vote", 
                                    "sm_voteban"); 
                        } 
    и в каком случае у меня будет из это условия применяться эта функция:
    Код:
                            BanClient(g_voteClient[VOTE_CLIENTID], 
                                    30, 
                                    BANFLAG_AUTO, 
                                    g_voteArg, 
                                    "Banned by vote", 
                                    "sm_voteban"); 
    (здесь я причину оставил на английском)
     
  8. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.564
    Симпатии:
    1.150
    Если сделал причину на русском, то меняй кодировку на утф8 без бом. Тот код будет выполнятся если сб не будет работать.
     
    ★Сириус★ нравится это.
  9. KapaT

    KapaT Эгоист

    Сообщения:
    1.983
    Симпатии:
    408
    ★Сириус★, скинь готовый плагин может кому то и пригодится
     
  10. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    200
    ок
    Версия SM-1.5.0
    Причина бана: Забанен через голосование админа (сами исправите если не нравится)

    [​IMG]
     

    Вложения:

    • basevotes.sp
      Размер файла:
      12,5 КБ
      Просмотров:
      21
    • basevotes.smx
      Размер файла:
      14,5 КБ
      Просмотров:
      11
    R1KO и KapaT нравится это.
  11. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    200
    действительно перед else стоял пробел, убрал его и все стало норм, без этого предупреждения
     
  12. Черная вдова

    Черная вдова

    Сообщения:
    1.621
    Симпатии:
    234
    Сириус,
    Так получается не известно кто из админов начал голосование
    Я просто заметил только Vote_Admin
     
  13. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    200
    будет писать вообще забанен админом Console
    Как сделать чтобы писался тот админ который запустил голосование. я хрен знает

    А Vote_Admin я сделал просто с помощью этого: http://hlmod.ru/forum/showpost.php?p=89741&postcount=16

    Добавлено через 4 минуты
    только в ../pages/page.banlist.php
    добавил:
    PHP:
        if (strpos($data['reason'],'Забанен через голосование админа') !== false$data['admin'] = 'Vote_Admin';
    а в ../index.php
    PHP:
    function callback_page($buffer

        
    $from=array( 
            
    '"listtable_1"><font color="#555555"><center>Vote_Admin</center></font></td>' 
        
    ); 
        
    $to=array( 
             
    '"listtable_1"><font color="#5f91f5"><center>Vote_Admin</center></font></td>' 
            
    ); 
      return 
    str_replace($from,$to$buffer); 
     
    Последнее редактирование: 13 сен 2013
  14. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    ★Сириус★, думаю, что без соответствующей модификации исходного кода SourceBans можно, но это будет немного не так, как задумывалось:
    Для того, чтобы в сб попала информация с администратором, нужно банить от админа, т.е. в строке
    Код:
    SBBanPlayer(0, g_voteClient[VOTE_CLIENTID], 30, "Забанен через голосование админа");
    вместо нуля написать client администратора, запустившего голосование. Казалось бы, нет ничего сложного. Но ведь администратор может выйти до результатов голосования, и тогда неизвестно, как поведет себя сб.
    Вот как можно сделать, чтобы, если администратор вышел, голосование (успешное) не производило бана во избежание ошибок, а если он остался, то в сб бан бы был от него:
    в ...\scripting\basevotes.sp:
    Добавить новую переменную new g_iCallerUserId;
    Изменить
    Код:
    SBBanPlayer(0, g_voteClient[VOTE_CLIENTID], 30, "Забанен через голосование админа");
    на
    Код:
    					new iClient = GetClientOfUserId(g_iCallerUserId);
    					if ( iClient != 0 )
    					{
    						SBBanPlayer(iClient, g_voteClient[VOTE_CLIENTID], 30, "Забанен через голосование админа");
    					}
    в ...\scripting\basevotes\voteban.sp:
    Код:
    DisplayVoteBanMenu(client, target)
    {
    	g_voteClient[VOTE_CLIENTID] = target;
    	g_voteClient[VOTE_USERID] = GetClientUserId(target);
    	g_iCallerUserId = GetClientUserId(client); // добавляем эту строку, чтобы запомнить UserId администратора, который начал голосование.
    
    	// дальше без изменений
    P.S. Код не проверял, но по идее всё должно работать как надо.
     
    KorDen, ★Сириус★, radionucleid и ещё 1-му нравится это.
  15. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    200
    Reiko1231, во спасибо, все работает и ошибок в логах нет. Теперь как нужно все
    Вот для ленивых готовый плагин и исходники
    sm-1.5.0
     

    Вложения:

    • cstrike.zip
      Размер файла:
      22,4 КБ
      Просмотров:
      39
    rasal и radionucleid нравится это.
  16. Alcone

    Alcone optizone.ru

    Сообщения:
    319
    Симпатии:
    72
    Было бы не плохо если бы еще был фикс на customvotes, запущенные голосование админом вообще не поподают в сб =\