3
8
5 месяцев назад
Отредактирован goodlyhero
3

» WarCraft 3 / 1.26: Крит. ошибка нажимая F9 (задания) на картах > 40 МБ

Сделал небольшой анализ приложенного краш-лога, померив, насколько ваша память фрагментирована.
len - длина цельного блока памяти в мегабайтах. Дальше идут библиотеки, которые занимают места по краям.
Многа букаф
((
len: 314.8359375 mb, 'c:/games/warcraft iii/redist/miles/Mp3dec.asi' --- 'C:/Program Files (x86)/ABBYY Lingvo x6/LvHook.dll'
len: 221.78125 mb, 'C:/WINDOWS/SYSTEM32/dbghelp.dll' --- 'C:/Windows/System32/Windows.Internal.Graphics.Display.DisplayColorManagement.dll'
len: 192.62109375 mb, 'c:/games/warcraft iii/Storm.dll' --- 'c:/games/warcraft iii/mss32.dll'
len: 164.3125 mb, 'C:/Program Files (x86)/ABBYY Lingvo x6/LvHook.dll' --- 'C:/WINDOWS/SYSTEM32/dbghelp.dll'
len: 146.1015625 mb, 'C:/WINDOWS/System32/DriverStore/FileRepository/nv_dispi.inf_amd64_50916785244854f2/nvldumd.dll' --- 'c:/games/warcraft iii/Storm.dll'
len: 132.23437404632568 mb, 'C:/WINDOWS/SYSTEM32/ntdll.dll' --- 'None'
len: 123.3671875 mb, 'C:/WINDOWS/SYSTEM32/AcGenral.DLL' --- 'C:/WINDOWS/SYSTEM32/winmmbase.dll'
len: 68.41796875 mb, 'C:/Program Files (x86)/ABBYY Lingvo x6/Detoured.dll' --- 'C:/WINDOWS/SYSTEM32/ColorAdapterClient.dll'
len: 66.64453125 mb, 'C:/WINDOWS/System32/CoreMessaging.dll' --- 'C:/WINDOWS/SYSTEM32/wintypes.dll'
len: 66.390625 mb, 'C:/WINDOWS/SYSTEM32/ColorAdapterClient.dll' --- 'C:/WINDOWS/SYSTEM32/gpapi.dll'
len: 59.76171875 mb, 'c:/games/warcraft iii/ijl15.dll' --- 'C:/WINDOWS/System32/DriverStore/FileRepository/nv_dispi.inf_amd64_50916785244854f2/nvd3dum.dll'
len: 51.42578125 mb, 'C:/WINDOWS/SYSTEM32/OPENGL32.dll' --- 'c:/games/warcraft iii/ijl15.dll'
len: 40.93359375 mb, 'c:/games/warcraft iii/redist/miles/Reverb3.flt' --- 'c:/games/warcraft iii/redist/miles/Mp3dec.asi'
len: 37.44921875 mb, 'c:/games/warcraft iii/war3.exe' --- 'C:/WINDOWS/SYSTEM32/cryptnet.dll'
len: 26.52734375 mb, 'C:/WINDOWS/SYSTEM32/MSACM32.dll' --- 'C:/WINDOWS/SYSTEM32/DSOUND.DLL'
len: 25.90625 mb, 'c:/games/warcraft iii/redist/miles/Msseax2.m3d' --- 'c:/games/warcraft iii/redist/miles/Reverb3.flt'
len: 20.62890625 mb, 'c:/games/warcraft iii/mss32.dll' --- 'c:/games/warcraft iii/redist/miles/Mssfast.m3d'
len: 20.32421875 mb, 'C:/WINDOWS/WinSxS/x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.19041.1110_none_c0da534e38c01f4d/COMCTL32.dll' --- 'C:/WINDOWS/SYSTEM32/mswsock.dll'
len: 11.86328125 mb, 'C:/Windows/System32/Windows.UI.dll' --- 'C:/Windows/System32/WindowManagementAPI.dll'
len: 11.09375 mb, 'C:/WINDOWS/SYSTEM32/urlmon.dll' --- 'C:/WINDOWS/SYSTEM32/ntmarta.dll'
len: 10.61328125 mb, 'C:/WINDOWS/System32/DriverStore/FileRepository/nv_dispi.inf_amd64_50916785244854f2/nvd3dum.dll' --- 'C:/WINDOWS/system32/nvspcap.dll'
len: 10.5390625 mb, 'C:/WINDOWS/SYSTEM32/AUDIOSES.DLL' --- 'C:/Program Files/ASUSTeKcomputer.Inc/nhAsusStrix/UserInterface/nhAsusStrixOSD.dll'
len: 8.33984375 mb, 'C:/WINDOWS/SYSTEM32/MPR.dll' --- 'C:/WINDOWS/SYSTEM32/samcli.dll'
len: 8.00390625 mb, 'C:/WINDOWS/SYSTEM32/twinapi.appcore.dll' --- 'C:/WINDOWS/SYSTEM32/textinputframework.dll'
len: 7.1953125 mb, 'C:/WINDOWS/SYSTEM32/gpapi.dll' --- 'C:/WINDOWS/System32/DriverStore/FileRepository/nv_dispi.inf_amd64_50916785244854f2/nvldumd.dll'
len: 7.08203125 mb, 'C:/WINDOWS/System32/MMDevApi.dll' --- 'C:/Program Files/ASUSTeKcomputer.Inc/nhAsusStrix/UserInterface/nhAsusStrixDevProps.dll'
len: 5.8671875 mb, 'C:/WINDOWS/SYSTEM32/IPHLPAPI.DLL' --- 'C:/WINDOWS/System32/SHLWAPI.dll'
len: 5.05859375 mb, 'C:/WINDOWS/SYSTEM32/SspiCli.dll' --- 'C:/WINDOWS/system32/rsaenh.dll'
len: 4.91015625 mb, 'c:/games/warcraft iii/redist/miles/Mssdolby.m3d' --- 'c:/games/warcraft iii/redist/miles/Msseax2.m3d'
len: 4.796875 mb, 'C:/WINDOWS/SYSTEM32/devobj.dll' --- 'C:/Program Files (x86)/ABBYY Lingvo x6/Detoured.dll'
len: 4.671875 mb, 'C:/WINDOWS/SYSTEM32/UxTheme.dll' --- 'C:/WINDOWS/SYSTEM32/USERENV.dll'
len: 4.33203125 mb, 'C:/WINDOWS/SYSTEM32/netutils.dll' --- 'C:/WINDOWS/SYSTEM32/drvstore.dll'
len: 4.26953125 mb, 'C:/WINDOWS/System32/ADVAPI32.dll' --- 'C:/WINDOWS/System32/GDI32.dll'
len: 4.0 mb, 'None' --- 'c:/games/warcraft iii/war3.exe'
len: 2.94921875 mb, 'C:/WINDOWS/SYSTEM32/UMPDC.dll' --- 'C:/WINDOWS/SYSTEM32/netutils.dll'
len: 2.09375 mb, 'C:/Program Files/ASUSTeKcomputer.Inc/nhAsusStrix/UserInterface/nhAsusStrixOSD.dll' --- 'C:/WINDOWS/SYSTEM32/d3d8thk.dll'
len: 1.96875 mb, 'C:/WINDOWS/SYSTEM32/avrt.dll' --- 'c:/games/warcraft iii/Game.dll'
len: 1.53515625 mb, 'C:/WINDOWS/SYSTEM32/d3d8.dll' --- 'C:/WINDOWS/WinSxS/x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.9672_none_d08f9da24428a513/MSVCR80.dll'
len: 1.515625 mb, 'C:/WINDOWS/System32/KERNELBASE.dll' --- 'C:/WINDOWS/System32/msvcrt.dll'
len: 1.4140625 mb, 'C:/WINDOWS/SYSTEM32/dwmapi.dll' --- 'C:/WINDOWS/SYSTEM32/IPHLPAPI.DLL'
len: 1.36328125 mb, 'C:/WINDOWS/SYSTEM32/mscms.dll' --- 'C:/WINDOWS/SYSTEM32/twinapi.appcore.dll'
len: 1.35546875 mb, 'c:/games/warcraft iii/Game.dll' --- 'C:/WINDOWS/SYSTEM32/SspiCli.dll'
len: 1.16796875 mb, 'C:/WINDOWS/SYSTEM32/samcli.dll' --- 'C:/WINDOWS/SYSTEM32/WINSPOOL.DRV'
len: 1.140625 mb, 'C:/WINDOWS/SYSTEM32/dxcore.dll' --- 'C:/WINDOWS/SYSTEM32/MPR.dll'
len: 1.0234375 mb, 'C:/WINDOWS/system32/nvspcap.dll' --- 'C:/WINDOWS/SYSTEM32/mscms.dll'
len: 0.9140625 mb, 'c:/games/warcraft iii/redist/miles/Mssfast.m3d' --- 'c:/games/warcraft iii/redist/miles/Mssdolby.m3d'
len: 0.8203125 mb, 'C:/WINDOWS/SYSTEM32/msasn1.dll' --- 'C:/WINDOWS/SYSTEM32/dxcore.dll'
len: 0.76953125 mb, 'C:/WINDOWS/SYSTEM32/wintypes.dll' --- 'C:/WINDOWS/SYSTEM32/avrt.dll'
len: 0.765625 mb, 'C:/WINDOWS/SYSTEM32/dbgcore.DLL' --- 'C:/WINDOWS/SYSTEM32/WINNSI.DLL'
len: 0.71875 mb, 'C:/WINDOWS/SYSTEM32/WINMM.dll' --- 'C:/WINDOWS/SYSTEM32/WSOCK32.dll'
len: 0.66796875 mb, 'C:/WINDOWS/System32/SHLWAPI.dll' --- 'C:/WINDOWS/System32/sechost.dll'
len: 0.62890625 mb, 'C:/WINDOWS/SYSTEM32/resourcepolicyclient.dll' --- 'C:/WINDOWS/System32/MMDevApi.dll'
len: 0.53125 mb, 'C:/WINDOWS/SYSTEM32/WINNSI.DLL' --- 'C:/WINDOWS/SYSTEM32/iertutil.dll'
len: 0.46875 mb, 'C:/WINDOWS/SYSTEM32/VERSION.dll' --- 'C:/WINDOWS/SYSTEM32/UMPDC.dll'
len: 0.4609375 mb, 'C:/WINDOWS/System32/CRYPT32.dll' --- 'C:/WINDOWS/SYSTEM32/ntdll.dll'
len: 0.40234375 mb, 'C:/WINDOWS/System32/imagehlp.dll' --- 'C:/WINDOWS/System32/win32u.dll'
len: 0.37890625 mb, 'C:/WINDOWS/System32/comdlg32.dll' --- 'C:/WINDOWS/System32/msvcp_win.dll'
len: 0.171875 mb, 'C:/WINDOWS/SYSTEM32/powrprof.dll' --- 'C:/WINDOWS/SYSTEM32/dwmapi.dll'
len: 0.1640625 mb, 'C:/WINDOWS/SYSTEM32/WININET.dll' --- 'C:/WINDOWS/SYSTEM32/powrprof.dll'
len: 0.13671875 mb, 'C:/WINDOWS/SYSTEM32/srvcli.dll' --- 'C:/WINDOWS/SYSTEM32/WININET.dll'
len: 0.1015625 mb, 'C:/WINDOWS/SYSTEM32/MSIMG32.dll' --- 'C:/WINDOWS/SYSTEM32/UxTheme.dll'
len: 0.06640625 mb, 'C:/WINDOWS/SYSTEM32/apphelp.dll' --- 'C:/WINDOWS/SYSTEM32/kernel.appcore.dll'
len: 0.05859375 mb, 'C:/Windows/System32/Windows.Internal.Graphics.Display.DisplayColorManagement.dll' --- 'C:/WINDOWS/SYSTEM32/AcGenral.DLL'
len: 0.05859375 mb, 'C:/WINDOWS/System32/combase.dll' --- 'C:/WINDOWS/System32/imagehlp.dll'
len: 0.0546875 mb, 'C:/WINDOWS/SYSTEM32/PropSys.dll' --- 'C:/WINDOWS/SYSTEM32/profapi.dll'
len: 0.0546875 mb, 'C:/WINDOWS/SYSTEM32/mswsock.dll' --- 'C:/WINDOWS/SYSTEM32/wldp.dll'
len: 0.05078125 mb, 'C:/Windows/System32/WindowManagementAPI.dll' --- 'C:/WINDOWS/SYSTEM32/AUDIOSES.DLL'
len: 0.05078125 mb, 'C:/WINDOWS/SYSTEM32/CRYPTSP.dll' --- 'C:/WINDOWS/SYSTEM32/dbgcore.DLL'
len: 0.05078125 mb, 'C:/WINDOWS/SYSTEM32/WINSPOOL.DRV' --- 'C:/WINDOWS/SYSTEM32/apphelp.dll'
len: 0.05078125 mb, 'C:/WINDOWS/System32/WS2_32.dll' --- 'C:/WINDOWS/System32/combase.dll'
len: 0.05078125 mb, 'C:/WINDOWS/System32/GDI32.dll' --- 'C:/WINDOWS/System32/bcryptPrimitives.dll'
len: 0.05078125 mb, 'C:/WINDOWS/System32/ole32.dll' --- 'C:/WINDOWS/System32/CRYPT32.dll'
len: 0.046875 mb, 'C:/WINDOWS/System32/MSCTF.dll' --- 'C:/WINDOWS/System32/NSI.dll'
len: 0.04296875 mb, 'C:/WINDOWS/SYSTEM32/USERENV.dll' --- 'C:/WINDOWS/SYSTEM32/VERSION.dll'
len: 0.04296875 mb, 'C:/WINDOWS/System32/IMM32.DLL' --- 'C:/WINDOWS/System32/RPCRT4.dll'
len: 0.0390625 mb, 'C:/WINDOWS/SYSTEM32/cryptnet.dll' --- 'C:/WINDOWS/SYSTEM32/devobj.dll'
len: 0.0390625 mb, 'C:/WINDOWS/System32/sechost.dll' --- 'C:/WINDOWS/System32/WINTRUST.DLL'
len: 0.0390625 mb, 'C:/WINDOWS/System32/OLEAUT32.dll' --- 'C:/WINDOWS/System32/clbcatq.dll'
len: 0.03515625 mb, 'C:/WINDOWS/SYSTEM32/d3d8thk.dll' --- 'C:/WINDOWS/System32/CoreUIComponents.dll'
len: 0.03515625 mb, 'C:/WINDOWS/SYSTEM32/wldp.dll' --- 'C:/WINDOWS/SYSTEM32/cryptbase.dll'
len: 0.03515625 mb, 'C:/WINDOWS/System32/NSI.dll' --- 'C:/WINDOWS/System32/bcrypt.dll'
len: 0.03515625 mb, 'C:/WINDOWS/System32/shcore.dll' --- 'C:/WINDOWS/System32/SHELL32.dll'
len: 0.03515625 mb, 'C:/WINDOWS/System32/SHELL32.dll' --- 'C:/WINDOWS/System32/ole32.dll'
len: 0.03125 mb, 'C:/WINDOWS/SYSTEM32/profapi.dll' --- 'C:/WINDOWS/WinSxS/x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.19041.1110_none_c0da534e38c01f4d/COMCTL32.dll'
len: 0.03125 mb, 'C:/WINDOWS/SYSTEM32/WSOCK32.dll' --- 'C:/WINDOWS/SYSTEM32/MSIMG32.dll'
len: 0.03125 mb, 'C:/WINDOWS/System32/win32u.dll' --- 'C:/WINDOWS/System32/ucrtbase.dll'
len: 0.02734375 mb, 'C:/WINDOWS/SYSTEM32/ntmarta.dll' --- 'C:/WINDOWS/SYSTEM32/PropSys.dll'
len: 0.02734375 mb, 'C:/WINDOWS/System32/bcrypt.dll' --- 'C:/WINDOWS/System32/gdi32full.dll'
len: 0.0234375 mb, 'C:/WINDOWS/SYSTEM32/textinputframework.dll' --- 'C:/Windows/System32/Windows.UI.dll'
len: 0.0234375 mb, 'C:/WINDOWS/SYSTEM32/cryptbase.dll' --- 'C:/WINDOWS/SYSTEM32/windows.storage.dll'
len: 0.01953125 mb, 'C:/WINDOWS/WinSxS/x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.9672_none_d08f9da24428a513/MSVCR80.dll' --- 'C:/WINDOWS/SYSTEM32/GLU32.dll'
len: 0.01953125 mb, 'C:/WINDOWS/System32/cfgmgr32.dll' --- 'C:/WINDOWS/System32/comdlg32.dll'
len: 0.01953125 mb, 'C:/WINDOWS/System32/msvcp_win.dll' --- 'C:/WINDOWS/System32/shcore.dll'
len: 0.015625 mb, 'C:/WINDOWS/SYSTEM32/windows.storage.dll' --- 'C:/WINDOWS/SYSTEM32/msasn1.dll'
len: 0.01171875 mb, 'C:/WINDOWS/SYSTEM32/winmmbase.dll' --- 'C:/WINDOWS/SYSTEM32/MSACM32.dll'
len: 0.01171875 mb, 'C:/Windows/System32/InputHost.dll' --- 'C:/WINDOWS/SYSTEM32/resourcepolicyclient.dll'
len: 0.01171875 mb, 'C:/Program Files/ASUSTeKcomputer.Inc/nhAsusStrix/UserInterface/nhAsusStrixDevProps.dll' --- 'C:/WINDOWS/System32/CoreMessaging.dll'
len: 0.01171875 mb, 'C:/WINDOWS/SYSTEM32/iertutil.dll' --- 'C:/WINDOWS/SYSTEM32/urlmon.dll'
len: 0.01171875 mb, 'C:/WINDOWS/System32/WINTRUST.DLL' --- 'C:/WINDOWS/System32/WS2_32.dll'
len: 0.01171875 mb, 'C:/WINDOWS/System32/USER32.dll' --- 'C:/WINDOWS/System32/KERNEL32.DLL'
len: 0.0078125 mb, 'C:/WINDOWS/System32/CoreUIComponents.dll' --- 'C:/Windows/System32/InputHost.dll'
len: 0.0078125 mb, 'C:/WINDOWS/System32/clbcatq.dll' --- 'C:/WINDOWS/System32/IMM32.DLL'
len: 0.0078125 mb, 'C:/WINDOWS/System32/RPCRT4.dll' --- 'C:/WINDOWS/System32/KERNELBASE.dll'
len: 0.00390625 mb, 'C:/WINDOWS/SYSTEM32/DSOUND.DLL' --- 'C:/WINDOWS/SYSTEM32/d3d8.dll'
len: 0.00390625 mb, 'C:/WINDOWS/SYSTEM32/GLU32.dll' --- 'C:/WINDOWS/SYSTEM32/OPENGL32.dll'
len: 0.00390625 mb, 'C:/WINDOWS/system32/rsaenh.dll' --- 'C:/WINDOWS/SYSTEM32/CRYPTSP.dll'
len: 0.00390625 mb, 'C:/WINDOWS/SYSTEM32/kernel.appcore.dll' --- 'C:/WINDOWS/SYSTEM32/WINMM.dll'
len: 0.00390625 mb, 'C:/WINDOWS/System32/bcryptPrimitives.dll' --- 'C:/WINDOWS/System32/OLEAUT32.dll'
len: 0.00390625 mb, 'C:/WINDOWS/System32/msvcrt.dll' --- 'C:/WINDOWS/System32/cfgmgr32.dll'
len: 0.0 mb, 'C:/WINDOWS/SYSTEM32/drvstore.dll' --- 'C:/WINDOWS/SYSTEM32/srvcli.dll'
len: 0.0 mb, 'C:/WINDOWS/System32/ucrtbase.dll' --- 'C:/WINDOWS/System32/MSCTF.dll'
len: 0.0 mb, 'C:/WINDOWS/System32/gdi32full.dll' --- 'C:/WINDOWS/System32/USER32.dll'
len: 0.0 mb, 'C:/WINDOWS/System32/KERNEL32.DLL' --- 'C:/WINDOWS/System32/ADVAPI32.dll'
sum: 1919.3398427963257 mb
))
Итого, максимальный размер свободного блока между двумя библиотеками, при условии, что память выделена только под библиотеки - примерно 315 мегабайт. Размер второго блока около 230 мегабайт.
Соответственно, вы не можете выделить непрерывный кусок памяти длиннее 315 мегабайт, даже если у вас свободно около двух гигабайт памяти свободно (1919 мб по моим рассчетам, без учета выделения всего кроме библиотек)
Соответственно, ваш варкрафт умрет, пытаясь загрузить карту такого размера в память. И, из того, что известно - эта карта при нажатии F9 при условии пережатия zlib будет загружена повторно. Вот и весь ответ, памяти свободной может быть и много, а длинного непрерывного куска просто нет, вот оно и валится и с этим наверное ничего и не сделать.
ABBYY Lingvo хукает все подряд, хаха.
0
8
5 месяцев назад
0

