Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обсуждение развития ТЕ и новых команд ERM для него
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4, 5
SAG19330184
1) есть ли еще специалисты, которые могут расширить текущий набор команд ERM? интересует не столько сам ERM, но возможность использования новых команд для ERM в TE версии.

2) какой номер последней версии ERM?

3) в частности нужно:
- правильный триггер CM для области вокруг миникарты
- правильная отработка триггера CM3 в области нажатия на кнопку OK (область # 30720) - когда закрываешь окошко этой кнопкой, триггер не отрабатывает...
- возможность динамического изменения картинок как на карте (нужны новые нажимаемые кнопки, в область вокруг миникарты), так и в диалогах
- возможность создавать/разрушать объекты на карте, которые видны только владельцу (по типу следов пути). Нужно например для "автодвижения".
- возможность перемещать героя с посещением (пока герой перемещается без посещения объекта. Я хотел бы сделать "автопосещение" всяких мельниц и садиков на 1й день, когда там обновляется содержимое)
- возможность управлять строкой чата (новые триггер и ресивер на входящее и исходящее сообщение)
- возможность расширить набор диалоговых картинок (в частности нужны маленькие встроенные картинки вторичных скиллов, а пока в диалогах есть только такие же, но большие)

заранее всем спасибо yes.gif
Хмм..
Сомневаюсь, что это кому-то еще нужно. А вообще подожди 3.59 может там такое и будет, на это тебе Сергрой ответит
hippocamus
Не сомневайся. Нужно.
Нужны новые триггеры - щелчок мыши в экране книги магии.
Также нужны команды сохранения (диалога сохранения) и выхода в меню.
Возможность директивно выполнить триггер.
Например:
!?DW10/20/1/125; посетить двеллинг по кординатам 10/20/1 героем 125.
Сатарыч
Нужны новые триггеры - ПОСЛЕ нанесения урона или каста магии
sergroj
1) Можно использовать свои dll и добавлять специфические команды и триггеры, но не такие удобные, как в ЕРМ, если не ошибаюсь - см. http://forum.df2.ru/index.php?showtopic=6904&st=104

2) 3.0.0 (правый клик по Credits)

3) записал
Alex-EEE
Цитата(SAG19330184 @ 03 Nov 2008, 23:24)
- возможность перемещать героя с посещением (пока герой перемещается без посещения объекта. Я хотел бы сделать "автопосещение" всяких мельниц и садиков на 1й день, когда там обновляется содержимое)


Есть же скрипт, который делает мельницы и садики как шахты, приносящими доход без посещения.
SAG19330184
Цитата(Alex-EEE @ 04 Nov 2008, 17:40)
Есть же скрипт, который делает мельницы и садики как шахты, приносящими доход без посещения.

это не совсем то. Во-первых это выглядит инородно по сравнению с SOD. Во-вторых, меняется функциональность объекта, т.к. теперь не нужно туда вообще заходить (плохо, потому как такое изменение не соответствует целям ТЕ). В-третьих нужно посещать не только объекты, но и просто желтые клетки, например напасть на монстра
SAG19330184
4) позарезнужно:
- пост-триггер на клики мыши (особенно на правый)
5) нужно:
- операции с файловой системой (побайтная запись/чтение файлов, переименование файлов, создание папок). Нужно для шифрования сейвов и для удобного встроенного Автосейвера. Можно конечно пользовать и внешние автосейверы (сам сделал несколько версий, да и версией от Sir_Four пользовался), но у каждой версии есть свои глюки и недостатки.
6) нужно:
- возможность совместно использовать в диалогах статический текст вместе с картинками (когда картинок например 8шт и соответственно 8 текстов)
- возможность использовать в диалогах многострочный текст статический текст (например статичный список)
- возможность использования выпадающих списков
7) нужно:
- возможность перемещения героя из visiting в гарнизон (когда вид: карта). Или это уже возможно? Я пробовал уничтожить героя и создать его уже в гарнизоне, при этом пошли глюки. Желательно обойтись без уничтожения, каким нибудь простым изменением статуса.
hippocamus
7. наверное можно, только нужно ещё убрать у него принадлежность. Учти - объект "герой" исчезает, а появляется новая запись в объете "город". Так что героя наверное нужно убирать с карты. Может - убить?
SAG19330184
8. нужно:
- позарез нужен запрет переключения Героев. Т.е. при ALT-tab чтобы не переключалось. И при других настроенных на переключение кнопках тож не переключалось. Это нужно чтобы сократить количество читов: просмотров сейвов и т.д. В крайнем случае сойдет и полная блокировка клавиатуры, но намного более востребована функция типа: "если окно Героев теряет фокус или пытается запустить оконный режим, то вернуть ему этот фокус или полноэкранный режим". Тому, кто сделает такое - поставим памятник при жизни biggrin.gif
GORynytch
Обратись по вопросу №8 к разработчикам игры Sacred -- компании Ascaron, кажется. Они там это сделали так, что во время игры, если ты не запустил перед игрой ни одного другого окна, ты не сможешь свернуть игру.
SAG19330184
вот еще мысля пришла по поводу триггера и ресивера на входящее и исходящее сообщение чата: можно будет тогда сделать на основе чата свой протокол обмена данными и таким образом заставить ERM работать еще до старта карты! хотя бы частично...вообще, до старта карты может много чего понадобиться (торги за цвет, за замок, выбор шаблона и т.д.) а инструментов пока вообще никаких нет...ERM на этой стадии пока не работает, обмена данными с противником нет. Кто сможет сделать инструментарий - тому второй памятник и вечная слава
gamecreator
Цитата(SAG19330184 @ 05 Nov 2008, 15:09)
8. нужно:
- позарез нужен запрет переключения Героев. Т.е. при ALT-tab чтобы не переключалось. И при других настроенных на переключение кнопках тож не переключалось. Это нужно чтобы сократить количество читов: просмотров сейвов и т.д. В крайнем случае сойдет и полная блокировка клавиатуры, но намного более востребована функция типа: "если окно Героев теряет фокус или пытается запустить оконный режим, то вернуть ему этот фокус или полноэкранный режим". Тому, кто сделает такое - поставим памятник при жизни  biggrin.gif

