Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

premiumcase, problem


pan ktosik

Rekomendowane odpowiedzi

Opublikowano

czesc, jak to mozna jakos lepiej zrobic? bo mam jakos chujowo, chce po prostu aby ZAWSZE byla na cos szansa.

        double chance;
        List<ItemStack> is;

        for (Drop drop : DropsManager.drops) {
            chance = RandomUtil.getRandDouble(0.1, 100.0);
            if (chance == drop.getChance()) {
                is = drop.getItems();
                for (ItemStack dropItem : is)
                    e.getBlock().getWorld().dropItem(e.getBlock().getLocation(), dropItem);
                for (String msg : drop.getMessage()) 
                    plugin.getServer().broadcastMessage(msg);
            	}
        

 

Opublikowano

najlepiej użyj weighted random, każdemu dropowi przypisujesz wagę, możesz jako int lub double, nie ma znaczenia, np:

Diamond: 3.14
Stone: 45.0
Iron: 7.5

Tym większa liczba tym większa szansa na danym przedmiot, i wtedy takie wagi sumujesz: 55.64
I losujesz liczbę między <0, 55.64) - (czyli większe lub równe zero ale mniejsze od 55.64)

 

Wtedy iterujesz po wszystkich itemach i odejmujesz ich wagi od wylosowanej liczby az wyjdzie mniej niż 0
 

        for (Choice c : choices))
        {
            i -= c.getWeight();
            if (i < 0)
            {
                return c;
            }
        }

gdzie i to nasza wylosowana liczba

1438614356923701010629.png

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...