Форум » Предложения и замечания » Неточности и дополнения! » Ответить

Неточности и дополнения!

VDV_forever: В первом посте данной темы будут публиковаться все найденные Вами неточности в справочнике: 1) Неточность в разделе "22. Тактики и стратегии используемые в игре": атака двух клеток: Циклопы*, Фениксы, Драконы. Причём, при атаке двух отрядов второй - дружественный (т.е. принадлежащий к армии героя) отряд задет не будет. Это не относится к удару вражеских войск, которые задевают всех. * циклопы при атаке двух клеток задевают и свои войска. Как раз таки и циклопы, и фениксы, и драконы задевают дружественные войска. Vovik 2) По-моему в картах кампании выложен вариант прохождения только за лорда Айронфиста. Играя за каждого лорда кампания отличается на одну карту. Играя за Айронфиста там есть среди прочих уровни: "Замок Слейера, "Замок Ламанды", "Замок Аламара". Но если играть за Слейера, то вместо "Замок Слейера" будет "Замок Айронфиста". Он-то и не упомянут. Abyss C уважением, VDV_forever

Ответов - 81, стр: 1 2 3 4 5 All

AlexSpl: 1. Нанимаем Тсабу (любого): 2. Смотрим - в Таверне по-прежнему сидит двойник: 3. Выходим из замка, снова заходим, и видим: 4. Снова выходим. Тсабу пропал: 5. Щёлкаем на Тсабу в списке героев, потом - на какой-нибудь замок из списка: 6. Видим зелёного игрока недалеко от замка: 7. Замок захвачен зелёным, но захватчик исчез. Красный Тсабу у ворот как ни в чём не бывало: На самом деле, он синий Если напасть, например, на ближайших фей, то бой пройдёт на автомате. Возможен вылет.

AlexSpl: 6. Баг с ресурсами. При превышении количества ресурсов 8-значного значения (10 000 000+) игра заканчивается "ошибкой" (проверено на золоте). Нужен сейв данной ситуации для выяснения причины ошибки. Повторить не удалось (денег более 10 000 000, но ошибка так и не случилась):

VDV_forever: AlexSpl пишет: 5. Щёлкаем на Тсабу в списке героев, потом - на какой-нибудь замок из списка: И он появляется, но уже под флагом синего. Да? AlexSpl пишет: 7. Замок захвачен зелёным, но захватчик исчез. Красный Тсабу у ворот как ни в чём не бывало: А как он исчезает после захвата, ты наблюдал эти действия с открытой картой (т.е. видел все его телодвижения)? AlexSpl пишет: На самом деле, он синий Если напасть, например, на ближайших фей, то бой пройдёт на автомате. Возможен вылет. прикольно, это все ты проделал из сейва который присутствует на справочнике, да? если да, то у меня были другие ситуации с этим же сейвом, и именно их я попытался описать когда изучал этот баг. Спасибо за описание, все очень подробно и наглядно. Так и включим в справочник


VDV_forever: AlexSpl пишет: Нужен сейв данной ситуации для выяснения причины ошибки. Повторить не удалось (денег более 10 000 000, но ошибка так и не случилась): Каюсь, этот баг я сам не повторял, т.е. включил его не проверяя, соответственно сейва нет. Хочешь сказать, что он выдуманный? Может на других версиях выскакивает?

AlexSpl: Дима, для кого я старался? Попробуй повторить, и всё сразу станет понятно.

VDV_forever: AlexSpl пишет: Дима, для кого я старался? Попробуй повторить, и всё сразу станет понятно. Вот что заметил, при перещелкивании мышкой герой (Тсабу) - замок Блекбрибж, герой Тсабу меняет цвет! Про другие действия я перепутал с "Багом с героем в таверне". Все повторилось как и у тебя. Забавная ситуация происходит когда покупаешь еще одного героя в этом же замке! (в этой ситуации, после нападения зеленого, идет полноценный бой за замок, но после поражения, замок все-равно караулит Тсабу синего цвета) А было бы золото можно купить и еще одного 3-его в одном и том же замке, без перемещения героев!!!! В ТЕ такой номер не проходит

AlexSpl: Забавная ситуация происходит когда покупаешь еще одного героя в этом же замке! А что случается?

AlexSpl: В ТЕ такой номер не проходит В TE такие ситуации исключены

