1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал Skript - легкий и понятный скриптовый язык

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Flajakay, 5 фев 2019.

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

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    попробуй это
    Код:
    on break:
        cancel event
        set event-block to air
        chance of 7%:
            set {_number} to random integer between 1 and 10 #получаем рандом значение
            drop gold block named "%{_number}% $" at location of event-block
    
    
    # При подбирании золотого блока
    on pick up of gold block:
        set {_number} to first element out of (split name of item at " ") #чекаем название нашего предмета, которое состоит из двух элементов: числа и $, получаем число и идем дальше
        add {_number} to player's balance #прибавляем полученное число к балансу игрока
        delete item #удаляем предмет
        cancel event
    on item spawn: #это не трогать))
        if event-item is gold block:
            if event-item's name contains "$":
                event-entity.setCustomNameVisible(true)
                event-entity.setCustomName(event-entity.getItemStack().getItemMeta().getDisplayName() ? "%event-entity.getItemStack()%")
    Только установи Skript-mirror!
     
  2. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    launch "BURST" firework at player's location timed 0 coloured "white"


    Ник какого игрока, того, что убил гвардиана?
     
  3. cephalopoid

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

    Баллы:
    76
    Да
     
  4. synthetic

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

    Баллы:
    76
    Как показывает практика если в теле триггера (то есть программы, которая выполняется при наступлении события) нет циклов, то о потере производительности из-за использования Skript-а вообще не нужно беспокоиться.

    Если у тебя есть циклы размером 1000 итераций, то к этому уже нужно относиться с осторожностью. Например, каждый тик такой цикл повторять не стоит. Но сервер справится.

    А вот двойные циклы нужно писать очень аккуратно и оптимизировать их.
     
  5. synthetic

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

    Баллы:
    76
    name of item - возвращает строку, содержащую имя предмета ("100 баксов")

    split - разделить строку (по пробелам) и создать массив строк. Получится массив из двух элементов: "100", "баксов".

    first element out of - получить первый элемент массива

    set - записать в переменную

    таким образом в переменной "{_number}" окажется первое слово из имени предмета ("100").
     
  6. synthetic

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

    Баллы:
    76
    Мощь! Где бы про это почитать?
     
  7. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Как он уже писал ранее, это skript-mirror. На мой взгляд, это уже перебор, и на этапе такой надобности больше смысла имеет пользование самой Java и написание плагинов, нежели подобное. Хотя бы просто потому что нагромождение такого скриптинга может довольно сильно нагрузить сервер.
     
  8. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    Если ещё актуально:
    %attacker% - тот, кто убил/нанес урон
    %victim% - тот, кто умер/получил урон

    send "%attacker% тест" to players
     
  9. cephalopoid

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

    Баллы:
    76
    Спасибо)
     
  10. Focher

    Focher Новичок Пользователь

    Баллы:
    21
    Огромное спасибо всем!!!
    И всё ещё не получается вывести сообщение игроку, мол ты получил 100 баксов (когда поднимаешь предмет).

    Не ставились последнии версии mirror'a установил v0.7.1
    Ошибка в консоли:
    Код:
    [ERROR]: Item entity 4858 has no item?!
    Скрин ошибки при релоаде скрипта:
     

    Вложения:

  11. Focher

    Focher Новичок Пользователь

    Баллы:
    21
    И я так понимаю стоит изменить в названии предмета "$" на какой-нить код, ибо любой сможет переименовать золотой блок и абузить деньги?
     
  12. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    Странно.. У меня никаких ошибок нет. Скинь весь код.

    И насчет skript-mirror, там существенная разница между этими версиями. Ты откуда его качал, с гитхаба?
    И какая у тебя версия майнкрафта?
     
  13. Focher

    Focher Новичок Пользователь

    Баллы:
    21
    Код почти не трогал, убрал только отмену ивента на выпадение блока (это должна быть замена плагина jobs)

    https://forums.skunity.com/resources/skript-mirror.254/history (скорее всего проблема в версии mirror)
    Могу скинуть ошибку при попытке запустить новой версии mirror

    This server is running CraftBukkit version git-Spigot-db6de12-18fbb24 (MC: 1.8.8) (Implementing API version 1.8.8-R0.1-SNAPSHOT)
     
  14. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    Ну ты и древнииий))) 1.8.8 юзаешь... Понятно почему у тебя новый skript-mirror не встает.
    И кстати говоря, на skunity версия 0.19.1 самая последняя, а на гитхабе 1.0.0

    Потому держи: v1.0.0
     
  15. Focher

    Focher Новичок Пользователь

    Баллы:
    21
    :) онлайн хороший на такой версии + viaversion
    Ща чекну
     
  16. Focher

    Focher Новичок Пользователь

    Баллы:
    21
    Не хочет
    Код:
    [ERROR]: Error occurred while enabling skript-mirror v1.0.0 (Is it up to date?)
    java.lang.NoClassDefFoundError: ch/njol/skript/lang/function/Function
            at com.btk5h.skriptmirror.util.SkriptReflection.<clinit>(SkriptReflection.java:55) ~[?:?]
            at com.btk5h.skriptmirror.SkriptMirror.onEnable(SkriptMirror.java:25) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_211]
    Caused by: java.lang.ClassNotFoundException: ch.njol.skript.lang.function.Function
            at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_211]
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
            at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
            at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
            ... 13 more
     
  17. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    Смотри, если ты хочешь отправить просто сообщение, которое не включает в себя переменные, юзай send "вы получили 10 баксов!" to player, ну это как пример.
    В том коде, что я тебе скинул, имеется переменная {_number}, ее значение = числу этих самых баксов, которые прибавятся к балансу игрока.
    send "вы получили %{_number}% баксов" to player
     
  18. Focher

    Focher Новичок Пользователь

    Баллы:
    21
    Кстати спасибо.
    Но прикол в том, что send не юзается в разделе "on pick up of gold block:" даже пробовал вставлять между разными строками. Выводилось только в mine block
     
  19. Focher

    Focher Новичок Пользователь

    Баллы:
    21
    Забыл дописать ))))))))))))))))
    Но в прошлом скрипте выводилось и без "to player"
     
  20. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    попробуй заменить
    Код:
    on item spawn:
        if event-item is gold block:
            if event-item's name contains "$":
                event-entity.setCustomNameVisible(true)
                event-entity.setCustomName(event-entity.getItemStack().getItemMeta().getDisplayName() ? "%event-entity.getItemStack()%")
    на

    Код:
    on item spawn:
        if event-entity is gold block:
            if event-entity's name contains "$":
                event-entity.setCustomNameVisible(true)
                event-entity.setCustomName(event-entity.getItemStack().getItemMeta().getDisplayName() ? "%event-entity.getItemStack()%")
     

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