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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 牧场多次越级购买动物BUG完美修复

[复制链接]
清杨子 发表于 2009-11-28 19:22:49 | 显示全部楼层 |阅读模式
本帖最后由 清杨子 于 2009-11-28 19:25 编辑

原牧场已修复因点击我的农场图标导致可以继续购买动物的BUG。但不是很完美,仍有问题,有1个棚1个窝,本应做多养6只动物,却可以养7只动物。
现已解决此问题,因各版本不同,顾只放出相关修改代码。
修改原理为,通过判断提交购买动物的窝棚属性,结合实际窝棚数量以及窝棚各自可养动物数量,确定是否超过限制。原通过级别确定动物数量的方法注释不用。
修改方法:
1.搜索newmc.php文件中
  1. if ( $_REQUEST['mod'] == "cgi_buy_animal" )
复制代码
2.将原限制购买动物的代码修改为
  1. //限制越级购买动物
  2.         $Got_numw = 0;
  3.                 $Got_nump = 0;
  4.         foreach ( $animal[animal] as $key => $value )
  5.         {
  6.                 if($value->cId != 0)
  7.                                 {
  8.                                         if($value->cId>1500)
  9.                                         {
  10.                                                 $Got_nump++;
  11.                                         }
  12.                                         else
  13.                                         {
  14.                                                 $Got_numw++;
  15.                                         }
  16.                                 }
  17.                                 //$value->cId != 0 && $Got_num++;
  18.         }
  19.                 $limit_p = ($animal["item3"]-10330)*3;
  20.                 $limit_w = ($animal["item2"]-10220)*3;
  21.         if($_REQUEST['cId']>1500)
  22.                 {
  23.                         ( $Got_nump + $_REQUEST['number'] ) >$limit_p &&exit("{"errorContent":"\\u5BF9\\u4E0D\\u8D77\\uFF0C\\u60A8\\u5F53\\u524D\\u7684\\u7B49\\u7EA7\\u6700\\u591A\\u80FD\\u9972\\u517B" . $limit_p . "\\u53EA\\u52A8\\u7269\\u3002\\uFF08\\u5DF2\\u9972\\u517B" . $Got_nump . "\\u53EA\\uFF09","errorType":"1011"}");
  24.                 }
  25.                 else
  26.                 {
  27.                         ( $Got_numw + $_REQUEST['number'] ) >$limit_w &&exit("{"errorContent":"\\u5BF9\\u4E0D\\u8D77\\uFF0C\\u60A8\\u5F53\\u524D\\u7684\\u7B49\\u7EA7\\u6700\\u591A\\u80FD\\u9972\\u517B" . $limit_w . "\\u53EA\\u52A8\\u7269\\u3002\\uFF08\\u5DF2\\u9972\\u517B" . $Got_numw . "\\u53EA\\uFF09","errorType":"1011"}");
  28.                 }
  29.                
  30.                
  31.                 $grade = intval(sqrt( ($list[0][mc_exp] + 25)/100 ) - 0.5);
  32.        // $grade_animal = grade_animal( $grade );
  33.        // ( $Got_num + $_REQUEST['number'] ) > $grade_animal && exit("{"errorContent":"\\u5BF9\\u4E0D\\u8D77\\uFF0C\\u60A8\\u5F53\\u524D\\u7684\\u7B49\\u7EA7\\u6700\\u591A\\u80FD\\u9972\\u517B" . $grade_animal . "\\u53EA\\u52A8\\u7269\\u3002\\uFF08\\u5DF2\\u9972\\u517B" . $Got_num . "\\u53EA\\uFF09","errorType":"1011"}");
  34.         intval($shop[$_REQUEST['cId']][cLevel]) > $grade && exit("{"errorContent":"\\u4E0D\\u80FD\\u8D8A\\u7EA7\\u9886\\u517B\\u52A8\\u7269\\uFF01","errorType":"1011"}");
  35. //限制越级购买动物
