Казаки снова война как настроить случайную карту

Обновлено: 02.07.2024

Не работает мышка, черный экран и музыка

DirectDraw Init failed : Mode 1024x768x8 not found. Cossacks should not run.

На игре казаки (снова война) как зделасть чтоб вся карта откылась и как добавить солдатов?

или изобрети воздушный шар, или в настройках поставь старт с шаром.

вот тебе весь код
Во время игры нажмите [Еnter], после чего вводите:
www - oткpывaeт вcю кapтy
money - пpибaвляeт пo 50000 eдиниц к кaждoмy pecypcy
multitvar - пpи нaжaтии нa клaвишy [P] вызывaeтcя мeню,
в кoтopoм мoжнo выбpaть любoгo coлдaтa.
Haжмитe нa нaзвaниe юнитa и нa игpoвoй кapтe кликнитe в
любoм мecтe - тaм пoявитcя выбpaннaя вaми eдиницa.
Чтoбы ocтaнoвить этoт пpoцecc, oпять нaжмитe нa [P],
кликнeтe нa нaзвaниe вaшeй cтpaны (нaпpимep, Иcпaния) и
нaжмитe "пpинять"/"Accept". Этoт кoд дeйcтвyeт и для здaний.
supervizor - вкл. /выкл. тyмaн вoйны
money - pecypcы
izmena - пepeключeниe игpoкa нa клaвиши дoпoлнитeльнoй pacклaдки 1-9

Быстро крутится мельница, быстрый скроллинг (прокручивание), быстрая скорость игры

Создание миссий (сценарий) в игре Казаки

> После создания зон и групп сохраняем карту с уникальным именем(название карты никак не влияет на название миссии). Выходим с редактора карт для уменьшения вероятности ошибок при написания самого сценария. Переходим в корневую папку с Казаками СВ или ПДК. Открываем «ScenarioEditor.exe». В меню файл выбераем «новый», после появится диалогое окно в котором нужно указать карту к которой бедет написан сценарий, если карта уже имеет сценарий то редактор сценариев удалит старый сценарий(если необходимо написать новый сценарий для карты у которой уже есть сценарий, но сохранить старый, то необходимо сделать копию карты и сохранить её под новым именем).

Если сценарий необходимо сохранить и продолжить его написание в новом запуске редактора сценария, то в меню «СЦЕНАРИЙ» выберите «свойства» появится диалогое окно в котором необходимо задать название миссии и описание. После сохраняем сценарий в меню «ФАЙЛ»->»Сохранить». Закрывать сценарий следует только в меню «Файл» ->»Закрыть» это позволит избежать многих глюков с потерей строк или переменой значений в командах сценария.

> Самый основной элемент в сценарии это «триггер». Триггер это объект имеющий условия выполнения и действия. Триггер также может быть без условия выполенния. Каждый «триггер» выполняется только один раз в миссии. Его выполнение можно зделать бесконечным с помощью команды действия «зделать текущий триггер активным»! В этом случае триггер будет выполнятся бесконечно и ограничен только условием выполнения. Все триггеры выполняются с верху в низ по очереди. Триггер в котором есть условие выполниться только если условие истинно!

> Условие может быть выполнено или не выполнено. Пример условия: «Количество еды у красного игрока больше 1000». Если у красного игрока еды больше тысячи, значит, это условие выполнилось. Условие может быть простым, как в предыдущем примере, или сложным, т.е. сочетанием простых условий. Сложное условие считается выполненным, если выполнилось каждое простое условие. Если условие выполняется, сценарий выполняет команды из секции Действие и данный триггер становится пассивным (более не выполняется за исключением если в нем есть действие «оставить триггер активным»).

Не оставляйте одинаковых наименований для «Триггеров» для избежания путаницы и возможных ошибок в работе сценария.

> Секция «ДЕЙСТВИЕ» Эта секция содержит список ответных действий компьютера. При срабатывании триггера с пустой секцией «ДЕЙСТВИЕ», никаких ответных действий не последует. Простое действие добавляется командой «Добавить действие». Работа с действиями полностью аналогична работе с условиями. Но порядок, в котором расположены простые действия может повлиять на результирующее действие. Действия выполняются, начиная с верхнего и заканчивая нижним. Пример неправильного расположения триггеров. Действие «Атаковать врага выделенными юнитами» подразумевает, что юниты, которые будут атаковать, уже выбраны. Следовательно, необходимо предварительно выполнить действие «Выбрать юнитов».