» WarCraft 3 / Недостаточн памяти для обработки команды.

Необязательно. Можно просто прочитать её по недопустимому адресу.
Там сообщение "отказано в доступе"
0
8
5 месяцев назад
0

» WarCraft 3 / Недостаточн памяти для обработки команды.

Насколько я понимаю, таки было показано, что ошибка такого типа происходит только когда кончается память. IceFog вроде даже скрипт для анализа сообщений об ошибках делал основываясь на такой логике.
1
8
5 месяцев назад
Отредактирован goodlyhero
1

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

Впринципе, период тут можно сильно повысить с 0.02. В этом коде же у вас только просчет коллизий.
Даже если вы будете проверять коллизии с частотой 0.1, то это будет не слишком заметно с учетом ваших скоростей. А производительность поднимется в пять раз. Ну будут у вас грибы чучуть пружинить, может быть, не беда.
Движение-то можно считать с той же частотой 0.02, раз уж оно у вас не вызывает лагов. Так и движение не будет дерганым.
1
8
6 месяцев назад
1

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

она для движений по X, и совсем не нагружает код, по сравнению с MushroomMoving_CollisionCheck
на скрине она в текущем фрейме просчитывается по X 0 раз, а по Y 111 раз
поэтому с её переделкой я даже не заморачивался
Она отрезается условием, но полный перебор с проверкой этой штуки все равно происходит. Строго говоря не знаю, насколько оно значительно, тем не менее.
host_pi:
я проводил тесты, да и в том цикле есть условие по exitwhen u==null
разве когда берётся юнит из пустой группы - call GroupEnumUnitsInRange(G, x,y, 200, null) - то переменная u не обнуляется?
чем отличается u=null после выборки из пустой группы и ручное set u=null ?
у меня сначала были строки set u=null, но потом я решил что все равно u обнуляется перебором юнитов в группе и такие строки будут излишни
У вас есть вот такая конструкция:
	set G=null
	set Frame_MainPlayerY=j
	return false
