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

Help Хочу реализовать. . .

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

  1. Rio1 Наш человек

    Сообщения:
    68
    Спасибы:
    1
    1.как сделать чтобы бот давал мут в лобби, если игрок спамит ? -_-
    2. Как сделать приставку к названию игры? 5х5 мод Jo(k)er- (Приставка) ^_^

    3.[IMG] Видел тему но не видел самого кода , тока наброски тут

    4.Я Rootadmin почему я не могу в лобби свапать админов?
    bot_rootadmins = тд. и тп. o_O

    5. Подскажите куда сохраняется статистика, баны и тд. об игре (чтобы обнулить).
  2. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    1. Думаю стоит сделать проверку на частоту сообщений в EventPlayerChatToHost game_base.cpp
    2. Изменяя m_GameName game_base.cpp
    3. Нет смысла делать. Очень загрузит бот. И можно получить бан на других серверах пвпгн.
    4. Перечитай настройки. Там есть значение на свапинг админов.
    5. ghost.dbs
  3. Rio1 Наш человек

    Сообщения:
    68
    Спасибы:
    1
    1. Ищу а гугле)
    3. если что /*. . .*/ :)
    2.какую именно строчку подскажите пожалуйста , а то там таких m_GameName штук 10 минимум o_O
    4. у меня GHost One 1.7.266 и в ghost.cfg такова нет :newcry:
    5. Спс
  4. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    На вопросы "Как?" так же и ответил.
    В гугле мало что толковое будет.
    А делать полностью за тебя наверное никто не будет.
    Наводку дал. Дерзай.
    P.S.: По поводу флуда лучше все таки, наверное, будет организовать через CGamePlayer. В самом объекте проверять частоту сообщений.
  5. Aloha_Hawaii Старожила

    Сообщения:
    314
    Спасибы:
    33
    Сборка бота GHost:
    Ghost One 1.7.266
    1. через ценсорвордс сделай. писали про это
  6. microRUS Ньюфаг

    Сообщения:
    41
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    А можно по подробнее что это и где его взять?) Или хотя бы название полное и настоящие
  7. Aloha_Hawaii Старожила

    Сообщения:
    314
    Спасибы:
    33
    Сборка бота GHost:
    Ghost One 1.7.266
    bot_censorwords в конфиге. вроде туда пару букв часто встречаемых. ну и
    Код:
    # mute for x seconds, the first time a player curses
    bot_censormutefirstseconds = 0
    # mute for x seconds, the second time a player curses
    bot_censormutesecondseconds = 3
    как то так видимо. еще есть такая тема http://www.codelain.com/forum/index.php?topic=7204.0 ходят слухи, что она на ++
  8. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Уже не раз было проверено, лично сам ставил и на One, и на ++. Данный патч выполнен по той схеме, о чем написал Deals выше.

    При превышении числа сообщений в единицу времени на флудера вешает Mute, если он продолжает слать сообщения, будучи в mute, то получает кик и бан. Соответственно, для любителей юзать навороченные клавы, при посылке стрика из 10 строк, схватить бан тут как нечего делать.

    - В данной "версии" патча есть такая штука, что, если игрок слишком быстро спамит сообщениями, то после кика он может получить двойной или тройной бан (2-3 одинаковых записи в банлист), в зависимости от интенсивности посылки сообщений.
    - И ещё, действие данного патча распространяется как на lobby, так и на игру.

    Собственно как первое, так и второе можно допилить.
    I_aM_Fake нравится это.
  9. microRUS Ньюфаг

    Сообщения:
    41
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    Мне посоветовали взять с стелс переделать его на гхост и все, но взяв его я так и не понял как его переделать или же я его сувал не туда что он мне кучу ошибок из-за него выдавал
  10. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Из бейсика в си++? :D Останется разьве что только идея кода :D
  11. microRUS Ньюфаг

    Сообщения:
    41
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    LongMan, помню раньше всем без проблем помогал, а щас за мен просишь деньги...готов заплотить ключами от варика за несколько кодов возьмешь? Или только деньгами?
  12. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    хз создаешь вектор
    vector<uint32>  mute_control;
    (уже нe поню как в с++ объявлять,но вроде так)
    ОБЪЯВЛЯТЬ после "private:" в game_base.h
    создаешь функцию примерно следующего вида:
    CGameBase :: MuteControl(string &stroka,CGamePlayer * player)
    {
    //удаляем старые строки
    uint32 nTime = GetTickCount()-FLUDTIME-1000 ;//заменяешь FLUDTIME на время в СЕКУНДАХ
    for(vector<uint32> :: iterator i = mute_control.begin( ); i != mute_control.end( );)
    {
    if((*i)<nTime)
    i = mute_control.erase( i );
    else ++i;
    }
    //проверяем не флудит ли часом парнишь
    if(mute_control.size()>FLUDSTROK)//заменяешь на количество строк
    player->SetMuted(true);
    //добавляем строку в вектор
    mute_control.push_back(GetTickCount());
    }

    примерно так, тыкаешь эту функцию в гейм бейс и юзеаешь ее при каждом обращении юзера.
    в данном примере всего лишь одно правило если пользователь написал за FLUDTIME больше чем FLUDSTROK
    в его классе вызывается метод SetMuted, в моей версии бота это равносильно !mute playerName

    зы: уже дописал и вспомнил, что лучше юзать лист вместо вектора, но не уверен все ли верно c итераторами для листа, поэтому можешь тупо заменить слово vector на list и проверить
  13. slik Наш человек

    Сообщения:
    81
    Спасибы:
    0
    uint32
    Опечаточка вышла :smile:
  14. Rio1 Наш человек

    Сообщения:
    68
    Спасибы:
    1
    FLUDTIME-1000 -это флуд в течении 1минуты
  15. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    По поводу антифлуда.
    Создаете одну переменную типа uint32_t m_LastChatMessageTime ( GetTicks( ) ) в CGamePlayer в gameplayer.cpp(.h).
    Т.к. в EventPlayerChatToHost в CBaseGame передается указатель на текущего игрока - можно сделать следующим образом.
    if ( GetTicks( ) - player->GetLastChatMessageTime( ) <= 500 )
    {
    // игрок спамит, тратата, действия
    }
    
    player->SetLastChatMessageTime( GetTicks( ) );


    Собственно и все...
    Единственное что, нужно вставить так, чтоб не блокировало сообщения от других типов, т.к. туда входит смена команды, смена цвета, сложности и т.д.
  16. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    ОФФТОПИК: юзеры не роботы, и в определенный момент они могут написать и 3 сообщения в секунду, но это не повод считать их флудерами, ну а если юзер будет печатать постоянно со скоростью 3сообщения в секунду, то уже стоит их забанить.
  17. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    А кто говорит о бане то?
    Можно просто сделать по типу 3 варнинга.
    И вообще, если флудит - не отправлять пакетом сообщение игрокам, которое идет меньше n-ое количество милисек от предыдущего. Вместо этого самому флудящему юзверю отправить в SendChat типа "Вы печатаете слишком быстро, ваше сообщение проигнорировано." Вот и все. Он поймет что нужно печатать реже.