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

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

А на 1.7.2/4 всё действует?
Не могли бы скинуть папку VarScript с Hell Jump
К сожалению HellJump не работает на 1.7. Только на 1.5(Со старой версией PowerNBT).
Я уже сказал DPOH-VAR'у, он работает над исправлением.
 
Помогите!
Когда проверяю
Код:
/> @Helljump PRINT
/> @PlayerSaver PRINT
Пишет null!!!
Versions:
VarScript 0.5.4.
PowerNBT v0.5.1 beta
-------------------
Helljump кинул в plugins/VarScript/scripts/vs/modules
PlayerSaver кинул в plugins/VarScript/scripts/vs/modules
FirstArena кинул в plugins/VarScript/tasks
----
В чём дело?
Может кто-то сделает туториал(видио урок) по Helljump?
 
HellJump не работает на bukkit 1.7
Новая версия в процессе, но она будет на груви.
hj.png
 
Помогите!
Когда проверяю
Код:
/> @Helljump PRINT
/> @PlayerSaver PRINT
Пишет null!!!
Versions:
VarScript 0.5.4.
PowerNBT v0.5.1 beta
-------------------
Helljump кинул в plugins/VarScript/scripts/vs/modules
PlayerSaver кинул в plugins/VarScript/scripts/vs/modules
FirstArena кинул в plugins/VarScript/tasks
----
В чём дело?
Может кто-то сделает туториал(видио урок) по Helljump?
Тебе уже сказали что не работает на 1.7.
 
Модуль BHTTPServer

это небольшой HTTP сервер, написанный на груви
простое и удобное решение для создания веб-интерфейса с использованием AJAX
exm.png
Зависимости:
  • VarScript 0.5.7 or или более поздний o.5.x
  • Java 7 или Java 8 с опцией -noverify
Установка:
  • Установить VarScript
  • Установить Groovy:
    • Создаем директорию ./lib в корне сервера
    • Скачиваем Groovy (binary zip)
    • Находим groovy-all-*-indy.jar и кладем его в директорию ./lib
  • Запустить сервер
  • Дождаться сообщения:
    [VarScript] load Groovy Scripting Engine 2.0
    lang: Groovy 2.2.0-rc-3
    name: groovy,Groovy
    extension: groovy
  • Остановить сервер
  • Установить модуль BHTTPServer:
    • Скачиваем BHTTPServer.groovy
    • Кладем его в ./plugins/VarScript/scripts/Groovy/modules/
    • Открываем в блокноте и изменяем конфигурацию (в конце файла):
      def server = BukkitHTTPServer.newServer([
      host: "0.0.0.0", // рабочий адрес http сервера
      port: 8011, // http порт
      pathStatic: "webserver/static", // статичный контент
      pathExecute: "webserver/execute", // обработчики, скрипты​
      ])
  • Запустить сервер и дождаться сообщения:
    [VarScript] [Groovy] <#> module BHTTPServer loaded.
  • Создать index.html в static директории
  • Готово: http://localhost:8011
Использование:

pathStatic - это директория с статичными страницами и файлами. Там нужно располагать html, js, и другие файлы

pathExecute - директория со скриптами
Для написания скриптов можно использовать groovy, javascript или любой другой язык, совместимый с варскриптом.
Запрос вида http://localhost:8011/login попытается запустить скрипт ./webserver/execute/login.js или ./webserver/execute/login.groovy

В скриптах доступны переменные:
method - метод. строка: "GET", "POST", "OPTIONS" и т.д.
query - мапа <string, string> содержащая запрос в ссылке
cookie - мапа <string, string> содержащая куки
session - мапа <string,?> содержит переменные текущей сессии
exchange - интерфейс для работы с http-запросом и ответом
Также доступен весь Bukkit API
Можно добавить свои jar библиотеки или классы в директорию ./lib
JavaScript:
// добавить HTTP заголовок в ответ
exchange.header("Expires","Tue, 31 Jan 2012 15:02:53 GMT")
// установить статус ответа
exchange.setStatus(200)
// отправить статус и заголовки
exchange.sendHeaders()
// отправить чистый текст
exchange.send("text")
// отправить массив байт
exchange.send( new File("filename.txt") )
// распарсить object как строку JSON и отправить клиенту
exchange.sendJson( object )
// установить куки
exchange.setCookie("key", "val", )
// установить куки со сроком годности
exchange.setCookie("key", "val", new Date() )
// закрыть соединение
exchange.close()
// исполнить файл и вернуть результат
def result = exchange.include("filename.js")
// прочитать JSON-объект из тела запроса
def json = excnange.getJson()
// получить JSON-объект из строки
def json = excnange.getJson('{"foo":"bar"}')
если скрипт вернет строку или файл - от будет отправлен клиенту
если скрипт вернет true - соединение останется открытым

