|
本帖最后由 avatar 于 2010-11-7 23:35 编辑
本论坛用的每日签到程序是:DPS 每日签到 Ver 1.1 Final 版。
粗略分析积分奖励代码如下,我已经做了代码注释:- //得到奖励积分的倍数(只对指定用户组积分加倍)
- $jlx = $var['jlx'];
- //得到随机奖励积分
- $credit = mt_rand($mincredit,$maxcredit);
- //判断是否是特定用户组,如果是,乘以积分倍数
- if(in_array($groupid, $jlxgroups) && $jlx != '0') {
- $credit = $credit * $jlx;
- }
- //得到连续签到的天数
- $qiandaodb['lasted'] = $qiandaodb['lasted'] ? $qiandaodb['lasted'] : 0;
- //如果连续签到指数开关打开
- if((86400 > ($tdtime - $qiandaodb['time'])) && $var['lastedop'] && $qiandaodb['lasted'] != '0'){
- //得到0~999之间的随机指数,假设为10
- $randlastednum = mt_rand($var[lastednuml],$var[lastednumh]);
- //补0得到 010
- $randlastednum = sprintf("%03d", $randlastednum);
- //得到小数:0.010
- $randlastednum = '0.'.$randlastednum;
- //架设已经连续签到100天,得到0.010×100=1
- $randlastednum = $randlastednum * $qiandaodb['lasted'];
- //积分=原有积分×2
- $credit = $credit*(1+$randlastednum);
- //四舍五入
- $credit = round($credit);
- }
复制代码 以上代码说明:
1.管理员可以设置对特定用户组加倍奖励积分(我们一般不是特定用户组)。
2.管理员可以设置连续签到奖励积分开关并且设置奖励指数。
3.对于普通用户来说,最后得到的分数和以下几个参数有关:
a.奖励积分基数,这个基数是随机的,看你运气。(管理员可以设置基数的范围,对每个人都一样,据观察本论坛积分基数范围应该为1~1,这个运气忽略。)
b.连续签到奖励指数,这个也是随机的,看你运气。(管理员可以设置指数的范围,有上限,对每个人都一样,最大设置范围0~999)
c.连续签到的天数。
结论:
本论坛的奖励积分基数影响基本可以忽略了,如果你连续签到的天数长(很重要,差别较大),同时你的运气不错,得到的连续签到指数高,这时候你会得到高分。
我在注释中假设的连续签到指数比较小,如果是这个数你随机得到的是500(管理员设置有上限),且你连续签到了60天,那么你得到1×(1+0.5×60)=31分。 |
|