Правила для сервера TF2

Тема в разделе "Программирование / Скриптинг", создана пользователем kolya2142, 21 фев 2014.

  1. kolya2142

    kolya2142

    Сообщения:
    74
    Симпатии:
    3
    Есть у меня плагин правил для сервера
    #pragma semicolon 1

    #include <sourcemod>

    public OnClientPutInServer(client)
    {
    if (client > 0 && !IsFakeClient(client))
    {
    new Handle:panel = CreatePanel();
    {
    SetPanelTitle(panel, "Правила сервера");
    DrawPanelText(panel, "Правила....\n|---|\nСогласны с правилами?");
    DrawPanelItem(panel, "Да");
    DrawPanelItem(panel, "Нет");
    SendPanelToClient(panel, client, Handler, 0);
    CloseHandle(panel);
    }
    }
    }

    public Handler(Handle:panel, MenuAction:action, param1, param2)
    {
    if (action == MenuAction_Select)
    {
    if (param2 == 2)
    {
    KickClient(param1, "Вы должны согласиться с правилами!");
    }
    }
    }
    Помогите пожалуйста сделать так, чтобы после того как игрок нажмет 3 раза "да", больше у него это не появлялась табличка и если нажмет "нет", то бан 10 мин, можно ли реализовать это через sql? В заранее спасибо
     
  2. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    Выведи
    в отдельный паблик. Создай переменную.
    в паблике Handler сделаешь проверку на if(param == 1) - т.е. если да, то проверка на выполнение условия, в котором будет проверка на значение переменной = 3. Если условие выполнено, то дальше придумаешь что будет. А функции бана я не знаю)

    Добавлено через 7 минут
    Примерно так:

    PHP:

    new pTicks

    public OnClientPutInServer(client)
    {
        if (
    client && args 1
        {
            
    ShowMyPanel(client); 
        }
        return 
    Plugin_Handled
    }

    public 
    ShowMyPanel(client
    {
        new 
    Handle:panel CreatePanel(); 
        
    SetPanelTitle(panel"Правила сервера");
        
    DrawPanelText(panel"Правила....\n|---|\nСогласны с правилами?");
        
    DrawPanelItem(panel"Да");
        
    DrawPanelItem(panel"Нет"); 
        
    SendPanelToClient(panelclientHandler0); 
        
    SendPanelToClient(panelclientSelect_PanelT0); 
        
    CloseHandle(panel); 


    public 
    Select_PanelT(Handle:panelMenuAction:actionclientoption

        if (
    action == MenuAction_Select
        {
            if(
    option == 1)
            {
                
    pTicks++;
                if(
    pTicks == 3)
                {
                    
    //что-то будет
                
    }
                else
                {
                    
    ShowMyPanel(client); 
                }
            {
            if(
    option == 2)
            {
                
    //тут будет бан
            
    }
        }
    }
     
     
    Последнее редактирование: 22 фев 2014
    kolya2142 нравится это.
  3. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.186
    Симпатии:
    411
    Primo, Если я правильно понял, то он вызывает панель, а не меню. А в панели нельзя выбрать пункт.
     
  4. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    Почему это?
     
  5. kolya2142

    kolya2142

    Сообщения:
    74
    Симпатии:
    3
    Панель выскакивает как голосование, в голосовании же карты выбираешь, вот так и тут.
     
  6. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    В панели можно выбрать пункт, панель от меню отличается тем, что после вывода хэндл панели закрывается - т.е. ими сложнее делать многоуровневые меню и переход между ними, т.к. они для этого не предназначены.
     
    White Wolf нравится это.
  7. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    Primo, И еще лучше создай 1 раз панель с правилами при старте плагина в глобальном Handle и при входе игрока просто отправляй ему.