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

OpenSource команда kick по номеру слота

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

  1. ZeratuL1986 Пил пиво с админом

    Сообщения:
    164
    Спасибы:
    13
    Дата начала использования бота:
    1.03.2012
    подскажите как сделать, чтоб кикать по цифре а не по нику. !kick №слота
  2. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Код:
                //
                // !KICK (kick a player)
                // !K
                //
     
                else if( ( Command == "kick" || Command == "k" ) && !Payload.empty( ))
                {
                    if (!CMDCheck(CMD_kick, AdminAccess))
                    {
                        SendChat(player->GetPID(), m_GHost->m_Language->GetLang("lang_0005"));
                        return HideCommand;
                    }
         
                uint32_t Matches = 0;
                CGamePlayer *LastMatch = NULL;
                if(Payload.size() < 3 && UTIL_ToInt32(Payload) > 0 && UTIL_ToInt32(Payload) < 11)
                {
               
                LastMatch = GetPlayerFromSID( UTIL_ToInt32(Payload)-1 );
                if(LastMatch)
                Matches = GetPlayerFromNamePartial( LastMatch->GetName(), &LastMatch );
                else
                {
                  SendChat( player->GetPID(), "Слот ["+Payload+"] пуст");
                      return HideCommand;
                }
                }
                else
                Matches = GetPlayerFromNamePartial( Payload, &LastMatch );
     
                    if( Matches == 0 )
                    SendChat( player->GetPID(), m_GHost->m_Language->GetLang("lang_0055", Payload ) ); // UnableToKickNoMatchesFound
                    else if( Matches == 1)
                    {
                        // admins can't kick another admin
                        if ((IsAdmin(LastMatch->GetName()) || IsRootAdmin(LastMatch->GetName())) && !IsRootAdmin(User))
                        {
                            SendChat( player->GetPID(),  "Нельзя кикнуть админа!"); // "You can't kick an admin!"
                            return HideCommand;
                        }
                        // admins can't kick owner game
                        if (IsOwner(LastMatch->GetName()) && !IsRootAdmin(User))
                        {
                            SendChat( player->GetPID(), "Нельзя кикнуть создателя игры!" );  // You can't kick an owner or rootadmin!
                            return HideCommand;
                        }
                        // admins can't kick yourself
                        if (LastMatch->GetName() == User)
                        {
                            SendChat( player->GetPID(),  "Ты балван??? Самого себя выкинуть нельзя!"); // "You can't kick an admin!"
                            return HideCommand;
                        }
     
     
                        LastMatch->SetDeleteMe( true );
                        LastMatch->SetLeftReason( "Выкинут админом " + User );  // WasKickedByPlayer
     
                        if( !m_GameLoading && !m_GameLoaded )
                            LastMatch->SetLeftCode( PLAYERLEAVE_LOBBY );
                        else
                            LastMatch->SetLeftCode( PLAYERLEAVE_LOST );
     
                        if( !m_GameLoading && !m_GameLoaded )
                            OpenSlot( GetSIDFromPID( LastMatch->GetPID( ) ), false );
                    }
                    else
                        SendAllChat( m_GHost->m_Language->GetLang( "lang_0056", Payload ) ); // UnableToKickFoundMoreThanOneMatch
                }
    Doterok, evilmaker и ZeratuL1986 нравится это.
  3. ZeratuL1986 Пил пиво с админом

    Сообщения:
    164
    Спасибы:
    13
    Дата начала использования бота:
    1.03.2012
    спасибки) работает!
  4. evilmaker Старожила

    Сообщения:
    321
    Спасибы:
    28
    Сборка бота GHost:
    brtghost rev.185
    Дата начала использования бота:
    07.07.9999
    Skype:
    Мой статус
    переместите тему в "кодинг"
  5. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Если не понял, то команда работает как на слот так и на имя.
    Если будет меньше 3 знаков типа:
    !kick 4
    !kick 10
    то она ищет слот, а если 3 и более:
    !kick vas
    !kick pote
    то ищет по имени
  6. evilmaker Старожила

    Сообщения:
    321
    Спасибы:
    28
    Сборка бота GHost:
    brtghost rev.185
    Дата начала использования бота:
    07.07.9999
    Skype:
    Мой статус
    потом добавлю в раздел патчи...)
  7. AREST Ньюфаг

    Сообщения:
    14
    Спасибы:
    3
    Дата начала использования бота:
    2011

    закончилась с ошибкой 1>------ Построение начато: проект: ghost, Конфигурация: Release MySQL Win32 ------
    1>Компиляция...
    1>game.cpp
    1>.\game.cpp(4219) : error C2039: GetLang: не является членом "CLanguage"
    1> c:\users\user\desktop\файл\ghost one 1.7.266\ghost\language.h(29): см. объявление 'CLanguage'
    1>.\game.cpp(4241) : error C2039: GetLang: не является членом "CLanguage"
    1> c:\users\user\desktop\файл\ghost one 1.7.266\ghost\language.h(29): см. объявление 'CLanguage'
    1>.\game.cpp(4276) : error C2039: GetLang: не является членом "CLanguage"
    1> c:\users\user\desktop\файл\ghost one 1.7.266\ghost\language.h(29): см. объявление 'CLanguage'
    1>Журнал построения был сохранен в "file://c:\Users\user\Desktop\файл\GHost One 1.7.266\ghost\Release MySQL\BuildLog.htm"
    1>ghost - ошибок 3, предупреждений 0
    ========== Построение: успешно: 0, с ошибками: 1, без изменений: 1, пропущено: 0 ==========]

    прошу помочь с киком или киньте старый кик потому что я его удалил(
  8. AREST Ньюфаг

    Сообщения:
    14
    Спасибы:
    3
    Дата начала использования бота:
    2011
    исправил сам это походу для тех у кого хост оне

    //
    // !KICK (kick a player)
    // !K
    // !кик

    else if( ( Command == "kick" || Command == "k" || Command == "кик" || Command == "к" ) && !Payload.empty( ))
    {
    if (!CMDCheck(CMD_kick, AdminAccess))
    {
    SendChat(player->GetPID(), m_GHost->m_Language->YouDontHaveAccessToThatCommand( ));
    return HideCommand;
    }

    uint32_t Matches = 0;
    CGamePlayer *LastMatch = NULL;
    if(Payload.size() < 3 && UTIL_ToInt32(Payload) > 0 && UTIL_ToInt32(Payload) < 11)
    {

    LastMatch = GetPlayerFromSID( UTIL_ToInt32(Payload)-1 );
    if(LastMatch)
    Matches = GetPlayerFromNamePartial( LastMatch->GetName(), &LastMatch );
    else
    {
    SendChat( player->GetPID(), "Слот ["+Payload+"] пуст");
    return HideCommand;
    }
    }
    else
    Matches = GetPlayerFromNamePartial( Payload, &LastMatch );

    if( Matches == 0 )
    SendChat( player->GetPID(), m_GHost->m_Language->UnableToKickNoMatchesFound( Payload ) );
    else if( Matches == 1)
    {
    // admins can't kick another admin
    if ((IsAdmin(LastMatch->GetName()) || IsRootAdmin(LastMatch->GetName())) && !IsRootAdmin(User))
    {
    SendChat( player->GetPID(), "Нельзя кикнуть админа!"); // "You can't kick an admin!"
    return HideCommand;
    }
    // admins can't kick owner game
    if (IsOwner(LastMatch->GetName()) && !IsRootAdmin(User))
    {
    SendChat( player->GetPID(), "Нельзя кикнуть создателя игры!" ); // You can't kick an owner or rootadmin!
    return HideCommand;
    }
    // admins can't kick yourself
    if (LastMatch->GetName() == User)
    {
    SendChat( player->GetPID(), "Самого себя выкинуть нельзя!"); // "You can't kick an admin!"
    return HideCommand;
    }


    LastMatch->SetDeleteMe( true );
    LastMatch->SetLeftReason( "Выкинут из игры " + User ); // WasKickedByPlayer

    if( !m_GameLoading && !m_GameLoaded )
    LastMatch->SetLeftCode( PLAYERLEAVE_LOBBY );
    else
    LastMatch->SetLeftCode( PLAYERLEAVE_LOST );

    if( !m_GameLoading && !m_GameLoaded )
    OpenSlot( GetSIDFromPID( LastMatch->GetPID( ) ), false );
    }
    else
    SendAllChat( m_GHost->m_Language->UnableToKickFoundMoreThanOneMatch( Payload ) );
    }

    компиляция завершена
    Kirill-782, ZeratuL1986 и evilmaker нравится это.
  9. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    сударь пост ваш кривой и нарушает правила форума :D
    да код для оне был для брт чутка переделать надо
  10. AREST Ньюфаг

    Сообщения:
    14
    Спасибы:
    3
    Дата начала использования бота:
    2011
    все так же омг тока я заменил строки где бот не воспринимал GETLANG
  11. AREST Ньюфаг

    Сообщения:
    14
    Спасибы:
    3
    Дата начала использования бота:
    2011
    щаз про тестю
  12. AREST Ньюфаг

    Сообщения:
    14
    Спасибы:
    3
    Дата начала использования бота:
    2011
    вот тест прошел на 5
    пеинта нет так ,как винду переустановил показать и доказать не могу
  13. AREST Ньюфаг

    Сообщения:
    14
    Спасибы:
    3
    Дата начала использования бота:
    2011
    и че? я исправил код который мне не подошел мб еще кому пригодиться ,думаю вам надо пересмотреть правила ,а то скоро думаю дойдет и до того ,что глядеть даже нельзя будет
  14. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Код:
                    if (!CMDCheck(CMD_kick, AdminAccess))
                    {
                        SendChat(player->GetPID(), tr("бла бла бла"));
                        return HideCommand;
                    }
    
    так было бы проще
    и смысл моего 1 поста вам не понятен :fp:
  15. evilmaker Старожила

    Сообщения:
    321
    Спасибы:
    28
    Сборка бота GHost:
    brtghost rev.185
    Дата начала использования бота:
    07.07.9999
    Skype:
    Мой статус
    до 3.14зды оформление - главное суть поста.
  16. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Вот этот подойдет всем и городить нехуя ненадо...
    Код:
                //
                // !KICK (kick a player)
                // !K
                //
     
                else if( ( Command == "kick" || Command == "k" ) && !Payload.empty( ))
                {
                    if (!CMDCheck(CMD_kick, AdminAccess))
                    {
                        SendChat(player->GetPID(), "У вас нет прав на данную команду!");
                        return HideCommand;
                    }
       
                uint32_t Matches = 0;
                CGamePlayer *LastMatch = NULL;
                if(Payload.size() < 3 && UTIL_ToInt32(Payload) > 0 && UTIL_ToInt32(Payload) < 11)
                {
             
                LastMatch = GetPlayerFromSID( UTIL_ToInt32(Payload)-1 );
                if(LastMatch)
                Matches = GetPlayerFromNamePartial( LastMatch->GetName(), &LastMatch );
                else
                {
                  SendChat( player->GetPID(), "Слот ["+Payload+"] пуст");
                      return HideCommand;
                }
                }
                else
                Matches = GetPlayerFromNamePartial( Payload, &LastMatch );
     
                    if( Matches == 0 )
                    SendChat( player->GetPID(), "Нет совпадений!" );
                    else if( Matches == 1)
                    {
                        // admins can't kick another admin
                        if ((IsAdmin(LastMatch->GetName()) || IsRootAdmin(LastMatch->GetName())) && !IsRootAdmin(User))
                        {
                            SendChat( player->GetPID(),  "Нельзя кикнуть админа!");
                            return HideCommand;
                        }
                        // admins can't kick owner game
                        if (IsOwner(LastMatch->GetName()) && !IsRootAdmin(User))
                        {
                            SendChat( player->GetPID(), "Нельзя кикнуть создателя игры!" );
                            return HideCommand;
                        }
                        // admins can't kick yourself
                        if (LastMatch->GetName() == User)
                        {
                            SendChat( player->GetPID(),  "Ты балван??? Самого себя выкинуть нельзя!");
                            return HideCommand;
                        }
     
     
                        LastMatch->SetDeleteMe( true );
                        LastMatch->SetLeftReason( "Выкинут админом " + User );
     
                        if( !m_GameLoading && !m_GameLoaded )
                            LastMatch->SetLeftCode( PLAYERLEAVE_LOBBY );
                        else
                            LastMatch->SetLeftCode( PLAYERLEAVE_LOST );
     
                        if( !m_GameLoading && !m_GameLoaded )
                            OpenSlot( GetSIDFromPID( LastMatch->GetPID( ) ), false );
                    }
                    else
                        SendAllChat( player->GetPID(), "Найдено больше 1 совпадения!" );
                }
    Kirill-782, SysiphuS, silenser и 2 другим нравится это.
  17. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    я так же написал :D
  18. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    SendChat(player->GetPID(), tr("бла бла бла"));

    tr - исключительно БРТшная фича с ревизии так 170+
  19. silenser Давний приятель

    Сообщения:
    240
    Спасибы:
    3
    Сборка бота GHost:
    Ghost one be sisiee
    Дата начала использования бота:
    01.01.2012
    Спасибо за команду!