Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

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

  1. jwplaster

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

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Ip сервера напишу в личку, надеюсь поможете:)
     
  2. Хостинг MineCraft
    <
  3. jwplaster

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

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
  4. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    MYXOMOPX и ITrAnEI нравится это.
  5. jwplaster

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

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    я перепутал, там у меня который последний (на 24 заканчивается)
     
    DavidShabaev нравится это.
  6. Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    Идея случаем не от EventScripts пришла? Кстати @mattie пытался сделать ES для майна, но по-видимому забил. А питончек на майне я бы полюбил :).
     
  7. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Нет, про EventScripts слышу впервые.
    И тут далеко не питон. Просто пользуюсь подсветкой питона, т.к. основные операнды совпадают.
    У меня синтаксис и структура были похожи на Forth, но потом добавил несколько функциональных особенностей, например компиляцию, передачу ссылок на функции, многопоточность и дополнительные стеки данных.
    Хандлеры событий регистрируются и отключаются динамически в процессе выполнения программы, чтобы уменьшить нагрузку. Могут запускаться в новом потоке, или же ожидать наступления события в главном потоке. в плагине есть 2 разных компирятора:
    varscript:rpn - удобный для быстрого создания скриптов, не оптимизирован.
    varscript:raw - получает байт-код из 16-ричной формы записи
    второй можно использовать внутри первого, вызвав команду RAW(...)
     
    MYXOMOPX, ITrAnEI и Flumaster нравится это.
  8. Flumaster

    Flumaster Старожил Девелопер Пользователь

    Баллы:
    153
    Skype:
    alexey_aristov
    Так, к сведению: http://forums.eventscripts.com/ , кстати на базе своего плагина, можешь договорится с mattie, и сделать из этого EventScripts на питоне, пллагин получит широкий охват.
     
  9. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    У нас совершенно разные способы реализации скриптов.
    Тот - событийно-ориентированный, интерпретатор питона.
    Мой - исполняется вручную, но может ждать события и также полностью обработать его.
    У меня в планах сделать плагин-планировщик для varscript, по времени и событиям.

    С питоном не дружу. Но возможно сделаю в будущем еще один более простой синтаксис и компилятор (мало кто знает языки с обратной польской нотацией). Интерпретировать текст питона или же использовать рефлексии не хочу - снизится быстродействие.

    Я проводил сравнение по скорости замены блоков:

    • При интерпретации текста в varscript 0.1 сервер начинает тормозить при обработке 1000 блоков в цикле. Занимает это около 0.5 секунды.
    • varscript 0.2.7 - Замена ~2 млн блоков при отсутствии игроков проходила за ~30-60 секунд, без зависаний, и примерно за то же время выставлял блоки двух разных типов в шахматном порядке.
    • worldedit - убивает сервер, если блоков более 100 тыс. Но при небольшом количестве блоков - ставит быстрее.
    • Любой плагин вызывает лаги При смене >10 000 блоков, если поблизости есть игрок (перессылка огромного числа пакетов)
    • varscript 0.3 на данный момент обрабатывает не более 500 итераций любого цикла в секунду - благодаря черезжопной реализации команды EACH. //TODO: исправить.
    varscript кушает много оперативки, за счет хранения большого массива анонимных классов.
    И еще приходится бороться с неизученным еще мною зверем ConcurentModificationException (Чаще всего происходит при частом спавне энтити. реже - при смене блоков. Непредсказуемо)
     
    Sergey95, MYXOMOPX, ITrAnEI и ещё 1-му нравится это.
  10. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Итак, обновление!
    • можно сохранять/загружать книги со скриптами. Они хранятся в файлах в отдельной директории.
    • Оптимизированы циклы EACH, MATCH, PULL, FOID, DO, DO+
    • повышение производительности за счет оптимизации кода.
    • подключен API плагинов: LWC, DisguiseCraft
    • добавлены системные функции, чтобы получить текущее время/дату
    • куча других команд.
    Ссылка на плагин в шапке.
     
    MYXOMOPX и ITrAnEI нравится это.
  11. EnderChiken

    EnderChiken Старожил

    Баллы:
    103
    Skype:
    EnderChiken
    Имя в Minecraft:
    EnderChiken
    Я первым это придумал) Возможно не в такой форме...
    Скрипты нужно писать прям в игре, хоть в книге, хоть на табличке.
    Жмешь ПКМ по объкту (или объектом), скрипт компилируется и собирается в *.jar, сервер перезапускается и та-да, свой плагин пряям из игры)
     
    ВремяПриключений нравится это.
  12. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    @EnderChiken,
    А я первым реализовал (и то далеко первым - есть куча аналогичных плагинов, но с меньшим функционалом или другого типа)
    И компиляция в jar - наихудший метод из всех возможных. Уж лучше подключить API к обработчику javascript
     
    Gentalion, stew, MYXOMOPX и ещё 1-му нравится это.
  13. EnderChiken

    EnderChiken Старожил

    Баллы:
    103
    Skype:
    EnderChiken
    Имя в Minecraft:
    EnderChiken
    @DROH-VAR,
    Почему наихудший? Вполне нормальный способ компиляции.
    Кстати, видел где-то плагин для компиляции на языке C/C++ для баккит (Собирается в *.exe)
     
  14. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Пот почему я против использования Java в игре:
    1) компиляция занимает время
    2) для компиляции необходим класс с ф-ей main() - я не думаю, что это удобно записывать в книгу.
    3) у Java строгая типизация. Придется часто делать импорт.
    Если интересует такой метод скриптов - то вот плагин: ссылочка

    ИМХО все должно исполняться быстро и удобно для записи.
    для инлайн-скриптов хорошо подходят javascript, perl и т.д. - но мне влом их интегрировать ;) , поэтому создал свой.
     
    Gentalion, MYXOMOPX и ITrAnEI нравится это.
  15. EnderChiken

    EnderChiken Старожил

    Баллы:
    103
    Skype:
    EnderChiken
    Имя в Minecraft:
    EnderChiken
    Похвально.
    Попробуй добиться синтаксиса похожим на Python, он легко изучаем)
    А плагин очень понравился, только пробывать влом. Сделай такой на клиент, буду сильно благодарен.
     
  16. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Синтаксис менять не буду, я поклонник форта.
    Я выбрал самый простой синтаксис с точки зрения компиляции в байт-код.
    Насчет версии для клиента - это врядли, ибо надолго. Там совершенно другой API - придется все over500 функций переделывать.

    ЗЫ:
    если дадите пособие или туториал по составлению компилятора/интерпретатора питона/любого другого более удобного языка - мб сделаю и такой синтаксис
     
    Attelis, MYXOMOPX и ITrAnEI нравится это.
  17. EnderChiken

    EnderChiken Старожил

    Баллы:
    103
    Skype:
    EnderChiken
    Имя в Minecraft:
    EnderChiken
    Жаль, мне очень бы понадобился мод для клиента. А может все таки выйдет? :D
     
  18. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Добавил функции для версии 1.4:
    - покраска предметов (для кожаной брони)
    - переименование предметов (см пост)
    - изменение инвентаря для мобов.
    - изменение типа зомби (обычный / деревенский)
    - изменение типа скелета ( белый / черный )
    - режим бессмертия для любого моба (в т.ч. игрока)
    - автопикап предметов для мобов (вкл/выкл)
    Вернут ошибку при использовании на 1.3
     
    I-Am-Black-Overlord, MYXOMOPX и ITrAnEI нравится это.
  19. EpicMan2

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

    Баллы:
    173
    Мьсе, замечательный плагин. Сам не пробывал, но думаю сделать небольшой ивентсервер с участием плагиина. Хорошо бы было увидеть документацию по плагину....
     
  20. voldemarich

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

    Баллы:
    63
    Дрон сделал новую возможность - сохранять книги в файл .book
    Это очень хорошо, так как при сохранении книги и ее повторной загрузке книга не теряет своих свойств.
    Это дает идеи:
    - для продажи заклинаний-свитков (уже заряженных, без участия админов)
    - главное (!) обмена спеллами и скриптами прямо в книгах между администраторами.

    Посему предлагаю в этой теме (либо на сайте дрона, как он захочет) основать репозиторий скриптов в формате .book

    Идейно?

    UPD: рб не дает грузить книги в формате .book ... Но можно обмениваться ими еще где-нибудь...
     
    stew и DPOH-VAR нравится это.
  21. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Документация будет, но боюсь, что не скоро. Думаю создать вики.
    Как будет готово хотя бы частично, напишу в теме.
    Сейчас занимаюсь разработкой скрипта Infection и функционала планировщика.
    Также искореняю баги (прям десятками за раз, ибо было некогда тестить каждую команду)
     
    stew, PedrO, MYXOMOPX и ещё 1-му нравится это.

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