PHP SQL掉落率系统


php sql drop rate system

这个问题可能看起来有点奇怪,但是…

我运行一个黑手党风格的游戏网站在PHP脚本。当玩家犯罪时,他们有机会获得"掉落",比如新武器。

我现在是如何让它工作的是他们所做的每一项犯罪,我运行rand(),如果它达到10,那么我从firearms_db表中随机选择一行,并给他们。

我想做的是让每个武器都有不同的"掉落"百分比-所以更强大和昂贵的武器会掉落得更少,而便宜的武器会经常掉落。现在你买到便宜的和买到贵的机会是一样多的。

有谁知道我该如何添加这个吗?我是否需要添加另一个字段到firearms_db与下降率值,然后与之合作?

您可以尝试在表格中添加一列,以某种方式对武器进行排名。例如,rocket_launcher的额定值为10,而toothpick的额定值为2。

数据库表可能如下所示:

+---------------------------------+
|    weapon           |  rating   |
|    rocket_launcher  |  10       |
|    toothpick        |  2        |
+---------------------------------+

你可以做一个rand()的十个。假设您将结果存储在res中,然后查询数据库:

SELECT * FROM weapons WHERE rating <= res

如果res是7,那么你只会得到toothpick。如果res为10,您将同时获得toothpickrocket_launcher

然后你可以从查询中随机选择要给的武器。

最简单的方法可能是总是选择一个道具,然后使用掉落率列来决定他们是否真正得到它。你可以把它设为% chance,然后把它存储为int型。

你可以写一个公式:对于给定的武器等级和武器种类,你会得到"掉落"率。你可以使用对数/指数来得到非线性曲线。

你也可以用一个非常简单的公式:

chanceOfDrop = (maxprice- priceofweapon)/maxprice * randomFactor()

例如,

使用randomFactor()在-0.8和1.2之间。