XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DaeDR

offline
Опыт: 8,074
Активность:
ExecuteFunc и TriggerSleepAction
При вызове функции таким образом "ExecuteFunc" для нее создается отдельный стек/поток? Собственно, это и есть вопрос
Судя по экспериментам, то это так.
Если использовать ее таким образом (см. code), как это скажется на Варе?
» code
function B takes nothing returns nothing
	...
	call TriggerSleepAction(1.0)
	...
endfunction

function A takes nothing returns nothing
	call ExecuteFunc("B")
endfunction
Меня вдруг смутило название нативки: TriggerSleepAction.
Старый 08.09.2012, 17:42
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,494
Активность:
DaeDR, Вейт тормозит триггер а не поток, следовательно в отдельном потоке он работать недолжен, тк он не может сослаться на триггер который нужно остановить....
Старый 08.09.2012, 17:44
Doc

offline
Опыт: 63,163
Активность:
quq_CCCP, ахахаха :D
Еще чего расскажешь?
DaeDR, я тебе подскажу: ТЫ ПРОСТО БЕРЕШЬ И ТЕСТИШЬ.
Старый 08.09.2012, 17:48
DaeDR

offline
Опыт: 8,074
Активность:
quq_CCCP, В том то и дело, что все идеально работает! И никак не тормозит фукцию, в которой был задействован.
Напрмер, при переборе группы можно навешать эффект на каждого и вызвать через ExecuteFunc удаление с задержкой. И это сработает
Сколько пользуюсь, только сейчас решил проверить, что же происходит на самом деле
DaeDR добавил:
Doc, Чем я и занимаюсь, но вдруг кто-то знает данную "фичу" изнутри.
Старый 08.09.2012, 17:50
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,494
Активность:
DaeDR, странно, вейт работает только в триггере а в таймере или группе уже нет, хотя там тоже создаётся отдельный поток...
Старый 08.09.2012, 17:52
Doc

offline
Опыт: 63,163
Активность:
quq_CCCP, ой фантезееер!
В группе никакого потока не создается.
DaeDR, разумеется создается отдельный поток и все работает в нем, это кучу раз обсуждалось. Но слип лучше не использовать все равно, т.к. - есть неточности в отсчете времени, он работает на паузе, у него есть минимальный период.
Старый 08.09.2012, 17:55
DaeDR

offline
Опыт: 8,074
Активность:
Doc, Если это:
есть неточности в отсчете времени, он работает на паузе, у него есть минимальный период.
ну еще и то, что он может просто не сработать... хм. Для моих целей сойдет.
Сейчас тестирую на удаление огромного кол-ва эффектов через ExecuteFunc.
Старый 08.09.2012, 18:04
Doc

offline
Опыт: 63,163
Активность:
DaeDR, зачем? Гораздо производительнее и продуктивнее эффекты пихать в массив и делать все на одном таймере.
Старый 08.09.2012, 18:11
ScorpioT1000
Работаем
offline
Опыт: отключен
всё там нормально, я сам это юзаю иногда, но не там где надо что-то с малым периодом делать. тоесть, если например просто подождать и удалить - вейт вполне работает
Старый 08.09.2012, 18:13
DaeDR

offline
Опыт: 8,074
Активность:
ScorpioT1000:
всё там нормально, я сам это юзаю иногда, но не там где надо что-то с малым периодом делать. тоесть, если например просто подождать и удалить - вейт вполне работает
Вот то что я и хотел услышать.
Всем спасибо, можно закрывать.
Старый 08.09.2012, 18:20
Doc

offline
Опыт: 63,163
Активность:
Можно, но неправильно. Это как использование deprecated методов. Они работают - но использовать их не рекомендуют.
Старый 08.09.2012, 18:23
ScorpioT1000
Работаем
offline
Опыт: отключен
Doc,
void PanCameraObject(camerasetup object, real duration, boolean waitFunc) {
    SwitchAutoCam(true)
    TimerStart(PanAutoCam_timer,duration,false,function OffAfterPan)
    if (GetLocalPlayer() == Player(0)) {
        CameraSetupApplyForceDuration(object, true, duration)
    }
    if(waitFunc) {
        TriggerSleepAction(duration)
    }
}
Старый 08.09.2012, 18:56
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 19:14.