Уже пять лет задаю вопросы и ответы здесь, как моя личная записная книжка по редактору варика. Спасибо вам, люди)

Все постоянно ругают вейт, даже как то кто то кидал мне наработку, чтобы вейт не глючил, только наработка не работает.
Все твердят заменять таймером, как я понял, это то же самый таймер что только на локалках и без окна? Если вас хватит скиньте пример такого таймера, если возможно без использования хэш таблицы( я не понимаю ее смысл)
Буду заменять вейты))

Принятый ответ

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

SсRealm:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
26
3 года назад
0
Bergi_Bear, щас бы в коде использовать бж функции лол
0
20
3 года назад
0
С ранних лет невзлюбил понятие "триггеный юнит" то есть тот, отношении которого подпадает действие конкретного триггера, а вариантов могутт быть миллионы. Варик может тупануть. Поэтому стараюсь конкретно использовать глобалку типтбоевая единица с его именем ваня там, маша, пися.
Центр области , приходться, хотя опять же говорили утечна область и лучше конкретно к какому то предмету идти или зданию.
Спасибо тебе, бергибир, только что я из того спообен понять?
Ну, щас сяду и попробую накидать вот это вот все в custom script, скорее всего работать не будет и я без понятия, зачем паузить запущеный таймер?! Как он посчитает, сколько времени мне нужно подождать?
Итог: это разбираться, зачем нужна хеш таблица и на примере ткакого нибудь заклинания где я уже видел таймер с хэшем , Как он отсрачивает события вместо вейта.
Опять же рефордж отдаютт аутсорсерам и может он ещё вернётся. Там видно будет, а пока только так
1
32
3 года назад
1
Рефордж я показывал просто для примера, на сколько там просто и не нужна никакие заморочки. Паузить и уничтожать одноразовый таймер, это обязательно иначе будет небольшая утечка в памяти (ибо это древний баг варкрафта), если таймер периодический, то разумеется его тоже надо будет остановить, дабы он не болтался без дела
0
20
3 года назад
0
Bergi_Bear:
Рефордж я показывал просто для примера, на сколько там просто и не нужна никакие заморочки. Паузить и уничтожать одноразовый таймер, это обязательно иначе будет небольшая утечка в памяти (ибо это древний баг варкрафта), если таймер периодический, то разумеется его тоже надо будет остановить, дабы он не болтался без дела
А Почему событие таймер истекает не срабатывает?
0
27
3 года назад
0
Та го помогу с джассом что-ли
пройдёмся по основам и дальше сам разберёшься
2
32
3 года назад
2
ты видишь что то у меня тут подобное?
давай ещё раз
вот это строчкой мы создаём таймер, тут понятно?
local timer t = CreateTimer()
Таймер сидит в локальной переменной t больше тут ничего нет
Вот вторая строчка
call TimerStart( t, 2, false, function myTimer) 
call - вызвать фунцию TimerStart
t, 2, false, function myTimer - это её параметры, или же аргументы
где
t - таймер который мы создали
2 - время в секундах через которое он отработает
false - таймер одноразовый, там может быть ещё true - это периодический, всего 2 значения, это булева
function myTimer - непосредсвенно сама функция, оно же действие, которое произойдёт, когда пройдёт 2 секунды
и в неё нельзя ничего передать на чистом джасе, для этого и использовалась глобалка, чтобы работало и используются хештаблицы, чтобы посадить на хендл таймера например юнита, и каждый юнит будет привязан к своему таймеру. Опять же на lua не надо ничего этого делать вообще там просто из коробки работает, сразу как нужно. Собственно function myTimer takes nothing returns nothing это и есть гуишная функция "таймер истекает", до бишь это действие, которое произайдёт, когда время таймера tпришло.
Я уже одно и тоже говорю, просто если не понял, читай ещё несколько раз

rsfghd, ты должен был бороться со злом, а не примкнуть к нему
0
27
3 года назад
0
Bergi_Bear, вот за это я тебя и обожаю
0
26
3 года назад
Отредактирован Extremator
0
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
0
20
3 года назад
0
Слухайте, че!Я тут конечно дико извиняюсь, что лезу со своей триггерной мордой, но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
И все. Тоесть для коротких и быстрых периодов это не годится, но раз уж вейт такой глючный!
Я могу и на локалках попробовать через 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
Это означает,что каждый раз когда я использую вейт, включается таймер равный этому вейту?
То есть я пишу этот код и вейты больше не глючат?
0
26
3 года назад
Отредактирован Extremator
0
SсRealm:
То есть я пишу этот код и вейты больше не глючат?
Нет)) это так не работает.
Если ты хотя бы немного понимаешь как работает Jass, то просто используй это вместо вэйта.
Вот так. В данном случае 10. это 10 секунд.

SсRealm:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
Загруженные файлы
Принятый ответ
0
20
3 года назад
0
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:
но если вейты так глючны, то почему бы просто не сделать отчет на локалках или глобалках?
Ответ на твой вопрос - таймер.
Хочешь записывай его в локалку, а потом ищи что и с кем делать (на это надо записать).
Хочешь записывай его в глобалку, а потом ... точно так же ищи что и с кем делать.
От души! просто заменю все старые триггреные вейты на костом скрипт!)))
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.