复制代码
3.整个购买动物的过程为
  1. if ( $_REQUEST['mod'] == "cgi_buy_animal" )
  2. {
  3.                                 $query = $_SGLOBAL['db']->query( "SELECT money,animal,mc_exp FROM ".tname( "plug_newfarm" )." where uid=".$_SGLOBAL['supe_uid'] );
  4.                                 while ( $value = $_SGLOBAL['db']->fetch_array( $query ) )
  5.                                 {
  6.                                                                 $list[] = $value;
  7.                                 }
  8.                                 $animal = ( array )json_decode( $list[0][animal] );
  9.                                 if ( $list[0][money] < $shop[$_REQUEST['cId']][price] * $_REQUEST['number'] )
  10.                                 {
  11.                                                                 exit( );
  12.                                 }
  13. //限制越级购买动物
  14.         $Got_numw = 0;
  15.                 $Got_nump = 0;
  16.         foreach ( $animal[animal] as $key => $value )
  17.         {
  18.                 if($value->cId != 0)
  19.                                 {
  20.                                         if($value->cId>1500)
  21.                                         {
  22.                                                 $Got_nump++;
  23.                                         }
  24.                                         else
  25.                                         {
  26.                                                 $Got_numw++;
  27.                                         }
  28.                                 }
  29.                                 //$value->cId != 0 && $Got_num++;
  30.         }
  31.                 $limit_p = ($animal["item3"]-10330)*3;
  32.                 $limit_w = ($animal["item2"]-10220)*3;
  33.         if($_REQUEST['cId']>1500)
  34.                 {
  35.                         ( $Got_nump + $_REQUEST['number'] ) >$limit_p &&exit("{"errorContent":"\\u5BF9\\u4E0D\\u8D77\\uFF0C\\u60A8\\u5F53\\u524D\\u7684\\u7B49\\u7EA7\\u6700\\u591A\\u80FD\\u9972\\u517B" . $limit_p . "\\u53EA\\u52A8\\u7269\\u3002\\uFF08\\u5DF2\\u9972\\u517B" . $Got_nump . "\\u53EA\\uFF09","errorType":"1011"}");
  36.                 }
  37.                 else
  38.                 {
  39.                         ( $Got_numw + $_REQUEST['number'] ) >$limit_w &&exit("{"errorContent":"\\u5BF9\\u4E0D\\u8D77\\uFF0C\\u60A8\\u5F53\\u524D\\u7684\\u7B49\\u7EA7\\u6700\\u591A\\u80FD\\u9972\\u517B" . $limit_w . "\\u53EA\\u52A8\\u7269\\u3002\\uFF08\\u5DF2\\u9972\\u517B" . $Got_numw . "\\u53EA\\uFF09","errorType":"1011"}");
  40.                 }
  41.                
  42.                
  43.                 $grade = intval(sqrt( ($list[0][mc_exp] + 25)/100 ) - 0.5);
  44.        // $grade_animal = grade_animal( $grade );
  45.        // ( $Got_num + $_REQUEST['number'] ) > $grade_animal && exit("{"errorContent":"\\u5BF9\\u4E0D\\u8D77\\uFF0C\\u60A8\\u5F53\\u524D\\u7684\\u7B49\\u7EA7\\u6700\\u591A\\u80FD\\u9972\\u517B" . $grade_animal . "\\u53EA\\u52A8\\u7269\\u3002\\uFF08\\u5DF2\\u9972\\u517B" . $Got_num . "\\u53EA\\uFF09","errorType":"1011"}");
  46.         intval($shop[$_REQUEST['cId']][cLevel]) > $grade && exit("{"errorContent":"\\u4E0D\\u80FD\\u8D8A\\u7EA7\\u9886\\u517B\\u52A8\\u7269\\uFF01","errorType":"1011"}");
  47. //限制越级购买动物
  48.                                 $number = 0;
  49.                                 foreach ( $animal[animal] as $key => $value )
  50.                                 {
  51.                                                                 if ( ( $value->cId == 0 ) && ( $number < $_REQUEST['number'] ) )
  52.                                                                 {
  53.                                                                                                 $value->buyTime = $_SGLOBAL['timestamp'];
  54.                                                                                                 $value->cId = $_REQUEST['cId'];
  55.                                                                                                 $value->tou = "";
  56.                                                                                                 ++$number;
  57.                                                                                                 $buyanimal[] = ( ( "{"buyTime":".$_SGLOBAL['timestamp'].","cId":".$_REQUEST['cId'].","createTime":0,"feedTime":".( $_SGLOBAL['timestamp'] - 14400 ) ).","growTime":0,"growTimeNext":".( $animaltime[$_REQUEST['cId']][0] - 1 ) ).","postTime":0,"productNum":0,"serial":".$key.","status":1,"statusNext":2,"totalCome":0}";
  58.                                                                 }
  59.                                 }
  60.                                 $animal = json_encode( $animal );
  61.                                 $animal = str_replace( ""{", "{", $animal );
  62.                                 $animal = str_replace( "}"", "}", $animal );
  63.                                 $_SGLOBAL['db']->query( ( "UPDATE ".tname( "plug_newfarm" )." set animal='".$animal."',money=money-".$shop[$_REQUEST['cId']][price] * $_REQUEST['number'].",mc_exp=mc_exp+".$_REQUEST['number'] * 5 )." where uid=".$_SGLOBAL['supe_uid'] );
  64.                                 $buyanimal = json_encode( $buyanimal );
  65.                                 $buyanimal = str_replace( ""{", "{", $buyanimal );
  66.                                 $buyanimal = str_replace( "}"", "}", $buyanimal );
  67.                                 echo stripslashes( ( "{"addExp":".$_REQUEST['number'] * 5 ).","animal":".$buyanimal.","code":0,"money":".$shop[$_REQUEST['cId']][price] * $_REQUEST['number'].","msg":"success","num":".$_REQUEST['number'].","uin":""}" );
  68.                                 exit( );
  69. }
复制代码
patiku 发表于 2009-11-28 20:02:09 | 显示全部楼层
顶~~
感谢无私的奉献......
回复

使用道具 举报

jacky_sg 发表于 2009-11-28 20:09:27 | 显示全部楼层
支持一下子
回复

使用道具 举报

23741 发表于 2009-11-28 21:07:17 | 显示全部楼层
這麼好的東西

感謝樓主
回复

使用道具 举报

yudan2 发表于 2009-12-1 14:14:21 | 显示全部楼层
测试好用,居然还解决了好友刷不出来,绝对要顶!!!
回复

使用道具 举报

积极323 发表于 2009-12-1 14:28:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

a392776858 发表于 2009-12-1 14:31:39 | 显示全部楼层
在那里有  牧场 插件啊
回复

使用道具 举报

11107207 发表于 2009-12-4 21:01:15 | 显示全部楼层
学习一下来
回复

使用道具 举报

136468936 发表于 2009-12-4 23:09:26 | 显示全部楼层
谢谢你真好朋友情很喜欢乐园子里有
回复

使用道具 举报

ztliang 发表于 2009-12-5 09:42:14 | 显示全部楼层
感谢无私的奉献

农场有你的一份力量,呵呵
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-20 09:18 , Processed in 0.027680 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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