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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
7 лет назад
0
Иконки у способностей на основе "Сфера замедления" можно разблокировать, сделав кликабельным, а так же возможность кастовать спелл в ручную, но эффект автокаста при ударе останется.
Пригодится для автокаста способностей у которых его нету а ИИ писать не охото.
Кстати наконец то решен извечный вопрос - кулдаун на пассивке!
Можно ставить кд перерождению, а чтобы оно ни сработало когда это ненужно вешаем на юнита событие TriggerRegisterDeathEvent ( EVENT_WINDGET_DEARH) и запускать способность в кд той же функцией. Увы но только это событие срабатывает при смерти юнита с крестом перерождения.
0
5
7 лет назад
0
А как выяснить тип нанесенного урона(с руки или спелл)?
0
32
7 лет назад
0
l_Avenger_l:
А как выяснить тип нанесенного урона(с руки или спелл)?
Нужно триггер на событие получения урона и смотреть тип атаки и урона, и гадать.
вот код
// WARNING!! IT CAN BE USED ONLY IN FIRST CONDITION AT FIRST POSITION
function GJ_GetRealDmg126a takes nothing returns real
	return cleanReal(indexToReal(ReadEBP_offset(0x380)))
endfunction

// WARNING!! IT CAN BE USED ONLY IN FIRST CONDITION AT FIRST POSITION
function GJ_GetRealDmg127a takes nothing returns real
	return cleanReal(indexToReal(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
нужно еще 3 глобалки, эту функцию в условие триггера и все.
Далее смотрим на тип урона.
2
6
7 лет назад
2
Есть функциия GJ_SaveLastDmg127a. С помощью можно узнать урон, тип атаки, тип урона.
0
32
7 лет назад
0
В условие триггера пихаешь, она пишет в GJ_LastDmg , GJ_LastAttackType тип атаки и урона а потом уже их и смотришь.
0
5
7 лет назад
0
Pjass заменил, но при сохранении один фиг высвечивает 11 ошибок)
0
33
7 лет назад
0
l_Avenger_l, так и должно быть. Главное — не больше 11.
0
5
7 лет назад
0
и как обойти, в наглую в архив запихать?))
0
13
7 лет назад
0
l_Avenger_l, Кет, ошибок быть не должно, ни одной. Просто выключи cJass.
0
5
7 лет назад
Отредактирован l_Avenger_l
0
Разговора нет,спасибо))
Многие функции из писка пишет что неизвестные, как быть?)
0
32
7 лет назад
Отредактирован quq_CCCP
0
l_Avenger_l, копировать - это сам хак и пару функций для теста, остальные копируем с гитхаба и вносим в свою карту, функций очень много я не вносил их все + дебаги лича, копируй самостоятельно или пиши функции сам лич уже выложил гайд про устройство структуры юнитов.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.