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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
7 лет назад
0
Из новостей:
Способности: Буран, Целительная волна имеют нестандартную структуру и их нельзя запустить в кулдаун функцией StartAbilityCooldown.
Ибо им нужно занести кд, функцией SetAbilityCD.
Возможно существуют еще такие способности.
0
21
7 лет назад
0
Вообще порно с Еленой Берковой.
Короче, попробовалось сделать так: вынуть из карты darkowlom'а файл war3map.j через mpqeditor и переимпортировать его на его же место. Не знаю, что в итоге произошло, но карта и запустилась снова без проблем, и стала пересохраняться нормально. В процессе галочки JNGP включались/выключались разные, так и не знаю, то повлияло, или это.
Всем спасибо.
*****************
В общем, "для чайников" мой обновленный вариант ниже. Строка кода нормальная была. Просто не работала, теперь точно такая же работает.
Для импорта моего варианта по идее хватает следующего:
  • Иметь последний JNGP
  • Просто скопировать в свою карту кастом код и единственный триггер из моей в папке Return Bug.
В сабже уже протестировано (с подсказками):
  • Изменение белой и зеленой атаки и их подсчет
  • Изменения манакоста способностей и их подсчет (изменения на конкретный лвл конкретной абилы)
  • Изменения перезарядок способностей и их подсчет (изменения на конкретный лвл конкретной абилы)
PS Ятп верно, что отрицательная перезарядка = фатал? После этого геморроя чекать уже ппц неохота.
Загруженные файлы
0
16
7 лет назад
Отредактирован DracoL1ch
0
зачем тебе вообще может понадобиться отрицательная перезарядка? но нет, отрицательный кд просто сбросит текущий кд, как и 0.
>>Способности: Буран, Целительная волна имеют нестандартную структуру и их нельзя запустить в кулдаун функцией StartAbilityCooldown.
>>Ибо им нужно занести кд, функцией SetAbilityCD.
пофиксил
0
21
7 лет назад
0
Еще раз спс. Про перезарядку - просто узнать, не стоит ли беспокоиться при ее уменьшении о проверке, не получится ли меньше 0 фатал.
С такими функциями, кстати, -wtf мод пилится значительно проще и правильнее, ведь, строго говоря, на самом деле (хз как сейчас, раньше в оффдоте было так) попросту при применении любого спелла или способности сбрасывались все перезарядки и обновлялась мана через 0.01 сек., а не "все спеллы не имели перезарядки и мановой стоимости".
При таком подходе тот же антимаг сосет и т. п.
А с таким все просто: при применении любой способности задать ей манакост 0, перезарядку 0. И зшбс. (Это уже ПОЧТИ правильно. В идеале сразу через бд обнулить их у всех способностей, но польза будет незначительная, а геморроя много)
А уж героев-то сколько можно придумать на манакостах и перезарядках абил - не перечесть. Так, будем играться дальше...
1
32
7 лет назад
1
  function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
        local integer pAbility = 0
        if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId  ) < 1 or cd == 0.00  then
            return false
        endif
        set pAbility = GetUnitAbility(whichUnit, abilityId)
        if pAbility < 1 then
            return false
        else
            if ReadRealMemory(pAbility+0x134)==-1 and ReadRealMemory(pAbility+0x138)==-1 then
                call WriteRealMemory(pAbility+0x134,0)
                call WriteRealMemory(pAbility+0x138,0)
            endif
            set Memory[pReserverdIntArg1 / 4] = SetRealIntoMemory(cd)
            call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
            return IsAbilityOnCooldown( pAbility )
        endif
        return false
    endfunction
Вот пофикшенная функция кулдауна, теперь она может запускать в кулдаун буран и цепи молний. (по прежнему фаталит если попытаться запустить в кулдаун пассивку)
Отрец. кулдаун кстати сбрасывает перезарядку.
11
16
7 лет назад
11
На хайве вшили функционал хака в редактор
1
21
7 лет назад
1
Круто, но что-то у меня опять все ошибки начинают с начала вылезать, которые были.

Пока сделан бэкап до своего JNGP + своей тест-карты с кастом кодом + 1 триггером, это уже не сложно импортировать, все там у меня уже точно норм работает и норм пересохраняется.
Но все равно +, т. к. склоняюсь к тому, что это на моей стороне наркомания.
1
21
7 лет назад
Отредактирован awesomesk1ll
1
Подгруз своих .dll из mpq карты уже сделали для чайников?
п.с. Что мертво - умереть не может.
1
29
7 лет назад
1
awesomesk1ll, ну смотри, функцию распаковки из mpq я видел, функцию загрузки dll я тоже видел, так что вперед)
1
13
7 лет назад
Отредактирован ENAleksey
1
awesomesk1ll, да, здесь нет ничего сложного, для начала экспортируем dll из карты, а потом загружаем её с помощью LoadLibraryA. Сейчас скину карту с загрузкой моей библиотеки, в которой реализован Widescreen Fix.

Скачать (поддерживаются версии 1.26a и 1.27а).
Правда, я сделал инициализацию библиотеки с помощью вызова экспортируемой функции из dll, чтобы передать в неё версию варкрафта, но это можно делать и внутри библиотеки: вызывать только LoadLibraryA, а всё остальное делать в теле функции DllMain.
Загруженные файлы
0
4
7 лет назад
0
Возможно ли с помощью хака сделать что-то типо Preloader'а?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.