Email: xren@aionchs.com
Welcome to 永恒之塔私服|永恒之塔怀旧服|希望OL私服|aion私服  

或者为什么 frishek 社区总是抱怨并且会抱怨下降。

所以,如果你看过这篇文章,那么我认为你已经对 Aion、服务器模拟器等是什么有所了解。
所以,有一次当我看到frishka的源代码时,起初我简直不敢相信自己的眼睛,但在重新检查了所有的开源之后,我确信这是真的,这是一场噩梦。

原始《永恒之塔》中的液滴是如何计算的?玩家试图杀死的暴徒/NPC有许多假想的投递箱。
1 个板条箱,这是生物类型的主要掉落物,有些物品会以某种方式以一定的机会掉落到下拉列表中。
2-N – 装有不同物品套装的盒子,其中一件且只能掉落一件物品




每件物品都有自己的掉落机会。但是,各地的计算公式都不同。
对于主要掉落,每个项目都是单独计算的。有条件地说,有多少鱼竿被扔进这个盒子里,就有多少盒子里的物品。如果有 4 个物体,则用 4 根钓鱼竿,然后拉。有什么东西被钩住了,拉了出来。因此,从主投递箱中,您几乎可以拉出所有物品。

对于额外的盒子,系统的工作原理略有不同。拿一个装有所有物品的盒子,比方说一个装着蓝色衣服的盒子,洗牌,然后在那里扔一根钓鱼竿,然后伸展,如果有什么东西抓住,它会掉到玩家身上,如果没有,那么对不起。但是对于每个额外的盒子,鱼竿被铸造一次,而且一次。从额外掉落中拉出物品的几率 = 盒子中每个单独物品的几率之和。这意味着,如果盒子中有 10 件物品的 10 次机会,那么该物品肯定会掉落。

现在它是如何在 frishki 上工作的。基本上,它的工作原理与原版几乎相同。除了:

  • 盒子里有各种各样的东西。是的是,是是。有如此狂野的垃圾,你可以打破你的大脑。

  • 为了增加一滴,系统在 frishkas 上的工作方式不同。从盒子里随机取出一个物体,放在一个空的大盒子里,然后抛出一根钓鱼竿。比方说——从一个装有蓝色装备的盒子里,随机取一个物体,放在另一个空的盒子里,然后把一根钓鱼竿扔在那里。如果没有抓住任何东西,那么你就不会看到蓝色齿轮。一般来说,对于每个盒子。空板条箱的大小取决于物品上的百分比。如果百分比为 10,则盒子大 10 倍,如果百分比为 1,则盒子大 100 倍。

让我们看一下代码:

1) 类 NpcDrop
循环,用于生物中掉落的每一组(物品框)。


爪哇岛:

    for (DropGroup dg : this.dropGroup) {       if (dg.getRace() == Race.PC_ALL || dg.getRace() == race)         index = dg.dropCalculator(result, index, dropModifier, race, groupMembers);     }



2) class DropGroup
从组中随机取一个项目


爪哇岛:

    if (this.useCategory.booleanValue()) {       Drop d = this.drop.get(Rnd.get(0, this.drop.size() - 1));       return d.dropCalculator(result, index, dropModifier, race, groupMembers);     }


3) 班级掉落
根据这个项目的机会,我们确定它是否放弃。

爪哇岛:

if (Rnd.get() * 100.0F < percent)


我希望我能够向你解释它是如何工作的。我将尝试在图片中显示击倒衣服的机会在哪里会更清晰可见。


你问为什么?因为编写免费服务器第一版的人与游戏机制相去甚远,并没有将其记在心。而那些至今仍在开放服务器的人从“歪门邪道”的开发人员那里购买了“笨拙”的构建。就是这样。

现在的开发者还做不成一个加权选择系统) - 随机加权选择

java 示例代码


爪哇岛:

public class RandomizeDrop {     private List<RandomizeEntry> entries = new ArrayList<>();     private double accumulatedChance;     private Random rand = new Random(); // Собираем суммированную шкалу     public void addEntry(int object, float chance) {         accumulatedChance += chance;         RandomizeEntry ent = new RandomizeEntry();         ent.object = object;         ent.accumulatedWeight = accumulatedChance;         entries.add(ent);     } // По шкале, селектим нужный предмет     public int getRandom() {         double r = rand.nextDouble() * accumulatedChance;         int returnedObj = entries.get(0).object;         for (RandomizeEntry entry : entries) {             if (r >= entry.accumulatedWeight) {                 returnedObj = entry.object;             }         }         return returnedObj;     } }


感谢您的关注!


文章出处:Aion Drop 计算器_永恒之塔私服|永恒之塔怀旧服|希望OL私服|aion私服 官方网址:http://www.aionchs.com/