Там юнит не обнуленный.
host_pi:
там же стоит именно такая проверка -- if u != OrangeMushroom[i] then
Был невнимателен.
1
8
6 месяцев назад
1

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

код GroupEnumUnitsInRange 200
Я просмотрел код.
Из замеченного:
  1. У вас есть вторая функция которая делает также: MushroomMoving_Collision
  2. До возврата через return нужно уничтожать группу через DestroyGroup и потом обнулять группу и юнита.
  3. В целом, вместо ренжа 200 вам хватит и 128
  4. В этот ренж попадает и сам юнит, чего вероятно вам не нужно. Нужно его пропустить, например банальной проверкой:
if(u==<ваш юнит>) then
	call GroupRemoveUnit(G,u)
	set u = FirstOfGroup(G)
endif
1
8
6 месяцев назад
Отредактирован goodlyhero
1

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

какой нативкой можно сверять ближайшие координаты у других юнитов рядом с заданными?
Получить набор ближайших юнитов можно черезк как уже описывалось GroupEnumUnitsInRect. Способа сравнивать по координатам в ванильном варике я не знаю. Не работает, вроде как, на юнитов с локустами, но тут можно придумать много чего.
1
8
6 месяцев назад
Отредактирован goodlyhero
1

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

варик начинают загружать именно эти две строки:
Варкрафт загружает то, что у вас происходит полный перебор всех пар юнитов.
Стандартные варкрафтовские функции в этом плане работают намного умнее и количество юнитов почти не влияет на скорость. Соответственно функция GroupEnumUnitsInRect Вернет вам всех юнитов в квадрате за время. которое не зависит от количества юнитов на карте примерно никак. И это буде примерно бесконечно быстрее на значителньных количествах юнитов.
1
8
6 месяцев назад
1

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

