21

» WarCraft 3 / Таймер вместо вейт

function WAIT_EX takes real s returns nothing
local timer t = CreateTimer()
call TimerStart(t,s,false,null)
loop
call TriggerSleepAction(s)
exitwhen TimerGetRemaining(t) == 0.
endloop
call DestroyTimer(t)
set t = null
endfunction
МрачныйВорон:
SсRealm, все что щас делаешь немного глупо. Лишняя работа.
вэйт немного дольше работает, чем таймер. Пример, таймер в 0.00 сек моментально срабатывает, а вэйт в 0.00 сек заметно дольше кажется 1 сек ушла у него. Может эти вещи не очевидны, но в некоторые моментах заметно. Не могу просто вспомнить хорошие примеры. Только с приказом, и то дурацкий метод. Пример, когда нужно было отменить приказ:
  • с вэйтом от полученного юнит успевает повернуться.
  • с таймером юнит уже стоит, будто и не получал приказ.
А вспомнил, короче нужно спрятать иконку сразу же, но при событии он не сразу создается. Пример юнит начал строительство, здания еще как бы не существует. Поэтому делаем задержку. Вообще во многих событиях происходят так: нас уведомляют что произойдет. Ну вот мне нужно спрятать иконку:
  • вэйт с 0.00 сек - видно на на доле секунд иконку прежде чем исчезает. это как-то не красиво.
  • с таймером 0.00 сек - я вообще ничего не вижу. что вообще то хорошо
видна же разница.
Но не хочу говорить что вэйт плохой. И прочее. Он может быть и полезным. К примеру задержку между приказами. Пример продажа всех итемов с инвентаря в магазин. Там можно замутить авто-продажу. Продажа происходит мгновенная, но чтобы выполнить все приказы нужна задержка. Можно было и на таймер, но код длиннее был бы
function WAIT_EX takes real s returns nothing
А вот этот код нельзя на custom script записать, а то я е пойму как мне выйти на этот таймер?
local timer t = CreateTimer()
call TimerStart(t,s,false,null)
loop
call TriggerSleepAction(s)
exitwhen TimerGetRemaining(t) == 0.
endloop
call DestroyTimer(t)
set t = null
endfunction

У меня call WAIT_EX( 20. ) не работает(
21

» WarCraft 3 / Таймер вместо вейт

Extremator:
SсRealm:
То есть я пишу этот код и вейты больше не глючат?
Нет)) это так не работает.
Если ты хотя бы немного понимаешь как работает Jass, то просто используй это вместо вэйта.
Вот так. В данном случае 10. это 10 секунд.

SсRealm:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Extremator:
SсRealm:
То есть я пишу этот код и вейты больше не глючат?
Нет)) это так не работает.
Если ты хотя бы немного понимаешь как работает Jass, то просто используй это вместо вэйта.
Вот так. В данном случае 10. это 10 секунд.

SсRealm:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Extremator:
SсRealm:
То есть я пишу этот код и вейты больше не глючат?
Нет)) это так не работает.
Если ты хотя бы немного понимаешь как работает Jass, то просто используй это вместо вэйта.
Вот так. В данном случае 10. это 10 секунд.

SсRealm:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Extremator:
SсRealm:
То есть я пишу этот код и вейты больше не глючат?
Нет)) это так не работает.
Если ты хотя бы немного понимаешь как работает Jass, то просто используй это вместо вэйта.
Вот так. В данном случае 10. это 10 секунд.

SсRealm:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Extremator:
SсRealm:
То есть я пишу этот код и вейты больше не глючат?
Нет)) это так не работает.
Если ты хотя бы немного понимаешь как работает Jass, то просто используй это вместо вэйта.
Вот так. В данном случае 10. это 10 секунд.

SсRealm:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
От души! просто заменю все старые триггреные вейты на костом скрипт!)))
21

» WarCraft 3 / Таймер вместо вейт

Слухайте, че!Я тут конечно дико извиняюсь, что лезу со своей триггерной мордой, но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
И все. Тоесть для коротких и быстрых периодов это не годится, но раз уж вейт такой глючный!
Я могу и на локалках попробовать через custom script )))
Почему нет?!😊

