Туториал Citizens ver. 2.0.7 (полностью)

  • Автор темы Автор темы Mpa3oTa
  • Дата начала Дата начала
Извиняюсь за тупой вопрос, а как привязать скрипт к НПС? Вот есть у меня НПС с названием lol как к нему привязать скрипт? :)
 
У меня такой вопрос, как будет выглядеть скрипт который будет телепортировать игрока на координаты за 4 алмаза на пять минут, а потом на спавн?
 
У меня такой вопрос, как будет выглядеть скрипт который будет телепортировать игрока на координаты за 4 алмаза на пять минут, а потом на спавн?
Ну, если в общем, то после взаимодействия с нпс запускается скрипт на телепорт на спавн, но с задержкой.
Если же тебе нужен сам код скрипта, могу выложить, но позже, часов через 8.
Вот пример скрипта:
В самом начале указываешь число алмазов и время (s - секунда, m - минута, h - час, d - сутки, w - неделя), а также координаты, по которым игрока будет телепортировать. Чтобы навесить скрипт на НПСа, выбираешь его и пишешь /npc assignment --set "Teleport"

Код:
"Teleport":
  type: assignment
  default constants:
    Число_алмазов: 4
    Задержка: 5m
    X: 100
    Y: 100
    Z: 100
  interact scripts:
  - 1 Телепорт
  actions:
    on assignment:
    - trigger name:click toggle:true
"Телепорт":
  Requirements:
    Mode: All
    List:
    - item diamond qty:<cons:Число_алмазов>
  type: interact
  steps:
    1:
      click trigger:
        script:
        - take item:diamond qty:<cons:Число_алмазов>
        - execute as_npc "tp <player.name> <cons:X> <cons:Y> <cons:Z>"
        - run "Телепорт на спавн" delay:<cons:Задержка>
"Телепорт на спавн":
  type: task
  script:
  - execute as_player "spawn"

Можно еще, конечно, сделать скрипт, когда игрок сам выбирает коорды, там будет чуть сложнее. Если надо будет, отпиши, накалякаю. Сейчас лень(
 
Ну, если в общем, то после взаимодействия с нпс запускается скрипт на телепорт на спавн, но с задержкой.
Если же тебе нужен сам код скрипта, могу выложить, но позже, часов через 8.
Вот пример скрипта:
В самом начале указываешь число алмазов и время (s - секунда, m - минута, h - час, d - сутки, w - неделя), а также координаты, по которым игрока будет телепортировать. Чтобы навесить скрипт на НПСа, выбираешь его и пишешь /npc assignment --set "Teleport"

Код:
"Teleport":
  type: assignment
  default constants:
    Число_алмазов: 4
    Задержка: 5m
    X: 100
    Y: 100
    Z: 100
  interact scripts:
  - 1 Телепорт
  actions:
    on assignment:
    - trigger name:click toggle:true
"Телепорт":
  Requirements:
    Mode: All
    List:
    - item diamond qty:<cons:Число_алмазов>
  type: interact
  steps:
    1:
      click trigger:
        script:
        - take item:diamond qty:<cons:Число_алмазов>
        - execute as_npc "tp <player.name> <cons:X> <cons:Y> <cons:Z>"
        - run "Телепорт на спавн" delay:<cons:Задержка>
"Телепорт на спавн":
  type: task
  script:
  - execute as_player "spawn"

Можно еще, конечно, сделать скрипт, когда игрок сам выбирает коорды, там будет чуть сложнее. Если надо будет, отпиши, накалякаю. Сейчас лень(

Спасибо! щас проверю, у меня просто есть npc и есть качалка на спавнерах, там запрещены команды, поэтому я хочу чтобы игрок на спавне кликал на npc и у него снималось 4 алмаза и телепортировало его на корды(то есть в качалку), а потом через 5 минут обратно на спавн. Мне щас главное понять суть написания этих скриптов... Как что пишется и так далее.
 
Спасибо! щас проверю, у меня просто есть npc и есть качалка на спавнерах, там запрещены команды, поэтому я хочу чтобы игрок на спавне кликал на npc и у него снималось 4 алмаза и телепортировало его на корды(то есть в качалку), а потом через 5 минут обратно на спавн. Мне щас главное понять суть написания этих скриптов... Как что пишется и так далее.
У моего скрипта есть один недостаток - если игрок выйдет из игры до телепорта на спавн и до его захода на сервер истечет срок действия таймера, то после захода его не тпанёт обратно...
По поводу изучения скриптов. На dev.bukkit.org и на Citizens wiki нет толкового гайда по Denizen.
Я в основном учился по двум сайтам. Но там надо дружить с английским хотя бы на базовом уровне:
1) https://docs.google.com/document/d/1ed3VvdcPNJxhm-YfhGVG6pTWPrC8Oj3pYhAhqvqkPdg/edit
Это, можно сказать, "Официальный" гайд. Все типы скриптов и основные "операторы" там описаны.
2) http://scripts.citizensnpcs.co/browse/all/mostLiked/1/200/
Здесь люди выкладывают свои скрипты. Разбираешь их по косточкам, изучаешь, учишься писать свои скрипты.
Я, когда только начал этим заниматься, взял оттуда пару готовых скриптов и частично их переписал. Со временем научился писать скрипты с нуля.
 
