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

l_Slime_l

Активный участник
Пользователь
Баллы
76
Делаю плагин на мини-игру SkyWars. У меня есть локации сундуков, в которые нужно рандомно положить предметы (ItemStack'и в конфиге), чтобы на каждом острове не попадалось 3+ одинаковых предмета. Как это можно сделать? Думаю нужно делать класс Island, и там хранить все локации сундуков, расположенных на острове. Но придётся хранить все эти локации в конфиге для каждого острова на арене, потом оттуда их брать.. Крч, долго это всё, как можно сделать другим способом? Или придётся так? Написал конечно я коряво, но суть думаю вы поймёте.
 
Делаю плагин на мини-игру SkyWars. У меня есть локации сундуков, в которые нужно рандомно положить предметы (ItemStack'и в конфиге), чтобы на каждом острове не попадалось 3+ одинаковых предмета. Как это можно сделать? Думаю нужно делать класс Island, и там хранить все локации сундуков, расположенных на острове. Но придётся хранить все эти локации в конфиге для каждого острова на арене, потом оттуда их брать.. Крч, долго это всё, как можно сделать другим способом? Или придётся так? Написал конечно я коряво, но суть думаю вы поймёте.
Можно просто поставить пустые сундуки на арене, и указать в конфиге мин. и макс. координаты, потом когда игра начнется, можно сделать цикл который будет проверять все блоки на арене. Если блок.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);
 
Делай генерацию во время открытия сундука, записывай что выпало в этом, исключай что нужно в другом. Профит!?
 
Делай генерацию во время открытия сундука, записывай что выпало в этом, исключай что нужно в другом. Профит!?
А если игрок сразу на центр пойдёт? И сундуки на острове не откроет. (На центре будут более лучшие вещи, чем на островах)
 
А если игрок сразу на центр пойдёт? И сундуки на острове не откроет. (На центре будут более лучшие вещи, чем на островах)
Обычно в СВ нет возможности попасть в центр без открывания сундука на острове. Я обычно делаю в центре сундуки с ловушками и там делаю более крутой лут
 
Обычно в СВ нет возможности попасть в центр без открывания сундука на острове. Я обычно делаю в центре сундуки с ловушками и там делаю более крутой лут
Ну какая-то бредовая идея генерировать лут при открывании сундука.
 
Ну какая-то бредовая идея генерировать лут при открывании сундука.
Распределить нагрузку на игровой процесс или перебрать весь мир во время загрузки? Ну фиг знает, я выбираю первое.
 
Есть ещё вариант просто указать все сундуки на карте, но это уже бред, ИМХО
 
Распределить нагрузку на игровой процесс или перебрать весь мир во время загрузки? Ну фиг знает, я выбираю первое.
Дак нормально такую систему не сделаешь, нужно очень много вещей продумывать. Можно ведь добраться до центра без открытия сундука, может тебе вообще противник путь построит, а ты дойдешь так и не открыв ничего на острове.
 
Дак нормально такую систему не сделаешь, нужно очень много вещей продумывать. Можно ведь добраться до центра без открытия сундука, может тебе вообще противник путь построит, а ты дойдешь так и не открыв ничего на острове.
Ещё раз. Специфика МОЕГО плагина скайварса такова что до центра НЕЛЬЗЯ добраться не построив мост до центра. Их по умолчанию нет ни у кого, достать их можно только в сундуке рядом с тобой или добыть их из острова на котором ты есть, по времени открыть сундук занимает меньше чем добывание, следствие откроет сундук (флайхак не в счёт).
 
Ещё раз. Специфика МОЕГО плагина скайварса такова что до центра НЕЛЬЗЯ добраться не построив мост до центра. Их по умолчанию нет ни у кого, достать их можно только в сундуке рядом с тобой или добыть их из острова на котором ты есть, по времени открыть сундук занимает меньше чем добывание, следствие откроет сундук (флайхак не в счёт).
Вдруг захочет добыть дерево например и на центр?
 
Вдруг захочет добыть дерево например и на центр?
Это конечно костыль, но.. Можно как-то обозначить сундук с определенными вещами. Например какой-то блок будет обозначать какую-то категорию. И ставить поверх сундука этот блок. Или как-то по другому обозначать.
 
Че не нравится ему в том варианте который он сам предложил в посте?
 
Лул на хайпиксель зайди, берешь класс эколог и усе. Сам так делаю.
Так по этой причине я и не играю в миниигры. Максимум майн у меня это сервер на 5 человек с модами, для «поиграть с друзьями».
А вообще сам делай, я своё мнение уже высказал.
 
У тебя там более тысячи сундуков?
12-16 островов, на каждом острове 3 сундука, + на центре штуки 4. Для каждой карты в конфиг локации пихать? Бред. Лучше уж я с процентами (шансом выпадения) сделаю предметы.
 
Так тебе все равно как-то получить локации сундуков надо будет.
12-16 островов, на каждом острове 3 сундука, + на центре штуки 4. Для каждой карты в конфиг локации пихать? Бред. Лучше уж я с процентами (шансом выпадения) сделаю предметы.
 
Назад
Верх