Для языка groovy доступны следующие алиасы:
Код:
include "filename.groovy" // подключить файл
setStatus 404 // установить статус ответа
header "Content-Type", "text/html" // добавить заголовок
sendJson([a:1, b:2]) // отправить объект как JSON строку
send "text" // просто отослать текст
send new File("filename") // отправить файл
setCookie "key", "value", new Date() + 10 // установить куки на 10 дней
getJson() // прочитать объект JSON из тела запроса
Пример: login.groovy: Позволяет авторизоваться на сайте при помощи AuthMe
Код:
import fr.xephi.authme.api.API

if (method != "POST") return "POST only"

switch (query.action) {
    case "logout":
        session.player = null

    case "check":
        return asJson([player: session.player])

    case "login":
        def auth = API.checkPassword query.login, query.password
        if (auth) session.player = query.login
        else session.player = null
        return asJson([result: auth, player: session.player])
}
Скачать этот пример (.html-ки и скрипты на groovy. он на скриншоте)
 
Модуль BHTTPServer

это небольшой HTTP сервер, написанный на груви
простое и удобное решение для создания веб-интерфейса с использованием AJAX
Посмотреть вложение 18449
Зависимости:
  • VarScript 0.5.7 or или более поздний o.5.x
  • Java 7 или Java 8 с опцией -noverify
Установка:
  • Установить VarScript
  • Установить Groovy:
    • Создаем директорию ./lib в корне сервера
    • Скачиваем Groovy (binary zip)
    • Находим groovy-all-*-indy.jar и кладем его в директорию ./lib
  • Запустить сервер
  • Дождаться сообщения:
    [VarScript] load Groovy Scripting Engine 2.0
    lang: Groovy 2.2.0-rc-3
    name: groovy,Groovy
    extension: groovy
  • Остановить сервер
  • Установить модуль BHTTPServer:
    • Скачиваем BHTTPServer.groovy
    • Кладем его в ./plugins/VarScript/scripts/Groovy/modules/
    • Открываем в блокноте и изменяем конфигурацию (в конце файла):
  • Запустить сервер и дождаться сообщения:
    [VarScript] [Groovy] <#> module BHTTPServer loaded.
  • Создать index.html в static директории
  • Готово: http://localhost:8011
Использование:

pathStatic - это директория с статичными страницами и файлами. Там нужно располагать html, js, и другие файлы

pathExecute - директория со скриптами
Для написания скриптов можно использовать groovy, javascript или любой другой язык, совместимый с варскриптом.
Запрос вида http://localhost:8011/login попытается запустить скрипт ./webserver/execute/login.js или ./webserver/execute/login.groovy

В скриптах доступны переменные:
method - метод. строка: "GET", "POST", "OPTIONS" и т.д.
query - мапа <string, string> содержащая запрос в ссылке
cookie - мапа <string, string> содержащая куки
session - мапа <string,?> содержит переменные текущей сессии
exchange - интерфейс для работы с http-запросом и ответом
Также доступен весь Bukkit API
Можно добавить свои jar библиотеки или классы в директорию ./lib
JavaScript:
// добавить HTTP заголовок в ответ
exchange.header("Expires","Tue, 31 Jan 2012 15:02:53 GMT")
// установить статус ответа
exchange.setStatus(200)
// отправить статус и заголовки
exchange.sendHeaders()
// отправить чистый текст
exchange.send("text")
// отправить массив байт
exchange.send( new File("filename.txt") )
// распарсить object как строку JSON и отправить клиенту
exchange.sendJson( object )
// установить куки
exchange.setCookie("key", "val", )
// установить куки со сроком годности
exchange.setCookie("key", "val", new Date() )
// закрыть соединение
exchange.close()
// исполнить файл и вернуть результат
def result = exchange.include("filename.js")
// прочитать JSON-объект из тела запроса
def json = excnange.getJson()
// получить JSON-объект из строки
def json = excnange.getJson('{"foo":"bar"}')
если скрипт вернет строку или файл - от будет отправлен клиенту
если скрипт вернет true - соединение останется открытым

