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

 找回密码
 立即注册
搜索

[已解决] ██牧场BUG██,使用变速齿轮竟然畅通无阻??我正在查看代码,待会给大家解决方法

[复制链接]
liuzhly 发表于 2009-12-8 20:55:01 | 显示全部楼层 |阅读模式
本帖最后由 liuzhly 于 2010-01-24 03:07 编辑

牧场BUG,使用变速齿轮竟然畅通无阻??我正在查看代码,待会给大家解决方法...

真败了..........


=====以下是2010年01月24日最新添加=====
2010年01月24日最新添加:就是有些人把动物赶去生产,使用加速齿轮,动物很快生产,他就可以很早偷取,最近发现经常有人这么做!

if ( $_REQUEST['mod'] == "cgi_steal_product" )
。。。。。。。。。。。。。。
        foreach ( $animal[animal] as $key => $value ){
                if ( $RequestcId == $value->cId ){
                        $_SGLOBAL['timestamp'] < $value->postTime + $animaltime[$RequestcId][3] && exit("{\"errorContent\":\"\\u52A8\\u7269\\u751F\\u4EA7\\u4E2D\\uFF0C\\u8BF7\\u7A0D\\u540E\\u6536\\u83B7\\uFF01\",\"errorType\":\"1011\"}");//如果在生产期偷取,提示:动物生产中,请稍后收获!
                        if ( strpos( $value->tou, ",".$_SGLOBAL['supe_uid']."," ) === false ){
                                if ( $shop[$RequestcId][output] * $value->cycle / 2 + 1 < $value->totalCome ){
                                        $value->totalCome--;
                                        $tounum++;
                                        $value->tou .= ",".$_SGLOBAL['supe_uid'].",";
                                        foreach($mc_repertory ->r as $key=>$val){
                                                if($RequestcId == $val->cId){
                                                        $flag=true;
                                                        $mc_repertory->r[$key]->scrounge++;
                                                        break;
                                                }
                                        }
                                }
                        }
                }
        }

其他地方见楼下!!!
回复

使用道具 举报

当朝宰相 发表于 2009-12-8 20:57:38 | 显示全部楼层
((em:06))((em:06))
回复

使用道具 举报

 楼主| liuzhly 发表于 2009-12-8 21:48:52 | 显示全部楼层
本帖最后由 liuzhly 于 2010-01-12 17:40 编辑

终于找到原因了,朋友们可以查查。。。。


打开  newmc.php ,找到  

