看流星社区

 找回密码
 注册账号
查看: 5348|回复: 10

谈谈与服务器断开连接和辅助挂久了出错问题

[复制链接]

该用户从未签到

发表于 2011-8-19 08:50:57 | 显示全部楼层 |阅读模式
和每位自己作挂的朋友一样,我的挂也是每隔几个小时就和服务器断开了连接,我看到论坛里也有朋友遇见这样的问题,现在我就想就我个人的一点经验和大家探讨一下这个问题。其实只要你用心,你就会发现一个现象,当游戏与服务器断开连接以后,如果不退出游戏,重新登录游戏后游戏就会出错关闭。如果情况较好的话,在进入选择人物画面的时候还能看见人物,只是在进入游戏的时候游戏自动关闭,如果情况比较严重,帐号登录后,选择人物时就已经看不见角色了。这是为什么呢?我想这就是我们总掉线的原因,我们的挂有些操作已经造成了游戏的崩溃,而崩溃的前兆就是断开连接。
    那么是那些操作让游戏崩溃的呢?我想有两种:一、大量重复的操作。二、错误的操作。下面我分别展开来讲。对于重复的操作我举个例子大家就明白了,比如跑向坐标,如果编程的时候没有做处理,而是将跑路CALL放在时间控件中循环,那就会出现不断的发送跑路指令的现象,时间控件间隔我们一般设置为500-1000毫秒,如果路程很远这种高频率的重复操作必将对游戏本身造成影响(或被游戏检测)。还有采矿,如果发现了矿物已经在采集了,而我们的挂还在发送执行采矿CALL同样也会让游戏不堪重负。对于这样的操作一般加上判断就能避免,比如跑路和采矿时检测人物状态,如果不在跑路且没有到达目的地则执行跑路CALL或者如果发现矿物且在采矿距离范围内并且没有采矿则执行采矿CALL。把所有这样的漏洞补好,相信对防止游戏客户端出错必有好处。第二、错误的操作造成与服务器断开。相信很多人见过《退避状态》,同样我也遇见过,以前听说是因为网络延时造成的,但是最近在一次调试智辅的时候发现,造成《退避状态》还有一种可能,这就是错误的操作。当时我在采矿,而身上的矿铲被爆掉了,开始没发现,一开挂就退避,没一会就掉线。后来找到问题原因再也没发现掉线现象。我个人的一点总结就是作挂的时候要严谨,要充分考虑各种可能存在的问题,提前加以预防,尽可能的让挂模拟人工操作。最后送大家几个字“悠着点、温柔点”相信经过仔细的查找,精心的处理,你的挂也能长时间在游戏里驰骋的。
    最近又发现一种可能的影响,游戏中的状态位往往反映比较慢,导致判断相对滞后出现重复操作。对此可以采用两种方法解决,第一、对于定时要求不是很高的程序可以在CALL里使用sleep进行强制延时,这个方法的好处是简单有效,但对于要求精确定时的程序不适合(比如采矿计时),另外使用这样的方式在拖动智辅窗体时会出现卡的现象,这也是sleep的弊病。第二种方法是对CALL过程的调用采用自锁互锁的方式锁定,这个方法可以有效解决第一种方法的弊,但是程序编写难度会增加,各种标识位的逻辑判断相对复杂。  
    对于注入代码的考虑被我忽视了,谢谢楼上的朋友提醒。对于打开和关闭进程指令,我倒是用的挺多。不再需要对进程进行操作时就关闭了,可是问题依然存在。曾有一段时间怀疑是不是语句太多,对进程造作过于频繁造成游戏出错,但是只在窗体创建的时候打开进程,在关闭智辅的时候关闭进程依然没用。看来我是要在代码注入上下下功夫查找了。重复操作的问题虽然思路有了,可是具体实现的时候很难,对CALL进行锁定后,解锁时条件太苛刻有时候解锁不了,条件放松一点又没法避免重复操作,一直是个矛盾,所以虽然认识到重复的操作多游戏稳定性有影响,可至今未能很好解决。这里也希望大家参与共同探讨解决。

该用户从未签到

发表于 2011-8-19 08:51:15 | 显示全部楼层
上面的情况都出现了 说的非常有道理。我上面的情况也一直出现~支持一下~

该用户从未签到

发表于 2011-8-19 08:51:43 | 显示全部楼层
不断的循环操作同一个动作,就很容易出现错误,优化下会好很都,其实写挂很看重个人的思维严谨。

该用户从未签到

发表于 2011-8-19 08:52:09 | 显示全部楼层
其实只要你用心,你就会发现一个现象,当游戏与服务器断开连接以后,如果不退出游戏,重新登录游戏后游戏就会出错关闭。如果情况较好的话,在进入选择人物画面的时候还能看见人物,只是在进入游戏的时候游戏自动关闭,如果情况比较严重,帐号登录后,选择人物时就已经看不见角色了。这是为什么呢?

这是你的游戏一直在发包或者在用CALL,但游戏还没有进入游戏的界面。所以一进就会掉线。。出错呢,是像你说的重复太多的动作。。而且很多都是读取错误或者在那个界面时,是错误操作的。所以导致程序出错。。你们可以这样解决。。就是发现掉线,就把所有智辅里的动作去掉。。跟着就应用重新登陆的动作。当游戏进入游戏的界面时。。智辅的动作才重新再开始。这样就不会出现上述的问题的了。   

检测是否掉线或者在选人或者正常游戏界面。都有个偏移量的。。那个可以用时钟,每隔20秒或者30秒检测一下的方法来测试是否掉线或者在正常游戏的状态。

该用户从未签到

发表于 2011-8-19 08:52:22 | 显示全部楼层
我的也存在这个问题,但刚刚解决了,原因就是有些地方没有closehandle,所以句柄越来越多,超过一定值就崩溃了,所以大家好好检查就会解决的了。

该用户从未签到

发表于 2011-8-19 08:53:01 | 显示全部楼层
在任务管理器里查看一下智辅进程的句柄数是否不断增加,我原来没解决前,最多的时候达到17万句柄,现在不超过120.很稳定。

打开任务管理器——查看——选择列——勾选句柄数 就可以查看了

该用户从未签到

发表于 2011-8-19 08:53:26 | 显示全部楼层
楼主的问题是:与游戏的线程不同步造成的!没有什么!注意同步就可以了!

该用户从未签到

发表于 2011-8-19 08:53:33 | 显示全部楼层
我的单砍和群怪就是星期二挂上去就到下个星期二!

该用户从未签到

发表于 2011-8-19 08:54:07 | 显示全部楼层
一般情况下DLL注入比远程线程稳定!也就是说远程线程可能没有考虑线程的同步就会造成游戏的掉线或者崩溃!还有就是挂的特征码!界面上的文字用图片试试!

该用户从未签到

发表于 2011-8-19 08:54:43 | 显示全部楼层
应该是一些资源没有及时释放造成的,我还是比较支持用完就释放
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 22:25

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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