Для языка groovy доступны следующие алиасы:
Код:
include "filename.groovy" // подключить файл
setStatus 404 // установить статус ответа
header "Content-Type", "text/html" // добавить заголовок
sendJson([a:1, b:2]) // отправить объект как JSON строку
send "text" // просто отослать текст
send new File("filename") // отправить файл
setCookie "key", "value", new Date() + 10 // установить куки на 10 дней
getJson() // прочитать объект JSON из тела запроса
Пример: login.groovy: Позволяет авторизоваться на сайте при помощи AuthMe
Код:
import fr.xephi.authme.api.API

if (method != "POST") return "POST only"

switch (query.action) {
    case "logout":
        session.player = null

    case "check":
        return asJson([player: session.player])

    case "login":
        def auth = API.checkPassword query.login, query.password
        if (auth) session.player = query.login
        else session.player = null
        return asJson([result: auth, player: session.player])
}
Скачать этот пример (.html-ки и скрипты на groovy. он на скриншоте)
А как же HellJump на Groovy? Работа идёт?
 
А как же HellJump на Groovy? Работа идёт?
он давно готов, но без командной оболочки.
http://exe.on.ufanet.ru/varscript/Helljump.groovy

Создание арены:
1) построить ее
2) встать в центр и ввести
/g>> loc = me.location
3) ввести
/g>> arena = new helljump_0_2.HellJumpArena("arena-name",loc,10)
тут "arena-name" - название арены
10 - радиус от центра
Готово!

Теперь чтобы начать играть со всеми, кто на сервере:
/g>> arena.start(Server.onlinePlayers as List)
Чтобы взять в игру только игроков только рядом с собой в радиусе 5 пишем
/g>> arena.start( Server.onlinePlayers.findAll {it.location.distance(me.location)<5})

Экстренная остановка текущей игры:
/g>> arena.stop()

Если арена надоела, можно ее удалить (завершить обработку)
/g>> arena.remove()

VarScript 0.6.1
​
Эта версия плагина работает только со скриптодвижками. Благодаря тому, что больше не нужно изобретать велосипед, размер jarки уменьшился с 1.2 мб до 46 кб.

Загрузчик классов
Все библиотеки и классы из директории ./lib теперь грузятся не отдельным загрузчиком, а тем же, который грузит плагины.

Поддержка синтаксиса
Вот несколько движков, с которыми я успел протестировать варскрипт:
python - jython 2.7.0 - OK.
ECMAScript - Mozilla Rhino 1.7 release 3 - OK
php - Caucho Quercus Script Engine 4.0.37 - не умеет ставить переменные
ruby - JSR 223 JRuby Engine 1.7.6 - не умеет читать и ставить переменные
Groovy - Groovy Scripting Engine 2.0 - OK
Scala - Scala Interpreter 1.0 - только для скриптов и библиотек
lua - Luaj Luaj-jse 3.0-beta2 - не читает и не ставит переменные
ECMAScript - Oracle Nashorn 1.8.0 - прячет локальные переменные
ECMAScript - Google V8 3.19.14 - не читает и не ставит переменные
Таким образом лучше всего lдля работы подходят groovy, python и javascript

Рабочее пространство
При исполнении команды игрок получает свое рабочее пространство. В нем он может хранить переменные, исполнять код, регистрировать события и таймеры. В любой момент его можно отключить, удалить или сменить. При отключении - останавливаются все таймеры и зарегистрированные события. При удалении - пропадают все сохраненные данные.
Пример:
/workspace set w1 - установлено рабочее пространство w1
/js> foo = "bar"
/js> print(foo)
- выведет bar
/workspace set w2 - установлено пространство w2
/js> print(foo) - ошибка, переменная foo не определена
/js> foo = "baz"
/js> print(foo)
- выведет baz
/workspace set w1 - вернулись на w1
/js> print(foo) - выведет bar

Скрипты
Все скрипты располагаются в ./plugins/VarScript/scripts/
Чтобы исполнить скрипт, нужно ввести имя файла полностью.
/>> myScript.js
Язык определяется расширением файла

Переменные
Доступные переменные, в порядке приоритета:
me - как и раньше
workspace - текущее рабочее пространство
server - сервер
pluginManager - менеджер плагинов
classLoader - загрузчик классов
server - сервер
переменные рабочего пространства
названия плагинов
общие пользовательские константы
пользовательские константы для конкретного языка (планируется)
имена игроков онлайн

