• 8335阅读
  • 81回复

莘祺网道具功能低调上线测试并向兄弟申请友情链接(积分日志/猪头卡道具) [复制链接] [手机版]

上一主题 下一主题
离线为你守候
温馨家园,为你守候!

只看该作者 39楼 发表于: 2015-12-09 13:59:05 星期三  点亮(0)
回复38楼 zhangjingyu 的帖子
zhangjingyu 问题重现,看来确实如36楼所说。这算是一个“漏洞”吗?这下可解猪头卡啦! (2015-12-09 13:57)   
别高兴,咱继续!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 40楼 发表于: 2015-12-09 14:22:31 星期三  点亮(0)
好吧,那继续奉陪!

——本帖通过莘祺网回复.
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 41楼 发表于: 2015-12-19 22:01:16 星期六  点亮(0)
明天要看看被我用了猪头卡的那位兄弟怎么样了?

——本帖通过莘祺网回复.
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 42楼 发表于: 2017-04-07 01:09:33 星期五  点亮(0)
今天晚上给道具添加了“赠送”功能,也就是可以把自己拥有的道具赠送给别人。

文件修改还好吧,不算太复杂,关键是添加了“赠送”后还要加这个按钮,附带的背景图感觉不理想,所以自己重做了一个,并不断的调整css样式(主要是为了调用按钮)并最终得以完成修改。

这是附带的背景图(主要是“赠送他人”):


这是修改后的背景图(系统原图修改):

“赠送”是新增的。由“转让”复制图层而来,用背景色覆盖文字,再用背景色在帖子中给文字“赠送”添加背景色a,设置字号2,添加颜色,截图,保存(在ps中直接添加文字不理想,可能还是自己不会,所以另辟蹊径吧),ps打开后复制到原图文件,调整位置,合并图层。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 43楼 发表于: 2017-04-07 01:17:01 星期五  点亮(0)
1、打开u/themes/default/profile_toolcenter.htm文件
找到:
<a href="profile.php?action=toolcenter&job=sell&id=$id" class="canclesale">转让</a>
上上上上方添加如下代码:
<a href="profile.php?action=toolcenter&job=send&id=$id"  class="canclesend" title="将道具赠送给你的好友">赠送他人</a>

找到:
elseif ($job == 'use')
前前前前面添加如下代码:
elseif ($job == 'send') {print <<<EOT
-->
        <div class="navC mb10">
            <ul id="infolist">
                <li><a href="profile.php?action=toolcenter">道具交易</a></li>
                <li class="current"><a href="profile.php?action=toolcenter&job=mytool">我的道具箱</a></li>
            </ul>
        </div>
        <div class="bdB pb10 mb10 p_lr_10">
            <a class="s5 b" href="profile.php?action=toolcenter&job=mytool">我拥有的</a> | <a href="profile.php?action=toolcenter&job=user&uid=$winduid">我转让的</a>
        </div>
<script>
                function checkForm()
                {
                    var nums = $('nums');
                    var re   =  /^[0-9]*[1-9][0-9]*$/;
                    if (!re.test(nums.value))
                    {
                        alert("您输入的数字为非法数字,请输入一个大于 “0” 的“整数”");
                        nums.focus();
                        return false;
                    }
                }
</script>
                <form action="profile.php?action=toolcenter&" method="post" onsubmit="return checkForm()">
                    <input type="hidden" name="job" value="send" />
                    <input type="hidden" name="step" value="2" />
                    <input type="hidden" name="id" value="$id" />
                    <div class="toolItem">
                        <table width="100%" cellspacing="0" cellpadding="0" class="vt">
                            <tr>
<!--
EOT;
if($rt[logo]){
print <<<EOT
-->
                                <td rowspan="3" class="toolPic" width="20%"><img src="u/images/toolcenter/tool/$rt[logo]" /></td>
<!--
EOT;
}
print <<<EOT
-->
                                <th width="12%">名称:</th><td style="vertical-align:middle">$rt[name]</td>
                            </tr>
                            <tr>
                                <th>目标用户UID:</th><td style="vertical-align:middle"><input type="text" class="input" name="touid" value="" onblur="javascript:get_username(this.value);" /><span id="showusername"></span></td>
                            </tr>
                            <tr>
                                <th>赠送数量:</th><td style="vertical-align:middle"><input type="text"  class="input" name="nums" value="1"  id="nums"/>[{$credit->cType[$rt[creditype]]}]</td>
                            </tr>
                        </table>
                    </div>
                    <div class="tac"><span class="btn"><span><button type="submit">提交赠送</button></span></span></div>
                </form>
<!--
EOT;
}

