确定的家伙,因为我已经没有任何关系,我将释放如何阻止每次崩溃/欺骗数据包,并保存的ID /绰号的家伙试图您的服务器崩溃。 " y+ u" Z1 K3 g! c& n
2 n; \: w4 H8 d9 ^5 \& k首先,你需要有VS.NET2003 Service Pack 1安装和飞飞来源。 ; d* w5 `; r- t% ?* U$ s* ^
* d1 X2 w# H! }+ Y# i4 q为了阻止这些数据包,您需要打开位于worldserver文件夹的DPServer.cpp。 1 G1 @5 m2 x( `$ j
$ i2 X$ p" t7 ?) ~Equipament崩溃: $ n* R# d! v5 A
扰流板: 8 }% m' n% x" U
) M+ ?) r+ _6 k* |( J5 c$ j+ U' V m搜索: ( Z' B8 F6 D2 B
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 ); 你看到在我的代码。 . v9 c- c1 P" L1 V* r& b) [) r$ q8 H, M
1 W9 q- g/ a8 Q7 v6 {- v. ^2 O# P6 c
购买崩溃: ' V& _& l: d) k5 b/ |8 ?8 l
扰流板: ' L( t: M- e4 x4 ?- ? g5 o' i2 n
! w6 C% E, w2 F J, EYOU NEED TO DO IT TWICE, ONE FOR NORMAL BUYSAND ANOTHER FOR RED CHIPS BUYS (你需要做两次,正常购买和红筹股另一个人购买)
' z( K) t9 u' }1 N9 C# y# @. W4 V寻找
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 ); 你看到在我的代码。 * u. m! b+ v" f J% `7 o3 V
! ^/ w3 X! o8 ^, n& _; f7 d$ r7 r, V# `6 I% X
掌上崩溃:
3 E+ `* J' j3 ^扰流板: 6 m7 m# M2 j) z7 B
0 y- G' ?5 X+ ~( A6 Q* h5 A8 |搜索: 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; }
, K0 |" H- q( U# e$ m/ i/ H& ~- v6 J/ |$ k
对不起英文错误,因为我brazillian。
& f. K' [, ?4 W5 O2 Zkkthxbye。
' ~. I7 }( _& u1 k
1 N7 J$ ^2 ]/ M1 V & k! a& _3 c/ Q8 ~, y' P: e6 y) b. W
|