Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка
Версия Warcraft:
1.26 и ниже
Собственно тот знаменитый хак на память который нам радостно предоставил DracoL1ch, который позволяет нам больше не морочится с системами отлова урона, или вовсе узнать координаты курсора без стороннего по.
Для сохранения требуется: экспериментальная версия pjass.exe
Причём не все подходят, меньше всего проблем было с этой версией
В хаке присутствует только 1 пример на изменение белой атаки у героя, остальные готовые функции можно найти на:
Хайве
Гитхабе
Просто копируем саму функцию, все остальное для её работы есть в наработке и сохраняем.
Так же на хайве есть инструкция по созданию собственных функций для чтения\изменения данных в памяти игры.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
21
6 лет назад
0
Maniac_91, quq_CCCP, спс за идеи, подумаю
но таймер там на подсчет мана регена все равно будет не менее, чем 0.1 сек., потому что оно же там будет считать разницу между тем, что было, и тем, что стало, просто getmpregen с мемхака не тянет, т. к. есть же триггерные всякие замуты и т. п., и в такой системе НАДО, чтобы атака часто обновлялась, потому что, допустим, реснет он с абилы предмета или от помощи союзника несколько сот маны - система приплюсует это в мп реген и сделает ему атаку ненормальную, чем чаще обновления, тем меньше вероятность, что он с этим проатаковать успеет
0
18
6 лет назад
0
ClotPh, когда мана прибавляется не от регена (от зелий, например), можно же триггерно это прибавление вычесть из переменной (или прибавить, смотря какая система используется).
0
21
6 лет назад
0
Maniac_91, ты предлагаешь для всех триггерных и нетриггерных добавлений маны бд писать?
Проще уж просто подсчитывать периодом
В принципе там еще можно продумать, что, н-р, +400 маны за 0.1 секунды это явно с 99% вероятностью НЕ реген был, особенно если он не повторился такой в следующие 0.1 секунды, но это уже опять свои заморочки, пока что выходит, что проще каждые доли секунды сверять значения и разницу рассчитывать
Бтв так-то само по себе на производительность это офк влияет, но не так уж сильно, 4-5 таких способностей одновременно варкрафт даже с 0.01 держит спокойно, а пропорционально увеличению периода и больше держать может, вопрос был больше про конкретно функцию, сильно ли она ресурсотребовательная относительно большинства других и само по себе не страшно ли так часто в память лезть
0
18
6 лет назад
Отредактирован Maniac_91
0
ClotPh, да не, БД тут не нужна. Достаточно 1-й переменной и отлов прибавления маны. Например, переменная М (реальная). Периодический триггер рассчитывает реген, как (мана юнита минус М), после чего устанавливает М = мана юнита.
А когда мана юнита меняется (применение заклинания или зелья маны), нужно менять М на такое же значение, чтобы разница рассчитывались от изменённого количества, а не просто маны юнита.
Компа с редактором под рукой нет, не проверял на практике.
0
21
6 лет назад
0
Maniac_91, так про периодический переподсчет и перезапись переменной это понятно, я так в подобных ситуациях и делаю. Мне вот все равно непонятно, как ты собираешься отлавливать "применение заклинания или зелья маны"? Ладно, допустим, изменение маны при всех своих кастах смотреть еще можно. А если там союзник на тебя восстановление маны кастанул?
Короче, тема не туда пошла, ответ получен, спасибо
0
18
6 лет назад
0
ClotPh, ты прав насчёт базы данных - с базой легче. А где-то же была возможность узнать манакост применяемой способности? Тогда всё проще. Но отлавливать всё же придётся, иначе пострадает точность расчёта.
Отлов: применение зелья: юнит использует предмет; применение заклинания - юнит завершает (или начинает - не помню, когда ману снимают); если союзник прибавляет ману - добавить к М количество прибавляемой маны (считать по уровню способности).
Извиняюсь за оффтоп, но мне нужно было ответить - возможно, кому-то это пригодится =)
0
21
6 лет назад
0
Maniac_91, манакост узнается мемхаком
но конкретно здесь впутывать еще касты и манакосты уже слишком сложно = истины в этом нет
////
а без мемхака узнать можно тем же замером маны до и после каста, но по понятным причинам будут некоторые погрешности
0
18
6 лет назад
0
ClotPh, хорошо, не будем усложнять систему ради незначительных изменений =)
0
23
6 лет назад
0
пф а не проше ли узнать значение регена маны если значение добавить к основному мп то есть
герой имеет 50 мп + 3 мп итог 53 потом расчитиваем за время если зелье дал больше чем 53 который в скором не регенрнули то ловите события что было восполнено мп зельями а не реген
0
21
6 лет назад
0
pro100master, да это что в лоб, что по лбу по отношению к тому, что обсуждалось выше
дополнительные проверки ежесекундно че было и че стало... а вдруг это ему не зелье на несколько секунд далось, а просто навсегда какая-то абилка ему повысила мп реген на +2 в секунду? Или он вообще как-то сразу 3 уровня получил и мп реген от инты стал резко выше?
вообще на самом деле по-хорошему теперь, когда мемхак считает мп реген, имеет смысл вообще все триггерные и нетриггерные добавки восстановления маны сделать только на изменение этого значения, то же и с хп регеном - тогда проблем не будет - но это долго и много переписывать - но в перспективе возможно
0
21
6 лет назад
Отредактирован ClotPh
0
O_O
А как вообще проверить, на перезарядке ли конкретная способность конкретного юнита? Казалось, что это давно есть - а нихрена.
Мне понадобилось при определенных условиях сымитировать каст способности: запустить кулдаун абилы по ее кулдауну, отнять ману у кастера по манакосту, применить ее эффект (ну тупо триггерная часть перекопирована). Это все можно, а как проверить, в кд она или нет?! Ведь без такой проверки абила будет всегда имитировать каст при необходимых условиях = да. Хоть 10 раз подряд!
function IsAbilityOnCooldown takes integer z returns boolean
return IsFlagBitSet(Memory[(z+0x20)/4],512)
endfunction
Вот это я вообще не понимаю, что это. Юнит-то где?
По подсказкам мемхака смутно понятно, что проверяется последняя такая скастованная способность, что ли... Но мне так не подходит, будут баги при одинаковых героях с этой способностью.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.