Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

add %{50}% to player's balance

попробуй это
Код:
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!
 
И да, как этот сскрипт скажется на работе серва, если блоки будут ломать 50 чел одновременно.

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

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

А вот двойные циклы нужно писать очень аккуратно и оптимизировать их.
 
set {_number} to first element out of (split name of item at " ") <------------ что это делает?

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

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

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

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

таким образом в переменной "{_number}" окажется первое слово из имени предмета ("100").
 
попробуй это
Код:
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!

Мощь! Где бы про это почитать?
 
Мощь! Где бы про это почитать?
Как он уже писал ранее, это skript-mirror. На мой взгляд, это уже перебор, и на этапе такой надобности больше смысла имеет пользование самой Java и написание плагинов, нежели подобное. Хотя бы просто потому что нагромождение такого скриптинга может довольно сильно нагрузить сервер.
 
Огромное спасибо всем!!!
И всё ещё не получается вывести сообщение игроку, мол ты получил 100 баксов (когда поднимаешь предмет).

Не ставились последнии версии mirror'a установил v0.7.1
Код:
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()%")
Ошибка в консоли:
Код:
[ERROR]: Item entity 4858 has no item?!
Скрин ошибки при релоаде скрипта:
 

Вложения:

  • 2019-07-21_13.57.43.png
    2019-07-21_13.57.43.png
    Размер файла
    6,4 КБ
    Просмотров
    12
И я так понимаю стоит изменить в названии предмета "$" на какой-нить код, ибо любой сможет переименовать золотой блок и абузить деньги?
 
Огромное спасибо всем!!!
И всё ещё не получается вывести сообщение игроку, мол ты получил 100 баксов (когда поднимаешь предмет).

Не ставились последнии версии mirror'a установил v0.7.1

Ошибка в консоли:
Код:
[ERROR]: Item entity 4858 has no item?!
Скрин ошибки при релоаде скрипта:
Странно.. У меня никаких ошибок нет. Скинь весь код.

И насчет skript-mirror, там существенная разница между этими версиями. Ты откуда его качал, с гитхаба?
И какая у тебя версия майнкрафта?
 
Странно.. У меня никаких ошибок нет. Скинь весь код.
Код почти не трогал, убрал только отмену ивента на выпадение блока (это должна быть замена плагина jobs)

И насчет skript-mirror, там существенная разница между этими версиями. Ты откуда его качал, с гитхаба?
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)
 
Код почти не трогал, убрал только отмену ивента на выпадение блока (это должна быть замена плагина jobs)


https://forums.skunity.com/resources/skript-mirror.254/history (скорее всего проблема в версии mirror)


This server is running CraftBukkit version git-Spigot-db6de12-18fbb24 (MC: 1.8.8) (Implementing API version 1.8.8-R0.1-SNAPSHOT)
Ну ты и древнииий))) 1.8.8 юзаешь... Понятно почему у тебя новый skript-mirror не встает.
И кстати говоря, на skunity версия 0.19.1 самая последняя, а на гитхабе 1.0.0

Потому держи: v1.0.0
 
Не хочет
Код:
[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
 
И всё ещё не получается вывести сообщение игроку, мол ты получил 100 баксов (когда поднимаешь предмет).

Смотри, если ты хочешь отправить просто сообщение, которое не включает в себя переменные, юзай send "вы получили 10 баксов!" to player, ну это как пример.
В том коде, что я тебе скинул, имеется переменная {_number}, ее значение = числу этих самых баксов, которые прибавятся к балансу игрока.
send "вы получили %{_number}% баксов" to player
 
send "вы получили %{_number}% баксов" to player
Кстати спасибо.
Но прикол в том, что send не юзается в разделе "on pick up of gold block:" даже пробовал вставлять между разными строками. Выводилось только в mine block
 
Ошибка в консоли:
Код:
[ERROR]: Item entity 4858 has no item?!
Скрин ошибки при релоаде скрипта:
попробуй заменить
Код:
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()%")
 

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

Назад
Верх