PT153: Чтобы удалить ивенты у триггера, нужно триггер удалить.
а если мы используем DisableTrigger(t) + TriggerRemoveAction(t) + DestroyTrigger(t) - то будет правильно и без утечек?
или можно просто DestroyTrigger(t)?
то есть делать единоразовый непериодический таймер и каждые 0.1 сек его отлавливать как истёкший, чтобы заного его запустить на следующие 0.1 сек?
либо делать периодический таймер, но в случае паузы вручную отлавливать натиканное время и потом это время докармливать другому периодическому таймеру чтобы он продолжил тикать с этого же места?
получается, из простых решений - ответ только тот что указан в шапке темы
это нужно было для радужного текста, в принципе он уже релизнут итак на этом решении
PT153: Причём я думаю, что отключение триггера не останавливает ивент-таймер, он дальше тикает
Extremator: периодический триггер в отличии от таймера будет молотить всю игру, независимо от того включен ли триггер. Тебя это устраивает?
даже если DisableTrigger() + TriggerRemoveAction() ?
а какая есть альтернатива то?
во-первых периодический таймер нельзя запаузить, а потом включить работать дальше (без костылей)
во-вторых изменение времени в нём же не будет отличаться по сути от тригера? т.е. в таймере тоже надо заново его объявлять если надо сменить периодичность таймера, да?
для периодики он не годится, т.к. пауза тупо не работает:
ResumeTimer
Has no effect if passed timer is running. If passed timer is paused or has expired, launches it for TimerGetRemaining, and after this time is elapsed, launches it again for TimerGetTimeout. After that passed timer is stopped even if it is periodic.
цветовые функции:
первая определяет код цвета по игровой константе
вторая красит строку
Vanilla
Код
function GetColorClassic takes player p returns string
local playercolor color = GetPlayerColor(p)
if color==PLAYER_COLOR_RED then
return "FF0303" //1
elseif color==PLAYER_COLOR_BLUE then
return "0042FF" //2
elseif color==PLAYER_COLOR_CYAN then
return "1CE6B9" //3
elseif color==PLAYER_COLOR_PURPLE then
return "540081" //4
elseif color==PLAYER_COLOR_YELLOW then
return "FFFC01" //5
elseif color==PLAYER_COLOR_ORANGE then
return "FEBA0E" //6
elseif color==PLAYER_COLOR_GREEN then
return "20C000" //7
elseif color==PLAYER_COLOR_PINK then
return "E55BB0" //8
elseif color==PLAYER_COLOR_LIGHT_GRAY then
return "959697" //9
elseif color==PLAYER_COLOR_LIGHT_BLUE then
return "7EBFF1" //10
elseif color==PLAYER_COLOR_AQUA then
return "106246" //11
elseif color==PLAYER_COLOR_BROWN then
return "4E2A04" //12
endif
return ""
endfunction
function Color00PlayerRedClassic takes string s returns string //1 - 255,3,3
return "|c"+"ff"+"FF0303"+s+"|r"
endfunction
function Color01PlayerBlueClassic takes string s returns string //2 - 0,66,255
return "|c"+"ff"+"0042FF"+s+"|r"
endfunction
function Color02PlayerCyanClassic takes string s returns string //3 - 28,230,185
return "|c"+"ff"+"1CE6B9"+s+"|r"
endfunction
function Color03PlayerPurpleClassic takes string s returns string //4 - 84,0,129
return "|c"+"ff"+"540081"+s+"|r"
endfunction
function Color04PlayerYellowClassic takes string s returns string //5 - 255,252,1
return "|c"+"ff"+"FFFC01"+s+"|r"
endfunction
function Color05PlayerOrangeClassic takes string s returns string //6 - 254,138,14
return "|c"+"ff"+"FEBA0E"+s+"|r"
endfunction
function Color06PlayerGreenClassic takes string s returns string //7 - 32,192,0
return "|c"+"ff"+"20C000"+s+"|r"
endfunction
function Color07PlayerPinkClassic takes string s returns string //8 - 229,91,176
return "|c"+"ff"+"E55BB0"+s+"|r"
endfunction
function Color08PlayerLightGrayClassic takes string s returns string //9 - 149,150,151
return "|c"+"ff"+"959697"+s+"|r"
endfunction
function Color09PlayerLightBlueClassic takes string s returns string //10 - 126,191,241
return "|c"+"ff"+"7EBFF1"+s+"|r"
endfunction
function Color10PlayerAquaClassic takes string s returns string //11 - 16,98,70
return "|c"+"ff"+"106246"+s+"|r"
endfunction
function Color11PlayerBrownClassic takes string s returns string //12 - 78,42,4
return "|c"+"ff"+"4E2A04"+s+"|r"
endfunction
Reforged
Код
function GetColorReforged takes player p returns string
local playercolor color = GetPlayerColor(p)
if color==PLAYER_COLOR_RED then
return "F80402" //1
elseif color==PLAYER_COLOR_BLUE then
return "0041F8" //2
elseif color==PLAYER_COLOR_CYAN then
return "1AE4B5" //3
elseif color==PLAYER_COLOR_PURPLE then
return "52007D" //4
elseif color==PLAYER_COLOR_YELLOW then
return "F8F900" //5
elseif color==PLAYER_COLOR_ORANGE then
return "F8880D" //6
elseif color==PLAYER_COLOR_GREEN then
return "20BD00" //7
elseif color==PLAYER_COLOR_PINK then
return "DD5AAA" //8
elseif color==PLAYER_COLOR_LIGHT_GRAY then
return "909492" //9
elseif color==PLAYER_COLOR_LIGHT_BLUE then
return "7ABDEA" //10
elseif color==PLAYER_COLOR_AQUA then
return "106145" //11
elseif color==PLAYER_COLOR_BROWN then
return "4D2A05" //12
elseif color==PLAYER_COLOR_MAROON then
return "980000" //13
elseif color==PLAYER_COLOR_NAVY then
return "0000BD" //14
elseif color==PLAYER_COLOR_TURQUOISE then
return "00E8F8" //15
elseif color==PLAYER_COLOR_VIOLET then
return "B800F8" //16
elseif color==PLAYER_COLOR_WHEAT then
return "E5CA82" //17
elseif color==PLAYER_COLOR_PEACH then
return "F0A288" //18
elseif color==PLAYER_COLOR_MINT then
return "BAFC7D" //19
elseif color==PLAYER_COLOR_LAVENDER then
return "D5B6E5" //20
elseif color==PLAYER_COLOR_COAL then
return "4D4E52" //21
elseif color==PLAYER_COLOR_SNOW then
return "E5EDF8" //22
elseif color==PLAYER_COLOR_EMERALD then
return "00761D" //23
elseif color==PLAYER_COLOR_PEANUT then
return "A06E32" //24
endif
return ""
endfunction
function Color00PlayerRedReforged takes string s returns string //1 - 248,4,2
return "|c"+"ff"+"F80402"+s+"|r"
endfunction
function Color01PlayerBlueReforged takes string s returns string //2 - 0,65,248
return "|c"+"ff"+"0041F8"+s+"|r"
endfunction
function Color02PlayerCyanReforged takes string s returns string //3 - 26,228,181
return "|c"+"ff"+"1AE4B5"+s+"|r"
endfunction
function Color03PlayerPurpleReforged takes string s returns string //4 - 82,0,125
return "|c"+"ff"+"52007D"+s+"|r"
endfunction
function Color04PlayerYellowReforged takes string s returns string //5 - 248,249,0
return "|c"+"ff"+"F8F900"+s+"|r"
endfunction
function Color05PlayerOrangeReforged takes string s returns string //6 - 248,136,13
return "|c"+"ff"+"F8880D"+s+"|r"
endfunction
function Color06PlayerGreenReforged takes string s returns string //7 - 32,189,0
return "|c"+"ff"+"20BD00"+s+"|r"
endfunction
function Color07PlayerPinkReforged takes string s returns string //8 - 221,90,170
return "|c"+"ff"+"DD5AAA"+s+"|r"
endfunction
function Color08PlayerLightGrayReforged takes string s returns string //9 - 144,148,146
return "|c"+"ff"+"909492"+s+"|r"
endfunction
function Color09PlayerLightBlueReforged takes string s returns string //10 - 122,189,234
return "|c"+"ff"+"7ABDEA"+s+"|r"
endfunction
function Color10PlayerAquaReforged takes string s returns string //11 - 16,97,69
return "|c"+"ff"+"106145"+s+"|r"
endfunction
function Color11PlayerBrownReforged takes string s returns string //12 - 77,42,5
return "|c"+"ff"+"4D2A05"+s+"|r"
endfunction
function Color12PlayerMaroonReforged takes string s returns string //13 - 152,0,0
return "|c"+"ff"+"980000"+s+"|r"
endfunction
function Color13PlayerNavyReforged takes string s returns string //14 - 0,0,189
return "|c"+"ff"+"0000BD"+s+"|r"
endfunction
function Color14PlayerTurquoiseReforged takes string s returns string //15 - 0,232,248
return "|c"+"ff"+"00E8F8"+s+"|r"
endfunction
function Color15PlayerVioletReforged takes string s returns string //16 - 184,0,248
return "|c"+"ff"+"B800F8"+s+"|r"
endfunction
function Color16PlayerWheatReforged takes string s returns string //17 - 229,202,130
return "|c"+"ff"+"E5CA82"+s+"|r"
endfunction
function Color17PlayerPeachReforged takes string s returns string //18 - 240,162,136
return "|c"+"ff"+"F0A288"+s+"|r"
endfunction
function Color18PlayerMintReforged takes string s returns string //19 - 186,252,125
return "|c"+"ff"+"BAFC7D"+s+"|r"
endfunction
function Color19PlayerLavenderReforged takes string s returns string //20 - 213,182,229
return "|c"+"ff"+"D5B6E5"+s+"|r"
endfunction
function Color20PlayerCoalReforged takes string s returns string //21 - 77,78,82
return "|c"+"ff"+"4D4E52"+s+"|r"
endfunction
function Color21PlayerSnowReforged takes string s returns string //22 - 229,237,248
return "|c"+"ff"+"E5EDF8"+s+"|r"
endfunction
function Color22PlayerEmeraldReforged takes string s returns string //23 - 0,118,29
return "|c"+"ff"+"00761D"+s+"|r"
endfunction
function Color23PlayerPeanutReforged takes string s returns string //24 - 160,110,50
return "|c"+"ff"+"A06E32"+s+"|r"
endfunction
что такое "присваивание героя" ?
ты хочешь второй тип юнита "пришить"? что такое "пришить тип юнита" ?
или все-таки изменить тип юнита?
например благодаря добавлению типа
иъяснись подробнее?
какой тип добавить? у юнита только один тип - "тип юнита", нет?
вопрос из серии:
"можно ли пришить тип здания к футману?"
"можно ли чтобы мой юнит и летал и ходил одновременно"
"можно ли чтобы юнит бил с руки и стрелял одновременно"
"можно ли чтобы юнит был жив и был мертв одновременно"
"хочу одновременно и 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 юнита
либо через альтернативное отображение текста кем-нибудь самописное
либо
книги может можно удалять когда негерой на них тыкнет, добавить анимацию подбора книги и писать свою систему статов (атаки) на глобалках для юнитов-негероев
Ред. host_pi
» WarCraft 3 / как изменить время внутри таймерного периодического триггера?
или можно просто DestroyTrigger(t)?
либо делать периодический таймер, но в случае паузы вручную отлавливать натиканное время и потом это время докармливать другому периодическому таймеру чтобы он продолжил тикать с этого же места?
Ред. host_pi
» WarCraft 3 / как изменить время внутри таймерного периодического триггера?
это нужно было для радужного текста, в принципе он уже релизнут итак на этом решении
а какая есть альтернатива то?
Ред. host_pi
» WarCraft 3 / Радужный текст
- написать -name слово - навести мышку на синего
- написать -go - и над крестьянином и в F11 ник будет меняться, для мультибоарда должен тоже работать
функция и писалась как раз для подобных операций» WarCraft 3 / Радужный текст
» WarCraft 3 / Функция определения длины символа
Ред. host_pi
» WarCraft 3 / Функция определения длины символа
Ред. host_pi
» WarCraft 3 / как изменить время внутри таймерного периодического триггера?
во-вторых изменение времени в нём же не будет отличаться по сути от тригера? т.е. в таймере тоже надо заново его объявлять если надо сменить периодичность таймера, да?
Ред. host_pi
» WarCraft 3 / как изменить время внутри таймерного периодического триггера?
самописные ещё более заморочеголовые чем нативки
» WarCraft 3 / как заранее автоматически узнать кодировку каждого символа в строке?
Ред. host_pi
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
Ред. host_pi
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
первая определяет код цвета по игровой константе
вторая красит строку
Vanilla
Reforged
» WarCraft 3 / как обновить функцию внутри таймерного периодического триггера?
TriggerAddAction и TriggerRemoveAction - твой бро
TriggerClearActions - не твой бро
Ред. 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 / Возможно ли триггерно пришить юниту тип героя и аттрибуты? +Мемхак
либо через альтернативное отображение текста кем-нибудь самописное
книги может можно удалять когда негерой на них тыкнет, добавить анимацию подбора книги и писать свою систему статов (атаки) на глобалках для юнитов-негероев