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

Стартап in-game JavaScript

Тема в разделе "Разработка плагинов для новичков", создана пользователем DPOH-VAR, 5 янв 2013.

?

Как вы относитесь к скриптам в игре?

  1. Я не знаю ни одного языка программирования/скриптинга.

    16,2%
  2. Идея не стоит реализации.

    0,9%
  3. Я знаю JavaScript. Хорошая идея применять его в игре.

    38,5%
  4. Хотелось бы использовать другой язык (указать ниже).

    9,4%
  5. Меня полностью устраивает синтаксис Varscript.

    6,0%
  6. БАЯН (указать ссылку).

    1,7%
  7. А я томат (не голосую).

    27,4%
  1. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Продвижения есть, но были оооочень медленные.
    Сейчас я набрал темп и пишу себе втихаря :D/ Буду делиться информацией в этой теме
    http://www.rubukkit.org/threads/разработка-плагина-varscript.21863/page-5#post-555200
    Большинство из админов не разберется, даже если им дать готовый скрипт и сказать, что в какую папочку надо скопировать. Им дай все готовое, настроенное, да побольше игроков.
    Пусть это будет плагин для "элиты"
    Требований у плагина не много: знать основы программирования, JavaScript, желательно Forth, изучить модель регистрации задач в планировщике и все.. ты бог своего сервера. Или же можно просто побаловаться командами /> ME "игрок" SETPASSENGER /> "игрок" 50 SETFIRE и т.д. Тут знаний не нужно
     
    fromgate и Jers нравится это.
  2. Хостинг MineCraft
    <
  3. voldemarich

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

    Баллы:
    63
    О большинстве: 95% населения

    Чтоб сервер был популярен, нужно реально работать, а не баловаться командами. Конечно, многое на первых этапах непонятно, но потом разбираешься и все ок. Хоть мне, одному из первых (вроде) пользователей varscript DPOH-VAR все обьяснил, но теперь я, как написано выше, почти "бог" своего сервера. И очень приятно, когда люди, заходящие туда, говорят (пытаюсь передать интонацию): КАК?? У ТЕБЯ ЖЕ НЕТ МОДОВ?? Как ты ЭТО сделал?
    Я думаю, что если голова на плечах и руки не из жопы, то разобраться можно. Мы создаем сейчас рпг-систему на основе артефактов (предметов с программами в nbt-тегах). Возможностей куча - свитки с силовыми полями, заклинаниями, божественное оружие и броня, пропуски в определенные места (ключи от дверей), телепорты через портал в ад, данжи и прочее, прочее, прочее. Не столько нужно для этого знание программирования (каждый деградант сможет заюзать простейшее условие), сколько хорошая, сбалансированная идея предмета.
    Согласен, вар нужен только на тех серверах, где понимают его возможности. Ведь если ты разобрался в нем, у тебя есть уникальная фича, приманивающая игроков и повышающая успешность сервера.
    Так к чему этот текст? Мы собираемся открыть проект (60% completed) и доказать, что варскрипту есть место на густонаселенных серверах.

    Кстати, Дрон, о туториалах. ИМХО, фтопку русский, лучше писать на английском, но хорошо и понятно, чем и на русском, и на английском, но отрывки из обрывков. + "элита" РБ должна знать английский, так что это снизит количество людей младшего школьного возраста, юзающих плагин.
    Но о русском. На основе моего опыта и советов дрона я сейчас пишу копирайт для одного сайта по minecraft, туториалы по вару. Там будет настройка, использование готовых скриптов, краткий экскурс в синтаксис forth, использование scheduler и т.д. Как будет готово, линки скину сюда.
     
    zuma2 и DPOH-VAR нравится это.
  4. Автор темы
    DPOH-VAR

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

    Баллы:
    153
    Skype:
    dpohvar
    Да мне как-то не жалко. Пусть хоть каждый второй школьник балуется с командами. Может даже чему научится, и в будущем это пригодится. ;)


    А вот с туториалами беда. Конечно, много команд заимствовано из форта (те же переменные, циклы, IF, и прочее) и я даю им минимум описания, предполагая, что пользователь знаком с фортом.
    Некоторые команды пришлось переделать, например цикл со счетчиком:
    Varscript 0.3.X --- конец начало DO ... LOOP (Forth)
    Varscript 0.4.X --- конец начало DO команда/функция или конец начало DO { ... }
    Varscript 0.5 --- конец начало :DO{...} или конец начало функция LOOP
    Для них я на офф сайте составлю небольшой туториал (eng), и думаю что этого будет достаточно.
    Не торопись)
    Varscript 0.4 и VarScript 0.5 совершенно разные плагины. Из общего у них только стековая система, обратная польская запись, 95% команд.. и всё...
    0.5 - функциональный и объектно-ориентированный, в отличие от 0.4
    Заметил интересную вещь: чем новее варскрипт, тем больше у него уровней:

    * Varscript 0.5 [программа->поток->функция->команда]
    Последние три уровня слизаны с ECMAScript

    * Varscript 0.4 [программа->поток->байткод]
    Впервые начал использовать виртуальные потоки

    * Varscript 0.3, 0.2 [программа->байткод]
    постоянный ConcurrentModificationException из за порождения реальных потоков

    * Varscript 0.1 [массив слов]
    аще ужос, но на нем написана первая змейка!!!

    В версии 0.6 ожидайте синтаксис Lisp и кортежи. Шутка.
    [DOUBLEPOST=1377088244,1373294484][/DOUBLEPOST]Оказалось, что подключить JavaScript не так уж и сложно... прошло всего каких-то полгода :D
    Тем не менее, для всех, кто отписался за JS, хочу представить то, что у меня имеется.

    Создаем такой вот файл test.js
    Код:
    importClass(org.bukkit.inventory.ItemStack)
     
    var item = new ItemStack(args[0]);
    me.sendMessage("take "+item+" to you");
    me.getInventory().addItem([item]);
    Пишем команду:
    /js>file test 261
    и вуаля! У нас в руках лук.

    Также можно исполнить скрипт прямо из чата:
    /js> me.setHealth(10);

    И вот еще несколько полезных функций для регистрации событий:
    Код:
    program.send(object) // распечатает объект на экране
     
    print(object) // распечатает объект в консоли
     
    trigger = program.onTicks(function(){
        // функция исполнится через ticks тиков
    },ticks)
     
    trigger = program.everyTicks(function(){
        // функция будет исполняться каждые ticks тиков
    },ticks)
     
    trigger = program.everyTicks(function(){
        // функция будет исполняться каждые ticks тиков
        // начиная через delay тиков
    },ticks,delay)
     
    trigger = program.onTimeout(function(){
        // функция исполнится через time миллисекунд
    },time)
     
    trigger = program.everyTimeout(function(){
        // функция будет исполняться каждые time миллисекунд
    },time)
     
    trigger = program.onEvent(function(event){
        // регистрация события.
        // функция будет исполняться при событии event
    },eventType)
     
    trigger = program.onEvent(function(event){
        // регистрация события с указанным приоритетом
    },eventType,priority)
     
    // eventType можно указать в виде текста
    // priority - в виде текста или числа.
     
    trigger.unregister() // отключить триггер
     
    program.setFinished() // завершение программы.
    // по факту она не завершится сразу, а отключатся все триггеры
    // и новые зарегистрировать будет невозможно
    //программа завершается сама, если нет рабочих триггеров
    
    Всё это будет в VarScript 0.5.5

    Дополнительно:
    Переменные между vs и js синхронизированы
    js не читает переменные пользователя, если читаем скрипт из файла
    js не может исполнить функции vs;
    js может создать runnable, который потом можно исполнить с помощью vs

    Для желающих опробовать - могу скинуть плагин в личку до релиза.

    Имеется лазейка и для других языков:
    /script> <язык> <код>
    Но перед этим его надо подключить к ScriptEngineManager (например сторонним плагином или модулем varscript)

    UPD:
    Добавлены модули и автозагрузка. Точно также, как и у varscript
     
    Sirse нравится это.

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