VDV_forever: Обнови страницу У тебя 2 героя в одном замке будут сидеть

VDV_forever: AlexSpl пишет: Раздел 17. Формула расчёта количества очков. Согласно руководству Heroes of Might and Magic: The Official Strategy Guide, выложенному Miner'ом, формула расчёта количества очков, получаемых за прохождение сценария, отличается от той, что представлена в Разделе 17. Points = max(0, floor(200 - N1 - N2 - N3 - N4)), Score = floor(MapRating * Points), где Points - количество очков, получаемых за прохождение сценария; Score - итоговый счёт; MapRating - рейтинг карты сценария, показываемый при старте; N1 = max(1, min(N, 60)); N2 = 1/2 * max(0, min(N - 60, 60)); N3 = 1/4 * max(0, min(N - 120, 240)); N4 = 1/8 * max(0, N - 360); N - количество дней, затраченных на прохождение карты; floor() - округление вниз. Иными словами, за каждый день, проведённый на карте: 1) с 1-го по 60-й: отнимается 1 единица базового рейтинга; 2) с 61-го по 120-й: отнимается пол-единицы (1/2) базового рейтинга; 3) со 121-го по 360-й: отнимается четверть единицы (1/4) базового рейтинга; 4) начиная с 361-го: отнимается одна восьмая единицы (1/8) базового рейтинга. Пример 1. Сколько очков заработает игрок, пройдя карту с рейтингом 150% за 400 дней, и каков будет итоговый счёт? N1 = max(1, min(400, 60)) = 60; N2 = 1/2 * max(0, min(400 - 60, 60)) = 1/2 * 60 = 30; N3 = 1/4 * max(0, min(400 - 120, 240)) = 1/4 * 240 = 60; N4 = 1/8 * max(0, min(400 - 360)) = 1/8 * 40 = 5. Итого, Points = max(0, floor(200 - 60 - 30 - 60 - 5)) = 45, Score = floor(150% * 45) = 67. Пример 2. Рассчитать очки и итоговый счёт за прохождение карты с рейтингом 60% за 60, 61, 62 и 63 дня. Опуская промежуточные вычисления, получим: 1) 60 дней: Очки = floor(200 - 60) = 140, Счёт = floor(0,6 * 140) = 84. 2) 61 день: Очки = floor(200 - 60,5) = 139, Счёт = floor(0,6 * 139) = 83. 3) 62 дня: Очки = floor(200 - 61) = 139, Счёт = floor(0,6 * 139) = 83. 4) 63 дня: Очки = floor(200 - 61,5) = 138, Счёт = floor(0,6 * 138) = 82. Здесь я хочу подчеркнуть, что при расчётах выполняется два округления вниз! Т.е., например, для 63 дней без правильного округления получается неверный результат: floor(0,6 * (200 - 61,5)) = floor(0,6 * 138,5) = floor(83,1) = 83! Правильный результат здесь - 82. Вот оно как всё на самом деле! Хотя формула в Справочнике верна (под Очками там подразумевается Счёт), если находиться на карте не более 60 дней. Спустя пол года после написания целого раздела, я наконец то до него добрался! Со временем совсем напряг, увы. Так вот, Саша не мог бы ты все же привести расчет в примере 2, где ты опускаешь промежуточные вычисления. Нельзя ли переписать формулу таким образом (упростить), что бы она была понятна любому обывателю? Ведь не все же программисты. Вот что означает к примеру "," и как ее рассматривать обычному игроку? В общем-то раздел я уже переписал сегодня, но хотелось бы упростить.

