1. Добро Пожаловать к нам на Форум Гость! Если вы еще не зарегистрировались просим вас зарегистрироваться!

    Скрыть объявление
  2. Для того что бы скачивать с нашего форума, нужно зарегистрироватся!

    Скрыть объявление
  3. Цены на серверах: Админка 35грн/мес Випка 20грн/мес.

    Скрыть объявление
  4. Девушкам играющим на сервере Випка Бесплатно!

    Скрыть объявление
Скрыть объявление

Привет! Администрация проекта рада видеть тебя у нас на сайте! Все вопросы по поводу прав администратора на сервере, VIP привелегий, снятия бана и так далее решаются на форуме в специально отведенных темах для этого. В чате подобные посты будут игнорироваться. Для удобства рекомендуем войти на сайт, как пользователь.

Скрыть объявление

Для получения бонусов на сервере (Випка, антифлеш от своих, денежные), посещайте форум!

Vip & admin Система(sqlite), интересно

Тема в разделе "Плагины для AMXModX", создана пользователем qpi3ik, 17 сен 2016.

  1. TopicStarter Overlay
    qpi3ik

    qpi3ik Создатель Команда форума Гл.Администратор

    Регистрация:
    28 дек 2014
    Сообщения:
    457
    Симпатии:
    220
    Баллы:
    162
    Автор: daywer
    Актуальная версия: 1.0

    Привелегии активируются НЕ МЕНЯЯ карту.
    Создает базу данных игроков VIP & ADMIN(как вам удобно) локальная база sqlite
    Добавлены команды:
    Доступ к Регистрации и удаление VIP_REG_ADMIN_FLAG
    Функция для получения флага пример:if(VIP_Player_Has_Flag(id,"a"))client_print(0,print_chat,"Flag A")
    Красивые Цветные сообщения в чат

    Сейчас он просто выдает стандартные флаги ,но соотв можно реализовать проверку на доступ попросту с помошью VIP_Player_Has_Flag

    Настройка
    PHP:
    szTableName Название таблицы
    szBDName 
    Название базы данных
    REGISTER_COMMAND_VIP 
    Регистрация аккаунта
    COMMAND_VIP 
    Вход в аккаунт
    DEL_COMMAND_VIP 
    Удаление аккаунта
    MIN_SIMBOL_NICKNAME 
    мин кол-во символов в нике
    MIN_SIMBOL_PASSWORD 
    мин кол-во символов в пароле
    VIP_REG_ADMIN_FLAG 
    Флаг для регистрации и удаления аккаунта
    post-100073-1470566385.jpg post-100073-1470566393.jpg post-100073-1470566404.jpg post-100073-1470566414.jpg
    PHP:
    #include <amxmodx>
    #include <sqlx>
    #pragma tabsize 0
    #define PLUGIN "Vip system"
    new Handle:g_SqlTuple
    new g_Error[512]
    new const 
    szTableName[] = "vip_player"
    new const szBDName[] = "vip_player"
    new g_szNamePlayer[33][64];
    new 
    g_szPassPlayer[33][64];
    new 
    g_szFlagsPlayer[33][24];
    new 
    g_szDataPlayer[33][24];
    //Для регистрации VIP
    new g_szNamePlayer_VIP[64];
    new 
    g_szPassPlayer_VIP[64];
    new 
    g_szFlagsPlayer_VIP[24];
    new 
    g_szDataPlayer_VIP[24];
    //Удаление Записи
    new g_szNamePlayer_DEL[64];
    new 
    bool:IsPlayerLogin[33];                     //Вошел ли игрок в VIP
    #define REGISTER_COMMAND_VIP    "vip_login_reg"    //Регистрация нового VIP формат "ник" "пароль" "флаги" "дата окончания" пример "Hell Machine" "qwerty123" "abc" "16.09.2020"
    #define COMMAND_VIP            "vip_login"       //Вход для игрока "ник" "пароль"
    #define DEL_COMMAND_VIP         "vip_login_delete"    //Вход для игрока "ник" "пароль"
    #define MIN_SIMBOL_NICKNAME   3                  //Мин кол-во символов в Нике
    #define MIN_SIMBOL_PASSWORD   3                  //Мин кол-во символов в пароле
    #define VIP_REG_ADMIN_FLAG ADMIN_RCON            //Флаг для регистрации VIP & удалении VIP
    new g_Year,g_Month,g_Day                     //Текущее время(д,м,г)
    public plugin_init()
    {
        
    register_plugin(PLUGIN"1.0""daywer")
       
    SQL_SetAffinity"sqlite" );
       
    register_clcmd(REGISTER_COMMAND_VIP,"VIP_Register"   )
       
    register_clcmd(COMMAND_VIP,       "VIP_Login"      )
       
    register_clcmd(DEL_COMMAND_VIP,    "VIP_Login_Del"   )
       
    set_task(1.0"Sql_Init")
       
    register_clcmd("say /testvip","TestVip")
       
    Get_CurrTime()
    }   
    public 
    TestVip(id)
    {
       
    client_print(0,print_chat,"login %s pass %s flags %s data %s",g_szNamePlayer[id],g_szPassPlayer[id],g_szFlagsPlayer[id],g_szDataPlayer[i
    d
    ])
       if(
    VIP_Player_Has_Flag(id,"a"))client_print(0,print_chat,"Flag A")
    }
    //Удаление Записи
    public VIP_Login_Del(id)
    {
       if(!(
    get_user_flags(id) & VIP_REG_ADMIN_FLAG))
          return 
    PLUGIN_HANDLED
          
       
    new szArg1[64];
       
    read_argv1szArg163 );
       new 
    len1;
       
    formatex(g_szNamePlayer_DEL,63,"%s",szArg1)
       
    len1 strlen(g_szNamePlayer_DEL)
       
    //Check Valid Pw
       
    if(len1 <= MIN_SIMBOL_NICKNAME)
       {
          
          
    ColoredPrint(id"!t[VIP]!gМинимальное кол-во символов 3!");
          
    client_print(idprint_console,"[VIP]Минимальное кол-во символов 3!")
          return 
    PLUGIN_HANDLED;
       }
       if(
    ChecSpecialSymbol(g_szNamePlayer_DEL))
       {
          
    ColoredPrint(id"!t[VIP]!gНельзя использовать спец.символы");
          
    client_print(idprint_console"[VIP]Нельзя использовать спец.символы")
          return 
    PLUGIN_HANDLED;   
       }   
       
    Load_Sql_Delete(id)
       return 
    PLUGIN_HANDLED;
    }   
     
     
    //Регистрация Аккаунта
    public VIP_Register(id)
    {
       if(!(
    get_user_flags(id) & VIP_REG_ADMIN_FLAG))
          return 
    PLUGIN_HANDLED
          
       
    new szArg1[64], szArg2[64],szArg3[24],szArg4[24]
       
    read_argv1szArg163 );
       
    read_argv2szArg263 );
       
    read_argv3szArg323 );
       
    read_argv4szArg423 );
       new 
    len1,len2,len3,len4;
       
    formatex(g_szNamePlayer_VIP,63,"%s",szArg1)
       
    formatex(g_szPassPlayer_VIP,63,"%s",szArg2)
       
    formatex(g_szFlagsPlayer_VIP,23,"%s",szArg3)
       
    formatex(g_szDataPlayer_VIP,23,"%s",szArg4)
       
    len1 strlen(g_szNamePlayer_VIP)
       
    len2 strlen(g_szPassPlayer_VIP)
       
    len3 strlen(g_szFlagsPlayer_VIP)
       
    len4 strlen(g_szDataPlayer_VIP)
       
    //Check Valid Pw
       
    if(len1 <= MIN_SIMBOL_NICKNAME || len2 <=MIN_SIMBOL_PASSWORD ||len3 <= || len4 <=MIN_SIMBOL_PASSWORD )
       {
          
          
    ColoredPrint(id"!t[VIP]!gМинимальное кол-во символов 3!");
          
    client_print(idprint_console,"[VIP]Минимальное кол-во символов 3!")
          return 
    PLUGIN_HANDLED;
       }
       if(
    ChecSpecialSymbol(g_szNamePlayer_VIP) || ChecSpecialSymbol(g_szPassPlayer_VIP))
       {
          
    ColoredPrint(id"!t[VIP]!gНельзя использовать спец.символы");
          
    client_print(idprint_console"[VIP]Нельзя использовать спец.символы")
          return 
    PLUGIN_HANDLED;   
       }   
       
    Load_Sql_Register(id)
       return 
    PLUGIN_HANDLED;
    }   
     
     
    //Вход в VIP аккаунт
    public VIP_Login(id)
    {
       if(
    IsPlayerLogin[id])
       {
          
    ColoredPrint(id"!t[VIP]!gВы уже вошли в акканут!");
          
    client_print(idprint_console"[VIP]Вы уже вошли в акканут!")   
          return 
    PLUGIN_HANDLED;
       }
       new 
    szArg1[64], szArg2[64];
       
    read_argv1szArg163 );
       
    read_argv2szArg263 );
       new 
    len1,len2;
       
    format(g_szNamePlayer[id],63,"%s",szArg1)
       
    format(g_szPassPlayer[id],63,"%s",szArg2)
       
    len1 strlen(g_szNamePlayer[id])
       
    len2 strlen(g_szPassPlayer[id])
        
       if(
    CheckUseLogin(id))
       {
          
    ColoredPrint(id"!t[VIP]!gАккаунт уже используется!");
          
    client_print(idprint_console"[VIP]Аккаунт уже используется!")
          return 
    PLUGIN_HANDLED;
       }   
       
    //Check Valid Pw
       
    if(len1 <= MIN_SIMBOL_NICKNAME || len2 <=MIN_SIMBOL_PASSWORD)
       {
          
          
    ColoredPrint(id"!t[VIP]!gМинимальное кол-во символов 3!");
          
    client_print(idprint_console,"[VIP]Минимальное кол-во символов 3!")
          return 
    PLUGIN_HANDLED;
       }
       if(
    ChecSpecialSymbol(g_szNamePlayer[id]) || ChecSpecialSymbol(g_szPassPlayer[id]))
       {
          
    ColoredPrint(id"!t[VIP]!gНельзя использовать спец.символы");
          
    client_print(idprint_console"[VIP]Нельзя использовать спец.символы")
          return 
    PLUGIN_HANDLED;   
       }   
       
    Load_Sql(id)
       return 
    PLUGIN_HANDLED;
    }   
    //Sql
    //Загрузка sqlite базы
    public Sql_Init()
    {
        
    g_SqlTuple SQL_MakeDbTuple""""""szBDName );
        new 
    ErrorCode,Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error))
        if(
    SqlConnection == Empty_Handle)
            
    set_fail_state(g_Error)
            
        new 
    Handle:Queries
       
    new szSendQuery[350];
       
    format(szSendQuery,349,"CREATE TABLE IF NOT EXISTS %s (name varchar(63),password varchar(63),flags varchar(22),time varchar(22))",szTableName)
       
    Queries SQL_PrepareQuery(SqlConnection,szSendQuery)
        if(!
    SQL_Execute(Queries))
        {
            
    // if there were any problems
            
    SQL_QueryError(Queries,g_Error,charsmax(g_Error))
            
    set_fail_state(g_Error)
            
        }
        
    SQL_FreeHandle(Queries)   
        
    SQL_FreeHandle(SqlConnection)   
    }
    public 
    Load_Sql(id)
    {
       new 
    Data[1],szTemp[512];
        
    Data[0] = id 
        format
    (szTemp,charsmax(szTemp),"SELECT * FROM `%s` WHERE (`%s`.`name` = '%s')",szTableName,szTableName,g_szNamePlayer[id])
        
    SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
    }
    //Удаление записи
    //Регистрация
    public Load_Sql_Delete(id)
    {
       new 
    Data[1],szTemp[512];
        
    Data[0] = id 
        format
    (szTemp,charsmax(szTemp),"SELECT * FROM `%s` WHERE (`%s`.`name` = '%s')",szTableName,szTableName,g_szNamePlayer_DEL)
        
    SQL_ThreadQuery(g_SqlTuple,"register_client3",szTemp,Data,1)
    }
    //Регистрация
    public Load_Sql_Register(id)
    {
       new 
    Data[1],szTemp[512];
        
    Data[0] = id 
        format
    (szTemp,charsmax(szTemp),"SELECT * FROM `%s` WHERE (`%s`.`name` = '%s')",szTableName,szTableName,g_szNamePlayer_VIP)
        
    SQL_ThreadQuery(g_SqlTuple,"register_client2",szTemp,Data,1)
    }
    //Вход в аккаунт
    public register_client2(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
    {
        if(
    FailState == TQUERY_CONNECT_FAILED)
        {
            
    log_amx("Load - Could not connect to SQL database.  [%d] %s"ErrcodeError)
        }
        else if(
    FailState == TQUERY_QUERY_FAILED)
        {
            
    log_amx("Load Query failed. [%d] %s"ErrcodeError)
        }
        new 
    id
        id 
    Data[0]   
        if(
    SQL_NumResults(Query) < 1)
        {     
          new 
    szTemp[512]
            
    format(szTemp,charsmax(szTemp),"INSERT INTO `%s` ( `name` , `password`,`flags`,`time`)VALUES ('%s','%s','%s','%s');",
          
    szTableName,g_szNamePlayer_VIP,g_szPassPlayer_VIP,g_szFlagsPlayer_VIP,g_szDataPl
    ayer_VIP
    )
            
    SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
          
    client_print(idprint_console"[VIP]Аккаунт зарегистрирован!")
          new 
    szMsgTxt[256];
          
    format(szMsgTxt,255,"!t[VIP]!gАккаунт:!t%s !gпароль:!t%s !gфлаги:!t%s !gЗарегистрирован",g_szNamePlayer_VIP,g_szPassPlayer_VIP,g_szFlagsPlayer_VIP)
          
    ColoredPrint(idszMsgTxt);
        }
        else
        {
            new 
    szPW[64];
          
    SQL_ReadResult(Query1szPW63)
          if(!(
    equal(g_szPassPlayer_VIP[id],szPW)))
          {
             
    client_print(idprint_console"[VIP]Аккаунт уже существует")   
             
    ColoredPrint(id"!t[VIP]!gАккаунт уже существует!");
          }
          else
          {
             
    client_print(idprint_console"[VIP]Аккаунт уже существует")   
             
    ColoredPrint(id"!t[VIP]!gАккаунт уже существует!");
          }
        } 
        return 
    PLUGIN_HANDLED
    }
     
     
    //Вход в аккаунт
    public register_client3(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
    {
        if(
    FailState == TQUERY_CONNECT_FAILED)
        {
            
    log_amx("Load - Could not connect to SQL database.  [%d] %s"ErrcodeError)
        }
        else if(
    FailState == TQUERY_QUERY_FAILED)
        {
            
    log_amx("Load Query failed. [%d] %s"ErrcodeError)
        }
        new 
    id
        id 
    Data[0]   
        if(
    SQL_NumResults(Query) < 1)
        {     
          
    client_print(idprint_console"[VIP]Аккаунт не найден!")
          
    ColoredPrint(id"!t[VIP]!gАккаунт не найден!");
        }
        else
        {   
             new 
    szTemp[512]
             
    formatex(szTemp,511,"DELETE FROM `%s` WHERE `name` = '%s'",szTableName,g_szNamePlayer_DEL)
             
    SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
             
    client_print(idprint_console"[VIP]Аккаунт успешно удален")   
             
    ColoredPrint(id"!t[VIP]!gАккаунт успешно удален!");
        } 
        return 
    PLUGIN_HANDLED
    }
     
     
     
    //Вход в аккаунт
    public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
    {
        if(
    FailState == TQUERY_CONNECT_FAILED)
        {
            
    log_amx("Load - Could not connect to SQL database.  [%d] %s"ErrcodeError)
        }
        else if(
    FailState == TQUERY_QUERY_FAILED)
        {
            
    log_amx("Load Query failed. [%d] %s"ErrcodeError)
        }
        new 
    id
        id 
    Data[0]   
        if(
    SQL_NumResults(Query) < 1)
        {     
          
    client_print(idprint_console"[VIP]Аккаунт не найден!")   
          
    ColoredPrint(id"!t[VIP]!gАккаунт не найден!");   
        }
        else
        {
            new 
    szPW[64];
          
    SQL_ReadResult(Query1szPW63)
          if(!(
    equal(g_szPassPlayer[id],szPW)))
          {
             
    client_print(idprint_console"[VIP]Неправильный пароль!")   
             
    ColoredPrint(id"!t[VIP]!gНеправильный пароль");
             
    IsPlayerLogin[id] = false;
          }
          else
          {
             new 
    szData[24];
             
    SQL_ReadResult(Query3szData23)
             if(!
    is_player_vip_time(szData))
             {
                
    client_print(idprint_console"[VIP]Ваши привелегии закончились!Обратитесь к админу!")   
                
    ColoredPrint(id"!t[VIP]!gВаши привелегии закончились!Обратитесь к админу!");
                new 
    szTemp[512]
                
    formatex(szTemp,511,"DELETE FROM `%s` WHERE `name` = '%s'",szTableName,g_szNamePlayer[id])
                
    SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
             }
             else
             {
                new 
    szFlags[24];
                
    SQL_ReadResult(Query2szFlags23)
                
    format(g_szFlagsPlayer[id],23,"%s",szFlags)
                
    format(g_szDataPlayer[id],23,"%s"szData)
                
    client_print(idprint_console"[VIP]Вы успешно вошли в свой аккаунт!")   
                
    ColoredPrint(id"!t[VIP]!gВы успешно вошли в свой аккаунт!");
                
    IsPlayerLogin[id] = true;
                
    set_user_flags(idread_flagsg_szFlagsPlayer[id]))   
              
             }   
          }
        } 
        return 
    PLUGIN_HANDLED
    }
    //Конец карты
    public plugin_end()
    {
        
    SQL_FreeHandle(g_SqlTuple)
    }
    public 
    IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
    {
        
    SQL_FreeHandle(Query)
        
        return 
    PLUGIN_HANDLED
    }
    //Игрок заходит на сервер
    public client_putinserver(id)
    {
       
    g_szNamePlayer[id]    = ""
       
    g_szPassPlayer[id]    = ""
       
    g_szFlagsPlayer[id] = ""
       
    g_szDataPlayer[id]  = ""
       
    IsPlayerLogin[id]    = false;
    }
     
    //Проверки
    public ChecSpecialSymbol(szText[])
    {
       new 
    bool:Yes false;
       new 
    SpecSymbol[5]
       
    //Check
       
    SpecSymbol[0] =   containi(szText,"@")
       
    SpecSymbol[1] =   containi(szText,"-")
       
    SpecSymbol[2] =   containi(szText,"$")
       
    SpecSymbol[3] =   containi(szText,"%")
       
    SpecSymbol[4] =   containi(szText,"#")
       if(
    SpecSymbol[0] !=-||SpecSymbol[1] !=-||SpecSymbol[2] !=-1
       
    ||SpecSymbol[3] !=-||SpecSymbol[4] !=-1)
       {
          
    Yes true;
       }
       return 
    Yes;
    }   
    public 
    CheckUseLogin(id)
    {
       new 
    players[32], numberofplayers;
       new 
    playerid;
       new 
    bool:isLogin false;
       
    get_playersplayersnumberofplayers"a" );
        
       for ( new 
    0numberofplayersi++ )
       {
          
    playerid players[i];
          
          if(
    id!=playerid)
          {
             if(
    equali(g_szNamePlayer[id],g_szNamePlayer[playerid]))
             {
                
    isLogin true;
             }
          }
       }
       return 
    isLogin;
    }   
    //Немного быдло кода,совсем немножко =)
    public Get_CurrTime()
    {
       
    //Data
       
    new data[20]
       
    get_time("%d.%m.%Y"data19)
       
    replace_all(data19"."" ");
       new 
    i_year[5], i_month[5], i_day[5]
       
    parse(datai_day4i_month4,i_year4);
       
    g_Year str_to_num(i_year)
       
    g_Month str_to_num(i_month)
       
    g_Day  str_to_num(i_day)
    }
    //Что за бред?!
    stock is_player_vip_time(DT[])
    {
       new 
    yes 1;
       
    replace_all(DT13"."" ");
       new 
    is_year[5], is_month[5], is_day[5]
       
    parse(DTis_day4is_month4,is_year4);
       if(
    g_Year str_to_num(is_year)) yes 0;
       if(
    g_Month str_to_num(is_month)) if(g_Year >  str_to_num(is_year)) yes 0;
       if( 
    g_Month==str_to_num(is_month) && g_Day >= str_to_num(is_day)) yes 0;
       return 
    yes;
    }
    public 
    is_Player_Login(id) return IsPlayerLogin[id];
    public 
    VIP_Player_Has_Flag(id,flags[])
    {
       new 
    bool:flag;
       new 
    Flag contain(g_szFlagsPlayer[id],flags)
       if(
    Flag!= - 1)flag true;
       return 
    flag;
    }
     
    //Цветной чат
    //ColorChat
    stock ColoredPrint(const id, const input[], any:...)
    {
        new 
    count 1players[32]
        static 
    msg[512]
        
    vformat(msg512input3)
        
        
    replace_all(msg512"!g""^x04")
        
    replace_all(msg512"!y""^x01")
        
    replace_all(msg512"!t""^x03")
        
        if (
    idplayers[0] = id; else get_players(playerscount"ch")
        {
            for (new 
    0counti++)
            {
                if (
    is_user_connected(players[i]))
                {
                    
    message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                    
    write_byte(players[i]);
                    
    write_string(msg);
                    
    message_end();
                }
            }
        }
    }
     

    Вложения:

    • vip.sma
      Размер файла:
      14,8 КБ
      Просмотров:
      3
    :

Поделиться этой страницей

download cs by zombr

Покупка Админки/VIP

Купить прямо сейчас

download cs by zombr

ВАС ЗАБАНИЛИ?

ПОДАЙТЕ ЗАЯВКУ НА РОЗБАН!

download cs by zombr

АДМИН ОКАЗАЛСЯ НЕ ПРАВ?

ПОДАЙТЕ ЖАЛОБУ ПРЯМО СЕЙЧАС!