确定的家伙,因为我已经没有任何关系,我将释放如何阻止每次崩溃/欺骗数据包,并保存的ID /绰号的家伙试图您的服务器崩溃。
8 y7 J) z4 }# j5 O8 i" V1 N3 f$ y2 `4 N& Y1 i1 \' E
首先,你需要有VS.NET2003 Service Pack 1安装和飞飞来源。 ) @0 X( y' |: a2 s4 T! z5 l
% i5 @ W: j/ ]为了阻止这些数据包,您需要打开位于worldserver文件夹的DPServer.cpp。
& i, \- Z. Y/ V# f3 [. Y
% [3 E9 d" f/ B1 f1 ]) I; N: L% \' ~Equipament崩溃:
+ E, M' @& B' T; s# L% w7 Y( l扰流板: ! A5 V S+ ]. ]' k, e
% ` Y( t0 t0 X! l+ s; j: R* m! D# \搜索:
! ?8 L; a: u' s q5 [, L5 |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 ); 你看到在我的代码。 3 ^3 M2 g9 \# V8 d; p, \6 k
; Z7 b# E8 U* t/ Z5 {; } K
+ i: T+ _2 @1 E; `, @7 s8 F
购买崩溃: # k8 [; E( [ Q% [* r
扰流板: 4 Z1 x5 v6 n2 h g5 J- W0 W
6 d( H, \$ M6 r S3 {
YOU NEED TO DO IT TWICE, ONE FOR NORMAL BUYSAND ANOTHER FOR RED CHIPS BUYS (你需要做两次,正常购买和红筹股另一个人购买)
. g% e( n0 @) W7 g( B, A寻找
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 ); 你看到在我的代码。
" P/ W# V" u/ M6 k: g7 K
j$ `! W. r. h; V% u
* L, j. h+ i. `( P* U: {掌上崩溃:
; [( z% b& K) l/ w' z! O7 y扰流板: 9 Q) _! r3 p5 E7 A- f$ M; A
! c: ]. i5 ^) M0 F9 R( F+ f9 o搜索: 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; }
- j$ N9 \ O2 c1 k; U6 @1 `8 y: F$ ^- m" i6 J
对不起英文错误,因为我brazillian。 , ]% P$ y1 e$ o+ ~7 v6 x, |3 i
kkthxbye。 $ h! e, l5 \$ j* w
2 @" t% @" c9 D, L/ r; o
* m" J6 y- k5 r
|