1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Debug acc, работает не правильно

Тема в разделе 'Кодинг/Собственные решения', создана пользователем Doterok, 26 сен 2012.

  1. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Пиши !асс ник 1 0
    выдаёт Admin ник already doesn't have access to access to delban
    Когда пиши !асс 1 1 то норм добавляет команду,
    Так же норм работает !асс 1 и !асс 0
    Одним словом не убирает команды по одной :D
    Код:
    //
    // !ACCESS , !ACCLST, !ACC, !A
    //
     
    else if( ( Command == "access" || Command == "acc" || Command == "acclst" || Command == "a" ) && RootAdminCheck)
    {
    // show available commands
    if (Payload.empty() || Command == "acclst")
    {
    string cmds = string();
    for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
    {
    if (m_GHost->CommandAllowedToShow(m_GHost->m_Commands[i]))
    {
    cmds +=m_GHost->m_Commands[i]+"["+UTIL_ToString(i)+"] ";
     
    if (i<m_GHost->m_Commands.size()-1)
    cmds +=" ";
    }
    }
    QueueChatCommand( cmds, User, Whisper);
    return;
    }
    uint32_t access = 0;
    bool isAdmin = false;
    string saccess = string();
    string cmd = string();
    string acc = string();
    string suser = GetPlayerFromNamePartial(Payload);
    if (suser.empty())
    suser = Payload;
    uint32_t scmd = 0;
    uint32_t sacc = 0;
    uint32_t Mask = 1;
    uint32_t son = 0;
    bool showonly = true;
     
    if( Payload.find( " " )!= string :: npos)
    {
    showonly = false;
     
    stringstream SS;
    SS<<Payload;
    SS>>suser;
    SS>>scmd;
    if( SS.fail( )  )
    {
    QueueChatCommand( tr("lang_1095") , User, Whisper ); // bad input #2 to access command"
    return;
    }
    SS>>sacc;
    if( SS.fail( )  )
    {
    // acc suser 1 or 0 : set access to all commands or none.
    isAdmin = IsAdmin(suser);
    if (!isAdmin)
    {
    QueueChatCommand( tr("lang_1096", "$USER$", suser, "$SERVER$", m_Server), User, Whisper); //  suser+" is not an admin on "+m_Server
    return;
    }
    if (scmd == 1)
    access = CMDAccessAll();
    else
    access = 0;
    m_GHost->m_DB->AdminSetAccess(m_Server, suser, access);
    UpdateAccess( suser, access);
    for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
    {
    cmd = m_GHost->Commands(i);
    if (access & Mask)
    acc = "1";
    else
    acc = "0";
    if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
    {
    if (saccess.length()>0)
    saccess +=", ";
    saccess +=cmd;
    }
    Mask = Mask * 2;
    }
    QueueChatCommand( tr("lang_1097", "$USER$", suser, "$ACCESS$", saccess), User, Whisper); // suser+" can: "+saccess
    return;
    }
    if (scmd>=m_GHost->m_Commands.size())
    {
    QueueChatCommand( tr("lang_1098", UTIL_ToString(m_GHost->m_Commands.size()-1)), User, Whisper ); //  "cmd must be as high as "+UTIL_ToString(m_GHost->m_Commands.size()-1)
    return;
    }
    if (sacc!=0 && sacc!=1)
    {
    QueueChatCommand( tr("lang_1099"), User, Whisper ); // acc must be 0 or 1
    return;
    }
    }
    else
    showonly = true;
     
     
     
    isAdmin = IsAdmin(suser);
    access = LastAccess();
     
    if (!isAdmin)
    QueueChatCommand( tr("lang_1096", "$USER$", suser, "$SERVER$", m_Server), User, Whisper); // suser+" is not an admin on "+m_Server
    else
    if (showonly)
    // show currently accessable commands
    {
    for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
    {
    cmd = m_GHost->Commands(i);
    if (access & Mask)
    acc = "1";
    else
    acc = "0";
    if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
    {
    if (saccess.length()>0)
    saccess +=", ";
    saccess +=cmd;
    }
    Mask = Mask * 2;
    }
    QueueChatCommand( tr("lang_1097", "$USER$", suser, "$ACCESS$", saccess), User, Whisper); // suser+" can: "+saccess
    } else
    // set access
    {
    Mask = 1;
    if (scmd != 0)
    for (unsigned int k=1;k<=scmd;k++)
    Mask = Mask * 2;
    if (Mask > access)
    son = 0;
    else
    son = access & Mask;
    if (son==sacc || son==Mask)
    {
    if (sacc == 0)
    {
    QueueChatCommand(tr("lang_1100", "$ADMIN$", suser, "$ACCESS$", m_GHost->m_Commands[scmd]), User, Whisper); // Admin "+suser+ " already doesn't have access to "+m_GHost->m_Commands[scmd]
    }
    else
    {
    QueueChatCommand(tr("lang_1101", "$ADMIN$", suser, "$ACCESS$", m_GHost->m_Commands[scmd]), User, Whisper); // "Admin "+suser+ " already has access to "+m_GHost->m_Commands[scmd]
    }
    return;
    }
    if (sacc == 1)
    access+= Mask;
    else
    access -= Mask;
    m_GHost->m_DB->AdminSetAccess(m_Server, suser, access);
    UpdateAccess( suser, access);
    Mask = 1;
    for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
    {
    cmd = m_GHost->Commands(i);
    if (access & Mask)
    acc = "1";
    else
    acc = "0";
    if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
    {
    if (saccess.length()>0)
    saccess +=", ";
    saccess +=cmd;
    }
    Mask = Mask * 2;
    }
    QueueChatCommand( tr("lang_1097", suser, saccess) , User, Whisper); // suser+" can: "+saccess
    }
    }
    Вот код команды !асс
  2. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Префикс поправил, тему куда надо перенес. Это "намек"
    Можно мне поподробней, что должна делать команда и почему вы считаете, что она работает неправильно
  3. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    так скажем рут команда с помощью которой можно снимать/давать команды у админов)
    !асс 1 (дать все команды там 12 их)-работает
    !асс 0 (снять все) -работает
    !асс 1 1, !асс 2 0 (даёт по одной команде)-работает
    !асс 1 0, 2 0 и тп (снимает по одной команде не работает)
  4. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Ух, откопал GhostOne, запустил. Да там косячёк, бум думать
  5. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    хм, у меня на ghostone норм было, а вот на брт заморосил что-то :(
  6. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    я спецом One качнул, прогонял на нем, таже фигня. Фикс#1, гарантия 0%, не тестировалось.
    Код:
                            if (son==sacc || son==Mask)
                            {
                                if (sacc == 0)
                                {
                                    QueueChatCommand("Admin "+suser+ " already doesn't have access to "+m_GHost->m_Commands[scmd], User, Whisper);
                                }
                                else
                                {
                                    QueueChatCommand("Admin "+suser+ " already has access to "+m_GHost->m_Commands[scmd], User, Whisper);
                                }
                                return;
                            }
    меняем на
    Код:
                            if ( son == Mask ){
                              QueueChatCommand("Admin "+suser+ " already doesn't have access to "+m_GHost->m_Commands[scmd], User, Whisper);
                              return;
                            } else if ( son == sacc ) {
                              QueueChatCommand("Admin "+suser+ " already has access to "+m_GHost->m_Commands[scmd], User, Whisper);
                              return;
                            }
    Фишка как раз в этом блоке. Когда ты пытаешься снять доступ тебе при любом исходе вылетит птичка в виде "already doesn't have access to", даже если у админа доступ есть. Протестируй, отпишись. Не поможет - еще ченить сварганим
    Doterok нравится это.
  7. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Тоже самое :(
  8. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Так, только сейчас дошло что всё работает. Лишняя паника.
    Не нужно ничего нового, просто почитай как ей пользоваться. Какие права нужно удалить/дать?
  9. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Лонг нифига оно не работает. Принцип действия - !acc <имя админа> <номер команды от 0 до 11 вроде бы> <1 - дать, 0 - забрать>
    Выдавать оно выдает, а когда пытаешься забрать - пишет фигу, а точнее что у админа уже нету этого права, и забрать посему не может.
    Doterok нравится это.
  10. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    вот именно)
    Все пытался забрать
  11. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Мне лень проверять, но я думаю за 2 года ничего не изменилось. Всё должно работать.
  12. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Ну изложи свой вариант как бы ты снял команду бана)
    !асс 0 0 не катит)
  13. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Луууул, оригинальный не работает, а мой - да. Мир, своруй плиз. Мне лень.
  14. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Кот, стыренный у Лонга.
    Код:
                    //
                    // !ACCESS , !ACCLST, !ACC, !A
                    //
     
                    if( ( Command == "access" || Command == "acc" || Command == "acclst" || Command == "a" ) && RootAdminCheck)
                    {
                    // show available commands
                        if (Payload.empty() || Command == "acclst")
                        {
                            string cmds = string();
                            for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
                            {
                                if (m_GHost->CommandAllowedToShow(m_GHost->m_Commands[i]))
                                {
                                    cmds +=m_GHost->m_Commands[i]+"["+UTIL_ToString(i)+"] ";
     
                                    if (i<m_GHost->m_Commands.size()-1)
                                        cmds +=" ";
                                }
                            }
                            QueueChatCommand( cmds, User, Whisper);
                            return;
                        }
                        uint32_t access = 0;
                        bool isAdmin = false;
                        string saccess = string();
                        string cmd = string();
                        string acc = string();
                        string suser = GetPlayerFromNamePartial(Payload);
                        if (suser.empty())
                            suser = Payload;
                        uint32_t scmd = 0;
                        uint32_t sacc = 0;
                        uint32_t Mask = 1;
                        uint32_t son = 0;
                        bool showonly = true;
     
                        if( Payload.find( " " )!= string :: npos)
                        {
                            showonly = false;
     
                            stringstream SS;
                            SS<<Payload;
                            SS>>suser;
                            SS>>scmd;
                            if( SS.fail( )  )
                            {
                                QueueChatCommand( "bad input #2 to access command", User, Whisper );
                                return;
                            }
                            SS>>sacc;
                            if( SS.fail( )  )
                            {
                        // acc suser 1 or 0 : set access to all commands or none.
                                isAdmin = IsAdmin(suser);
                                if (!isAdmin)
                                {
                                    QueueChatCommand( suser+" is not an admin on "+m_Server, User, Whisper);
                                    return;
                                }
                                if (scmd == 1)
                                    access = CMDAccessAll();
                                else
                                    access = 0;
                                m_GHost->m_DB->AdminSetAccess(m_Server, suser, access);
                                UpdateAccess( suser, access);
                                for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
                                {
                                    cmd = m_GHost->Commands(i);
                                    if (access & Mask)
                                        acc = "1";
                                    else
                                        acc = "0";
                                    if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
                                    {
                                        if (saccess.length()>0)
                                            saccess +=", ";
                                        saccess +=cmd;
                                    }
                                    Mask = Mask * 2;
                                }
                                QueueChatCommand( suser+" can: "+saccess, User, Whisper);
                                return;
                            }
                            if (scmd>=m_GHost->m_Commands.size())
                            {
                                QueueChatCommand( "cmd must be as high as "+UTIL_ToString(m_GHost->m_Commands.size()-1), User, Whisper );
                                return;
                            }
                            if (sacc!=0 && sacc!=1)
                            {
                                QueueChatCommand( "acc must be 0 or 1", User, Whisper );
                                return;
                            }
                        }
                        else
                            showonly = true;
     
     
     
                        isAdmin = IsAdmin(suser);
                        access = LastAccess();
                     
                        if (!isAdmin)
                            QueueChatCommand( suser+" is not an admin on "+m_Server, User, Whisper);
                        else
                        if (showonly)
                    // show currently accessable commands
                        {
                            for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
                            {
                                cmd = m_GHost->Commands(i);
                                if (access & Mask)
                                    acc = "1";
                                else
                                    acc = "0";
                                if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
                                {
                                    if (saccess.length()>0)
                                        saccess +=", ";
                                    saccess +=cmd;
                                }
                                Mask = Mask * 2;
                            }
                            QueueChatCommand( suser+" can: "+saccess, User, Whisper);
                        } else
                    // set access
                        {
                            Mask = 1;
                            if (scmd != 0)
                            for (unsigned int k=1;k<=scmd;k++)
                                    Mask = Mask * 2;
                            if (Mask > access)
                                son = 0;
                            else
                                son = access & Mask;
                            if (son==sacc || son==Mask)
                            {
                                if (sacc == 0)
                                {
                                    QueueChatCommand("Admin "+suser+ " already doesn't have access to "+m_GHost->m_Commands[scmd], User, Whisper);
                                }
                                else
                                {
                                    QueueChatCommand("Admin "+suser+ " already has access to "+m_GHost->m_Commands[scmd], User, Whisper);
                                }
                                return;
                            }
                            if (sacc == 1)
                                access+= Mask;
                            else
                                access -= Mask;
                            m_GHost->m_DB->AdminSetAccess(m_Server, suser, access);
                            UpdateAccess( suser, access);
                            Mask = 1;
                            for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
                            {
                                cmd = m_GHost->Commands(i);
                                if (access & Mask)
                                    acc = "1";
                                else
                                    acc = "0";
                                if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
                                {
                                    if (saccess.length()>0)
                                        saccess +=", ";
                                    saccess +=cmd;
                                }
                                Mask = Mask * 2;
                            }
                            QueueChatCommand( suser+" can: "+saccess, User, Whisper);
                        }
                    }
    
    Лонг надеюсь оценил первую строчку :D
    Doterok нравится это.
  15. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Она походу стырена у меня :)
    щас тестану
  16. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Не помогло :(
  17. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Код:
    //
    // !ACCESS , !ACCLST, !ACC
    //
     
    else if(( Command == "access" || Command == "acc" || Command == "acclst") && RootAdminCheck)
    {
    // show available commands
    if (Payload.empty() || Command == "acclst")
    {
    string cmds = string();
    for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
    {
    if (m_GHost->CommandAllowedToShow(m_GHost->m_Commands[i]))
    {
    cmds +=m_GHost->m_Commands[i]+"["+UTIL_ToString(i)+"] ";
     
    if (i<m_GHost->m_Commands.size()-1)
    cmds +=" ";
    }
    }
    SendAllChat( cmds );
    return HideCommand;
    }
    uint32_t access = 0;
    bool isAdmin = false;
    string saccess = string();
    string cmd = string();
    string acc = string();
    string suser = Payload;
    uint32_t scmd = 0;
    uint32_t sacc = 0;
    uint32_t Mask = 1;
    uint32_t son = 0;
    bool showonly = true;
     
    if( Payload.find( " " )!= string :: npos)
    {
    showonly = false;
     
    stringstream SS;
    SS<<Payload;
    SS>>suser;
    SS>>scmd;
    if( SS.fail( )  )
    {
    SendAllChat( tr("lang_1154") ); //  "bad input #2 to access command"
    return HideCommand;
    }
    SS>>sacc;
    if( SS.fail( )  )
    {
    // acc suser 1 or 0 : set access to all commands or none.
    for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
    {
    if( (*i)->GetServer( ) == m_Server)
    {
    isAdmin = (*i)->IsAdmin( suser);
    break;
    }
    }
    if (!isAdmin)
    {
    SendAllChat( tr("lang_1155", "$USER$", suser, "$SERVER$", m_Server) );  // suser+" is not an admin on "+m_Server
    return HideCommand;
    }
    if (scmd == 1)
    access = CMDAccessAll();
    else
    access = 0;
    m_GHost->m_DB->AdminSetAccess(m_Server, suser, access);
    for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
    {
    if( (*i)->GetServer( ) == m_Server)
    {
    (*i)->UpdateAccess( suser, access);
    break;
    }
    }
    for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
    {
    cmd = m_GHost->Commands(i);
    if (access & Mask)
    acc = "1";
    else
    acc = "0";
     
    bool allowedtoshow = false;
    if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
    {
    if (saccess.length()>0)
    saccess +=", ";
    saccess +=cmd;
    }
    Mask = Mask * 2;
    }
    SendAllChat( tr("lang_1155", "$USER$", suser, "$ACCESS$", saccess) ); // suser+" can: "+saccess
    return HideCommand;
    }
    if (scmd>=m_GHost->m_Commands.size())
    {
    SendAllChat( tr("lang_1156", UTIL_ToString(m_GHost->m_Commands.size()-1) )); // "cmd must be as high as "+UTIL_ToString(m_GHost->m_Commands.size()-1)
    return HideCommand;
    }
    if (sacc!=0 && sacc!=1)
    {
    SendAllChat( tr("lang_1157")); // "acc must be 0 or 1"
    return HideCommand;
    }
    }
    else
    showonly = true;
     
    isAdmin = false;
    for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
    {
    if( (*i)->GetServer( ) == player->GetSpoofedRealm( ) && (*i)->IsAdmin( suser ) )
    {
    isAdmin = true;
    access = (*i)->LastAccess();
    break;
    }
    }
     
    if (!isAdmin)
    SendAllChat( tr("lang_1155", "$USER$", suser, "$SERVER$", m_Server) ); // suser+" is not an admin on "+m_Server
    else
    if (showonly)
    // show currently accessable commands
    {
    for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
    {
    cmd = m_GHost->Commands(i);
    if (access & Mask)
    acc = "1";
    else
    acc = "0";
    if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
    {
    if (saccess.length()>0)
    saccess +=", ";
    saccess +=cmd;
    }
    Mask = Mask * 2;
    }
    SendAllChat( tr("lang_1155", "$USER$", suser, "$ACCESS$", saccess) ); // suser+" can: "+saccess
    } else
    // set access
    {
    Mask = 1;
    if (scmd != 0)
    for (unsigned int k=1;k<=scmd;k++)
    Mask = Mask * 2;
    if (Mask > access)
    son = 0;
    else
    son = access & Mask;
    if (son==sacc)
    {
    if (sacc == 0)
    {
    SendAllChat(tr("lang_1158", "$USER$", suser, "$CMD$", m_GHost->m_Commands[scmd])); // "Admin "+suser+ " already doesn't have access to "+m_GHost->m_Commands[scmd]
    }
    else
    {
    SendAllChat(tr("lang_1159", "$USER$", suser, "$CMD$", m_GHost->m_Commands[scmd])); // "Admin "+suser+ " already has access to "+m_GHost->m_Commands[scmd]
    }
    return HideCommand;
    }
    if (sacc == 1)
    access+= Mask;
    else
    access -= Mask;
    m_GHost->m_DB->AdminSetAccess(m_Server, suser, access);
    for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
    {
    if( (*i)->GetServer( ) == m_Server)
    {
    (*i)->UpdateAccess( suser, access);
    break;
    }
    }
    Mask = 1;
    for (unsigned int i=0; i<=m_GHost->m_Commands.size()-1; i++)
    {
    cmd = m_GHost->Commands(i);
    if (access & Mask)
    acc = "1";
    else
    acc = "0";
    if (acc =="1" && m_GHost->CommandAllowedToShow(cmd))
    {
    if (saccess.length()>0)
    saccess +=", ";
    saccess +=cmd;
    }
    Mask = Mask * 2;
    }
    SendAllChat( tr("lang_1155", "$USER$", suser, "$ACCESS$", saccess)); // user+" can: "+saccess
    }
    }
    
    с game.cpp Вот он работает мб кто подправит его под bnet.cpp ? :)
  18. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    ясно где оно у Лонга работает. Вот хулиган, ввел нас в заблуждение. Глянем. Через часок только
  19. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Код:
    if (son==sacc)
    не верю в это, но попробуй в том самом блоке изначальном поменять только if
    Doterok нравится это.
  20. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Вот он, вот он код моей мечты!
    Спасибо мир работает)