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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
21
7 лет назад
0
DracoL1ch, Clamp просто выше сказал, что может, как захочет.
quq_CCCP, можно.
0
30
7 лет назад
0
ClotPh, после моего коммента был ещё один, где сказали об огромной задержке.
0
21
7 лет назад
0
Clamp, а десинк из-за нее будет? Если нет, то еще приемлемо...
0
32
7 лет назад
0
ClotPh, разумеется будет если данные с кем то не синхронизируются, придется долго морщить лоб и писать 1005500 проверок, все ли игроки получили данные о координатах или нет?
Тем более никто не развивал набор функций для работы с мышью и прочим, пока авторы хака копают в другую сторону, вам остается либо ждать либо самостоятельно пилить функции с быстрой синхронизацией.
6
32
7 лет назад
Отредактирован quq_CCCP
6
Новая функция для мемхака старой версии
код
    function HideCooldownUIById takes unit whichUnit, integer id, boolean hide returns nothing
        local integer pAbility = GetUnitAbilityForAddresss( ConvertHandle( whichUnit ), id )
   
        if pAbility < 1 then
            return
        endif
    
        set pAbility = pAbility + 0x20
    
         if hide and not IsFlagBitSet( ReadRealMemory( pAbility ), 0x400 ) then
            call WriteRealMemory( pAbility, ReadRealMemory( pAbility ) + 0x400 )
        elseif not hide and IsFlagBitSet( ReadRealMemory( pAbility ), 0x400 ) then
            call WriteRealMemory( pAbility, ReadRealMemory( pAbility ) - 0x400 )
        endif

    endfunction
Собственно функция скрывает кулдаун указанной способности, скрывает только визуальный эффект кулдауна, сам кулдаун она не сбивает.
Так же есть проверка скрыт ли кулдаун индикатор у конкретной абилки:
    function IsCooldownUIHided takes integer pAbility returns boolean

        if pAbility < 1 then
            return false
        endif

        return IsFlagBitSet( ReadRealMemory( pAbility + 0x20 ), 0x400 )
    endfunction
Еще 1 функция, на этот раз можем узнать Id абилки которую может выучить герой
    function GetHeroAbilityFromList takes unit uHero, integer list returns integer
        set LastConvertedHandle = ConvertHandle( uHero )
    
        if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
            return RMem( RMem( LastConvertedHandle + 496 ) + 240 + 4 * list )
        endif

        return 0
    endfunction
Берет героя и номер абилки (см-рисунок)
Возвращает id абилки из списка доступных для изучения способностей, номер абилки это её порядковый номер в списке.
Загруженные файлы
0
21
7 лет назад
0
О, насчет узнавания абилки шикарно. А для "старого" мемхака её можно?
Вот бы узнать абилку у юнита в неком слоте и переписать ее в некий слот другому юниту.
Просто шик был бы.
Omg дота же та же реализуется в 100 раз проще, чем все то, что там сейчас, что никак до конца не доходят раскурить мозги, втч потому, что чувствуется, что это дико нерационально.
Вообще раз адрес есть и оттуда можно читать, не вижу, почему бы туда нельзя было и записать =)
0
32
7 лет назад
0
ClotPh, можно, нужно заменить RMem на ReadMemory.
Не помню я выкладывал функции кое каких эффектов от способностей?
0
21
7 лет назад
0
quq_CCCP, и убрать умножение на 4?
UPD - а, нет, скорее все загнать в скобки и поделить на 4.
0
32
7 лет назад
0
ClotPh, прям так должно заработать.
0
32
7 лет назад
Отредактирован quq_CCCP
0
Исходники библиотеки DotaHelper
Мб кому то понадобится, лично меня интересуют дабл клики способностей
0
7
7 лет назад
0
Вопрос по DotaHelper
Какие аргументы передавать в функцию?
int __stdcall RawImage_AddCallback(int RawImage, const char * MouseActionCallback, RawImageCallbackData * callbackdata, unsigned int events)
По остальным функциям есть какая-никакая документация, а тут я не возьму в толк, что передавать:(
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.