Попробуйте проверять на коллизию не всех юнитов на карте а только ближайших, например через поиск их в ректе.
0
8
6 месяцев назад
0

» WarCraft 3 / где есть mix аддон на расширение колонки с качальщиками карты?

Можете попробовать его сделать сами.
Отыщите в архиве английского клиента описание нужного фрейма и сравните с тем что есть в русском. Попробуйте найти что не так. Формат вероятно .fdf
Возьмите какой-нибудь микс для загрузки файлов с большим приоритетом и положите туда правильную версию фреймдефа.
2
8
6 месяцев назад
Отредактирован goodlyhero
2

» WarCraft 3 / Не пустая клетка.

Логика такая же как с предметом.
Событие - Декорация разрушена - Создать юнита на месте декорации
0
8
7 месяцев назад
0

» WarCraft 3 / Можно ли настроить способность "Ритуальное самоубийство"?

Тогда уж можно рассмотреть, например, ополчение, его вроде как и поменять можно и юниты куда надо бегут и даже заменяются сами.
0
8
8 месяцев назад
0

» WarCraft 3 / Сменить id способности?

Можно настроить так, чтобы при касте Канала, не появлялось это самое пустое окно интерфейса вообще?
Там есть флаг "отключить прочие способности", вроде именно он за это отвечает.
0
8
8 месяцев назад
0