> Флаги и таймеры самые лучшие средства для манипуляции работы сценария. Флаг может быть включен или выключен. Его состояние устанавливает составитель миссии. По умолчанию, все флаги включены! Таймеры используются, если необходимо выполнить действие с задержкой по времени. Сначала таймер необходимо запустить с помощью действия «Завести таймер». До истечения указанного времени, или если таймер вообще еще не запускался, таймер считается еще не прозвонившим. По истечении времени, таймер считается прозвонившим. Пользователю доступно 256 флагов и 32 таймера. Диалоговое окно выбора флага и таймера представляет список со всеми возможными именами, которые можно изменить.

Название таймеров и флагов не стоит оставлять по умолчанию давайте осмысленные названия и только латинскими буквами(EN).

Windows 10

Включаем DirectPlay для Казаки Снова Война

Скачиваем игру по ссылке;

В программе установки выбираем взломанную версию (не Steam!)

(Но можно конечно и Steam-версию установить, но в таком случае у вас игра из стима не запустится, и вам самостоятельно придется искать папку установки и создавать ярлык запуска dmcr.exe)

  1. Переходим в Панель Управления > Программы и компоненты > Включение и отключение компонентов Windows
  2. Находим папку «Компоненты прежних версий», раскрываем, и ставим галочку напротив «DirectPlay». Игра должна запуститься.
  3. Далее, если у вас обнаружились проблемы с изменением настроек, бешеной скоростью игры, то замените dmcr.exe аналогичным файлом из архива.

Казаки 2, Александр на Windows 10

Не изменяется разрешение экрана в Казаки: Снова Война


Версия 1.35. От механиков. При запуске выскакивает значек запуска и то ошибка на английском, что не удалось найти разрешение 1024x768. Я нажимаю повтор, и в игре нельзя разрешение поменять.

Игра старая. Обычно в старых играх либо в настроечном файле прописывают нужное разрешение, либо игра пропатчивается, чтобы поддерживала современные разрешения.

Запускай игру от имени администратора. Отключай антивирус на время игры.
Добавь процесс игры в список исключений в антивирусе.


В свойствах ярлыка изменить настройки режим совместимости и выбор параметра графики,

Игра на нетбуке

Windows 8

Такие должны быть настройки

После данной настройки обычно игра казаки на Windows 8 должна запуститься нормально. Данный способ игры проверялся на версиях: Казаки Снова Война и Казаки Последний Довод Королей. Также возможно что работает на игре Казаки Европейские Войны и Казаки Эхо Войны. По отзывам пользователей, у некоторых не работает на версии Казаки Империя.

Основные кнопки

Можно указать крестьянам в какой последовательности и какие дома строить.

Нажмите ENTER и введите код:

создание выбраного юнита, ещё раз нажмите P и закройте окно

Люблю поиграть в интернете в мини игры. Сейчас очень много сайтов посвящены онлайн мини играм. Мини игры скачать бесплатно можно на многих сайтах, советую и вам попробовать.

Вот эти два вопроса связаны друг с другом. Дома дают прибавку к максимальному населению. Чем больше домов, тем больше юнитов можешь производить. Также прибавку к максимальному населению дают казармы и городские центры.

Собор и сделать ап в академии.

АП в академии лечит всех раненых юнитов, а священник лечит только тех, кто находиться рядом.

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

Впервые за всю историю игры Казаки.

Как правильно произвести настройки игровой комнаты в игре Казаки?

Казаки снова война как настроить случайную карту

Считаю, что подготовку молодого Казакёра к игре Казаки по сети необходимо начинать именно с обучения новичка картостроительству.

Учимся создавать Стандартные игровые карты для игры Казаки, проверенные временем и признанные Лигой Казаков.

Грамотно настроенная игровая опция уже говорит о том, что сетевой игрок, пусть даже начинающий Казакёр, ознакомлен с основными правилами поведения в сети.

Сначала ознакомимся с классификацией игры Казаки от EVIL NOOB, чтоб понять структуру создания игровых комнат.

I. Игра Казаки по Ресурсам (ресы)

2. PT = ПТ = Время перемирия до боя

III Игра по оговорённым заранее стандартным правилам.

Нарушившие правила игры с позором изгоняются

Если вас так назвали, боюсь, что больше эти игроки не станут играть с вами.

IV ПО Географии.

В игре Казаки всего 20ть наций, Которые можно условно разделить на Европу = Основной потребляемый ресурс Золото и Евразия = Основной потребляемый ресурс Дерево.

Европа, В свою очередь делится еще на нации которым доступно к постройке пять и восемь Конюшен.

