未登录

Drawsnake 通行证

查看: 168|回复: 0

[原创] 如何构造直观修改用户积分表达式的函数

[复制链接]

管理员

是叶子,还是旅行的风

人气
0
注册时间
2024-7-19
最后登录
2024-11-6
发表于 2024-7-28 22:58:32 | 显示全部楼层 |阅读模式
Discuz技巧
适用版本: DX3.4 DX3.5 
技巧类型: 二开辅助
如果在编程时,可以直观修改用户积分,在一些插件开发中(尤其是需要站长用户自定义积分交互较多时)会非常方便。
我们可以让站长这样编写表达式:
  1. 金钱+1
复制代码
或者一次性调整多个积分:
  1. 金钱+10,威望-5
复制代码
那么我们下面就来实践一下,如何快速实现上面的表达式解析。
1、构建函数
  1. /*修改单个积分*/
  2. function changecredit($uid,$creditname,$op,$num,$reason=''){
  3.         global $_G;
  4.         for($i=1;$i<=8;$i++){
  5.             if($_G['setting']['extcredits'][$i]['title']==$creditname){
  6.                 updatemembercount($uid, array('extcredits'.$i => intval($op.$num)));
  7.             }
  8.         }
  9.         return 1;
  10.     }

  11. /*修改多个积分表达式*/
  12. function changecredits($uid,$words,$reason=''){
  13.         $sets = explode(",",$words);
  14.         foreach($sets as $k=>$v){
  15.             $pluscheck = explode("+",$v);
  16.             $minuscheck = explode("-",$v);
  17.             if(count($pluscheck)>1){
  18.                 changecredit($uid,$pluscheck[0],'+',$pluscheck[1],$reason);
  19.             }elseif(count($minuscheck)>1){
  20.                 changecredit($uid,$minuscheck[0],'-',$minuscheck[1],$reason);
  21.             }else{
  22.                 continue(1);
  23.             }
  24.         }
  25.         return 1;
  26.     }
复制代码

2、调用函数
直接统一使用刚才构建好的 changecredits() 函数即可,例子:
  1. changecredits($_G['uid'],"金钱-10,威望+50","购买威望礼包");
复制代码

左耳聆听,创意时空。
服务客户,以及客户的客户。任何问题欢迎联系!
您需要登录后才可以回帖 登录 | 创建通行证

本版积分规则

快速回复 返回顶部 返回列表