Extremator:
SсRealm:
Варик может тупануть.
Не может. У всего происходящего есть своя последовательность. Затереть юнита инициировавшего ивент не так уж и просто, но способы есть. В основном все проблемы с потерей такого юнита сводятся к тому что сам вэйт ни при чём, а всему виной каша идущая до/после.
По поводу вэйта - если уж не нравится стандартный, то как вариант, сварганить и юзать что-то на подобии этого:
function WAIT_EX takes real s returns nothing
	local timer t = CreateTimer()
	call TimerStart(t,s,false,null)
	loop
		call TriggerSleepAction(s)
		exitwhen TimerGetRemaining(t) == 0.
	endloop
	call DestroyTimer(t)
	set t = null
endfunction
Это означает,что каждый раз когда я использую вейт, включается таймер равный этому вейту?
То есть я пишу этот код и вейты больше не глючат?
21

» WarCraft 3 / Таймер вместо вейт

Bergi_Bear:
Рефордж я показывал просто для примера, на сколько там просто и не нужна никакие заморочки. Паузить и уничтожать одноразовый таймер, это обязательно иначе будет небольшая утечка в памяти (ибо это древний баг варкрафта), если таймер периодический, то разумеется его тоже надо будет остановить, дабы он не болтался без дела
А Почему событие таймер истекает не срабатывает?
21

» WarCraft 3 / Таймер вместо вейт

С ранних лет невзлюбил понятие "триггеный юнит" то есть тот, отношении которого подпадает действие конкретного триггера, а вариантов могутт быть миллионы. Варик может тупануть. Поэтому стараюсь конкретно использовать глобалку типтбоевая единица с его именем ваня там, маша, пися.
Центр области , приходться, хотя опять же говорили утечна область и лучше конкретно к какому то предмету идти или зданию.
Спасибо тебе, бергибир, только что я из того спообен понять?
Ну, щас сяду и попробую накидать вот это вот все в custom script, скорее всего работать не будет и я без понятия, зачем паузить запущеный таймер?! Как он посчитает, сколько времени мне нужно подождать?
Итог: это разбираться, зачем нужна хеш таблица и на примере ткакого нибудь заклинания где я уже видел таймер с хэшем , Как он отсрачивает события вместо вейта.
Опять же рефордж отдаютт аутсорсерам и может он ещё вернётся. Там видно будет, а пока только так
21

» WarCraft 3 / Варик не успевает считать

Появление через вэйт. Однако счетчик записывает количество в переменную заблаговременно)

Hanabishi:
Проблема в твоих алгоритмах. В игре не может быть такого как "не успеть". А также вся логика игры строго однопоточная, все события происходят сторого последовательно и конкуретных ситуаций быть не может.
Не однократно замечал за вариком, когда не успевает. Возможно виной тому Гуи и глобальные, потому что триггерщик я конченый.
Типичная ситуация когда нужно подменить героя убрать одного, а поставить на его место другого. Первого убивают, второй просто не успевает подмениться.
Даю и забираю триггерно предмет: опять же нужно сделать неуязвивым, поставит на паузу, дать предмет, потом повторить в обратную сторону
21

» WarCraft 3 / Изменение цвета иллюзий

Единственное, что приходит в голову это создать способность пустышку, потом навесить эффектов и призывать даммиков
21

» WarCraft 3 / Наложение Таймеров

