Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3

Тема: Диалог

  1. #1
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±

    Диалог

    Приветствую. Делаю систему регистрации, запнулся на одном моменте: после проверки на блокировку IP-адреса (если не заблокирован) должно показывать диалог авторизации/регистрации. У меня примерно такая проблема: если IP-адрес заблокирован, то после вывода информации о блокировке (в диалоговом окне) сразу же выводит диалог авторизации/регистрации, а это мне не нужно. Что делать?
    PHP код:
    public OnPlayerConnect(playerid)
    {
        
    GetPlayerName(playeridpinfo[playerid][pName], MAX_PLAYER_NAME);
        
    GetPlayerIp(playeridpinfo[playerid][pIP], 16);.
        
    CheckBanIP(playerid);
        
    // Загрузка номера аккаунта и пароля.
        
    static const s_acc[] = "SELECT `id`, `password` FROM "T_ACC" WHERE `nick` = '%s'";
        new 
    query[sizeof(s_acc) + (-2+MAX_PLAYER_NAME)];
        
    format(querysizeof(query), s_accpinfo[playerid][pName]);
        
    mysql_tquery(mysqlquery"Search""i"playerid);
        return 
    true;

    PHP код:
    public Search(playerid)
    {
        new 
    rows;
        
    cache_get_row_count(rows);
        if(
    rows)
        {
                  
    // Показываем диалог авторизации.
        
    }
        else
        {
                 
    // Показываем диалог регистрации.
        
    }
        return 
    true;

    Теперь проверка на блокировку IP:
    PHP код:
    CheckBanIP(playerid)
    {
        static const 
    banip[] = "SELECT * FROM "T_BANIP" WHERE `ip` = '%s'";
        new 
    query[sizeof(banip) + (-2+16)];
        
    format(querysizeof(query), banipPlayerInfo[playerid][pIP]);
        
    mysql_tquery(mysqlquery"GetBanIp""i"playerid);
        return 
    true;

    PHP код:
    public GetBanIp(playerid)
    {
        new 
    bandateunbandatereason[50], adm[MAX_PLAYER_NAME], banrows;
        
    cache_get_row_count(rows);
        if(
    rows)
        {
            
    cache_get_value_name(0"adm"admMAX_PLAYER_NAME);
            
    cache_get_value_name(0"reason"reason51);
            
    cache_get_value_name_int(0"bandate"bandate);
            
    cache_get_value_name_int(0"unbandate"unbandate);
            if(
    unbandate-gettime() > 0ban 1;
            else if(
    unbandate-gettime() <= 0)
            {
                      
    // Удаляем информацию о блокировке.
            
    }
        }
        if(
    ban == 1)
        {
                
    // Показываем информацию о блокировке и отключаем игрока.
            
    MesKick(playeridCOLOR_RED"/quit");
        }
        return 
    true;

    И MesKick:
    PHP код:
    MesKick(playeridcolorstring[])
    {
        
    SendClientMessage(playeridcolorstring);
        
    SetTimerEx("kick"200false"i"playerid);
        return 
    true;

    PHP код:
    public kick(playerid)
    {
        
    Kick(playerid);


  2. #2
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Вот этот код:
    PHP код:
        // Загрузка номера аккаунта и пароля. 
        
    static const s_acc[] = "SELECT `id`, `password` FROM "T_ACC" WHERE `nick` = '%s'"
        new 
    query[sizeof(s_acc) + (-2+MAX_PLAYER_NAME)]; 
        
    format(querysizeof(query), s_accpinfo[playerid][pName]); 
        
    mysql_tquery(mysqlquery"Search""i"playerid); 
    из OnPlayerConnect переместить в GetBanIp, добавив там:
    PHP код:
    public GetBanIp(playerid
    {
        
    //...
        
    if(ban == 1
        { 
                
    // Показываем информацию о блокировке и отключаем игрока. 
            
    MesKick(playeridCOLOR_RED"/quit"); 
        }
        
    //Здесь
        
    else
        {
            
    // Загрузка номера аккаунта и пароля. 
            
    static const s_acc[] = "SELECT `id`, `password` FROM "T_ACC" WHERE `nick` = '%s'"
            new 
    query[sizeof(s_acc) + (-2+MAX_PLAYER_NAME)]; 
            
    format(querysizeof(query), s_accpinfo[playerid][pName]); 
            
    mysql_tquery(mysqlquery"Search""i"playerid);
        }
        return 
    true

    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Вот этот код:
    PHP код:
        // Загрузка номера аккаунта и пароля. 
        
    static const s_acc[] = "SELECT `id`, `password` FROM "T_ACC" WHERE `nick` = '%s'"
        new 
    query[sizeof(s_acc) + (-2+MAX_PLAYER_NAME)]; 
        
    format(querysizeof(query), s_accpinfo[playerid][pName]); 
        
    mysql_tquery(mysqlquery"Search""i"playerid); 
    из OnPlayerConnect переместить в GetBanIp, добавив там:
    PHP код:
    public GetBanIp(playerid
    {
        
    //...
        
    if(ban == 1
        { 
                
    // Показываем информацию о блокировке и отключаем игрока. 
            
    MesKick(playeridCOLOR_RED"/quit"); 
        }
        
    //Здесь
        
    else
        {
            
    // Загрузка номера аккаунта и пароля. 
            
    static const s_acc[] = "SELECT `id`, `password` FROM "T_ACC" WHERE `nick` = '%s'"
            new 
    query[sizeof(s_acc) + (-2+MAX_PLAYER_NAME)]; 
            
    format(querysizeof(query), s_accpinfo[playerid][pName]); 
            
    mysql_tquery(mysqlquery"Search""i"playerid);
        }
        return 
    true

    Приходило в голову, но не решался почему-то Спасибо за помощь!
    Последний раз редактировалось DeimoS; 05.02.2017 в 22:36.

 

 

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

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

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

Ваши права

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