AlexSpl: Points = max(0, floor(200 - N1 - N2 - N3 - N4)), Score = floor(MapRating * Points), где Points - количество очков, получаемых за прохождение сценария; Score - итоговый счёт; MapRating - рейтинг карты сценария, показываемый при старте; N1 = max(1, min(N, 60)); N2 = 1/2 * max(0, min(N - 60, 60)); N3 = 1/4 * max(0, min(N - 120, 240)); N4 = 1/8 * max(0, N - 360); N - количество дней, затраченных на прохождение карты; floor() - округление вниз. Нетрудно заметить, что: 1) N2 = 0, N3 = 0, N4 = 0, если карта пройдена не более чем за 60 дней; 2) N3 = 0, N4 = 0, если карта пройдена не более чем за 120 дней; 3) N4 = 0, если карта пройдена не более чем за 360 дней. 1) 60 дней: Очки = floor(200 - 60) = 140, Счёт = floor(0,6 * 140) = 84. N = 60 (N <= 60) Здесь имеем N1 = max(1, min(N, 60)) = N = 60; N2 = 0; N3 = 0; N4 = 0. Поэтому Points = max(0, floor(200 - N1 - N2 - N3 - N4)) = floor(200 - N1) = floor(200 - 60) = 140; Score = floor(MapRating * Points) = floor(60% * 140) = 84. 2) 61 день: Очки = floor(200 - 60,5) = 139, Счёт = floor(0,6 * 139) = 83. N = 61 (60 < N <= 120) Здесь имеем N1 = max(1, min(N, 60)) = 60; N2 = 1/2 * max(0, min(N - 60, 60)) = 1/2 * max(0, min(61 - 60, 60)) = 1/2 * max(0, min(1, 60)) = 1/2 * max(0, 1) = 1/2 * 1 = 0,5; N3 = 0; N4 = 0. Поэтому Points = max(0, floor(200 - N1 - N2 - N3 - N4)) = floor(200 - N1 - N2) = floor (200 - 60 - 0,5) = floor(139,5) = 139; Score = floor(MapRating * Points) = floor(60% * 139) = 83. Вообще, формула просто обобщает все возможные случаи и является, по сути, математической записью следующих правил: Иными словами, за каждый день, проведённый на карте: 1) с 1-го по 60-й: отнимается 1 единица базового рейтинга; 2) с 61-го по 120-й: отнимается пол-единицы (1/2) базового рейтинга; 3) со 121-го по 360-й: отнимается четверть единицы (1/4) базового рейтинга; 4) начиная с 361-го: отнимается одна восьмая единицы (1/8) базового рейтинга.

AlexSpl: Конечно, нужно уточнить, действительно ли минимальное количество очков, которое можно получить за прохождение карты, равно нулю. Вполне может быть, что оно равно 1. Например, согласно формуле, ноль очков можно заработать, если пройти карту более чем за 60 + 60 + 240 + 392 = 752 дня : Points = max(0, floor(200 – 60 – 1/2 * 60 – 1/4 * 240 – 1/8 * 392)) = 1, когда уже Points = max(0, floor(200 – 60 – 1/2 * 60 – 1/4 * 240 – 1/8 * 393)) = 0! Интересно, может ли игрок получить 0 очков? Если да, то число 752 (дня) в Героях 1 является своебразной границей, отделяющей ненулевое количество очков от нулевого. Счёт же может стать нулевым задолго от этой даты (зависит от рейтинга карты). Опять же вопрос: а может ли счёт быть нулевым?

AlexSpl: Не поленился проверить. Оказывается, минимальное количество очков равно 20! Таким образом, формулу придётся переписать так: [pre2] Points = max(20, [200 - N1 - N2 - N3 - N4]), Score = [MapRating * Points], где Points - количество очков, получаемых за прохождение сценария; Score - итоговый счёт; MapRating - рейтинг карты сценария, показываемый при старте; N1 = max(1, min(N, 60)); N2 = 1/2 * max(0, min(N - 60, 60)); N3 = 1/4 * max(0, min(N - 120, 240)); N4 = 1/8 * max(0, N - 360); N - количество дней, затраченных на прохождение карты; [] - округление вниз.[/pre2] Заметьте, что минимальный счёт (Score), в отличие от количества очков (Points), может быть меньше 20! Исходя из того, что минимальный рейтинг составляет 5%, находим, что наименьший возможный итоговый счёт равен Scoremin = [5% * 20] = 1! Неплохо бы теперь найти зависимость ранга (Дракон, Феникс и т.д.) от счёта

AlexSpl: Написал калькулятор рейтинга (включает конвертер текущей даты в количество дней и наоборот). Позже добавлю определение ранга. Так вот, оказывается, что минимальное количество очков (20) можно получить, если пройти карту за 593 или более (60 + 60 + 240 + 233) дней: Points = [200 – 60 – 1/2 * 60 – 1/4 * 240 – 1/8 * 232] = 21, Points = [200 – 60 – 1/2 * 60 – 1/4 * 240 – 1/8 * 233] = 20. 593 дня - это 22 месяц, 1 неделя, 5 день Download H1RC

