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

Как запретить определенную карту?

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

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

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Автор. Скинь значение в конфиге мапы:
  2. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    Ну если создает через !load то я думаю смысла както детектить нету=0
    гораздо легче да и разумнее убрать из конфига эти параметры:
    Код:
    map_type = dota
    map_matchmakingcategory = dota_elo
    
    сор офк, но помоему автор рли пытается создать велосипед=0
    причём чужими руками... :ohmy:
  3. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    В принципе геликоптер дал хорошую идею по поводу этой мапы. Сверять хеши.
    Как ты ее не переименовуй карту или конфиг - с измененными хешами не поиграешь.
  4. DhL Ньюфаг

    Сообщения:
    36
    Спасибы:
    0

    map_size = 124 99 106 0
    map_info = 232 117 90 167
    map_crc = 224 19 28 131
    map_sha1 = 172 98 2 18 29 75 77 14 197 181 104 238 93 161 163 193 105 36 21 8

    действительно неплохая идея, знать бы как :)
  5. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    И так. Проверил. Как не изменяй конфиг или мапу - SHA1 остается одним и тем же.
    Есть вариант что SHA1 может совпасть с другой картой, но думаю этот шанс 1 на миллион.
    И так что нужно для отключение статы. И не вылет бота по завершению игры.
    1. game_base.cpp
    2. По окончании игры бот вылетит если не сделать данный фикс:
    P.S.: Для тех кто в танке или кому просто интересно - объясняю почему бот вылетает. Пару понятий про конструкторы и деструкторы. При вызове класса происходит и вызов конструктора (пустой он или нет, выполняет он что-то или нет) и при завершении класса (например удалении) вызывается деструктор(пустой он или нет, выполняет он что-то или нет). Имеем класс CGame который вызывается при создании игры. А значит вызывается конструктор класса CGame. В конструкторе класса заносится объект класса CStatsDOTA в оперативную память: m_Stats = new CStatsDOTA( this ); - при этом m_Stats присвоило АДРЕС в динамической памяти компа откуда начинается объект класса CStatsDOTA. У нас 2 код обнаруживает m_DisableStats и удаляет из памяти объект который начинается с адреса m_Stats. Т.е. удаляет объект CStatsDOTA. После освобождения участка памяти, GHost может занять освобожденную память. Игра идет, класс CGame работает все в порядке, GHost занял ту память которая была освобождена. По завершении игры вызывается деструктор класса CGame. В деструкторе, без проверки есть ли объект в памяти по адресу m_Stat или нету, опять удаляет объект находящийся по адресу m_Stats (delete m_Stats;). А ведь там уже память другая. Причем любой структуры GHost. После удаления из памяти чужого объекта по адресу m_Stats может произойти все что угодно GHost'ом. Может повиснуть. Вылететь. Поэтому после удаления объекта по адресу m_Stats, мы m_Stats присваиваем 0.
    Т.е. фактически адрес в памяти 0, который воспринимается просто как что-то пустое. К тому же напомню что в С++ 0 воспринимается как false, любое другое число как true (отрицательное или положительное). И если удалить этот m_Stats = 0 то это вполне безопасно. И система будет работать в нормальном режиме. Вот почему вылетает GHost. Данная ошибка кода очень опасна. P.P.S.: NULL = 0 и логически это = false т.е. x = 0 if ( x ) { " lol " } - заветную надпись лол не увидим никогда. Т.е. даже можно так: int x = false; - раз это тип int то x на самом деле равно 0. (x) { "lol" } мы не увидим. Но если мы перед условием сделаем так: int x = true; мы увидим заветное lol. На самом деле x будет равно 1.
  6. DhL Ньюфаг

    Сообщения:
    36
    Спасибы:
    0
    Отлично, спасибо огромное.
    +++ в репу

    p.s. На моих ботах только дота-карты, поэтому вероятность совпадения sha1 = 0.0001 :]
  7. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    Дилс, вот если не знаешь - лучше не пиши, честное слово. никаким раком ты не повредишь память другого процесса, и уж тем более ядра системы, мы же не в r0 работаем, правда? учи матчасть и больше так не позорься.
  8. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    можно. работая в кернел-спейсе или используя системное апи, на винде например VirtualProtectEx.

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

    Add:
    оп-оп, еще и мессагу удалил. не стыдно, а?
  9. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Я ошибки признаю когда их нормально мне выкладывают. А слюной брызгать начал ты кстати своим "не позорься". По поводу поста - попросили удалить. Почему ты сидел и видел тему и не соизволил написать? А только пришел чтоб заметить чужие ошибки. Причем не столь важные. Даже если и не будет юзать другой процесс - ошибка опасная.
    Если ты пришел показывать свою борзость и унижать людей - тебе здесь делать нечего. Либо спокойно и нормально объясняешь либо не лезешь вообще. Я рассказываю людям что знаю. А эта ошибка не так уж и страшна. Наоборот пускай люди думают что ошибка плоха (хотя так и есть) и ее допускать нельзя. И то что я описал все правильно кроме памяти (хотя до сих пор сомневаюсь т.к. ты ДО СИХ ПОР не соизволил объяснить почему). Ты такой грамотный? Ну вот помагай людям. А не стережешь чей-то пост пока в последнем не допустят ошибку. Свои поведением ты отбиваешь, как мне так и другим, желание помогать здесь на форуме. И судя по всему ты был настолько заинтересован чтоб продолжать на меня слюной брызгать что даже восстановил мой пост в цитате. И кто тут слюной брызгает?