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

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

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

  1. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Обязательно сегодня попробую поставить Pascal.
     
    fromgate нравится это.
  2. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Поддержка сторонних движков будет с версии 0.5.6
    Попробуй отыскать нормальный паскаль для явы в виде скриптодвижка.. Вроде бы он не существует :D
     
    ВремяПриключений нравится это.
  3. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse

    Блин, а я уже обрадовался :D Когда релиз 0.5.6?
     
  4. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Еще много мелочей осталось,
    например для груви я отдельную команду вынес. Прописывать линки библиотекам теперь не обязательно, они сами подхватываются из директории engines. Я не тестировал, как себя ведет чедулер со скриптами.

    Если не терпится - отпишись в скайп, скину тестовую версию. Она вполне работоспособна.
     
  5. ChattyDude

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

    Баллы:
    93
    Имя в Minecraft:
    ChattyDude
    Эмм,есть вопрос:Как ты относишься к созданию сайтов и лаунчеров?Просто вопрос.
     
    MineMan910 нравится это.
  6. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Можно было бы и в личку.

    Вот просто ответ: терпеть не могу лаунчеры.
    А сайты пишу на томкате.
     
  7. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    А там в ссылке, что ты приводил упоминается FreePascal. Это как? Как его можно "прикрутить"????? И можно ли?
    Я помню когда-то несколько программ на FreePascal сделал и парочку под Lazarus'ом (правда постоянно вылезающие воспоминания о Delphi крайне раздражали - уж проще было бы на каком-то новом языке программирования написать..)
     
  8. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Если есть версия Pascal, написанная на Java, это значит то, что ее можно использовать в Java.
    На самом деле все вот как:

    Есть класс ScriptEngineManager, который позволяет воспользоваться любым скрипто-движком, установленным в системе. С помощью ScriptEngine можно запустить скрипт, а также указать ему переменные и константы, с которыми скрипт будет работать.
    Каждый ScriptEngineFactory используется как "представитель" скриптоязыка. С помощью него можно создать несколько экземпляров независимых скриптодвижков.
    По умолчанию в JRE из движков есть только Rhino, использующий язык ECMAScript (js).
    Чтобы добавить еще несколько скриптодвижков, достаточно просто подгрузить в класслоудер библиотеку с этим движком (правда не во всех случаях это срабатывало, я еще экспериментирую)
    Таким образом, если вдруг найдется движок с FreePascal - его без проблем можно будет подключить к плагину. Но дело в том, что такого движка я не нашел.

    Но все-таки, если верить той самой странице вики, существует некий интерпретатор кода pascal, написанный на java. Это безусловно значит, что можно найти готовый проект, подключить его классы и начать использовать на свое усмотрение. Я же не хочу на этом останавливаться, т.к. мне не нравится паскаль из за его слабых возможностей и малой гибкости.
    В то же время я оставил возможность подгрузить любую библиотеку на выбор. Если бы паскаль был востребован, мы бы нашли в интернетах исходники PаscаlScriptEngineFactory...

    Из тех скриптоязыков, что я перепробовал:
    Groovy - однозначно лидер! Если бы я встретил скрипто-плагин на Groovy с регистрацией событий, я бы не стал делать варскрипт.
    Varscript - собственный синтаксис этого планига. Не является скриптодвижком. По уровню абстракции близок к js, но заточен под использование "на лету", т.е. удобно использовать в чате, коммандблоках, писать в книгах и т.д.
    Rhino (javascript) - классика. Однако его код в результате получается слишком избыточным.
    JRuby - Неудобен. Хотя для поклонников языка - вполне подойдет.
    Scala - Слишком крут. Не получилось простым способом подключить его (только через отладчик)
    Много-времени мучался со Scala.
    Оказалось, что она не деплоится, и это баг разработчиков.
    Стабильная версия 2.10 - не может зарегистрировать свой сервис-провайдер (вроде-бы баг в манифесте)
    Версия 2.11 заработала как надо!
    Нашел еще нечто похожее на планировщик варскрипта:
    http://dev.bukkit.org/bukkit-plugins/battlescheduler/
    Версия 0.5.6 Готова.
    Та самая, к которой можно подключить любой скрипто-движок.
    Из дополнений:
    Мы можем подключить любой скриптодвижок (ваш Кэп), но нужно найти и скачать библиотеки.
    Если движок не подключается сам, можно его создать и зарегистрировать с помощью js (инструкции будут позже, если в них появится необходимость)
    Если движок капризничает (например scala отказывается читать java классы) - мы можем настроить его предварительно с помощью js
    Ну вот и всё. Ссылки и описание в первом посте.
    С прискорбием сообщаю, что ptnk был прав насчет производительности языка varscript.
    Если я выкину этот синтаксис, вес плагина уменьшится почти на мегабайт :D

    На данный момент, самый лучший по производительности - это groovy. Он почти сравним с чистым java.

    С этих пор varscript оставляю как язык с наиболее коротким синтаксисом только для коротких команд.
    Все сложные задачи и модули буду делать на груви. Тем более, что варскрипт может взаимодействовать с классами и объектами, созданными groovy как со своими ( :eek: я сам вафуе ).
     
    Оригинало_о, ufes, Sirse и ещё 1-му нравится это.
  9. blackalegator

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

    Баллы:
    63
    Очень хороший плагин, но к сожалению не могу его использовать. Из-за рефлекции через плагин можно получить доступ к любым файлам, папкам и даже БД.
     
  10. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Да, вопрос уязвимости остается открытым.
    С версии 0.4 я перестал об этом заботиться, возложив всю проблему на пользователей.
    В действительности, нужно заботиться только о двух вещах:
    1 - чтобы кто-то случайно не получил пермиты на исполнение скрипта. Это просто.
    2 - уделить внимание тем местам, где скрипт компилируется в скрипте и исполняется.
    Например: мы создали модуль, который позволяет исполнить код на табличке, если по ней кликнуть. Тогда нужно предотвратить случаи, когда пользователи без надлежащих прав создают сами себе такие таблички или подменяют текст в уже существующих.
    Если же вообще не использовать компиляцию - все будет в порядке.
     
  11. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @blackalegator, куча плагинов может натворить чудес. Поэтому, главное не давать доступ к ним непроверенным и неподготовленным товарищам.
    Ну и про backup не забывайте ;)
     
  12. lucboeren

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

    Баллы:
    88
    + over99999999 мин-игр для моего сервера:D!
    Автор хорошо постарался!
    Только вот хочется чтобы ты реализовал PHP........
     
  13. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @lucboeren, php? это не круто! VarScript однозначно должен поддерживать голосовое управление через скайп и выполнять команды: "ну ты сделай так чтобы этого парня тэпэшило на 5 блоков верх если у него в руках молот тора и он долбает им по криперу, при этом у него из задницы должен идти дым"
     
    GrimJoy, Сникерсни и Sirse нравится это.
  14. lucboeren

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

    Баллы:
    88
    Чем плох Пхп? Это мой первый язык програмирования я который изучил).
    Ахахахахахахахахахахахахахахахахахахахахах:D.
     
  15. Steppenwccr

    Steppenwccr Участник

    Баллы:
    33
    Имя в Minecraft:
    Steppenwccr
    Кто может построить мне мини игру на моём сервере с этим плагином (Hell jump) Очень хочется) Пишите в лс кто поможет!
     
  16. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Пишите мне в скайп, помогу.

    А мой первый язык был jass.
    PHP действительно плох, если применять его в java.
    Кое-как в последней версии были реализованы замыкания. Да и к тому же по быстродействию он уступает яваскрипту. Но основная причина - я не нашел скриптодвижка с PHP
    http://quercus.caucho.com/ гляну еще этот. Не уверен, что получится его подключить.

    @lucboeren,
    Подключил эту либу...
    Код:
    [INFO] [VarScript] load Scala Interpreter 1.0
    lang: Scala version 2.11.0-M4
    name: scala
    extension: scala
    [INFO] [VarScript] load JSR 223 JRuby Engine 1.7.4
    lang: ruby jruby 1.7.4
    name: ruby,jruby
    extension: rb
    [INFO] [VarScript] load Mozilla Rhino 1.6 release 2
    lang: ECMAScript 1.6
    name: js,rhino,JavaScript,javascript,ECMAScript,ecmascript
    extension: js
    [INFO] [VarScript] load Groovy Scripting Engine 2.0
    lang: Groovy 2.2.0-beta-2
    name: groovy,Groovy
    extension: groovy
    [INFO] [VarScript] load Caucho Quercus Script Engine 4.0.37
    lang: php 5.4.0
    name: quercus,php
    extension: php
    Попробуем с помощью скриптинга узнать, сколько у нас жизней:
    варскрипт: /vs>> ME HP
    яваскрипт: /js>> me.health
    груви: /g>> me.health
    раби: /->> ruby org.bukkit.Bukkit.getPlayer("DPOHVAR").health
    ПХП: /->> php <?php return $me->getHealth() ?>
    скала: не работает :p


    Ну что... PHP работает! Через задницу, вываливая результат обработки строки как веб-скрипта.. но работает!

    вот сам плагин
    https://docs.google.com/file/d/0B50fBoyxANzsaHltNWxOcWtmZGc/edit?usp=sharing
     
  17. lucboeren

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

    Баллы:
    88
    Ахахахахах. Может сюда ещё попытатся всунуть Vbscript и паскал? они точно будут
    :D. Пойду учить JS.
    варскрипт: /vs>> ME HP
    Может и не JS но VarSrip выучу! Будет у меня + over99999 миниигр на сервере!
     
  18. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse

    Эх, неправильно вы мыслите. VS должен стать на 10% легче и на 20% производительнее, иметь сканер отпечатков пальцев и Siri. Вот это уже будут инновации.
    [​IMG]

    Понаподключал всяких либ, и всё равно вернулся к Varscript. Он как-то сподручнее, чтоли.
     
    slavik123123123 нравится это.
  19. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    [quote="lварскрипт: /vs>> ME HP
    Может и не JS но VarSrip выучу! Будет у меня + over99999 миниигр на сервере![/quote]

    Очень советую groovy.
    Библиотека скриптинга весит всего 6 метров, но может портировать почти любой код на java.
    Можно создать свои классы с геттерами и сеттерами.
    В любом случае, класс или объект, написанный на груви, можно использовать на любом другом языке. Я часто этим пользуюсь: сложные модули пишу грувями, а вызываю варскриптом.
    Еще одна фишка от MYXOMOPX
    Данж с боссом.
    Убить его и записать видео получилось далеко не с первой попытки :D

    Характеристики этого моба такие:
    Максимум жизней: 400
    при получении урона шанс ускориться на 40% на 5-15 секунд [Speed II]
    при атаке шанс замедлить противника на 15% на 5-15 секунд [Slowness I]
    при атаке восстанавливает себе жизни (+4hp за удар)
    при атаке шанс получить усиление урона на 60% [Strength II]
    при получении урона шанс призвать трех малышей-зомбят
    при получении урона шанс разлететься в мышей. Количество мышек ограничено, их можно убить.
    Дроп: маска вампира

    Все настройки хранятся у моба в NBT тегах его экиперовки. То есть, теоретически, можно создать блокспавнер для босса.

    Использовались материалы:
    VarScript 0.5.6 | естественно =)
    PowerNBT 0.5.4 | чтение и запись NBT тегов
    Модуль ItemScript.vs | обработка сценариев, записанных внутри предмета
    Модуль Particles.groovy | отображение красивых визуальных эффектов
    Groovy 2.1.7 | для модуля Particles
     
    WalpeR и smilesdc нравится это.
  20. misterzym

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

    Баллы:
    63
    Имя в Minecraft:
    Misterzym
    Перечитал всю тему, плагин меня крайне заинтересовал именно из-за того, что возможности его применения зависят лишь от фантазии.
    У меня возникло пара вопросов, скорее организационных:
    1) Что стало с викой? ( http://diggers.no-ip.org/wiki/ )
    2) Много раз упоминается модуль ItemScript, да же в шапке есть видео его использования, но там же в шапке нет его в списке модулей. Можно его где-то сейчас найти? (Поиск по форуму не дал рабочей ссылки)
     
    RVXman нравится это.

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