28

» Администрация XGM / Правила пользования сайтом

ScorpioT1000, замечательно, а в том же проекте милки куча комментов не о проекте, а о самом милки.
28

» WarCraft 3 / Как заменить <Green Square DISBTN> на свою иконку?

Скорее всего никак. Лучше импортировать иконки по разным путям, но с одинаковым именем, тогда для всех них нужна только одна иконка с DIS.
28

» WarCraft 3 / Как добавить логову орков атаку без раба внутри.

Просто забираем способность склад, выдаём абилку от транспорта.
1 триггер на вход раба, выход раба и каст абилки на выход всех - чекаем кол-во рабов внутри, если их 1 или больше, даём способность на + скорость атаки и ставим нужный уровень; если 0, то забираем способность.
28

» WarCraft 3 / JNGP Tooltip помошник

Я включил Colorizer, перезапустил редактор, в extended tooltip он появился.
У меня стоят такие версии.
Проверить можно с помощью этой утилиты.
Загруженные файлы
28

» WarCraft 3 / Twilight's Eve Resurrection

Поддержка Reforged: SD и HD
Карта создана в редакторе YDWE
Кто-нибудь проверял совместимость с рефом? Если использовались фичи YDWE, то она не будет там работать, поэтому поле с поддержкой нужно отредактировать.
28

» WarCraft 3 / Memory hack API v1.4

EugeAl, я делал подсветку для этой версии API, посмотри в моих ресурсах.
28

» WarCraft 3 / (Reforged) Как быть с игроками?

А в чём проблема? Если карта сохранена в редакторе до 1.29, то в ней будет 12 игроков. Если же она сохранена после, то 24.
Для номеров игроков и их количества есть специальные константы.
    constant integer            PLAYER_NEUTRAL_PASSIVE          = GetPlayerNeutralPassive()
    constant integer            PLAYER_NEUTRAL_AGGRESSIVE       = GetPlayerNeutralAggressive()
    constant integer   bj_MAX_PLAYERS                   =  GetBJMaxPlayers()
    constant integer   bj_PLAYER_NEUTRAL_VICTIM         =  GetBJPlayerNeutralVictim()
    constant integer   bj_PLAYER_NEUTRAL_EXTRA          =  GetBJPlayerNeutralExtra()
    constant integer   bj_MAX_PLAYER_SLOTS              =  GetBJMaxPlayerSlots()
Используйте их и всё будет в порядке на любой версии.
28

» WarCraft 3 / Jass MythBusters

	globals
		location Loc
	endglobals

	function DoSomething takes nothing returns nothing
		local location loc
		set Loc = Location(0., 0.)
		set loc = Loc
	endfunction
В данном примере важно понять, утекает ли локальная переменная loc без обнуления или нет. Тут не нужно удалять локацию, она занесена в глобалку и будет использоваться в другом коде.
28

» WarCraft 3 / Jass MythBusters

Смотри видео внимательно, оно потом падает, ибо проходят и другие действия. Оно не растёт без конца. Оно ещё и падает
Предоставленный код тобою - утекает лишь в случае если его повторять и не удалять используемый объект.
Я предоставил ссылку на мою статью, где показывается, что если удалять точку и не обнулять переменную, потребление ОЗУ растёт. В твоей статье это якобы опровергается, но в тестах с локацией, что ты привёл, локалка обнуляется (ну и разумеется потребление ОЗУ остаётся неизменным). Это не опровержение, а подтверждение.
вопрос к тебе, как думаешь, утекает ли это
Судя по твоему тесту с юнитов - утечек не будет.

Я так понял, проблема с локалками возникает в том случае, если в функции создаётся хендл.
То есть, если создаётся хендл, то ЛЮБУЮ локалку этой функции, в которой этот хендл находится или находился в процессе выполнения функции, нужно обнулить.

И прекратите цитировать комментарий целиком по нескольку раз в ответе.

05070000 -> local handle
00000487 -> её id
0C290500 -> literal register (type) location
13290000 -> push register
0C2A0500 -> literal register (type) location
132A0000 -> push register
15000000 -> callnative
00000314 -> id нативки
11000000 -> setvar
00000F7D -> id переменной
0E2B0700 -> get var register (type) Handle
00000F7D -> id переменной
112B0000 -> setvar register
00000487 -> id переменной
0E2C0700 -> get var register (type) Handle
00000F7D -> id перемнной
132C0000 -> push register
15000000 -> callnative
00000315 -> id нативки
0C000000 -> literal R0
27000000 -> return
А почему тут два раза callnative? Нативка же одна в примере, Location.
Скорее всего часть взята из дополненного примера, где есть RemoveLocation.

Не могу понять, почему в моём примере байткод начинается с
05070000 -> local handle
00000487 -> её id
В то время как в твоём примере ниже
05070000 -> local (type) handle
00000487 -> id переменной
Хотя обе функции начинаются с local location.
Думаю, тут какая-то ошибка.

Нужно исправить все ошибки и более подробно объяснить, в каких ситуациях возникает утечка, а в каких нет. И главное, почему утечка переменной вообще возникает:
3 фактических push, так как локальный реестр не был обнулён, то popstack (который вызывается всегда) решает его не трогать
С чего он решает не трогать?
28

» WarCraft 3 / Jass MythBusters

мы СОЗДАЁМ переменную и присваиваем её в локальную переменную
Создаём объект

Простой ответ - сами переменные не утекают ни при каких обстоятельствах и они преобразуются в нечто статичное, и им выделена память единожды. Потому, утечки вызываются фактически банальной проблемой логики в самом коде, то бишь вы создали хендл, а затем его не удалили и так может повторяться уйму раз.
Ладно, тогда почему тут всё удаляется, а потребление ОЗУ растёт? В твоих примерах с группой и локацией переменная обнуляется.

	globals
		location Loc
	endglobals

	function DoSomething takes nothing returns nothing
		local location l
		set Loc = Location(0., 0.)
		set l = Loc
	endfunction
Вот это утекает?
28

» WarCraft 3 / JNGP: Rebuild от PT153

Файл "Clean game path.reg" <...> обновлён.
Обнова была выпущена из-за того, что я улучшил файл clear-game-path.reg после внимательного изучения findpath.lua. До этого .reg файл очищал не все пути, и таким образом иногда JNGP всё же мог найти путь к вару. Сейчас это проблема исправлена. А переименование - приведение всех файлов в корневой папке к одному виду, без пробелов - просто дополнение.
28

» WarCraft 3 / JNGP: Rebuild от PT153

Вышла новая версия! Прокрутить к ресурсу

Обновление v1.3.1

раскрыть
  • Файл "Clean game path.reg" переименован в "clear-game-path.reg" и обновлён.
  • Файл "Remove Tool Windows entry.reg" переименован в "remove-tool-windows-entry.reg".