|
嘿COM,
, b' ?/ @, Q: L- VNEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。6 ?) ? W$ _/ E& d
后,整个看起来像这样:. r+ a$ D- k( W
2 p9 p/ _7 X! F0 O- [3 i$ M: \' {; O- K+ l
可我第一次补习,所以如果有批评,请说,从而提高自我。
5 ?* O; v; h- Z! @) b; `我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。" B+ U( I `$ O, @& T; k, X
6 R$ O v2 `( _' J3 ~所以,当你第一次打开了FuncTextCmd.cpp和搜索
' g3 k% V- W: ~3 v4 G/ t, K2 Q6 t2 _) b+ ?' X2 O
代码: BOOL TextCmd_System( CScanner& scanner )
V, \* f V* j0 F在那里,您会发现:
( M+ o- |$ W# F' b% y9 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; }
9 x9 H. w* l& I4 u! k0 q& ^现在我们引入一个新的变量,我只需调用szName的+ x6 p# E5 T: H
那么整个事情看起来像这样:! q7 G" }! S6 x
代码: { #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 u1 z, R% `; }8 a- k0 a* l( h& _
变量我们也等于“[”拯救我们以后的工作XD
- }; h. Z* f- W' i2 G- `3 v) @$ I( w# Y( e- L, J: q7 G5 g O
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。1 `- J) `6 n- l; c2 x
. F4 N8 Y8 H4 ?2 E整个事情是这样的:
7 N0 _) O4 T. m" D; {) V; z! R代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } 3 d% s$ }+ n6 q& M8 i
并提出了下列:" V( p& e' \+ o; a/ q
代码: { #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; } 4 d! [ `( h9 Y* K' n5 o4 X
现在,通用汽车应该喊这样的:3 F1 H/ O$ t# ~4 ]3 O. f; K J
代码: [GM Information][NAME] TEXT , A+ u8 ]$ o$ S: B$ `6 z
现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:
2 \* F q4 F1 Q1 x4 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; } ( l, L' ]2 f( P1 q
如果你想不仅为管理这一点,你必须始终& ^% H; Y8 `8 T8 g& Y1 `% {% w
代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" );
0 } [, h+ N$ q. J( }, t补充。
- D3 T1 s% U; r z5 s* W6 M) n# I, N% j9 G- c
Q: h w7 \8 q% S) ^) C
下面是与使用/ SYS解决不同的授权清单:! f- K0 E2 G4 T8 e- U2 b$ G* [
代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
" K: o: o h5 Q" B2 X希望你喜欢指导,批评是欢迎的。
! O$ A4 y7 E. X* E/ H4 s7 g W5 _- Z+ ^% J; X o) N
制作所Pumbaaa
' E" @& p; h# I0 x' u3 } |