Добавлен Lenivex
1)Если известен адрес по которому хранится тот или иной тип данных, то как можно по адресу получить этот тип даных? Допустим по адресу P записан юнит - как получить этого юнита, зная P?
2)Можно ли во время игры сменить позицию кнопки на панели кнопок?
Принятый ответ
а, я думал, ты хочешь узнать тип объекта по его адресу. конвертировать в джасс сложно, не минуту доставать, позже
globals
integer l__Int2Unit
integer pGetHandleIDStackCounter=GameDLL+0x3A8060//26
integer pConvertAddressToHandleId=GameDLL+0x430C80//26
endglobals
globals
integer l__Int2Unit
integer pGetHandleIDStackCounter=GameDLL+0x3A8060//26
integer pConvertAddressToHandleId=GameDLL+0x430C80//26
endglobals
function setInt2Unit takes integer i returns nothing
set l__Int2Unit=i
return Prevents JassHelper from inlining this function
endfunction
set l__Int2Unit=i
return Prevents JassHelper from inlining this function
endfunction
function ConvertUnitAddressToHandleID takes integer address returns integer
local integer a=CallThisCallWith1Args(pGetHandleIDStackCounter,RMem(GameState))
return CallThisCallWith3Args(pConvertAddressToHandleId,a,address,0)
endfunction
local integer a=CallThisCallWith1Args(pGetHandleIDStackCounter,RMem(GameState))
return CallThisCallWith3Args(pConvertAddressToHandleId,a,address,0)
endfunction
function Typecast4 takes nothing returns nothing
local unit l__Int2Unit
endfunction
local unit l__Int2Unit
endfunction
# +nosemanticerror
function I2Unit takes integer i returns unit
call setInt2Unit(ConvertUnitAddressToHandleID(i))
return l__Int2Unit
endfunction
function I2Unit takes integer i returns unit
call setInt2Unit(ConvertUnitAddressToHandleID(i))
return l__Int2Unit
endfunction
не забудь уточнить, что ВСЕ используемые здесь адреса НЕ делены на 4, или умножай их сам, если делились. GameState вроде был разделен в паблике.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
returns code of the handle's type
+w3u for unit, +tmr for timer, +trg for trigger, +arg for region, etc
check the type you may need yourself, Im not gonna write down all of those
local integer func = RMem(RMem(ConvertHandle(h))+0x1C)
return RMem(func)/0x100+RMem(func+4)*0x1000000
endfunction
Отредактирован Lenivex
2)У меня только SetAbilityButtonX и она что то не работает (большинство функций не работает), где можно скачать последнюю версию Memory Hack?
globals
integer l__Int2Unit
integer pGetHandleIDStackCounter=GameDLL+0x3A8060//26
integer pConvertAddressToHandleId=GameDLL+0x430C80//26
endglobals
set l__Int2Unit=i
return Prevents JassHelper from inlining this function
endfunction
local integer a=CallThisCallWith1Args(pGetHandleIDStackCounter,RMem(GameState))
return CallThisCallWith3Args(pConvertAddressToHandleId,a,address,0)
endfunction
local unit l__Int2Unit
endfunction
function I2Unit takes integer i returns unit
call setInt2Unit(ConvertUnitAddressToHandleID(i))
return l__Int2Unit
endfunction
2)Где можно скачать последнюю версию Memory Hack'а?
Мемхак везде один, не тупите - разный только набор функций, вот и ищите нужные вам функции. Все что нужно сломанный масиив и ретурнбаг все остальное это функции для чего либо, увы у всех авторов свои представления об API мемхака и своя реализация тех или иных вещей, все и сразу вам никто не даст.
Lenivex, Что конкретно вас интересует и что не работает в тему о РБ задавайте вопросы.
Ну и самое главное не ко всем функциям есть комментарии касательно их ограничений, разобраны только самые популярные.
Отредактирован quq_CCCP
Остальное это реализация API тех функций которые есть в варкравте а так же новые, которые будут релизованы по средстам импорта библиотек.
Что конкретно вам нужно? Опишие.~Doc:
Ах да, совсем забыл -pjass.exe прикреплен не просто так в теме с мемхаком, с прочими версиями будут баги или карта вовсе не запустится, не забываем про это плз.
DracoL1ch: Выкидывает из игры при использовании I2Unit() в коде. Если я убираю эту функцию (всмысле не использую) то карту компилирует