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

Помогите Баланс предметов в сундуках [SkyWars]

Тема в разделе "Разработка плагинов для новичков", создана пользователем l_Slime_l, 9 июн 2018.

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

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

    Баллы:
    76
    Делаю плагин на мини-игру SkyWars. У меня есть локации сундуков, в которые нужно рандомно положить предметы (ItemStack'и в конфиге), чтобы на каждом острове не попадалось 3+ одинаковых предмета. Как это можно сделать? Думаю нужно делать класс Island, и там хранить все локации сундуков, расположенных на острове. Но придётся хранить все эти локации в конфиге для каждого острова на арене, потом оттуда их брать.. Крч, долго это всё, как можно сделать другим способом? Или придётся так? Написал конечно я коряво, но суть думаю вы поймёте.
     
  2. Akultist

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

    Баллы:
    46
    Можно просто поставить пустые сундуки на арене, и указать в конфиге мин. и макс. координаты, потом когда игра начнется, можно сделать цикл который будет проверять все блоки на арене. Если блок.getType() == Material.CHEST то тогда - Chest chest = (Chest) блок.getState(); chest.getInventory().setItem(slot, stack);

    А стаки можно просто хранить в конфиге как то так:
    Код:
    chest:
      ChestS:
        chance: 61 //шанс выпадения
        items:
          '1': //Ид предмета
            amount: 28 //Количество
            data: 0 //Дата (36:3 - 3 это и есть дата)
          '278':
            amount: 1
            data: 0
          '326':
            amount: 1
            data: 0
          '308':
            amount: 1
            data: 0
            enchantment: //чарки
            - PROTECTION_ENVIRONMENTAL: 1
            - PROTECTION_FIRE: 1
            - THORNS: 1
            lore:
            - 'описание'
            name: 'имя'
            hide: true //скрывает параметры (ENCHANTMENT, и.т.д)
          '393':
            amount: 8
            data: 0
    Думаю с алгоритмом подсчета шансов сам разберешься.
    Кстати сетать в сундук в рандмный слот можно так:
    Код:
                   Random rnd = new Random();
                   int random = rnd.nextInt(26);
    
                        do
                        {
                            if (inv.getItem(random) == null
                                    || inv.getItem(random).getType() == Material.AIR)
                                inv.setItem(random, stack);
    
                            else random = rnd.nextInt(26);
    
                        } while (inv.getItem(random) == null
                                || inv.getItem(random).getType() == Material.AIR);
     
  3. DimaTiunov

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

    Баллы:
    78
    Делай генерацию во время открытия сундука, записывай что выпало в этом, исключай что нужно в другом. Профит!?
     
  4. Автор темы
    l_Slime_l

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

    Баллы:
    76
    А если игрок сразу на центр пойдёт? И сундуки на острове не откроет. (На центре будут более лучшие вещи, чем на островах)
     
  5. DimaTiunov

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

    Баллы:
    78
    Обычно в СВ нет возможности попасть в центр без открывания сундука на острове. Я обычно делаю в центре сундуки с ловушками и там делаю более крутой лут
     
  6. Автор темы
    l_Slime_l

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

    Баллы:
    76
    Ну какая-то бредовая идея генерировать лут при открывании сундука.
     
  7. DimaTiunov

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

    Баллы:
    78
    Распределить нагрузку на игровой процесс или перебрать весь мир во время загрузки? Ну фиг знает, я выбираю первое.
     
  8. DimaTiunov

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

    Баллы:
    78
    Есть ещё вариант просто указать все сундуки на карте, но это уже бред, ИМХО
     
  9. Автор темы
    l_Slime_l

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

    Баллы:
    76
    Дак нормально такую систему не сделаешь, нужно очень много вещей продумывать. Можно ведь добраться до центра без открытия сундука, может тебе вообще противник путь построит, а ты дойдешь так и не открыв ничего на острове.
     
  10. DimaTiunov

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

    Баллы:
    78
    Ещё раз. Специфика МОЕГО плагина скайварса такова что до центра НЕЛЬЗЯ добраться не построив мост до центра. Их по умолчанию нет ни у кого, достать их можно только в сундуке рядом с тобой или добыть их из острова на котором ты есть, по времени открыть сундук занимает меньше чем добывание, следствие откроет сундук (флайхак не в счёт).
     
  11. Автор темы
    l_Slime_l

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

    Баллы:
    76
    Вдруг захочет добыть дерево например и на центр?
     
  12. InterWall

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

    Баллы:
    173
    Долб*** это тогда, а не игрок. Никакой стратегии, чистый раш, такие должны страдать.
     
  13. Akultist

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

    Баллы:
    46
    Это конечно костыль, но.. Можно как-то обозначить сундук с определенными вещами. Например какой-то блок будет обозначать какую-то категорию. И ставить поверх сундука этот блок. Или как-то по другому обозначать.
     
  14. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Че не нравится ему в том варианте который он сам предложил в посте?
     
  15. Автор темы
    l_Slime_l

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

    Баллы:
    76
    Хранить все локации сундуков для каждого острова в конфиге - плохая идея.
     
  16. Автор темы
    l_Slime_l

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

    Баллы:
    76
    Лул на хайпиксель зайди, берешь класс эколог и усе. Сам так делаю.
     
  17. InterWall

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

    Баллы:
    173
    Так по этой причине я и не играю в миниигры. Максимум майн у меня это сервер на 5 человек с модами, для «поиграть с друзьями».
    А вообще сам делай, я своё мнение уже высказал.
     
  18. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    У тебя там более тысячи сундуков?
     
  19. Автор темы
    l_Slime_l

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

    Баллы:
    76
    12-16 островов, на каждом острове 3 сундука, + на центре штуки 4. Для каждой карты в конфиг локации пихать? Бред. Лучше уж я с процентами (шансом выпадения) сделаю предметы.
     
  20. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Так тебе все равно как-то получить локации сундуков надо будет.
     

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