无限天堂

标题: 关于挥刀卡的情况解决说明。 [打印本页]

作者: 颓废三道    时间: 2013-11-13 11:13
标题: 关于挥刀卡的情况解决说明。
挥刀卡,经证实是人多时登陆器发送到服务端的封包异常导致的。

原因我详细说一说,懂一点的玩家就知道。
正常情况下,客户端挥刀之后,会发送一个攻击封包给服务端,服务端才能进行攻击计算。
这个攻击封包包括了target(目标对手)的ID和X、Y坐标。而XY坐标决定了玩家挥刀的面向
而SFL登陆器在人多的情况下,发送的攻击封包会出现X、Y坐标单独或同时为0的情况。
当同时为0时,服务端判断收到一个错误的封包,会停顿不攻击。
当只有一个为0时,服务端判断攻击有效,但因为一个坐标改变了,会导致砍着砍着突然换了个方向的情况。

针对这个情况,目前的解决办法是,记录上一次挥刀的targetid.
当接收到的封包异常事,则指定这次的攻击对象为上一刀的攻击对象,只要他在自己的攻击范围内,那么就攻击他。

理论上说,这样可以解决这个问题。唯一可能出现的BUG就是,我砍着A,突然转向砍B,砍B的第一刀如果出现了封包异常,那么这一刀还会砍向A(封包异常时targetid为上一次挥刀的target)。但你不用再点B去砍他,这一刀砍过之后,你的攻击目标依然是B。

我们几乎可以判断,任何3.63版的私服,只要用了SFL登陆器,都有这个特性。这和服务器好坏无关(500人时我们内存占用1.8G,CPU占用8%以下,I/O完全正常),完全由登陆器决定了。
以前出现过的瞬飞会掉线的问题,其实也是一个道理,瞬飞时,有时候服务端接收到的移动封包,坐标会为0.天堂最初的编写者,对异常情况采用了非常严厉的处罚措施。发现异常就掉线。我相信这也是99%的私服还沿用的写法。

对于出这样的问题,我感到很抱歉。无限的在线人数,这几年,也一直没有达到过500人。而以前版本的SFL也没有这样的问题。
SFL登陆器是由台湾人开发的,由于台湾客户端移动和攻击封包加密方式,都和大陆的不一样(不过移动封包加密我这里已经关闭了)
所以无法判断是由这个差异引起的,还是作者为了防止登陆器商业化故意留下的BUG。

所以。。。哥决定了。。。学习抓包。。自己写登陆器。。。阿门~~~


作者: yangzichen    时间: 2013-11-13 11:27
广告位招租
-------------------
我能理解为499就ok吗? 限制同一个IP的挂机数即可,由4个更改为2个
作者: 颓废三道    时间: 2013-11-13 11:29
不用限制。限制了,也可以用代理挂机,4个算是正常合理范围,机器也能承受。目前我就是想换登陆器。
作者: kissbaby    时间: 2013-11-13 11:40
  期待解决 25智力 骑士问题
作者: gaobaogang    时间: 2013-11-13 11:46
还有个事就是腾讯饰品的属性都没实装啊
作者: itgangpao    时间: 2013-11-13 11:58
以前好好的啊  为什么现在这样了  能不能换回以前的~期待早日解决
作者: nmbjjyyda    时间: 2013-11-13 12:45





欢迎光临 无限天堂 (http://156.236.70.90/) Powered by Discuz! X2.5