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

Утилита My World Edit Scripts

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем DrLego, 21 ноя 2013.

  1. Автор темы
    DrLego

    DrLego Активный участник

    Баллы:
    63
    My World Edit Scripts - проект Harch'a, члена Квадратной Команды.
    [​IMG]
    Он разработал 4 скрипта для известного мода/плагина WorldEdit, которые добавляют в него новые возможности. А именно:
    • AdvancedReplace - расширенная замена. Позволяет заменять один или все блоки на массу разных других блоков, с указыванием процентного соотношения.
    • AdvancedOverlay - расширенное покрытие. Позволяет покрыть блоки в выделенной зоне массой разных других блоков, с указыванием процентного соотношения.
    • SkyGridGen - генератор летающих островов.
    • UltraCommandBlock - Глобальный скрипт для работы с командными блоками. Как дополнительный бонус включает удобное стакование.
    Подробнее о скриптах: http://st.minecraft-moscow.com/my-world-edit-scripts/
    Работают с любым типом выделения.
    Функционал соответствует командам из WE (без Advanced), но есть дополнительная возможно выполнять это с неким процентным соотношением (как у команды set в стандартном WE). Так же, так как строка чата minecraftограничена в количестве символов, есть возможно чтения "маски" процентного соотношения из командного блока. Для этого необходимо внутрь выделения поместить командный блок и написать в него следующий текст:
    MASK:%mask%
    Где %mask% и есть наша маска.
    Формат команды:
    //cs AdvancedReplace <block_id> <mask>
    //cs AdvancedOverlay <block_id> <mask>

    Маска пишется стандартно, как у команды set в WE.
    Примеры использования команды:
    Без командного блока: //cs AdvancedReplace 35 50%35:1,20%35:3,30%35:4
    Или с командным блоком: //csAdvancedReplace 35 /getmask
    В командном блоке внутри выделения написано следующее:
    MASK:50%35:1,20%35:3,30%35:4
    С overlay все команды аналогичны. Эти два скрипта практически идентичны. Если у вас сумма процентов будет меньше 100 - остаток будет дополнен воздухом. Если больше 100 - будет учитываться только то, что до 100%.
    Чтобы прочитать помощь, написать следующее:
    //cs AdvancedReplace /?
    Чтобы узнать об авторе:
    //cs AdvancedReplace /author
    Это тестовый скрипт.
    Формат: //cs SkyGridGen <r1> <r2> <r3> <d1> <d2> <d3> [filemask]
    r%i%
    - количество блоков в обе стороны по соответствующей оси
    d%i% - расстояние между блоками по соответствующей оси
    filemask - чтение маски генерации из файла
    Маски генерации располагаются в папке WorldEdit/SkyGridMask
    Формат у них очень простой: Сначала ID блока, потом через пробел вероятность появления (не обязательно от 1 до 100, любое число, потом всё будет суммироваться и смотреться процентное соотношение).
    Со скриптом стандартно поставляется две маски - обычного мира (StandartMask, читается по умолчанию, если файл не указан) и чисто из песка. Они находятся в папке SkyGridMask. Эту папку надо положить в папку WorldEdit. К сожалению, песок будет падать, потому что таковы особености WE.
    Скрипт дописываться, скорее всего, не будет.
    Глобальный скрипт для работы с командными блоками. Как дополнительный бонус включает удобное стакование.
    ВАЖНО: Он работает ТОЛЬКО с выделениями типа cuboid! С остальными не работает (кроме одной команды, указано будет в её описании).
    ОЧЕНЬ ВАЖНО: изменения текста внутри командных блоков не отменяются командой //undo! Это особенность WE, я её исправить не могу, поэтому думайте перед каким-либо глобальным действием, чтобы не сделать ошибки!
    Команды в скрипте:
    //cs UltraCommandBlock /fill <text> [space_str] - заполнить все командные блоки в выделении текстом <text>. Важно: если в вашем тексте есть пробелы, то их НЕОБХОДИМО заменит на какую либо строку/символ (по вашему желанию, БЕЗ пробелов) и указать его как space_str.
    Примеры:
    //cs UltraCommandBlock /fill Hello
    //cs UltraCommandBlock /fill /tp___@a[x=1,y=2,z=3,r=4]___5___6___7 ___
    //cs UltraCommandBlock /fill /tpTHISISSPACE@a[x=1,y=2,z=3,r=4]THISISSPACE5THISISSPACE6THISISSPACE7 THISISSPACE
    //cs UltraCommandBlock /replace <text1> <text2> [space_str]
    - заменить <text1> на <text2> во всех командных блоках в выделении. Важно: если в вашем тексте есть пробелы, то их НЕОБХОДИМО заменит на какую либо строку/символ (по вашему желанию, БЕЗ пробелов) и указать его как space_str.
    Примеры:
    //cs UltraCommandBlock /replace Hello Hi
    //cs UltraCommandBlock /fill Hello Go$home! $
    //cs UltraCommandBlock /fill Hello,_SPACE_friends! Go_SPACE_home! _SPACE_
    //cs UltraCommandBlock /clear
    - очищает все командные блоки в выделении.
    Примеров использования даже писать не буду, ибо он только один :)
    //csUltraCommandBlock /version - узнать версию скрипта.
    //csUltraCommandBlock /author - прочитать об авторе скрипта.
    //csUltraCommandBlock /testerror - проверить наличие ошибок в командных блоках внутри выделения. Указывает саму ошибку и координаты командного блока с ошибкой. Так же предупреждает о пустых командных блоках.
    Следующие команды и составляют главный функционал этого скрипта.
    //cs UltraCommandBlock /stack - стакование выделения.
    Подробная справка: //cs UltraCommandBlock /stack /?
    //cs UltraCommandBlock /stack <number_of_stack> <mask> [flag]
    number_of_stack
    - сколько раз произвести стакование.
    mask - маска стакования. Нужна для заполнения командных блоков при стаковании. Если мы не хотим трогать командные блоки, или же их в выделении нет - пишем /no.
    Формат маски стакования: NAME_PARAM_1=VALUE_PARAM_1!STEP_PARAM_1;NAME_PARAM_2=VALUE_PARAM_2!STEP_PARAM_2;...
    Пример маски стакования: SuperX=1!2;SuperXX=34!45;SuperXXX=56!89;Yahoo=45!23;
    Теперь разберёмся, зачем нужна маска стакования и как она используется. Внутри командных блоков мы можем использовать переменные.
    Пример командного блока с переменными: /tp @a $SuperX$ $SuperXX$ $SuperXXX$
    Как видим, переменная может иметь любое имя, но чтобы показать, что это переменная, мы заключаем её в знаки $. Т.е. выглядит это так: $NAME$
    Причём скрипту не интересно, что именно там написано. Может быть любой текст, не обязательно команды. Например (текст в командном блоке): Yalublugulyat $NNN$ raz
    А маска нам указывает следующее: начальное значение переменной и её шаг при стаке.
    Начальное значение - сама переменная в исходном выделении. Каждый этап стакования к этой переменной прибавляется указанное второе значение. То есть маска x=1!1; положит переменную x в исходном выделении 1, в первом этапе стака 2, во втором этапе стака 3 и так далее. Может быть сколько угодно переменных. Так же, разумеется, если переменная в маске не указана - она скопируется в исходном формате. Т.е. можно делать сначала стак в одну сторону, меняя только одну переменную, потом стак вверх, к примеру, меняя вторую переменную и так далее. Подробнее это можно увидеть в видео.
    Пример:
    //cs UltraCommandBlock /stack 58 SuperX=1!2;SuperXX=34!45;SuperXXX=56!89;Yahoo=45!23;
    Но при таком стаковании в исходном выделении переменные не изменяются. Чтобы они изменялись - надо поставить флаг /a. Чтобы не изменялись - флаг /f. Это очень важно. Если поменять в исходном выделении переменные - вы их туда уже вернуть не сможете автоматически, только руками, так как //undo не отменяет изменения внутри командных блоков.
    Примеры:
    //cs UltraCommandBlock /stack 58 x=1!1; /a
    //cs UltraCommandBlock /stack 58 x=1!1; /f
    //cs UltraCommandBlock /stack 58 /no /a
    //cs UltraCommandBlock /stack 58 /no /f

    Если маска /no, то этот флаг не имеет смысла (/f или /a).
    Так же после этого можно ставить флаг направления (если не ставить - туда, куда смотрим).
    /n - север
    /w - запад
    /e - восток
    и так далее, по первой букве направления.
    Пример: //cs UltraCommandBlock /stack 58 /no /f /u - стакуем вверх, маски нет.
    Пример: //csUltraCommandBlock /stack 58 x=1!4; /f /d - стакуем вниз, x от 1 с шагом 4, в исходном выделении ничего не меняется.
    Но возникает вопрос - а зачем нам стак этот БЕЗ маски, если есть обычный стак WE?
    Дело в том, что есть ещё два параметра.
    Первый после направления - вектор сдвига при стаке. Каждый стак будет происходить сдвиг стакованного элемента по этому вектору. По умолчанию вектор сдвига 0,0,0.
    Пример использования: //cs UltraCommandBlock /stack 58 x=1!4; /f /d 0,-1,0 - стакуем вниз, x от 1 с шагом 4, в исходном выделении ничего не меняется, при стаке каждый шаг идёт сдвиг на один блок вниз, т.е. между "большими" блоками, которые стакуются, будет расстояние в один блок. Подробнее показано в видео.
    И второй параметр - блоки для стакования.
    Есть две возможно - указать, какие блоки стаковать или же указать, какие блоки не стаковать.
    +:id1,id2,... - стаковать ТОЛЬКО блоки с id1, id2, ...
    -:id1,id2,... - стаковать ВСЕ блоки кроме тех, у которых id1, id2, ...
    Поддерживается указание второго параметра id, т.е. 35:3 - шерсть определённого цвета.
    Так же если мы хотим, к примеру, охватить сразу ВСЮ шерсть, пишем 35:-1, т.е. второй -1 означает, что мы берём все возможные модификации блока.
    Если вы работаете с воздухом, настоятельно рекомендуется писать 0:-1 из-за ошибок генерации карты minecraft, я видел блоки воздуха с различными вторыми параметрами.
    Примеры:
    //cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 +:35:-1 - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем ТОЛЬКО шерсть (ВСЮ).
    //cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 +:35 - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем ТОЛЬКО БЕЛУЮ шерсть (НЕ ВСЮ).
    //cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 +:35,12 - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем ТОЛЬКО БЕЛУЮ шерсть (НЕ ВСЮ) и песок.
    //cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 -:35,12 - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем всё, кроме БЕЛОЙ шерсти (а другие цвета стакуем!) и песка.
    //cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 -:35,12 - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем всё, кроме ЛЮБОЙ шерсти и песка.
    //cs UltraCommandBlock /fix и //cs UltraCommandBlock /unfix
    Две команды для работы с абсолютными и относительными координатами.
    /fix - выполняет "фиксацию" выделения в мире, т.е. все координаты (КРОМЕ тех, которые находятся внутри квадратных скобок!) преобразовывает в абсолютные.
    /unfix - выполняет "разфиксацию" выделения в мире, т.е. все координаты (КРОМЕ тех, которые находятся внутри квадратных скобок!) преобразовывает в относительные.
    Пример:
    При /unfix команда в командном блоке вида /tp @p[x=1,y=2,z=3,r=4] 1 2 3 преобразуется в /tp @p[x=1,y=2,z=3,r=4] <x> <y> <z>, где то, что в <> скобках - относительные координаты (и наоборот, при /fix - в абсолютные)
    При таких действиях будет сохранятся работоспособность конструкции. Но перемещать её всё-равно в большинстве случаев будет нельзя, потому что есть ещё квадратные скобки, в них координаты могут ссылаться на другие части внутри механизма, при перемещении эти координаты будут ссылаться всё на те же места МИРА. Для этого есть флаг /all (для обеих команд) - делает то же самое, но ещё и в квадратных скобках. Minecraft НЕ поддерживает относительные координаты в квадратных скобках, поэтому при использовании /unfix /all для работы механизма после перемещения надо ОБЯЗАТЕЛЬНО выполнить /fix /all на нём. Подробнее показано в видео.
    //cs UltraCommandBlock /createtemplate
    Ну и осталась последняя команда, которая пока в стадии разработки. Эта команда работает с любым типом выделения. Мы что-либо выделяем и нам создаётся набор командных блоков по маске (пока доступно 4 переменных - $x$, $y$, $z$ и $block_id$, которые соответствуют координатам рассматриваемого блока из выделения и его id), которую мы записали в командный блок, на который встали. Всё подробно показано в видео. Описывать подробно не буду, так как команда не доработана.
    Примеры:
    //cs UltraCommandBlock /createtemplate
    //cs UltraCommandBlock /createtemplate +:12,34,56
    //cs UltraCommandBlock /createtemplate -:12,34,56

    Так же в данном скрипте раз в сутки выводится реклама, которая указывает на создателей скрипта и даёт их координаты для связи.
    В планах: доработка /createtemplate, на 1.7 версии создание функционала работы с вагонетками с командными блоками (их спавн, заполнение и так далее).
    Внимание! Для работы ЛЮБЫХ скриптов требуется наличие скриптового движка Rhino! Для сервера скопируйте файл js.jar из папки Rhino в папку: папка сервера/plugins/WorldEdit
    Для одиночной игры скопируйте файлы из архива js.jar в Винрар архив Application Data\.minecraft\bin\WorldEdit с заменой файлов.
    Чтобы установить скрипты нужно создать папку "craftscript" в папке "WorldEdit" и скопировать туда файлы скриптов с расширением .js
    Видео о скриптах:




     
    Ender-Effect нравится это.
  2. Хостинг MineCraft
    <
  3. Googleman

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

    Баллы:
    173
    Skype:
    google-apps
    Имя в Minecraft:
    Googleman
    Первое и второе итак без скриптов есть.
     
  4. DaemonTell

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

    Баллы:
    88
    Skype:
    daemontell
    Имя в Minecraft:
    DaemonTell
    видел такое же оформление на **-minecraft.ru
     
  5. Автор темы
    DrLego

    DrLego Активный участник

    Баллы:
    63
    Первого и второго без скриптов нету. Если есть, то попрошу рассказать как делать.
    Я постил где только мог) Но нигде не пустили
     
    ВремяПриключений нравится это.
  6. PYRO

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

    Баллы:
    78
    Я смотрю MM второй раз светится на руведре. В первый раз, если мне память не изменяет, вишер (жаль ушел, хотя подробностей не знаю) перевод бросал.
     
  7. Googleman

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

    Баллы:
    173
    Skype:
    google-apps
    Имя в Minecraft:
    Googleman
    //set 25%Stone,50%ironore,25%coalore это к первому
    А второе вроде //overlay с теми же параметрами что и set
     
  8. Harch

    Harch Активный участник

    Баллы:
    63
    На set такое правда есть. Но у меня не set, а replace. Т.е. замена. А вот такого в WE я не нашёл.
    Overlay и Replace с этими параметрами не работают :(
    Поэтому и написал эти скрипты.
    Но основной скрипт - UltraCommandBlock. ИМХО для мапмейкеров - очень хорошее решение.

    В будущем планируем на буржуйские форума запостить, в том числе и на форум с WE. Но для этого надо все мануалы переводить, а это очень сложная работа. Особенно если учесть, что я не знаю английского.
     
    Оригинало_о нравится это.
  9. Harch

    Harch Активный участник

    Баллы:
    63
    Теперь все скрипты можно скачать здесь: https://github.com/Harchvertelol/WorldEdit-CraftScripts

    Также написан новый скрипт на версию WE 7.1.0, видео уже снято на канале, скоро сделаю тему здесь.
     

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