确定的家伙,因为我已经没有任何关系,我将释放如何阻止每次崩溃/欺骗数据包,并保存的ID /绰号的家伙试图您的服务器崩溃。 ; g' L' F% n; r+ {8 G& l" I/ u
6 e( t/ G C* W- y4 ]9 x( T& f首先,你需要有VS.NET2003 Service Pack 1安装和飞飞来源。
O ?7 c8 g& ]
|& B2 S( b3 F! z# ]为了阻止这些数据包,您需要打开位于worldserver文件夹的DPServer.cpp。
& g$ b0 j+ j0 C" r2 w% b* b
# O# G S J' A5 ~0 z0 zEquipament崩溃: # V9 [$ t! M! e7 D( b4 p
扰流板:
& D- u0 R) e# k& N5 v& o' Q" w8 x& e! b
搜索: : H/ r7 Q; _. q, I
Code: ar>> dwData >> objid >> nPart; if(nPart >= MAX_HUMAN_PARTS ) return; 后添加: Code: CUser*pUser = g_UserMng.GetUser( dpidCache, dpidUser ); //Crashpacket if( nPart > 30 || dwData < 0 || nPart < -1) { Error("CDPSrvr::OnDoUseItem : Crash Try -> [Player ID: %07d], [Player Name:%s], [Packet used: %d,%d,%d]", pUser->m_idPlayer,pUser->GetName(), dwData, objid, nPart ); return; } 和评论的第一 Code: CUser* pUser = g_UserMng.GetUser(dpidCache, dpidUser ); 你看到在我的代码。 7 g) c3 G# [2 J+ I2 V$ E! P
+ D; Y y- d, L: X' a' k
! f3 j5 R$ w& n+ i6 |- m% e
购买崩溃: ; h. T/ {3 x5 E- \1 G
扰流板: ! e% z& G: I7 D' T2 @. F+ O
( _3 P/ Z! t" aYOU NEED TO DO IT TWICE, ONE FOR NORMAL BUYSAND ANOTHER FOR RED CHIPS BUYS (你需要做两次,正常购买和红筹股另一个人购买)
( d* Y, l! |* h) P; \- b4 S9 Y寻找
Code: ar>> cTab >> nId >> nNum >> dwItemId; if(cTab >= MAX_VENDOR_INVENTORY_TAB || nNum < 1 ) return; 然后添加 Code: CUser*pUser = g_UserMng.GetUser( dpidCache,dpidUser ); //CRASH if(cTab < 0 || nId < 0 || nNum > 9999 || dwItemId < 0 ) { Error("CDPSrvr::OnBuyItem : Crash Try -> [Player ID: %07d], [Player Name:%s], [Packet used: %d,%d,%d,%d]", pUser->m_idPlayer,pUser->GetName(), cTab, nId, nNum, dwItemId ); return; } 和评论的第一 Code: CUser* pUser = g_UserMng.GetUser( dpidCache,dpidUser ); 你看到在我的代码。
( g3 z" Y+ V4 a# l% v/ p+ }' o! o# h$ \
/ ~, ^/ m# @+ k1 M
2 E6 s; d% Y8 s4 G* D4 L4 m" s/ O掌上崩溃:
$ A4 \+ }) l0 u. |扰流板:
3 Z& m+ \& q) q9 t0 z6 h( i' H( ]' ?! `$ J
搜索: Code: ar>> nPocket1 >> nItem >> nNum >> nPocket2; if(nPocket1 == nPocket2 ) return; 然后添加 Code: //DUPECODE if(nNum <= 0 ) { Error("CDPSrvr::OnMoveItemOnPocket : Dupe Try -> [Player ID: %07d], [PlayerName: %s], [Packet used: %d,%d,%d,%d]", pUser->m_idPlayer,pUser->GetName(), nPocket1, nItem, nNum, nPocket2 ); return; } //CRASH if(nItem < 0 || nPocket2 > 2 || nPocket1 < -1 || nPocket1 > 52 ) { Error("CDPSrvr::OnMoveItemOnPocket : Crash Try -> [Player ID: %07d], [PlayerName: %s], [Packet used: %d,%d,%d,%d]", pUser->m_idPlayer,pUser->GetName(), nPocket1, nItem, nNum, nPocket2 ); return; } 6 X6 z) p& C3 d. M! K! F
9 J" ~0 x; W2 @ R% R) b$ k对不起英文错误,因为我brazillian。
; x+ W8 _* h, O% F! P9 }, S Ckkthxbye。 7 z7 b5 C U% A* c# i- A4 ]
2 h* v" x, o. b& D; u
4 t4 _- u" M' _4 b |