做这个完全是为了让大家清楚怎么做卡片的,其实很简单,跟写插件一样:
卡片基础篇:
1.首先确定自己卡片的唯一标识符,卡片的买卖使用等都由唯一标识符决定。 例:运气卡->luck
2.然后写插件的主程序文件,文件名为 唯一标识符.card.inc.php。放在plugins/card目录下,使用时程序会自动调用。 例:运气卡->luck.card.inc.php
3.然后写卡片的主程序,和其他模版文件等等
主程序的调用方式
在卡片中心里,卡片的主程序是被这样调用的 if ([email=!@include]!@include[/email] DISCUZ_ROOT.'./plugins/card/'.$card['identifier'].'.card.inc.php') {
showmessage('card_center_ToolFileInexistence');
}elseif ($resultarray['success']){
changecard($discuz_uid,$card['identifier'],'-1','','','0',$mycardlist);
$detail = serialize($card);
cardlog();
showmessage($resultarray['message'],$resultarray['referer']);
} 红色部分调用了卡片主程序
蓝色部分负责了卡片的增减
紫色部分返回插件信息
主程序的基本结构
以运气卡为例//只有卡片中心可以调用该文件
if(!defined('IN_CARD')) {
exit('Access Denied');
}
//检查卡片是否能被使用
checkcard($discuz_uid,$card['identifier'],'-1','','',$groupid,'',$mycardlist);
..........程序代码.......
//返回信息
$resultarray=array(
'success' => true,//是否使用成功,适用成功则减卡片,否则不减
'message' => 'card_tool_LuckSuccess',//showmessage的信息
'referer' => 'plugin.php?identifier=card&module=card&action=mycard'//showmessage的跳转
); checkcard函数保证了只有用户满足使用条件才可以使用该卡片,其定义为- function checkcard($uid,$identifier,$num="",$price="",$extcredits = "",$groupid="",$fid="",$mycardlist="")
复制代码 其中$num,$price,$extcredits,$groupid,$fid,$mycardlist都是选参
$num参数,如果提供则会判断用户的卡片是否满足$num的要求。如果增加卡片用正值,减少卡片用负值
$price参数,如果提供则会判断用户的积分是否满足使用要求,同样增加为正,减少为负
$extcredits参数,如果提供$price参数,则必须提供$extcredits参数,提供用户当前的积分
$groupid参数,提供了怎会判断用户的用户组是否在卡片允许使用的用户组中
$fid参数,作用同$groupid参数,判断论坛版面
$mycardlist参数,提供用户当前拥有的道具信息。如果不加这个参数,函数会自动查询用户的卡片信息。卡片中心为卡片主程序提供了$mycardlist数组
主程序可用的变量和数组
$_CARD 储存所有卡片的信息,其中卡片库存数量信息并不准确,如果要使用请直接查询数据库
$card 当前使用卡片的信息
$mycardlist 当前用户拥有的所有卡片
$userextcredits 当前用户的扩展积分数值
剩下的大家就自己发挥吧呵呵
上我那个卡片的预览
[ 本帖最后由 PerfectWorks 于 2006-7-24 13:44 编辑 ]
[ 本帖最后由 PerfectWorks 于 2006-7-24 14:09 编辑 ] |