16

» WarCraft 3 / Обнуление переменных, которые принимает функция?

не шарю, как глянуть вот прям под этот кусок движка, но рефкаунт не меняется от аргументов
16

» WarCraft 3 / Обнуление переменных, которые принимает функция?

потому что, грубо говоря, когда компилятор видит
set u=someUnit
он этому someUnit ставит счетчик +1, а юниту из u - счетчик -1
я так на мх попался, когда юнита вписывал из нативного кода игры, а удалял из переменной через set u=null
в итоге счетчик референсов падал до отрицательных значений и юнит из игры стирался
а в аргументах такой механики нет
пойду гляну, делает ли он -- счетчику, если нуллить аргумент
16

» WarCraft 3 / Событие до проверки КД способности

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

» WarCraft 3 / Событие до проверки КД способности

интересные глаголы
с уровня асемблера такой ивент создать нереально, для этого нужны знания С+ и подключаемая либа, и будет счастье
и всё равно это еще реальнее, чем переносить некую карту на другой юи ради такой мелочи
16

» WarCraft 3 / Событие до проверки КД способности

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

» WarCraft 3 / Событие до проверки КД способности

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

» WarCraft 3 / Событие до проверки КД способности

не понял, ты предлагаешь ему имитировать весь юи ради вот этого момента?
16

» WarCraft 3 / Что не так с Defend'oм?

в константах карты должен быть разрешен рикошет
отражается только piercing атаки
16

» WarCraft 3 / [Lua] Оглушение без дамми и РО

Зачем использовать бгмерзский таймер, если ты хочешь детектить смерть юнита? Если его реснут за период таймера, то счётчик останется.
Если юнит сменит форму во время стана, визуалка отвалится, поэтому её крепят к абилке - баффу.
Обычный стан болт будет быстрее на дистанции за счёт того, что не требует таймера 0.1 и выполнения кода после броска. Для коротких станов скорость не имеет значения
Ну и если использовать триггерный стан на кастера в момент каста, то кд не начнётся, в отличие от н классического болта.
Во тебе пространство для улучшений)
16

» WarCraft 3 / Наверное самая быстрая функция по касту "тригерных" магий

мизерное мизерному рознь. вот, например, добавил опцию для отключения обновления таблицы. игроку она не нужна, а у меня реплей на 50 минут мотается теперь 6 минут вместо семи. А в абсолютном значении всего 6% ускорения за счет лишнего if .
Оптимизация вредна лишь тогда, когда она преждевременна.
16

» WarCraft 3 / Наверное самая быстрая функция по касту "тригерных" магий

Bergi_Bear:
Всякий раз когда говорят слово быстрее, я хочу знать на сколько, если на такая функция быстрее даже на 0.1 на 10 тысячах вызовов это не быстрее, и грош ему цена, можно просто назвать другой способ, и все претензий нет, тогда все классно
так нужно сперва иметь что-то для подсчета времени, а этого у простых крестьян нет ни в каком виде)
16

» WarCraft 3 / Ошибка краша игры.

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

» WarCraft 3 / Ошибка краша игры.

G:\Games\warcraft 3 (new)\Warcraft 3 Frozen Throne\Textures.mix
любые миксы могут как угодно повляить, я же не вижу, что они делают с игрой
здесь вылет, возможно, при касте пива пандарена
кто-то вмешался в код и испортил его, в моём варкрафте этого вылета быть не может
16

» WarCraft 3 / Постоянно вылетает карта

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

» WarCraft 3 / LocalPlayer в переменной

он не кэширован, вообще ни одна функция jass в игре не кэширует инфу и каждый раз производит все необходимые рассчеты с нуля. Поэтому выгоднее иметь массив Players[0..MaxPlayers] вместо вызова Player(0..maxPlayer) , LocalPlayer в main вместо GetLocalPlayer() , и т.д. Переменные быстрее, чем вызов функции.
16

» WarCraft 3 / MemoryHackAPI


function GetNthUnitFromGroup takes group g, integer n returns unit//n [1....x]
	local integer a
	set LastConvertedHandle=ConvertHandle(g)
	if LastConvertedHandle>0 then
		set a=CallThisCallWith2Args(GameDLL+0x421A20,LastConvertedHandle+0x24,n-1)
		if a>0 then
			return I2Unit(a)
		endif
	endif
	return null
endfunction

function CountUnitsInGroupNative takes group g returns integer
	set LastConvertedHandle=ConvertHandle(g)
	if LastConvertedHandle>0 then
		return RMem(LastConvertedHandle+0x34)
	endif
	return 0
endfunction
по поводу кручения у меня такое есть, наверное ты вместо неё косинусы и считаешь
function CalculateObjectOrientationRules takes handle h, real yaw, real pitch, real roll, real facing, integer flag returns nothing
	call WRMem(DataArray3Address+800,yaw)
	call WRMem(DataArray3Address+804,pitch)
	call WRMem(DataArray3Address+808,roll)
	//Convert Object YawPitchRoll Into Matrix
	call CallFastCallWith4Args(GameDLL+0x4B2C50,DataArray3Address+700,DataArray3Address+800,mR2I(facing),flag)
	//update object's data
	call CallThisCallWith10Args(GameDLL+0x4D3170,RMem(ConvertHandle(h)+0x28),RMem(DataArray3Address+700),RMem(DataArray3Address+704),RMem(DataArray3Address+708),RMem(DataArray3Address+712),RMem(DataArray3Address+716),RMem(DataArray3Address+720),RMem(DataArray3Address+724),RMem(DataArray3Address+728),RMem(DataArray3Address+732))
endfunction
где DataArray3Address - просто массив для хранения данных "подряд"
16

» WarCraft 3 / Ошибка при начале игры

отлично, вот только ни карту, ни версию игры, ни крашлог ты не приложил
экстрасенсы умерли уже от старости