отдельной прогой можно легко сделать. вот встроить в екзешник будет посложнее.
Хмм..
Можно хук повесить на SendMessage. Но не зна. как это отразится на быстродействии
gamecreator
а зачем на sendmessage? проще на клаву его повесить
sergroj
При чем тут вообще sendmessage? И в чем может быть проблема встроить в екзешник?
SAG19330184, получается, что пока ходит противник, игрок должен тупо сидеть и ждать, уставившись в окно Героев? По-моему, ужасная затея. Наоборот, лучше сделать, чтобы звук перехода хода выводился при свернутых Героях.
Кстати, есть мысль защитить сейвы от редактирования - писать шифрованный checksum.
gamecreator
сложность в том, чтобы дописать
насколько я знаю, при сворачивании окна герои вообще приостанавливаются, так что сидеть и ждать придется по любому.
SAG19330184
Цитата(gamecreator @ 06 Nov 2008, 08:28)
сложность в том, чтобы дописать
насколько я знаю, при сворачивании окна герои вообще приостанавливаются, так что сидеть и ждать придется по любому.

вы о чем? при сворачивании только музыка глушится, а эффекты остаются в том числе и переход хода. Кстати, эффекты легко отключать выборочно. Многие игроки играют без звука, поэтому включить им выборочно пару звуков будет весьма полезно (я планирую сделать такой патчик).
Относительно необходимости "тупо смотреть в экран" - поясню - это нужно в основном для чемпионатов, для важных игр где очень хочется избежать читерства. Т.е. желательно сделать это отключаемым.
hippocamus
Ну, убить explorer, и все программы. Точнее не грузить при загруженных других программах, кроме самого процесса explorer, который убить после загрузки. Тогда Alt-Tab просто работать не будет, так же как и Win и все остальные кнопки. Единственно - будет работать Ctrl-Alt-Del, но винда не позволит тебе это отключить.
gamecreator
винда позволяет заблокировать запуск диспетчера. емнип, даже команда специальная для этого есть.
SAG19330184
Цитата(hippocamus @ 06 Nov 2008, 12:43)
Ну, убить explorer, и все программы. Точнее не грузить при загруженных других программах, кроме самого процесса explorer, который убить после загрузки. Тогда Alt-Tab просто работать не будет, так же как и Win и все остальные кнопки. Единственно - будет работать Ctrl-Alt-Del, но винда не позволит тебе это отключить.

