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

 找回密码
 立即注册
搜索

小小宇QQ农场自己除草BUG解决方法(已修正)

[复制链接]
阿哈 发表于 2009-12-24 15:22:02 | 显示全部楼层 |阅读模式
本帖最后由 阿哈 于 2009-12-25 02:10 编辑

f发扬共享精神,现分享 小小宇版QQ农场自己放草和加虫后可以自己杀虫除草的解决方法,修改后,自己放的草自己不能除,出现提示: 证据是不能毁灭的! ,和QQ农场的提示一样。
新修订基本应该可以使用,欢迎大家测试使用。
方法如下:
打开: /happyfarm/happyfarm.php
第一处修改: 除草检查
找到:
        $query = $_SGLOBAL['db']->query( "SELECT Status,log,dog FROM ".tname( "happyfarm_nc" )." where uid=".intval( $_REQUEST['ownerId'] ) );
        while ( $value = $_SGLOBAL['db']->fetch_array( $query ) )
        {
                $list[] = $value;
        }
修改为:        
        $query = $_SGLOBAL['db']->query( "SELECT Status,log,dog,Weed FROM ".tname( "happyfarm_nc" )." where uid=".intval( $_REQUEST['ownerId'] ) );
        while ( $value = $_SGLOBAL['db']->fetch_array( $query ) )
        {
                $list[] = $value;
        }
                $farm_weed = unserialize( $list[0][Weed] );
