Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。
Discuz!道具系统道具开发文档
Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。下面具体介绍一下相关机制和开发方法
1、 道具的组成
每个道具由两部分组成,php文件和图片文件。
php文件存放在论坛include/magic目录下,命名规范为magic_inc_道具名称.php文件。图片文件存放在images/magics目录下,命名规范为道具唯一标识(小写).gif
注:其中道具名称由任意英文字母组成,道具唯一标识是在添加的时候确定的,此标识唯一,最长为3个大写英文字母
道具图片不用多说就是gif文件,下面我具体说说php文件编写规范
2、 道具php文件编写详解
我们以一个道具php文件(magic_inc_close.php)为例
Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。
以上就是一个简单道具的编写格式,其中红色注释部分是一个道具必须有的,当然里面的一些代码可以根据道具类型的不同做一些改动,比如取得帖子资料的语句,如果是对用户的操作,可以改为取用户资料。相关这些操作我们已经内置了一些自定义函数,通过这些自定义函数你就可以轻松调用你想调用的资料了,下面我们就来说说这些自定义函数。
3、 道具系统自带函数
所有的自定函数都在include/magic.func.php文件里面,下面我对这些函数一一做解释
Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。
// 查询帖子信息函数 $id 帖子或者主题的 pid 或者 tid $type 查询的类型 tid 代表主题 pid 代表帖子 $colsarray 要查询的字段 数据类型数组 getpostinfo($id, $type, $colsarray = '') // 查询用户信息函数 $username 查询用户名 $colsarray 要查询的字段 数据类型数组 getuserinfo($username, $colsarray = '') // 赠送道具函数 $username 要赠送对象的用户名 $magicid 赠送道具道具 id $magicnum 赠送道具的单个数量 $totalnum 赠送道具的总数量 $totalprice 赠送道具的总价格 givemagic($username, $magicid, $magicnum, $totalnum, $totalprice) // 道具随机函数 $odds 成功的几率,例如 10 成功的几率就是 10% magicrand($odds) // 道具市场道具操作函数 $magicid 道具 id $marketnum 道具市场道具数量 $magicnum 道具数量 marketmagicnum($magicid, $marketnum, $magicnum) // 道具操作验证函数(用户验证道具使用对象是否被版主操作过) $tid 帖子 id magicthreadmod($tid) // 道具界面生成函数 magicshowsetting($setname, $varname, $value, $type = 'radio', $width = '20%') magicshowtips($tips, $title) magicshowtype($name, $type = '') // 道具使用函数 $magicid 道具 id $totalnum 被使用道具的用户拥有总数量 $num 使用数量 usemagic($magicid, $totalnum, $num = 1)
Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。
// 道具使用对象日志(主要用于使用对象主题时) $tid 主题 tid $magicid 道具 id $action 动作标识 $expiration 道具有效期 $extra 是否记录用户名 1 为不记录,0 为记录 updatemagicthreadlog($tid, $magicid, $action, $expiration, $extra = 0) // 道具使用日志 $magicid 道具 id $action 动作标识 1 为购买 2 为使用 3 为赠送 4 为道具市场出售 5 为道具市场购买 $amount 道具操作数量 $price 道具操作价格 $targettid 道具使用对象 tid $targetpid 道具使用对象 pid $targetuid 道具使用对象 uid updatemagiclog($magicid, $action, $amount, $price, $targettid = 0, $targetpid = 0, $targetuid = 0)