biridius:
SсRealm, в триггере у Ивана таймер какой? последний запущенный? дай скрин
Еще там в триггере китайца почему переменная от Ивана?
Так, все . С китайцем Иваном я разобрался. Как минимум у одного игрока может быть только один герой и отображение таймера воскрешения я решил. Но по прежнему идет наложение таймеров воскршения и ожидания волны(((
21

» WarCraft 3 / Наложение Таймеров

biridius:
SсRealm, ну если это последний запущенный, то это вполне может быть какой-то левый таймер из другого триггера.
Попробуй просто поставить туда свою переменную. Гуи триггеры автоматичски создают объект таймера в начале игры для каждой переменной. То есть переменная IvanTimer это уже готовый таймер который можно запускать.
Чушь! Создал отдельный таймер с отдельным окном для героя китайца и он все равно синхронизируется с Героем Ванькой, и с таймером отсчета,хотя при этом вообще у нег должен отображаться owner Китаец игроку другого цвета. Бредятина какая то!
Загруженные файлы
21

» WarCraft 3 / Наложение Таймеров

biridius:
Обратный отчет - start (Last Started Timer)...
Почему используется "последний запущенный таймер" а не какой-то отдельный из переменной?
А как ты собрался создать? Сначало последний запущеный, потом он он схраняется в переменную и уже через переменную используется.
Еще есть вариант сделать бы это все через локалки, но я понятие не имею, как называется окно и таймер в локальных(((
21

» WarCraft 3 / Наложение Таймеров

rsfghd:
А разве это не из-за того, что ты свернул игру? Ты переходил в полноэкранный режим?
у меня из-за маленького монитора не всё вмещалось :с
Ты вообще не понял! У меня оба окна срабатывают одновременно!
21

» WarCraft 3 / Наложение Таймеров

вот для отсчета волны, он сам по себе работает и даже исчезает ( скрыть там с отдельного триггера_)

Воскрешение для героя.Ваш ненавистный "wait" к делу не относится. В варианте А создается логическая "Да", когда умирает впервые и Нет все последующие разы. Это чтобы не создавать по сто раз а просто скрывать и показывать окно заново.
Все по отдельности прекрасно работает, но вместе они накладываются
21

» WarCraft 3 / Еще одна глупая идея про оптимизацию

Bergi_Bear:
у тебя при сейве карты в редакторе формируется war3map3.j который уже содержит в себе весь конверт триггеров. И никакой конвертации не происходит
Кстати, вчера обнаружил на хайве карты кроме луа и джасс с пометкой wurst это новый язык программирования?( Что за колбаса такая?)
21

» WarCraft 3 / Еще одна глупая идея про оптимизацию

Vlod:
Триггеры предназначены для удобства разработки, если вам удобно разрабатывать на jass, переводите в jass. Существенного значения это не оказывает
Я не о том.
Любой триггер переводится в джасс перед активации карты. А если перед самой активацие карты перевести в джасс текстом, то фунция перевода в триггер удаляется из кода?

Bergi_Bear:
SсRealm, никак не поможет, переходи на луа
ты ж в юнити уходил, с возвращением
Слишком сложно. В юнити ,если сделал беги отдельно работаешь над прыжками и прыжок написан криво, то не работает уже не прыжок ни ходьба. И так со всем. Кроме того я ни одной строчки кода не понимаю:-(
21

» WarCraft 3 / Про оптимизацию

PT153:
Сначала нужно понять, что именно лагает, а уже потом менять.

Имеет ли смысл выключать триггер героя, который не выбран, отразится ли это положительно на производительности?
Нужно делать наоборот, включать, когда герой есть. А по умолчанию должно быть всё отключено.
Спасибо, это мысль!😉👍
21

» Unity / Поповоду перемещения

Все. Спасибо. Двигется. Только управление очень тугое и с энрцией(
21

» Unity / Поповоду перемещения

N7 Molot:
да заметил
я monobehaviour удалил нечаяно, как его правильно написать снова?
21

» Unity / Поповоду перемещения

N7 Molot:
Поищи базовые уроки по unity, проще будет
Я кучу скриптов пробовал, у меня ни один не работает. Везде старая инфа

SсRealm:
Нашел speed поставил 1 но он все равно не ходит!
Загруженные файлы
21

» Unity / Поповоду перемещения

N7 Molot:
нет, нажми на свой объект, в инспекторе нажми треугольник возле скрипта, там будет поле
Не понимаю

Нет никакого трегольника
Загруженные файлы
21

» Unity / Поповоду перемещения

N7 Molot:
да не в редакторе скриптов, а редакторе unity
Что именно открывать?
21

» Unity / Поповоду перемещения

N7 Molot:
свой скрипт раскрой и дай скрин, если в поле speed стоит 0, поставь, хот бы 1
Там цифр вообще нет
Загруженные файлы