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

Solved Блок алиаса

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

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

    Сообщения:
    421
    Спасибы:
    3
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Немного нестандартная просьба... Нужна команда как блок определённой страны bot_deniedcountries только для серверов
  2. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Сделаем
  3. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Как хочешь определять какой сервер блочит? Т.е. по номерам, по адресу сервера, по айпи сервера, по алиасу сервера или наугад 1 блочить?
    Doterok нравится это.
  4. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    даешь по номерам?
  5. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    #1 в game_base.h создаем вектор в который будет кидать сервера, с которых не будет принимать народ
    vector<string> m_BannedServers; // server, which baaned in this game

    #2 сами угадайте где и что это
     if( Command == "commandname" && !Payload.empty() && !m_GameLoading && !m_GameLoaded && !m_GHost->m_BNETs.empty( )){
    stringstream SS;
    SS << Payload;
    string TargetServer;
    while( !SS.eof() ){
    SS >> TargetServer;
    if( TargetServer.size() == 1 ){
    int CountServer = UTIL_ToInt16(TargetServer) - 1;
    if( CountServer < m_GHost->m_BNETs.size() ){
    TargetServer = m_GHost->m_BNETs.at(CountServer)->GetServer();
    SendChat(player, "Заблокирован сервер " + TargetServer);
    m_BannedServers.push_back(TargetServer);
    } else {
    SendChat(player, "Ошибся цифрой, думай дальше");
    }
    } else {
    SendChat(player, "Параметр " + TargetServer + " не верен" );
    }
    }
    }

    #3 game_base.cpp встраиваем то, что будет выкидывать неугодных, вставляем сразу после инициализации JoinRealm в EventPlayerJoined
    for( vector<string>::iterator i = m_BannedServers.begin(); i != m_BannedServers.end(); ++i ){
    if( (*i) == JoinedRealm ){
    // Сюда стырить код выпиливания игрока, смотреть ниже когда проверка на бан делается.
    }
    }

    UPD: остальные плюшки завтра(06.10.2012 после 15:00 по Караганде), а то время позднее
    evilmaker и Doterok нравится это.
  6. Mr_LiSa Старожила

    Сообщения:
    421
    Спасибы:
    3
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    если моно ниже по алиасу, куда удобней ...
  7. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
     if( Command == "commandname" && !Payload.empty() && !m_GameLoading && !m_GameLoaded && !m_GHost->m_BNETs.empty( )){
    stringstream SS;
    SS << Payload;
    string TargetServer;
    while( !SS.eof() ){
    SS >> TargetServer;
    if( TargetServer.size() == 1 ){
    int CountServer = UTIL_ToInt16(Payload) - 1;
    if( CountServer < m_GHost->m_BNETs.size() ){
    TargetServer = m_GHost->m_BNETs.at(CountServer)->GetServer();
    SendChat(player, "Заблокирован сервер " + TargetServer);
    m_BannedServers.push_back(TargetServer);
    } else {
    SendChat(player, "Параметр " + TargetServer + " неверен");
    }
    } else {
    bool MatchFound = false;
    for( vector<CBNET *> :: iterator k = m_GHost->m_BNETs.begin(); k != m_GHost->m_BNETs.end(); ++k ){
    if ( TargetServer == (*k)->GetServerAlias() ){
    m_BannedServers.push_back((*k)->GetServer( ) );
    SendChat(player, "Заблокирован сервер " + (*k)->GetServer( ));
    MatchFound = true;
    }
    if( !MatchFound )
    SendChat( player, "Параметр " + TargetServer + " неверен");
    }
    }
    }
    }

    Сразу скажу, что если выставить одинаковые синонимы для серверов, то блочить будет оба сервера.
    Если блочить по номерам, то такого не произойдет. Ну и если кто не заметил, можно задавать больше 1 сервера на бан, указывать можно как и цифру так и синоним через пробел
    !Не делайте алиас равным одной букве, иначе команда не прокатит
    P.S> если указываете синоним, то надо 1 в 1, включая заглавные и строчные буквы
  8. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Плюшка #1
    Разблокировка сервера, если вдруг передумал
        if(Command == "commandname" && !Payload.empty() && !m_BannedServers.empty()){
          stringstream SS;
          SS << Payload;
          string TargetServer;
          while( !SS.eof() ){
            SS >> TargetServer;
            if( TargetServer.size() == 1 ){
              unsigned int Count = UTIL_ToUInt16( TargetServer ) - 1;
              TargetServer = m_GHost->m_BNETs.at(Count)->GetServer();
            } else {
              for( vector<CBNET *> :: iterator k = m_GHost->m_BNETs.begin(); k != m_GHost->m_BNETs.end(); ++k ){
            if( TargetServer == (*k)->GetServerAlias() )
              TargetServer = (*k)->GetServer();
              }
            }
            for( vector<string> :: iterator i = m_BannedServers.begin(); i != m_BannedServers.end(); ){
              if( (*i) == TargetServer ){
            SendChat(player, "Разблокирован сервер " + (*i));
            i = m_BannedServers.erase( i );
              }else
            ++i;
            }
            
          }
        }

    Не тестировалось :D
    evilmaker и Doterok нравится это.
  9. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Плюшка #2, список заблокированных серверов.
     if( Command == "commandname" ){
    if( m_BannedServers.empty() )
    SendChat(player, "Нету заблокированных серверов");
    else
    {
    SendChat(player, "Список заблокированных серверов:" );
    for( vector<string>::iterator i = m_BannedServers.begin(); i != m_BannedServers.end(); ++i )
    SendChat(player, (*i) );
    }
    }

    p.s. вообще все было бы легче через список делать, но что уж теперь.
    p.p.s следующий
    evilmaker и Doterok нравится это.
  10. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    разошелся мир :)
  11. Begzod Гуру

    Сообщения:
    141
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    10.06.2010
    Подробнее можна? а то я не понял именно где вставлять эти коды
  12. Sparko_Dima Старожила

    Сообщения:
    744
    Спасибы:
    104
    Сборка бота GHost:
    Ghost Sparko
    Дата начала использования бота:
    10.10.09
    game_base.cpp
  13. Begzod Гуру

    Сообщения:
    141
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    10.06.2010
    В каком строке может быть? У меня Ghost One от текена
  14. Sparko_Dima Старожила

    Сообщения:
    744
    Спасибы:
    104
    Сборка бота GHost:
    Ghost Sparko
    Дата начала использования бота:
    10.10.09
    JoinRealm в EventPlayerJoined
  15. Begzod Гуру

    Сообщения:
    141
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    10.06.2010
    Это не подробнее, я делаю так у меня ошибки одни..
  16. Рачело Ньюфаг

    Сообщения:
    22
    Спасибы:
    4
    Дата начала использования бота:
    11.20.2010
    После этого пробни
    Begzod нравится это.
  17. Begzod Гуру

    Сообщения:
    141
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    10.06.2010
    Сделал.
    Код:
     if( Command == "commandname" && !Payload.empty() && !m_GameLoading && !m_GameLoaded && !m_GHost->m_BNETs.empty( )){
    stringstream SS;
    SS << Payload;
    string TargetServer;
    while( !SS.eof() ){
    SS >> TargetServer;
    if( TargetServer.size() == 1 ){
    int CountServer = UTIL_ToInt16(Payload) - 1;
    if( CountServer < m_GHost->m_BNETs.size() ){
    TargetServer = m_GHost->m_BNETs.at(CountServer)->GetServer();
    SendChat(player, "Заблокирован сервер " + TargetServer);
    m_BannedServers.push_back(TargetServer);
    } else {
    SendChat(player, "Параметр " + TargetServer + " неверен");
    }
    } else {
    bool MatchFound = false;
    for( vector<CBNET *> :: iterator k = m_GHost->m_BNETs.begin(); k != m_GHost->m_BNETs.end(); ++k ){
    if ( TargetServer == (*k)->GetServerAlias() ){
    m_BannedServers.push_back((*k)->GetServer( ) );
    SendChat(player, "Заблокирован сервер " + (*k)->GetServer( ));
    MatchFound = true;
    }
    if( !MatchFound )
    SendChat( player, "Параметр " + TargetServer + " неверен");
    }
    }
    }
    }
    Не зная куда закидовать этот код, я закинул на gameadmin.cpp и у меня вообще не где неработает это команда
  18. Guard Старожила

    Сообщения:
    473
    Спасибы:
    47
    Сборка бота GHost:
    Ghost++ RAKAL Edition
    Дата начала использования бота:
    00.00.2009
    Skype:
    Мой статус
    Спорим работает? В админ игре будет, если без ошибок скомпилировал.
    Begzod нравится это.
  19. Begzod Гуру

    Сообщения:
    141
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    10.06.2010
    Код:
    vector<string> m_BannedServers; // server, which baaned in this game 
    Возле чего надо код вставить?
    У меня стоить где "public:"
    Код:
    1>------ Построение начато: проект: ghost, Конфигурация: Release MySQL Win32 ------
    1>Компиляция...
    1>game_admin.cpp
    1>.\game_admin.cpp(911) : warning C4018: <: несоответствие типов со знаком и без знака
    1>Компоновка...
    1>Создание кода
    1>Создание кода завершено
    1>Внедрение манифеста...
    1>Журнал построения был сохранен в "file://d:\Путь Ghost One\ghost\Release MySQL\BuildLog.htm"
    1>ghost - ошибок 0, предупреждений 1
    ========== Построение: успешно: 1, с ошибками: 0, без изменений: 1, пропущено: 0 ==========
    1>.\game_admin.cpp(911) : warning C4018: <: несоответствие типов со знаком и без знака это ведь не так важно?
  20. Sparko_Dima Старожила

    Сообщения:
    744
    Спасибы:
    104
    Сборка бота GHost:
    Ghost Sparko
    Дата начала использования бота:
    10.10.09
    ты хостуешь админ игрой?