<aside> 💡 TLDR: Кликнуть лопатой “Сценарист” по воздуху, открыть вкладку 3 и добавить новый вызов трансляции из шаблона. Нужны логины игроков!

</aside>

Cодержание

— ссылка на список всех с Мировой Волной

<aside> 🚧 Периодически, нужно очищать вкладку 3 от использованных трансляций. Поэтому нужно вести их учет в и писать в

</aside>


Для ГМов

Предусловия

Чтобы настроить НПЦ, у вас должен быть.

  1. Готовая стартовая точка диалога и ее ID. Смотреть вот тут

    Untitled

    1. Дальше диалог может делать все то, что обычный диалог: исполнять команды, делать Проверка уровня навыка в диалоге, и так далее.
    2. Что диалог не может делать:
      1. Показывать модель NPC слева.
      2. (Баг CNPC) Показывать окошки завершенных квестов и завершать квест.
      3. Использовать Броски на навык в диалоге как в Диско Элизиуме
  2. Хорошее настроение

  3. Список логинов персонажей, которым нужно транслировать, в формате “Login”, “Login2”, “LoginN”

Использование

  1. Тыкаете в воздух предметом “Сценарист” (коричневая лопата)
  2. Выбираете Players
  3. Открываете вкладку 3 и вставляете свой вызов из шаблона.
broadcast (
        175, //id диалога чтобы показать
        "§e[Мировая волна]§r", //имя НПЦ от которого ведется диалог
        //список логинов игроков
        ["W_Maryjo", "Baron"],
        "once", //"once" - однажды, "always" - каждый логин
        event //не трогать
        )
  1. Готово! При логине, игроку откроется ваш диалог


Для разработчиков

cnpcs-scripting-examples/broadCast.js at main · sithamet/cnpcs-scripting-examples

Вкладка 3 хостит в себе функцию для трансляций. Дублировать ее не нужно.

/**
 * Broadcasts the dialog to the list of players on login.
 * Right-click with Scrip showel on air and click "Player" to use
 * @param event LoginEvent(IPlayer player)
 */
function login(event) {

    broadcast (
        175, //id диалога чтобы показать
        "§e[Мировая волна]§r", //имя НПЦ от которого ведется диалог
        //список логинов игроков
        ["W_Maryjo", "Baron"],
        "once", //"once" - однажды, "always" - каждый логин
        event //не трогать
        )

}

function broadcast(dialogID, actor, targets,  regularity, event) {
    var PLAYER = event.player;

    var canShow;

    if (regularity === "once") {
        canShow = !PLAYER.hasReadDialog(dialogID);
    } else if (regularity === "always") {
        canShow = true;
    }

    for (var i = 0; i < targets.length; i++) {
        if (targets[i] == PLAYER.name && canShow) {
            PLAYER.showDialog(dialogID, actor);
        }
    }
}