Модули
А нету их :D и не будет.
Вместо модуля нужно создавать заранее рабочее пространство:
/plugins/VarScript/workspace/testWorkspace/TestWorkspace.js
Скрипт загрузится автоматически при старте сервера
имя папки и скрипта должны совпадать (но имя скрипта обязательно с прописной буквы в юниксах)
Модуль может состоять из нескольких файлов.
Чтобы подключить другой файл, можно использовать команду
workspace.include("NextFile.groovy")
Язык скрипта может не совпадать с текущим.
Старые модули не сложно переделывать под новый формат.

Команды
/engine - список доступных скриптодвижков
/engine [name] - информация о конкретном движке
/workspace - текущее рабочее пространство
/workspace list - просмотр всех загруженных
/workspace set [workspace] <player> - сменить себе или другому игроку
/workspace set-default [workspace] <player> - задать по умолчанию
/workspace get <player> - посмотреть рабочее пр-во у игрока
/workspace stop <workspace> - остановить пр-во (по имени или свое)
/workspace unload <workspace> - выгрузить пр-во
/workspace reload <workspace> - перезагрузить пр-во
/workspace load <workspace> - загрузить принудительно
/workspace unload-all - выгрузить пр-во
/workspace reload-all - перезагрузить пр-во
/workspace load-all - загрузить все неподгруженные пр-ва
/>> [script-file] - запустить скрипт в файле
/> [language] [lang-code] - исполнить команду на каком-либо языке
/g> [groovy-code] - исполнить команду на груви
/js> [javascript-code] - исполнить команду на js
/py> [python-code] - исполнить команду на питоне
 
Последнее редактирование:
он давно готов, но без командной оболочки.
http://exe.on.ufanet.ru/varscript/Helljump.groovy

Создание арены:
1) построить ее
2) встать в центр и ввести
/g>> loc = me.location
3) ввести
/g>> arena = new helljump_0_2.HellJumpArena("arena-name",loc,10)
тут "arena-name" - название арены
10 - радиус от центра
Готово!

Теперь чтобы начать играть со всеми, кто на сервере:
/g>> arena.start(Server.onlinePlayers as List)
Чтобы взять в игру только игроков только рядом с собой в радиусе 5 пишем
/g>> arena.start( Server.onlinePlayers.findAll {it.location.distance(me.location)<5})

Экстренная остановка текущей игры:
/g>> arena.stop()

Если арена надоела, можно ее удалить (завершить обработку)
/g>> arena.remove()

VarScript 0.6.1
​
Эта версия плагина работает только со скриптодвижками. Благодаря тому, что больше не нужно изобретать велосипед, размер jarки уменьшился с 1.2 мб до 46 кб.

Загрузчик классов
Все библиотеки и классы из директории ./lib теперь грузятся не отдельным загрузчиком, а тем же, который грузит плагины.

Поддержка синтаксиса
Вот несколько движков, с которыми я успел протестировать варскрипт:
python - jython 2.7.0 - OK.
ECMAScript - Mozilla Rhino 1.7 release 3 - OK
php - Caucho Quercus Script Engine 4.0.37 - не умеет ставить переменные
ruby - JSR 223 JRuby Engine 1.7.6 - не умеет читать и ставить переменные
Groovy - Groovy Scripting Engine 2.0 - OK
Scala - Scala Interpreter 1.0 - только для скриптов и библиотек
lua - Luaj Luaj-jse 3.0-beta2 - не читает и не ставит переменные
ECMAScript - Oracle Nashorn 1.8.0 - прячет локальные переменные
ECMAScript - Google V8 3.19.14 - не читает и не ставит переменные
Таким образом лучше всего lдля работы подходят groovy, python и javascript

Рабочее пространство
При исполнении команды игрок получает свое рабочее пространство. В нем он может хранить переменные, исполнять код, регистрировать события и таймеры. В любой момент его можно отключить, удалить или сменить. При отключении - останавливаются все таймеры и зарегистрированные события. При удалении - пропадают все сохраненные данные.
Пример:
/workspace set w1 - установлено рабочее пространство w1
/js> foo = "bar"
/js> print(foo)
- выведет bar
/workspace set w2 - установлено пространство w2
/js> print(foo) - ошибка, переменная foo не определена
/js> foo = "baz"
/js> print(foo)
- выведет baz
/workspace set w1 - вернулись на w1
/js> print(foo) - выведет bar

Скрипты
Все скрипты располагаются в ./plugins/VarScript/scripts/
Чтобы исполнить скрипт, нужно ввести имя файла полностью.
/>> myScript.js
Язык определяется расширением файла