Восьмиконюшенные нации (на медленной скорости игры до 9ти Конюшен)

Евразия: Основное сырье Дерево

Стартовые, Классические настройки опций на лямах:

-Без пушек стен и башен

Доработан мной лично . Набирает популярность. Необыкновенно увлекательна ввиду быстрого развития.

Если бой затягивается более 4-х минут появляется элемент, непредсказуемости развития событий.

Как ( нехватка ресурсов, объединение двух армий в один кулак, рейд, необыкновенно сложные маневры и всяческие военные хитрости, оборонительные тактики и контр удары

-2 ИГРА КОМАНДАМИ ОСНОВАННАЯ НА ВЗАИМОВЫРУЧКЕ И СОТРУДНИЧЕСТВЕ

-3 АГРЕССИВНЫЙ ВИД БОЯ! т.е атака буквально с первого построенного боевого юнита.

-4 начинающие игроки тоже могут попробовать свои силы, я ни кого не кикаю. (KIK- насильственное выкидывание игрока из игровой комнаты, ввиду не представляющего интереса в данной группе). Предлагаю делить (Злых Нубиков) поровну, каждой команде по одному или беру ЗЛОГО НУБА себе в команду, а как еще научится человеку?

-Без пушек стен и башен

-Без пушек стен и башен

-Без пушек стен и башен

-Без пушек стен и башен

***- ИГРА БЕЗ ПРАВИЛ -***

СТЕНЫ, ПУШКИ, ЛЮБЫЕ ВАРИАЦИИ СО ВРЕМЕНЕМ, ТЕРРИТОРИЕЙ И Т.Д.

:)

КОРОЧЕ творится черт знает что, но всем весело!

ВАМ ЗАСЧИТАЮТ ПОРАЖЕНИЕ.

После Нуб будет хвастаться что выиграл (Графа, Маркиза, Герцога, Короля),

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

Реверс-инжиниринг «Казаков», часть последняя: второе дыхание


После нескольких месяцев работы над исходным кодом игры «Казаки: Снова война» я наконец-то могу умыть руки и представить результат своих трудов. В этой статье мне хотелось бы поделиться с вами опытом рефакторинга этого незаурядного проекта, в частности кодовыми курьёзами. Всем любителям некро-программирования посвящается…

Начало

Первое и одно из самых неприятных препятствий было не в коде, а в самих проектах. Всего их четыре:

  • статическая библиотека CommCore.lib (сетевой протокол GSCp на базе UDP)
  • динамическая библиотека IntExplorer.dll (игровое лобби на сервере)
  • динамическая библиотека IChat.dll (чат в игровом лобби)
  • исполняемый файл dmcr.exe

Стартуем

Так, с проектами разобрались, теперь можно браться за дело. Компилятор рад за нас и приветствует множеством ошибок C2065: необъявленный идентификатор. Смотрим код и видим повсюду такую картину:


Конечно, можно было бы выставить /Zc:forScope- и забыть об этом, но мы же не кочегары и не плотники. Правим ручками больше сотни таких отрезков кода, продолжаем.

Следующее препятствие заключалось в графическом элементе, точнее в DirectDraw 7. Он активно использует механизм замены системной палитры. И если ранее это было повсеместной практикой, то начиная с Windows Vista такие фокусы больше не проходят. Дело в том, что DWM вместе с Windows Aero вплотную работают с палитрой и не терпят конкуренции. В итоге множество старых игр страдают от искажения цветов.

Не являясь экспертом по DirectX, я стал искать готовое решение и нашёл его в версии «Казаков», опубликованной на Steam в 2010 году. Помимо самой библиотеки ddraw.dll в папке с игрой присутствует дополнительная библиотека mdraw.dll, которая экспортирует функцию инициализации DirectDrawCreate(). Скажу честно – я не знаю, что именно ребята из GSC написали в их библиотеке DDemu DirectDraw Emulator в 2008 году, но она прекрасно справляется со своей задачей. Недолго думая я добавил соответствующую обёртку в Ddini.cpp и забыл об этой проблеме.

Затем встал вопрос об отладке полноэкранного приложения. Здесь мне снова повезло – в коде был предусмотрен отладочный режим, в котором игра запускалась в углу экрана в безрамном окне с фиксированным размером. Мне требовалось лишь довести его до ума, добавить смену разрешения, обработать захват и возврат курсора в зависимости от того, в меню ли игрок или в активной игре и добавить соответствующие параметры при старте. Теперь можно было удобно запускать игру в отладчике с ключом /window.

