嘿COM,6 D$ h6 K' o' \
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。
% z8 L! s* _8 Y. Q) M后,整个看起来像这样:
; z$ `: ~, G! E2 T4 _- \5 ?& U
3 ~9 |3 m. _3 y' e1 u" ?* H0 k0 a7 d5 v
可我第一次补习,所以如果有批评,请说,从而提高自我。
6 s9 d5 b( J) }: t+ ^我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。
0 G1 _( o' L9 _ W. O, d& b
( J/ m' N- {# y# G/ F所以,当你第一次打开了FuncTextCmd.cpp和搜索
1 I+ M0 b6 }. `0 e# `$ q5 B4 v
代码: BOOL TextCmd_System( CScanner& scanner ) 4 R" C) V4 Q/ A: I' K
在那里,您会发现:& }- c' Q& V% E8 w8 n6 z, b8 t
代码: { #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; } + z7 @+ ?4 P9 P* b% q
现在我们引入一个新的变量,我只需调用szName的
& w! r8 i. E" _1 Q; F$ X1 ?那么整个事情看起来像这样:
+ g, K% P& L2 C, ]- b @/ J代码: { #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/ |1 |% E W& M3 r6 @; @1 ]
变量我们也等于“[”拯救我们以后的工作XD
0 L% }- u1 F$ ~2 a* s- }9 ^+ t5 G8 D
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。
' R6 D+ n$ a8 ~! [$ E1 @- ]: k$ g9 S1 |1 b* u
整个事情是这样的:
0 Z. Z: I- w7 m2 G" k' Q% V. L代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; }
9 [5 o1 A, W9 i1 l并提出了下列:
$ m) T$ ?- k+ p* y& [) d) ?代码: { #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; }
v6 B+ w5 e. p2 b" W- H: ]) r现在,通用汽车应该喊这样的:1 q8 b6 ?3 b, y4 X' }- w
代码: [GM Information][NAME] TEXT
: W, @- ]- R) S ]/ q! _! e: v现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:& {! B( S. h [5 V" v( m
代码: { #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; } " a0 r7 P5 l5 a1 W0 ?8 N0 B5 e; p
如果你想不仅为管理这一点,你必须始终
1 B2 e/ [% O- v0 }2 E9 g代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); 3 n* ?- h. K" ~6 G/ X
补充。
) v3 V4 j, W5 j- Y7 U h! v
# k- W; z$ D6 s; T U1 f: k2 p; H( e- m) U9 B$ \3 o) ?1 V3 `
下面是与使用/ SYS解决不同的授权清单:
9 ]; R" N2 q: U. N3 E4 @( T代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
& f; _' Z+ Y0 }4 }: E) G希望你喜欢指导,批评是欢迎的。
* L. B; z2 |) E1 t
' P+ P1 w8 z" q+ C4 G/ a" ^1 Z- M制作所Pumbaaa
7 h' `: M7 F0 W2 E |