|
嘿COM,
( p5 h3 p, J% `3 p9 D5 HNEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。
) H$ \7 J; m! I6 R% n后,整个看起来像这样:
4 K5 B% W9 ^$ z- F1 V; L% O3 a7 m ' u- n6 y8 Z5 n/ j% |/ X
( I; z" V' c% K7 x: ^
可我第一次补习,所以如果有批评,请说,从而提高自我。
* r7 @6 h: h) a- W" N% R8 a我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。. X: w1 A* O! P0 Z0 d$ P! m( i
1 J' ~# s* {( a" u, t
所以,当你第一次打开了FuncTextCmd.cpp和搜索4 F1 R) h4 @* j% m
3 H) D0 `- T6 j6 C# i. k
代码: BOOL TextCmd_System( CScanner& scanner ) 6 c! Q6 q8 f2 p- m R" D$ F
在那里,您会发现:$ \4 E- S) _7 W I! m* A1 Q
代码: { #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; } 3 ?% S- Q8 n2 T
现在我们引入一个新的变量,我只需调用szName的$ R& z* m: n i1 g* N# p* {
那么整个事情看起来像这样:
3 T9 O3 [) }* ` P! \, e代码: { #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; } ( b9 ?7 t4 j) B
变量我们也等于“[”拯救我们以后的工作XD
, v+ u C4 d, {$ K+ C5 N L( g$ E- S* t) C2 y. K# ]
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。
) V0 r2 p) l! T$ c4 Q6 l" J9 C4 m6 j- K
整个事情是这样的:5 [- t H; o, B' ?
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } ! v& [5 D/ y( Q
并提出了下列:
! r! c( r# ?0 e6 k s7 c' u9 M代码: { #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; } 5 [( |- i2 f) u7 R5 w. }# Y9 w
现在,通用汽车应该喊这样的:6 b9 `! r2 K' q
代码: [GM Information][NAME] TEXT
" F( c$ B! R' N- ]& K: ^, Y# z现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:% b+ g0 X2 d* ~( y# n, q }, E5 H
代码: { #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; }
( p2 e2 w6 W/ G4 w& O: }如果你想不仅为管理这一点,你必须始终
) @' m. p9 N+ \# R2 [; |* @" g代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); " z8 ~# L A& b |* M$ n
补充。
( S5 n7 v$ O5 ~7 d! J9 b
, I1 g8 J& G# l% Z& B
0 _! L$ \4 S& \1 d下面是与使用/ SYS解决不同的授权清单:
, G& |/ y, d8 ^1 k: l y( p: ~. \代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
9 F" M4 N, ~6 Q4 a9 v! \希望你喜欢指导,批评是欢迎的。
: t( M: \. j6 d' U
* i4 h* x+ m! x3 l: ^2 p- Q制作所Pumbaaa
5 M4 v3 _. ^2 l/ Y; M7 T& ~4 l6 S |