|
嘿COM,
( {" F% |3 x/ s' G* v8 T( F N1 R2 C6 FNEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。
; b$ N) o! X0 T( L后,整个看起来像这样:
7 |3 J8 x8 _! N# X4 {, H
& o3 r, C$ k9 f, L+ A* f! B9 T' a. Z! O, A2 s ?6 x* s
可我第一次补习,所以如果有批评,请说,从而提高自我。
! |2 y6 v4 x7 t6 S* e; q( i我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。
+ { }- K# w2 H: {+ C* {' M9 {3 g0 @1 ^/ ^3 Y; w3 \7 [( @
所以,当你第一次打开了FuncTextCmd.cpp和搜索: |4 [ f5 T" b& j' {
: U s% E0 N Y. I( {, ]! ~# H代码: BOOL TextCmd_System( CScanner& scanner )
' K! ~' h( g' v在那里,您会发现:
, t+ I7 ^2 t; j( J& W' r代码: { #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; }
z6 |( f! G) D( C0 \现在我们引入一个新的变量,我只需调用szName的' l8 f7 R$ k# m. t3 ]6 r
那么整个事情看起来像这样:1 e8 e" l; z! T0 \+ W0 \- f
代码: { #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; }
' _, O. i6 e. z: g K: h; i变量我们也等于“[”拯救我们以后的工作XD
! r. J5 j6 C% O5 r: q7 q- |6 [" |4 Y) U9 F7 t8 f% c
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。4 h( N" Z( U, y2 z( g
/ J* x4 K8 x+ V/ p: C8 O整个事情是这样的:: K8 l- y7 G0 H9 Z5 S2 q
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } . V ^$ y9 ~3 x) U2 @
并提出了下列:
% y% {$ @7 _" w: B8 y) d# H" C# t+ A代码: { #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 G |5 h$ O* h7 @* n现在,通用汽车应该喊这样的:
/ c C G2 G+ r8 x" d0 Y代码: [GM Information][NAME] TEXT 0 }8 i# }: Z9 G$ e7 s, `0 ?2 J
现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:/ q$ p( I' o' X) |
代码: { #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: Z8 X% i) Q2 ]
如果你想不仅为管理这一点,你必须始终
' ~) U# W% T( c& J5 q代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" );
& H9 p* |1 L1 y9 k& C- Z补充。, s6 D1 {# V/ [& _: t2 E) B2 v
- Y+ o( u3 v2 u6 ^' f7 M& L& F, Q; L/ o8 v8 O: {
下面是与使用/ SYS解决不同的授权清单:
7 D! e: J* S' _代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
9 g, W& K1 R2 ^4 U5 D希望你喜欢指导,批评是欢迎的。
$ O' M/ P" }, J' f6 ]2 z
2 F) ^- G" H9 j2 M) F. e) C制作所Pumbaaa 3 C t) e) F/ y" H
|