Войти или зарегистрироваться

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

Обязательно сегодня попробую поставить Pascal.
 
Обязательно сегодня попробую поставить Pascal.
Поддержка сторонних движков будет с версии 0.5.6
Попробуй отыскать нормальный паскаль для явы в виде скриптодвижка.. Вроде бы он не существует :D
 
Поддержка сторонних движков будет с версии 0.5.6
Попробуй отыскать нормальный паскаль для явы в виде скриптодвижка.. Вроде бы он не существует :D


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

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

Если не терпится - отпишись в скайп, скину тестовую версию. Она вполне работоспособна.
Эмм,есть вопрос:Как ты относишься к созданию сайтов и лаунчеров?Просто вопрос.
 
Поддержка сторонних движков будет с версии 0.5.6
Попробуй отыскать нормальный паскаль для явы в виде скриптодвижка.. Вроде бы он не существует :D
А там в ссылке, что ты приводил упоминается FreePascal. Это как? Как его можно "прикрутить"????? И можно ли?
Я помню когда-то несколько программ на FreePascal сделал и парочку под Lazarus'ом (правда постоянно вылезающие воспоминания о Delphi крайне раздражали - уж проще было бы на каком-то новом языке программирования написать..)
 
А там в ссылке, что ты приводил упоминается FreePascal. Это как? Как его можно "прикрутить"????? И можно ли?
Я помню когда-то несколько программ на FreePascal сделал и парочку под Lazarus'ом (правда постоянно вылезающие воспоминания о Delphi крайне раздражали - уж проще было бы на каком-то новом языке программирования написать..)

Если есть версия 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: я сам вафуе ).
 
Очень хороший плагин, но к сожалению не могу его использовать. Из-за рефлекции через плагин можно получить доступ к любым файлам, папкам и даже БД.
 
Очень хороший плагин, но к сожалению не могу его использовать. Из-за рефлекции через плагин можно получить доступ к любым файлам, папкам и даже БД.

Да, вопрос уязвимости остается открытым.
С версии 0.4 я перестал об этом заботиться, возложив всю проблему на пользователей.
В действительности, нужно заботиться только о двух вещах:
1 - чтобы кто-то случайно не получил пермиты на исполнение скрипта. Это просто.
2 - уделить внимание тем местам, где скрипт компилируется в скрипте и исполняется.
Например: мы создали модуль, который позволяет исполнить код на табличке, если по ней кликнуть. Тогда нужно предотвратить случаи, когда пользователи без надлежащих прав создают сами себе такие таблички или подменяют текст в уже существующих.
Если же вообще не использовать компиляцию - все будет в порядке.
 
@blackalegator, куча плагинов может натворить чудес. Поэтому, главное не давать доступ к ним непроверенным и неподготовленным товарищам.
Ну и про backup не забывайте ;)
 
+ over99999999 мин-игр для моего сервера:D!
Автор хорошо постарался!
Только вот хочется чтобы ты реализовал PHP........
 
@lucboeren, php? это не круто! VarScript однозначно должен поддерживать голосовое управление через скайп и выполнять команды: "ну ты сделай так чтобы этого парня тэпэшило на 5 блоков верх если у него в руках молот тора и он долбает им по криперу, при этом у него из задницы должен идти дым"
 
@lucboeren, php? это не круто! VarScript однозначно должен поддерживать голосовое управление через скайп и выполнять команды: "ну ты сделай так чтобы этого парня тэпэшило на 5 блоков верх если у него в руках молот тора и он долбает им по криперу, при этом у него из задницы должен идти дым"
Чем плох Пхп? Это мой первый язык програмирования я который изучил).
ну ты сделай так чтобы этого парня тэпэшило на 5 блоков верх если у него в руках молот тора и он долбает им по криперу, при этом у него из задницы должен идти дым
Ахахахахахахахахахахахахахахахахахахахахах:D.
 
Кто может построить мне мини игру на моём сервере с этим плагином (Hell jump) Очень хочется) Пишите в лс кто поможет!
 
Кто может построить мне мини игру на моём сервере с этим плагином (Hell jump) Очень хочется) Пишите в лс кто поможет!

Пишите мне в скайп, помогу.

Чем плох Пхп? Это мой первый язык програмирования я который изучил).
А мой первый язык был jass.
PHP действительно плох, если применять его в java.
Кое-как в последней версии были реализованы замыкания. Да и к тому же по быстродействию он уступает яваскрипту. Но основная причина - я не нашел скриптодвижка с PHP
Только вот хочется чтобы ты реализовал 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
 
Ну что... PHP работает! Через задницу, вываливая результат обработки строки как веб-скрипта.. но работает!
Ахахахахах. Может сюда ещё попытатся всунуть Vbscript и паскал? они точно будут
Через задницу, вываливая результат
:D. Пойду учить JS.
варскрипт: /vs>> ME HP
Может и не JS но VarSrip выучу! Будет у меня + over99999 миниигр на сервере!
 
@lucboeren, php? это не круто! VarScript однозначно должен поддерживать голосовое управление через скайп и выполнять команды: "ну ты сделай так чтобы этого парня тэпэшило на 5 блоков верх если у него в руках молот тора и он долбает им по криперу, при этом у него из задницы должен идти дым"


Эх, неправильно вы мыслите. VS должен стать на 10% легче и на 20% производительнее, иметь сканер отпечатков пальцев и Siri. Вот это уже будут инновации.
200px-Apple_logo_black.svg.png

Понаподключал всяких либ, и всё равно вернулся к Varscript. Он как-то сподручнее, чтоли.
 
[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
 
Перечитал всю тему, плагин меня крайне заинтересовал именно из-за того, что возможности его применения зависят лишь от фантазии.
У меня возникло пара вопросов, скорее организационных:
1) Что стало с викой? ( http://diggers.no-ip.org/wiki/ )
2) Много раз упоминается модуль ItemScript, да же в шапке есть видео его использования, но там же в шапке нет его в списке модулей. Можно его где-то сейчас найти? (Поиск по форуму не дал рабочей ссылки)
 
Назад
Верх