确定的家伙,因为我没有做,我会释放如何阻止每一个崩溃/欺骗包,并保存的ID/绰号的家伙试图您的服务器崩溃。% i9 `6 n# Y) U2 e, J! P6 } Z
`: p& @& j! b: h7 l
首先,你需要有VS.NET2003ServicePack 1安装和飞飞来源。/ C' N$ |! Y" K, M; i
0 T2 U1 V5 ]: y G
为了阻止这些数据包,你需要打开上的worldserver文件夹位于DPServer.cpp。( h" S" g/ x$ x
+ Z7 N' S/ q0 cEquipament崩溃:
% J/ W$ |1 m) r7 u( K" y6 Q- G
7 u G5 T9 @8 x$ [( w4 Q扰流板:# z$ l: S7 W0 q7 j; E* x/ b% R
6 Y9 h7 z- U P8 B. a4 I搜索: n, C# ]& {( n" M. s2 F# r: l: d/ e6 j
8 r2 ]0 ^( d5 A+ _4 H; _9 a% v1 ?邮编: ar >> dwData >>objid >> nPart; if( nPart >=MAX_HUMAN_PARTS )
3 I; C, F* o! R6 L$ T return; 后添加:
n& {7 w( D8 z6 h' b
% u! ~ z" [& N$ a6 ~- {+ K4 T邮编: CUser* pUser =g_UserMng.GetUser( dpidCache, dpidUser ); //Crash packet if ( nPart > 30 || dwData< 0 ) { 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; ) @/ {* F: s; G) b
} 并第一个评论
# R7 ~" p$ x( g; u6 M- [邮编: CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
; V! P& i& }; F' H" T你看在我的代码。% @: [% ~' I0 R I. k! F
, A( r# x! M* N/ y9 Q
3 U" y+ @+ V" S: Y. \8 i- S. ~
) n8 D& l( u/ f4 b9 b+ K购买崩溃:, i" f* [; ~4 K2 d2 [4 g% K. i
, w- G; D1 W) e3 Z
扰流板:# c+ a) r/ W2 n5 @: Q. w
7 a) |( L9 U8 b% \( y' u你需要做两次,正常购买和红筹股另一个人购买 搜索:
: q! |) A1 v- U9 j8 Z+ o* z% C( |4 \: C& W+ A0 a: z( V+ W; \1 \4 C
邮编: ar >> cTab >> nId>> nNum >> dwItemId; if( cTab >=MAX_VENDOR_INVENTORY_TAB || nNum < 1 ) 6 S' U7 t" {) J5 d9 J* y
return; 后添加: ^" N% n/ g* n, X
( `+ [0 T# K w3 H. e# a/ I0 c. X
邮编: CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser ); //CRASH if( cTab > 3 || cTab <0 || nId < 0 || nNum <= 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;
' i+ v0 O5 d, g! g% T- C! e } 并第一个评论
" ~$ Q" ^) g! t6 v邮编: CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
3 k9 W+ C4 A& v% C: y$ [$ H你看在我的代码。 掌上崩溃:( O3 F5 M/ W) g4 H' c
& ?# U; V, N1 z. J
扰流板:2 O5 u: o4 Q$ J% T) c9 [( A% ^
/ E8 I" K5 h9 E0 R a搜索:
' A0 p& c: q* G) C4 {6 S/ p
8 b8 G% d+ S) G邮编: ar >> nPocket1>> nItem >> nNum >> nPocket2; if( nPocket1 ==nPocket2 )
2 f) M$ ?0 H/ g return; 后添加:
( B# S( ]: H, N
* X' R. o7 y: q( l" k0 ^邮编: //DUPE CODE if( nNum <= 0 ) { Error( "CDPSrvr::OnMoveItemOnPocket : Dupe Try -> [Player ID: %07d], [Player Name: %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], [Player Name: %s], [Packet used: %d,%d,%d,%d]", pUser->m_idPlayer, pUser->GetName(), nPocket1, nItem, nNum, nPocket2 ); return; }* _& b! s. r/ }8 v
对不起,英语错误,因为我brazillian。
% E% }" Z( g) C4 ]5 G哎呀,我喜欢,如果有人traslate德语。
0 D& C: I8 }4 {" _% okkthxbye。
5 E- p$ Z$ [# r9 b7 r! b4 I2 W, G |