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

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

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

  1. Focher

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

    Баллы:
    21
    Этой ошибки уже нет. Она была когда я поднимал блок. Возможно когда я менял строку о зачислении денег (деньги кст не зачисляет).

    А эти строки он не понимает, не в этом проблема:
    Код:
    if event-entity is gold block:
            if event-entity's name contains "$":
    Какой у тебя стоит mirror и версия ядра, попробую протестить всё это у себя и начну подбирать версию mirror под своё ядро, если не найду, видимо нужно апать версию ядра

    Ещё хотел узнать как сделать, чтобы любой золотой блок не запускал скрипт или проще запретить выбрасывать и ставить их.
     
    Последнее редактирование: 21 июл 2019
  2. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay


    Код:
    on break:
        chance of 100%:
            set {_number} to random integer between 1 and 10 #получаем рандом значение
            drop gold block named "&2%{_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 #прибавляем полученное число к балансу игрока
        send "Вы получили %{_number}% баксов" to player
        delete item  #удаляем предмет
        cancel event
    on item spawn: #это не трогать))
        if event-item is gold block:
            if event-item's name contains "&2$":
                event-entity.setCustomNameVisible(true)
                event-entity.setCustomName(event-entity.getItemStack().getItemMeta().getDisplayName() ? "%event-entity.getItemStack()%")
    Собстна мой код, который я протестил, все работает, версия PaperSpigot 1.12.2, самая последняя версия skript mirror 1.0.0.
     
  3. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay

    Добавил в описание предмета $$$ и потом просто проверяю.
    Код:
    on break:
        chance of 100%:
            set {_number} to random integer between 1 and 10 #получаем рандом значение
            drop gold block named "%{_number}% $" with lore "$$$" at location of event-block
    
    #При подбирании золотого блока
    on pick up of gold block:
        if event-item's lore contains "$$$":
            set {_number} to first element out of (split name of item at " ") #чекаем название нашего предмета, которое состоит из двух элементов: числа и $, получаем число и идем дальше
            add {_number} to player's balance #прибавляем полученное число к балансу игрока
            send "Вы получили %{_number}% баксов" to player
            delete item  #удаляем предмет
            cancel event
    on item spawn: #это не трогать))
        if event-item is gold block:
            if event-item's name contains "$":
                if event-item's lore contains "$$$":
                    event-entity.setCustomNameVisible(true)
                    event-entity.setCustomName(event-entity.getItemStack().getItemMeta().getDisplayName() ? "%event-entity.getItemStack()%")
     
  4. Focher

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

    Баллы:
    21
    СУПЕР!
     
  5. Focher

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

    Баллы:
    21
    Вот такая ещё проблема с сообщениями в чате

    Ещё траблы были и с самим плагином skript, поставил последнюю версию и спигот 1.12.2 (кст почему именно эта версия? :))
     

    Вложения:

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

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    в чем именно проблема

    как по мне, самая нормальная версия) ну это лично мое мнение
     
  7. Focher

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

    Баллы:
    21
    Скрин приложил. Добавляет новую сумму к предыдущей и выводит в чат это.
     
  8. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    чегооо.. это ты шото накосячил)) т.к. я тестил, все работало. Скинь код.
     
  9. Focher

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    да ну я хз, у меня все ворк.
     

    Вложения:

  11. Focher

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

    Баллы:
    21
    Мейби скинь свой скрипт jar
    И я думаю это можно публиковать отдельно как полноценный плагин :) получилась годная штука
     
  12. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    В личку скинул, если что.
     
  13. synthetic

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

    Баллы:
    76
    Пытался найти плагин для манипуляций с NBT. Нашел SkStuff и Sk-NBeet, но на версии 1.7.10 они оба отказываются работать, ругаются, что устарела. А код который ты запостил нужен был тееб именно для этого, чтобы работать с NBT на 1.7.10 ? Насколько эта рефлексия медленна? =)
     
  14. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    Нет, не для 1.7.10, а просто для личных целей.
    Не знаю, будет ли он работать на 1.7.10, но вот фулл версия кода, если надо. Он чуток отличается от той первой.

    Код:
    import:
        java.lang.Object
        java.util.List
        java.util.Arrays
        java.util.ArrayList
        org.*********ventory.ItemFlag
        org.bukkit.enchantments.Enchantment
        org.*********ventory.meta.ItemMeta
    
    import:
     
        java.lang.String
        java.util.regex.Pattern
     
        org.bukkit.Bukkit
        org.bukkit.entity.Entity
        org.*********ventory.ItemStack
     
        ch.njol.skript.Skript
        ch.njol.skript.util.Version
        ch.njol.skript.aliases.ItemType
    
    
    option nms-version:
        get:
            return Bukkit.getServer().getClass().getPackage().getName().split("\.")[3]
    
    
    import:
       
        org.bukkit.craftbukkit.{@nms-version}.inventory.CraftItemStack
        org.bukkit.craftbukkit.{@nms-version}.block.CraftBlock
       
        net.minecraft.server.{@nms-version}.ItemStack as NMSItemStack
        net.minecraft.server.{@nms-version}.NBTTagCompound
        net.minecraft.server.{@nms-version}.NBTTagList
        net.minecraft.server.{@nms-version}.MojangsonParser
        net.minecraft.server.{@nms-version}.BlockPosition
        net.minecraft.server.{@nms-version}.NBTTagString
        net.minecraft.server.{@nms-version}.Item
        net.minecraft.server.{@nms-version}.Items  
     
    local itemtypes property item NBT:
        get:
            set {_item} to CraftItemStack.asNMSCopy(expression-1.getRandom())
            set {_nbt} to {_item}.getTag() if {_item}.hasTag() is true, else new NBTTagCompound()
            return {_nbt}
    
        add string:
            set {_appended-nbt} to MojangsonParser.parse(change value)
       
            loop expressions-1:
                set {_item} to CraftItemStack.asNMSCopy(loop-value.getRandom())
       
                if {_appended-nbt} is set:
    
                    if {_item}.hasTag() is true:
                        {_item}.a({_appended-nbt})        
                    else:
                        {_item}.setTag({_appended-nbt})
    
                    set {_meta} to CraftItemStack.getItemMeta({_item})
                    loop-value.setItemMeta({_meta})
         
        remove string:
            set {_removed-nbt} to MojangsonParser.parse(change value)
       
            loop expressions-1:
                set {_item} to CraftItemStack.asNMSCopy(expression-1.getRandom())
    
                if {_removed-nbt} is set:
                    {_item}.hasTag() is true
                    {_item}.remove({_removed-nbt})
    
                    set {_meta} to CraftItemStack.getItemMeta({_item})
                    loop-value.setItemMeta({_meta})
    
        set string:
            set {_new-nbt} to MojangsonParser.parse(change value)
       
            loop expressions-1:
                set {_item} to CraftItemStack.asNMSCopy(loop-value.getRandom())
    
                if {_new-nbt} is set:
                    {_item}.setTag({_new-nbt})
    
                    set {_meta} to CraftItemStack.getItemMeta({_item})
                    loop-value.setItemMeta({_meta})
    
    
    
    blocks, itemtypes property NBT:
      get:
        if expression-1 is an instance of ItemType:
          return item nbt of expression-1
     
      set string:
        if expressions-1 are an instance of ItemType:
          set item nbt of expressions-1 to change value
    
      add string:
        if expressions-1 are an instance of ItemType:
          add change value to item nbt of expressions-1
    
      remove string:
        if expressions-1 are an instance of ItemType:
          remove change value from item nbt of expressions-1
                   
    expression %itemtype% with nbt %string%:
        get:
            set {_item} to expression-1
            set item nbt of {_item} to expression-2
            return {_item}
    
    command /adt:
        permission: admin.admin
        trigger:
            add "{AttributeModifiers:[{Slot:""mainhand"", AttributeName:""generic.attackDamage"", Name:""generic.attackDamage"", Amount:20, Operation:0, UUIDLeast:1, UUIDMost:1}]}" to item nbt of player's tool

    Хз
     
  15. centurion2

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

    Баллы:
    61
    Пытаюсь создать основную часть своей экономики на проекте, суть в точках генерации определенного типа ресурса - железо, дерево, алмазы итд, они генерируются только если игрок рядом, необходимо чтобы они генерировались постоянно. Саму генерацию ресурсов любого типа можно сделать через спавнеры в ванилле и якоря, но дальше встает проблема организации контроля этой точки. Мне необходимо сделать так, чтобы игрок мог контроллировать точку и получать с нее ресурсы, чтобы одновременно с этим у других игроков была возможность ее захватить. Пытался сделать через плагины ворлдэдит, ареашоп и лакипермс, но в голову так ничего и не пришло. Есть ли возможность реализовать это с помощью скрипта? И тот же вопрос про генерацию ресурсов. Я недавно узнал про этот язык, да и в целом не очень разбираюсь. Заранее спасибо.
     
  16. YarTim

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

    Баллы:
    76
    Имя в Minecraft:
    Kkktttuu
    Можете сказать мне как сделать вот что:

    1 скрипт. Пример. Если блок сломан с помощью взрыва (ID блока: 9999 к примеру), то: установить на его предыдущие координаты блок (ID: 10000, к примеру)

    2 скрипт. Пример. Если игрок вводит команду (/craftaxe к примеру), то: проверить есть ли у игрока в инвентаре ЖЕЛЕЗНЫЙ_СЛИТОК - 3; ПАЛКА - 2 (3 и 2 - это количество) и если проверка была успешна - удалить/изъять эти предметы и выдать игроку ЖЕЛЕЗНЫЙ_ТОПОР.

    Пожалуйста, если не очень трудно, ответьте мне. Заранее спасибо .
     
  17. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    Не за пк - протестить не могу, но чекни:
    Код:
    on explosion:
        loop exploded blocks:
            if loop-block is glass:
                set loop-block to stone
          
    
     
  18. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    Код:
    command /craftaxe:
        trigger:
            if player's inventory contains "3 of iron ingot" parsed as itemtype:
                if player's inventory contains "2 of stick" parsed as itemtype:
                    remove 3 of iron ingot from player
                    remove 2 of stick from player
                    give iron axe to player
    Чекни
     
  19. YarTim

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

    Баллы:
    76
    Имя в Minecraft:
    Kkktttuu
    А если я буду делать много событий такого "крафта" мне придется каждый раз создавать новый скрипт файл или можно поместить все в один?
     
  20. Автор темы
    Flajakay

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

    Баллы:
    76
    Имя в Minecraft:
    Flajakay
    Можно в один
     

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