что такое "присваивание героя" ?
ты хочешь второй тип юнита "пришить"? что такое "пришить тип юнита" ?
или все-таки изменить тип юнита?
например благодаря добавлению типа
иъяснись подробнее?
какой тип добавить? у юнита только один тип - "тип юнита", нет?
вопрос из серии:
"можно ли пришить тип здания к футману?"
"можно ли чтобы мой юнит и летал и ходил одновременно"
"можно ли чтобы юнит бил с руки и стрелял одновременно"
"можно ли чтобы юнит был жив и был мертв одновременно"
"хочу одновременно и 0 и 1"
Если копирование функцией SubString происходит начиная с первого байта, а хэши входной строки и результата совпадают, то может быть возвращена изначально переданая строка, вместо ожидаемой подстроки.
Разработчик функции решил не создавать копию подстроки в памяти, а вместо этого временно поставить нуль-терминатор посреди оригинальной строки, передать указатель на неё в конструктор нового объекта-строки, после чего вернуть буфер в исходный вид.
Но память, которую он временно модифицировал, принадлежала менеджеру строк и её нельзя было трогать
Проблема усугубляется тем, что StringHash обрабатывает только первые 1023 байта, так что любые две строки, учитываемый регион которых совпадает, имеют одинаковый хэш, что увеличивает вероятность бага на больших строках.
set x=GetUnitX(u)
set y=GetUnitY(u)
set f=GetUnitFacing(u)
call RemoveUnit(u)
set u = CreateUnit(0,'Hpal',x,y,f)
статы можно написать через TextTag рядом с юнитом и двигать по таймеру на x y юнита
либо через альтернативное отображение текста кем-нибудь самописное
либо
книги может можно удалять когда негерой на них тыкнет, добавить анимацию подбора книги и писать свою систему статов (атаки) на глобалках для юнитов-негероев
это погрешность
указано же, что пипеточники на красный цвет напипеткали аж 3 значения - FF0000 FF0202 FF0303 , и какой из них верный?
надо именно из кода игры получить
а еще может быть в разных патчах разные цвета прописаны, стопудов в game.dll сидят они
ты сейчас про CreateTimerDialogBJ ?
делай в глобалку - timerdialog td=null , тогда окно будет удаляться
даже если в глобалку напишешь timerdialog td - то не будет удаляться, надо с null
local timerdialog IvanWindow
вот у тебя и в локалке без null
у тебя даже нет
call PauseTimer(t)
call DestroyTimerDialog(td)
как ты там их вообще останавливаешь
и да, окно и таймер не связаны, т.е. после удаления только окна - таймер продолжит тикать
нету создания : trigger t=CreateTrigger(), timer t=CreateTimer() и двадцати остальных
нету убийства : GroupClear, DisableTrigger, KillDestructable, KillUnit, PauseTimer и ещё десятка остальных
нету очистки : RemoveItem, DestroyGroup, DestroyTimerDialog, RemoveWeatherEffect и ещё десятка остальных
естественно не указано, что смена погоды может крашить вар ( set we = AddWeatherEffect(GetPlayableMapRect(), "zzzz") + call EnableWeatherEffect(we, true) )
про string вообще ничего не указано. я молчу про высокие материи про стринг типа моего поста выше, но банально даже лимиты стринга не указаны
то есть ценность у статьи - такая себе, полумера, которая не покрывает заявленную тему
и да и нет
стринг это очень опасный тип, может быть даже самый опасный
если стринг переменную и можно обнулить, то нельзя обнулить память, которая была выделена под эту строку
при работе со стрингами забить оплимит можно в пару строк кода
ну а критануть вар так вообще одной строкой можно
Basically, every time you create a string that has a unique set of characters it will leak. (Note : These types of leaks are smaller than other leaks in terms of memory usage)
So if you do
Set Variable = "Hello"
Set Variable2 = "Hello"
it will only create one string leak. The reason why its leaking is that all strings in wc3 are simply pointers to the global string table. If you declare a new string, than it has to add the new string to the table if it doesn't exist. These leaks can't be cleared. In general, don't worry about it unless your processing custom chunks of strings
стоит разделять обнуление переменной и удаление объекта, на который ссылается эта переменная
если для всех объектов у нас есть функция очистки
то вот для стринга нет функции очистки
GroupClear(g)
DestroyGroup(g)
set g=null
call DisableTrigger(t)
call DestroyTrigger(t)
set t=null
call KillDestructable(d)
call RemoveDestructable(d)
set d=null
call KillUnit(u)
call RemoveUnit(u)
set u=null
call RemoveItem(it)
set it=null
call RemoveLocation(L)
set L=null
call ClearStringMemory(s) --- нет такой функции
set s=null --- переменная очищается автоматически
статьи по правильному созданию и обнулению всех типов переменных тоже нет до сих пор
как отметил IceFog
SubString позволяет по памяти ковыряться
если через чат вводить значения отступа XX от -20 и условно до -20000 (и дальше)
выдаваемые значения обычно разные, даже если одну и ту же карту перезапустить
EugeAl, ясно короче, сплошной хело ворлд вместо кодинга
что ещё надо?)
когда не работал с отладчиком - то конечно и знать не знаешь - что он позволяет делать в коде, который длиннее 10 строк
сидеть как слепой котёнок аутировать по два дня на каждый баг
да я скоро повешаюсь с этим джасом
мне приходится на другом языке всё кодить, чтобы там отладку делать хоть какую-то
на одном BJDebugMsg далеко не уедешь и будешь неделями бороться с оплимитом вместо отладки
хотя тут некоторые утверждают что оплимита не существует и за 20 лет с ним ни разу не сталкивались
ну если не кодить ничего сложнее "хелло ворлда" и счетчика убитых крипов, то наверное
в одну функцию приходится аж по три триггера засовывать, чтобы этого старпёра на пинках заставлять работать нормально
странно, что сообщество кодит карты и всякий софт, но не может накодить себе отладчик хотя бы примитивный
вот в этих штуках тоже нельзя отладку обычного жаса делать?
Ред. host_pi
» WarCraft 3 / как обновить функцию внутри таймерного периодического триггера?
восхитительно
ещё есть - call TriggerClearActions(t)
пришлось городить огород с переопределением тригера
и твоё решение подъехало вторым вариантом
Ред. host_pi
» WarCraft 3 / Переместить триггером ящики-декор (Move)
» WarCraft 3 / Отдельный файл
Ред. host_pi
» WarCraft 3 / Можно ли узнать свой ключ RoC/TFT
VirusTotal 14/56
» WarCraft 3 / Карта не может запуститься в локальной игре
как можно быть картоделом и до сих пор не знать что означает эта двойка?
» WarCraft 3 / Карта не может запуститься в локальной игре
Ред. host_pi
» WarCraft 3 / как заранее автоматически узнать кодировку каждого символа в строке?
» WarCraft 3 / как заранее автоматически узнать кодировку каждого символа в строке?
Ред. host_pi
» WarCraft 3 / Возможно ли триггерно пришить юниту тип героя и аттрибуты? +Мемхак
ты хочешь второй тип юнита "пришить"? что такое "пришить тип юнита" ?
или все-таки изменить тип юнита?
какой тип добавить? у юнита только один тип - "тип юнита", нет?
"можно ли пришить тип здания к футману?"
"можно ли чтобы мой юнит и летал и ходил одновременно"
"можно ли чтобы юнит бил с руки и стрелял одновременно"
"можно ли чтобы юнит был жив и был мертв одновременно"
"хочу одновременно и 0 и 1"
» WarCraft 3 / как заранее автоматически узнать кодировку каждого символа в строке?
» WarCraft 3 / зачем в Substring start -1 (minus) ?
IceFog:
Ред. host_pi
» WarCraft 3 / Возможно ли триггерно пришить юниту тип героя и аттрибуты? +Мемхак
либо через альтернативное отображение текста кем-нибудь самописное
книги может можно удалять когда негерой на них тыкнет, добавить анимацию подбора книги и писать свою систему статов (атаки) на глобалках для юнитов-негероев
» Администрация XGM / в таблице не показывается код цвета
Ред. host_pi
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
Ред. host_pi
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
указано же, что пипеточники на красный цвет напипеткали аж 3 значения - FF0000 FF0202 FF0303 , и какой из них верный?
надо именно из кода игры получить
а еще может быть в разных патчах разные цвета прописаны, стопудов в game.dll сидят они
Ред. host_pi
» XGM Team / Онлайн-инструменты для геймдев и моддинг арта
тут нету константных цветов плеерных
Ред. host_pi
» WarCraft 3 / Переодически подвисает таймер
кури тут xgm.guru/p/wc3/kak-sdelat-3-raznykh-deystviya-s-odnoy-periodi-Nx...
Ред. host_pi
» WarCraft 3 / Переодически подвисает таймер
делай в глобалку - timerdialog td=null , тогда окно будет удаляться
даже если в глобалку напишешь timerdialog td - то не будет удаляться, надо с null
call PauseTimer(t)
call DestroyTimerDialog(td)
как ты там их вообще останавливаешь
и да, окно и таймер не связаны, т.е. после удаления только окна - таймер продолжит тикать
кури коменты тут xgm.guru/p/wc3/Kak-obnulit-dannyy-tip-peremennoy-iXc/comments/vi...
Ред. host_pi
» WarCraft 3 / Как обнулить данный тип переменной
нету убийства : GroupClear, DisableTrigger, KillDestructable, KillUnit, PauseTimer и ещё десятка остальных
нету очистки : RemoveItem, DestroyGroup, DestroyTimerDialog, RemoveWeatherEffect и ещё десятка остальных
естественно не указано, что смена погоды может крашить вар ( set we = AddWeatherEffect(GetPlayableMapRect(), "zzzz") + call EnableWeatherEffect(we, true) )
про string вообще ничего не указано. я молчу про высокие материи про стринг типа моего поста выше, но банально даже лимиты стринга не указаны
то есть ценность у статьи - такая себе, полумера, которая не покрывает заявленную тему
Ред. host_pi
» WarCraft 3 / Как обнулить данный тип переменной
стринг это очень опасный тип, может быть даже самый опасный
если стринг переменную и можно обнулить, то нельзя обнулить память, которая была выделена под эту строку
при работе со стрингами забить оплимит можно в пару строк кода
ну а критануть вар так вообще одной строкой можно
https://www.hiveworkshop.com/threads/documentation-string-type.2...
если для всех объектов у нас есть функция очистки
то вот для стринга нет функции очистки
DestroyGroup(g)
set g=null
call DestroyTrigger(t)
set t=null
call RemoveDestructable(d)
set d=null
call RemoveUnit(u)
set u=null
set it=null
set L=null
set s=null --- переменная очищается автоматически
Ред. host_pi
» WarCraft 3 / зачем в Substring start -1 (minus) ?
SubString позволяет по памяти ковыряться
если через чат вводить значения отступа XX от -20 и условно до -20000 (и дальше)
выдаваемые значения обычно разные, даже если одну и ту же карту перезапустить
Ред. host_pi
» WarCraft 3 / какой есть дебагер для жаса?
сидеть как слепой котёнок аутировать по два дня на каждый баг
Ред. host_pi
» WarCraft 3 / какой есть дебагер для жаса?
точнее, ТОЛЬКО ради проверки синтаксиса
Ред. host_pi
» WarCraft 3 / какой есть дебагер для жаса?
мне приходится на другом языке всё кодить, чтобы там отладку делать хоть какую-то
на одном BJDebugMsg далеко не уедешь и будешь неделями бороться с оплимитом вместо отладки
хотя тут некоторые утверждают что оплимита не существует и за 20 лет с ним ни разу не сталкивались
ну если не кодить ничего сложнее "хелло ворлда" и счетчика убитых крипов, то наверное
вот в этих штуках тоже нельзя отладку обычного жаса делать?
https://xgm.guru/p/wc3/warcode