找到:
<!--
EOT;
if (!defined('AJAX')) {print <<<EOT
-->
上上上上上方添加如下代码:
<script type="text/javascript">
<!--
    function get_username(n){
        createXMLHttpRequest();
        xmlHttp.onreadystatechange = handleStateChange;
        xmlHttp.open("GET","profile.php?action=toolcenter&new_action=getusername&uid="+n,true);
        xmlHttp.send(null);
    }
    function createXMLHttpRequest(){
        if(window.ActiveXObject){
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }else if(window.XMLHttpRequest){
                xmlHttp = new XMLHttpRequest();
            }
    }
    function handleStateChange(){
        if(xmlHttp.readyState == 4){
            if(xmlHttp.status == 200){
                document.getElementById("showusername").innerHTML = xmlHttp.responseText;                
                }
            }
        }
//-->
</script>



--------------------------------------------

2、打开u/require/profile/toolcenter.php文件,

找到:
S::gp(array('job'));
替换替换替换成如下代码:
S::gp(array('job','new_action','uid'));

找到:
if (empty($job)) {
上上上上方添加如下代码:
if($new_action == "getusername"){
    @header("Content-Type:text/html; charset=$db_charset");
    $username = $db->get_value("SELECT username from pw_members where uid=".pwEscape($uid));
    if($username){
        echo " UID对应账号:<b><a target='_blank' href='u.php?uid=".$uid."'>".$username."</a></b>";exit;
    }else{
        echo " <font color=red>对不起,您输入的UID对应的用户账号为空</font>";exit;
    }
}

找到:
elseif ($job == 'unsell')
前前前前面添加如下代码:
elseif ($job == 'send') {

    !$db_allowtrade && Showmsg('trade_close');
    S::gp(array('id'));

    if (empty($_POST['step'])) {

        $rt = $db->get_one("SELECT u.*,t.name,t.price,t.creditype,t.logo FROM pw_usertool u LEFT JOIN pw_tools t ON t.id=u.toolid WHERE uid=".S::sqlEscape($winduid,false)." AND toolid=".S::sqlEscape($id));
        !$rt && Showmsg('undefined_action');
        $rt['nums'] == 0 && Showmsg('unenough_toolnum');
        !$rt['creditype'] && $rt['creditype'] = 'currency';
        require_once uTemplate::PrintEot('profile_toolcenter');
        pwOutPut();

    } else {
        
        $rt = $db->get_one("SELECT u.*,t.name FROM pw_usertool u LEFT JOIN pw_tools t ON t.id=u.toolid WHERE uid=".S::sqlEscape($winduid)."AND toolid=".S::sqlEscape($id));
        if ($rt) {
            S::gp(array('nums','touid'),'P');
            $nums   = (int)$nums;
                    $touid = (int)$touid;
            $nums  <= 0 && Showmsg('illegal_nums');
                    $touid  <= 0 && Showmsg('用户UID不能为空或者为0');
            $rt['nums'] < $nums && Showmsg('您要赠送的道具数量大于您拥有的道具数量!');

            $db->update("UPDATE pw_usertool SET nums=nums-".S::sqlEscape($nums)." WHERE uid=".S::sqlEscape($winduid)."AND toolid=".S::sqlEscape($id));
            $touid_nums = $db->get_value("SELECT nums from pw_usertool where uid=".pwEscape($touid)." and toolid=".pwEscape($id));
            if($touid_nums){
                $db->update("UPDATE pw_usertool SET nums=nums+".S::sqlEscape($nums)." WHERE uid=".S::sqlEscape($touid)."AND toolid=".S::sqlEscape($id));    
            }else{
                $db->update("INSERT INTO pw_usertool(uid,toolid,nums,sellstatus)values(".S::sqlEscape($touid).",".S::sqlEscape($id).",".S::sqlEscape($nums).",0)");                
            }
            require_once(R_P.'require/tool.php');
            $logdata = array(
                'type'        =>    'send',
                'nums'        =>    $nums,
                'descrip'    =>    'send_descrip',
                'uid'        =>    $winduid,
                'username'    =>    $windid,
                'touid' => $touid,
                'tousername' => $db->get_value("SELECT username from pw_members WHERE uid=".pwEscape($touid)),
                'ip'        =>    $onlineip,
                'time'        =>    $timestamp,
                'toolname'    =>    $rt['name'],
                'from'        =>    '',
            );
            writetoollog($logdata);
            refreshto("profile.php?action=toolcenter&job=mytool",'operate_success');
        } else {
            Showmsg('undefined_action');
        }
    }
}

3、打开template/wind/lang_toollog.php文件,
找到:
'sell'                            => '转让',
'sell_descrip'                    => '{$L[username]} 转让道具: {$L[toolname]} ,数量:{$L[nums]}。',
下下下下方添加如下代码:
'send'                => '赠送',
'send_descrip'        => '{$L[username]}{$L[tousername]} 赠送道具: {$L[toolname]} ,数量:{$L[nums]}。',


4、以上修改基本将道具赠送的功能写好了,下面就是将我的道具页面中的赠送的文字链接添加背景图片显示,这个需要美工协助将hack/toolcenter/image/listnavon.gif文件重新做下,然后控制下下面的-100px的值:
打开u/images/style.css文件
找到:
.toolbuy,.canceltran,.usetool,.canclesale{display:block; height:21px; width:74px; text-indent:-999em; overflow:hidden; background:url(toolcenter/listnavon.gif) no-repeat 0 -83px;float:right; text-align:left;}
替换替换替换成如下代码:
.toolbuy,.canceltran,.usetool,.canclesale,.canclesend{display:block; height:21px; width:74px; text-indent:-999em; overflow:hidden; background:url(toolcenter/listnavon.gif) no-repeat 0 -83px;float:right; text-align:left;}

找到:
.canclesale{width:51px; background-position:0 -212px;}
下下下下方添加如下代码:
.canclesend{width:75px; background-position:-113px top; height:23px; display:block;}
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 44楼 发表于: 2017-04-07 01:38:58 星期五  点亮(0)
楼上第4步是修改css样式,修改前后都是右浮动(添加,.canclesend,也就是赠送样式),结果在部分模式下显示成了这样(“赠送”和“转让”摞在了一起):

或者显示顺序依次为:使用道具、转让、赠送(“转让”和“赠送”顺序反了,可能跟浮动有关)

后来审查元素,注意到了浮动,改为左浮动,终于正常了!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 45楼 发表于: 2017-04-07 01:42:15 星期五  点亮(0)
.canclesale{width:50px; background-position:0 -212px;}(转让样式)
.canclesend{width:55px; background-position:-45px -212px; height:23px; display:block;}(我修改后的赠送样式,因为按钮由转让复制而来,所以都是-212px)

经五种浏览器兼容性测试通过!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 46楼 发表于: 2017-04-07 01:47:01 星期五  点亮(0)
手机查看电脑版也木问题,可以去睡觉了!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 47楼 发表于: 2017-04-07 17:15:18 星期五  点亮(0)
后台积分日志:
购买系统道具    贾玉华    铜币    -10    贾玉华 购买1个 运气卡 道具。消耗积分:铜币,影响:-10。
其它    为你守候    铜币    19    hack_creditluckadd

搜索“购买系统道具”:
template/wind/lang_logtype.php
'hack_toolbuy'        => '购买系统道具',
'other'                => '其它',

搜索“hack_creditluckadd”,论坛原始文件template/wind/lang_creditpop.php有,莘祺网对应文件里就没有,这不是很奇怪吗?
    //运气卡
    'hack_creditluckadd' =>'{$L[username]} 使用运气卡获得积分:{$L[cname]},影响:{$L[affect]}。',
    'hack_creditluckdel' =>'{$L[username]} 使用运气卡减少积分:{$L[cname]},影响:{$L[affect]}。',
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 48楼 发表于: 2017-04-07 18:43:47 星期五  点亮(0)
把楼上后半部分内容粘贴到template/wind/lang_creditlog.php文件,使用运气卡道具终于有道具相关积分日志记录了。
其它    zhangjingyu    铜币    12    zhangjingyu 使用运气卡获得积分:铜币,影响:+12。

不过,积分类型还是“其它”,这个在哪里修改?
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!