Есть ли способ используя Memory Hack отловить событие при получении любого урона и при этом чекать какой это урон и после чего управлять им (повысить, снизить или вообще обнулить)?

Принятый ответ

был в старом коде, есть и в новом коде, ищи по сайту "мемхак"
0
16
7 лет назад
0
был в старом коде, есть и в новом коде, ищи по сайту "мемхак"
Принятый ответ
0
32
7 лет назад
0
Есть, суть в кондишине для триггера.
/ WARNING!! IT CAN BE USED ONLY IN FIRST CONDITION AT FIRST POSITION
function GJ_GetRealDmg126a takes nothing returns real
	return mI2R(ReadEBP_offset(0x380))
endfunction

// WARNING!! IT CAN BE USED ONLY IN FIRST CONDITION AT FIRST POSITION
function GJ_GetRealDmg127a takes nothing returns real
	return mI2R(ReadEBP_offset(0x400))
endfunction

function GJ_SaveLastDmg126a takes nothing returns boolean
	if GetTriggerEventId()!=EVENT_UNIT_DAMAGED then
		return true
	endif
	
	set GJ_LastDmg = GJ_GetRealDmg126a( )
	
	set GJ_LastAttackType=ReadEBP_offset(0x37C)
	if ReadEBP_offset(0x368)!=0 or ReadEBP_offset(0x378)==0x3F800000 then
		set GJ_LastDamageType=0
	else
		set GJ_LastDamageType=ReadEBP_offset(0x378)
	endif
//	call BJDebugMsg("rewrote with "+R2S(GJ_LastDmg))
	return true
endfunction

function GJ_SaveLastDmg127a takes nothing returns boolean
	if GetTriggerEventId()!=EVENT_UNIT_DAMAGED then
		return true
	endif
	set GJ_LastDmg = GJ_GetRealDmg127a( )
	set GJ_LastAttackType=ReadEBP_offset(0x3B0)
	if ReadEBP_offset(0x3CC)!=0 then
		set GJ_LastDamageType=0
	else
		set GJ_LastDamageType=ReadEBP_offset(0x3F0)
	endif
	return true
endfunction
Там три глоблки, одна кол-во изначального урона, без учета резистов юнита, второе тип урона, третье тип атаки. В переменных хранятся целые числа а не типы, смотрите ConvertDamageType и ConvertAttackТype а так же константы которые они назначают.
0
9
7 лет назад
0
quq_CCCP:
Есть, суть в кондишине для триггера.
/ WARNING!! IT CAN BE USED ONLY IN FIRST CONDITION AT FIRST POSITION
function GJ_GetRealDmg126a takes nothing returns real
	return mI2R(ReadEBP_offset(0x380))
endfunction

// WARNING!! IT CAN BE USED ONLY IN FIRST CONDITION AT FIRST POSITION
function GJ_GetRealDmg127a takes nothing returns real
	return mI2R(ReadEBP_offset(0x400))
endfunction

function GJ_SaveLastDmg126a takes nothing returns boolean
	if GetTriggerEventId()!=EVENT_UNIT_DAMAGED then
		return true
	endif
	
	set GJ_LastDmg = GJ_GetRealDmg126a( )
	
	set GJ_LastAttackType=ReadEBP_offset(0x37C)
	if ReadEBP_offset(0x368)!=0 or ReadEBP_offset(0x378)==0x3F800000 then
		set GJ_LastDamageType=0
	else
		set GJ_LastDamageType=ReadEBP_offset(0x378)
	endif
//	call BJDebugMsg("rewrote with "+R2S(GJ_LastDmg))
	return true
endfunction

function GJ_SaveLastDmg127a takes nothing returns boolean
	if GetTriggerEventId()!=EVENT_UNIT_DAMAGED then
		return true
	endif
	set GJ_LastDmg = GJ_GetRealDmg127a( )
	set GJ_LastAttackType=ReadEBP_offset(0x3B0)
	if ReadEBP_offset(0x3CC)!=0 then
		set GJ_LastDamageType=0
	else
		set GJ_LastDamageType=ReadEBP_offset(0x3F0)
	endif
	return true
endfunction
Там три глоблки, одна кол-во изначального урона, без учета резистов юнита, второе тип урона, третье тип атаки. В переменных хранятся целые числа а не типы, смотрите ConvertDamageType и ConvertAttackТype а так же константы которые они назначают.
А можно карту пример, что бы легче понять было?
0
32
7 лет назад
0
В теме про мемхак есть.
lll_Kirito_lll, сразу забыл сказать, мемхак не для детсадовцев, не знаем jass что такое мемхак, эксперементальный p.jass.exe, no cjass, JNGP, а так же не умеем читать долгие и нудные инструкции то сразу идем лесом, ибо вы не заставите мемхак работать в вашей карте.
0
21
6 лет назад
0
GJ_GetRealDmg126a
GJ_GetRealDmg127a
Чем отличаются?
///////
Нихрена, если честно, не понятно, допустим, GJ_GetRealDmg126a и GJ_GetRealDmg127a это считывание урона, а где запись и как её выполнять? И что за названия в ж*** извращенные такие, почему не человеческие?
Вот, допустим, использую я эти функции, создаётся триггер на получение урона для моего юнита, ему в дыню прилетает 1000 урона, я хочу его "на излете" превратить в 100, как это сделать?
Седня вот в утомленном виде курились-курились - нихрена не раскурилось. Сделалось пока по старинке через инвул и перенанесение чистого урона.

SetEventDamage; takes real damage returns nothing Modify EVENT_UNIT_DAMAGED event damage
вот че в мх такого же нет? Все с первого раза понятно, а там цифры какие-то бесовские и функции укуренные
Не, я не бегу прям ща в 1.29 разбираться, подожду еще, че там и как будет, но...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.