Плагин ShopLeveled

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

Доступен к покупке здесь - https://mcdev.su/product/shopleveled/

pageКвесты (Готовый пресет)pageФермер (Готовый пресет)pageАлхимик (Готовый пресет)pageОружейник (Готовый пресет)

Список основных компонентов плагина​

  • Список доступных плейсхолдеров:

    • %mls_level% – Уровень игрока

    • %mls_exp% – Количество опыта игрока.

    • %mls_level_exp% – Нужно до следующего уровня.

    • %mls_next_level% – Следующий уровень.

    • %mls_next_levelf% – Отличие от `%mls_next_level%`: Eсли следующий уровень последний, то он выдаст “Максимальный”.

    • %mls_booster% – Текущий бустер игрока (Выдаст имя если есть, если нету вернёт “Отсутствует”).

    • %mls_booster_count% – Число бустеров на складе.

    • %mls_completed_quests% – Число выполненных квестов игрока.

  • Список команд:

    • [mixlshop.admin.*] /lshop <Название магазина> (Игрок) – Открыть меню указанного магазина.

    • /lshop list – Список доступны магазинов

    • /lshop ver – Получить информацию о текущей версии плагина

    • /booster – Открыть меню бустеров.

    • [mixlshop.booster] /abooster give <Игрок> <Бустер> – Выдать игроку бустер.

    • /qstats – Просмотреть статистику квестов/уровней/опыта

  • Название trait’a: mixLeveledShop – Чтобы наложить трейт вам надо:

    • Выбрать нужного НПС-а

    • Ввести команду /trait mixLeveledShop

    • Зайти в конфиг

    • Поменять значение с default на нужное вам название магазина.

