Может кто то наглядно(в карте), показать как изменять подказки в предметах. Есть ли информация на русском как пользоватся мемхаком?

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

Вводим в поиск XGM слово "мемхак"
Получаем результаты мемхак
Для самых новичков специально делал
там по максимуму разжевано
А как пользоваться?
Да никак, потому что нет мемхаке смены Описания Предмета, есть только смена описания способности...Но она фаталит при смене способности выше 2 уровня, А для второй не завезли

Но если разобраться можно самому всё сделать

По примеру способности это выглядело бы так
Если функция такая
function SetAbilityUbertip takes integer id, integer lvl, string s returns boolean
    return SetAbilityStringParam2(id,0x158, s, lvl)
endfunction
То чтобы поменять описание надо было сделать
SetAbilityUbertip(ID  способности или предмета, уровень (для предмета не будет уровня), описание)

quq_CCCP, если я не прав, то покажи функцию смены тултипа предмета для любой версии

А ещё судя по тому что смена тултипа не предусматривает юнита или конкретный хендл предмета, значить описание меняется глобально, и нужно использовать либо Гетлокал плеер либо работать с разными копиями предмата/способности
Всё тоже самое применимо к смене описания на Рефордж патче, но там по проще это всё делается
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
4 года назад
0
Похожие вопросы:

ответ
фатал после игры может быть вызван
а) использованием malloc
б) копированием внутриигровых структур (например, структуру сплеша перенес от одного юнита другому, при чистке один раз адрес зачистился, а на втором проходе произошел краш)
в) неизвестным мне образом
ответ
Сделай сам.
ответ
DracoL1ch:
офсет 2589 *4 , я ж только что сказал
Всё, немного поковырявшись у меня получилось, нужно было еще (id * 4) еще раз умножить на 4. Теперь строки извлекает идеально.
Если кому-то интересно, выглядит это вот так:
	DWORD ReadPointer(DWORD addr)
	{
		return *(DWORD*)(addr);
	}

	DWORD GetJassContext(int id)
	{
		DWORD pJassEnvAddress = DWORD(GetModuleHandle(TEXT("Game.dll"))) + 0xADA848;
		return ReadPointer(ReadPointer(ReadPointer(ReadPointer(pJassEnvAddress) + 0x14) + 0x90) + id * 4);
	}

	DWORD GetStringTable()
	{
		DWORD pJassContext = GetJassContext(1);
		return ReadPointer(ReadPointer(pJassContext + 0x2874) + 0x8);
	}

	std::string from_jString(jString jstrHandle)
	{
		DWORD pStringTable = GetStringTable();
		const char* sptr = (const char*)ReadPointer(ReadPointer(pStringTable + ((jstrHandle * 4)*4) + 0x8) + 0x1C);
		return sptr;
	}
ответ
Ну содержимое у restore само собой разное, в детекте урона новый хук на выход, вам нужна функция загрузки библиотеки?
Это же дело над:

function LoadLibrary takes string nDllName returns integer
    if pLoadLibraryA == 0 then
        set pLoadLibraryA = GetModuleProcAddress("Kernel32.dll", "LoadLibraryA" )
    endif
    if pLoadLibraryA != 0 then
        return CallStdcallWith1Args(pLoadLibraryA,GetStringAddress(nDllName))
    endif
 
    return 0
endfunction

0
32
4 года назад
0
ну есть же детект урона. ссылка

Примеров уйма, могу даже свою карту показать
0
32
4 года назад
0
Вводим в поиск XGM слово "мемхак"
Получаем результаты мемхак
Для самых новичков специально делал
там по максимуму разжевано
А как пользоваться?
Да никак, потому что нет мемхаке смены Описания Предмета, есть только смена описания способности...Но она фаталит при смене способности выше 2 уровня, А для второй не завезли

Но если разобраться можно самому всё сделать

По примеру способности это выглядело бы так
Если функция такая
function SetAbilityUbertip takes integer id, integer lvl, string s returns boolean
    return SetAbilityStringParam2(id,0x158, s, lvl)
endfunction
То чтобы поменять описание надо было сделать
SetAbilityUbertip(ID  способности или предмета, уровень (для предмета не будет уровня), описание)

quq_CCCP, если я не прав, то покажи функцию смены тултипа предмета для любой версии

А ещё судя по тому что смена тултипа не предусматривает юнита или конкретный хендл предмета, значить описание меняется глобально, и нужно использовать либо Гетлокал плеер либо работать с разными копиями предмата/способности
Всё тоже самое применимо к смене описания на Рефордж патче, но там по проще это всё делается
Принятый ответ
0
32
4 года назад
0
Новые функции для предметов завезли, лич вылечил проблемы с фаталами. Теперь можно менять описания у всего и вся.

Мемхак к себе в карту копируем, что надо - просим у лича или гуглим, что ненадо вырезаем.
0
13
4 года назад
0
Спасибо, разобрался. Описание меняется только на 1 уровень. А есть описание всех уже существующих функций, что они делают? А то попытался добавить call AddSilenceToAbility('AHds'), а у меня фатал...
0
32
4 года назад
Отредактирован Берги
0
AddSilenceToAbility ну сайленс это молчанка на отдельные способности, она станет затемнённой и неактивной, как буд-то не хватает требований, все функции интуитивно понятны, есть разбор функций в главной теме мемхака (у той что больше всего постов)
0
15
3 года назад
0
quq_CCCP:
Новые функции для предметов завезли, лич вылечил проблемы с фаталами. Теперь можно менять описания у всего и вся.