接着找到:
                $f = $farm->farmlandstatus[$id]->f;
                if ( $f > 0 )
                {
                        $f -= 1;
                        $money += 2;
                        $exp += 2;
修改为:
                $f = $farm->farmlandstatus[$id]->f;
                if ( $f > 0 ){
                         //除草顺序 3\2\1
                         if ($farm_weed[$id][$f] == $UID) {
                                         echo '{"code":0,"direction":"证据是不能毁灭的!","farmlandIndex":'.$id.',"poptype":1,"weed":'.$f.'}';
                           exit;
                         }
                        if ($farm_weed[$id][$f]) {
                          unset($farm_weed[$id][$f]);
                        }
                        $f -= 1;                               
                        $money += 2;
                        $exp += 2;
接着找到:
                $farm_log = str_replace( "\\\"#009900\\\"", "\\\\\\\"#009900\\\\\\\"", $farm_log );

                $_SGLOBAL['db']->query( "UPDATE ".tname( "happyfarm_nc" )." set Status='".$farm_srt."',log='".$farm_log."' where uid=".$_REQUEST['ownerId'] );
修改为:
                $farm_log = str_replace( "\\\"#009900\\\"", "\\\\\\\"#009900\\\\\\\"", $farm_log );
    $farm_weed_srt = serialize($farm_weed);
                $_SGLOBAL['db']->query( "UPDATE ".tname( "happyfarm_nc" )." set Status='".$farm_srt."',log='".$farm_log."',Weed='$farm_weed_srt' where uid=".$_REQUEST['ownerId'] );

第二处修改:放草
找到 :
        if ($_REQUEST['mod'] == "farmlandstatus" && $_REQUEST['act'] == "scatterSeed" ){
下面接着找:
        $farm_Status = json_decode( $list[0][Status] );
        $farm_log = json_decode( $list[0][log] );
        $farm_weed = json_decode( $list[0][weed] );
修改为:
        $farm_Status = json_decode( $list[0][Status] );
        $farm_log = json_decode( $list[0][log] );
        $farm_weed = (array)unserialize( $list[0][Weed] );

接着找到:
                                $code_temp = 1;
                                //unset($p[$UID]);
                                $farm_weed[$UID][] = $_SGLOBAL['timestamp'];

                                //$p[$UID]=(array)json_decode("");
                                $f += 1;
修改为:
                                $code_temp = 1;
                                $f += 1;
                                //unset($p[$UID]);
                                //$farm_weed[$UID][] = $_SGLOBAL['timestamp'];
                                //$id = 地块 $f= 从左到右  1\2\3
                 $farm_weed[$id][$f] = $UID;
找到:
        $farm_log = str_replace( "\\\"#009900\\\"", "\\\\\\\"#009900\\\\\\\"", $farm_log );


        $_SGLOBAL['db']->query( "UPDATE ".tname( "happyfarm_nc" )." set Status='".$farmarr_str."',log='".$farm_log."' where uid=".intval( $_REQUEST['ownerId'] ) );
修改为:
        $farm_log = str_replace( "\\\"#009900\\\"", "\\\\\\\"#009900\\\\\\\"", $farm_log );

    $farm_weed_str = serialize($farm_weed);
        $_SGLOBAL['db']->query( "UPDATE ".tname( "happyfarm_nc" )." set Status='".$farmarr_str."',log='".$farm_log."',Weed='$farm_weed_str' where uid=".intval( $_REQUEST['ownerId'] ) );

以上除草的bug应该解决了。除虫的方法和以上类似,除虫的表列可以使用  pest ,其他方法应该是一样的。
未作更多验证,欢迎大家测试使用。

欢迎大家修改测试。
回复

使用道具 举报

http://clx.cn 发表于 2009-12-24 15:24:43 | 显示全部楼层
.....................
回复

使用道具 举报

liuhh99 发表于 2009-12-24 15:27:21 | 显示全部楼层
试试先。不知道好用不
回复

使用道具 举报

andy88cn 发表于 2009-12-24 15:39:40 | 显示全部楼层
不错啊。感谢楼主的研究与分享精神
回复

使用道具 举报

liuzhly 发表于 2009-12-24 15:42:14 | 显示全部楼层
开心农场数据字段farmlandstatus 各字母代表的含义,欢迎补充

A:植物ID
B:地的状态,7代表枯萎,6代表存在,0代表空地
F:草
G:虫子
H:干旱
I:杀大虫(用户ID与时间记录)
J:判断农作物生长季度
K:产量
L:剩余数量比较值(阀值)
M:当前剩余数量
N:偷菜人的ID,如果存在就不让偷了
O:用于施肥判断,放置反复施肥
P:ACTION
Q:此阶段种植时间逐渐减小,等到与R的差值在程序定义范围后就升为另一阶段(PLANTIME),以此时间段判断成熟
R:种植时间(UPDATETIME)
S:大虫子
T:虫子当前血量
U:虫子总血量

QQ农场是不是也差不多??你用了 U字段 ,那么大虫子怎么办????
另外,用两个用户刷照样没问题啊 ?要存取应该存取array 数组,只要使坏的,就不能操作~~~
回复

使用道具 举报

 楼主| 阿哈 发表于 2009-12-24 15:44:44 | 显示全部楼层
楼上的高人,确实没考虑到这几个问题,等下修改看看
回复

使用道具 举报

MFyoyo.. 发表于 2009-12-24 15:47:03 | 显示全部楼层
开心农场数据字段farmlandstatus 各字母代表的含义,欢迎补充

A:植物ID
B:地的状态,7代表枯萎,6代表 ...
liuzhly 发表于 2009-12-24 15:42



    我的解决方式是用的count(),不知阁下是什么方式。比如:{idx:122},{idx:122},{idx:122},{idx:122},这样的话,草的数量和谁种的就知道了。然后直接性是把数组里的这个值去掉.
回复

使用道具 举报

yakumo249211396 发表于 2009-12-24 16:01:27 | 显示全部楼层
顶。谢谢LZ分享
回复

使用道具 举报

bt222 发表于 2009-12-24 16:23:43 | 显示全部楼层
去试下 HOHO~~
回复

使用道具 举报

Askyman 发表于 2009-12-24 16:27:08 | 显示全部楼层
期待高人最终解决办法!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-24 08:52 , Processed in 0.091450 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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