Переменные
Доступные переменные, в порядке приоритета:
me - как и раньше
workspace - текущее рабочее пространство
server - сервер
pluginManager - менеджер плагинов
classLoader - загрузчик классов
server - сервер
переменные рабочего пространства
названия плагинов
общие пользовательские константы
пользовательские константы для конкретного языка (планируется)
имена игроков онлайн

Модули
А нету их :D и не будет.
Вместо модуля нужно создавать заранее рабочее пространство:
/plugins/VarScript/workspace/testWorkspace/TestWorkspace.js
Скрипт загрузится автоматически при старте сервера
имя папки и скрипта должны совпадать (но имя скрипта обязательно с прописной буквы в юниксах)
Модуль может состоять из нескольких файлов.
Чтобы подключить другой файл, можно использовать команду
workspace.include("NextFile.groovy")
Язык скрипта может не совпадать с текущим.
Старые модули не сложно переделывать под новый формат.

Команды
/engine - список доступных скриптодвижков
/engine [name] - информация о конкретном движке
/workspace - текущее рабочее пространство
/workspace list - просмотр всех загруженных
/workspace set [workspace] <player> - сменить себе или другому игроку
/workspace set-default [workspace] <player> - задать по умолчанию
/workspace get <player> - посмотреть рабочее пр-во у игрока
/workspace stop <workspace> - остановить пр-во (по имени или свое)
/workspace unload <workspace> - выгрузить пр-во
/workspace reload <workspace> - перезагрузить пр-во
/workspace load <workspace> - загрузить принудительно
/workspace unload-all - выгрузить пр-во
/workspace reload-all - перезагрузить пр-во
/workspace load-all - загрузить все неподгруженные пр-ва
/>> [script-file] - запустить скрипт в файле
/> [language] [lang-code] - исполнить команду на каком-либо языке
/g> [groovy-code] - исполнить команду на груви
/js> [javascript-code] - исполнить команду на js
/py> [python-code] - исполнить команду на питоне

Зависимости
Одно рабочее пространство может зависеть от другого.
Устанавливается зависимость так: Foo.js (foo зависит от bar)
bar = workspace.require("bar")
В этом случае произойдет загрузка пространства bar. В случае ошибки модуль foo тоже не загрузится.
если зависимость не жесткая, можно сделать так:
bar = workspace.depend("bar")
Теперь при ошибке bar просто будет равен null.
На самом деле эта часть еще нуждается в доработке

Регистрация событий и таймеров
Примеры регистрации событий на js и groovy
JavaScript:
var PlayerInteractEvent = org.bukkit.event.player.PlayerInteractEvent

// регистрация события
var handlerId = workspace.addHandler(function(event){
    // обработка события
    event.getPlayer().sendMessage("Interact")
},PlayerInteractEvent)
// остановка события
workspace.stopHandler(handlerId)
Код:
import org.bukkit.event.player.PlayerInteractEvent

def handlerId = workspace.addHandler( { event ->
    event.player.sendMessage "Interact"
} ,PlayerInteractEvent)
// остановка события
workspace.stopHandler handlerId
Python:
import org.bukkit.event.player.PlayerMoveEvent
PlayerMoveEvent=org.bukkit.event.player.PlayerMoveEvent
# регистрация
handlerId=workspace.addHandler(lambda event:
    event.getPlayer().sendMessage("move")
,PlayerMoveEvent)
# остановка
workspace.stopHandler(handlerId)

Регистрация периодичного таймера
JavaScript:
var period = 20 // период 20 тиков
var timerId = workspace.addInterval(function(){
    print("It's time!")
}, period)
// остановка
workspace.stopInterval(timerId)
Регистрация задержки
Python:
delay=100 # задержка
timerId=workspace.addTimeout(lambda:
    server.broadcastMessage("5 seconds left")
,delay)
# и остановка
workspace.stopTimeout(timerId)
Хочу вики(
 
Какой же большой и сложный велосипед, который по сути является игрушкой для собственного самообучения.
Смысл всего этого?
Смысл всего это развития, появление, отмирание возможностей, функциональностей, если всё это по сути используется только одним человеком, автором?
Это плагин не для широкой публики: документации нет, то, что есть - недостаточно, как этим пользоваться нормальному человеку не понятно.
Может быть стоит попробовать в сторону для народа? Чтобы этим начали в большем количестве пользоваться?

Мало того, что придумал свой собственный синтаксис (я же не ошибаюсь?), добавил какие-то извращения, чтобы работать с этим на js, потом ещё добавил поддержку других языков(не ошибаюсь?)
А на какой весь этот винегред обычному поцанёнку?

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

А пока, это игра в одни ворота.
 
Последнее редактирование:
Какой же большой и сложный велосипед, который по сути является игрушкой для собственного самообучения.
Смысл всего этого?
Смысл всего это развития, появление, отмирание возможностей, функциональностей, если всё это по сути используется только одним человеком, автором?
Это плагин не для широкой публики: документации нет, то, что есть - недостаточно, как этим пользоваться нормальному человеку не понятно.
Может быть стоит попробовать в сторону для народа? Чтобы этим начали в большем количестве пользоваться?

Мало того, что придумал свой собственный синтаксис (я же не ошибаюсь?), добавил какие-то извращения, чтобы работать с этим на js, потом ещё добавил поддержку других языков(не ошибаюсь?)
А на какой весь этот винегред обычному поцанёнку?

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

А пока, это игра в одни ворота.
1) Да, мой синтаксис varscript был велосипедом. Однако некоторым пользователям он показался удобнее, чем js или груви. В то время я не знал о существовании стандарта JSR-223, да и сейчас о нем мало кто знает, даже из профессиональных программистов. Сейчас я отказываюсь от VS-синтаксиса в пользу развития модулей на уже существующих языках.

