开心娱乐辅助器_快乐西游怎么开内挂

开心娱乐辅助器_快乐西游怎么开内挂经过前两篇文章,我们已经可以得到了我们的花园的基本信息了,并用xml反序列化来映射到相应的实体类中,有了花园信息,我就就要来研究其一些动作的实现了,比如说:浇水、除草、收获、偷盗等等功能具体是怎么来实现的, 首先还是打开fiddler2抓一下包看看收获:GET/!house/!garden/havest.php?verify=22842320%…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

经过前两篇文章,我们已经可以得到了我们的花园的基本信息了,并用xml反序列化来映射到相应的实体类中,有了花园信息,我就就要来研究其一些动作的实现了,比如说:浇水、除草、收获、偷盗等等功能具体是怎么来实现的, 首先还是打开fiddler2抓一下包看看

收获:

GET /!house/!garden/havest.php?
verify=22842320%5F1062%5F22842320%5F1245934796%5Fb2a24c5dfb54cbeb1498d95d42b820a4&seedid=0&farmnum=13&fuid=0&r=0%2E24021180626004934 HTTP/1.1
成功

<data><leftnum>2</leftnum><stealnum>0</stealnum>
<num>2</num><seedname>雪莲</seedname>
<fruitpic>http://img.kaixin001.com.cn//i2/house/garden/crop/xuelian.swf
</fruitpic><ret>succ</ret></data>
失败

<data><ret>fail</ret><reason>这块地没有东西可收获</reason></data>

偷盗:

GET /!house/!garden/havest.php?
verify=22842320%5F1062%5F22842320%5F1245934796%5Fb2a24c5dfb54cbeb1498d95d42b820a4
&seedid=0
&farmnum=14
&fuid=7033784
&r=0%2E7748989406973124 HTTP/1.1
成功

<data><anti>0</anti><leftnum>46</leftnum><stealnum>1</stealnum>
<num>1</num><seedname>牧草</seedname>
<fruitpic>http://img.kaixin001.com.cn//i2/house/garden/crop3/gouweiba.swf
</fruitpic><ret>succ</ret></data>
失败

<data><anti>0</anti><ret>fail</ret><reason>已偷过,做人要厚道</reason></data>

犁地:

GET /!house/!garden/plough.php?
verify=22842320%5F1062%5F22842320%5F1245934796%5Fb2a24c5dfb54cbeb1498d95d42b820a4
&seedid=0
&farmnum=13
&fuid=0
&r=0%2E09461198281496763 HTTP/1.1

成功
<data><ret>succ</ret></data>

失败
<data><ret>fail</ret><reason>已经犁过了,该播种了</reason></data>

播种:

GET /!house/!garden/farmseed.php?
verify=22842320%5F1062%5F22842320%5F1245934796%5Fb2a24c5dfb54cbeb1498d95d42b820a4
&seedid=63
&farmnum=13
&fuid=0
&r=0%2E42840757546946406 HTTP/1.1

成功
<data><ret>succ</ret></data>

失败
<data><ret>fail</ret><reason>这里不可以种喔</reason></data>

上面是几种基本状态请求的URL和返回操作成功还是失败的XML,我们可以按照上一扁的方法把返回的XML进行反序列化来让我们的程序得到这些状态。

我们先分析每个请求都向服务器发送了什么信息,其中的参数大部发好理解,我们就不说了,就一个verify和一个r不太清楚做什么用,我尝试着在浏览器里把这两个参数去掉然后访问,结果是,r有没有都无所谓,哪我们就不考虑它了,还有一个缺不可缺少,而且每次登录这个verify都会变化,我们哪里去取到这个值呢, 在分析了多个页面的原代码后,我们在http://www.kaixin001.com/!house/index.php页面的代码中找到了这串值,

