|
嘿COM,6 O" X. B3 _# K# L0 x
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。 C" t4 F3 {* l$ H; H
后,整个看起来像这样:
" ]' X' ?* k# z! q5 ?/ a2 E/ ] / q, L9 u! a) w. a
5 e1 j2 r4 M4 \+ E' K
可我第一次补习,所以如果有批评,请说,从而提高自我。
5 {& r) H, F3 z4 _% R我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。) {" o ^+ Z4 p+ D
; a4 _1 W& m$ W% O6 f, L所以,当你第一次打开了FuncTextCmd.cpp和搜索
7 L* n H1 E% ]3 B) m
' ]& {% r" w8 k6 z代码: BOOL TextCmd_System( CScanner& scanner )
* L8 P4 k2 p; n+ ]" ^在那里,您会发现:7 L$ ]- P T; v
代码: { #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; } - O: {% p1 v1 u6 u
现在我们引入一个新的变量,我只需调用szName的
+ O O5 T( C# |1 M) G* G那么整个事情看起来像这样:
0 u4 {& b# O X( o2 r K. g' l代码: { #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; }
; n& x' M# L1 W4 l5 y变量我们也等于“[”拯救我们以后的工作XD
4 ~" {0 E! v$ O$ u4 ^3 h7 r7 w+ |3 \0 ?5 j5 B
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。
2 t5 ]; r8 ?( v
1 [, d; z3 {2 `; B, g1 l整个事情是这样的:2 I1 U" `# } I2 S4 U8 t2 [/ l
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; }
_! d; r- O" e) [4 A并提出了下列:
( U- E9 y9 Q5 E H% z, a; e. j代码: { #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; } & `% U. y( F) e' O- [
现在,通用汽车应该喊这样的:& |5 a! B) s t& g# v
代码: [GM Information][NAME] TEXT
+ _; L X$ u# @5 B' W$ n i+ A现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:: q3 p8 {! ^ ?, }
代码: { #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; }
! a' Z% H W/ E0 C5 L: B如果你想不仅为管理这一点,你必须始终
- S9 A+ x1 T# s* ]. ^1 h" S# o1 \代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); - J1 `/ ]* I3 I9 Q, ]) q+ h
补充。8 d: i& C3 P6 [4 d! }) @4 w) z
) I: I8 ]9 {3 v* N
" n/ v y8 {8 ?. D9 b
下面是与使用/ SYS解决不同的授权清单:
2 x1 U# _% H4 D! H1 l& }; g代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator 2 P2 p' G# y3 T0 u
希望你喜欢指导,批评是欢迎的。
! E# l2 }$ `- t# a) u1 j* l* ~
5 x+ o: U) @' i制作所Pumbaaa : t7 {+ x9 b# t: x, M. s3 C3 r
|