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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
16
7 лет назад
0
Ни в коем случае не используйте записывание строки через мемхак
Речь о том, чтобы заменить ссылку на строку где-либо своей ссылкой
Хотя смысл и не теряется, но у сборщика мусора явно едет крыша, и без рестарта вк будут рандомно выпадать краши. Так что пока без обновлений строк где-либо вообще
0
21
7 лет назад
Отредактирован Кет
0
DracoL1ch, ну песец, а на что я тогда трачу сегодняшний день =/
Может мне кто-нить тогда хоть посоветовать, как правдами и неправдами с мемхаком и без словить абилу и пропихнуть ее выучивание герою??? Мне нужно, чтобы он чужие абилы мог тырить и обязательно через выучивание, иначе будет ппц геморройная бд
просто у меня другие скиллы многие регают свои триггеры только через выучивание конкретно для выучившего
для оптимизации
т. е. если абилу просто дать, она ниче делать не будет
//////
так, тем временем у меня уже строка ловится и не фаталит (по "классическому" мемхаку уже, не люблю слово "старый", да, у меня там небольшая путаница с конвертхэндл функцией была, они ж для старого и нового мх разные, откат сделан).
1095263859
так, id2string все равно достает не понятно что, не равкод, а какие-то
\x00000041...
sic!!! Ну так или иначе прорыв.
ТАК. Ну вот для начала. Вот ДЕЙСТВУЮЩИЕ (!!!) функции для "классического" мемхака. Все-таки это какая-никакая, а победа ))) Равкод не отловить, но меняют абилу исправно.

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 ReadMemory( ReadMemory( LastConvertedHandle + 496 ) + 240 + 4 * list )
endif

return 0
endfunction

function SetHeroAbilityFromList takes unit uHero, integer list, integer abi returns nothing
set LastConvertedHandle = ConvertHandle( uHero )
    
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
 call WriteMemory( ReadMemory( LastConvertedHandle + 496 ) + 240 + 4 * list, abi )
endif

endfunction
//////////////
Теперь чо там про фаталы... Лично потестирую... Фаталы ведь ловились в "новом" мемхаке? Тупость, но может быть, это влияет?
А если я быстренько махну поле выучиваемых абил, сразу выучу одну и сразу обратно перепишу поле?
2
7
7 лет назад
2
ClotPh:
quq_CCCP, так, минутку, то есть равкод я не откопаю?
Ок, сейчас хоть цифры попробую снова... жопа =/
если я тебя правильно понял, то тебе нужна библиотека Ascii
пример использования
local integer id = 'hfoo'
local string raw = A2S(id) // raw == "hfoo" (строка)
id = S2A(raw) // id == 'hfoo' (число)
2
16
7 лет назад
2
ClotPh:
=~DracoL1ch, ну песец, а на что я тогда трачу сегодняшний день =/
я не вижу у тебя строк в указанном примере
0
21
7 лет назад
0
Ige, спс.
Да в принципе нужно, но не очень, равкод я при выучивании могу поймать.
DracoL1ch, у меня с тобой десинхронизация какая-то
каких строк?
Мои функции выше безопасны?
Пока гоняю в тест-карте, проблем не обнаруживаю, поля исправно переписываются туда и обратно и абилы учатся
ОХ, лол. Хм. Ща Мегамен забрал чародейскую ауру ладдерного архимага, работает и бафф дает вроде нормальный, но почему-то визуально отображается как "доспехи веры". То ли это у меня импорт такой и уже забыто, то ли допереписывалось (это уже XX была геройская способность, которые были переписыванием полей одному герою впихнуты и все через выучивание). Но других побочных эффектов пока не видно.
Лол набор: выучены 4 все свои абилы (но там не отображаются пассивки, специально же расчет на то, что гер абилы тырит), от чародея крови астрал, огонь и феня и от архимага буран, дух воды и аура, вот аура уже даже благополучно на панель не влезла.
///////////
DracoL1ch, а, дошло!!! Т. е. ты говоришь не брать значения из строки при записи в поле?
Ок, не буду, прямо из одного поля в другое, да и не планировалось.
0
20
7 лет назад
0
Будет ли десинк при выделении юнита игроком триггерно по случаю наличия зажатой конкретной клавиши (отлавливаемой мемхаком)? Действие то синхронизируемое.
2
16
7 лет назад
2
очевидно, что работало раньше, работает и сейчас, выделения синхронизируются автоматически, так что проблемы не будет
0
30
0
в чём может быть проблема функции SetUnitBaseDamage...
создаю юнита сразу же устанавливаю случайный показатель к атаке..., но с определённым шансом я получаю фатал...
для теста создал простой триггер, который создаёт юнита каждые 0.1 секунды и изменяет ему атаку через эту ф-цию...
иногда вылетает фатал после 40 созданных юнитов, иногда после 150...
где я мог накосячить..?
Загруженные файлы
0
32
7 лет назад
0
Андреич, юнита проверили?
Обязательно проверяйте входные аргументы.
0
30
7 лет назад
Отредактирован Алексей Андреич
0
quq_CCCP:
Андреич, юнита проверили?
Обязательно проверяйте входные аргументы.
ну да... юнит как бы не может быть мертв... так как изменение урона идёт один раз сразу после его создания...
0
16
7 лет назад
0
Ну так покажи код-то, чего стесняешься?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.