» WarCraft 3 / Warcraft 3 Reforged - Не открывается реплей на Mac

Проверьте, что у вас есть карта, для которой вы хотите запустить реплей и она лежит под такому же пути, по какому она лежала, когда реплей делался.
2
8
8 месяцев назад
Отредактирован goodlyhero
2

» WarCraft 3 / [jass] объявление глобалок

Попробуй потыкать галочки в менюшке jasshelper, может быть там что-то не так стоит.
0
8
8 месяцев назад
Отредактирован goodlyhero
0

» WarCraft 3 / [jass] объявление глобалок

В рефорже в редактор был встроен джассхелпер. Собственно, во всех популярных версиях редактора он был очень давно. Так что вам ничего не мешает создавать глобалки в рамках синтаксива vjass или zinc, как и раньше
0
8
8 месяцев назад
Отредактирован goodlyhero
0

» WarCraft 3 / Пропали любые символы и буквы из всех редакторов WE любой сборки

Тут видно, что английский у вас таки имеется и проблема только с русским, судя по всему.
Можете скачать английскую версию игру и вероятно это будет работать.
Может быть вы меняли язык системы для приложений, не использующих юникод? Если меняли - можете попробовать вернуть его назад.
0
8
9 месяцев назад
0

» WarCraft 3 / Как остановить разложение юнитов?