Спасибо, хочу потом попробовать сделать такую фишку, если игрок релогается, то его как бы заносит в черный список, то есть его в следующий раз не пустит, напишет типо тебе туда нельзя!
 
Спасибо, хочу потом попробовать сделать такую фишку, если игрок релогается, то его как бы заносит в черный список, то есть его в следующий раз не пустит, напишет типо тебе туда нельзя!

Сразу говорю, на сервере не тестил. Возможны опечатки)
И еще, если будешь писать другие скрипты, следи за тем, чтобы названия не повторялись. Даже если скрипты в разных файлах.
Код:
"Teleport":
  type: assignment
  default constants:
    Число_алмазов: 4
    Задержка: 5m
    X: 100
    Y: 100
    Z: 100
  interact scripts:
  - 1 Телепорт
  actions:
    on assignment:
    - trigger name:click toggle:true
"Телепорт":
  Requirements:
    Mode: All
    List:
    - item diamond qty:<cons:Число_алмазов>
  type: interact
  steps:
    1:
      click trigger:
        script:
        - if <player.flag[Нехороший_игрок]> == true chat "<red>Ты пытался смухлевать, теперь тебе туда нельзя!"
          else {
            - take item:diamond qty:<cons:Число_алмазов>
            - execute as_npc "tp <player.name> <cons:X> <cons:Y> <cons:Z>"
            - flag <player> Телепортирован:1
            - run "Телепорт на спавн" delay:<cons:Задержка> }
"Телепорт на спавн":
  type: task
  script:
  - execute as_player "spawn"
  - flag <player> Телепортирован:0
"Чёрный список":
  type: world
  events:
    on player quit:
    - if <player.flag[Телепортирован]> == 1 flag <player> Нехороший_игрок:true
 
Сразу говорю, на сервере не тестил. Возможны опечатки)
И еще, если будешь писать другие скрипты, следи за тем, чтобы названия не повторялись. Даже если скрипты в разных файлах.
Код:
"Teleport":
  type: assignment
  default constants:
    Число_алмазов: 4
    Задержка: 5m
    X: 100
    Y: 100
    Z: 100
  interact scripts:
  - 1 Телепорт
  actions:
    on assignment:
    - trigger name:click toggle:true
"Телепорт":
  Requirements:
    Mode: All
    List:
    - item diamond qty:<cons:Число_алмазов>
  type: interact
  steps:
    1:
      click trigger:
        script:
        - if <player.flag[Нехороший_игрок]> == true chat "<red>Ты пытался смухлевать, теперь тебе туда нельзя!"
          else {
            - take item:diamond qty:<cons:Число_алмазов>
            - execute as_npc "tp <player.name> <cons:X> <cons:Y> <cons:Z>"
            - flag <player> Телепортирован:1
            - run "Телепорт на спавн" delay:<cons:Задержка> }
"Телепорт на спавн":
  type: task
  script:
  - execute as_player "spawn"
  - flag <player> Телепортирован:0
"Чёрный список":
  type: world
  events:
    on player quit:
    - if <player.flag[Телепортирован]> == 1 flag <player> Нехороший_игрок:true
Спасибо, щас пойду разбирать скрипты, посмотрю что да как...
 
Сколько искал, так и не понял, как работать с dChunk. Точнее, как привязать кубоид к названию. Может, кто в курсе?
 
Благодорю!) Только жалко строитель не удобен тем что ты не видишь сколько слоев земли в проекте.А то начинает строить и там земля потом уже построика.Приходися эксперментировтаь сразу в земля встраивтаь построики некоторые.
А ты схематик делай без лишних слоев земли.
А почему когда напишу /npc text , потом пишу текст и мне пишет
invalid edit type
Псле того как написал /text нужно в чат без слеша написать add, и следом опять без слеша пишешь текст сообщения. Если нужно добавить еще ондно сообщение опять add и текст. В конце когда добавил все сообщения /close и закрываем редактор /text. Только после этого все могут видеть сообщения НПС.
У меня еще один вопросик.
Я прописал НПС'y чтобы он говорил: "Привет, я админ блааблабвлалывао..."
А что нужно прописать, чтобы он это говорил при подходе игрока к нему?
Сам он не хочет.
Заставить говорить нипа при подходе игрока: (Пишу очередность команд так как есть)
1. /npc text
2. add
3. Привет, я админ блааблабвлалывао...
4. close
5. /npc text
После этого он начинает говорить! По умолчанию расстояние до активации нипа 5 блоков.
Народ подскажите последовательность команд
что бы строил не 1 NPC а к примеру 3
/npc sel 3
/builder load [schematic]
/builder build
 
