Нет. Почему нельзя просто прочитать соответствующую это теме статью, или же спросить в дискорде? И вообще, не желательно оставлять в attacktype и damagetype нулевые значением через ключ-тип null. для чистого урона есть
ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN
почему вы отвечаете за меня?? я же ясно сказал что не понял то что вы сказали если бы у меня была возможность пользоваться дискордом я бы пользовался что за дичь вы творите?
вы обращаете внимание не на вопрос который меня волнует а на то что я для пример написал эти строки, я что спросил желательно ли ставить null? внимательней читайте вопрос перед тем как отвечать на него либо не отвечайте вообще
Нет. Почему нельзя просто прочитать соответствующую это теме статью, или же спросить в дискорде? И вообще, не желательно оставлять в attacktype и damagetype нулевые значением через ключ-тип null. для чистого урона есть
ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNKNOWN
Что нет? почему нельзя было ответить не парься или обнули?
Нет. Почему нельзя просто прочитать соответствующую это теме статью, или же спросить в дискорде? И вообще, не желательно оставлять в attacktype и damagetype нулевые значением через ключ-тип null. для чистого урона есть
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
это про большую группу??
какой чел станет абилку с радиусом в 10000ед.? кроме того если Дебагом выдавать кол-во юнитов хз что будет мб игра вылетит только подумай за 0.000000001 сек. 20 раз выбрать юнитов радиусе 10000 ед. и выдать столько же раз их значение
FirstOfGroup берет-то первый элемент, но тебе его удалять, а после этого итерация всех элементов, чтобы упорядочить их
ну не веришь - не верь, делов-то. перегрев на создании отдельных потоков идет, очевидно, что это тяжелее, чем продолжение работы в том же потоке, как цикл делает
группы как раз в доте небольшие, поэтому цикл выгоднее в 99.9% случаев.
что ты подразумеваешь под словом "небольшие"? если для доты группы небольшие то сколько должно быть юнитов что бы группа была большой?
вся разница что есть - околонулевая...
"Заметно медленнее" вы тролите? на сколько медленнее? прям замечали, прям глазом, как задержки идут при переборе 30 юнитов в лупе и 30 юнитов в ForGroup.. Прям Fps в нули просаживается. В картах типа доты, может быть перебор либо пачки юнитов ну реально в глубоком лейте 30 штук, когда Ember Spirit кастует что-то раз в 10 сек или когда зевс ультует идёт перебор всех героев + клонов + иллюзий раз в 2 минуты. И ту начинается раздуемье, а как же перебрать, может по массиву пройтись и заранее всех занести...
Рили это рофл? что за байтодрочерсво? DracoL1ch, У тебя есть бенчмарк вызова функций в мемхаке верно? (ну или что-то типа этого)
Давай результаты: 30 юнитов в LOOP и 30 юнитов через ForGroup иначе это всё бесполезнейшее 3,14здабольство и байтодрочерство, я не спорю что быстрее, но эта разница на столько мала, что тема не требует обсуждения.
полностью согласен с берги не зачем замарачиватся с этой фигней юзай то что тебе удобнее например я никогда не юзаю ForGroup а делаю все лупом и не жалуюсь все работает как часы
всем спасибо за ответы, переместил включение поверх отключения и сделал 2 иф а не елсеиф и все заработало хз почему так случилось мб мой редактор глючит один день заходишь редактор англ. языке в другой на русском что то сверх естественное творится в моем компе
Насколько я понимаю, GetUnitAbilityCastTime вернет время, в течении которого юнит будет стоять и ничего не делать, после чего начнет анимацию каста, а GetUnitAbilityCastPoint - вернет время, после начала анимации каста, через которое он абилку таки докастует.
Гуванч:
Хорошо, что ты поблему решил, но я не понимаю, почему у тебя не выполняется условие с маной. Вот, смотри. Пример триггера без уровня способности (чтоб нагляднее было). Все работает.
Пока не решил завтра мб с-кодом карту кину а так код сам видишь я даже пробовал с переменными та же фигня вот если отнять еденичку с Мах то все пашет иначе нет
Без карты я конечно не смогу протестировать, но мана - флоат, поэтому возможно стоит считать условие выполненным, например, если у юнита кол-во маны меньше чем максимум минус 1, возможно проблема в этом.
В первый раз у тебя ур пассивки становится равным 1. Затем ты сравниваешь 1 ур сила с 1 ур пассивки и условие не выполняется. И больше не выполнится. Пока уровень скила не повысится.
да по всячески пробовал не пашет не фига ставил даже "не равно" (!=)
В первый раз у тебя ур пассивки становится равным 1. Затем ты сравниваешь 1 ур сила с 1 ур пассивки и условие не выполняется. И больше не выполнится. Пока уровень скила не повысится.
на первом уровне крита стоит 0% шанса типа ваще нет его а когда есть(начиная с 2 лвл) типа есть и бьет критами
Без карты я конечно не смогу протестировать, но мана - флоат, поэтому возможно стоит считать условие выполненным, например, если у юнита кол-во маны меньше чем максимум минус 1, возможно проблема в этом.
карта не моя а друга и мы ее почти сделали и думаю друг будет против давать открытую версию карты другим людям и делать новую карту с этими вещами не хочу устал голову ломать с этим триггером
больно уж мало времени уделили вы нам не представляю что можно сделать за месяц какой то месяц
Вот это около 16 часов делалось вместе с правками, за месяц можно переплюнуть по увлекательности Подземные Хроники.
Главное - каждый аспект делать равномерно, постепенно наращивая, а не браться за одну составляющую и пилить её вглубь, пока время не кончится.
Юзай счётчик хэндлов для подобных исследований. Запусти таймер с периодичностью 0.10 сек на эту функцию и посмотри как растёт счётчик. А потом попробуй удалять и обнулять переменные - ощутимая разница, а сам счётчик говорит о "пороге вылета", то бишь чем больше показывает счётчик тем хуже, тем больше игра лагать начинает вплоть до вылета (искл. спавн постоянных юзабельных объектов). Он не точен, это ясное дело, но если что-то без конца утекает он даст знать, как в данном случае
посему же он не точен он помоему берет все объекты типа юнит, декор, эффек, предметы(не проверял), переменные, и помоему даже способности и это происходит при старте
» WarCraft 3 / Утечки в вызванной функции
» WarCraft 3 / Утечки в вызванной функции
» WarCraft 3 / Дождь для отдельного игрока
» WarCraft 3 / Время каста
» WarCraft 3 / Не запускается карта с мемхаком
» WarCraft 3 / Что быстрее ForGroup() или Loop?
» WarCraft 3 / Что быстрее ForGroup() или Loop?
» WarCraft 3 / Дождь для отдельного игрока
» WarCraft 3 / Что быстрее ForGroup() или Loop?
» WarCraft 3 / Не могу найти причину
» WarCraft 3 / Время каста
» WarCraft 3 / Не могу найти причину
Ред. Гуванч
» WarCraft 3 / Не могу найти причину
» WarCraft 3 / Не могу найти причину
» WarCraft 3 / Время каста
thank you
» WarCraft 3 / Время каста
» WarCraft 3 / Время действия
» WarCraft 3 / Время действия
» WarCraft 3 / Нужна модель? - Вам сюда!
Ред. Гуванч
» WarCraft 3 / Не запускается карта с мемхаком
» XGM Конкурсы / Конкурс становления героев
=>
ScorpioT1000:
» WarCraft 3 / Не запускается карта с мемхаком
» WarCraft 3 / Обязательно ли обнулять локальные переменные?
» WarCraft 3 / Не запускается карта с мемхаком
» WarCraft 3 / Доп тайслеты
TerrainArt \ Ashenvale \ Ashen_Dirt