VDV_forever: Раздел 17. Формула расчёта количества очков. полностью переписан и обновлен! http://handbookhmm1.narod.ru/17.html Саша, огромное спасибо за написание раздела и за ответы на некоторые вопросы посвященные ему. http://handbookhmm1.narod.ru/news.html Я надеюсь, ты не станешь рвать и метать за мою корректировку некоторых моментов... я лишь максимально облегчил понимание этих формул, и не нарушил их оригинальной структуры. Согласен?

AlexSpl: N1 = 1 ... 60; при количестве дней от 1 до 60; N2 = 1/2 * (N - 60); при количестве дней от 61 до 120; N3 = 1/4 * (N - 360); при количестве дней от 121 до 360; N4 = 1/8 * (N - 360); при количестве дней с 361; N3 = 1/4 * (N - 120); при количестве дней от 121 до 360. Пример расчета №2 Рассчитать очки и итоговый счёт за прохождение карты с рейтингом 60% за 63 дней. 63 дня. Здесь необходимо подчеркнуть, что при расчётах выполняется два округления вниз! Т.е. в данном случае без правильного округления получается неверный результат: Points = floor(200 - 60 - 1,5) = 138,5 Score = floor(60% * 138,5) = 83. Правильно будет так: Points = 200 - 60 - 1,5 = 138,5 Score = floor(60% * 138,5) = 83. Т.е. данный пример демонстрирует, что если не округлить вниз количество очков, то итоговый счёт будет подсчитан неверно. Пример расчета №3 Сколько очков заработает игрок, пройдя карту с рейтингом 150% за 400 дней, и каков будет итоговый счёт? N1 = 60; N2 = 1/2 * (400 - 120) = 1/2 * 280 = 140; N3 = 1/4 * (400 - 240) = 1/4 * 160 = 40; N4 = 1/8 * (400 - 360) = 1/8 * 40 = 5. Итого, Points = floor(200 - 140 - 40 - 5) = 15 Score = floor(150% * 15) = 22. Правильный ответ здесь: Points = 45 Score = 67 Здесь интересно отметить, что результат игрока будет 45 / 67, также если он пройдёт карту за 393, 394, 395, 396, 397, 398, 399 или 400 дней!

VDV_forever: Все замечания по существу! Что то я парюсь.., какая то лажа после пересчета N1 = 60; N2 = 1/2 * (400 - 60) = 1/2 * 340 = 170; N3 = 1/4 * (400 - 120) = 1/4 * 280 = 70; N4 = 1/8 * (400 - 360) = 1/8 * 40 = 5. Итого, Points = floor(200 - 60 - 170 - 70 - 5) = -105 Score = floor(150% * 15) = 22.

AlexSpl: [pre2] Points = max(20, [200 - N1 - N2 - N3 - N4]), Score = [MapRating * Points], где Points - количество очков, получаемых за прохождение сценария; Score - итоговый счёт; MapRating - рейтинг карты сценария, показываемый при старте; N1 = max(1, min(N, 60)); N2 = 1/2 * max(0, min(N - 60, 60)); N3 = 1/4 * max(0, min(N - 120, 240)); N4 = 1/8 * max(0, N - 360); N - количество дней, затраченных на прохождение карты; [] - округление вниз.[/pre2] Для 400 дней считать нужно так: N1 = 60 N2 = 1/2 * 60 N3 = 1/4 * 240 N4 = 1/8 * (400 - 360) = 1/8 * 40 Points = 200 - 60 - 1/2 * 60 - 1/4 * 240 - 1/8 * 40 = 200 - 60 - 30 - 60 - 5 = 45!

VDV_forever: AlexSpl пишет: N3 = 1/4 * (N - 120); при количестве дней от 121 до 360. тогда здесь будет правильно так: N3 = 1/4 * (N - 240); при количестве дней от 121 до 360. поправил по горячим следам http://handbookhmm1.narod.ru/17.html

AlexSpl: N3 = 1/4 * (N - 120); при количестве дней от 121 до 360; Потому что отрезок [121 .. 360] входит в [1 .. 400] целиком и его длина составляет 360 - 120 = 240 дней.



полная версия страницы