zelnet, раз ты разбираешься в плагине, то как можно сделать НПС агрессивным, чтобы он бил игроков?
Для начала нужно создать Нипа /npc create имя --trait sentry
потом прописать ему агрессию
/sentry target add entity: Player
Виды анрессии:
entity:all
entity:eek:wner(owner)
entity:TYPE
entity:monster
entity:player(Player)
player:Name
entity:npc
гадские смайлы вместо : и P O
если ставишь /sentry target add entity:all он будет агриться даже на тебя.
в принципе нипу можно дать запрет агиться на кого-то определенного
/sentry ignore add group:Admin
или
/sentry ignore add player:zelnet
или так, на овцу...
/sentry ignore add entity:sheep
А вот у меня свой вопрос назрел!!!
Как заставить НПС сидеть? Я слышал что такое возможно...
Хочу на спавне посадить бомжа который просит денег)))
Думаю скрипт тоже нужен будет для него, кто поможет?
Даже если не сидеть просто стоять и просить денег. И чтобы он мог брать по 10-30 денег.
в принципе пусть даже рандомно выдает какиенить предметы.
Со словами "Спасибо друг, хочешь вот возми, мне всеравно не надо" и чаренные ботинки отдаёт, ну или еще чтонить.
assignments.yml
В этом файле описываются все варианты действия для вашего NPC. Каким образом его редактировать будет объяснено дальше.
Изменения в этот файл можно вносить и при работающем сервере, только потом может потребоваться перезагрузка плагина командой /denizen reload .
...
А можно по подробней по этому файлу! Тем более было обещано "Каким образом его редактировать будет объяснено дальше." К сожалению я этого не увидел. Хотелось бы внести ясность... Как говорится с этого места по подробней.
 
Ребята! как привязать квест из Quests к NPC? создал и то и то, а связать не знаю как
 
А вот у меня свой вопрос назрел!!!
Как заставить НПС сидеть? Я слышал что такое возможно...
Хочу на спавне посадить бомжа который просит денег)))
Думаю скрипт тоже нужен будет для него, кто поможет?
Даже если не сидеть просто стоять и просить денег. И чтобы он мог брать по 10-30 денег.
в принципе пусть даже рандомно выдает какиенить предметы.
Со словами "Спасибо друг, хочешь вот возми, мне всеравно не надо" и чаренные ботинки отдаёт, ну или еще чтонить.
Надеюсь, что отвечаю не слишком поздно :D
НПСа можно заставить присесть, как игрока, командой /npc sneak. Есть еще команда /npc sit (не уверен, что именно так пишется :D), но как она работает, мне не совсем понятно. Я думаю, что с ее помощью НПСа можно посадить в вагонетку или лодку. Чтобы НПС снова встал, введи /npc stand.
З.Ы. Скрипт на бомжа (диалог взят из личной встречи :D):
Код:
"Бомж":
  type: assignment
  default constants:
    MoneyQty: 10
  interact scripts:
  - 10 Выручи
  actions:
    on assignment:
    - trigger name:chat toggle:true
    - trigger name:click toggle:true
    - trigger name:proximity toggle:true
"Выручи":
  type: interact
  steps:
    1:
      proximity trigger:
        entry:
          script:
          - chat "<yellow>Эй, дружище, выручи, а?"
      click trigger:
        script:
        - chat "<yellow>Слушай, друг. Я короче, с Байкала сюда работать приехал."
        - wait 3
        - chat "<yellow>Ну, Байкал, знаешь озеро такое большое?"
        - wait 3
        - chat "<yellow>И вот, короче, киданули меня тут."
        - wait 2
        - chat "<yellow>Друг, подкинь несколько монет, сколько не жалко, а?"
      chat trigger:
        'Да':
          Trigger: /Да/, конечно. Держи.
          script:
          - chat "<yellow>От души, друг!"
          - take money qty:<cons:MoneyQty>
        'Нет':
          Trigger: /Нет/, я ничего тебе не дам. Иди работать!
          script:
          - chat "<yellow>Ну ты и жлоб!"
          - execute as_server "say <player.name> зажопил бомжу <cons:MoneyQty> монет!"
Как прицепить к НПСу, писал выше.
З.З.Ы. Насчет файла assignments.yml. У меня этого файла вообще нет (версия 1.6.4), полагаю, что он был в более старых версиях плагина. Вообще этот гайд по Denizen уже порядочно устарел.
 
Последнее редактирование:
Есть люди, которые активно работают с Denizen или я такой один? :(
Хотелось бы уточнить пару непонятных мне моментов, ну или наоборот, поделиться тем, что знаю сам.
 
ребят помогите как сделать чтоб НПС дрался с игроками на сервере!
 
Назад
Верх