2) Плагин используется только мной? Не смешите. Я согласен, что плагин не для широкой публики. Основное его предназначение - написание скриптов. Хотите писать скрипты - учите язык.
Изучить ECMAScript можно с нуля за 3-5 дней, если сильно хотеть. Для тех, кто знает хоть один ЯП - проблем не будет.

3) В этой теме я выкладываю кучу плюшек(модулей) с аренами, мини-играми и прочими ништяками. Если бы я делал это только для себя, не было бы смысла публиковать исходники.
Думаю, что под 0.6 стоит завести отдельную тему, т.к. плагины многим отличаются.
Я постепенно буду переписывать старые модули под 0.6 (во многих скриптах нужно лишь пару строчек заменить). Если нужен какой-то скрипт - пишите, поставлю в приоритет.
 
1) Да, мой синтаксис varscript был велосипедом. Однако некоторым пользователям он показался удобнее, чем js или груви. В то время я не знал о существовании стандарта JSR-223, да и сейчас о нем мало кто знает, даже из профессиональных программистов. Сейчас я отказываюсь от VS-синтаксиса в пользу развития модулей на уже существующих языках.

2) Плагин используется только мной? Не смешите. Я согласен, что плагин не для широкой публики. Основное его предназначение - написание скриптов. Хотите писать скрипты - учите язык.
Изучить ECMAScript можно с нуля за 3-5 дней, если сильно хотеть. Для тех, кто знает хоть один ЯП - проблем не будет.

3) В этой теме я выкладываю кучу плюшек(модулей) с аренами, мини-играми и прочими ништяками. Если бы я делал это только для себя, не было бы смысла публиковать исходники.
Думаю, что под 0.6 стоит завести отдельную тему, т.к. плагины многим отличаются.
Я постепенно буду переписывать старые модули под 0.6 (во многих скриптах нужно лишь пару строчек заменить). Если нужен какой-то скрипт - пишите, поставлю в приоритет.
Кучу плюшей и модулей выкладываешь ты, но вот чётко структурированной документации нет, хорошего исходного кода с подробными комментариями нет. Хорошего обоснования идеи нет, как и чёткого набора описания плюсов и минусов, только на собственном опыте и в ходе разборок можно с этим разбираться.
Нужно понижать порог вхождения в это дело.


Всё это я к чему, ты работаешь над замечательной идеей, у которой есть превосходный потенциал. Но этим потенциалом можешь воспользоваться только ты.
Сделай устойчивым вначале один язык, оформи к нему документацию, чтобы можно было воспользоваться полным пакетом благ. Под устойчивостью - я понимаю меньшее количество телодвижений, чтобы запустить скриптовое дополнение и минимальное количество телодвижений в поддержке актуальности (а то новая версия вышла - нужно переписывать).
 
Последнее редактирование:
Представляю вам еще одну безбашенную идею!
PowerTower
 
Можно ли на этом плагин сделать аномалии как в сталкере? А именно: игрок наступает на какой-нибудь блок, сверху блока появляется огонь, как от зажигалки, или же простой урон.
 
Можно ли на этом плагин сделать аномалии как в сталкере? А именно: игрок наступает на какой-нибудь блок, сверху блока появляется огонь, как от зажигалки, или же простой урон.
этим плагином можно всё сделать. вот сам и делай.
 
Назад
Верх