WarCraft 3: WarCraft: Взгляд изнутри

WarCraft: Взгляд изнутри
» Раздел: Основы

Конечный продукт

Чтобы не отнимать время у всех читателей-непрограммистов, я сразу начну с готовых программ, а потом уж приступлю к их разбору.
Итак, первый из написанных мной «модов» к War’у – программа waradd.exe (лежит в архиве waradd.zip). Она позволяет отслеживать позицию курсора мыши в War’е. Просто скопируйте её в папку с War’ом и запустите. При этом War запустится автоматически. В том же архиве лежит пример карты, использующей эту программу. После запуска карты на экране выводится позиция курсора мыши (триггер срабатывает каждые 0,5 сек).
Как это работает?
Прежде всего, в редакторе триггеров необходимо объявить переменную целочисленного типа. Она может идти под любым именем, но должна равняться 98765432. Мод сканирует память War’а, и, найдя это число, начинает записывать туда позицию курсора мыши (в «сжатой» форме = Y*65526+X).
Вторая программка предназначена для тех модмейкеров, которые хотят дополнить War собственным MPQ-архивом. Вроде бы такие архивы замещают файл war3patch.mpq. Я всегда считал абсурдной эту идею – чтобы War не вылетал после такой операции, необходимо положить в новый MPQ кучу всякого хлама (у меня при попытке перезаписи этого файла War и WE начинали вылетать). И даже существуют программы, которые на время запуска заменяют war3patch.mpq “модовским” архивом, а после выхода из War’а – восстанавливают исходный архив. Тут есть одно НО: современные компьютеры иногда виснут. И если War повиснет, когда war3patch.mpq перезаписан, то потом мод уже не запустится, а сам War начнёт глючить. Идеальным решением было бы научить War вместо war3patch.mpq «заглатывать» нечто иное – безо всякой перезаписи и переименования файлов. Итак, в архиве warmod.zip лежат две программки – warmod.exe и newWE.exe. Их опять-таки нужно скопировать в каталог с War’ом. При запуске первой из них запустится War, но вместо war3patch.mpq он будет пытаться загрузить war3mod.mpq. При запуске второй запустится WE, и тоже будет грузить war3mod.mpq.

Продолжаем! Что нужно для работы?

Для работы нам понадобятся:
  • Мозги (с КПД>75%).
  • DirectHands самой последней версии.
  • Умение программировать на Delphi, C или ASM.
  • Среда Delphi 5 или выше (т.е. программы-примеры написаны на Delphi, т.к. он пользуется большей популярностью, нежели C++).
  • Наличие ассемблера приветствуется, но если его нет – обойдёмся и так ;).
  • Да, чуть не забыл! Ещё нужен War (не ниже III-TFT), иначе не на чём будет испытывать наши замечательные программы.
Ну, вот вроде и всё. Можете запастись ещё ящиком пива, но я обойдусь без него.

Просмотров: 9 541

TiM #1 - 11 лет назад 0
Жаль, что дальше Паскаля не продвигался, хоть и Дельфи и Паскаль -тоже самое.
вар не хочет запускаться через прогу.
слушай, так ведь можно таким же способом менять вероятность способностей Доты например. Вот как у огра-мага. Блин, это ж читерство прямых рук получается :).
можешь объяснить - как редактор рамельчает переменную на 2 части? Всмысле что не всегда эти числа могут быть верными.
Iron #2 - 11 лет назад 0
TiM Как я понял, при x,y < 1600 данное уравнение имеет только по 1-му решению для x и y
TiM #3 - 11 лет назад 0
мда, я тож так думаю... только сложно это представить(для меня).
Алексей #4 - 11 лет назад 1
Числа всегда будут верными при x,y<32767.
Дело в том, что 4-байтовую переменную можно представить как комбинацию двух двухбайтовых:
0x0000_0000
В первой половине шестнадцатеричного числа передаётся x, во 2-й - y (к примеру), а потом число просто разрезается надвое.
TiM #5 - 11 лет назад 0
PS Алексей, програмка не работает :( засунул в папку вара, запустил-вроде диск грузил, остановилось. запустил карту, начал запускать прогу-диск грузился, 0эффекта только варик подключивать стал.
Алексей #6 - 11 лет назад 1
Вероятно, проблемы с совместимостью... У тебя версия Windows какая?
П.С.: Вот вам и ответ на вопрос, почему всё, что можно реализовать стандартными средствами движка, лучше не "запихивать" во внешние программы.
malcoriel #7 - 11 лет назад 1
Алексей, ты видимо, хорошо разбираешся, как функционирует вар. Загляни пожалуйста сюда: xgm.guru/forum/showthread.php?t=6000
Sky #8 - 9 лет назад 1
интересная статья, мне понравилась, хочу написать подобную прогу на C#