Это заготовка статьи.
Вы можете помочь проекту, дополнив и оформив её.
|
Основная информация
Ввиду того, что в версии мода 1.9.0 (beta) Noppes создал Скриптовый блок и Скрипровую дверь, а грамотно работающий Сценарист существует с версии 1.7.10, нельзя упускать тот факт, что мод становится всесторонним. Через скрипты можно заставить любого NPC быть кем угодно и заставить делать что угодно, а также при использовании мировых и серверных скриптов и команд, можно осуществить жанр любой известной вам игры, или создать собственный. Прошу всех кто, хоть немного разбирается в этом — выкладывать в эту статью рабочие примеры использования любых скриптов с необходимыми скриншотами и обязательно заливать карту с этим примером и указанием версии мода для этой карты. А также указывать язык программирования на котором написан ваш скрипт.
Англ. форум на эту тему. Все ваши вопросы, касательно скриптования, вы можете задать разработчику и другим пользователям тут (DiscordApp)
Для начала, вот вам файлы для, того чтобы использовать программирование скриптов в моде. Просто закидывайте к себе в папку Mods тот файл, на котором вы писать умеете:
А также держите учебники на JavaScript изучение:
(очень рекомендую в начале подучиться на HTML)
- И маленькая помощь — ID в текстовом виде на ваниль
- Ссылка на функции, команд и классов. На выбор вашей верссии мода.
Простой пример скрипта на приветствие игрока
- Версия MineCraft = 1.10.2
- Язык программирования = ECMAScript
Задача: Игрок подходит к NPC, нажимает на него ПКМ, а NPC отвечает ему: «Привет (игрок)», где (игрок) — имя игрока.
Эта задача является аналогом кнопки «Interact Lines»
Решение: Берём сценарист в руки, подходим к нужному NPC. Жмём на него ПКМ. Откроется основное окно. Проверьте, что у вас стоит язык ECMAScript и то, что он Включён:
Далее нажимает на Вкладку "+". Появится вкладка "1". Теперь вводим следующий текст:
function interact(event) {event.npc.say("Привет, @p");}
Выглядеть должно всё примерно так:
И закрываем окно сценариев на Esc. Вот и всё наша задача будет выполнена и NPC заговорит!
Функции
Взято и переведено с сайта разработчика.
NPC
Function | Описание, когда вызывается: |
---|---|
init | — если NPC появляется/спаунится/обновляется в игровом мире. |
tick | — каждые 10 тактов (~0,5 секунд). |
interact | — если игрок нажимает ПКМ на NPC. |
dialog | — если игрок начинает диалог с NPC (открывает диалоговое окно). |
dialogOption | — если игрок отвечает на диалог с NPC (даёт ответ). |
dialogClose | — если игрок закрывает диалог с NPC (закрывается диалоговое окно). |
damaged | — если NPC кто-то атаковал (потеряет здоровье). |
died | — если NPC умирает. |
meleeAttack | — если NPC наносит кому-нибудь урон с руки (удары оружием или рукой). |
rangedLaunched | — если NPC наносит кому-нибудь огнестрельный урон (луки, пистолеты, посохи). |
target | — если NPC видит цель (цель для атаки, или атакующего). |
targetLost | — если NPC теряет цель (цель для атаки, или атакующего). |
kill | — если NPC кого-нибудь убивает. |
role | — если игрок открывает окно роли NPC. |
collide | — если NPC с кем-нибудь сталкивается (или кто-то с ним) |
timer | — если таймер закончил свою работу. |
Скриптовый блок и Скриптовая дверь
Function | Описание, когда вызывается: |
---|---|
init | — если блок/дверь появляется/спаунится/обновляется в игровом мире. |
tick | — каждые 10 тактов (~0,5 секунд). |
interact | — если игрок нажимает ПКМ на блок/дверь. |
redstone | — если блок/дверь получает сигнал красного камня. |
fallenUpon | — если игрок/моб/NPC падают на верхнюю сторону блока/двери. |
doorToggle | — при открывании/закрывании скриптовой двери. |
broken | — если блок/дверь будут разрушены/сломаны любым способом. |
exploded | — если блок/дверь будут взорваны. |
rainFilled | — если в игровом мире идёт дождь. |
neighborChanged | — при изменении соседних блоков (замена/разрушение/удаление). |
clicked | — если игрок нажимает ЛКМ на блок/дверь. |
harvested | — если блок/дверь будут разрушены/сломаны игроком. |
collide | — если игрок/моб/NPC сталкиваются с блоком/дверью. |
timer | — если таймер закончил свою работу. |
Игрок
Function | Описание, когда вызывается: |
---|---|
init | — если игрок появляется/спаунится/обновляется в игровом мире. |
tick | — каждые 10 тактов (~0,5 секунд). |
interact | — если игрок нажимает ПКМ на что или кого-либо. |
broken | — если игрок разрушает блок. |
toss | — если игрок выбрасывает предмет/блок из инвентаря на землю. |
pickedUp | — если игрок поднимает дроп (предмет/блок) с земли. |
containerOpen | — если игрок открывает контейнер (любой блок/техника имеющая внутренний инвентарь, сундуки/печи/ящики) |
containerClosed | — если игрок закрывает контейнер (любой блок/техника имеющая внутренний инвентарь, сундуки/печи/ящики) |
died | — если игрок умирает |
attack | — если игрок атакует кого-нибудь. |
kill | — если игрок убивает кого-нибудь. |
damaged | — если игрок наносит урон кому-нибудь (иногда, когда нажимает ЛКМ на что или кого-либо). |
timer | — если таймер закончил свою работу. |
login | — если игрок поключается к игре/заходит на карту. |
logout | — если игрок отключается от игры/выходит с карты. |
chat | — если игрок отправил сообщение в чат. |
factionUpdate | — если у игрока изменяются очки фракции. |
dialog | — если игрок начинает диалог с NPC (открывает диалоговое окно). |
dialogOption | — если игрок отвечает на диалог с NPC (даёт ответ). |
dialogClose | — если игрок закрывает диалог с NPC (закрывается диалоговое окно). |
Функции Скриптового предмета
Function | Описание, когда вызывается: |
---|---|
init | — если предмет появляется/спаунится/обновляется в игровом мире. |
tick | — каждые 10 тактов (~0,5 секунд). |
interact | — если игрок нажимает ПКМ на что или кого-либо с предметом в руке. |
attack | — если игрок/NPC/моб атакуют кого-либо с предметом в руке (ЛКМ). |
toss | — если предмет дропнут/брошен на землю. |
spawn | — если предмет появляется в игровом мире. |
pickedUp | — если игрок поднимет/заберёт предмет с земли. |
Функции Скриптовый снаряд
Function | Описание, когда вызывается: |
---|---|
projectileTick | — каждые 10 тактов (~0,5 секунд). |
projectileImpact | — когда снаряд врезался в что или кого-нибудь. |
Классы/Пакеты
NPC
IAnimal, ICustomNpc, IEntity, IEntityItem, IEntityLiving, IEntityLivingBase, IEntityProjectile, IMonster, IPixelmon, IPlayer
Скриптовый блок и Скриптовая дверь
IBlock, IBlockFluidContainer, IBlockScripted, IBlockScriptedDoor
Игрок
IAnimal, ICustomNpc, IEntity, IEntityItem, IEntityLiving, IEntityLivingBase, IEntityProjectile, IMonster, IPixelmon, IPlayer
Скриптовый предмет
IItemScripted, IItemStack