Skip to content
View in the app

A better way to browse. Learn more.

主视角中国

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

=FF=Go

初级会员
  • 注册时间

  • 上次访问

由 =FF=Go 发表的全部内容

  1. 他是想同过嗅探得到真实ip和id的对应. mohaa应该看到的是被浩方封装过的伪ip
  2. mohaa 基于Q3引擎 ,采用 Q3 huffman 压缩算法编码, 给个头文件给你,自己去用吧。 /* ALL the code comes from the Q3fusion project of Andrey Nazarov: http://sourceforge.net/projects/q3fusion/ */ #include <string.h> #define MAX_MSGLEN 0x4000 #define VALUE(a) ((int )(a)) #define NODE(a) ((void *)(a)) #define NODE_START NODE( 1) #define NODE_NONE NODE(256) #define NODE_NEXT NODE(257) #define NOT_REFERENCED 256 #define HUFF_TREE_SIZE 7175 typedef void *tree_t[HUFF_TREE_SIZE]; // // pre-defined frequency counts for all bytes [0..255] // static int huffCounts[256] = { 0x3D1CB, 0x0A0E9, 0x01894, 0x01BC2, 0x00E92, 0x00EA6, 0x017DE, 0x05AF3, 0x08225, 0x01B26, 0x01E9E, 0x025F2, 0x02429, 0x0436B, 0x00F6D, 0x006F2, 0x02060, 0x00644, 0x00636, 0x0067F, 0x0044C, 0x004BD, 0x004D6, 0x0046E, 0x006D5, 0x00423, 0x004DE, 0x0047D, 0x004F9, 0x01186, 0x00AF5, 0x00D90, 0x0553B, 0x00487, 0x00686, 0x0042A, 0x00413, 0x003F4, 0x0041D, 0x0042E, 0x006BE, 0x00378, 0x0049C, 0x00352, 0x003C0, 0x0030C, 0x006D8, 0x00CE0, 0x02986, 0x011A2, 0x016F9, 0x00A7D, 0x0122A, 0x00EFD, 0x0082D, 0x0074B, 0x00A18, 0x0079D, 0x007B4, 0x003AC, 0x0046E, 0x006FC, 0x00686, 0x004B6, 0x01657, 0x017F0, 0x01C36, 0x019FE, 0x00E7E, 0x00ED3, 0x005D4, 0x005F4, 0x008A7, 0x00474, 0x0054B, 0x003CB, 0x00884, 0x004E0, 0x00530, 0x004AB, 0x006EA, 0x00436, 0x004F0, 0x004F2, 0x00490, 0x003C5, 0x00483, 0x004A2, 0x00543, 0x004CC, 0x005F9, 0x00640, 0x00A39, 0x00800, 0x009F2, 0x00CCB, 0x0096A, 0x00E01, 0x009C8, 0x00AF0, 0x00A73, 0x01802, 0x00E4F, 0x00B18, 0x037AD, 0x00C5C, 0x008AD, 0x00697, 0x00C88, 0x00AB3, 0x00DB8, 0x012BC, 0x00FFB, 0x00DBB, 0x014A8, 0x00FB0, 0x01F01, 0x0178F, 0x014F0, 0x00F54, 0x0131C, 0x00E9F, 0x011D6, 0x012C7, 0x016DC, 0x01900, 0x01851, 0x02063, 0x05ACB, 0x01E9E, 0x01BA1, 0x022E7, 0x0153D, 0x01183, 0x00E39, 0x01488, 0x014C0, 0x014D0, 0x014FA, 0x00DA4, 0x0099A, 0x0069E, 0x0071D, 0x00849, 0x0077C, 0x0047D, 0x005EC, 0x00557, 0x004D4, 0x00405, 0x004EA, 0x00450, 0x004DD, 0x003EE, 0x0047D, 0x00401, 0x004D9, 0x003B8, 0x00507, 0x003E5, 0x006B1, 0x003F1, 0x004A3, 0x0036F, 0x0044B, 0x003A1, 0x00436, 0x003B7, 0x00678, 0x003A2, 0x00481, 0x00406, 0x004EE, 0x00426, 0x004BE, 0x00424, 0x00655, 0x003A2, 0x00452, 0x00390, 0x0040A, 0x0037C, 0x00486, 0x003DE, 0x00497, 0x00352, 0x00461, 0x00387, 0x0043F, 0x00398, 0x00478, 0x00420, 0x00D86, 0x008C0, 0x0112D, 0x02F68, 0x01E4E, 0x00541, 0x0051B, 0x00CCE, 0x0079E, 0x00376, 0x003FF, 0x00458, 0x00435, 0x00412, 0x00425, 0x0042F, 0x005CC, 0x003E9, 0x00448, 0x00393, 0x0041C, 0x003E3, 0x0042E, 0x0036C, 0x00457, 0x00353, 0x00423, 0x00325, 0x00458, 0x0039B, 0x0044F, 0x00331, 0x0076B, 0x00750, 0x003D0, 0x00349, 0x00467, 0x003BC, 0x00487, 0x003B6, 0x01E6F, 0x003BA, 0x00509, 0x003A5, 0x00467, 0x00C87, 0x003FC, 0x0039F, 0x0054B, 0x00300, 0x00410, 0x002E9, 0x003B8, 0x00325, 0x00431, 0x002E4, 0x003F5, 0x00325, 0x003F0, 0x0031C, 0x003E4, 0x00421, 0x02CC1, 0x034C0 }; // // static Huffman tree // static tree_t huffTree; // // received from MSG_* code // static int huffBitPos; /* ======================================================================================= HUFFMAN TREE CONSTRUCTION ======================================================================================= */ /* ============ Huff_PrepareTree ============ */ void Huff_PrepareTree( tree_t tree ) { void **node; memset( tree, 0, sizeof( tree_t ) ); // create first node node = &tree[263]; VALUE( tree[0] )++; node[7] = NODE_NONE; tree[2] = node; tree[3] = node; tree[4] = node; tree[261] = node; } /* ============ Huff_GetNode ============ */ void **Huff_GetNode( void **tree ) { void **node; int value; node = tree[262]; if( !node ) { value = VALUE( tree[1] )++; node = &tree[value + 6407]; return node; } tree[262] = node[0]; return node; } /* ============ Huff_Swap ============ */ void Huff_Swap( void **tree1, void **tree2, void **tree3 ) { void **a, **b; a = tree2[2]; if( a ) { if( a[0] == tree2 ) { a[0] = tree3; } else { a[1] = tree3; } } else { tree1[2] = tree3; } b = tree3[2]; if( b ) { if( b[0] == tree3 ) { b[0] = tree2; tree2[2] = b; tree3[2] = a; return; } b[1] = tree2; tree2[2] = b; tree3[2] = a; return; } tree1[2] = tree2; tree2[2] = NULL; tree3[2] = a; } /* ============ Huff_SwapTrees ============ */ void Huff_SwapTrees( void **tree1, void **tree2 ) { void **temp; temp = tree1[3]; tree1[3] = tree2[3]; tree2[3] = temp; temp = tree1[4]; tree1[4] = tree2[4]; tree2[4] = temp; if( tree1[3] == tree1 ) { tree1[3] = tree2; } if( tree2[3] == tree2 ) { tree2[3] = tree1; } temp = tree1[3]; if( temp ) { temp[4] = tree1; } temp = tree2[3]; if( temp ) { temp[4] = tree2; } temp = tree1[4]; if( temp ) { temp[3] = tree1; } temp = tree2[4]; if( temp ) { temp[3] = tree2; } } /* ============ Huff_DeleteNode ============ */ void Huff_DeleteNode( void **tree1, void **tree2 ) { tree2[0] = tree1[262]; tree1[262] = tree2; } /* ============ Huff_IncrementFreq_r ============ */ static void Huff_IncrementFreq_r( void **tree1, void **tree2 ) { void **a, **b; if( !tree2 ) { return; } a = tree2[3]; if( a ) { a = a[6]; if( a == tree2[6] ) { b = tree2[5]; if( b[0] != tree2[2] ) { Huff_Swap( tree1, b[0], tree2 ); } Huff_SwapTrees( b[0], tree2 ); } } a = tree2[4]; if( a && a[6] == tree2[6] ) { b = tree2[5]; b[0] = a; } else { a = tree2[5]; a[0] = 0; Huff_DeleteNode( tree1, tree2[5] ); } VALUE( tree2[6] )++; a = tree2[3]; if( a && a[6] == tree2[6] ) { tree2[5] = a[5]; } else { a = Huff_GetNode( tree1 ); tree2[5] = a; a[0] = tree2; } if( tree2[2] ) { Huff_IncrementFreq_r( tree1, tree2[2] ); if( tree2[4] == tree2[2] ) { Huff_SwapTrees( tree2, tree2[2] ); a = tree2[5]; if( a[0] == tree2 ) { a[0] = tree2[2]; } } } } /* ============ Huff_AddReference Insert 'ch' into the tree or increment it's frequency ============ */ static void Huff_AddReference( void **tree, int ch ) { void **a, **b, **c, **d; int value; ch &= 255; if( tree[ch + 5] ) { Huff_IncrementFreq_r( tree, tree[ch + 5] ); return; // already added } value = VALUE( tree[0] )++; b = &tree[value * 8 + 263]; value = VALUE( tree[0] )++; a = &tree[value * 8 + 263]; a[7] = NODE_NEXT; a[6] = NODE_START; d = tree[3]; a[3] = d[3]; if( a[3] ) { d = a[3]; d[4] = a; d = a[3]; if( d[6] == NODE_START ) { a[5] = d[5]; } else { d = Huff_GetNode( tree ); a[5] = d; d[0] = a; } } else { d = Huff_GetNode( tree ); a[5] = d; d[0] = a; } d = tree[3]; d[3] = a; a[4] = tree[3]; b[7] = NODE( ch ); b[6] = NODE_START; d = tree[3]; b[3] = d[3]; if( b[3] ) { d = b[3]; d[4] = b; if( d[6] == NODE_START ) { b[5] = d[5]; } else { d = Huff_GetNode( tree ); b[5] = d; d[0] = a; } } else { d = Huff_GetNode( tree ); b[5] = d; d[0] = b; } d = tree[3]; d[3] = b; b[4] = tree[3]; b[1] = NULL; b[0] = NULL; d = tree[3]; c = d[2]; if( c ) { if( c[0] == tree[3] ) { c[0] = a; } else { c[1] = a; } } else { tree[2] = a; } a[1] = b; d = tree[3]; a[0] = d; a[2] = d[2]; b[2] = a; d = tree[3]; d[2] = a; tree[ch + 5] = b; Huff_IncrementFreq_r( tree, a[2] ); } /* ======================================================================================= BITSTREAM I/O ======================================================================================= */ /* ============ Huff_EmitBit Put one bit into buffer ============ */ void Huff_EmitBit( int bit, unsigned char *buffer ) { if( !(huffBitPos & 7) ) { buffer[huffBitPos >> 3] = 0; } buffer[huffBitPos >> 3] |= bit << (huffBitPos & 7); huffBitPos++; } /* ============ Huff_GetBit Read one bit from buffer ============ */ int Huff_GetBit( unsigned char *buffer ) { int bit; bit = buffer[huffBitPos >> 3] >> (huffBitPos & 7); huffBitPos++; return (bit & 1); } /* ============ Huff_EmitPathToByte ============ */ void Huff_EmitPathToByte( void **tree, void **subtree, unsigned char *buffer ) { if( tree[2] ) { Huff_EmitPathToByte( tree[2], tree, buffer ); } if( !subtree ) { return; } // // emit tree walking control bits // if( tree[1] == subtree ) { Huff_EmitBit( 1, buffer ); } else { Huff_EmitBit( 0, buffer ); } } /* ============ Huff_GetByteFromTree Get one byte using dynamic or static tree ============ */ int Huff_GetByteFromTree( void **tree, unsigned char *buffer ) { if( !tree ) { return 0; } // // walk through the tree until we get a value // while( tree[7] == NODE_NEXT ) { if( !Huff_GetBit( buffer ) ) { tree = tree[0]; } else { tree = tree[1]; } if( !tree ) { return 0; } } return VALUE( tree[7] ); } /* ============ Huff_EmitByteDynamic Emit one byte using dynamic tree ============ */ static void Huff_EmitByteDynamic( void **tree, int value, unsigned char *buffer ) { void **subtree; int i; // // if byte was already referenced, emit path to it // subtree = tree[value + 5]; if( subtree ) { if( subtree[2] ) { Huff_EmitPathToByte( subtree[2], subtree, buffer ); } return; } // // byte was not referenced, just emit 8 bits // Huff_EmitByteDynamic( tree, NOT_REFERENCED, buffer ); for( i=7; i>=0; i-- ) { Huff_EmitBit( (value >> i) & 1, buffer ); } } /* ======================================================================================= PUBLIC INTERFACE ======================================================================================= */ /* ============ Huff_CompressPacket Compress message using dynamic Huffman tree, beginning from specified offset ============ */ int Huff_CompressPacket( unsigned char *msg, int offset, int cursize ) { tree_t tree; unsigned char buffer[MAX_MSGLEN]; unsigned char *data; int outLen; int inLen; int i; data = msg + offset; inLen = cursize - offset; if( inLen <= 0 || inLen >= MAX_MSGLEN ) { return(cursize); } Huff_PrepareTree( tree ); buffer[0] = inLen >> 8; buffer[1] = inLen & 0xFF; huffBitPos = 16; for( i=0; i<inLen; i++ ) { Huff_EmitByteDynamic( tree, data[i], buffer ); Huff_AddReference( tree, data[i] ); } outLen = (huffBitPos >> 3) + 1; memcpy( data, buffer, outLen ); return(offset + outLen); } /* ============ Huff_DecompressPacket Decompress message using dynamic Huffman tree, beginning from specified offset ============ */ int Huff_DecompressPacket( unsigned char *msg, int offset, int cursize, int maxsize ) { tree_t tree; unsigned char buffer[MAX_MSGLEN]; unsigned char *data; int outLen; int inLen; int i, j; int ch; data = msg + offset; inLen = cursize - offset; if( inLen <= 0 ) { return(cursize); } Huff_PrepareTree( tree ); outLen = (data[0] << 8) + data[1]; huffBitPos = 16; if( outLen > maxsize - offset ) { outLen = maxsize - offset; } for( i=0; i<outLen; i++ ) { if( (huffBitPos >> 3) > inLen ) { buffer[i] = 0; break; } ch = Huff_GetByteFromTree( tree[2], data ); if( ch == NOT_REFERENCED ) { ch = 0; // just read 8 bits for( j=0; j<8; j++ ) { ch <<= 1; ch |= Huff_GetBit( data ); } } buffer[i] = ch; Huff_AddReference( tree, ch ); } memcpy( data, buffer, outLen ); return(offset + outLen); } /* ============ Huff_EmitByte ============ */ void Huff_EmitByte( int ch, unsigned char *buffer, int *count ) { huffBitPos = *count; Huff_EmitPathToByte( huffTree[ch + 5], NULL, buffer ); *count = huffBitPos; } /* ============ Huff_GetByte ============ */ int Huff_GetByte( unsigned char *buffer, int *count ) { int ch; huffBitPos = *count; ch = Huff_GetByteFromTree( huffTree[2], buffer ); *count = huffBitPos; return ch; } /* ============ Huff_Init ============ */ void Huff_Init( void ) { int i, j; // build empty tree Huff_PrepareTree( huffTree ); // add all pre-defined byte references for( i=0; i<256; i++ ) { for( j=0; j<huffCounts[i]; j++ ) { Huff_AddReference( huffTree, i ); } } }
  3. 你的mohaa1.11的迷你服务器0.92版本的,修改了main 下的 gamex86.dll 等 几个dll吗? 我写了个服务器的外挂,原理是hook gamex86.dll,在原版的mohaa下没问题,可在0.92下服务器有崩溃的现象。 btw: 分析了mohaa server,确实是个没完成的作品,实在不知道EA和2015当初发生了什么龌龊。
  4. shixi 你分析的很卖力,你说了这么多无非就是想说我和你一样zb,你要这么认为我也没办法,你可以这样认为,如果这样你心理能平衡点的话我不介意,我不能左右一个正常人的思维,更何况是几个马甲**. 你们这几个天天在sunshine 和swat 挂着各种马甲zb 的**, 每天被人骂cnm很爽是不是?管理员一来,象头猪似的被人踢出去是不是更爽?
  5. 本来不想说了,懒得在开一新帖了,实在觉得这种**太无耻了。 今天中午在sunshine 又见识了**的风采,一开始用sniper,对枪总是快我一点,我一开始还以为遇到了O.o的马甲加上他ping好也没在意,打了一局图,丫换了机枪本色就露出来了,不幸被群众揭破骂了**几句,好了,开始用脚本满屏的刷了。5分钟后,sunshine当机。中午很多玩家都见识了丫的嘴脸,真的不知道对这种人说什么好..
  6. 说实话,楼上的shixi还真烦。 几个问题再向你解释清楚,免得你无知当个性。 1.mohaa的zb工具不是独创的,基本都是从Quake引擎类游戏继承下来的。至于研究它根本不是开着去服务器里虐人,既然我挂=FF=队标一天,就不会无耻到如你们一般。至于你是哪个战队的我也有所耳闻,所以我也不惊讶你的行为了。我写的东西,用不着你来评说,这些事本来就是兴趣业余,没考虑其它,如果你有能力也有志向去做,也可以,我觉得总比每天装着zb工具以虐人为乐强点。另外dmw只有silver member收费的,免费的scanner也是有的。 2.我用的是南方的电信,去北方的服务器情况我也懒得说了,至于为什么北方的DMW服务器多的原因我也懒得说了。 3.个人认为mohaa的TDM成赛后的乐趣性大大降低,Camper的打法实在是令人作呕,老实说T8L和E91他们TDM打法是我喜欢的,这也就是我为什么喜欢在sunshine的原因。 4.我不象你们总是针对某个人,我针对的是那些整天在服务器里zb的家伙,尤其是zb还要打出正义的旗号。按你们的说法去偷东西也是促进法制的,你尽可去试试警察对你的宽容尺度。 5.人老了就不幽默了,至少不会心虚还要强装出苍白的一点幽默,继续吧... 继续生活在你自己构想的虚拟假面后吧,你得到更多的应该是同情而不是鄙视。 好了,如果有兴趣可以继续你自己苍白的表演,也可以继续把你们浩方的几套马甲轮流出场,接下来,我只是看客,看看你们“幽默”的表演。。。。 好了,到此为止,不再和你们搅和了,面对一些连id都要临时注册的Camper, 感觉象是和空气在对话...  
  7. 几天没来,没想到这个帖子惹来这么多口水,原来以为zb的没胆量上来回复,没想到还真有脸皮厚到如此的,不过还是和服务器里一样穿个马甲象个乌龟,当然更不忘往我身上泼盆脏水。 几点澄清说明一下: 1.对zb的研究纯粹为了写反作弊的东西,以前写了一半有一天发现了dmw也就没写下去了。原因很多,主要有几个,一是玩家太少没什么价值,二是由于本人的战队身份,写出来的东西也不可能成为比赛用的公允反作弊工具。三 发现DMW 写的非常不错,而且一直在发展,也就没必要再跟随别人了(FF的老人都看过第一版本也是最后一版)。所以那时就把DMW介绍给国内的玩家,现在也很高兴看到成为国内moher的主选反zb器。 2.至于水平 ,我的水平马马虎虎,这类玩家这么少的游戏,高不高手有什么意义? 我喜欢和风格类似的人打着玩,比如T8L的圈们 和E91 等,说实话那样节奏可以快一点。厌恶zb的**,尤其是以zb虐人为乐趣的家伙,实在是很无耻的,本来一个娱乐的东西,为什么总是有些恶心的东西让人不愉快呢?以前用马甲打还被PLSD误会过,被拉到他们的服务器开着反zb单挑过,所以现在也从来不会用马甲上来打。玩游戏只是为了乐趣,不会象有些人想象的和他们自己一样龌龊。 3.一个如此过气的游戏也能引起作弊爱好者的兴趣,实在是无奈也是悲哀,其实你们完全可以选择那些人气旺盛的游戏去糟蹋的,实在不行据说QQ游戏多可以zb的,希望你们可怜可怜我们,留点乐趣给我们这些无聊得只能打打mohaa打发时间的老头子吧。 最后说一句: 小伙子们,别把无耻当坦白,尽管夜总会的小姐也从来不忌讳谈论她们的事业。 游戏快乐... 快乐游戏,何必呢?
  8. 地点:SWAT 服务器 时间:5.27晚 23点 axis前面3个**全是zb的, 统一 用的 wambot 加换名的脚本,打一个人换个名字(其中就有冒用=M-liugz的名字). 显然是一丘之貉. 很显然里面有那个以前嘴臭老骂人的** mohh 也就是现在的 DUI BU QI WO SHI PANTU 可怜的allies 就剩一人,基本出生不了.旁观的JORDAN也是个透视,可怜啊可怜,可惜ZB器不如人啊 说实话,zb玩到如此无聊和低级趣味的,我还是第一次见到. 以此类推,这类人平时都只能靠手X来解决苦闷的,现在估计光手都不行,要用砂纸才有可怜的一点快感了...
  9. 谢谢上面两位... 目前机器托管在世导机房双线,目前算是最好的双线机房了,sina和阿里巴巴都在这里, 除了这实在找不到更好的双线机房了,可能有些西部地区的来有点问题,其他地区问题都不大. 至于你说的停顿问题,是因为安装了snakeserverpatch的缘故,一般停顿的时候会有一名玩家被踢出,通常是因为CVAR复位检查不合法的缘故,也就是有zb嫌疑.这是目前不用安装客户端最好的检查zb方法了. 当然对一些zb手段还是防不了.
  10. 谢谢关心, 说点有用的行吗?
  11. 日,和DMW的沟通了,可能是我英文太烂,实在无法让他们理解我的需求,他们的客服多是以让我检查设置放火墙之类的方法来应对,我实在是计穷了,看看S-22能不能帮我和他们的开发人员沟通一下这个问题? 不胜感激...
  12. ftp://down0420:down@down2.bgxp.com/www_bg...ser_6.0_ENG.ISO
  13. 不影响啊,DMW3 scanner 不是可以管理64个服务器吗,只需要它能提供多ip映射同一mohaa服务器的功能就可以了. 说简单点就是允许一个mohaa server登记 2个或以上的ip. 至于这两个ip是否同一server很容易就检查出来了。 而且这个问题也是很普遍的,并不是很特殊啊,比如在内网开台mohaa服务器 192.168.1.8 然后把端口映射出去(202.xx.xx.xx和外网的一起游戏,这时候内网连接的mohaaserver是 192.168.1.8 ,而外网玩家连接的是 202.xx.xx.xx ,那么同样存在这个问题啊. client里的lan option 难道只考虑到了scanner在内网的情况,就没考虑mohaaserver在内网的情况吗?
  14. =FF=Go 发表 1 个主题 于 硝烟里的年华
    最近FF增加了双线双ip的服务器,目前可以实现不同地区的用户通过不同的入口ip登陆服务器, 可是前期购买的DMW3 silver配合上有些问题. 分析了一下DMW 工作原理: 1.scanner通过Rcon 来设置了mohaa server SV_pure 这个CVAR 其中包含scanner的地址. 2.dmw client 通过hook mohaa.exe 得到Sv_pure 中内容,取出scanner的地址 连接scanner. 3.dmw client 连接上scanner 后,检查client 的正确性以及环境的合法,以及游戏文件的合法. 4.dmw client 将取得mohaa.exe 连接的mohaaserver地址+player的唯一标识(应该是challenge)+client用户的登录信息以及是否检查通过发送到scanner. 5.scanner通过rcon status 和 dumpuser 定时的刷新到玩家的信息并维持一张表playerlist,其中应该包含 serverip , player的唯一标识(应该是challenge),玩家的相关信息,是否通过client检查.... 6.scanner 匹配客户端传上来信息和这张玩家的列表,匹配的关键字应该是serverip+challenge,然后修改状态,找出没检查通过或没client没连接上的踢出. 问题出来了. 如果 dmwscanner scan 电信ip的server,那么连接到网通ip的用户从client 发回的信息中包含的serverip就是网通的地址,scanner 匹配不上,那么就把所有网通用户踢出. 同理 如果scan 网通ip的server,从电信的进的都被踢出. 如果两个都scan,更好了,虽然连接状态灯全亮,全被踢了. 目前我认为如果在用户列表和client信息匹配上,scanner使用了serverip做为了其中的元素,那么这个问题的解决必须通过修改DMWscanner来解决. 急切希望老猫能帮我们和DMW沟通一下,解决这个问题. 如果有更好的更简单的方法解决这个问题,也请不吝赐教.
  15. 哦,这样,如果只给机器提供的的双线对应双ip的接入,目前我只能用端口转发来实现绑定mohaa服务器,不知道有什么更好的方法吗? 比如TEAM或bridge.
  16. 你的mohaa 是如何绑定双线的两个ip的?
  17. 一个DMW就可以基本解决的问题... 一方面是服务器加了dmw却无人玩的现状,一方面是不开dmw的服务器里人满为患,而大家还在为个zb不zb争得面红耳赤. 看见嚣张zb的,不平的就出来骂两句,更多的人只是加到zb的一边,打得另一边连窝都出不来.其实一个很简单的Vote kick就可以搞定的问题,我发起过几次,可就是没人会敲个vote yes.  巴巴的管理员来了,踢了个干净,一些疑似的还不敢踢,不管踢对踢错,被踢的都是气愤填膺,要么找上门来对骂,要不就是crash服务器,再搞不动就换个名字上来冒充console,最无赖的就是mohfill把你的门堵的死死的,让谁也上不来玩,这都是现实中发生过的. 至于是哪个**的行径,大家应该都能知道一点... 说那么多也没什么意思,TDM里天天都有人说我zb,我只会笑一下 加回一个**(SuperBoy)来夸奖对方无知且无畏的精神. 对那种开着autoaim还不时的V4x来嚣张的zb猪,通常我就会代大家问候一下他老母... 其实大家都习惯了DMW下游戏,是不是这些麻烦就都能少一点了呢?
  18. 人家不是说了密码被盗了吗... 据我分析 kili 1.11 服务器已经被zb者和极度自恋者占领, 我去打,要不被zb的追的无地逃命,要不就被认为是zb踢了. 现在如果没服务器打单机也不去那个鬼地方了. 有一次还让我截了两张图给他看,截完还是被他踢了... 所以一直怀疑那些"偷密码"的管理员还是不是具备正常人的心理?
  19. 乱踢人是性格问题, 有目的的乱踢人就是RPWT了,rcon密码被窃和mohaa server没关系,和自己的server安全是有莫大的关系的.
  20. 昨天我在sunshine 看到有人用console骂人,起初还奇怪,后来dv说是服务器被黑了,但并没有踢人或关闭服务器的现象,所以我考虑仅仅可能是盗用console的名字来发言. 刚刚我在sunshine 改名console 仍能发言,而且发了几句,服务器就down了(可能是巧合). 以前许多软件防止使用console发言都是踢出名为console的用户,但我想一个很简单的脚本就可以绕过,脚本执行:按下热键换名为console 发出事先定好的一句话,然后再改回原来的名字,脚本执行的时间非常的短,凭肉眼+TAB是很难看到是谁改了名的,软件的轮询式的检查也很难凑巧补捉到,但这个人肯定在游戏者名单里. 如果要更正并防止其他类似的未知的crash或Fake问题,可以考虑在server 上hook一个monitor或logger,记录监视所有客户端发送来的通讯记录,当然通讯是Q3 Huffman压缩过的,相关的解压代码可以从http://sourceforge.net/projects/q3fusion/里找到. 通过通讯记录,应该很容易找到发生问题的所在. 有空s-22做一个吧,最近手头事情比较多,实在腾不出精力来做... 我就提个建议,有空你能实现更好.... 至于0.92 server crash的问题, 我记得在ffclan灌水区里发过一个帖子的,去找找...
  21. 0.92 仍然受_fps文件bug的影响 ,能crash server.

Account

Navigation

搜索

搜索

设置浏览器推送通知

Chrome(安卓)
  1. 点击地址栏旁边的锁形图标。
  2. 点击 权限 → 通知
  3. 根据需要调整通知设置。
Chrome(桌面)
  1. 点击地址栏中的锁形图标。
  2. 选择 网站设置
  3. 找到 通知,然后根据需要调整设置。