Y[B)9MK[S0$`QLQP5D(%RJ5

先也别管他起什么作用了,把它抓出来才是正经。怎么抓出来,这个返回的可不是XML是一个乱七八糟的HTML,而且这串值还在一段js代码中,好在我们还有正则表达式这个武器,一切都迎刃而解了,在VS中敲出如下代码:

[(R2SDISEQ3_E1{K}X7JD%9

 

 

由于这个值在每一次登录以后不会改变,所以我的做好是在登录后就调用这个函数,并保存在一个类的公有变量中。

获得了这个verify的值后,我们就可以放心的写接下来的代码了,接下了就简单了,按上一篇的方法,写就可以了,先设计实体代码

 

 

复制代码

[XmlRoot(ElementName 
=
 

data

)]
   

public
 
class
 ReturnInfo
   {

       

public
 
string
 ret;
       

public
 
string
 reason;
       

public
 
int
 anti;
   } 

复制代码

大部分时候返回的XML就包含这些值,只有收获成功的时候才返回更多的信息,我们可以把这种情况做为Returninfo的一个子类来实现

 

 

ContractedBlock.gif
Code

 我们的操作代码也很简单

 

 

ContractedBlock.gif
Code

 

这个函数基本上符合了我们的要求,但是和我们昨天的代码对比一下,我们发现除了返回的类型不同,其它大部分的代码都重复了

7LM)WX$3(B0LN[)0B}YYA96

这些重复的代码,我们每一个操作都要写,太麻烦了,万一要修改哪不完玩了,重构一下,一开始我的办法是把这几行代码写到一个单独的函数中,但是我们很快发现,下面两句代码也只是稍有不同

X5}UL0I}NL[V}7`F`JRZE1S

 

{UB~Z@20D_J(DK@()5B%`$P

就这一点点的差别用普通函数来重构就麻烦了,但是好在C#2.0以后有了泛型这个好东东,看我七十二变

 

ContractedBlock.gif
Code

 

接下来我们的代码就变成了这样了

 

ContractedBlock.gif
Code

 

是不是清爽了好多!








    本文转自无心之柳.NET博客园博客,原文链接:http://www.cnblogs.com/9527/archive/2009/08/23/1552561.html
,如需转载请自行联系原作者





版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194396.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java 判断对象是否为空的工具类_如何判断java对象是否为空「建议收藏」

    java 判断对象是否为空的工具类_如何判断java对象是否为空「建议收藏」首先来看一下工具StringUtils的判断方法:一种是org.apache.commons.lang3包下的;另一种是org.springframework.util包下的。这两种StringUtils工具类判断对象是否为空是有差距的:StringUtils.isEmpty(CharSequencecs);//org.apache.commons.lang3包下的StringUtils类,判…

  • Hybrid App开发 四大主流平台「建议收藏」

    Hybrid App开发 四大主流平台「建议收藏」HybridApp在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之巅呢?是选择学习原生开发,研究Java、Object-C、C#等语言,还是选择继续使用网页开发,容忍HTML5功能的局限性?就在开发者左右为难的情况下HybridApp作为一个折中的解决方案诞生了。那么究竟什么才是HybridApp呢?HybridApp概念…

  • git push 报错处理 ! [rejected] master -> master (non-fast-forward)

    git push 报错处理 ! [rejected] master -> master (non-fast-forward)

  • mysql 全文索引无效_为什么MySQL全文索引不起作用?

    mysql 全文索引无效_为什么MySQL全文索引不起作用?在尝试了我能做的一切之后,我终于创建了这个测试表:CREATETABLEtest_table(idint(11)NOTNULLAUTO_INCREMENT,titletextNOTNULL,PRIMARYKEY(id),FULLTEXTKEYtitle(title))ENGINE=MyISAMDEFAULTCHARSET=utf8使用以下测试数据:INSERT…

  • JAVA CAS实现原理与使用

    JAVA CAS实现原理与使用在JDK5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁)。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile…

  • VUE父子组件之间的传值,以及兄弟组件之间的传值;

    VUE父子组件之间的传值,以及兄弟组件之间的传值;一、Vue父子组件之间传值vue使用中,经常会用到组件,好处是:1、如果有一个功能很多地方都会用到,写成一个组件就不用重复写这个功能了;2、页面内容会简洁一些;方便管控;子组件的传值是通过props来传递数据,$emit来触发事件;下面是一个简单的子组件props传值:父组件的部分:首先引入组件,在组件上绑定你要传给组件的值;然后,在组件里通过props来接收你从父页面传…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号