Далее представлены странные, проблемные и ошибочные участки кода игры «Казаки: Снова Война», с которыми я столкнулся во время работы. Прошу учесть, что целью данной статьи ни в коем случае не является критика или высмеивание разработчиков данной игры. Я считаю, что «Казаки: Снова Война» представляют собой исключительный результат усердной роботы и кропотливой оптимизации небольшой команды разработчиков, которые очень высоко подняли планку производительности и размаха битв для игр жанра RTS. Спасибо вам, GSC!

Весёлая арифметика

Причина такого поведения ИИ крылась в следующем финте ушами при копировании настроек от хоста игры в буфер обмена:


А вот так декларирована структура PlayerInfo:

В итоге я всё же принял решение не трогать UserParam[], а добавить массив UserParam2[3] в конце структуры, так как в одном из последних элементов хранится версия клиента и любое изменение структуры до него чревато неверным определением версий в игровом лобби. А так игроки с версией 1.35 будут видеть, что у других обновлённая версия игры.

Какие уроки можно почерпнуть для себя из этого?

Невидимый Джо Дефайн


«Ну и что в этом такого? — спросите вы — Всего лишь пробел в качестве константы». Ну, во-первых, пробел был бы крайне странным выбором для идентификации чего-либо в строке текста, а во-вторых это вовсе не пробел. SIGNBYTE определён как 0x7F, или управляющий символ DEL. И если ваш браузер достаточно осмотрителен и хотя бы показывает, что между кавычками что-то есть, то Visual Studio 2015 вероломно рисует '', между которыми курсор «спотыкается» на один символ.

Пожалуйста, если уж вы используете непечатаемые символы, то указывайте их в коде через шестнадцатеричное значение, а не как символ.

Правовой аспект

Всякий раз удивляюсь, когда для запуска игры требуются права администратора. И всякий раз думаю что-то вроде «ну как так можно игры программировать-то». Но в этот раз у меня и код на руках был, и собирал его я сам, а окно UAC всё так же не давало мне покоя.

Ответ нашёлся совершенно случайно, когда я подумал, что неплохо было бы вписать в свойства исполняемого файла информацию о том, что эта версия игры не оригинальная и не поддерживается разработчиками. Манифеста в проекте, естественно, не было, но был файл ресурсов Script1.rc. Каково же было моё удивление, когда после изменения блока VS_VERSION_INFO игре перестали требоваться права администратора!

Оказывается, ОС Windows начиная с Windows Vista применяет эвристический алгоритм для определения приложений, которым может потребоваться повышение привилегий. Называется эта функция «Технологией обнаружения установщика» (см. статью в ИТ-центре Windows), и обычно она реагирует на ключевые слова вроде install или setup. Но в нашем случае виновником оказался параметр CompanyName — если он содержит строку "-GSC-\0", то просыпается UAC и требует прав администратора.

Как уберечь своё приложение от такой эвристики со стороны Майкрософт, существующей и грядущей? А никак. Сегодня вы разрабатываете игры, а завтра уже стоите в одном ряду с Inno Setup и InstallShield.

Партизанский sscanf()

На этот баг я наткнулся, когда после добавления дополнительных настроек игры при проигрывании записей прошедших игр возникала ошибка синхронизации, т.е. запись не шла по тому руслу, по которому развивалась игра. При этом ошибка появлялась, по всей видимости, случайно и я долго не мог найти причину.

Опущу скучные детали отладки и перейду к самому соку. Настройки игры, вид карты и данные о выбранных нациях передаются через имя файла случайной карты, которое имеет формат , где

  • RN0: префикс RN и размер карты (0 — 2)
  • 1A3C: значение ГПСЧ для инициализации случайной карты
  • 12345: Вид карты (ландшафт, горы, месторождения и пр.)
  • 0KFH31CJ: Нации, которые выбрали игроки (0 — K)
  • 4501326: Настройки игры (Артиллерия, PT и пр.)


Загвоздка здесь в том, что для четвёртой переменной указан тип %x, в то время как диапазон символов в ней выходит за рамки шестнадцатиричной системы и простирается до буквы K. Если в игре присутствуют игроки, которые выбрали нации с индексом выше F, то sprintf() преждевременно закончит парсинг и вернёт 4. Параметры не будут интерпретированы, у ИИ будет неправильная информация об игре и он будет принимать другие решения, что приведёт к рассинхронизации.

В дополнение к этому идёт тот факт, что sprintf() вызывается исключительно для ADD_PARAM — остальные переменные нигде не используются. Решение проблемы относительно простое:


