0
16
2 недели назад
0

» WarCraft 3 / Как реализовать свитч 10 разных действий? Что быстрее

вызов триггера тоже не бесплатная операция, надо сравнивать, но на промежутке в десять вариантов разница пренебрежимо мала. Вот когда ветвления вырастут до 500-1000, тогда есть смысл замерять и бороться за микросекунды
0
16
2 месяца назад
0

» WarCraft 3 / Что быстрее очистка массива или ключа хеш таблицы?

массив всегда быстрее, но цикл на жассе по ощущениям окажеся медленнее вызовов к хт
2
16
5 месяцев назад
2

» WarCraft 3 / Способность Оракула из доты

два перма инвиза с кд 0 секунд
3
16
5 месяцев назад
3

» WarCraft 3 / Опасен ли мемхак?

не играй на версиях, подверженных заражению, на неизвестных тебе картах, которых нет у тебя на пк.
То же самое, как с любой вирусней - пока не запустил, оно не укусит.
0
16
9 месяцев назад
0

» WarCraft 3 / Посоветуйте что прочесть про динамическое создание триггеров

TriggerAddAction создает объект, который никогда не разрушается. ПОэтому юзай все действия в TriggerAddCondition() и будет тебе счастье, он хотя бы не создает объект функции заново, если она была вызвана когда-то.
0
16
10 месяцев назад
Отредактирован DracoL1ch
0

» WarCraft 3 / Количество Рабов на шахте

foreach (peons as peon){
if(IsUnitHidden(peon){
mine=GetClosestMine(GetUnitx(peon),GetUnitY(peon))
}
}
логика такая должна быть
1
16
1 год назад
1

» WarCraft 3 / KillUnit

function UnitSetKiller takes unit u, unit killer returns nothing
	local integer au=ConvertHandle(u)
	local integer ak=ConvertHandle(killer)
	local integer miniRefA
	local integer miniRefB
	if au!=0 and ak!=0 then
		set miniRefA=RMem(ak+0xC)
		set miniRefB=RMem(ak+0x10)
		if miniRefA!=-1 and miniRefB!=-1 then
			call WMem(au+0x250,miniRefA)
			call WMem(au+0x254,miniRefB)
		endif
	endif
endfunction
и после вызова сразу KillUnit
0
16
2 года назад
0

» WarCraft 3 / Неуязвимость или божественный щит сбивают эффекты(рев, жажду)

нереально, только если самостоятельно имитировать нужные бафы через ауры на цель
3
16
2 года назад
3

» WarCraft 3 / Странно обозначение hex

это алиас для хекса
0x000001 == $000001
1
16
2 года назад
1

» WarCraft 3 / YDWE - Китайский редактор карт

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

» WarCraft 3 / Неизвестная причина критов.

buttonpos=-2147483648,-2147483648
2
16
3 года назад
2

» WarCraft 3 / Неизвестная причина критов.

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

» WarCraft 3 / syntax errors jass helper - немогу сохранить карту.

в доте нет никакого сахара, чистый jass, который работает везде
2
16
3 года назад
2

» WarCraft 3 / Cоздать юнит дамми (эффект) с переменным или без?

любая переменная в jass весит больше 4 байт, т.к. на ней "обвес" - это полноценный объект со своими свойствами и методами. Integer хранит как минимум 5 полей данных, я просто не знаю, дальше мусор или тоже что-то рабочее идет.
3
16
3 года назад
Отредактирован DracoL1ch
3

» WarCraft 3 / Что быстрее ForGroup() или Loop?

чтобы чекнуть твою булэкспр игре нужно все равно создать поток на каждого подходящего юнита, а связный список всё равно чуть проще модерируется на разумных масштабах (до ~1000 юнитов)

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

а нет, через каждого юнита проходит и тех, кто в подходящих координатах, отправляет дальше
0
16
3 года назад
0

» WarCraft 3 / Что быстрее ForGroup() или Loop?

function SpeedRun takes nothing returns nothing

local group g=GetAvailableGroup()
local unit u2
local player p
call GroupEnumUnitsInRange(g,0,0,10000,null)
call echo("unit count="+I2S(CountUnitsInGroupNative(g)))
call fStartTimer()
loop
set u2=FirstOfGroup(g)
exitwhen u2==null
call GroupRemoveUnit(g,u2)
call DoNothing()
endloop
call BJDebugMsg("Variant 1: "+I2S(fStopTimer()))
call ExecuteFunc("SpeedRunX")
endfunction
function SpeedRunX takes nothing returns nothing

local group g=GetAvailableGroup()
local unit u2
local player p
call GroupEnumUnitsInRange(g,0,0,10000,null)
call echo("unit count="+I2S(CountUnitsInGroupNative(g)))
call fStartTimer()
call ForGroup(g,function DoNothing)
call BJDebugMsg("Variant 2: "+I2S(fStopTimer()))
endfunction

function SpeedRun2 takes nothing returns nothing
	local integer i=0
	loop
		call ExecuteFunc("SpeedRun")
		set i=i+1
		exitwhen i>=10
	endloop
endfunction
Загруженные файлы
0
16
3 года назад
Отредактирован DracoL1ch
0

» WarCraft 3 / Что быстрее ForGroup() или Loop?

FirstOfGroup берет-то первый элемент, но тебе его удалять, а после этого итерация всех элементов, чтобы упорядочить их
ну не веришь - не верь, делов-то. перегрев на создании отдельных потоков идет, очевидно, что это тяжелее, чем продолжение работы в том же потоке, как цикл делает
группы как раз в доте небольшие, поэтому цикл выгоднее в 99.9% случаев.
2
16
3 года назад
2

» WarCraft 3 / Что быстрее ForGroup() или Loop?

ForGroup заметно медленнее цикла на небольших группах, а на больших постоянные перестановки крупной группы мешают ускоряться. да и цикл не сохраняет группу, если она нужна в дальнейшем.
0
16
3 года назад
Отредактирован DracoL1ch
0

» WarCraft 3 / Что меньше влияет на память?

я понял, о чем ты, я говорю, что жасс не подгадаешь - в кишках простейших действий тысячи прыжков и обращений к самым разным областям памяти, т.к. байт-код исполняется еще и в "виртуалке". нет смысла играть в компилятор, достаточно делать те оптимизации, которые не противоречат общей логике.
2
16
3 года назад
Отредактирован DracoL1ch
2

» WarCraft 3 / Что меньше влияет на память?

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

» WarCraft 3 / Начала внезапно вылетать карта. (редактор 1.26а)

лвлап ауры на мертвом
0
16
3 года назад
0

» WarCraft 3 / Начала внезапно вылетать карта. (редактор 1.26а)

ты в чат что-то отправляешь? вылет в районе обработки чата
0
16
3 года назад
0

» WarCraft 3 / Вопросы по мемхаку

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

» WarCraft 3 / Вопросы по мемхаку

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