Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 17
  1. #1
    Аватар для kala4iks
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2015
    Сообщений
    317
    Репутация:
    0 ±

    Помогите пожалуйста с реализацией.

    Добрый день уважаемы пользователи, pro-pawn.ru. Помогите пожалуйста реализовать показ даты разбана на сервера с датой и временем.



    PHP код:
    public check_banlist(playerid)
    {
        new 
    unbandate,vas[32],bool:ban,rows,fields,str[400];
        
    cache_get_data(rowsfields);
        if(
    rows)
        {
            
    cache_get_field_content(0"unbandate"vas); unbandate strval(vas);
            if(
    unbandate gettime() > 0ban true;
        }
        if(
    ban == true)
        {
            new 
    data[20],whobanned[32],reason[40],timeban,nameak[24],ipban[16];
            
    cache_get_field_content(0,"name",nameak);
            
    cache_get_field_content(0,"ip",ipban);
            
    cache_get_field_content(0,"bandate",data);
            
    cache_get_field_content(0,"unbandate",vas); unbandate strval(vas);
            
    cache_get_field_content(0,"whobanned",whobanned);
            
    cache_get_field_content(0,"reason",reason);
            
    timeban cache_get_field_content_int(0,"time");
               
               
    f(str,"{F5DEB3}%s\n\
               IP: %s\n\
              Заблокировал: %s\n\
              Дата блокировки: %s\n\
              Заблокирован на: %d\n\
              Причина: %s\n\n\
              Дата разблокировки:\n"
    ,
              
    nameak,ipban,whobanned,data,timeban,reason);
            
    ShowPlayerDialog(playerid,D_NULL,0,"{33CCFF}Аккаунт заблокирован.",str,"ОК","");
            
    SKick(playerid,28183);
        }
        return 
    1;


  2. #2
    Аватар для Found
    G

    Статус
    Оффлайн
    Регистрация
    18.05.2016
    Адрес
    041b0438043f04
    Сообщений
    35
    Репутация:
    9 ±
    PHP код:
    здесь был неактуальный код *

    актуальный ниже 
    Последний раз редактировалось Found; 21.06.2016 в 21:49.

  3. #3
    Аватар для kala4iks
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2015
    Сообщений
    317
    Репутация:
    0 ±
    Цитата Сообщение от Found Посмотреть сообщение
    PHP код:

    #include <mxDate> // Как вариант решение Вашей проблемы, но за его работу я не ручаюсь.

    public check_banlistplayerid )
    {
        new
            
    rows,
            
    fields,
            
    str400 ];
        
        
    cache_get_datarowsfields );
        
        if( !
    rows // Если строка не найдена, то возвращаем 0.
            
    return 0;
            
        new 
            
    unbandate cache_get_field_content_int0"unbandate" );
            
        if( 
    unbandate gettime() ) 
        {
            new
                
    player_nameMAX_PLAYER_NAME ],
                
    ip16 ],
                
    whobannedMAX_PLAYER_NAME ],
                
    bandate cache_get_field_content_int0"unbandate" ),
                
    reason32 ];
            
            
    cache_get_field_content0"name"player_name ); // Лучше не выгружать из базы данных имя игрока, а брать уже полученное, например при подключении к серверу.
            
    cache_get_field_content0"whobanned"whobanned ); 
            
    cache_get_field_content0"reason"reason ); 
            
    cache_get_field_content0"ip"ip ); 
                
            
    f(str,"{F5DEB3}%s\n\ 
              IP: %s\n\ 
              Заблокировал: %s\n\ 
              Дата блокировки: %s\n\ 
              Заблокирован на: %d\n\ 
              Причина: %s\n\n\ 
              Дата разблокировки:\n"

              
    player_name,
              
    ip,
              
    whobanned,
              
    date"hh:ii:ss dd/mm/yy"unbandate ),
              
    date"hh:ii:ss dd/mm/yy"bandate ),
              
    reason
            
    ); 
            
            
    ShowPlayerDialogplayeridD_NULL0"{33CCFF}Аккаунт заблокирован."str"Закрыть""" ); 
          
            return 
    SKickplayerid28183 ); 
        }
        else( 
    unbandate gettime() )
        {
            
    // Здесь выполняется запрос на удаление блокировки, если та истекла.
            
            
    mysql_format( ... .... , "DELETE FROM table_bans WHERE id = %d "PLAYER[playerid][ID] );
            
    mysql_tquery( ... ... ... );
            
            return 
    SendClientMessageplayerid, -1"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
        }
        
        return 
    1;

    У меня просто в бд не по ID записывается а по нику.


    получается в publick OnPlayerConnect(playerid) у меня идет вот так.

    PHP код:
        f(query,"SELECT * FROM bans WHERE name = '%s'",GetName(playerid));
        
    mysql_tquery(dbHandle,query,"check_banlist","i",playerid); 
    А потом на check_banlist.
    Последний раз редактировалось kala4iks; 21.06.2016 в 18:43.

  4. #4
    Аватар для Found
    G

    Статус
    Оффлайн
    Регистрация
    18.05.2016
    Адрес
    041b0438043f04
    Сообщений
    35
    Репутация:
    9 ±
    Цитата Сообщение от kala4iks Посмотреть сообщение
    У меня просто в бд не по ID записывается а по нику.


    получается в publick OnPlayerConnect(playerid) у меня идет вот так.

    PHP код:
        f(query,"SELECT * FROM bans WHERE name = '%s'",GetName(playerid));
        
    mysql_tquery(dbHandle,query,"check_banlist","i",playerid); 
    А потом на check_banlist.
    Для начала, что за функция "GetName( playerid )"?

  5. #5
    Аватар для TheMallard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Она есть во всех более менее новых GF, лол:

    PHP код:
    new name[MAX_PLAYER_NAME 1];
    GetPlayerName(playeridnameMAX_PLAYER_NAME);
    return 
    name

  6. #6
    Аватар для Found
    G

    Статус
    Оффлайн
    Регистрация
    18.05.2016
    Адрес
    041b0438043f04
    Сообщений
    35
    Репутация:
    9 ±
    Цитата Сообщение от TheMallard Посмотреть сообщение
    Она есть во всех более менее новых GF, лол:

    PHP код:
    new name[MAX_PLAYER_NAME 1];
    GetPlayerName(playeridnameMAX_PLAYER_NAME);
    return 
    name
    Так вот. Обращаюсь к ТС, если у тебя существует подобная функция в моде, то тебе необходимо от неё избавиться, ибо она совершенна непрактична, к тому же здесь возвращается строка.

    Советую сделать получение игрового имени уже при подключении, а потом уже получать его с помощью макроса GetName( playerid ).

    PHP код:

    // В начало мода
    #define GetName(%0)    PLAYER[%0][NAME] 

    // В соответствующий каллбэк
    public OnPlayerConnectplayerid )
    {
        
    GetPlayerNameplayeridPLAYERplayerid ][ NAME ], sizeof PLAYERplayerid ][ NAME ] );

        return 
    1;

    Все переменные и структуры заменить конечно на свои.

    И финальный код, будет выглядеть вот так:
    PHP код:
    #include <mxDate> // Как вариант решение Вашей проблемы, но за его работу я не ручаюсь.

    public check_banlistplayerid )
    {
        new
            
    rows,
            
    fields,
            
    str400 ];
        
        
    cache_get_datarowsfields );
        
        if( !
    rows // Если строка не найдена, то возвращаем 0.
            
    return 0;
            
        new 
            
    unbandate cache_get_field_content_int0"unbandate" );
            
        if( 
    unbandate gettime() ) 
        {
            new
                
    ip16 ],
                
    whobannedMAX_PLAYER_NAME ],
                
    bandate cache_get_field_content_int0"bandate" ),
                
    reason32 ];
            
            
    cache_get_field_content0"whobanned"whobanned ); 
            
    cache_get_field_content0"reason"reason ); 
            
    cache_get_field_content0"ip"ip ); 
                
            
    f(str,"{F5DEB3}%s\n\ 
              IP: %s\n\ 
              Заблокировал: %s\n\ 
              Дата блокировки: %s\n\ 
              Заблокирован на: %d\n\ 
              Причина: %s\n\n\ 
              Дата разблокировки:\n"

              
    GetNameplayerid ),
              
    ip,
              
    whobanned,
              
    date"hh:ii:ss dd/mm/yy"unbandate ),
              
    date"hh:ii:ss dd/mm/yy"bandate ),
              
    reason
            
    ); 
            
            
    ShowPlayerDialogplayeridD_NULL0"{33CCFF}Аккаунт заблокирован."str"Закрыть""" ); 
          
            return 
    SKickplayerid28183 ); 
        }
        else
        {
            
    // Здесь выполняется запрос на удаление блокировки, если та истекла.
            
            
    f(query,"DELETE FROM bans WHERE name = '%s'"GetName(playerid));
            
    mysql_tquerydbHandlequery"""" );  
            
            
    SendClientMessageplayerid, -1"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
        }
        
        return 
    1;

    Последний раз редактировалось Found; 21.06.2016 в 21:24. Причина: Исправил ошибки

  7. #7
    Аватар для kala4iks
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2015
    Сообщений
    317
    Репутация:
    0 ±
    Цитата Сообщение от Found Посмотреть сообщение
    Так вот. Обращаюсь к ТС, если у тебя существует подобная функция в моде, то тебе необходимо от неё избавиться, ибо она совершенна непрактична, к тому же здесь возвращается строка.

    Советую сделать получение игрового имени уже при подключении, а потом уже получать его с помощью макроса GetName( playerid ).

    PHP код:

    // В начало мода
    #define GetName(%0)    PLAYER[%0][NAME] 

    // В соответствующий каллбэк
    public OnPlayerConnectplayerid )
    {
        
    GetPlayerNameplayeridPLAYERplayerid ][ NAME ], sizeof PLAYERplayerid ][ NAME ] );

        return 
    1;

    Все переменные и структуры заменить конечно на свои.

    И финальный код, будет выглядеть вот так:
    PHP код:
    #include <mxDate> // Как вариант решение Вашей проблемы, но за его работу я не ручаюсь.

    public check_banlistplayerid )
    {
        new
            
    rows,
            
    fields,
            
    str400 ];
        
        
    cache_get_datarowsfields );
        
        if( !
    rows // Если строка не найдена, то возвращаем 0.
            
    return 0;
            
        new 
            
    unbandate cache_get_field_content_int0"unbandate" );
            
        if( 
    unbandate gettime() ) 
        {
            new
                
    // player_name[ MAX_PLAYER_NAME ],
                
    ip16 ],
                
    whobannedMAX_PLAYER_NAME ],
                
    bandate cache_get_field_content_int0"unbandate" ),
                
    reason32 ];
            
            
    // cache_get_field_content( 0, "name", player_name ); 
            
    cache_get_field_content0"whobanned"whobanned ); 
            
    cache_get_field_content0"reason"reason ); 
            
    cache_get_field_content0"ip"ip ); 
                
            
    f(str,"{F5DEB3}%s\n\ 
              IP: %s\n\ 
              Заблокировал: %s\n\ 
              Дата блокировки: %s\n\ 
              Заблокирован на: %d\n\ 
              Причина: %s\n\n\ 
              Дата разблокировки:\n"

              
    GetNameplayerid ),
              
    ip,
              
    whobanned,
              
    date"hh:ii:ss dd/mm/yy"unbandate ),
              
    date"hh:ii:ss dd/mm/yy"bandate ),
              
    reason
            
    ); 
            
            
    ShowPlayerDialogplayeridD_NULL0"{33CCFF}Аккаунт заблокирован."str"Закрыть""" ); 
          
            return 
    SKickplayerid28183 ); 
        }
        else( 
    unbandate gettime() )
        {
            
    // Здесь выполняется запрос на удаление блокировки, если та истекла.
            
            
    fquery,"DELETE FROM bans WHERE name = '%s'"GetName(playerid) );
            
    mysql_tquerydbHandlequery"""" );  
            
            return 
    SendClientMessageplayerid, -1"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
        }
        
        return 
    1;

    У меня вроде так как раз и идет))) с ником.) ток в OnPlayerConnect чуть по инному.
    PHP код:
    #define GetName(%0) PI[%0][pName] 
    PHP код:
    GetPlayerName(playeridPI[playerid][pName], MAX_PLAYER_NAME); 
    - - - Добавлено - - -


  8. #8
    Аватар для Found
    G

    Статус
    Оффлайн
    Регистрация
    18.05.2016
    Адрес
    041b0438043f04
    Сообщений
    35
    Репутация:
    9 ±
    Обновил пост выше.

  9. #9
    Аватар для kala4iks
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2015
    Сообщений
    317
    Репутация:
    0 ±
    Цитата Сообщение от Found Посмотреть сообщение
    Обновил пост выше.
    Чет просто символы hh:ii:ss dd/mm/yy

    - - - Добавлено - - -

    Разобрался вроде.

  10. #10
    Аватар для kala4iks
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2015
    Сообщений
    317
    Репутация:
    0 ±
    Вот ток 1 но я забанил себя на 1 день а дата и время не правильно отображается именно разбана.

    Последний раз редактировалось kala4iks; 22.06.2016 в 00:43.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •