转跳到内容

关于RP系统的说明~


推荐贴

 

 

关于际遇的RP系统目前已经算是基本做完了(除了根据运行效果而有微调外,这个补丁应该不会再更新了)。

这里简单说下规则,如果有兴趣的朋友不妨看看并提供些意见什么的。

 

实测效果:

-100RP测试 By 六花入雪

http://sstmlt.zzxx.in/forum.php?mod=viewthread&tid=2347&extra=page%3D2

 

200RP测试 By fxaax29

http://sstmlt.zzxx.in/forum.php?mod=viewthread&tid=2013&extra=page%3D9

链接到点评

 

 

下面说说实现原理以及模型预期。

要实现的目的为:RP越高,发生奖励的概率以及额度也越高(际遇发生概率不变),但必须存在极限,此时无论RP如何提高,相应概率都不会增长。

考虑通过指数函数来实现该功能,如下图所示:

如果X轴为RP值(+1是为了过原点),Y轴为发生概率。

18557245-a06

则该函数很好的实现了有(RP)极限的概率函数。

以下修正就都是在这个函数的基础上实现的。

 

01 关于奖励概率

假设后台的设置为Pa(目前为0.5),极限为1与Pa的中点,即Pa+(1-Pa)/2。(对应值为0.75)

然后利用如上函数进行修正,即可实现高RP用户奖励概率的提高。

 

02 关于奖励额度

根据插件的原始函数,会通过随机过程得到一个奖励值,我们可以在这个值的基础上根据RP值放大。

我的设计为:修正值=原始值×(1+5×f(RP值)),其中f(X)即为上图的函数。

 

 

链接到点评

 

 

要实现的目的为:RP为负时,际遇必为惩罚事件,且RP越差,惩罚事件发生概率越高,程度也越重。

假设K=RP+1

01 关于际遇发生概率

修正值=原始值×(1-0.5×K)

也就是说,际遇发生概率会随着RP降低而线性增加。

如果原始值为0.15,那么当K<-11.3时,每发一贴必然产生际遇。

 

02 关于际遇奖励概率

修改设置,使得RP为负时,际遇永远是惩罚事件。

 

03 关于惩罚额度

修正值=原始值×(1-K/5)

并向下取整。

也就是说,大概RP每降低5点,惩罚倍数就会+1。

 

04 关于天罚

如果用户节操>20000的话,修正值=原始值×10,这条惩罚与03不冲突,两者可以叠加~

 

 

总结起来重要的就两点。

01 RP为负,际遇必为惩罚。RP<-11.3,每发一帖必出际遇(惩罚)。

02 RP每降低5点,惩罚倍数就会+1。

 

这样的规则有以下两个特点:

01 实施简单

看到要惩罚的帖子不用算来算去,果断扣个5-10点RP下去(RP<10的话,对方只要敢发/回贴,就会被黑条折磨得欲仙欲死)...直到认为对方改过自新后,再撤销评分即可。

02 惩罚有梯度。

因为每个人对惩罚的接受程度不同,采用阶梯式的方式由轻到重,慢慢累加。既满足犯人们的不同口味,也避免了对方对突然性惩罚的不满。

 

OK,功能就是如此,具体如何操作就看各位版主的了~

 

链接到点评

 

 

gamegame123 发表于 2012-5-27 15:01

我去...下回请别玩这种编辑回复的高级技巧了。

要不是碰巧我还真看不见您最后的内容...

 

汗,那个本来是编辑了一半觉得放第一页看不到了,直接放弃写一半翻页写第二页了...打算等下删除掉

是在看正RP时的概率修正公式....

修正怎么算...貌似200时候已经到达几率极限了

 

PS:已经删除了

 

链接到点评
fxaax29 发表于 2012-5-27 15:14

汗,那个本来是编辑了一半觉得放第一页看不到了,直接放弃写一半翻页写第二页了...打算等下删除掉

是在看 ...

 

没错,用的就是从0开始,极限为1的修正函数f(X)

比如我想实现奖励概率从0.5-0.75

那就是修正值=0.5+0.25*f(X)...

关于际遇概率和奖励概率

后台本来可以设计为一个常数

然后这个常数和0-1之间的随机数比大小,如果常数大,那么就发生。

 

 

以下是文件修改相关:

本次只要修改一个文件:source/plugin/luckypost/luckypost.class.php

 

01 为了改变际遇发生概率, 在$this->iflucky = $this->_lottery($this->probability)前面添加:

$extrp=getuserprofile('extcredits'.'5')+1;

$rprofix=$this->probability;

if($extrp<1) {

$rprofix=(1-0.5*$extrp)*$this->probability;

}

并修改$this->_lottery($this->probability)为$this->_lottery($rprofix)

为了改变奖励概率,在$eventKey = $this->_lottery($this->rprobability)前面添加:

if($extrp<1) {

$rprofix=-1;

} else {

$rprofix=$this->rprobability+(1-pow(0.99,$extrp)/0.99)*(1-$this->rprobability)/2;

}

并修改$this->_lottery($this->rprobability)为$this->_lottery($rprofix)

 

02 为了改变际遇奖惩额度,在$creditData = $this->_randomnum(...后面添加:

$extrp=getuserprofile('extcredits'.'5')+1;

if($eventKey==self::KEY_LUCKY_EVENT){

$creditData=floor($creditData*(1+5*(1-pow(0.99,$extrp)/0.99)));

} else {

if(getuserprofile('extcredits'.'1')>20000){

$creditData=$creditData*10;

}

if($extrp<1){

$creditData=floor($creditData*(1-$extrp/5));

}

}

 

链接到点评
游客
此主题已关闭。
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款