Перейти к основному содержимому

♊ Асинхронные действия

Действия в несколько потоков

async (или же Асинхронное действие) - Запускает часть скрипта независимо от основной части скрипта.

  • Как Вы знаете, весь скрипт работает последовательно (условно, пока НИП не дойдёт до указанных координат, скрипт дальше не продолжит следующие действия). Если же нужно чтобы некоторые участки скрипта работали одновременно, то Вы можете использовать метод async { ... }, добавив в фигурных скобках ваши действия, которые будут запущены не зависимо от основной части скрипта.

Схема работы:

Пример правильного использования метода:

async {
npc moveTo { pos(135, 67, 345) }
}
wait { 5.sec }
npc say{"Привет Андрей!"}

НИП начнёт идти к указанной точке, но уже через 5 секунд после начала напишет сообщение в чат и продолжит идти к точке. Если же не использовать в данном случае async { ... }, то тогда нпс сначала дойдёт до координат, потом подождёт 5 секунд и лишь после этого напишет сообщение в чат.

Примечание: Не рекомендуется делать похожие действия в разных async и основном скрипте. Например, не стоит давать НИПу две задачи, идти к разным точкам одновременно...


Примеры

-
async{ // Запустить простой async
npc moveTo{...}
...
}
// или же
val looks = async{ // Привязать async к переменной и запустить
npc lookAt{...}
...
}
...

look.stop() // Остановить работу привязанного async
...
look.resume() // Восстановить работу привязанного async