такое решение не подходит, т.к. человек который должен выгрузить все из памяти - в этом не заинтресован. Так раз наоборот, потенциально именно он предпримет все чтобы посмотреть сейв или карту. Я хочу максимальных возможных гарантий что при игре в онлайне или по сетке:
а) противник не пользуется читами (ну это решаемо, вероятно)
б) противник не имеет возможности просмотреть сгенеренную карту (надо или шифровать ее или удалять сразу после генерации и загрузки, причем автоматически)
в) противник не имеет возможности просмотреть сейвы (надо шифровать сейвы двойным паролем (для открытия нужен твой пароль и пароль противника); удалять нельзя, т.к. бывают срывы связи, отключения электричества, неотложные обстоятельства и т.д.)
г) противник не видоизменил саму игру в свою пользу (по крайней мере проверить текстовики и скрипты на одинаковость у обоих игроков)
gamecreator
Цитата(SAG19330184 @ 06 Nov 2008, 17:15)
Так раз наоборот, потенциально именно он предпримет все чтобы посмотреть сейв или карту.

тогда:
б) перехватит файловые операции и пересохранит карту.
в) перехватит tcp-пакет и посмотрит пароль противника
г) противник видоизменил в свою пользу еще и проверку
Хмм..
Цитата(sergroj @ 06 Nov 2008, 08:15)
При чем тут вообще sendmessage?

getmessage beee.gif
hippocamus
Я говорю про то, что heroes3.exe сам закрывал все процессы.
Но это не спасёт от Ctrl-Alt-Del, т.к. Windows эту комбинацию не позволяет перехватывать.
По-хорошему - нужно создавать собственный мод операционки, благо Win95 этому поддаётся. Взять самые необходимые библиотеки системы и создать операционку только для игры.
DracoLich
ТТ. Windows Hero Edition мля. До маразма-то доводить не надо. Сделайте себе чексум и хватит. Игрок хочет чето-то поделать пока враг ходит. А вы "запретить не пущать" ... тт
gamecreator
Цитата(hippocamus @ 06 Nov 2008, 23:19)
Но это не спасёт от Ctrl-Alt-Del, т.к. Windows эту комбинацию не позволяет перехватывать.

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

gamecreator, то, что ты написал, могут делать единицы. От них, конечно, не защититься никак. Правда, от в) можно - просто не передавать пароль открыто.
Aнгeл
Единицы могут писать тулзы для масс. А уж массы найдут применение. Как и в случае Super Defender, просто нет спроса на подобные мероприятия.
sergroj
Кстати, что мне не приходит в голову, как сделать - это защититься от AtrMoney и т.п.
Aнгeл
Цитата
это защититься от AtrMoney и т.п.

А от свои тулз? Мне хватает DEE и EVME для вмешательства в ЕРМ игры. В любом случае АртМани не использует внедрение своих DLL, а юзает известные ReadProcessMemory и WriteProcessMemory. Для параноиков, которым не важна скорость игры, можно создать тред, что будет скнаировать систему на наличие классов окон таких приложений как ArtMoney, DetectiveStory an so on. Если же нужно защититься от целого класса прог, то есть вариант №2:

1) Отключить все антивирусы и фаерволы
2) Написать прогу (или тред), что будет внедрять длл в адресное пространство каждого процесса, перехватывать Read and WriteProcessMemory и если процесс - Герои, возвращать FALSE.
3) От инжекта DLL может спасти только драйвер.
sergroj
Вариант №2 - действительно, для параноиков. А вариант №1 можно модифицировать, ловя момент запуска приложений - помню, вроде, это можно сделать без дополнительной dll, потом ориентироваться по названию exe. Но остается проблема списка таких прог.
Aнгeл
Я переименую ArtMoney. Это ведь не для идиотов "защита"? *подмигивает*.
sergroj
Вообще-то, для идиотов - кто ж еще может читить в турнирах, кроме как идиоты biggrin.gif
Еще можно запоминать checksum основных вещей при деактивации окна.
Aнгeл
Цитата
Еще можно запоминать checksum основных вещей при деактивации окна.

А потом сравнивать checksum с самим собой, заменив пару команд в отладчике smile.gif
Имхо, ни одна игра в подобный бред не лезет. Нужна совершенная ОС, другие механизмы и т.д. Просто пустая трата сил и времени.
SAG19330184
в моем понимании - достаточно сделать простую программулю клиент-сервер которая отслеживает чтобы Герои были активны и во весь экран, а если это не так, то возвращает фокус или полноэкранный режим (второй игрок видит что эта программуля работает и соответственно противник не читит). Разумеется создавать операционку под Героев - пустая трата времени
Alex-EEE
Цитата(SAG19330184 @ 09 Nov 2008, 19:30)
Разумеется создавать операционку под Героев - пустая трата времени

