嘿COM,! K; }& B. w/ z& D
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。0 o+ H( Z# I: Z7 M; Z% D9 q4 |1 [. E
后,整个看起来像这样:" i# T7 i1 W4 q9 t, n
8 T3 P+ Y4 H# b! F& J: x; E" B" a* @+ C: v# |7 X
可我第一次补习,所以如果有批评,请说,从而提高自我。
) s) A3 q! f% } l; _- l. \5 x" e* p我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。
9 i- v0 F8 {2 }7 ]; A; V3 e% ^/ e1 ~6 N8 m# P: b0 u5 j+ q4 P; C
所以,当你第一次打开了FuncTextCmd.cpp和搜索% Y8 j. {+ C" c. w& q' G
$ y# t0 f9 c8 w- ^- _代码: BOOL TextCmd_System( CScanner& scanner )
& l+ j: h. [/ H: H+ L% f2 f在那里,您会发现:' p; ^4 A, r0 q3 O! 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; }
. n* ~. x" G' ?$ H0 q) j! @现在我们引入一个新的变量,我只需调用szName的( @5 p7 x7 ^* P$ @& D; @
那么整个事情看起来像这样:
8 q0 a$ F& x/ J3 F( I# C代码: { #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; } : l5 V" r+ r! e. s, T2 t
变量我们也等于“[”拯救我们以后的工作XD; m4 H! L) X8 i9 w9 j4 ^4 e; n/ w
6 v1 D+ o8 z5 V9 ]/ S( k2 \然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。- C3 {% E* Y5 j8 S V
, ?6 J7 q2 {5 G, B% U' [* {
整个事情是这样的:; f( ^) m/ o7 B( m, f D- F- N) f; q
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; }
8 f& {$ a; d' @- Q @) T4 S并提出了下列:$ d4 P( a& J6 R; n4 M! d9 e
代码: { #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; } 0 W3 R5 r% ^( q3 Z
现在,通用汽车应该喊这样的:
3 J0 A& y8 `3 ~' f代码: [GM Information][NAME] TEXT
4 J% f$ s c2 y2 C) B. p1 p现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:
5 R2 Z! Y$ F7 z7 c代码: { #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; } 7 @7 y, H' t7 z7 X' _2 K
如果你想不仅为管理这一点,你必须始终# ~2 b$ _4 T6 g( K. t0 r
代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" );
4 O) N/ B+ M) Z) W补充。7 x8 ?6 b% y% H3 n+ K
. Q `% |& Z9 g7 G7 {* u! d( W/ Y- Z- H7 f2 C e1 A
下面是与使用/ SYS解决不同的授权清单:
* Z8 X/ R9 ~7 w" s" R; Q代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
/ N! S2 A( |- k* ]% y a3 P' \3 L希望你喜欢指导,批评是欢迎的。0 P$ j3 C: X9 n) ^3 i
1 T! K9 M0 h9 W
制作所Pumbaaa 1 g0 \" k9 N; q
|