|
嘿COM,3 s* ?3 w- s u+ V1 T& e
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。& q3 o) E3 a* T! O9 I
后,整个看起来像这样:( w& g$ d! R1 N3 u
: N/ t# W, ^" g( b6 I6 n& A$ ~
6 H% q8 Z' H7 q4 r8 Z: z
可我第一次补习,所以如果有批评,请说,从而提高自我。
2 \8 W% x( U: d! I2 j1 ~( v我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。, q: X& Z) z" p( N* v i
( x) G y U2 ~, c' W
所以,当你第一次打开了FuncTextCmd.cpp和搜索/ |$ ~3 A; f( a4 t& Y) y
( t- c' {/ J7 D+ x5 V
代码: BOOL TextCmd_System( CScanner& scanner ) 7 X2 n. m/ C% I1 Q8 @
在那里,您会发现:
7 [* B: q3 s' c2 Y代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CUser* pUser =(CUser*)scanner.dwValue; scanner.GetLastFull(); if( strlen( scanner.token ) >= 512 ) return TRUE; strcpy( szString, scanner.token ); StringTrimRight( szString ); g_DPCoreClient.SendSystem( szString ); #endif // __WORLDSERVER return TRUE; }
" {% O$ _6 n$ g2 h! G现在我们引入一个新的变量,我只需调用szName的. H; @ m+ y, |
那么整个事情看起来像这样: t" I2 ^4 t) X e+ q
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHARszName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; scanner.GetLastFull(); if( strlen( scanner.token ) >= 512 ) return TRUE; strcpy( szString, scanner.token ); StringTrimRight( szString ); g_DPCoreClient.SendSystem( szString ); #endif // __WORLDSERVER return TRUE; } ; E/ P! A* n* J) T3 E
变量我们也等于“[”拯救我们以后的工作XD/ c& j" h }: `: l( c
\6 w/ |0 @1 }, |4 k5 N
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。( u0 w$ m; H+ P1 X! I
6 |& I) z+ {5 q
整个事情是这样的:
0 e2 `% Q; p2 L# H0 T# y- L代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } 4 B% `; D" D" |; k
并提出了下列:
S0 E* Q) {% j8 @+ ]; g. R代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; strcat( szName, pUser->GetName()); strcat( szName, "]: "); scanner.GetLastFull(); if( strlen( scanner.token ) >= 512 ) return TRUE; strcpy( szString, scanner.token ); StringTrimRight( szString ); strcat( szName, szString ); g_DPCoreClient.SendSystem( szName ); #endif // __WORLDSERVER return TRUE; } & E9 u. x4 I6 E' y4 y
现在,通用汽车应该喊这样的:
! V# e* F9 I# j+ G4 _% i5 j8 G" y: ~代码: [GM Information][NAME] TEXT
! a: w, N7 Z+ `. L现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:. i2 A$ F; U% U. `
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; //FüR ADMIN if(pUser->m_dwAuthorization ==AUTH_ADMINISTRATOR) strcat( szName,"Admin][" ); strcat( szName, "TestGM][" ); strcat( szName, pUser->GetName()); strcat( szName, "]: "); scanner.GetLastFull(); if( strlen( scanner.token ) >= 512 ) return TRUE; strcpy( szString, scanner.token ); StringTrimRight( szString ); strcat( szName, szString ); g_DPCoreClient.SendSystem( szName ); #endif // __WORLDSERVER return TRUE; }
1 l0 Q" ?6 e X: V0 G$ y0 S如果你想不仅为管理这一点,你必须始终# I* Y& e* D$ }9 [0 L
代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); ' W9 f6 w* \: ]+ L$ o
补充。+ L" b6 {5 ~3 k' [
: G- c- a' k) S0 ?
) J' z" I7 u. s下面是与使用/ SYS解决不同的授权清单:* d/ v8 M' p, D4 M
代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator % `/ x# V9 B+ z: W9 ~
希望你喜欢指导,批评是欢迎的。3 @0 ~( |& X' \* g
* H+ Y! i& F! k' @2 L制作所Pumbaaa
1 L( m3 @& u! _3 g |; t) Y |