Добавлен , опубликован
Собственно тот знаменитый хак на память который нам радостно предоставил DracoL1ch, который позволяет нам больше не морочится с системами отлова урона, или вовсе узнать координаты курсора без стороннего по.
Для сохранения требуется: экспериментальная версия pjass.exe
Причём не все подходят, меньше всего проблем было с этой версией
В хаке присутствует только 1 пример на изменение белой атаки у героя, остальные готовые функции можно найти на:
Хайве
Гитхабе
Просто копируем саму функцию, все остальное для её работы есть в наработке и сохраняем.
Так же на хайве есть инструкция по созданию собственных функций для чтения\изменения данных в памяти игры.
`
ОЖИДАНИЕ РЕКЛАМЫ...
5
Разговора нет,спасибо))
Многие функции из писка пишет что неизвестные, как быть?)
32
l_Avenger_l, копировать - это сам хак и пару функций для теста, остальные копируем с гитхаба и вносим в свою карту, функций очень много я не вносил их все + дебаги лича, копируй самостоятельно или пиши функции сам лич уже выложил гайд про устройство структуры юнитов.
32
Кастом стун увы кривой, нужно переписывать функцию.
Нужно обязательно следить за смертью юнита, даже если у него есть крест перерождения - стоит затунить мертвого и на него не будет действовать ни 1 стун.
Кет:
Она уже есть!
Для предметов вроде нет. Эх =(
Зато есть:
function ChangeItemId takes item it, integer targetID returns nothing
	local integer cid=ConvertHandle(it)/4
	local integer curID
	if cid == 0 then
		return
	endif
	set curID=Memory[cid+0x30/4]
	set Memory[cid+0x30/4]=targetID
endfunction
Назначает одному предмету описание и иконку другого, кликабельность и все бонусы нет, просто добавляет в бонусы первого бонусы от второго, если они влезут (4 способности лимит так и остался), тоже неплохо для реализации блокировки предметов.
33
quq_CCCP, дык я имел в виду динамическое описание у предметов, а не блокировку.
32
Кет:
quq_CCCP, дык я имел в виду динамическое описание у предметов, а не блокировку.
А он не блокиурет а меняет один предмет другим, правда перетаскивая способности от другого. Сделай N одинаковых предметов с разными описаниями и меняй их этой функцией.
Я проверял на талисмане жизни и предмету с активкой добавляющим броню, в результате описание и иконка сменились а нажимать низя, бонус хп остялся и добавилась защита.
33
Сделай N одинаковых предметов с разными описаниями и меняй их этой функцией.
С таким же успехом это можно сделать и без мемхака =(
32
Кет:
Сделай N одинаковых предметов с разными описаниями и меняй их этой функцией.
С таким же успехом это можно сделать и без мемхака =(
Ну да, просто с этой функцией проще и удобнее, не вызывается никаких событий, не сбивается кулдаун на иконке и так далее.
28
function SetAbilityUbertip takes integer id, integer lvl, string s returns boolean
function GetAbilityUbertip takes integer id, integer lvl returns string
В доте лича меняются описания скиилов у инвокера (конкретное кол-во урона, прочие эффекты которые зависят от уровня сфер).
Копируем код с гитхаба (на хайве неудобно) и вставляем в тхт файл, открываем жасскрафтом и Citr+F (название интересующей функции) и копируем себе в карту все что требуется.
а локально это дело менять нельзя? просто если героев будет больше одного начнётся ерунда
32
16GB, не проверял но лучше синкать строки ибо может быть десинх если ты будешь брать инфу у абилок.
В теории локальное изменение строк прокатит, ибо это все лишь ссылка на разное содержимое.
Нужно будет протестить.
6
Вот сделал функцию, но не уверен в работаспособности.
function GetItemUbertip takes integer id returns string
	local integer pD = GameDLL + 0xBB809C
	local integer i = Memory[pD/4]/4 + 2
	
	loop
		exitwhen Memory[i] == 0
		if Memory[i + 5] == id then
			return ConvertNullTerminatedStringToString(Memory[Memory[i+0x9A]/4])
		endif
		set i = i + 0xC0
	endloop
	
	return ""
endfunction
32
Думаю все в курсе что GetUnitAbilityForAddresss довольно медленная функция ( по тестам лича в 15 раз медленее чем GetUnitAbilityLevel )
По этому стоит проверять наличие аблики у цели по GetUnitAbilityLevel а так же заносить результаты в хештаблицу или массив для более быстрой работы.
Поэтому вот 1 из вариантов оптимизации:
код
function GetUnitAbilityForAddresss takes integer pConvertedHandle, integer abilid returns integer
        local integer pAddr1 = pConvertedHandle + 476
        local integer pAddr2 = pConvertedHandle + 480
        local integer pOff1 = LoadInteger( gg_htb_HashData, abilid, pConvertedHandle )
        
        if pOff1 > 1 then
            call BJDebugMsg("Значение уже записано!")
            return pOff1
        endif
        

        set pAddr1 = Memory[pAddr1 / 4]
        set pAddr2 = Memory[pAddr2 / 4]
        
        if pAddr1 == 0 or pAddr2 == 0 or BitwiseAnd( pAddr1, pAddr2 ) == -1 then
            return 0
        endif
        
        set pOff1 = GetSomeAddressForAbility( pAddr1, pAddr2 )
        if pOff1 == 0 then
            return 0
        endif
        
        loop
            exitwhen pOff1 == 0
            if Memory[pOff1 / 4 + 52 / 4] == abilid then
                call SaveInteger( gg_htb_HashData, abilid, pConvertedHandle, pOff1 )
                return pOff1
            endif
            
            set pOff1 = GetSomeAddressForAbility( Memory[pOff1 / 4 + 36 / 4], Memory[pOff1 / 4 + 40 / 4] )
        endloop
        
        return pOff1
    endfunction
BaHeK, Щяс проверил твою функцию, фатал...
32
BaHeK:
У меня 1.27 если что.
У меня 1.26, но не вижу переключателя на другие патчи у тебя в функции.
6
quq_CCCP, в таком случае мне нужно будет установить 2 варика с разными версиями, но такой возможности у меня нет. Так что только 1.27.
24
quq_CCCP, хеш таблицы сами по себе медленнее хромого коня, или они все таки перегоняют эту функцию в скорости?
32
darkowlom:
quq_CCCP, хеш таблицы сами по себе медленнее хромого коня, или они все таки перегоняют эту функцию в скорости?
Ну вот как раз хештаблицы то не медленные, а быстрее чем каждый раз искать, да и это грубый пример оптимизации, как будто вы забыли про системы хранения данных на массивах?
24
quq_CCCP, я просто пробовал через хештаблицу передавать данные в внешнюю длл, так как из внешней получить данные массива сложно, скорость передачи была далеко не лучшей - отсюда и вопрос
13
darkowlom, передачу данных можно реализовать с помощью экспортируемых функций в dll.
__declspec(dllexport) unsigned int __stdcall SendValueToDll(int key, int value)
{
	// Сохраняем полученные значения
	return true;
}
И в карте:
function SendValueToDll takes integer key, integer value returns integer
    local integer hHandle = GetModuleProcAddress("MyDll.dll", "SendValueToDll")
    if hHandle != 0 then 
        return CallStdcallWith2Args(hHandle, key, value)
    endif 
    return 0
endfunction
29
чет полная жесть уже начинает с этой штуковиной :(
страшно становится после этого запускать. А то еще вирусняки начнет качать. Интересно было бы почитать как эта штука работает
в гите и на хайве не удалось увидеть
13
Интересно было бы почитать как эта штука работает
Только в новой версии добавили возможность разблокировать память на запись. И на гитхабе есть описания к функциям.
32
alexprey:
чет полная жесть уже начинает с этой штуковиной :(
страшно становится после этого запускать. А то еще вирусняки начнет качать. Интересно было бы почитать как эта штука работает
в гите и на хайве не удалось увидеть
Кстати там есть функции создания файла на машине юзера и открывания ссылки в браузере, а так же сколачивание с указанного сайта указанного файла на пк юзера (юзается для обновление версии карты у лича)
Очень даже можно загнать читерам, ломающим карты вирус позлее вроде Neshta чтобы потом мучились.
33
quq_CCCP, хм, значит близзы должны скоро всё это зарубить -_- Интересно, дадут ли что взамен, как с предыдущим ретурнбагом?
24
quq_CCCP, надо писать антихак для варика - для подозрительных действий просящий разрешение у юзера
А вообще всех надо научить писать свои собственные читы - это полезно для мозга и интересно - раскладывать партию с разрабами
Кет, близы должны дать нормальный инстурментарий пользователю, аля как в юнити/анриле от графики до данных. Иначе толку мало
32
Кет:
quq_CCCP, хм, значит близзы должны скоро всё это зарубить -_- Интересно, дадут ли что взамен, как с предыдущим ретурнбагом?
Думаю они не знают об этом, вирусописателей то поубавилось как и юзеров которым это интересно, открыть страничку в браузере вроде у нас на XGM выкладывали на ретурн баге еще во времена патча 1.21...
Они кое как сделали 27 патч и все, пропали... видимо до вк 4.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.