Custom NPCs/Примеры скриптов

Материал из Minecraft Wiki
Перейти к: навигация, поиск
Это заготовка статьи. Вы можете помочь проекту, дополнив и оформив её.

Основная информация[править | править код]

Ввиду того, что в версии мода 1.9.0 (beta) Noppes создал Скриптовый блок и Скрипровую дверь, а грамотно работающий Сценарист существует с версии 1.7.10, нельзя упускать тот факт, что мод становится всесторонним. Через скрипты можно заставить любого NPC быть кем угодно и заставить делать что угодно, а так же при использовании мировых и серверных скриптов и команд, можно осуществить жанр любой известной вам игры, или создать собственный. Прошу всех кто, хоть немного разбирается в этом - выкладывать в эту статью рабочие примеры использования любых скриптов с необходимыми скриншотами и обязательно заливать карту с этим примером и указанием версии мода для этой карты. А так же указывать язык программирования на котором написан ваш скрипт.

Англ. форум на эту тему.

Для начала, вот вам файлы для, того чтобы использовать программирование скриптов в моде. Просто закидывайте к себе в папку Mods тот файл, на котором вы писать умеете:

ECMAScript
Python
Lua
Ruby
Php
Scala

А так же держите учебники на JavaScript изучение:

(очень рекомендую в начале подучиться на HTML)
Первый на англ. языке
Второй на англ. языке
Русский учебник
И маленькая помощь - ID в текстовом виде на ваниль
Ссылка на функции, команд и классов. На выбор вашей верссии мода.

Простой пример скрипта на приветствие игрока[править | править код]

  • Версия MineCraft = 1.10.2
  • Язык программирования = ECMAScript

Задача: Игрок подходит к NPC, нажимает на него ПКМ, а NPC отвечает ему: "Привет (игрок)", где (игрок) - имя игрока.

Эта задача является аналогом кнопки "Interact Lines"

Решение: Берём сценарист в руки, подходим к нужному NPC. Жмём на него ПКМ. Откроется основное окно. Проверьте, что у вас стоит язык ECMAScript и то, что он Включён:

Приме скрипта на ответ Общее.png

Далее нажимает на Вкладку "+". Появится вкладка "1". Теперь вводим следующий текст:

function interact(event) {event.npc.say("Привет, @p");}

Выглядеть должно всё примерно так:

Приме скрипта на ответ Вкладка.png

И закрываем окно сценариев на Esc. Вот и всё наша задача будет выполнена и NPC заговорит!

Функции[править | править код]

Взято и переведено с сайта разработчика.

NPC Зомби.png Паук.png Фермер житель.png[править | править код]

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 - если таймер закончил свою работу.

Скриптовый блок и Скриптовая дверь Скриптовый блок.png Скриптовая дверь.png[править | править код]

Function Описание, когда вызывается:
init - если блок/дверь появляется/спаунится/обновляется в игровом мире.
tick - каждые 10 тактов (~0,5 секунд).
interact - если игрок нажимает ПКМ на блок/дверь.
redstone - если блок/дверь получает сигнал красного камня.
fallenUpon - если игрок/моб/NPC падают на верхнюю сторону блока/двери.
doorToggle - при открывании/закрывании скриптовой двери.
broken - если блок/дверь будут разрушены/сломаны любым способом.
exploded - если блок/дверь будут взорваны.
rainFilled - если в игровом мире идёт дождь.
neighborChanged - при изменении соседних блоков (замена/разрушение/удаление).
clicked - если игрок нажимает ЛКМ на блок/дверь.
harvested - если блок/дверь будут разрушены/сломаны игроком.
collide - если игрок/моб/NPC сталкиваются с блоком/дверью.
timer - если таймер закончил свою работу.

Игрок Человек.png[править | править код]

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