GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 1501|回复: 62
收起左侧

[教学] 【茶余杂谈】论坛积分进阶篇

    [复制链接] |关注本帖

组件大师

『户口本: Lv7+』凯登‧阿兰科Forever Titanic贵族与野兽一国之主

     楼主| Nittbone 发表于 2024-7-15 12:00:29 | 显示全部楼层 |阅读模式 |取消关注该作者的回复


    大多数坛友对论坛的各项功能不太了解,有时也会陷入误区,这当然一方面是体系设计并不是十全十美(discuz框架设计、gamemale体系设计)。


    另一方面,坛友有时也缺少对gamemale功能的探索精神。


    来,看黑板,今天我们的课程就是论坛积分功能的讲解。
    ====================================
    分类篇                           
    我们常规意义将论坛的积分分成两类:系统积分(credits)和自定义积分(extcredits)。
    注:这并非我自己的命名,而是代码层面的定义,根据使用界面的不同也可以称为标准积分和扩展积分。但以上两类积分用英文来说可以统称为“积分(credits)”。


    所谓系统积分,即我们常规意义上的与等级相关的”积分“,这个积分的命名不能修改。
    (注:从操作层面是可以,但即使修改后,在论坛不定期的版本更新后,亦会将这些内置的变量统一还原,这也是为什么我们的评分comments一直不变,我此前也曾在该帖提到系统更新后会还原。)


    那么自定义积分是什么呢?Nit老师的历史课上曾提到了不同版本的积分构成。从早期我们的论坛借鉴诸如巴哈姆特、3dm等论坛设定的积分,再到如今具有GM特色的积分体系。

    现如今我们的自定义积分有8个(上限只有8个),按照设置的顺序extcredits1-8分别为:旅程、金币、血液、追随、咒术、知识、灵魂、堕落。
    关系篇                                         
    他们在本质上无任何区别,但我们的角色扮演体系赋予了他们不同的涵义与功能。


    首先,每种扩展积分都能够设置相同的配置,其中重要的是:积分名称、初始积分、兑换比率、积分兑出、积分兑入。
    我们以金币这一扩展积分为例,它的积分名称是“金币”,它的初始积分是“0”,它的兑换比率是“0”,它不能兑出,也不能兑入。
    而另一常用的扩展积分血液,它的积分名称是“血液”,它的初始积分是“0”,它的兑换比率是“0”,它能兑出,但不能兑入。
    我们再看一个扩展积分旅程,它的积分名称是“旅程”,它的初始积分是“0”,它的兑换比率是“30”,它不能兑出,但能兑入。


    同时我们设置了“积分交易税(损失率)”,用于用户在利用积分进行转让(未启用)、兑换、买卖(未启用)时扣除的税率,范围为 0~1 之间的浮点数。目前这一税率为0.15。


    那么我们的系统积分之间的关系是什么呢?


    系统积分可以通过任意指定的常规变量的数学关系进行计算,它也是任何论坛的等级体系的基石。
    它可以通过发帖数 (主题 + 回复数)(posts),主题数(threads);精华帖数(digestposts);总在线时间(小时)(oltime ),好友数(friends),发表的记录数(doings ), 日志数(blogs);相册数(albums),投票数(polls);发表的分享数(sharings ),自定义积分extcredits1~extcredits8这些变量以及+,-,*,/,()这些数学关系组合而成。


    那么我出一道题:请写出我们GM系统积分现在的计算公式(中英文皆可),前10位答对的用户将获得某一自定义积分奖励。
    组件篇                              
    接下来我们进入扩展阶段,来更深层次地讨论积分在各项组件中的应用。
    我们一般将论坛的组件分为两种:官方组件(mods)与社区组件/插件(plugins)。


    所谓组件是什么?即使离开了这些组件或插件,我们的论坛仍然能够正常使用,它们并不是论坛构成的必要内容。


    我们常见的官方组件有:自定义头像、道具商店、自定义用户信息、评分等。
    我们常用的社区插件有:数值化的勋章、头衔、你画我猜等。


    我们经常可以发现,不同组件之间的冲突、有时甚至涉及到代码运行上的冲突。这是正常的,由于论坛开源的作用,所有人都能编写相关内容,但并没有明确的规范和审核来限制这些,所以许多用户更多基于自己的使用习惯进行编码。


    甚至官方组件之间也存在变量命名上的冲突:例如我们的扩展积分(extcredits1~8),在评分组件中的命名即为(score1~8)。
    而常用的勋章插件,则比较好地直接使用系统内置的变量名,即 (主题 + 回复数)(posts),主题数(threads);精华帖数(digestposts);总在线时间(小时)(oltime ),好友数(friends),发表的记录数(doings ), 日志数(blogs);相册数(albums),投票数(polls);发表的分享数(sharings ),自定义积分extcredits1~extcredits8。


    有意思的是,你可以了解一点,勋章插件中只有自定义积分是可以消耗的,其他的变量是不允许消耗的,了解这点,你可能会对一些勋章的升级条件有所明悟。
    对勋章插件的详解不在此次课程中,并且内容复杂,暂时先不开放。


    总结篇                              
    本节课程主要讲述了构成论坛体系的核心之一“积分”功能,相信对积分的了解能让你更好地理解GM论坛建设体系,你也可以发散思维,猜测每一代积分体系对应的背景设定。




    来自群组: 泥潭療養院

    评分

    参与人数 20血液 +43 追随 +19 堕落 +7 收起 理由
    zhuovboyan + 2
    书の妖怪 + 3 + 1 很给力!
    wubingyonglei + 3 + 1
    chouki + 1 + 1 + 1 赞一个!
    bigbigbig3 + 1 + 1
    Freeze123 + 1
    上树 + 5 + 1 + 1
    一只随行 + 2 + 1 + 1 很给力!
    菜猫 + 6 + 1 神马都是浮云
    GMagels + 1 讲解很清晰!

    查看全部评分

    回复

    使用道具 举报

    净化污秽的天照驯化红龙幼崽香喷喷的烤鸡小小安全帽驯化黑龙幼崽幽浮起司煲月影狼妙手空空

      本帖最后由 GMagels 于 2024-7-15 16:30 编辑

      感谢Nit大佬的科普,上完课条理更清晰了!针对课后作业,给出以下答案:

      总积分=旅程 + 追随 / 5 + 发帖数 / 10

      首先公式应该是这个,针对12楼提出的,首次发帖只需要5帖,总积分就能+1,乱搜了一些资料。
      以下都是个人猜想,不是论证,看看就好:

      Discuz!论坛的系统设置里,正如帖子里所说确实是允许积分计算的,在系统设置中,可以通过输入规则来计算代码。
      在Discuz!应用中心的使用教程的示例图片中,
      总计分数的设置为 发帖数+精华帖数*5+威望*2+金钱+贡献
      对应的代码写成了
      1. posts+digestposts*5+extcredits1*2+extcredits2+extcredits3
      复制代码
      图片中除了各种积分名称可供选择之外,只有+-*/以及()的运算符,并没有类似round或者什么其他奇怪的函数可以使用,说明答案可能并不在这里。

      于是,去找了DiscuzX 论坛的开源代码(Gitee)一探究竟
      在DiscuzX 3.5的代码中,通过查询credit相关的代码,找到了一个名为creditsformula的变量,可能正是上述计算公式。
      在install_data.sql中,发现以下代码证实了这一点:
      1. INSERT INTO pre_common_setting VALUES ('creditsformula','posts+digestposts*5+extcredits1*2+extcredits2+extcredits3');
      复制代码

      然后顺藤摸瓜,在admincp_members.php找到了这样一句计算公式:
      1. eval("\$membercredit = @round({$_G['setting']['creditsformula']});");
      复制代码
      其作用是根据creditsformula计算结果,并将结果通过round()的四舍五入换算为整数,最后将结果赋值给membercredit

      这个round()的四舍五入很有可能就是发帖只需要5帖,总积分就能+1的原因。

      如果以上结论成立,那么课后作业从代码层面应该是:

      总积分= round( 旅程 + 追随 / 5 + 发帖数 / 10 )

      再次声明:以上内容均是乱猜,并非严格论证,当个乐子看就好!如果有错误属于正常现象,请大佬们指正!

      参考资料
      Discuz!4.0积分完整详细教程:https://discuz.dismall.com/thread-222709-1-1.html
      1.17. 积分设置:https://addon.dismall.com/library/x3/admincp/setting/credits.html
      DiscuzX 3.5 Gitee开源仓库:https://gitee.com/Discuz/DiscuzX

      评分

      参与人数 6金币 +20 血液 +26 追随 +5 堕落 +2 收起 理由
      大墨迹 + 5 + 1 很给力!
      星之子 + 5 + 1 + 1
      bigbigbig3 + 5 + 1 + 1 我GM弟弟好棒
      user_login + 5 + 1
      菜猫 + 6 + 1 很给力!
      Nittbone + 20 优秀作业

      查看全部评分

      回复

      使用道具 举报

      不曾寄出的信件『随时随地开启!』漂洋小船『随时随地开启!』冒险用指南针破损的旧书丛林的鸟飞走了雪王的心脏人鱼之泪幽灵竹筒

        回复

        使用道具 举报

        收到情书朴素的誓言无瑕的回忆業火死鬥永浴爱河泰比里厄斯虚空之海的鲸实现梦想净化污秽的天照阿怪

          感谢nit的科普,不知能不能从积分系统里窥见后续超等级用户组设定的可能形式呢
          捉虫:笨笨nit没改过来,这里应该是旅程吧
          我们再看一个扩展积分旅程,它的积分名称是“血液”,它的初始积分是“0”,它的兑换比率是“30”,它不能兑入,但能兑出。
          回复

          使用道具 举报

          骑兽之子禽兽扒手夏之歌丹雀衔五穗,人间始丰登

            回复

            使用道具 举报

            无瑕的回忆镜中小鸟香蕉特饮40x43 隐形➀香喷喷的烤鸡月影狼

              昨天以为这次活动是更新了论坛配置,增设了“人性”的临时拓展积分用以自行选择兑换活动勋章了。
              回复

              使用道具 举报

              春之歌甘道夫·先圣仁心黄金树的恩惠熔岩鹰冰海钓竿狩猎用小刀森林鹿幸运女神的微笑

                回复

                使用道具 举报

                  回复

                  使用道具 举报

                  脉律辐石官复原职丹妮莉丝·坦格利安『逆境中的幸运女神』幸运女神的微笑我的冶金打火机羽毛笔劫掠核芯御医神兔虚空之海的鲸

                    XLK 发表于 2024-7-15 12:19:15 | 显示全部楼层 |取消关注该作者的回复
                    回复

                    使用道具 举报

                    禽兽扒手『住在GM村』GHOST小丑与格雷与星光璀璨杰森‧斯坦森上古卷轴V:天际炽天使之拥诡异的灵魂石冰海钓竿『迷翳之中』

                      回复

                      使用道具 举报

                      缘起星空虚空之海的鲸

                        泥潭积分公式里没加在线时间这个变量真的已经很友好了,有的论坛积分公式里有在线时间就把升级速度卡的慢很多
                        回复

                        使用道具 举报

                        百相千面-晦永远的克叔業火死鬥实现梦想官复原职虚空之海的鲸Zootopia幸运女神的微笑『逆境中的幸运女神』御医神兔

                          本帖最后由 娱乐法师火布偶 于 2024-7-15 12:42 编辑
                          勋章插件中只有自定义积分是可以消耗的,其他的变量是不允许消耗的,了解这点,你可能会对一些勋章的升级条件有所明悟

                          一个消耗主题数或者回帖数的勋章不仅是不符合插件设计的,而且其实也是反常识的



                          严格来说,我认为总积分应该是extcredits1(旅程)+(posts-5)/10 + 1 + extcredits4(追随)/5

                          评分

                          参与人数 2金币 +5 血液 +5 收起 理由
                          user_login + 5
                          Nittbone + 5 回答正确

                          查看全部评分

                            收起(9)
                          回复

                          使用道具 举报

                          实现梦想業火死鬥魔法不朽·传奇不熄卡洛斯·奥利维拉白野威十年一梦官复原职男巫之歌永浴爱河虚空之海的鲸

                            回复

                            使用道具 举报

                              回复

                              使用道具 举报

                              死亡化身格拉迪欧拉斯穿过的白袜Drover男用贞操带卡洛斯·奥利维拉Chris MazdzerLife of Water『落樱缤纷』

                                回复

                                使用道具 举报

                                风雪之家无瑕的回忆朴素的誓言『住在GM村』40x43 隐形➀十字叶章

                                  xvyi 发表于 2024-7-15 13:14:15 | 显示全部楼层 |取消关注该作者的回复
                                  本帖最后由 xvyi 于 2024-7-15 13:15 编辑


                                  答:
                                  ( 总积分=旅程 + 追随 / 5 + 发帖数 / 10 )

                                  提问:
                                  所谓系统积分,即我们常规意义上的与等级相关的”积分“,这个积分的命名不能修改。
                                  (注:从操作层面是可以,但即使修改后,在论坛不定期的版本更新后,亦会将这些内置的变量统一还原,这也是为什么我们的评分comments一直不变,我此前也曾在该帖提到系统更新后会还原。)

                                  和等级有关的这个系统积分,除了评分(comments)之外,还有决定用户组的积分,但这个积分受到旅程(自定义积分)影响(见答案计算式),在某些情况下旅程的减少也会导致用户组等级降低,而并不会随“版本更新”统一还原,是否可以问问这类系统积分在“版本更新”时有豁免权


                                  不好好读题的毛病又犯了,撤回一条提问

                                  评分

                                  参与人数 1金币 +5 收起 理由
                                  Nittbone + 5 回答正确

                                  查看全部评分

                                  回复

                                  使用道具 举报

                                  无瑕的回忆『住在GM村』小丑与格雷与星光璀璨劫掠核芯脉律辐石幸运女神的微笑诡异的灵魂石女神之泪卡勒罗斯辉石头罩马克

                                    总积分=旅程 + 追随 / 5 + 发帖数 / 10(嘿嘿,捡漏了。)
                                    话说楼上火布偶老师说先减5再+1是啥意思啊,是四舍五入吗

                                    评分

                                    参与人数 1金币 +5 收起 理由
                                    Nittbone + 5 回答正确

                                    查看全部评分

                                      收起(4)
                                    回复

                                    使用道具 举报

                                    亚索月影狼晓月终焉旅行骰子!卡利亚权杖

                                      ( 总积分=旅程 + 追随 / 5 + 发帖数 / 10 ),我来拿评分了
                                      顺带一提,我还在等堕落街区的卫星落地。

                                      评分

                                      参与人数 1金币 +5 收起 理由
                                      Nittbone + 5 回答正确

                                      查看全部评分

                                      回复

                                      使用道具 举报

                                      虚空之海的鲸『私有海域』『钜鲸』『星河碎片』『召唤好运的角笛』『交钥匙了!』『矩阵谜钥Ⓖ』十周年扭蛋 - 红『落樱缤纷』红心玉

                                        回复

                                        使用道具 举报

                                        牧羊人小菜鸟

                                          KA7 发表于 2024-7-15 13:55:21 | 显示全部楼层 |取消关注该作者的回复
                                          回复

                                          使用道具 举报

                                          牧羊人【新手友好】昆進驯化红龙幼崽小凤凰腐化龙幼崽瑞雪兆丰年,生灵万物新森林羊男

                                            回复

                                            使用道具 举报

                                            您需要登录后才可以回帖 登录 | 立即注册

                                            本版积分规则

                                            文字版|手机版|小黑屋|GameMale

                                            GMT+8, 2024-12-22 02:22 , Processed in 0.281917 second(s), 152 queries , Redis On.

                                            Copyright © 2013-2024 GameMale

                                            All Rights Reserved.

                                            快速回复 返回列表