嘿COM,
0 i6 y9 b7 r) K& jNEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。
9 p9 e+ w5 c' D% g后,整个看起来像这样:: I( a0 q5 E5 U) K" n. F
2 k. @7 `4 c- Y7 ^) T- f B) g
' `; U, ~3 h. V
可我第一次补习,所以如果有批评,请说,从而提高自我。7 h# |; N U1 [# _! T0 `# i1 J9 D9 D
我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。
% {( S. S. j9 E! W
! k h6 E* i% i4 F6 ?# Y所以,当你第一次打开了FuncTextCmd.cpp和搜索
; m6 t+ P% O5 f! r! t6 l4 h/ E4 L
代码: BOOL TextCmd_System( CScanner& scanner ) 4 [- W6 r- {( N' P
在那里,您会发现:! \, J- `" r. s
代码: { #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; } & | _8 ^6 ]1 T* D( k
现在我们引入一个新的变量,我只需调用szName的
4 b! s" G: _( M8 D7 h8 c7 ]那么整个事情看起来像这样:# b4 c/ Z* Q( u2 ^) D
代码: { #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; } 7 j6 r$ U$ L- A' D0 g5 u+ W+ i
变量我们也等于“[”拯救我们以后的工作XD5 {. s4 C: U/ G2 d/ R. d/ B
0 s& [) W6 J+ E2 W0 D$ B
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。- I# G' p# M1 Y% s
4 c' ^& N5 i4 \
整个事情是这样的:8 F0 C* }# \8 d- }6 X* g
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } 5 @, ^+ m4 Z& X# U' p7 m& b5 E+ j
并提出了下列:
' h t: x! F% O8 V a8 `; w代码: { #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; }
: f' O1 C9 g& q* K7 F2 v' ]+ e现在,通用汽车应该喊这样的:
5 F5 l/ g5 @0 Y5 T0 c6 m代码: [GM Information][NAME] TEXT
1 v3 X/ e, W) Q2 ?现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:) s0 Q4 g) K4 y% }% w& }5 g, r
代码: { #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; }
0 K$ U' G6 Q6 [* f0 c! j如果你想不仅为管理这一点,你必须始终
4 o; J7 [! V( T& D代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); 4 w, Q5 q( k; m, U3 G7 r% n
补充。" Y5 @3 c! N G- o: W4 U
! l* W6 N- I% J8 i) h7 Z7 L" @
0 A1 \2 U( @5 _; i. F8 x
下面是与使用/ SYS解决不同的授权清单:5 Z- P. X+ b F" p3 x* b
代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator 7 W* g& {3 G# u9 h2 K
希望你喜欢指导,批评是欢迎的。
1 \( V! _# u" i: L5 F5 }! o& z& Z( r- c6 H9 l
制作所Pumbaaa / a& x2 O" }2 m8 _! P
|