php sql掉线率系统

时间:2011-12-27 15:21:44

标签: php sql

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

我运行一个用PHP编写的黑手党风格游戏网站。当玩家犯罪时,他们有机会获得“摔倒”,让我们说一个新的武器。

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

我想做的是,让每个武器都有不同的百分比“掉线” - 所以更强大和更昂贵的武器会降低,而便宜的武器会频繁掉落。目前你得到一个便宜的机会,因为你是一个昂贵的机会。

有没有人有任何想法我怎么能添加这个?我是否需要使用丢弃率值向firearms_db添加另一个字段,然后使用它?

3 个答案:

答案 0 :(得分:5)

您可以尝试在表格中添加一个列,以某种方式对武器进行排名。例如,您可以将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

然后你可以从查询中随机挑选武器来提供。

答案 1 :(得分:1)

最简单的方法可能是始终选择一个项目,然后使用掉落率列来决定他们是否真正得到它。你可以把它变成百分之几,然后把它存储为int。

答案 2 :(得分:1)

你可以写一个公式:对于给定级别的武器和武器种类,你会得到“下降”率。您可以使用对数/指数来获得非线性曲线。

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

  

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

例如

,其中randomFactor()介于-0.8和1.2之间。