Конечный продукт
Чтобы не отнимать время у всех читателей-непрограммистов, я сразу начну с готовых программ, а потом уж приступлю к их разбору.
Итак, первый из написанных мной «модов» к War’у – программа waradd.exe (лежит в архиве waradd.zip). Она позволяет отслеживать позицию курсора мыши в War’е. Просто скопируйте её в папку с War’ом и запустите. При этом War запустится автоматически. В том же архиве лежит пример карты, использующей эту программу. После запуска карты на экране выводится позиция курсора мыши (триггер срабатывает каждые 0,5 сек).
Как это работает?
Прежде всего, в редакторе триггеров необходимо объявить переменную целочисленного типа. Она может идти под любым именем, но должна равняться 98765432. Мод сканирует память War’а, и, найдя это число, начинает записывать туда позицию курсора мыши (в «сжатой» форме = Y*65526+X).
Итак, первый из написанных мной «модов» к 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), иначе не на чём будет испытывать наши замечательные программы.
Ну, вот вроде и всё. Можете запастись ещё ящиком пива, но я обойдусь без него.
вар не хочет запускаться через прогу.
слушай, так ведь можно таким же способом менять вероятность способностей Доты например. Вот как у огра-мага. Блин, это ж читерство прямых рук получается :).
можешь объяснить - как редактор рамельчает переменную на 2 части? Всмысле что не всегда эти числа могут быть верными.
Дело в том, что 4-байтовую переменную можно представить как комбинацию двух двухбайтовых:
0x0000_0000
В первой половине шестнадцатеричного числа передаётся x, во 2-й - y (к примеру), а потом число просто разрезается надвое.
П.С.: Вот вам и ответ на вопрос, почему всё, что можно реализовать стандартными средствами движка, лучше не "запихивать" во внешние программы.