if ( $_REQUEST['mod'] == "cgi_post_product" )
{
                                $needlog = 1;
                                if ( $_REQUEST['uId'] == NULL )
                                {
                                                                $GLOBALS['_REQUEST']['uId'] = $_SGLOBAL['supe_uid'];
                                                                $needlog = 0;
                                }
                                $GLOBALS['_REQUEST']['serial'] = intval( $_REQUEST['serial'] );
                                $query = $_SGLOBAL['db']->query( "SELECT animal,mc_log FROM ".tname( "plug_newfarm" )." where uid=".intval( $_REQUEST['uId'] ) );
                                while ( $value = $_SGLOBAL['db']->fetch_array( $query ) )
                                {
                                                                $list[] = $value;
                                }
                                $animal = json_decode( $list[0][animal] );
                                if ( $animal->animalfood == 0 )
                                {
                                                                echo "{\"errorContent\":\"\\u52A8\\u7269\\u6328\\u997F\\u5566\\uFF0C\\u7F3A\\u5C11\\u7267\\u8349\\u4F1A\\u505C\\u6B62\\u751F\\u4EA7\\uFF0C\\u5FEB\\u53BB\\u6DFB\\u52A0\",\"errorType\":\"1011\"}";
                                                                exit( );
                                }
                               if ( $_SGLOBAL['timestamp'] - $animal->animal[$_REQUEST['serial']]->postTime < $shop[$animal->animal[$_REQUEST['serial']]->cid][cycle] )
                                {
                                                                exit( );
                                }

大家看到了吧 ???这里的cid的i是小写的 ,其实库里面的是 cId
只要把红色的部分修改为:cId 就可以了,真晕了,找了半天竟然这样???

大小写害死人啊,因为牧场版本很多,不敢保证所有人都是这种问题,大家自己检查一下,如果是,请修改过来,如果不是,那就无所谓了....

另外,那样限制不了小动物成长到生产这阶段的 ,还是可以把小动物很快从幼小变成待产状态,所以将上面的绿色代码做了如下修改:


                                if( $animal->animal[$_REQUEST['serial']]->postTime == 0 ){
                                        $chk_time = $_SGLOBAL['timestamp'] - $animal->animal[$_REQUEST['serial']]->buyTime;
                                        if($chk_time < $animaltime[$animal->animal[$_REQUEST['serial']]->cId][0] + $animaltime[$animal->animal[$_REQUEST['serial']]->cId][1]){
                                                echo "{\"errorContent\":\"\\u8FD8\\u6CA1\\u5230\\u751F\\u4EA7\\u7684\\u65F6\\u95F4\\u5462\\uFF0C\\u8BF7\\u4E0D\\u8981\\u7740\\u6025\",\"errorType\":\"1011\"}";
                                                exit( );
                                        }
                                }else{
                                        if ( $_SGLOBAL['timestamp'] - $animal->animal[$_REQUEST['serial']]->postTime < $animaltime[$animal->animal[$_REQUEST['serial']]->cId][4] ){
                                                echo "{\"errorContent\":\"\\u8FD8\\u6CA1\\u5230\\u751F\\u4EA7\\u7684\\u65F6\\u95F4\\u5462\\uFF0C\\u8BF7\\u4E0D\\u8981\\u7740\\u6025\",\"errorType\":\"1011\"}";
                                                exit( );
                                        }

                                }//防加速齿轮


加上下面6楼的我的另一处BUG修改,这样才算完美了!!第一个判断 $animal->animal[$_REQUEST['serial']]->postTime == 0 如果是幼动物,那么计算购买时间与现在时差的值 小于成长2此阶段的总和时间,就是加速了,禁止,第二个判断就是 当前阶段与时间差值 比 生产期循环时间小酒禁止,两个必须,少一个都能作弊,所以这个BUG农场基本都有吧!!!

2009年12月20日最新修改,修正 成熟后还需要180秒才能帮助赶去生产的BUG..

本人没金币,如果有富余的朋友,给个辛苦钱吧,好购买这里高手们发布的一些插件谢谢了!

评分

4

查看全部评分

回复

使用道具 举报

wfntwl 发表于 2009-12-8 22:27:53 | 显示全部楼层
支持你个,虽然不用这个版本的农场。。
回复

使用道具 举报

kubal 发表于 2009-12-8 22:50:49 | 显示全部楼层
不知你下的是什么版本,我的是cID的哦。
回复

使用道具 举报

 楼主| liuzhly 发表于 2009-12-9 11:37:21 | 显示全部楼层
本帖最后由 liuzhly 于 2009-12-9 17:45 编辑

还有个地方:就是收获可以使用齿轮收获!!
找到如下代码,可通过查找红色部分定位:


                                if ( $_REQUEST['harvesttype'] == "2" )
                                {
                                                                $query = $_SGLOBAL['db']->query( "SELECT animal,mc_package FROM ".tname( "plug_newfarm" )." where uid=".$_SGLOBAL['supe_uid'] );
                                                                while ( $value = $_SGLOBAL['db']->fetch_array( $query ) )
                                                                {
                                                                                                $list[] = $value;
                                                                }
                                                                $animal = ( array )json_decode( $list[0][animal] );
在其下面增加如下:

                if ( $_SGLOBAL['timestamp'] - $animal[animal][$_REQUEST['serial']]->buyTime < $animaltime[$animal[animal][$_REQUEST['serial']]->cId][5] ){
                        echo "{\"errorContent\":\"\\u8FD8\\u6CA1\\u5230\\u6536\\u83B7\\u65F6\\u95F4\\u5462\\uFF0C\\u8BF7\\u4E0D\\u8981\\u7740\\u6025\",\"errorType\":\"1011\"}";
                        exit( );
                } //防加速齿轮




说明:
因为系统没有判断成熟时间,所以导致可以收获~~~

评分

1

查看全部评分

回复

使用道具 举报

coldhair 发表于 2009-12-9 11:44:34 | 显示全部楼层
方法不错啊
回复

使用道具 举报

xiaolooo 发表于 2009-12-9 12:09:03 | 显示全部楼层
虽然我不用了,但是还要顶你!
回复

使用道具 举报

青青小天 发表于 2009-12-9 12:21:25 | 显示全部楼层
感谢分享啊,楼主!
回复

使用道具 举报

纽币 发表于 2009-12-9 12:34:27 | 显示全部楼层
...............................
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-22 12:33 , Processed in 0.128048 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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