Мемхак к себе в карту копируем, что надо - просим у лича или гуглим, что ненадо вырезаем.
Прошу прощения за некропостинг, а где можно найти функции для изменения описания предметов? Поиск по сайту самым релевантным выдаёт ресурс с детектом физического урона.
0
32
3 года назад
0
JackFastGame, они есть в мемхаке, SetObjectTip\ubertip или как то так, для всех полей есть функции.
0
15
3 года назад
0
quq_CCCP:
JackFastGame, они есть в мемхаке, SetObjectTip\ubertip или как то так, для всех полей есть функции.
В каком именно мемхаке? Можно ссылку? Хоть убейте, этих функций я не нашёл ни в карте из темы про детект физического урона, ни в мемхаке Анрайза.
0
32
3 года назад
0
JackFastGame, для мемхака из темы с детектом урона функции выложены либо на хайве,либо в этом файле:
unction GetUnitUbertip takes integer id returns string
	return GetUnitUIStringParam(id,1,0x268)
endfunction

function SetUnitUbertip takes integer id, string s returns nothing
	call SetUnitUIStringParam(id,1,0x268,s)
endfunction

function GetUnitTip takes integer id returns string
	return GetUnitUIStringParam(id,1,0x25C)
endfunction

function SetUnitTip takes integer id, string s returns nothing
	call SetUnitUIStringParam(id,1,0x25C,s)
endfunction

function GetUnitHotkey takes integer id returns integer
	if GetUnitUIIntegerParam(id,0,0x26C)==0 and GetUnitUIIntegerParam(id,0,0x270)==0 then
		return 0
	endif
	return GetUnitUIIntegerParam(id,1,0x274)
endfunction

function SetUnitHotkey takes integer id, integer key returns nothing
	call SetUnitUIIntegerParam(id,0,0x26C,1)
	call SetUnitUIIntegerParam(id,0,0x270,key)
	call SetUnitUIIntegerParam(id,1,0x274,key)
endfunction

function GetHeroPrimaryAttributeById takes integer id returns integer
	local integer a=GetUnitDataDefByIdCaching(id)
	if a>0 then
		return RMem(a + 0x17C)
	endif
	return 0
endfunction
Ну и для всего прочего были, там не сложно. Смешения где лежат ссылки на строки. В мх анрайза вроде тоже было, покрайней мере для юнитов UnitNormalAPI и UnitBaseAPI, ну можно посмотреть в каких смещених относительно адресса итема лежат строки, предмет и юнит - оба виджеты, возможно прокатит с оффсетами юнита, но это неточно =)
Загруженные файлы
3
16
3 года назад
3
для итемов всё то же самое, как и с абилками, просто вместо id абилки id итема
0
15
3 года назад
Отредактирован JackFastGame
0
quq_CCCP:
Ну и для всего прочего были, там не сложно. Смешения где лежат ссылки на строки. В мх анрайза вроде тоже было, покрайней мере для юнитов UnitNormalAPI и UnitBaseAPI, ну можно посмотреть в каких смещених относительно адресса итема лежат строки, предмет и юнит - оба виджеты, возможно прокатит с оффсетами юнита, но это неточно =)
Так, получить и изменить описание предметов из их кешированной структуры мне удалось.
Это уже совсем роскошь, но описание конкретных предметов можно изменять?) Или айтемы при создании не копируют строку, а напрямую ссылаются на строку из своей кешированной структуры?
1
16
3 года назад
1
ссылаются на свою, меняй описание в завимисоти от выделенного юнита локальным игроком по таймеру
0
15
3 года назад
0
DracoL1ch:
ссылаются на свою, меняй описание в завимисоти от выделенного юнита локальным игроком по таймеру
Благодарю.
0
15
3 года назад
0
DracoL1ch:
ссылаются на свою, меняй описание в завимисоти от выделенного юнита локальным игроком по таймеру
Я хочу реализовать систему, чтобы в описании предмета показывалось, сколько игрок нанёс этим предметом урона, сколько раз использовал и т.д.
В процессе вспомнил, что Варкрафт не чистит строки, а записывает их в какую-то таблицу со всеми строками, и при создании новой строки проверяет, существует ли такая же в таблице. Если да, то возвращает указатель на неё, если нет, то записывает новую строку в таблицу. Строки в таблице не удаляются до конца игры. Получается, если постоянно динамически менять описание предмета, то игра будет хранить кучу мусорных строк? Допустим у предмета за игру описание сменится 500 раз, и каждый раз строка будет уникальной, описание предмета весит 1 килобайт, значит на каждый такой предмет в процессе игры сгенерится 500 килобайт мусора. Я правильно рассуждаю? Есть лечение?
0
16
3 года назад
0
не нужно лечение, если у тебя игра длится меньше пары часов, ты вряд ли дойдешь до значительной нагрузки
Чтобы оставить комментарий, пожалуйста, войдите на сайт.