干海棠科技,致力于信息化生活的推广与普及的专业教学。

Discuz!道具系统道具开发文档[参考]

上一篇 / 下一篇  2007-08-06 15:15:57 / 个人分类:干海棠维护日志

道具功能是DZ5出现的一个不错的小工具,可惜内置的功能太少,如何根据本站情况增加一些有意思的功能是目前要重点考虑的地方.下面的文档就是DZ官方论坛在HACK区发布的资源,留等下次开发自己道具的时候参考之用.

 

Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。下面具体介绍一下相关机制和开发方法

 

1、道具的组成

每个道具由两部分组成,php文件和图片文件。

php文件存放在论坛include/magic目录下,命名规范为magic_inc_道具名称.php文件。图片文件存放在images/magics目录下,命名规范为道具唯一标识(小写).gif

 

注:其中道具名称由任意英文字母组成,道具唯一标识是在添加的时候确定的,此标识唯一,最长为3个大写英文字母

 

道具图片不用多说就是gif文件,下面我具体说说php文件编写规范

 

2、道具php文件编写详解

我们以一个道具php文件(magic_inc_close.php)为例

 

<?php

 

//这段代码的作用防止文件直接调用,每个道具文件都必须在开头加入

if(!defined('IN_DISCUZ')) {

      exit('Access Denied');

}

 

//用户点击使用后,执行的代码

if(submitcheck('usesubmit')) {

   

   //验证资料是否填写完全,这里验证$tid(帖子id)是否填写

      if(empty($tid)) {

             showmessage('magics_info_nonexistence');

      }

   

   //取得帖子的相关资料

      $thread = getpostinfo($tid, 'tid', array('fid'));

   //验证帖子所在的版块是否有使用道具的权限

      checkmagicperm($magicperm['forum'], $thread['fid']);

   

   //道具的执行代码

      $db->query("UPDATE {$tablepre}threads SET closed='1', moderated='1' WHERE tid='$tid'");

      $expiration = $timestamp + 86400;

 

   //使用道具代码

      usemagic($magicid, $magic['num']);

   //记录道具使用日志

      updatemagiclog($magicid, '2', '1', '0', $tid);

   //记录道具使用对象(这里指主题)日志

      updatemagicthreadlog($tid, $magicid, $magic['identifier'], $expiration);

   //显示道具使用信息

      showmessage('magics_operation_succeed', 'magic.php?action=user');

 

}

 

//生成道具界面显示代码

function showmagic() {

      global $tid, $lang;

      magicshowtype($lang['option'], 'top');

      magicshowsetting($lang['target_tid'], 'tid', $tid, 'text');

      magicshowtype('', 'bottom');

}

 

?>

 

以上就是一个简单道具的编写格式,其中红色注释部分是一个道具必须有的,当然里面的一些代码可以根据道具类型的不同做一些改动,比如取得帖子资料的语句,如果是对用户的操作,可以改为取用户资料。相关这些操作我们已经内置了一些自定义函数,通过这些自定义函数你就可以轻松调用你想调用的资料了,下面我们就来说说这些自定义函数。

 

3、道具系统自带函数

所有的自定函数都在include/magic.func.php文件里面,下面我对这些函数一一做解释

 

//道具权限验证函数

$perms有权限的groupid或者fid的序列,中间用\t隔开

$id要验证fid或者groupid

checkmagicperm($perms, $id)

 

//获得道具函数

$magicid道具id

$magicnum道具获得数量

$weight道具重量

$totalweight用户拥有道具总重量

$uid获得道具用户的uid

$maxmagicsweight该用户所拥有的道具最大重量

getmagic($magicid, $magicnum, $weight, $totalweight, $uid, $maxmagicsweight)

 

//查询用户拥有道具最大重量函数

$uid查询用户uid

$magicarray道具数据数组

getmagicweight($uid, $magicarray)

 

//查询帖子信息函数

$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)

 

 

 

//道具使用对象日志(主要用于使用对象主题时)

$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)

 

 


TAG: dz 插件 道具 开发 参考

引用 删除 emdneqixyx   /   2010-04-25 18:44:38
vRmeoJ  <a href="http://kumvgkerhwpz.com/">kumvgkerhwpz</a>, [url=http://pqihluwwuusm.com/]pqihluwwuusm[/url], [link=http://mbmigmyqzktu.com/]mbmigmyqzktu[/link], http://aoprkpsabtsa.com/
引用 删除 opnbfpxubr   /   2010-04-07 15:57:03
Podv4U  <a href="http://girspikrgibu.com/">girspikrgibu</a>, [url=http://vaynraizdsro.com/]vaynraizdsro[/url], [link=http://pqwbjpfqdcqh.com/]pqwbjpfqdcqh[/link], http://lzoxfdmyrwcn.com/
引用 删除 Guest   /   2008-01-10 22:28:48
5
引用 删除 Guest   /   2007-11-17 11:00:06
1
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar