16

» WarCraft 3 / Кулдаун абилки буквально замораживается

ссср выкладывал версию, где можно запускапть кд на близзард и молниях (они фаталили в первончальной функции), где-то в треде.
блеать
16

» WarCraft 3 / Лимит строк кода

Diaboliko:
Хотя по идее чем больше кода тем дольше поиск элементов в нем
по аналогии с переменными - если их (переменных/функций) меньше миллиона, то даже не думай об этом
16

» WarCraft 3 / Кулдаун абилки буквально замораживается

неважно, что там происходит. ты должен пойти и проверить, что записано в ячейке при зависании, и уже оттуда плясать дальше
16

» WarCraft 3 / Морф и потом удаление абилы морфа

возможно, руна не успевает зарегистрироваться для удаления бафа, не знаю, не использую их (:
16

» WarCraft 3 / Об утечках

утечки не создают нагрузки, они жрут память
от них легко избавиться, так что не понимаю вопроса
16

» WarCraft 3 / Интерфейс игрока

моя работа - это дота, а не популяризация мх, как бы ни хотелось. а стабильной версии все еще нет
16

» WarCraft 3 / (MH) Что с присвоением анимации юниту?

странно, но в любом случае, я снова дал не ту, эта именно обновляет скин - мороз, оживление, вот это всё пересчитывает. Вот функция смены модели:

function ChangeUnitModelTo takes unit u, string modelpath returns nothing
	local integer a
	local integer s
	set LastConvertedHandle=ConvertHandle(u)
	if LastConvertedHandle>0 then
		set a=RMem(LastConvertedHandle)+0x88
		if a>0 then
			set a=RMem(a)
			if a>0 then
				set s=GetStringAddress(modelpath)
				call CallThisCallWith3Args(a,LastConvertedHandle,s,1)
			endif
		endif
	endif
endfunction
16

» WarCraft 3 / Библиотека или что-то типо этого

минимум создания объектов в циклах
максимальное использование нативок вместо своих велосипедов по возможности
минимум группировок юнитов в частых таймерах или циклах
оптимизация начинается тогда, когда в ней есть необходимость. пока игра не тормозит, забудь об этом слове, ты не ракеты строишь
16

» WarCraft 3 / (MH) Что с присвоением анимации юниту?


set pRedrawUnitFunction=GameDLL+0x284830//26

function RedrawUnit takes unit u returns nothing
	set LastConvertedHandle=ConvertHandle(u)
	if LastConvertedHandle>0 then
		call CallThisCallWith1Args(pRedrawUnitFunction,LastConvertedHandle)
	endif
endfunction
16

» WarCraft 3 / Хак на память Warcraft3

и так и так, со своими недостатками каждый. функции нет рабочей, просто копал и знаю
16

» WarCraft 3 / (Memory hack) Visible effect'a в тумане войны

спутал, эта фунция прячет хендл, а не рисовку обеспечивает
function IsFlagBitSet takes integer flags, integer bit returns boolean
	if bit!=0 then
		return flags/bit*0x80000000 != 0
	endif
	return false
endfunction

function RMem takes integer addr returns integer
	if addr<0 or addr>0x7FFFFFFF then
		return 0
	endif
	return Memory[addr/4]
endfunction

function AddAlwaysVisibleFlag takes unit u returns nothing
	local integer a=ConvertHandle(u)
	if a>0 and IsFlagBitSet(RMem(a+0x20),0x10)==false then
		call WMem(a+0x20,RMem(a+0x20)+0x10)
	endif
endfunction
вместо юнита можно вроде любой виджет, просто смени входящий тип и проверь
16

» WarCraft 3 / (Memory hack) Visible effect'a в тумане войны

function WMem takes integer addr, integer val returns nothing
	if addr<0x100 or addr>0x7FFFFFFF then
		return
	endif
	set Memory[addr/4]=val
endfunction
16

» WarCraft 3 / (Memory hack) Visible effect'a в тумане войны

''
function SetEffectVisibility takes effect fx, boolean visible returns nothing
local integer a=ConvertHandle(fx)
if a>0 then
if visible then
call WMem(a+0x20,0)
else
call WMem(a+0x20,1)
endif
endif
endfunction
''
адреса целые, без деления на 4
16

» WarCraft 3 / SquareRoot

напоминаю о существовании IsUnitInRange(u1,u2,rng) и IsUnitInRangeXY(u,x,y,rng) для проверки расстояний между юнитом и точкой/юнитом. В большинстве случаев проверяют, входит ли юнит в аое, и эта нативка будет в разы быстрее, чем самописцы
16

» WarCraft 3 / +2 Вопроса (effect, интерфейс игрока)

класс, предложил два костыля с существенными проблемами и говорит, что это я пихаю костыль. хотя на мемхаке легко выдать видимость любому виджету. о времена, о костыли
16

» WarCraft 3 / Вынесу в отдельный вопрос - возможный фатал при постоянных измен

а на 5й уровень всё корректно работает? ну т.е. измегнения проходят?
если на выходе фатал, где-то память нечищенная осталась. я вообще б не советовал юзать malloc без ооооччень крайней необходимости
16

» WarCraft 3 / Использование SetUnitFlyHeight

ЛЮБАЯ нативка быстрее ЛЮБОГО твоего велосипеда на жасс. без исключений
16

» WarCraft 3 / [Мемхак] Функции для способностей.

что в a передаешь? и вообще, чит енжин подрубай и смотри, меняется ли значение и где
16

» WarCraft 3 / [Мемхак] Функции для способностей.

ты вообще не понимаешь, что делаешь. неудивительно, что всё бесит.
function SetSpellRange takes integer a, integer lvl, real r returns nothing
local integer offset = 0
if a>0 then
	set offset=ReadMemory(a+0x54)
	call WriteMemory(offset+0x74+0x68*lvl,SetRealIntoMemory(r))
endif
endfunction
ты не понял, что реал и интегер - это совершенно разные числа в памяти и используешь I2R, х\отя речь шла о конвертации в памяи, ведь именно в ней ты и работаешь
ты мешаешь "чистые" и "грязные" офсеты - массив Memory[] работает ТОЛЬКО с деленнвыми на 4, Read/WriteMemory - глянь в функции, если нет деления - то тоже надо отправлять туда уже деленные. Если же в последниз есть деление, то моя функция верна.
Ну и от лвл надо отнимать 1, ибо уровни начинаются с 0, а не с 1.