Конфиги плагина

  • Папка локализации​

    • Пример мультистраничного меню (menu/buy.yml)​

      • YAML:

        title: "{shopName}&r > Покупка"
        layout:
          - "$ $ $ $ B $ $ $ $"
          - "# # # $ $ $ # # #"
          - "@ @ @ @ @ @ @ @ @"
          - "@ @ @ @ @ @ @ @ @"
          - "# # < # _ # > # #"
        
        static:
          '#':
            stack:
              type: "BLUE_STAINED_GLASS_PANE"
              meta:
                name: " "
          '$':
            stack:
              type: "WHITE_STAINED_GLASS_PANE"
              meta:
                name: " "
        
        plugin:
          'B':
            type: "BALANCE"
            stack:
              type: "GOLD_NUGGET"
              meta:
                name: "&7Текущий баланс продавца: &6{balance} ❖"
          '_':
            type: "BACK"
            stack:
              type: "BARRIER"
              meta:
                name: "&c✖ &9&nНазад&c ✖"
        
        navigation:
          next:
            id: '>'
            has-next:
              stack:
                type: "ARROW"
                meta:
                  name: "&7Следующая страница &8»"
            not-next:
              stack:
                type: "BLUE_STAINED_GLASS_PANE"
                meta:
                  name: " "
          previous:
            id: '<'
            has-next:
              stack:
                type: "ARROW"
                meta:
                  name: "&8«&7 Предыдущая страница"
            not-next:
              stack:
                type: "BLUE_STAINED_GLASS_PANE"
                meta:
                  name: " "
        
        filler:
          id: '@'
          empty:
            stack:
              type: "GRAY_STAINED_GLASS_PANE"
              meta:
                name: "&9&nНету предмета!"
        
          fill:
            default:
              stack:
                meta:
                  # No need to provide type, it'll take it
                  # from your shop item
                  # Original item name will be overwritten
                  # name: "" # Uncomment if you need rename somehow item
                  # ----------------------
                  # Lore will be appended
                  lore:
                    - " "
                    - "{description}"
                    - " "
                    - " &9╔ &7Цена: &6{price} &8(-{percentage}%) &6❖"
                    - " &9╚ &7Наличие: §7(§4{current}§7/&a{max}&7)"
                    - " "
                    - " &7&o(( Нажмите чтобы купить ))"
            low-level:
              stack:
                meta:
                  type: "BARRIER"
                  name: "&9Невозможно купить!"
                  lore:
                    - " "
                    - "&7Вы пока не можете позволить купит себе"
                    - "&7этот предмет, так как у вас низкий"
                    - "&7уровень доверия!"
                    - " "
                    - "&7Вам нужен: &9{requiredLevel} уровень"
                    - " "
    • Пример обычного меню (menu/main-menu.yml)​

      • YAML:

        title: "{shopName}"
        layout:
          - "1 2 2 X X X 2 2 1"
          - "1 2 A X B X C 2 1"
          - "1 2 2 X X X 2 2 1"
        
        static:
          '1':
            stack:
              type: "BLUE_STAINED_GLASS_PANE"
              meta:
                name: " "
          '2':
            stack:
              type: "WHITE_STAINED_GLASS_PANE"
              meta:
                name: " "
        
        plugin:
          'A':
            type: "BUY"
            stack:
              type: "EMERALD"
              meta:
                name: "&9&nКупить&6 ❖"
                lore:
                  - " "
                  - "&7Тут можно купить различные товары,"
                  - "&7которые есть у «{shopName}&7»!"
                  - " "
                  - "&7&o (( Нажмите, чтобы посмотреть ассортимент ))"
          'B':
            type: "QUESTS"
            stack:
              type: "EXPERIENCE_BOTTLE"
              meta:
                name: "&9&nКвесты"
                lore:
                  - " "
                  - "&7Повышайте свой уровень доверия выполняя"
                  - "&7задания."
                  - " "
          'C':
            type: "SELL"
            stack:
              type: "CHEST"
              meta:
                name: "&9&nПродать&6 ❖"
                lore:
                  - " "
                  - "&7Здесь вы сможете продать различные"
                  - "&7предметы этому торговцу."
                  - " "
                  - "&7&o (( Нажмите, чтобы посмотреть ассортимент ))"
    • Языковой файл (language/ru.yml)​

      • YAML:

        prefix: "&7[&9DevShopLeveled&7]"
        defaults:
          rejoin: "Перезайдите на сервер! Возможно ваши данные не прогрузились поэтому это требует перезахода на сервер!"
          wait-until-click: "&7[&9Guard&7] Подождите перед тем как кликать!"
          unknown-shop: "{prefix} Невозможно найти магазин с идентификатором: &9{name}"
        
        traders:
          shops:
            buy:
              low-balance: "{prefix} На вашем счёте недостаточно средств для покупки этого предмета, вам надо &6{price} ❖&7, у вас есть &6{balance} ❖&7!"
              inventory-full: "{prefix} Ваш инвентарь переполнен, пожалуйста очистите его перед покупкой!"
              not-available: "{prefix} Товара нет в наличии, вы не можете его купить!"
              successfully: "{prefix} Вы успешно купили &9{type}&7 x &9{amount}&7, за &6{price}&7!"
            sell:
              low-balance: "{prefix} На счёте продавца недостаточно средств для покупки данного товара, зайдите к нему позже!"
              invalid-item: "{prefix} У вас нету &9{type}&7 x &9{amount}&7, для продажи!"
              storage-full: "{prefix} Складской отдел с этим предмет переполнен! Подойдите позже."
              successfully: "{prefix} Вы успешно продали &9{type}&7 x &9{amount}&7, за &6{price}&7!"
          quests:
            already-complete: "{prefix} Вы уже выполнили этот квест!"
            took-success: "{prefix} Вы успешно взяли квест &9&n{name}&7!"
            already-took: "{prefix} Вы уже взяли этот квест!"
            low-level: "{prefix} У вас слишком низкий уровень доверия, подойдите позже!"
            roots:
              auto-complete: "{prefix} Этот компонент выполняется автоматически!"
              already-complete: "{prefix} Вы уже выполнили этот компонент!"
            requirement:
              successfully-complete: "{prefix} Вы успешно выполнили Компонент &8#&9{id}&7!"
              bring-item:
                invalid-material: |-
                  &7У вас нету нужного материала в инвентаре, вернитесь позже!
                  &7У вас есть &9{type}&7: &9{current}/{required}
        
        experience:
          added: "{prefix} Вам был добавлен опыт, в размере &2&n{experience}&7!"
        
        booster:
          expired: "{prefix} У вас истёк бустер &9&n{name}&7!"
          inactive: "{prefix} У вас нету активного бустера на данный момент!"
          active-info: "{prefix} До конца действия бустера осталось: &9{time}"
          has-active: "{prefix} Вы не можете активировать этот бустер пока другой активен!"
          same-active: "{prefix} У вас уже действует этот бустер!"
          successfully-activated: "{prefix} Вы успешно активировали бустер &9&n{boosterName}&7 (Будет действовать: &9{time}&7)"
        
        commands:
          not-player: "{prefix} Вы должны быть игроком!"
          permission-denied: "{prefix} У вас недостаточно прав для выполнения данной команды!"
          user-not-load: "{prefix} Игрок ещё не успел прогрузится!"
          admin:
            reload: "{prefix} Вы успешно перезагрузили плагин! (Заняло: &9{took}&7)"
            success-open: "{prefix} Вы успешно открыли магазин &9{shopName}&7!"
            success-open-other: "{prefix} Вы успешно открыли магазин &9{shopName}&7 для игрока &9{playerName}&7!"
            list:
              header: "{prefix} Список магазинов: "
              delimiter: "&7, "
              placeholder: "{name}&7 &9&o({rawName})"
          admin-booster:
            success: "{prefix} Вы успешно выдали бустер &9{name}&7, игроку &9{playerName}&7!"
            unknown: "{prefix} Неизвестный бустер: &9{name}"
            list:
              header: "{prefix} Список бустеров: "
              delimiter: "&7, "
              placeholder: "{name}&7 &9&o({rawName})"
          user:
            stats: |-
              &7
              &7 Всего выполнено квестов: &9{completed}
              &7 Уровень: &9{level} &7({nextLevel})
              &7 Опыта: &9{currentExperience}&7/&9{levelExperience}
              &7
  • Основная папка​

    • config.yml​

      • YAML:

        # --
        # Блок mysql:
        # По стандарту будет использовать
        # SQL файл, если понадобиться подключить
        # к базе, всё что нужно сделать это просто
        # поставить use на true
        # --
        # Блок cache:
        # Тут можно просто настроить синхронизацию с помощью
        # redis'a, в связи с тем что всё кэшируется,
        # вы можете как использовать редис для этого так и обычную
        # локальную дату.
        # --
        # Блок level:
        # {current}, {next}, {previous}, {price}
        # --
        # Блок refill:
        # every > Кол-во тиков (Long значение)
        mysql:
          use: false
          host: "localhost"
          port: 3306
          user: "root"
          pass: "password"
          data: "leveled_shops"
          use-ssl: false
        cache:
          use: false
          host: "127.0.0.1"
          port: 6379
          use-auth: false
          user: "myuser"
          pass: "mypassword"
          use-ssl: false
        level:
          exp-formula: "{current} * 300"
          max-level: 50
        refill:
          every: 3600000
        redeposit:
          every: 3600000
        sum: 5000
    • boosters.yml​

      • YAML:

        # Увеличение конвертируется в проценты!
        # финальное значение = {начальное значение} + (({начальное значение} * {умножаемое}) / 100)
        # Пример:
        # 150 + ((150 * 50) / 100) = 225 < Это будет то число опыта которое упадёт на баланс
        # time обозначать в секундах!
        boosters:
          "xHalf":
            name: "Обычный бустер"
            mul: 50
            time: 86400
          "x2":
            name: "Необычный бустер"
            mul: 100
            time: 43200
          "x3":
            name: "Эпический бустер"
            mul: 200
            time: 21600
          "x4":
            name: "Легендарный бустер"
            mul: 300
        time: 10800
  • Папка с магазинами​

    • registery.yml​

      • YAML:

        # Формат регистрации:
        # "farmer":
        #   name: "&8&lФермер" # Название которое будет везде отображаться
        #   initial-balance: 200000 # Начальный баланс
        registered-shops:
          "farmer":
            name: "&8&lФермер"
            initial-balance: 200000
          "alchemist":
            name: "&8&lАлхимик"
            initial-balance: 200000
          "gunsmith":
            name: "&8&lОружейник"
        initial-balance: 200000
    • items.yml​

      • YAML:

        # Тут вы можете локализовать все нужные вам предметы.
        # Формат:
        # "<Название>":
        items:
          "anvil": "Наковальня"
  • Папка с магазином (В примере фигурирует Фермер "farmer")​

    • buy.yml​

      • YAML:

        # Формат:
        # "<Id>":#   <options>
        items:  "1":
            stack:
              type: STONE
              meta:
                name: "Name"
                lore:
                  - "Some lore"
        
                # Uncomment if need
                # -----------------
                # flags:
                #  - HIDE_ATTRIBUTES
                # enchants:
                #  - DURABILITY:1
                # potion-effects:
                #  "EFFECT_NAME":
                #    amplifier: ""
                #    duration: ""
            options:
              level: 1
              price: 650
              initial: 200
              refill: 1
              max: 200
    • sell.yml​

      • YAML:

        # Формат:
        # "<Id>":
        #   <options>
        items:  "1":
            stack:
              type: POTION
              meta:
                name: "Name"
                lore:
                  - "&7Особое зелье!"
                # Uncomment if need
                # -----------------
                # flags:
                #  - HIDE_ATTRIBUTES
                # enchants:
                #  - DURABILITY:1
                potion-effects:
                  "LUCK":
                    amplifier: 10
                    duration: 3000
            options:
              level: 1
              price: 460
    • quests.yml​

      • YAML:

        quests:
          '1':
            name: "Укратитель зомби"
            description:
              - "§fТут рядом со мной, бродят много"
              - "§fзомбаков, я бы не хотел от них подхватить"
              - "§fчего заразного, я готов дать тебе §6150 ❖"
              - "§fесли ты немного очстишь мир от них."
              - " "
              - "§fЗадача:"
              - "§8- §fУбить 15 зомби"
              - " "
              - "§fНаграда: §6100 опыта + 150 ❖"
            complete:
              - "exp: 100"
              - "cmd: money give {0} 150"
              - "msg: §7Вы успешно выполнили квест §6§nУкратитель зомби§7!"
            required-level: 1
            requirements:
              '1':
                type: "kill-mob"
                description:
                  - " "
                  - "&fВы убили всего зомби: &6{0}&8/&215"
                  - " "
                var: "ZOMBIE"
                count: 15
          '2':
            name: "Укратитель скелетов"
            description:
              - "§fМне жутко страшно при виде"
              - "§fэтих костлявых недозомби,"
              - "§fя буду благодарен если ты"
              - "§fприкончишь парочку."
              - " "
              - "§fЗадача:"
              - "§8- §fУбить 25 скелетов"
              - " "
              - "§fНаграда: §6100 опыта + 200 ❖"
            complete:
              - "exp: 100"
              - "cmd: money give {0} 200"
              - "msg: §7Вы успешно выполнили квест §6§nУкратитель скелетов§7!"
            required-level: 1
            requirements:
              '1':
                type: "kill-mob"
                description:
                  - " "
                  - "&fВы убили всего скелетов: &6{0}&8/&225"
                  - " "
                var: "SKELETON"
                count: 25
          '3':
            name: "Помощник"
            description:
              - "§fБуду благодарен если ты мне принесёшь"
              - "§fнемного ресурсов на продажу, а то у меня"
              - "§fуже совсем всё плохо с ними..."
              - " "
              - "§fЗадача:"
              - "§8- §fПринести 10 буханок хлеба"
              - "§8- §fПринести 10 стогов сена"
              - " "
              - "§fНаграда: §6100 опыта + 240 ❖"
            complete:
              - "exp: 100"
              - "cmd: money give {0} 240"
              - "msg: §7Вы успешно выполнили квест §6§nПомощник§7!"
            required-level: 2
            requirements:
              '1':
                type: "bring-item"
                description:
                  - " "
                  - "&fВы принесли буханок: &6{0}&8/&210"
                  - " "
                var: "BREAD"
                count: 10
              '2':
                type: "bring-item"
                description:
                  - " "
                  - "&fВы принесли стогов сена: &6{0}&8/&210"
                  - " "
                var: "HAY_BLOCK"
                count: 10

Last updated