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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
20
6 лет назад
1
Господа, так что там с прикручиванием счетчика зарядов к любым абилкам? :) Мне ни коим образом не горит, но очень интересно пощупать.
6
16
6 лет назад
6
ну вот код, внедрение должно быть довольно понятным
я понятия не имею, какие у вас там настройки, но выделенная через malloc память должна быть больше, чем 55000 :)
1
20
6 лет назад
Отредактирован Diaboliko
1
Танцы с бубном не эффективны. Методом тыка не могу осуществить приготовления т.к. понятия не имею что происходит при вызовах тех или иных функций :) Нужен код подготовки к вызову InitCustomChargesData()
Моих сил ванги хватает лишь чтобы предсказать что нужно как-то использовать маллок и CallFastCallWith1Args
3
16
6 лет назад
Отредактирован DracoL1ch
3
там, где AllocateExecutableMemory вызывается, указан объем выделяемой памяти
поставь туда 70000 и вперед, остальное набирай дальше
пример использования
((код jass
call VisualChargesSystem_SetCharges(u,'A064',3)//записывает юниту в абилку колво зарядов
call VisualChargesSystem_Init(u,'A064')//активирует отображение зарядов на этом id на этом юните
call VisualChargesSystem_InitHookOnAbility(u,'A064')//включает хук на эту абилку (основу) для отображения
))
В коде _Init() рядом лежит отключатель, если отображать не нужн
InitCustomChargesData вызываешь где-то в мейн, не принципиально, она хук основной рисует
1
32
6 лет назад
1
DracoL1ch, работает так же на сов с ракетами или на все абилки?
3
16
6 лет назад
3
это универсально для любой абилки
0
21
6 лет назад
0
DracoL1ch, куда именно здесь поставить 70 000, в local integer retval?
function AllocateExecutableMemory takes integer size returns integer
	local integer retval = 0
	if pVirtualAlloc != 0 then 
		if pReservedExecutableMemory2 == 0 then 
			if pMergeUnitsOffset == 0 then
				set pMergeUnitsOffset = CreateJassNativeHook(pMergeUnits, Memory[pVirtualAlloc] )
			else
				call WriteRealMemory(pMergeUnitsOffset,Memory[pVirtualAlloc])
			endif
			set retval = B2I(MergeUnits(0,size+4,0x3000,0x40))
			call WriteRealMemory(pMergeUnitsOffset,pMergeUnits)
			return retval
		else 
			set retval = CallStdcallWith4Args(Memory[pVirtualAlloc],0,size+4,0x3000,0x40)
		endif 
		
	endif
	
	if retval == 0 then 
		return 0
	endif
	
	return (retval + 4) / 4 * 4
endfunction
2
16
6 лет назад
2
ты в неё передаешь size, убедись что он достаточен (60к)
0
27
6 лет назад
0
DracoL1ch, не понимаю. у меня что-то не работает =( вылетает ^_^
вот карта
Загруженные файлы
6
16
6 лет назад
Отредактирован DracoL1ch
6
потому что у тебя вообще нет инита функций мемхака
которые включают в себя AllocateExecutableMemory
set pCallFastCallWith1Args=AllocateExecutableMemory(64000)
	
	set Memory[pCallFastCallWith1Args/4]=0

	set pCallFastCallWith2Args=pCallFastCallWith1Args + 1000
	set Memory[pCallFastCallWith2Args/4]=0
вот это всё
2
27
6 лет назад
2
DracoL1ch, короче понял
так понимаю, на пассивках это работать не будет. критует.
вот сделал систему когда прибавляет при убийстве blademaster-ом
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.