|
嘿COM,* u3 O. `; o1 b; D! |
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。
- b$ ~2 X/ y5 S, c- f% |后,整个看起来像这样:
9 s) w: ~. j1 x b) K
- w2 z6 ]; n, @
% E, W) h. h! ], l可我第一次补习,所以如果有批评,请说,从而提高自我。
% p* y% i) O% N9 [/ P我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。
7 L+ o: t( T# a: t$ T3 j4 x- F5 ^
! T$ j7 Y% {0 ]1 S6 Y所以,当你第一次打开了FuncTextCmd.cpp和搜索* N1 N8 W: u- g* M
* f6 c( f8 \, O* v
代码: BOOL TextCmd_System( CScanner& scanner )
8 l) \' U+ I# e* Q在那里,您会发现:
; N; u2 Z8 ]. 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; } 2 |7 z2 r1 e/ v$ t% \0 l
现在我们引入一个新的变量,我只需调用szName的: W8 y5 p6 [, E6 j& \
那么整个事情看起来像这样:- @1 v) n+ u1 K, g
代码: { #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; } ( A! C' i; F- {2 D5 k) ]! }- F
变量我们也等于“[”拯救我们以后的工作XD
6 M" I3 k5 ^- n( @( i% H& @
+ t- [2 u3 v7 k* I/ _5 h然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。1 l0 C/ L3 X% f& v& L0 V- @$ B( X" C
T6 U$ ?. P4 k# O$ s H+ K3 r整个事情是这样的:" U. J2 Z$ K+ }) s& G( U- k/ f
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } ) W! l d, {# d1 L
并提出了下列:
) }. m; \/ \" L0 q) T代码: { #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; }
' @5 l, S0 C* g+ V2 Z现在,通用汽车应该喊这样的:
4 w( J+ x0 p" [/ O2 T8 V1 U: ^- G( ~代码: [GM Information][NAME] TEXT ! K! G6 S/ e! s8 J( f) G
现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:
/ w% k3 ?# f! Q代码: { #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; }
' G2 b, @8 y2 a2 U如果你想不仅为管理这一点,你必须始终
w8 J; Q5 ]% t& P7 N代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); ! ?- b! f- s* N4 s' G, f" U% N
补充。# `- J. r' T. i' O6 ]7 x) u) P
4 g+ f" A% B; O! H/ ^& v) h3 w
6 p- T2 ]: v% Q) J) x, l- d
下面是与使用/ SYS解决不同的授权清单:
7 A/ g8 ]5 j6 `# i; x& g2 b3 L代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator 0 C3 b& Y- H" f% V. o7 F' E. m
希望你喜欢指导,批评是欢迎的。
( v' c G+ k+ o Y# R) g% W7 [% M: C' h3 e
制作所Pumbaaa
; V* }( O, i2 U3 O5 g. R |