SetAbilityUbertip любого другого уровня кроме первого приводит к фаталу, для изменения описания первого уровня способности всё исправно работает. Так вот у меня вопросы: функция изначально и не разрабатывалась как многоуровневая, мемхак который на гитхабе это же первая версия? Или не работает под первой версией? или я ещё чего то не делаю дополнительно?
ниже кусочек кода след функции которая нужна убертипу
function SetAbilityStringParam2 takes integer id, integer off, string newVal, integer lvl returns boolean
	local integer k=GetAbilityUIDefAddr(id)
	if k < 1 then
		return false
	endif
//	call echo(Int2Hex(k))
	set k=(k+off)/4
	if Memory[k]>0 then
		//if Memory[Memory[k]/4]>0 then
			call WriteNullTerminatedString(newVal,Memory[k+lvl-1])
			return true
		//endif
	endif
	return false
endfunction
ну и так далее.. WriteNullTerminatedString
Знаю что, есть мемхак с 4 триггерами типа (тайпкаст,фпколл, утилс, мемори), к сожалению я не могу его никак запустить (тот где используется в коде Rmem/Wmem), это же вторая версия?, Это всё мои побочные вопросы, но всё таки, что сделать чтобы убертип не фаталил для способностей 2 уровня и выше

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

RMem/WMem - вторая версия, есть еще третья и, скорее всего, последняя
function SetAbilityStringParam2 takes integer id, integer off, string newVal, integer lvl returns boolean
	local integer k=GetAbilityUIDefCaching(id)
	if k < 1 then
		return false
	endif
	set k=k+off
	set k=RMem(k)
	if k>0 then
		set k=k+lvl*4-4
		call AddNewOffsetToRestoreFast(k)
		call WMem(k,GetStringAddress(newVal))
		return true
	endif
	return false
endfunction
по аналогии легко сделать
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
16
6 лет назад
0
RMem/WMem - вторая версия, есть еще третья и, скорее всего, последняя
function SetAbilityStringParam2 takes integer id, integer off, string newVal, integer lvl returns boolean
	local integer k=GetAbilityUIDefCaching(id)
	if k < 1 then
		return false
	endif
	set k=k+off
	set k=RMem(k)
	if k>0 then
		set k=k+lvl*4-4
		call AddNewOffsetToRestoreFast(k)
		call WMem(k,GetStringAddress(newVal))
		return true
	endif
	return false
endfunction
по аналогии легко сделать
Принятый ответ
0
32
6 лет назад
0
DracoL1ch, ну ты скинь людям, то мы заждались.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.