Флаг * указывает функции, что значение не следует сохранять в переменной. Кстати, пoсмотреть, каким образом я реализовал кодирование 10 игровых настроек на месте тех же 7 цифр можно здесь. «Зачем?» — спросите вы. А потому что менять длину строки с именем файла карты по своему усмотрению показалось мне не очень хорошей идеей (см. выше в «Весёлой арифметике»).

Самое интересное для меня здесь это тот факт, что баг проявил себя лишь при компиляции в . Получается, что реализация функции sscanf() в стандартной библиотеке за прошедшие годы стала построже и впредь не будет прощать такие вольности со стороны программистов.

Памятка: Следовать в первую очередь требованиям документации, а не принципу «рабочий код — правильный код».

Тонкости языка

Локализация это отдельная тема для любого разработчика, но такое я увидел впервые:


Если вам этого мало, предлагаю заглянуть под спойлер и посмотреть, для чего же нужен этот «крипто-ключ».

Вот таким нехитрым образом можно запороть локализацию на этапе компилирования. Если, например, «английскому» dmcr.exe подсунуть архив с ресурсами из русской версии, то всё, что останется от игры — окно ошибки access violation. Потому что ни до, ни после «isi memory decryption» содержимое буфера не проверяется. А вот если мы распакуем архив all.gsc, заменим файлы и запакуем его обратно, то в игре нас будет ждать русский интерфейс.

Посмотрев на эту XOR-вакханалию я решил ограничиться английской версией, но с поддержкой кириллицы в чате. Так как весь текст отрисовывается через собственные шрифты игры, я скопировал из русской версии ресурс mainfont.gp. Осталось только отловить символы, выходящие за пределы диапазона ascii, и правильно сопоставить коды букв с «индексом кадров» этого файла (формат GP используется в игре повсеместно для хранения графики, в том числе и для анимации). Не самое элегантное решение, зато работает безотказно, причём на сервере в чате с игроками под версией 1.35 тоже.

UDP без дырок

К сожалению, в оригинальных «Казаках» не был реализован механизм UDP hole punching, который позволил бы игрокам подключаться к игровым комнатам, даже если их хост находится по ту сторону NAT своего провайдера.

Все детали реализации можно посмотреть в классе UdpHolePuncher. Соединение инициализируется при создании игровой комнаты хостом, после чего он вплоть до старта игры поддерживает связь, отправляя небольшие пакеты. Это нужно, т.к. NAT может при каждом новом UDP соединении присваивать другой внешний порт, а так сервер наверняка знает, что в данный момент времени хост доступен из-за NAT по тому порту, с которого приходят пакеты.

Соответствующие изменения были внесены и в процедуру обработки команд сервера и в структуру RoomInfo в библиотеке IChat.dll. Поддерживаются следующие дополнительные переменные при создании игровой комнаты:

  • %PROF: идентификатор игрока. С помощью него сервер сможет различать хостов
  • %CG_HOLEHOST: адрес сервера, обрабатывающего UDP пакеты
  • %CG_HOLEPORT: порт сервера, на котором слушается UDP
  • %CG_HOLEINT: интервал, с которым клиент должен отправлять пакеты

Хотя весь этот механизм уже имплементирован в клиенте игры, протестировать мне его ещё не удалось, т.к. контакт с Аллигатором оборвался. Незадолго до этого он выложил в открытый доступ исходный код своего сервера, — спасибо тебе за это! — так что если кто-то готов поднять эстафетную палочку, я буду только за.

Послесловие

Статья и так уже вышла длиннее, чем я планировал, так что буду краток. Хотя этот проект занял продолжительное время и ощутимо истощил запас моего энтузиазма к реверс-инжинирингу и анализу исходного кода, я рад, что взялся за него. Рад, что написал тогда статью на Хабр с описанием своего первого, ассемблерного, костыля для «Казаков». Рад, что в комментарии пришёл Максим fsou11 и выложил в свободный доступ исходный код игры. Также я благодарен сообществу LCN за ценные советы, объяснения и помощь в тестировании.

Как настроить игру на Windows 7

Инверсия (искажение) цветов

Самый легкий способ избавиться от всех проблем вылета

  1. Запустить средство для устранения проблем с совместимостью (для Windows 10), либо устанавливаем вручную
  2. Устанавливаем патч (перекидываем все файлы в папку с игрой)
  3. Скачиваем патч для новых видеокарт (ddraw.dll) и переименовываем его в mdraw.dll.
  4. Заменяем патч на файл из папки с игрой.

Читайте также: