Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

FY的道具商店1.4终结版-BUG列表8.11(key:鲜花鸡蛋,隐身,限时置顶,主题鉴定)

[复制链接]
PerfectWorks 发表于 2005-7-18 22:06:05 | 显示全部楼层 |阅读模式
插件名称:道具商店
插件作者:文文の封印(部分代码属DZ、liuqiang、POLO!所有)
最后发布:8.11.05
版本     :1.4
适用版本:2.5SP1(2.5语言包不正常,解决方法见步骤6.1~6.2)
简易程度:复杂
cache    :有
占用资源:少
sql升级  :有
必须插件:银行
改动文件:viewthread.php,newthread.php,newreply.php,cache.php,global.php
改动模板:viewthread.htm,forumdisplay.htm,viewthread_printable.htm,post_newthread.htm,post_newreply.htm,plugin.lang.php
技术支持:discuz.net,freediscuz.net
主要功能:付费金钱清零、高亮、置顶一天、鉴定主题、隐身发贴/反隐身、降低主题、删除主题、发帖时提示、自主更名、鲜花鸡蛋、克隆童虎虚拟形象。使用道具短消息提示、鲜花鸡蛋短消息提示。批量赠送道具给用户/用户组+短消息提示。所有动作记录。


友情提示:本插件安装复杂程度估计可以在DZ插件史上排上前10,新人安装一定要慎重。特别是cache修改极易出错。如果安装不成功,看一楼末尾的buglist和常见问题。安装后无法使用,99%是由于修改差步、修改位置出错造成。简单一句,要小心谨慎的装。

更新记录:
1.4
加入四个新道具(鲜花鸡蛋克隆虚拟形象和更名)
使用道具、奖励、赠送PM通知
修正一点小bug

1.3
增强的用户奖励(用户、用户组奖励,PM通知)
所有操作都有记录
去掉global.php的自定义函数
改变存储结构
修正小bug

1.2-新道具:发帖时友情小提示
升级方法:https://discuz.dismall.com/viewth ... &extra=page%3D1

1.2
道具可以关闭
前台编辑道具
加入店长
加了一个新道具-删帖(默认关闭,删帖会把帖子转移到回收站版面,回收站版面后台设置)
用switch...case...break代替if...elseif结构
修正一些小BUG

0.720
整合礼包功能
美化模板,仿银行
修正模板bug
进一步语言包化
语言包转到plug.lang.php
加入cache,减少7个查询
其它一些小bug
升级方法在2楼

装这个之前,请先安装以下插件的一部分即可,可以直接安装我在3楼整理出的精简版本

【主题鉴定】(如果不想用鉴定,后台关闭即可)
【限时置顶】(如果不想用,后台关闭即可)

如果某些道具你不需要,可以不执行它的修改过程。下面每个步骤都注明了是为了哪几个功能服务的。
注意如果你不需要该道具,请在道具编辑界面关闭它


step 1.9(必须)
按目录结构上传附件,导入plug_shop.txt

step 2.(必须)
运行附件中的shop_install.php安装,然后删除shop_install.php

step 3.1(隐身及其发帖提示必须)
打开include/newreply.php和include/newthread.php(这俩修改方法一样)
找到

  1. if(!defined('IN_DISCUZ')) {
  2.         exit('Access Denied');
  3. }
复制代码

下面加

  1. //------------------------------------------------------
  2. //Shop BY FY
  3. //------------------------------------------------------
  4. @require DISCUZ_ROOT.'./forumdata/cache/cache_shop.php';
  5. $query=$db->query("SELECT * FROM $table_useritems WHERE uid='$discuz_uid'");
  6. $temp=$db->fetch_array($query);
  7. $myitemlist = $_DCACHE[item];
  8. for($i=0;$i<$_DCACHE[itemnum];){
  9.         $myitemlist[$i++][num]=$temp["item".$i];
  10. }
  11. //------------------------------------------------------
复制代码


step 3.2(隐身极发帖提示必须)
找到
  1.        
  2. include template('post_newreply');

  3. } else {
复制代码

(newthread.php里面是)

  1. include template('post_newthread');

  2. } else {
复制代码

下面加

  1. //-----------------------------------------------------
  2. //Shop by FY
  3. //-----------------------------------------------------
  4. $hide = $hide ? 1:0;
  5. if($hide){
  6.         if(!$myitemlist[1]['use'])showmessage('shop_itemclose');
  7.         if($myitemlist[1][num]<1)showmessage('shop_error_post');
  8.         $db->query("UPDATE $table_useritems SET item2=item2-1 WHERE uid='$discuz_uid'");
  9.         $temp="【身份隐藏】";
  10. }else{
  11.     $temp=$discuz_user;
  12. }

  13. $msgshow = $msgshow ? 1:0;
  14. //newreply.php可以不要下面这一段
  15. if($msgshow && !$alertmsg){
  16.         showmessage('shop_alertmsgno');
  17. }elseif($msgshow && $alertmsg){
  18.         if(!$myitemlist[8]['use'])showmessage('shop_itemclose');
  19.         if($myitemlist[8][num]<1)showmessage('shop_error_post');
  20.                 $db->query("UPDATE $table_useritems SET item9=item9-1 WHERE uid='$discuz_uid'");
  21.                 $alertmsg = addslashes($alertmsg);
  22.         if(strlen($alertmsg) > 255)showmessage('shop_alertmsgmax');
  23. }
  24. //newreply.php可以不要上面这一段
  25. //-----------------------------------------------------
复制代码


step 3.39(隐身必须)
找到
  1. , smileyoff, parseurloff
复制代码

后面加
  1. ,hide
复制代码


step 3.4(隐身必须)
找到
  1. '$smileyoff', '$parseurloff'
复制代码

后面加
  1. ,'$hide'
复制代码


step 3.5(隐身必须)
找到(共两处)
  1. \t$discuz_user
复制代码

改成
  1. \t$temp
复制代码


step 3.6(隐身必须)
newreply.php里面
找到
  1. $db->query("UPDATE $table_threads SET lastposter='$discuz_user', lastpost='$timestamp', replies=replies+1, attachment='".attachtype($last_attach_type, 'id')."' WHERE tid='$tid' AND fid='$fid'", 'UNBUFFERED');
复制代码

改成
  1. $db->query("UPDATE $table_threads SET lastposter='$temp', lastpost='$timestamp', replies=replies+1, attachment='".attachtype($last_attach_type, 'id')."' WHERE tid='$tid' AND fid='$fid'", 'UNBUFFERED');
复制代码

找到
  1. $db->query("UPDATE $table_threads SET lastposter='$discuz_user', lastpost='$timestamp', replies=replies+1 WHERE tid='$tid' AND fid='$fid'", 'UNBUFFERED');
复制代码

改成
  1. $db->query("UPDATE $table_threads SET lastposter='$temp', lastpost='$timestamp', replies=replies+1 WHERE tid='$tid' AND fid='$fid'", 'UNBUFFERED');
复制代码


step 3.7
newthread.php里面(隐身必须)
找到
  1. poll, attachment
复制代码

后面加
  1. ,hide
复制代码

找到
  1. VALUES ('$fid', '$viewperm', '$iconid', '$discuz_user', '$discuz_uid', '$subject', '$timestamp', '$timestamp', '$discuz_user', '$displayorder', '$digest', '$poll', '".attachtype($last_attach_type, 'id')."')");
复制代码

改成
  1. VALUES ('$fid', '$viewperm', '$iconid', '$discuz_user', '$discuz_uid', '$subject', '$timestamp', '$timestamp', '$temp', '$displayorder', '$digest', '$poll', '".attachtype($last_attach_type, 'id')."','$hide')");
复制代码

3.8(发帖提示必须)
找到
  1. $tid = $db->insert_id();
复制代码
下面加

  1. //--------------------------------------------------------------
  2. //Shop By FY
  3. //--------------------------------------------------------------
  4. if($msgshow){
  5.     $db->query("INSERT INTO $table_threadsalert (tid,alertmsg) VALUES ('$tid','$alertmsg')");
  6.         $db->query("UPDATE $table_threads SET alerted=1 WHERE tid=$tid");

  7.         $shopaction = 'use';
  8.         $shoplogfile = DISCUZ_ROOT."./forumdata/shoplog.php";
  9.         @$fp = fopen($shoplogfile, 'a+');
  10.         @fwrite($fp, "$timestamp\t$discuz_uid\t".dhtmlspecialchars($discuz_user)."\t$shopaction\t9\t$onlineip\t$subject\t$tid\t$uidto\t$usernameto\t$numto\n");
  11.         @fclose($fp);
  12. }
  13. //--------------------------------------------------------------
复制代码


step 5.1(必须)
打开cache.php
找到

  1. case ranks:
  2.         $table = $GLOBALS['table_ranks'];
  3.         $cols='ranktitle,postshigher,stars,color';
  4.         $conditions = "WHERE 1 ORDER BY postshigher desc";
  5.         break;
复制代码

后面加

  1. //-----------------------------------------------------
  2. //Shop by FY
  3. //-----------------------------------------------------
  4. case item:
  5.         $table = $GLOBALS['table_shop'];
  6.         $conditions = "ORDER BY id";
  7.         break;
  8. case itemnum:
  9.         $table = $GLOBALS['table_shop'];
  10.         $cols='count(*)';
  11.         break;
  12. //-----------------------------------------------------
复制代码


step 5.2(必须)
找到

  1. $query = $db->query("SELECT $cols FROM $table $conditions");
  2. switch($cachename) {
复制代码

后面加

  1. //-----------------------------------------------------
  2. //Shop by FY
  3. //-----------------------------------------------------
  4. case item:
  5.         while($item = $db->fetch_array($query)){$data[] = $item;}
  6.         break;
  7. case itemnum:
  8.         $data = $db->result($query,0);
  9.         break;
  10. //-----------------------------------------------------
复制代码


step 5.3(必须)
找到

  1. 'plugins'        => array('plugins', 'plugins_settings')
复制代码

后面加
  1. ,
复制代码

然后下面加

  1. //-----------------------------------------------------
  2. //Shop by FY
  3. //-----------------------------------------------------
  4. 'shop'                => array('item','itemnum')
  5. //-----------------------------------------------------
复制代码


step 6.1(必须)
覆盖plugin.lang.php附件,注意,根据有无装日记本选择适合自己的附件
如果不是SP1用户或者覆盖后出现界面英文情况,请根据无日记本版plugin.lang.php中的注释修改

step 7.(反隐、高亮、鉴定、置顶、删帖、降低、发帖提示、鸡蛋鲜花、克隆虚拟形象必须)
打开viewthread.php
找到

  1. } else {
  2.         showmessage('thread_nonexistence');
  3. }
复制代码

下面加

  1. // ----------------------------------------------------------------
  2. // Shop By FY
  3. // ----------------------------------------------------------------
  4. @require DISCUZ_ROOT.'./forumdata/cache/cache_shop.php';
  5. $query=$db->query("SELECT * FROM $table_useritems WHERE uid='$discuz_uid'");
  6. $temp=$db->fetch_array($query);
  7. $myitemlist = $_DCACHE[item];
  8. for($i=0;$i<$_DCACHE[itemnum];){
  9.         $myitemlist[$i++][num]=$temp["item".$i];
  10. }
  11. $useitem = (
  12. ( $myitemlist[4][num]>0 && $myitemlist[4]['use'] ) ||
  13. ( $myitemlist[2][num]>0 && $myitemlist[2]['use'] ) ||
  14. ( $myitemlist[5][num]>0 && $myitemlist[5]['use'] ) ||
  15. ( $myitemlist[6][num]>0 && $myitemlist[6]['use'] ) ||
  16. ( $myitemlist[7][num]>0 && $myitemlist[7]['use'] )
  17. )? 1:0;
  18. $randnum = rand(1,4);

  19. if($thread['alerted']){
  20.         $query = $db->query("SELECT alertmsg FROM $table_threadsalert WHERE tid='$tid'");
  21.         $alertmsg = $db->result($query,0);
  22.        
  23.         if($alertmsg && !$_COOKIE[alert."$tid"]){
  24.                         $alertmsg = str_replace("\r\n","\\n",$alertmsg);
  25.                         setcookie("alert".$tid, 1, $timestamp + 86400, $cookiepath, $cookiedomain);
  26.         }else{
  27.                         $alertmsg = NULL;
  28.         }
  29. }
  30. // ----------------------------------------------------------------
复制代码


step 7.2(克隆虚拟形象必须)
找到
  1.                            
  2. $post['avatar'] = "
  3. <!-- 虚拟形象开始-->
  4. <DIV id=Show{$post['pid']}
  5. style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: 120px; PADDING-TOP: 0px; POSITION: relative; TOP: 0px; HEIGHT: 150px">
  6. </DIV>
  7. <!-- 虚拟形象结束-->";
复制代码

改成
  1.                                                
  2. if ($myitemlist[9]['num']>0 && $myitemlist[9]['use'] && $post['authorid']!=$discuz_uid)$post['avatar']="<a onClick='var truthBeTold = window.confirm("要克隆这个虚拟形象吗?");if (truthBeTold) window.open("plugins.php?p=shop&action=use&id=10&uid={$post['authorid']}");'>";
  3. $post['avatar'].= "
  4. <!-- 虚拟形象开始-->
  5. <DIV id=Show{$post['pid']}
  6. style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: 120px; PADDING-TOP: 0px; POSITION: relative; TOP: 0px; HEIGHT: 150px">
  7. </DIV>
  8. </a>
  9. <!--{/if}-->
  10. <!-- 虚拟形象结束-->";
  11. if ($myitemlist[9]['num']>0 && $myitemlist[9]['use'])$post['avatar'].="</a>";
复制代码


step 8.1(高亮、鉴定、置顶、删帖、降低必须)
打开viewthread.htm模板
找到
  1. <!--{if $ismoderator}-->
复制代码

上面加

  1. <!--Shop by FY START-->
  2. <!--{if $useitem}-->
  3. <span class="bold">{lang shop_item}:</span>
  4. <select name="item" id="item" onchange="window.location=('plugins.php?p=shop&action=use&tid=$tid&id='+this.options[this.selectedIndex].value+'&fpage=$fpage');">
  5. <option value="" selected>{lang shop_use}{lang shop_item}</option>
  6. <!--{if $myitemlist[2][num] && $myitemlist[2][use]}-->
  7. <option value="3">$myitemlist[2][name]</option>
  8. <!--{/if}-->
  9. <!--{if $myitemlist[4][num] && $thread[displayorder]==0 && $myitemlist[4][use]}-->
  10. <option value="5">$myitemlist[4][name]</option>
  11. <!--{/if}-->
  12. <!--{if $myitemlist[5][num] && $myitemlist[5][use]}-->
  13. <option value="6">$myitemlist[5][name]</option>
  14. <!--{/if}-->
  15. <!--{if $myitemlist[6][num] && $myitemlist[6][use]}-->
  16. <option value="7">$myitemlist[6][name]</option>
  17. <!--{/if}-->
  18. <!--{if $myitemlist[7][num] && $myitemlist[7][use]}-->
  19. <option value="8">$myitemlist[7][name]</option>
  20. <!--{/if}-->
  21. </select>
  22. <!--{/if}-->
  23. <!--Shop by FY END-->
复制代码


step 8.2(隐身必须)
找到
  1. <td valign="top" width="21%">
复制代码

下面加

  1. <!--Shop by FY START-->
  2. <!--{if $post['hide']}-->
  3.         <table width="95%" border="0" cellspacing="0" cellpadding="0" style="table-layout: fixed">
  4.         <tr><td valign=middle><center>
  5.         <span class="bold"><font style="filter: glow(color=#FF0000,strength=3); height:10px; color:white; padding:1px">{lang shop_hide_user}</font></span>
  6.         <BR><BR>
  7.         <input type="hidden" name="uid" value="$post[uid]">
  8.         <!--{if $myitemlist[3][num]}-->
  9.         <img onClick='var truthBeTold = window.confirm("{lang shop_view_sure}");if (truthBeTold) window.open("plugins.php?p=shop&action=use&id=4&uid=$post[authorid]");'  src=images/common/hide$randnum.jpg border=1>
  10.         <!--{else}-->
  11.         <img src=images/common/hide$randnum.jpg border=1>
  12.         <!--{/if}-->
  13.         <br>
  14.         <br><span class="bold"><font style="filter: glow(color=#FF0000,strength=3); height:10px; color:white; padding:1px">
  15.         <!--{if $myitemlist[3][num]}-->
  16.         {lang shop_view_hide}
  17.         <!--{else}-->
  18.         {lang shop_hide_user}
  19.         <!--{/if}--></font></span></center>
  20.         </td></tr></table>
  21. <!--{else}-->
复制代码


step 8.3(隐身必须)
找到

  1. </td>
  2. <td width="79%" height="100%" valign="top">
复制代码

上面加

  1. <!--{/if}--><!--Shop by FY END-->
复制代码


step 8.4(隐身必须)
找到

  1. <tr class="smalltxt"><td align="left">
复制代码

下面加
  1. <!--Shop by FY START-->
  2. <!--{if !$post['hide']}-->
复制代码


step 8.5(隐身必须)
找到
  1. <!--{if $post['oicq']}--><a href="http://search.tencent.com/cgi-bin/friend/user_show_info?ln=$post[oicq]" target="_blank"><img src="{IMGDIR}/oicq.gif" alt="QQ" border="0"></a>&nbsp;<!--{/if}-->
复制代码

后面加
  1. <!--{/if}--><!--Shop by FY END-->
复制代码


step 8.6(隐身必须)
找到
  1. <!--{if !$thread['closed'] || $ismoderator}-->
复制代码

替换为
  1. <!--{if (!$thread['closed'] || $ismoderator) && !$post['hide']}--><!--Shop modified by FY-->
复制代码


step 8.7(隐身必须)
找到
  1. <!--{if $allowkarma && $maxkarmarate}-->
复制代码

替换为
  1. <!--{if $allowkarma && $maxkarmarate && !$post['hide']}--><!--Shop modified by FY-->
复制代码


step 8.8(隐身必须)
找到
  1. <!--{if $post['signature']}-->
复制代码

改成
  1. <!--{if $post['signature'] && !$post['hide']}--><!--Shop modified by FY-->
复制代码


step 8.9(礼包必须)
找到
  1. $post[subject]</span>
复制代码

后面加
  1. <!--{if $adminid==1}--> <a href="plugins.php?p=shop&action=gift&give=1&uid=$post[authorid]&tid=$tid&page=$page&pid=$post[pid]">-奖励大礼包</a><!--{/if}--><!--Shop modified by FY-->
复制代码


step 8.10(发帖提示必须)
找到
  1. <!--{if $polloptions}-->
  2.         {template viewthread_poll}
  3. <!--{/if}-->
复制代码

上面加
  1. <!--{if $alertmsg}-->
  2. <script>
  3. confirm("$alertmsg");
  4. </script>
  5. <!--{/if}-->
复制代码


step 8.11(鲜花鸡蛋必须)
找到
  1. $post[subject]</span>
复制代码

前面加
  1. <!--{if $myitemlist[10][use] && $myitemlist[10][num]}--><a href=plugins.php?p=shop&action=use&id=11&pid=$post[pid]&page=$page onClick='return confirm("您确定给这个帖子献花?");'><!--{/if}--><img src=images/shop/11.gif border=0><!--{if $post[flower]}-->$post[flower]<!--{else}-->0<!--{/if}--><!--{if $myitemlist[10][use] && $myitemlist[10][num]}--></a><!--{/if}-->
  2.                                 <!--{if $myitemlist[11][use] && $myitemlist[11][num]}--><a href=plugins.php?p=shop&action=use&id=12&pid=$post[pid]&page=$page onClick='return confirm("您确定给这个帖子丢鸡蛋?");'><!--{/if}--><img src=images/shop/12.gif border=0><!--{if $post[egg]}-->$post[egg]<!--{else}-->0<!--{/if}--><!--{if $myitemlist[11][use] && $myitemlist[11][num]}--></a><!--{/if}-->
复制代码


step 9.1(隐身必须)
打开post_newreply.htm和post_newthread.htm模板(修改都一样)
找到

  1. {lang post_email_notify}
复制代码

下面加

  1. <!--Shop by FY START-->
  2. <!--{if $myitemlist[1][num] && $myitemlist[1][use]}-->
  3. <BR><input type="checkbox" name="hide" value="1"> {lang shop_use}$myitemlist[1][name]{lang shop_hide}
  4. <!--{/if}-->
  5. <!--Shop by FY END-->
复制代码


(以下几个步骤只在post_newthread.htm里修改)
step 9.2(发帖提示必须)
找到

  1. function validate(theform) {
复制代码

下面加
  1.         if (!theform.alertmsg.value && theform.msgshow.checked == true)
  2.         {
  3.                 alert("{lang shop_alertmsgno}");
  4.                 return false;        
  5.         }
复制代码


step 9.3(发帖提示必须)
找到
  1. <textarea rows="4" cols="85" name="polloptions" tabindex="5">$polloptions</textarea></td>
  2.         </tr>
  3. <!--{/if}-->
复制代码

下面加
  1. <!--{if $myitemlist[8][num] && $myitemlist[8][use]}-->
  2. <SCRIPT LANGUAGE="JavaScript">

  3. function showmsg(){
  4.         if (document.input.msgshow.checked == true) {
  5.                         msg.style.display = "";
  6.         }else{
  7.                         msg.style.display = "none";
  8.         }
  9. }

  10. function choicemsg(thisform){
  11.      
  12.       var msg1="您所浏览的帖子严重缺水!请灌水20次,否则您的电脑将被重启100次。您是否要灌水?(点击取消电脑将会被重启)";
  13.       var msg2="喂喂喂!大家不要灌水,灌水会犯了嗔戒的!";
  14.           var msg3="悟空你也太调皮了,我跟你说过叫你不要乱灌水,你怎么又……你看我还没完你又把那个帖子给灌了!月光宝盒是宝物,你把它也灌了会污染环境,要是淹到小朋友怎么办?就算淹不到小朋友淹到那些花~花~草~草~也是不对的!";
  15.           var msg4="--走\n--去哪?师傅??\n--天竺";
  16.           var msg5="会灌水就一定是好人吗?";
  17.           var msg6="--怎么灌水来着?这样?……这样?……\n--恩,再点两下鼠标";
  18.           var msg7="俄灌水的时候,你也就是个三好学生";
  19.           var msg8="这么快就灌上了?你属什么的?";
  20.       var other="";

  21.       document.input.alertmsg.focus(thisform);
  22.       
  23.       var va=thisform.options[thisform.selectedIndex].value;
  24.          
  25.       switch(va) {
  26.                 case "1": document.input.alertmsg.value=msg1; break;
  27.                 case "2": document.input.alertmsg.value=msg2; break;                                                  
  28.                 case "3": document.input.alertmsg.value=msg3; break;
  29.                 case "4": document.input.alertmsg.value=msg4; break;
  30.                 case "5": document.input.alertmsg.value=msg5; break;
  31.                 case "6": document.input.alertmsg.value=msg6; break;
  32.                 case "7": document.input.alertmsg.value=msg7; break;
  33.                 case "8": document.input.alertmsg.value=msg8; break;
  34.                 default:  document.input.alertmsg.value=other;
  35.       }
  36.       
  37. }

  38. </script>
  39. <script>

  40. </SCRIPT>
  41. <tr id=msg style="DISPLAY: none">
  42.         <td bgcolor="{ALTBG1}" valign="top">{lang shop_alertmsg}:<br>
  43.                 <span class="smalltxt"><font color=red>{lang shop_alertmsgmax}</font>
  44.                 </span></td>
  45.         <td bgcolor="{ALTBG2}">        <select onchange="javascript:choicemsg(this);" size=4>
  46.       <option value="" selected>预制模板</option>
  47.       <OPTION value=1>搞笑1</OPTION>
  48.       <OPTION value=2>大话版1</OPTION>
  49.           <OPTION value=3>大话版2</OPTION>
  50.           <OPTION value=4>大话版3</OPTION>
  51.       <OPTION value=5>天下无贼1</OPTION>
  52.           <OPTION value=6>天下无贼2</OPTION>
  53.           <OPTION value=7>天下无贼3</OPTION>
  54.           <OPTION value=8>天下无贼4</OPTION>
  55.    </select>

  56.                 <textarea rows="4" cols="68" name="alertmsg" tabindex="5">$alertmsg</textarea>
  57.         </td>
  58. </tr>
  59. <!--{/if}-->
复制代码


step 9.4(发帖提示必须)
找到
  1. <!--{if $myitemlist[1][num] && $myitemlist[1][use]}-->
  2. <input type="checkbox" name="hide" value="1"> {lang shop_use}$myitemlist[1][name]{lang shop_hide}
  3. <!--{/if}-->
复制代码
后面加
  1. <!--{if $myitemlist[8][num] && $myitemlist[8][use]}-->
  2. <input id=msgcheck type="checkbox" name="msgshow" value="1" onclick=showmsg()> 使用$myitemlist[8][name]发帖
  3. <!--{/if}-->
复制代码


step 10.
打开forumdisplay.htm模板(隐身必须)
找到

  1. <!--{if $thread['authorid']}-->
复制代码

上面加

  1. <!--Shop by FY START-->
  2. <!--{if $thread[hide]}-->
  3. <a>【身份隐藏】</a>
  4. <!--{else}-->
复制代码

再找
  1. <br> <span class="smalltxt">$thread[dateline]</span></td>
复制代码

上面加
  1. <!--{/if}--><!--Shop by FY END-->
复制代码


step 11.(隐身必须)
打开viewthread_printable.htm模板
找到
  1. $post[author]
复制代码

改成
  1. <!--{if $post[hide]}-->【身份隐藏】<!--{else}-->]$post[author]<!--{/if}--><!--Shop modified by FY-->
复制代码


step 12.(必须,安装过梦网topicadmin不用加)
打开global.php
在结尾的
  1. ?>
复制代码

上面加

  1. //sendpm 函数 取自梦网topicadmin
  2. function sendpm($toid, $subject, $message, $fromid = '', $from = '') {
  3.         extract($GLOBALS, EXTR_SKIP);
  4.         include language('pms');

  5.         if(isset($language[$subject])) {
  6.                 eval("\$subject = addslashes("".$language[$subject]."");");
  7.         }
  8.         if(isset($language[$message])) {
  9.                 eval("\$message = addslashes("".$language[$message]."");");
  10.         }

  11.         if(!$fromid && !$from) {
  12.                 $fromid = $discuz_uid;
  13.                 $from = $discuz_user;
  14.         }
  15.         foreach(explode(',', $toid) as $uid) {
  16.                 $db->query("INSERT INTO $table_pms (msgfrom, msgfromid, msgtoid, folder, new, subject, dateline, message)
  17.                         VALUES ('$from', '$fromid', '$uid', 'inbox', '1', '$subject', '$timestamp', '$message')");
  18.         }

  19.         $db->query("UPDATE $table_members SET newpm='1' WHERE uid IN ($toid)");
  20. }
复制代码


~完~别忘了更新缓存~


卸载也是通过shop_install.php实现的




BUG修正以及常见问题:
使用降低主题时出现错误的SQL语句
解决办法:覆盖shop.php

进入道具时出现错误代码提示不存在的字段luck
解决办法:覆盖shop.php

奖励礼包时用户名为空
解决办法:
viewthread.htm
找到
  1. &pid=pid$post[pid]
复制代码

改成
  1. &pid=$post[pid]
复制代码


使用反隐道具时出现错误提示说没有帖子
解决办法:
viewthread.htm
找到
  1. &action=use&id=4&pid=$post[pid]
复制代码

改成
  1. &action=use&id=4&uid=$post[authorid]
复制代码


最新版本已经修正这些BUG

打开商店白版
请先确定你导入了插件信息
然后确定你已经去后台更新过缓存了!
可能是由于没有getinfo()函数造成
打开根目录plugin.php
看看有没有
  1. function getinfo($plugname){
  2.         global $plugins_script;
  3.         if (!in_array($plugname,$plugins_script)) return '';
  4.         @include DISCUZ_ROOT.'./forumdata/cache/cache_plugins.php';
  5.         return $_DCACHE['plugins'][$plugname];
  6. }
复制代码

如果没有就在
  1. ?>
复制代码
之上加入这一段
如果存在,可能是因为cache没有生成
看下forumdata/cache下面有没有cache_shop.php这个文件
如果没有,请仔细检查cache.php中的修改步骤有无出错
如果有,属于特殊个案。请跟贴说明

版面页数小于3页时降低主题道具不正常(不能降低主题)
暂无解决办法

使用道具出错
  1. Discuz! info: MySQL Query Error

  2. User: admin
  3. Time: 2005-8-13 11:32pm
  4. Script: /plugins.php

  5. SQL: SELECT t.tid,t.lastpost,t.badge,t.displayorder,t.highlight,f.name AS fname,f.fid,p.pid,p.message,p.dateline,t.subject,p.subject AS psub,p.authorid
  6. FROM cdb_posts p
  7. LEFT JOIN cdb_threads t ON t.tid=p.tid
  8. LEFT JOIN cdb_forums f ON t.fid=f.fid
  9. WHERE p.pid=44343
  10. Error: Unknown column 't.badge' in 'field list'
  11. 程序文件跟数据库有冲突,请使用正确的程序文件上传上去覆盖

  12. Similar error report has beed dispatched to administrator before.
复制代码


解决办法:这个是没有升级数据库造成
升级数据库
  1. ALTER TABLE `cdb_threads` ADD `badge` TINYINT( 1 ) DEFAULT '0' NOT NULL ;
复制代码



数据库手动代码:(仅在shop_install.php无效时使用)
安装

  1. DROP TABLE IF EXISTS cdb_useritems;
  2. CREATE TABLE cdb_useritems (uid MEDIUMINT( 8 ) UNSIGNED NOT NULL ,item1 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item2 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item3 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item4 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item5 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item6 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item7 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item8 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item9 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item10 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item11 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item12 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,item13 INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,PRIMARY KEY ( uid ) );
复制代码


  1. DROP TABLE IF EXISTS cdb_shop;
  2. CREATE TABLE cdb_shop (id int(10) NOT NULL default '0',name char(20) NOT NULL default '',  description char(100) NOT NULL default '',  price int(10) NOT NULL default '0',  `use` tinyint(1) NOT NULL default '1')
复制代码

  1. DROP TABLE IF EXISTS cdb_threadsalert;
  2. CREATE TABLE cdb_threadsalert (tid MEDIUMINT( 8 ) UNSIGNED NOT NULL ,alertmsg VARCHAR( 255 ) NOT NULL ,PRIMARY KEY ( tid ));
复制代码


  1. INSERT INTO cdb_shop VALUES (1, '黄金落日虾', '负金钱清零', 500, '1');
  2. INSERT INTO cdb_shop VALUES (2, '隐身糯米团', '发贴时匿名', 50, '1');
  3. INSERT INTO cdb_shop VALUES (3, '多彩炸香肠', '让帖子标题以多彩的方式显示', 50, '1');
  4. INSERT INTO cdb_shop VALUES (4, '反隐乌龟堡', '浏览隐身帖时使用让发贴人显形', 80, '1');
  5. INSERT INTO cdb_shop VALUES (5, '置顶立体脆', '使用后可以让帖子以Level 1级别置顶1天', 100, '1');
  6. INSERT INTO cdb_shop VALUES (6, '鉴定柠檬派', '鉴定帖子,给帖子盖印章', 50, '1');
  7. INSERT INTO cdb_shop VALUES (7, '沉底炸鸡腿', '让指定的帖子沉到3页之后', 100, '1');
  8. INSERT INTO cdb_shop VALUES (8, '删帖猴子桃', '删除指定帖子', 1000, '0');
  9. INSERT INTO cdb_shop VALUES (9, '提示冰激凌', '发帖时可以设置看贴时跳出的提示小窗口', '120', '1');
  10. INSERT INTO cdb_shop VALUES (10, '克隆甜甜圈', '克隆别人的虚拟形象。在别人的虚拟形象上点击使用', '120', '1');
  11. INSERT INTO cdb_shop VALUES (11, '鲜花', '看帖时送鲜花加积分', '120', '1');
  12. INSERT INTO cdb_shop VALUES (12, '鸡蛋', '看帖时送鸡蛋减积分', '120', '1');
  13. INSERT INTO cdb_shop VALUES (13, '更名三明治', '可以更改自己的用户名。更改成功以后请用新用户名登陆', '120', '1');
复制代码


  1. ALTER TABLE cdb_posts ADD hide tinyint( 1 ) DEFAULT '0' NOT NULL;
  2. ALTER TABLE cdb_threads ADD hide tinyint( 1 ) DEFAULT '0' NOT NULL;
  3. ALTER TABLE cdb_threads ADD alerted tinyint( 1 ) DEFAULT '0' NOT NULL;
  4. ALTER TABLE cdb_members ADD gift INT( 1 ) DEFAULT '0' NOT NULL;
  5. ALTER TABLE `cdb_posts` ADD `flower` INT(10) DEFAULT '0' NOT NULL;
  6. ALTER TABLE `cdb_posts` ADD `egg` INT(10) DEFAULT '0' NOT NULL;
复制代码


卸载

  1. DROP TABLE cdb_shop;
  2. DROP TABLE cdb_threadsalert;
  3. DROP TABLE cdb_useritems ;
  4. ALTER TABLE cdb_posts DROP `hide`;
  5. ALTER TABLE cdb_threads DROP `hide`;
  6. ALTER TABLE cdb_threads DROP `alerted`;
  7. ALTER TABLE cdb_members DROP `gift`;
  8. ALTER TABLE cdb_posts DROP `flower`;
  9. ALTER TABLE cdb_posts DROP `egg`;
复制代码


演示,LOOK!

[ 本帖最后由 文文の封印 于 2005-8-21 10:49 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| PerfectWorks 发表于 2005-7-18 22:06:26 | 显示全部楼层

升级方法

1.4升级方法
上传所有文件,运行shop_install.php,选升级(1.3to1.4),重导入插件信息(或者手动加入一个标识符为flower的字段和一个标识符为egg的字段。控制鲜花鸡蛋加减积分)
执行第6.1,7.2,8.11,12步更新(根据需要)
更新缓存

1.3升级方法
上传所有文件,运行shop_install.php,选升级

打开include/global.php


  1. //------------------------
  2. //shop by FY
  3. //------------------------
复制代码
  1. //---------------------
复制代码
之间的东西删掉

按照步骤3.1、3.2和3.8更新newreply.php和newthread.php的更改(用新代码替换以前的)
按照步骤6.1、6.2更新语言包,或者直接下载我改好的覆盖

打开viewthread.php,删除以前的更改
进行步骤7

更新缓存~

1.2-新道具升级方法
升级数据库:

  1. ALTER TABLE `cdb_members` CHANGE `items` `items` VARCHAR( 64 ) DEFAULT '1_0;2_0;3_0;4_0;5_0;6_0;7_0;8_0;9_0;' NOT NULL;
  2. UPDATE cdb_members SET items=CONCAT(items,'9_0;');
  3. INSERT INTO `cdb_shop` ( `id` , `name` , `description` , `price` , `use` )
  4. VALUES (
  5. '9', '提示冰激凌', '发帖时可以设置看贴时跳出的提示小窗口', '120', '1'
  6. );
  7. CREATE TABLE `cdb_threadsalert` (
  8. `tid` MEDIUMINT( 8 ) UNSIGNED NOT NULL ,
  9. `alertmsg` VARCHAR( 255 ) NOT NULL ,
  10. PRIMARY KEY ( `tid` )
  11. );
复制代码


去后台,编辑道具商店插件(就是开启、关闭插件的那个界面)。在数据表一栏后面加上

  1. ,threadsalert
复制代码


viewthrea.php
  1. $randnum = rand(1,4);
复制代码
下面加
  1. $query = $db->query("SELECT alertmsg FROM $table_threadsalert WHERE tid='$tid'");
  2. $alertmsg = $db->result($query,0);
  3. if($alertmsg && !$_COOKIE[alert."$tid"]){
  4.                 $alertmsg = str_replace("\r\n","\\n",$alertmsg);
  5.         setcookie("alert".$tid, 1, $timestamp + 86400 * 365, $cookiepath, $cookiedomain);
  6. }else{
  7.         $alertmsg = NULL;
  8. }
复制代码


viewthread.htm
  1. <!--{if $polloptions}-->
  2.         {template viewthread_poll}
  3. <!--{/if}-->
复制代码

上面加
  1. <!--{if $alertmsg}-->
  2. <script>
  3. confirm("$alertmsg");
  4. </script>
  5. <!--{/if}-->
复制代码


post_newthread.htm
  1.         if (theform.subject.value == ""  ||theform.message.value == "")
  2.         {
  3.                 alert("{lang post_subject_and_message_isnull}");
  4.                 return false;
  5.         }
复制代码
上面加
  1.         if (!theform.alertmsg.value && theform.msgshow.checked == true)
  2.         {
  3.                 alert("{lang shop_alertmsgno}");
  4.                 return false;       
  5.         }
复制代码
  1. <textarea rows="4" cols="90" name="polloptions" tabindex="5">$polloptions</textarea></td>
  2.         </tr>
  3. <!--{/if}-->
复制代码
下面加
  1. <!--{if $myitemlist[8][num] && $myitemlist[8][use]}-->
  2. <SCRIPT LANGUAGE="JavaScript">

  3. function showmsg(){
  4.         if (document.input.msgshow.checked == true) {
  5.                         msg.style.display = "";
  6.         }else{
  7.                         msg.style.display = "none";
  8.         }
  9. }

  10. function choicemsg(thisform){
  11.      
  12.       var msg1="您所浏览的帖子严重缺水!请灌水20次,否则您的电脑将被重启100次。您是否要灌水?(点击取消电脑将会被重启)";
  13.       var msg2="喂喂喂!大家不要灌水,灌水会犯了嗔戒的!";
  14.           var msg3="悟空你也太调皮了,我跟你说过叫你不要乱灌水,你怎么又……你看我还没完你又把那个帖子给灌了!月光宝盒是宝物,你把它也灌了会污染环境,要是淹到小朋友怎么办?就算淹不到小朋友淹到那些花~花~草~草~也是不对的!";
  15.           var msg4="--走\n--去哪?师傅??\n--天竺";
  16.           var msg5="会灌水就一定是好人吗?";
  17.           var msg6="--怎么灌水来着?这样?……这样?……\n--恩,再点两下鼠标";
  18.           var msg7="俄灌水的时候,你也就是个三好学生";
  19.           var msg8="这么快就灌上了?你属什么的?";
  20.       var other="";

  21.       document.input.alertmsg.focus(thisform);
  22.       
  23.       var va=thisform.options[thisform.selectedIndex].value;
  24.          
  25.       switch(va) {
  26.                 case "1": document.input.alertmsg.value=msg1; break;
  27.                 case "2": document.input.alertmsg.value=msg2; break;                                                  
  28.                 case "3": document.input.alertmsg.value=msg3; break;
  29.                 case "4": document.input.alertmsg.value=msg4; break;
  30.                 case "5": document.input.alertmsg.value=msg5; break;
  31.                 case "6": document.input.alertmsg.value=msg6; break;
  32.                 case "7": document.input.alertmsg.value=msg7; break;
  33.                 case "8": document.input.alertmsg.value=msg8; break;
  34.                 default:  document.input.alertmsg.value=other;
  35.       }
  36.       
  37. }

  38. </script>
  39. <script>

  40. </SCRIPT>
  41. <tr id=msg style="DISPLAY: none">
  42.         <td bgcolor="{ALTBG1}" valign="top">{lang shop_alertmsg}:<br>
  43.                 <span class="smalltxt"><font color=red>{lang shop_alertmsgmax}</font>
  44.                 </span></td>
  45.         <td bgcolor="{ALTBG2}">        <select onchange="javascript:choicemsg(this);" size=4>
  46.       <option value="" selected>预制模板</option>
  47.       <OPTION value=1>搞笑1</OPTION>
  48.       <OPTION value=2>大话版1</OPTION>
  49.           <OPTION value=3>大话版2</OPTION>
  50.           <OPTION value=4>大话版3</OPTION>
  51.       <OPTION value=5>天下无贼1</OPTION>
  52.           <OPTION value=6>天下无贼2</OPTION>
  53.           <OPTION value=7>天下无贼3</OPTION>
  54.           <OPTION value=8>天下无贼4</OPTION>
  55.    </select>

  56.                 <textarea rows="4" cols="68" name="alertmsg" tabindex="5">$alertmsg</textarea>
  57.         </td>
  58. </tr>
  59. <!--{/if}-->
复制代码
  1. <!--{if $myitemlist[1][num]}-->
  2. <input type="checkbox" name="hide" value="1"> {lang shop_use}$myitemlist[1][name]{lang shop_hide}
  3. <!--{/if}-->
复制代码
下面加
  1. <!--{if $myitemlist[8][num] && $myitemlist[8][use]}-->
  2. <input id=msgcheck type="checkbox" name="msgshow" value="1" onclick=showmsg()> 使用$myitemlist[8][name]发帖
  3. <!--{/if}-->
复制代码

include/newthread.php
  1. if($hide){
  2.         $temp="【身份隐藏】";
  3. }else{
  4.         $temp=$discuz_user;
  5. }
复制代码

下面加
  1. $msgshow = $msgshow ? 1:0;

  2. if($msgshow && !$alertmsg){
  3.         showmessage('shop_alertmsgno');
  4. }elseif($msgshow && $alertmsg){
  5.         $result=shop($myitemlist,9,-1,$discuz_uid,"");
  6.         if($result)showmessage('shop_error_post');
  7.         $alertmsg = addslashes($alertmsg);
  8.         if(strlen($alertmsg) > 255)showmessage('shop_alertmsgmax');
  9. }
复制代码

  1. $tid = $db->insert_id();
复制代码

下面加

  1. //--------------------------------------------------------------
  2. //Shop By FY
  3. //--------------------------------------------------------------
  4. if($msgshow){
  5.         $db->query("INSERT INTO $table_threadsalert (tid,alertmsg) VALUES ('$tid','$alertmsg')");
  6. }
  7. //--------------------------------------------------------------
复制代码


编辑语言包plugins/plugin.lang.php
  1. 'shop_admininfo'=>        '注意:所有论坛管理员都具有店长的权限。',
复制代码

下面加
  1. 'shop_alertmsg' =>        '看帖时跳出信息',
  2. 'shop_alertmsgmax'        =>        '信息最多255个字符',
  3. 'shop_alertmsgno'        =>        '请输入弹出信息',
复制代码

  1. 'shop_error_delete' => '回收站版面设置错误',
复制代码

下面加
  1. 'shop_alertmsgno'        =>        '请输入弹出信息',
复制代码

把下面的图片传到images/shop目录下


更新缓存~搞定~

1.2升级方法
数据库升级

  1. UPDATE cdb_members SET items=CONCAT(items,'8_0;');
  2. ALTER TABLE `cdb_members` CHANGE `items` `items` VARCHAR( 64 ) DEFAULT '1_0;2_0;3_0;4_0;5_0;6_0;7_0;8_0;' NOT NULL;
  3. INSERT INTO `cdb_shop` ( `id` , `name` , `description` , `price` , `use` )
  4. VALUES (
  5. '8', '删帖猴子桃', '删除指定帖子', '1000', '0'
  6. );
复制代码


viewthread.php
  1. $useitem = ($myitemlist[4][num]>0 || $myitemlist[2][num]>0 || $myitemlist[5][num]>0 || $myitemlist[5][num]>0 || $myitemlist[6][num]>0)? 1:0;
复制代码

改成

  1. $useitem = (
  2. ( $myitemlist[4][num]>0 && $myitemlist[4]['use'] ) ||
  3. ( $myitemlist[2][num]>0 && $myitemlist[2]['use'] ) ||
  4. ( $myitemlist[5][num]>0 && $myitemlist[5]['use'] ) ||
  5. ( $myitemlist[6][num]>0 && $myitemlist[6]['use'] ) ||
  6. ( $myitemlist[7][num]>0 && $myitemlist[7]['use'] )
  7. )? 1:0;
复制代码



viewthread.htm
  1. plugins.php?p=shop&code=5
复制代码
改成
  1. plugins.php?p=shop&action=gift
复制代码

  1. window.open("plugins.php?p=shop&code=2&id=4&pid=$post[pid]")
复制代码

改成
  1. window.open("plugins.php?p=shop&action=use&id=4&pid=$post[pid]")
复制代码

  1. <!--{if $useitem}-->
  2. <span class="bold">{lang shop_item}:</span>
  3. <select name="id" id="id" onchange="if(this.options[this.selectedIndex].value != '') {         window.location=('plugins.php?p=shop&code=2&tid=$tid&id='+this.options[this.selectedIndex].value+'&fpage=$fpage');}">
  4. <option value="" selected>{lang shop_use}{lang shop_item}</option>
  5. <!--{if $myitemlist[2][num]}-->
  6. <option value="3">$myitemlist[2][name]</option>
  7. <!--{/if}-->
  8. <!--{if $myitemlist[4][num] && $thread[displayorder]==0}-->
  9. <option value="5">$myitemlist[4][name]</option>
  10. <!--{/if}-->
  11. <!--{if $myitemlist[5][num]}-->
  12. <option value="6">$myitemlist[5][name]</option>
  13. <!--{/if}-->
  14. <!--{if $myitemlist[6][num]}-->
  15. <option value="7">$myitemlist[6][name]</option>
  16. <!--{/if}-->
  17. </select>
  18. <!--{/if}-->
复制代码

改成

  1. <!--{if $useitem}-->
  2. <span class="bold">{lang shop_item}:</span>
  3. <select name="item" id="item" onchange="window.location=('plugins.php?p=shop&action=use&tid=$tid&id='+this.options[this.selectedIndex].value+'&fpage=$fpage');">
  4. <option value="" selected>{lang shop_use}{lang shop_item}</option>
  5. <!--{if $myitemlist[2][num] && $myitemlist[2][use]}-->
  6. <option value="3">$myitemlist[2][name]</option>
  7. <!--{/if}-->
  8. <!--{if $myitemlist[4][num] && $thread[displayorder]==0 && $myitemlist[4][use]}-->
  9. <option value="5">$myitemlist[4][name]</option>
  10. <!--{/if}-->
  11. <!--{if $myitemlist[5][num] && $myitemlist[5][use]}-->
  12. <option value="6">$myitemlist[5][name]</option>
  13. <!--{/if}-->
  14. <!--{if $myitemlist[6][num] && $myitemlist[6][use]}-->
  15. <option value="7">$myitemlist[6][name]</option>
  16. <!--{/if}-->
  17. <!--{if $myitemlist[7][num] && $myitemlist[7][use]}-->
  18. <option value="8">$myitemlist[7][name]</option>
  19. <!--{/if}-->
  20. </select>
  21. <!--{/if}-->
复制代码


打开plugins.lang.php
  1. 'shop_badge'        =>        '主题鉴定',
复制代码

下面加

  1. 'shop_edit'                =>        '编 辑',
  2. 'shop_admin'        =>        '商店店长',
  3. 'shop_admininfo'=>        '注意:所有论坛管理员都具有店长的权限。',
  4. 'shop_del_sure'        =>        '你想删帖吗?你真的想删帖吗?你想删帖就删嘛?你不会真的想删吧……',
复制代码

  1. 'shop_success_gift'        =>        '奖励成功',
复制代码

下面加
  1. 'shop_notids' => '你没有选择要应用道具的帖子!',
  2. 'shop_itemclose' => '道具已经被关闭',
  3. 'shop_success_edit' => '道具编辑成功',
  4. 'shop_error_delete' => '回收站版面设置错误',
  5. 'shop_error_post' => "发帖函数错误,如果你看到这条信息,请删除newthread.php和newreply.php中的if('$ result')showmessage('shop_error');",
复制代码

  1.         'shop_success_gift1'                =>        '领取大礼包成功',
  2.         'shop_success_gift2'        =>        '领取小礼包成功',
复制代码
改成
  1. 'shop_success_gift2'                =>        '领取大礼包成功',
  2. 'shop_success_gift1'        =>        '领取小礼包成功',
复制代码


打开include/newthread.php和include/newreply.php
  1. //-----------------------------------------------------
  2. //Shop by FY
  3. //-----------------------------------------------------
  4. @include DISCUZ_ROOT.'./forumdata/cache/cache_shop.php';

  5. $query=$db->query("select items from $table_members where uid=$discuz_uid");
  6. $myitems = $db->fetch_array($query);
  7. $myitems = explode(";",$myitems[items]);
  8. foreach($myitems as $temp) {
  9.         $temp = explode("_",$temp);
  10.         if($temp[0]){
  11.                 $useritem=$_DCACHE[item][$temp[0]-1];
  12.                 $useritem[num]=$temp[1];
  13.                 $myitemlist[] = $useritem;
  14.         }
  15. }

  16. $hide = $hide ? 1:0;
  17. if($hide)$result=shop($myitems,2,-1,0,$discuz_uid);
  18. if($hide){
  19.         $temp="【身份隐藏】";
  20. }else{
  21.         $temp=$discuz_user;
  22. }
复制代码
改成
  1. //------------------------------------------------------
  2. //Shop BY FY
  3. //------------------------------------------------------
  4. $myitemlist=itemlist($discuz_uid);
  5. //------------------------------------------------------
复制代码

然后找(newthread.php中)
  1. if(!$subject || !$message)
复制代码

(newreply.php里是)
  1. if($subject == '' && $message == '')
复制代码
上面加入
  1. //-----------------------------------------------------
  2. //Shop by FY
  3. //-----------------------------------------------------
  4. $hide = $hide ? 1:0;
  5. if($hide){
  6.         if(!$myitemlist[1]['use'])showmessage('shop_itemclose');
  7.         $result=shop($myitemlist,2,-1,$discuz_uid,"");
  8. }
  9. if($result)showmessage('shop_error_post');
  10. if($hide){
  11.         $temp="【身份隐藏】";
  12. }else{
  13.         $temp=$discuz_user;
  14. }
  15. //-----------------------------------------------------
复制代码


include/global.php中
  1. function shop($myitems,$id,$num,$money,$uid) {
  2.         global $db,$table_members;
  3.         foreach($myitems as $temp) {
  4.                 $temp = explode("_",$temp);
  5.                 if($temp[0]){
  6.                 if($id==$temp[0])$temp[1]=$temp[1]+$num;
  7.                 if($temp[1]>9 || $temp[1]<0)return 1;
  8.                 $date.=$temp[0].'_'.$temp[1].";";
  9.                 }
  10.         }
  11. //        echo $date;
  12.         $query = $db->query("UPDATE $table_members SET items='$date',money=money+$money WHERE uid=$uid");
  13.         return 0;
  14. }
复制代码
改成
  1. function shop($myitemlist,$id,$num,$uid,$sqlstring) {

  2.         global $db,$table_members;
  3.         $date = NULL;

  4.         foreach($myitemlist as $temp) {
  5.                 if($temp[id]){
  6.                         if($id==($temp[id]))$temp[num]=$temp[num]+$num;
  7.                         if($temp[num]>9 || $temp[num]<0)return 1;
  8.                 $date.=$temp[id].'_'.$temp[num].";";
  9.                 }
  10.         }

  11.         $query = $db->query("UPDATE $table_members SET items='$date' $sqlstring WHERE uid=$uid");
  12.         return 0;
  13. }
复制代码

附件按目录结构上传,重新导入plug_shop.txt的内容
更新缓存~完~


0.720升级方法:

下载最新的shop.zip
把里面的东东按目录结构上传~

导入plug_shop.txt,覆盖原来的插件

进行上面的6.1~6.2的更改
删除template.lang.php和message.lang.php里shop语言包(可选)

[quote]
如果没有装大礼包
升级数据库

  1. ALTER TABLE `cdb_members` ADD `gift` INT( 1 ) DEFAULT '0' NOT NULL ;
复制代码
然后在viewthread.htm里

  1. $post[subject]</span>
复制代码

后面加

  1. <!--{if $adminid==1}--> <a href="plugins.php?p=shop&code=5&give=1&uid=$post[authorid]&tid=$tid&page=$page&pid=pid$post[pid]">-奖励大礼包</a><!--{/if}-->
复制代码

就行了~改完之后就有大礼包了


viewthread.htm

  1. name="id" id="id"
复制代码

改成
  1. name="item" id="item"
复制代码


cache.php里
找到

  1.                 case ranks:
  2.                         $table = $GLOBALS['table_ranks'];
  3.                         $cols='ranktitle,postshigher,stars,color';
  4.                         $conditions = "WHERE 1 ORDER BY postshigher desc";
  5.                         break;
复制代码

后面加

  1.                 case item:
  2.                         $table = $GLOBALS['table_shop'];
  3.                         $conditions = "ORDER BY id";
  4.                         break;
  5.                 case itemnum:
  6.                         $table = $GLOBALS['table_shop'];
  7.                         $cols='count(*)';
  8.                         break;
复制代码

找到

  1.         $query = $db->query("SELECT $cols FROM $table $conditions");
  2.         switch($cachename) {
复制代码

后面加

  1.                 case item:
  2.                         while($item = $db->fetch_array($query)){$data[] = $item;}
  3.                         break;
  4.                 case itemnum:
  5.                         $data = $db->result($query,0);
  6.                         break;
复制代码

找到

  1. 'plugins'        => array('plugins', 'plugins_settings')
复制代码

后面加
  1. ,
复制代码

然后下面加

  1. 'shop'                => array('item','itemnum')
复制代码


global.php
找到

  1. function itemlist($uid)
  2. {
  3.         global $db, $table_members,$table_shop;
  4.         $query=$db->query("SELECT items FROM $table_members WHERE uid=$uid");
  5.         $useritems = $db->fetch_array($query);
  6.         $useritems = explode(";",$useritems[items]);
  7.         foreach($useritems as $temp) {
  8.           $temp = explode("_",$temp);
  9.           if($temp[0]){
  10.           $query=$db->query("SELECT * FROM $table_shop WHERE id=$temp[0]");
  11.       $useritem=$db->fetch_array($query);
  12.       $useritem[num]=$temp[1];
  13.           $useritem[sell]=$useritem[price]*0.7;
  14.           $useritemlist[] = $useritem;
  15.           }
  16.         }
  17.         return $useritemlist;
  18. }
复制代码

替换成

  1. function itemlist($uid)
  2. {
  3.         global $db, $table_members,$table_shop,$cachelost;
  4.         @include DISCUZ_ROOT.'./forumdata/cache/cache_shop.php';
  5.         $query=$db->query("SELECT items FROM $table_members WHERE uid=$uid");
  6.         $useritems = $db->fetch_array($query);
  7.         $useritems = explode(";",$useritems[items]);
  8.         foreach($useritems as $temp) {
  9.           $temp = explode("_",$temp);
  10.           if($temp[0]){
  11.                   $useritem=$_DCACHE[item][$temp[0]-1];
  12.                   $useritem[num]=$temp[1];
  13.           $useritem[sell]=$useritem[price]*0.7;
  14.           $useritemlist[] = $useritem;
  15.           }
  16.         }
  17.         return $useritemlist;
  18. }
复制代码

newthread.php和newreply.php中

  1. //-----------------------------------------------------
  2. //Shop by FY
  3. //-----------------------------------------------------
  4. $query=$db->query("select items from $table_members where uid=$discuz_uid");
  5. $myitems = $db->fetch_array($query);
  6. $myitems = explode(";",$myitems[items]);
  7. $myitemlist=itemlist($discuz_uid);
  8. $hide = $hide ? 1:0;
  9. if($hide)$result=shop($myitems,2,-1,0,$discuz_uid);
  10. if($result)showmessage('shop_error');
  11. if($hide){
  12.         $temp="【身份隐藏】";
  13. }else{
  14.         $temp=$discuz_user;
  15. }
  16. //-----------------------------------------------------
复制代码

替换成

  1. //-----------------------------------------------------
  2. //Shop by FY
  3. //-----------------------------------------------------
  4. @include DISCUZ_ROOT.'./forumdata/cache/cache_shop.php';

  5. $query=$db->query("select items from $table_members where uid=$discuz_uid");
  6. $myitems = $db->fetch_array($query);
  7. $myitems = explode(";",$myitems[items]);
  8. foreach($myitems as $temp) {
  9.         $temp = explode("_",$temp);
  10.         if($temp[0]){
  11.                 $useritem=$_DCACHE[item][$temp[0]-1];
  12.                 $useritem[num]=$temp[1];
  13.                 $myitemlist[] = $useritem;
  14.         }
  15. }

  16. $hide = $hide ? 1:0;
  17. if($hide)$result=shop($myitems,2,-1,0,$discuz_uid);
  18. if($hide){
  19.         $temp="【身份隐藏】";
  20. }else{
  21.         $temp=$discuz_user;
  22. }
  23. //-----------------------------------------------------
复制代码


~完~别忘了更新缓存~[/quote]

[ 本帖最后由 文文の封印 于 2005-8-11 20:57 编辑 ]
回复

使用道具 举报

 楼主| PerfectWorks 发表于 2005-7-18 22:06:45 | 显示全部楼层
鉴定的精简版本
升级数据库:
  1. ALTER TABLE `cdb_threads` ADD `badge` TINYINT( 1 ) DEFAULT '0' NOT NULL ;
复制代码

编辑viewthread.php,找到:
  1. $forumselect = $forumjump ? forumselect() : NULL;
复制代码

在上面加:
  1. $typearray = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
  2. if($thread['badge']) {
  3.         $string = sprintf('%02d', $thread['badge']);
  4.         $stylestr = sprintf('%03b', $string[0]);
  5.         //$thread['badge'] .= $string[1];        
  6.     } else {
  7.         $thread['badge'] = '';
  8.     }
复制代码

编辑header.htm模版
找到:
  1. <body leftmargin="0" rightmargin="0" topmargin="0">
复制代码

下面加:
  1. <div id="a01" onmouseover="this.style.display='none'"  onmouseOut="this.style.display='';" style="position:absolute;width:5px; height:30px; z-index:1; top: 140; left:270 ;">
  2. <table width="100%" height="16" border="0" cellpadding="0" cellspacing="0">
  3. <tr>
  4. <td width="50%"></td>
  5. <td width="50%" height="30"><img src="images/badge/topic_$thread[badge].gif" border="0"></td>
  6. </tr>
  7. </table>
  8. </div>
复制代码

点击下载附件按目录结构上传

限时置顶的精简版本
修改include/forum.php
搜索:
  1. if(!defined('IN_DISCUZ')) {
  2.         exit('Access Denied');
  3. }
复制代码
在下面加上:
  1. //hack限时置顶(TOPLTD) 1.0  by liuqiang EMAIL:liuqiangqiang@163.net
  2. $hours = 3;//这里设置您要更新缓存的时间间隔,单位为“小时”
  3. $topltdlogfile = DISCUZ_ROOT."./forumdata/topltdlog.php";
  4. $fp = fopen($topltdlogfile, 'a+');
  5. if($timestamp > (@filemtime($topltdlogfile) + $hours*60*60) && count(file("$topltdlogfile")) > 0) {
  6.         $logfile = file($topltdlogfile);
  7.         $n = count($logfile);
  8.         $tids = $comma = '';
  9.         fclose($fp);
  10.         $fp = fopen($topltdlogfile, 'w+');
  11.         for ($i=0;$i<$n;$i++) {
  12.                 $f=explode("|",$logfile[$i]);
  13.                 if($f[0] !="" && $f[1] !=""){
  14.                         if($timestamp >= $f[2]){
  15.                                 $tids .= "$comma$f[1]";
  16.                                 $comma = ',';
  17.                         } else {
  18.                                 $f[0] = trim($f[0]);
  19.                                 $f[1] = trim($f[1]);
  20.                                 $f[2] = trim($f[2]);
  21.                                 $logs[$i] = $f[0]."|".$f[1]."|".$f[2]."\n";
  22.                                 fwrite($fp,$logs[$i]);
  23.                         }
  24.                 }
  25.         }
  26.         fclose($fp);
  27.         if ($tids) {
  28.                 $query = $db->query("UPDATE $table_threads SET displayorder='0' where  tid IN ($tids)");
  29.         }
  30. }
  31. //end-------------------------------------------
复制代码

[ 本帖最后由 文文の封印 于 2005-8-1 16:22 编辑 ]
回复

使用道具 举报

journey99 发表于 2005-7-18 22:11:45 | 显示全部楼层
要再添加那个降低主题的怎么添加啊
回复

使用道具 举报

journey99 发表于 2005-7-18 22:13:10 | 显示全部楼层
只升级那个道具数据库
再上传shop覆盖就可以了吧
回复

使用道具 举报

 楼主| PerfectWorks 发表于 2005-7-18 22:14:13 | 显示全部楼层
不行
回复

使用道具 举报

福帅 发表于 2005-7-18 22:15:02 | 显示全部楼层
沙发。。。。。支持!

[ 本帖最后由 福帅 于 2005-7-18 22:38 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| PerfectWorks 发表于 2005-7-18 22:20:32 | 显示全部楼层

回复 #5 journey99 的帖子

覆盖,然后升级那条新道具的数据库
viewthread.htm里加一句,你对比下就知道了
然后是数据库升级

  1. ALTER TABLE `cdb_members` CHANGE `items` `items` VARCHAR( 64 ) DEFAULT '1_0;2_0;3_0;4_0;5_0;6_0;7_0;' NOT NULL ;
  2. UPDATE cdb_members SET items=CONCAT(items,'7_0;');
复制代码

还有别忘了装降低主题的语言包

[ 本帖最后由 文文の封印 于 2005-7-18 22:26 编辑 ]
回复

使用道具 举报

 楼主| PerfectWorks 发表于 2005-7-18 22:21:24 | 显示全部楼层

回复 #7 福帅 的帖子

好远的沙发:han:
回复

使用道具 举报

journey99 发表于 2005-7-18 22:25:49 | 显示全部楼层

知道了
^_^
再次感谢文文
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-5-3 22:21 , Processed in 0.115524 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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