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

!warn VS !ban

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

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

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    Привет.
    Вобщем.
    Имеется команда !warn и бан !ban, при наличие нолика в строке:
    ### если 1, то заменяет !ban/!bl на !warn/!wl
    bot_replacebanwithwarn = 0
    будет просто банить (не важно что ты напишешь !warn или !ban, всеравно будет бан).

    я хочу чтобы было следующем образом:
    1. при выключеной команде "bot_replacebanwithwarn = 0", работала команда "!warn",
    пример:!warn test(name) = игрок получил предупреждение.
    !Ban test(name) = игрок забанен.
    (команды !bl остались прежниме, тоисть простой бан)


    2. так как команда !warn будет использоватся только на SF игроков, возможно ли при наборе N количестве варнов, не банился а просто удалялся из сейф листа -_-

    заранее спасибо
  2. rssrcnn Парнишка с небывалым умом

    Сообщения:
    114
    Спасибы:
    0
    хм, а первое, как ты описал так и работает, не?
  3. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    нет.
    при нолике в етой команде, будеет только бан (не важно напишешь ты !Ban или !warn = всераравно будет бан).
    хочу чтобы было и то и другое :spy:
  4. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Rob, ты что-то путаешь, когда стоит значение 0, то что выпишешь, то и выдает. Пропишешь варн будет варн, пропишешь бан - будет бан. Сие проверено. По моему там надо !addwarn, глянь game.cpp какими командами что вызывается. По дефолту варны повешены только на !addwarn, хотя в комментах написано еще и !warn
  5. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    Мде, что-то я не догледел. :facepalm:

    А по-поводу второго...
    при наборе N количества варнов сначало игрока удаляло с сейф-листа ну а потом банило как счас....

    Осуществимо? :spy:
  6. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    незнаю как за SL
    но по варнам, да я юзал !wl и норм все было (варнило ласта)
    а если там не нолик, то кто писал !Bl (наглые админы, хотя игрока дисконтнуло) оно защитывало !wl
    тоесть replace идет как замена... пишешь !ban будет !warn и наоборот, а не всегда ban
  7. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    ### если 1, то заменяет !ban/!bl на !warn/!wl


    пс не засырай тему.
  8. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Счас при наборе N варнов банит и снимает админку, если есть. Насчет снятия сейф листа не уверен, я попробую поменять.
  9. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
  10. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    я тут глянул мельком. Короче команды выдачи варна на канале и в игре различаются.
    Ищи это, править будем тут: (в game.cpp, т.е. для выдачи варнов в игре)
    Код:
    void CGame :: WarnPlayer( CDBBan *LastMatch, string Reason, string User)
    в нем ищи, когда достигается лимит варнов(почти в самом начале):
    Код:
    if(WarnCount >= m_GHost->m_BanTheWarnedPlayerQuota)
    Внутри этого условия добавь проверку на сейф лист, если проходит - удаление из сейф листа, я надеюсь сообразишь куда.
    Код:
    if (IsSafe(BanPlayer)){			
    			m_GHost->m_Callables.push_back(m_GHost->m_DB->ThreadedSafeRemove( LastMatch->GetServer( ), BanPlayer));
    		}
    Можешь для приличия добавить:
    ищи внутри условия if (m_GHost->m_NotifyBannedPlayers), оно почти в самом конце будет
    после:
    Код:
    if (isAdmin)
    sBReason = "You are no longer an admin!";
    добавь вот это:
    Код:
    if (IsSafe(BanPlayer))
    sBReason = "Вас исключены из сейф листа или что то наподобие этого";
    Тогда игрока еще будет уведомлять об исключении из списка(при bot_notifybannedplayers = 1).
    Есть еще команда выдачи варнов на канале в БНете, но она реализована иначе чутка, ее не трогал, т.к. думаю что тебе надо именно выдача варнов в игре
    P.S. протестил, у меня игрок вылетал из сейф листа. Если не сработает отпишись, будем думать дальше.
  11. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    сейчас глянем.

    моя ошибка была не сказать, что мне хватилобы варнов через канал, точнее мне и нужно только через канал. сорри :facepalm:
    так как варны будут выдаватся админами ботов вручную, (на канале сидит бот который просто отвечает на команды !sd !statsdota !cb и тд, ему в личку и будут направлятся команды варна, на остальных 2-ух игры хостятся, 1 для сф игроков, второй для админ состава - на них команду варн я думаю убрать.)
  12. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    НУ там вроде однотипно что канал, что игра. Я переделаю bnet.cpp, протестирую, выложу.
  13. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    \Глянул, там однотипно оказалось:
    В bnet.cpp мотай в самый низ, найдешь:
    Код:
    void CBNET :: WarnPlayer (string Victim, string Reason, string User, bool Whisper)
    в ней ищи:
    Код:
    if(WarnCount >= m_GHost->m_BanTheWarnedPlayerQuota)
    Дописывай в конце:
    Код:
    			if (IsSafe(Victim)){
    				QueueChatCommand("Игрок " + Victim + " исключен из сейфлиста");
    				m_GHost->m_Callables.push_back(m_GHost->m_DB->ThreadedSafeRemove( m_Server, Victim));	
    			}
    При достижении лимита варнов с игрока снимут сейф + выдадут бан
  14. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    пошол смотреть...
    да, всё работает, после 3 варнов игрок автоматически удаляется из сф и банится. спасибо.

    а тоже самое только когда пишешь просто бан :spy:


    нашол в самом низу

    Код:
    void CBNET :: AddBan( string name, string ip, string date, string gamename, string admin, string reason, string expiredate )
    Код:
    void CBNET :: AddBan( string name, string ip, string gamename, string admin, string reason, string expiredate )
  15. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Уточню на всякий: Т.е. ты хочешь чтобы при бане игрока он автоматом удалялся из сейф листа? Бан будет давать даваться на канале или в игре? или и там и там?
  16. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    да. ну и банился самособой
    и там и там.