Как минимум:
 native UnitSuspendDecay             takes unit whichUnit, boolean suspend returns nothing
Еще можите посмотреть в константах, вроде, была настройка про это.
0
8
9 месяцев назад
Отредактирован goodlyhero
0

» WarCraft 3 / Двумерный массив типа ability

ability - хэндл, описывающий конкретный экземпляр способности
'A0U5' - целое число integer, описывает идентификатор типа способности. Её айди.
тип ability почти не используется в ванильном варкрафте и вероятно не нужен для вашей задачи.
Почти всегда при работе со способностями нужно работать с типом, а не с конкретным экземпляром.
1
8
9 месяцев назад
1

» WarCraft 3 / Циклы и wait

quq_CCCP, почему неточны? в чем у них подвох?
Их главная проблема - они синхронизируют свое окончание между клиентами.
Время когда данные синхронизируются и начнется продолжение исполнения - зависит много от чего и в общем непредсказуемо
0
8
10 месяцев назад
0

» WarCraft 3 / IsUnitDeadBJ()

Триггерно мертвым юнитам точно можно выставить любое количество здоровья больше нуля, поэтому ХП<"Чего-то там" в любом случае плохая проверка.
0
8
10 месяцев назад
0

» WarCraft 3 / GetLocalPlayer()

На локального. Вывод команды меняется от окна к окну.
Используется для определения того самого игрока, который играет в этот самый Варкрафт.
0
8
11 месяцев назад
0

» WarCraft 3 / По редактору.

Удалить старого юнита и поставить на его место нового только, по крайней мере если вы хотите, чтобы статы и геройские способности были от нового.
0
8
11 месяцев назад
0

» WarCraft 3 / кто сильнейший герой?

Паладин
0
8
11 месяцев назад
0

» WarCraft 3 / как написать *.mix камерахак? zoom

case VK_ZoomOut:
if (*(float *)dwAddress < 3050)
Сделайте лучше.
Может быть я поищу, у меня была работа лучше. А может не поищу.