function ColorPlayerClassic takes string s, integer i returns string
if 1==0 then
elseif i==1 then
return Color00PlayerRedClassic(s)
elseif i==2 then
return Color01PlayerBlueClassic(s)
elseif i==3 then
return Color02PlayerCyanClassic(s)
elseif i==4 then
return Color03PlayerPurpleClassic(s)
elseif i==5 then
return Color04PlayerYellowClassic(s)
elseif i==6 then
return Color05PlayerOrangeClassic(s)
elseif i==7 then
return Color06PlayerGreenClassic(s)
elseif i==8 then
return Color07PlayerPinkClassic(s)
elseif i==9 then
return Color08PlayerLightGrayClassic(s)
elseif i==10 then
return Color09PlayerLightBlueClassic(s)
elseif i==11 then
return Color10PlayerAquaClassic(s)
elseif i==12 then
return Color11PlayerBrownClassic(s)
endif
return null
endfunction
Reforged
Код
function ColorPlayerReforged takes string s, integer i returns string
if 1==0 then
elseif i==1 then
return Color00PlayerRedReforged(s)
elseif i==2 then
return Color01PlayerBlueReforged(s)
elseif i==3 then
return Color02PlayerCyanReforged(s)
elseif i==4 then
return Color03PlayerPurpleReforged(s)
elseif i==5 then
return Color04PlayerYellowReforged(s)
elseif i==6 then
return Color05PlayerOrangeReforged(s)
elseif i==7 then
return Color06PlayerGreenReforged(s)
elseif i==8 then
return Color07PlayerPinkReforged(s)
elseif i==9 then
return Color08PlayerLightGrayReforged(s)
elseif i==10 then
return Color09PlayerLightBlueReforged(s)
elseif i==11 then
return Color10PlayerAquaReforged(s)
elseif i==12 then
return Color11PlayerBrownReforged(s)
elseif i==13 then
return Color12PlayerMaroonReforged(s)
elseif i==14 then
return Color13PlayerNavyReforged(s)
elseif i==15 then
return Color14PlayerTurquoiseReforged(s)
elseif i==16 then
return Color15PlayerVioletReforged(s)
elseif i==17 then
return Color16PlayerWheatReforged(s)
elseif i==18 then
return Color17PlayerPeachReforged(s)
elseif i==19 then
return Color18PlayerMintReforged(s)
elseif i==20 then
return Color19PlayerLavenderReforged(s)
elseif i==21 then
return Color20PlayerCoalReforged(s)
elseif i==22 then
return Color21PlayerSnowReforged(s)
elseif i==23 then
return Color22PlayerEmeraldReforged(s)
elseif i==24 then
return Color23PlayerPeanutReforged(s)
endif
return null
endfunction
function ColorPlayer takes string s, integer i returns string
if 1==0 then
elseif i==1 then
return ColorPlayerRed(s)
elseif i==2 then
return ColorPlayerBlue(s)
elseif i==3 then
return ColorPlayerCyan(s)
elseif i==4 then
return ColorPlayerPurple(s)
elseif i==5 then
return ColorPlayerYellow(s)
elseif i==6 then
return ColorPlayerOrange(s)
elseif i==7 then
return ColorPlayerGreen(s)
elseif i==8 then
return ColorPlayerPink(s)
elseif i==9 then
return ColorPlayerLightGray(s)
elseif i==10 then
return ColorPlayerLightBlue(s)
elseif i==11 then
return ColorPlayerAqua(s)
elseif i==12 then
return ColorPlayerBrown(s)
endif
return null
endfunction
elseif SubString(s,0,3)=="-s " then
if S2R(SubString(s,3,999))>0 and S2R(SubString(s,3,999))<101 then
set Dancer_speed=S2R(SubString(s,3,999))
call DisableTrigger(Dancer_t)
call TriggerRemoveAction(Dancer_t, Dancer_Act0)
set Dancer_t=CreateTrigger()
call TriggerRegisterTimerEvent(Dancer_t,Dancer_speed,true)
set Dancer_Act0=TriggerAddAction(Dancer_t,function Dancer_Main)
endif
на это
elseif SubString(s,0,3)=="-s " then
if S2R(SubString(s,3,999))>0 and S2R(SubString(s,3,999))<101 then
set Dancer_speed=S2R(SubString(s,3,999))
call DisableTrigger(Dancer_t)
call TriggerRemoveAction(Dancer_t, Dancer_Act0)
call DestroyTrigger(Dancer_t)
set Dancer_t=null
set Dancer_Act0=null
set Dancer_t=CreateTrigger()
call TriggerRegisterTimerEvent(Dancer_t,Dancer_speed,true)
set Dancer_Act0=TriggerAddAction(Dancer_t,function Dancer_Main)
endif
короче
второе решение на таймере примерно такое - через непериодический но с перезапуском и возможностью запаузить:
сам код не напишешь - никто не напишет
function Main takes nothing returns nothing
local timer t = CreateTimer()
call DestroyTimer(GetExpiredTimer())
//Actions
if pause==0 then
call TimerStart(t, time, false, function Main)
endif
set t = null
endfunction
function time_main takes nothing returns nothing
set time=2
endfunction
function pause_main takes nothing returns nothing
set pause=1
endfunction
НО
это решение оплимитно
поэтому нормальное решение только одно и оно в шапке
либо садить этот таймер на отдельный оплимито-обходный триггер и всем говорить, что это решение на таймере
LastUchiha: О господи, библиотеки и структуры, а полегче никак нельзя? Не обязательно что-бы мудрёно как то было.
по меркам варика это не такой большой код, всего 200 строк
это тебе не 2000 строк только для одной поддержки синхронизации
по сути у тебя выбора то нету, можешь сам написать
в принципе это не сложно делается:
если отследить применение абилки тригером - такое возможно?
то просто в цикл загоняешь
снимаешь координаты ГЕРОЕВ или ЮНИТОВ + StopSound() + StartSound() для тех, кто проходит по условиям
это на 20 строк пишется
LastUchiha: что-бы он воспроизвелся для всех тех у кого в радиусе обзора применяющий игрок
а если ты хочешь, чтобы учитывалось не по положению юнитов, а именно по текущим координатам камеры игрока - то добро пожаловать в дебри синхронизации по 2000 строк, либо вкатывайся в JN или reforged
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
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
Ред. host_pi
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
Vanilla
Reforged
» Администрация XGM / где кнопка создать подпроект?
» Администрация XGM / где кнопка создать подпроект?
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
» WarCraft 3 / Радужный текст
Ред. host_pi
» WarCraft 3 / как изменить время внутри таймерного периодического триггера?
второе решение на таймере примерно такое - через непериодический но с перезапуском и возможностью запаузить:
сам код не напишешь - никто не напишет
это решение оплимитно
поэтому нормальное решение только одно и оно в шапке
либо садить этот таймер на отдельный оплимито-обходный триггер и всем говорить, что это решение на таймере
Ред. host_pi
» WarCraft 3 / Внеочередная ошибка при запуске карты
» WarCraft 3 / Как сделать звук который будет слышен в поле зрения игрока? World Editor
Ред. host_pi
» WarCraft 3 / Одновременный краш у всех игроков
а то ты не туда пишешь так то
пиши близам в сапорт калифорнию, что у них платный продукт критует
Ред. host_pi
» WarCraft 3 / Как сделать звук который будет слышен в поле зрения игрока? World Editor
это тебе не 2000 строк только для одной поддержки синхронизации
по сути у тебя выбора то нету, можешь сам написать
если отследить применение абилки тригером - такое возможно?
то просто в цикл загоняешь
снимаешь координаты ГЕРОЕВ или ЮНИТОВ + StopSound() + StartSound() для тех, кто проходит по условиям
это на 20 строк пишется
Ред. host_pi
» WarCraft 3 / как изменить время внутри таймерного периодического триггера?
или можно просто DestroyTrigger(t)?
либо делать периодический таймер, но в случае паузы вручную отлавливать натиканное время и потом это время докармливать другому периодическому таймеру чтобы он продолжил тикать с этого же места?
Ред. host_pi
» WarCraft 3 / как изменить время внутри таймерного периодического триггера?
это нужно было для радужного текста, в принципе он уже релизнут итак на этом решении
а какая есть альтернатива то?
Ред. host_pi
» WarCraft 3 / Радужный текст
» 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 - не твой бро