1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Плагин [ADMN/DEV/FUN] VarScript 1.2 - Пишем скрипты на Groovy

Тема в разделе "Релизы плагинов", создана пользователем DPOH-VAR, 29 сен 2012.

  1. DigitalMisha

    DigitalMisha Активный участник Пользователь

    Баллы:
    58
    Улыбнула ачивка "This is Minecraft". Пока видео смотрел захотелось сделать такую, и вот те на: она есть!
    Каким IDE Вы пользуетесь для Груви?
     
    Hephest нравится это.
  2. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Intellij IDEA 13 очень даже ничего справляется, но в каждом скрипте приходится вручную указывать используемые переменные и их тип. Я написал на нем модули metaclasses и NBTTools
    IDEA 12 в этом плане хуже работает с груви.
    Для простеньких скриптов достаточно Sublime Text
    на худой конец пойдет и Notepad++, подсветка синтаксиса у него отличная.
     
  3. DigitalMisha

    DigitalMisha Активный участник Пользователь

    Баллы:
    58
    Просто не знал какой ИДЕ использовать. На одном компе Сублайм. А на втором только НПП стоял. Нашел для НПП
     
  4. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Очередной модуль на груви
    https://github.com/DPOH-VAR/VarScript/blob/master/groovy-modules/yaml.groovy
    Предназначен для работы с данными в формате YAML

    Модуль использует библиотеку SnakeYAML, добавляет следуюшие функции:
    def loadYaml(File file) - чтение YAML из файла
    def loadYaml(InputStream is) - чтение YAML из потока
    def loadYaml(String data) - чтение YAML из строки.
    Все три метода возвращают обработанный парсером объект.

    String dumpYaml(def data) - сохранение объекта в формат YAML, метод вернет строку
    boolean dumpYaml(def data, OutputStream is) - сохранение объекта в формат YAML в поток
    boolean dumpYaml(def data, File file)- сохранение объекта в формат YAML и запись в файл
    Последние два метода возвращают true в случае успеха.


    И вот простенький пример работы модулей yaml и NBTTools:
    1) Сохраняем свой инвентарь в файл:
    /g> dumpYaml( nbt(me).Inventory, new File("inventory.yml") )
    Содержимое файла будет примерно таким:
    Код:
    - id: 1
      Damage: 0
      Count: 3
      Slot: 0
    - id: 145
      Damage: 2
      Count: 1
      Slot: 1
    - id: 403
      Damage: 0
      Count: 1
      tag:
        StoredEnchantments:
        - id: 21
          lvl: 3
      Slot: 2
    - id: 314
      Damage: 0
      Count: 1
      tag:
        RepairCost: 2
        display:
          Name: Шлем из золота
      Slot: 103
    
    2) Изменяем файл и загружаем инвентарь обратно:
    /g> nbt(me) {it.Inventory = loadYaml(new File("inventory.yml")) }

    PS: все данные формата nbt прекрасно конвертируются в YAML и обратно.
    У меня уже появилась идея добавить такую фичу в плагин PowerNBT ;)
     
    Hephest нравится это.
  5. MYXOMOPX

    MYXOMOPX Активный участник Пользователь

    Баллы:
    78
    Skype:
    MYXOMOPX
    Имя в Minecraft:
    MYXOMOPX
    Переделал модуль CustomAchievements.
    Теперь всё хранится в .yml файлах (раньше хранилось в .nbtz)
    Скачать можно тут
     
  6. Reedanger

    Reedanger Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Reedanger
    Прекрасный плагин, продолжайте в том же духе:coffee:
     
  7. WalpeR

    WalpeR Активный участник Пользователь

    Баллы:
    73
    Начну с того, что я не осилил прочесtь все 11 страниц, информации слишком много(оставил на завтра), и ничего не понятно. Хотел подключить модуль Helljump, понять как оно работает. Делал по этой инструкции.
    /> @FirstArena PRINT - выдает Null

    Ну и лог 1.6.4
    2014-01-23 23:34:29 [INFO] NullPointerException at [1:42]
    PLAYERS ME 4 SPHERE SCAN NULL @FirstArena:start
    >> {} at [1:42] :start for Program{CraftBlock{chunk=CraftChunk{x=-10z=6},x=-154,y=73,z=101,type=COMMAND,data=1}}
    2014-01-23 23:34:29 [SEVERE] me.dpohvar.varscript.vs.exception.ThreadTrace: NullPointerException at [1:42]
    PLAYERS ME 4 SPHERE SCAN NULL @FirstArenaВ§6:startВ§r
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.Thread.runFunctions(Thread.java:143)
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.ThreadRunner.runThreads(ThreadRunner.java:33)
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.command.CommandRunVS.onCommand(CommandRunVS.java:38)
    2014-01-23 23:34:29 [SEVERE] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    2014-01-23 23:34:29 [SEVERE] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.TileEntityCommand.a(TileEntityCommand.java:101)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.BlockCommand.a(BlockCommand.java:47)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.WorldServer.a(WorldServer.java:571)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.WorldServer.doTick(WorldServer.java:207)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:565)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:240)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:483)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:415)
    2014-01-23 23:34:29 [SEVERE] at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
    2014-01-23 23:34:29 [SEVERE] Caused by: me.dpohvar.varscript.vs.exception.CommandException: NullPointerException at [1:42]
    PLAYERS ME 4 SPHERE SCAN NULL @FirstArenaВ§6:startВ§r
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.CommandDebug.runWorker(CommandDebug.java:29)
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.Function.runCommands(Function.java:75)
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.Context.runCommands(Context.java:90)
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.Thread.runFunctions(Thread.java:134)
    2014-01-23 23:34:29 [SEVERE] ... 13 more
    2014-01-23 23:34:29 [SEVERE] Caused by: java.lang.NullPointerException
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.init.InitDynamic$11.run(InitDynamic.java:302)
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.init.InitDynamic$11.run(InitDynamic.java:298)
    2014-01-23 23:34:29 [SEVERE] at me.dpohvar.varscript.vs.CommandDebug.runWorker(CommandDebug.java:25)
    2014-01-23 23:34:29 [SEVERE] ... 16 more

    Даже не знаю с чего начать в изучении этого чуда.
     
  8. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Для начала нужно убедиться, что включен чедулер
    /scheduler on
    и включена сама задача
    /task FirstArena on
    теперь можно попробовать перезагрузить задачу:
    /task FirstArena reload
    смотрим в консоль на наличие ошибок.
    Задача должна была создать переменную FirstArena, которая содержит нужную арену.
    /> @FirstArena PRINT
    Если и теперь она выдает NULL - значит ошибка в задаче.

    PS: Этот модуль тестировался с VarScript 0.5.6 и 0.5.7, PowerNBT 0.5.4
    не тестировал с PowerNBT 0.6.x
     
    WalpeR нравится это.
  9. WalpeR

    WalpeR Активный участник Пользователь

    Баллы:
    73
    VarScript 0.5.7

    В туторе было написано создать таск фаил по пути plugins/VarScript/scripts/vs/tasks/FirstArena.yml, а необходимо было plugins/VarScript/tasks/FirstArena.yml
    Все отлично работает =)
     
    Последнее редактирование: 24 янв 2014
    DPOH-VAR нравится это.
  10. RunFMe

    RunFMe Участник Пользователь

    Баллы:
    38
    А где можно взять item script
     
  11. MYXOMOPX

    MYXOMOPX Активный участник Пользователь

    Баллы:
    78
    Skype:
    MYXOMOPX
    Имя в Minecraft:
    MYXOMOPX
    Я его забросил. Он был написан на VarScript синтаксисе, у которого сейчас не работают пару функций.
    Может быть, позже переделаю его на Groovy.
     
    WalpeR нравится это.
  12. RunFMe

    RunFMe Участник Пользователь

    Баллы:
    38
    А что насчет дальнейшей пазработки плагина? И что вы думаете о перспективности рпг сервера со своим клиентом, самописными плагинами, var scriptom и др. Bukkit плагинами, модами, сайтом, и рпг сюжетом, созданном с помощью мода custom npc? Я почти все сделал, но сомневаюсь в перспективности в материальном плане. Сам я программист неплохой, есть команда.
     
  13. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    RunFMe, мы все видели "никакие" сервера с точки зрения продуманности, но при этом заполненные "под завязку" и наоборот - сервера очень хорошо продуманные с уникальными самописными плагинами и т.п., но... без игроков.
    Так что главное не только тех оснащение, но и умение поддерживать интерес людей к серверу.
     
  14. RunFMe

    RunFMe Участник Пользователь

    Баллы:
    38
    Я имею ввиду то, насколько живым майн остается на данный момент, играют ли в него нормальные люди или уже все. Дело в том, что раньше движения в этой области было много, сейчас же про майн вспоминают только школьники(агро) да программисты, типа вас. Но я в этом не уверен, поэтому и спросил так ли это. Сейчас думаю запускать проект или нет.
     
  15. ujkbktj

    ujkbktj Старожил Пользователь

    Баллы:
    123
    DPOH-VAR, Ты богоподобен.
    Либо я слепой либо тут не написано.

    Никак не пойму как ставить модули и движки да вобще всё.
    Ктонибудь объясните как с нуля поставить Hell Jump очень хочу на свой сервер!
     
    RunFMe и fromgate нравится это.
  16. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Попробуй по этой инструкции.
    Если не получится - пиши в лс или skype
     
    RunFMe нравится это.
  17. RunFMe

    RunFMe Участник Пользователь

    Баллы:
    38
    Мда... Этот плагин гениален. Он позволяет делать плагины за несколько секунд... Ну, кроме нереально сложных. А плагин не популярен только, лишь потому что школо агро не хочет разбираться даже в такой простоте. Автор молодец. Продолжай в том же духе. А еще, я думаю, можно сделать файл с описанием всех функций(команд), чтобы это была просто стена текста с таким же описанием как в майнкрафте, но в текстовике.
     
    Последнее редактирование: 3 фев 2014
  18. Автор темы
    DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Я уже хочу отказаться от всех варскриптовых команд. Оставляю только для совместимости старых скриптов и модулей.
    Этих команд всего 500-700. Тут нет методов для работы с пакетами, нельзя использовать новые классы (добавленные в 1.7), а кое-какие команды вообще приходится каждый раз переделывать от версии в версии.
    Поэтому призываю всех использовать Groovy!
    Тут нет стековой системы, а вся документация есть на jd.bukkit.org
    Метаклассы позволяют упростить команды:
    me.setHealth(10) как me.hp = 10
    me.teleport(loc) как me >> loc
    и т.д.

    Функции из метаклассов описаны тут.
    Для новичков это будет очень сложно. Но можно все решить с помощью хороших подробных туториалов.
     
    0bsid1, RunFMe и fromgate нравится это.
  19. 0bsid1

    0bsid1 Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Artarious
    @DPOH-VAR, Привет.
    Тут ты писал вот что -
    [​IMG]
    А куда теперь закидывать Hell Jump?
    Папка Modules не создаётся, может надо её создать?
     
  20. ujkbktj

    ujkbktj Старожил Пользователь

    Баллы:
    123
    Надо создать. С тебя лайк :).
     
    RunFMe, 0bsid1 и fromgate нравится это.

Поделиться этой страницей