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

Быдло кодинг.

Тема в разделе 'Общение', создана пользователем fake, 16 май 2011.

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

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Ну ++ нету. В One есть. Хотя кстати я если и буду что-то разрабатывать, то за основу буду ++ брать. One - породия...
    Методы доступа даже нормально не организованы. А просто объявлены открытыми переменные.
  2. DdosFail Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    fake, по последнему вопросу некак? Занят еще? иль непоможешь тошо нехоч?)
    Все пойму, мараться долго... как для меня))
  3. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    я щя даже не дома, в сорс глянуть не могу, а такой большой код писать с памяти несмогу)
    до конца августа дома не буду, ты там пытайся чет сделать бекапни бота чтоле и попытайся для начала создать переменную в плейрс которая бы хранила ник (или указатель на игрока)и булевую переменную( заблокирован ли игрок) и команду в которой
    ты должен по слоту найти игрока и поместить его в
    CPlayer *tmpplayer;//(не помню как класс называется помоему CPlayer посмотри как объявленна переменная Player)

    а дальше код приблезительно такой
    if(tmpplayer->GetPeremennaya1()==player->name)//если ты создал переменную Для НИКА
    {
    tmpplayer->SetPeremennaya1(string());
    tmpplayer->SetPeremennaya2(true);
    player->SetPeremennaya2(true);
    }

    а дальше я не помню код преремешивания(помню только как работает шафл плеер)
    для того, чтобы блок пахал в шафл плеер надо
    в том месте кода, где игроки добавляются в вектор, который будет перемешиваться
    надо добавить проверку на GetPeremennaya2() в случае тру не добавлять их туда.



    кароч я иду спать 3 ночи как не как,пробуй сам делать, кидай сюда код.
  4. DdosFail Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    завтро внимательно все прочитав попробую и отпишу, бо щас сам уже залип)))
  5. rost2 Забанен за предупреждения: 5 баллов

    Сообщения:
    66
    Спасибы:
    1
    fake, есть знач такая идея.
    Нельзя ли добавить в бота функцию проверки % ливов и выставить команду на проверку и пропуск и по нему.
    !maxliv 10% - и у кого % выше непроходят.
    Что думаешь?
  6. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    кто просил антифлуд?
    могу реализировать идею на ghost++ устроит?

    вопрос следующий какие должны быть команды и параметры для управления этой командой, если вы не ответите, то выложу свою идею

    насчет макс лива, так как в гхост++ нету ливов вообще, то само собой добавлять я ничего не буду)

    но поскольку вопрос стоял
    тто отвечу можно, просьба здесь писать посложнее и поинтереснее идеи, ато эти лимиты, и прочую некому не нужную хрень я писать не буду.


    Вообщем оживляю тему. както так
  7. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    okey к вечеру тебе чтото придумаю))
  8. Inhuman Пил пиво с админом

    Сообщения:
    147
    Спасибы:
    6
    Сборка бота GHost:
    BrtGhost rev 1.81
    Дата начала использования бота:
    15.09.2010
    тоже интересует
  9. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Фейк подскажи как в game.cpp выявить переменую кол-ва игроков в команде.
    Пример:
    Код:
    Team1 = 4 
    Team2 = 5
    И можно ли как-то в statsdota.cpp выдать типа кол-во очков игрокав (score) по командам опять же.
    Пример:
    Код:
    Team1 = 4500 
    Team2 = 3050
  10. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    CIncomingChatEvent
    CIncomingChatPlayer

    И антифлуд система готова. В update задать частоту пересылки и все. Если поступает более n-пакетов на n-ое время - отправлять сообщение пользователю личное что типа "вы флудите"... Организовать можно исходя из комманды mute...
  11. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    ВОПРОС №1
    Код:
    if(m_Slots[GetSIDFromPID((LastMatch)->GetPID())].GetTeam()!=m_Slots[GetSIDFromPID((player)->GetPID())].GetTeam())
    {
    S[b][/b]endAl[u][/u]lChat("igrok ne v tvoi komande!");//<<REDAKTIROVAT TYT
                   return HideCommand;
    }
    Вот вопрос хотел задать, что это тут за число у нас выводит?
    Код:
    m_Slots[GetSIDFromPID((LastMatch)->GetPID())].GetTeam()
    Так как зделал в одной функции чтото типа:
    Код:
    if(m_Slots[GetSIDFromPID((player)->GetPID())].GetTeam()!=m_MeValue)
    {
    SendAllChat("igrok ne v tvoi komande!");//<<REDAKTIROVAT TYT
                   return HideCommand;
    }
    где m_MeValue = 1 или 2
    Но что за 1-ю что за 2-ю команду в различные моменты, команда пишет мол отсекайся, а мне то нужно чтобы в половине моментов было норм))
    Как вобщем чтоли m_Slots[GetSIDFromPID((LastMatch)->GetPID())].GetTeam() заменить на последнего ливнувшего
    Выборка из команды !BanLast непомогла, дает краши...
    Ну или подкиньте свой вариант, нужно чтобы запрещало команду игрокам из команды, где игроков больше (обязательно в командах будет разница!) :spy:

    ВОПРОС №2
    Fake давал ты защиту на вотекик, которая описана выше, но там голоса... кароче суть:
    нужно выставить количество голосов = количество игроков в команде
    Ну или опять же дайте более информации про m_Slots[GetSIDFromPID((LastMatch)->GetPID())].GetTeam(), чтобы тут както ставить уже защиту, брать инфу из TeamDiff и тд...
    Просто еще чтото выставить мол, если естьразница в командах, уже не 10 игроков, то типа сокок в какой тиме (это я вытащил) немогу примнить именно впалане защиты на из какой команды пашол голос... ну вобщем все беды опять же с переменно которую я давал выше :newcry:
  12. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    m_Slots[GetSIDFromPID((LastMatch)->GetPID())].GetTeam()

    Начнем с глубины.
    Lastmatch - как я понял, это указатель на CGamePlayer. Который еще в игре. Если в игре игрока нет - указатель не действителен.
    GetPID() - ф-ия из CGamePlayer возвращающая m_PID.
    GetSIDFromPID - ф-ия CBaseGame возвращает номер слота игрока в игре по его m_PID.
    m_Slots - вектор объектов CGameSlot, т.е. слотов в игре.
    При этом CGameSlot черпает инфу с конфига карты!
    Например:
    Как можно заметить то [Team] не 1 и 2 как ты писал выше, а 0 и 1, 2, 3, 4 и т.д. т.е. отсчет с 0
    А ф-ия GetTeam() возвращает номер команды по слоту из таблицы выше.
    Фактически:
    LastMatch - игрок. По игроку берем его ID, по его ID берем его слот. По его слоту смотрим в какой команде (для доты напр. 7 слот - команда 1, для слота 2 - команда 0).
    И напомню что CGamePlayer существует пока игрок в игре! Поэтому если обратится по указателю когда игрока нет - краш.
  13. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    кста там проверка на нулевой поинтер вроде есть а вот на сид 255 нету- сделай, все остальное описал те дилс


    зы: учи с++
  14. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    И если нужно узнать инфу о ливнувшем игроке она хранится в m_DBGamePlayers от старта до конца игры.
    Код:
    m_DBGamePlayers.push_back( new CDBGamePlayer( 0, 0, player->GetName( ), player->GetExternalIPString( ), player->GetSpoofed( ) ? 1 : 0, player->GetSpoofedRealm( ), player->GetReserved( ) ? 1 : 0, player->GetFinishedLoading( ) ? player->GetFinishedLoadingTicks( ) - m_StartedLoadingTicks : 0, m_GameTicks / 1000, player->GetLeftReason( ), Team, Colour ) );
  15. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Fake стараюсь как могу))
    Та вот да поповоду 1 и 0 я лоханулся))))) Спс пацы лю вас)))))))))))))))))
    Как всегда корректный ответ на такой же вопрос))))
    очень нужная инфа, думаю мои вопросы решит все))))
    По поводу LastMatch Deals я просто это юзать немогу (в 1-м вопросе) там нужен ласт ливнувший игрок, а там чтото с баном связано, вобщем несмог использовать...
    Ну а поповоду таблицы и примеров ты просто очень сильно утвердил мои догадки спс))))))
    Вижу тема неумерла, в 3:30 ответиил я подчеркну))))
    :) :) :) :) :) :)
  16. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    В зависимости чего ты хочешь от ливнувшего игрока. Айпи, имя, реалм, загрузка...
  17. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    окей вижу заинтересованность чтоли))
    Вобщем, ливает тип, мне нужно чтобы можно было написать команду, и она пахала только в команде где игроков меньше.
    значит нужна переменная команды игрока (ливнувшего)
    И типа поставить, чтобы с другой тимы нельзя было юзнуть вот.
    А по вотекику, ну сначала нужно 4 голоса, потом типа, тоже если в 1 тиме больше чем во 2-й (это я вытащил) то типа если голосует 1-я тима нужно не 4 а 3 уже голоса (судя по кол-ву игроков в тиме)
    Но я думаю с помощью твоей подсказки (0 и 1) я все зделаю. Так как получилось все кроме этого )))) я не подумал просто сразу взбрело 1 и 2 )) :ohpalevo:
  18. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Если тебе нужно от последнего ливнувшего только его команда, то можно сделать так:
    Код:
    	if( !m_DBGamePlayers.empty( ) )
    		uint32_t team = m_DBGamePlayers.back( )->GetTeam( );
    В переменной team будет хранится номер команды игрока вышедшего из игры последним.
    P.S.: Советую после uint32_t team = m_DBGamePlayers.back( )->GetTeam( ); добавить else, если сработает else то никто из игры не вышел. И нужно выходить из ф-ии сразу после else. Т.к. переменная team будет локальна если условие не выполнится. Либо объявить ее выше if( !m_DBGamePlayers.empty( ) ) как uint32_t team; и последнюю конструкцию сделать так: team = m_DBGamePlayers.back( )->GetTeam( );
    Код:
    	uint32_t team;
    	if( !m_DBGamePlayers.empty( ) )
    		team = m_DBGamePlayers.back( )->GetTeam( );
    Но при этом не известно что будет в team если условие не выполнится. Поэтому я сразу добавил проверку if( !m_DBGamePlayers.empty( ) ). И если будет ложно - не использовать в дальнейшем team!
  19. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Все попробую и отпишусь о результате)))
    Прям завтро думаю)) :metal:
  20. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    По поводу той же команды !lock чтобы блочила игрока и он нераспространялся на АВТОБАЛАНС
    Фейк, делал чтото я пытался, переменную создал и тд.. чето там наклацал, кароче завалилсо ну собсно на проверке где уже добавляет игроков и мешает, чето ваше невъеду ((

    =================
    По поводу вопроса выше, вроде помогло, баги старые ушли, новых вроде небыло, пока норм))