А такая ОС как ReactOS может пускать Heroes 3.5?
Если на ней они нормально идут, можно заточить ее (есть исходники) на работу только с Героями.
hippocamus
Ага, а написать полноэкранный же редактор сейва очень трудно? чтобы работал "поверх всех окон"?
SAG19330184
ну это писать надо специально. Вероятность этого можно исключить smile.gif
hippocamus
да? а о существовании такого прикола, я не помню как называется прога, но добавляет в заголовок любого ещё кнопочку, в результате чего прога становится "поверх всех окон". и выдвигается из-за экрана при приближении мыши к краю экрана. Так вот, фиксируешь таким образом 16-ричный редактор, и всё. все сейвы твои...
Хмм..
Если кому-то интересно жульничать, а не испытывать свои силы - это его право.
hippocamus
Я просто доказываю бессмысленность этой затеи. Жулик найдёт способ обойти запрет, а простого игрока невозможность переключения будет просто раздражать.
sergroj
Цитата(Aнгeл @ 09 Nov 2008, 22:15)
Цитата
Еще можно запоминать checksum основных вещей при деактивации окна.

А потом сравнивать checksum с самим собой, заменив пару команд в отладчике smile.gif
Имхо, ни одна игра в подобный бред не лезет. Нужна совершенная ОС, другие механизмы и т.д. Просто пустая трата сил и времени.

Не верю. smile.gif Всяко проверку не будешь трогать, а только jump изменишь.
Это же не сложно. И против большинства читеров подействует.

Кстати, исходники Windows NT тоже есть в свободном распространении.
Aнгeл
cmp crc, needed crc
jne @@Fuck

=>

cmp crc, crc
jne @@Fuck

Сравнивать с самим собой всегда удобнее.
Уже есть куча команд условных класса mov, прыжки - прошлый век.
hippocamus
последние 2 строки не могу понять.
Это же примерно равно следующему: "if False then Fuck;" и оно не может быть выполнено.
Aнгeл
Так и есть. Оригинальная логика:

Цитата
CALL CalculateCRC
CMP EAX, $12345
JNE @@Fuck
JMP @@OK
@@Fuck
PUSH OFFSET 'Какой-то тупой крякер внёс изменения в ехе'
CALL ShowMessage
PUSH -777
CALL ExitProcess


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

Код
CALL CalculateCRC
CMP EAX, EAX


Если же есть место, но наиболее корректно - изменить возвращаемую CRC, потому как проверки могут быть отложены, скопированы по десяткам локальных переменных и т.д.

Было:
Код
CALL CalculateCRC


Стало

Код
MOV EAX, $12345
gamecreator
тему надо переименовать в бредовые идеи (по аналогии с бредовыми городами)

так извращаться всего лишь чтобы исключить читерства - это глупость
hippocamus
Ангел,
понял wink.gif

Игродел,
Нет, тему не надо переименовывать, просто нужно посты касающиеся защиты от жуликов из этой и из соседней темы перенести в одну новую. А сама идея новых триггеров - вещь важная. Жаль, я здесь не модератор.

Ангел,
вот скажи - нет никакой возможности сделать допустим такую команду:
?!OBx/y/l:H25;
которая будет инициировать триггер посещения объекта героем #25
Aнгeл
Я делаю команды не в таком виде, но всё же. Конечно можно, нужно лишь проследить за триггером на посещение объекта, выйти на верхний код, наставить брейков, попробовать заходить через пробел, если попадём на один из брейков, то выявить ключевые процедуры и параметры. А потом это повторять. Просто рутинно всё smile.gif Ну и непонятно, куда вводить. Явно не в ВоГ, а 3.59 билды закрытые.

А для задачи SAG-а вовсе не обязательно посещать героем мельницы и т.д. Можно попросту снимать с объектов ресы и прибавлять в казну, что и делает скрипт то ли Драколича, то ли Солмира.
hippocamus
Не, я так понял - он хочет, чтобы герой действительно бегал, и тратил на это необходимое время без возвращения ему управления...
Мысль хорошая, но имхо, неоправданно сложна в реализации...

А мой вопрос по сути сводися к следующему: чтобы сделать все триггеры как события - типа OnEnter, OnClick и проч.
Aнгeл
Всё - тяжело, многие нереально. Более простые - возможно.
На досуге гляну указанные тобой объекты и щелчки.

Добавлено ([mergetime]1226362206[/mergetime]):
В принципе, с щелчками и объектами попробовать можно, по крайней мере, не смертельно. Но это лишь обман ЕРМ, граждане, практического применения пока не вижу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.