嘿COM,2 t$ G* f |, E7 V" w$ O, J& t ^/ u% y9 G
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。! c" c6 n' Q# P* k" L
后,整个看起来像这样:6 j. }" ~& N5 S, z" e3 A7 M- X
2 d. X1 x9 b1 v+ ^4 j0 a3 J. D& L! F/ T2 q# |
可我第一次补习,所以如果有批评,请说,从而提高自我。& }6 V' e) m, d3 k5 N: K
我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。: y6 ?6 I: |6 J; Q, o7 k, B
, U( p! q: N1 w/ x. c' w9 F8 r
所以,当你第一次打开了FuncTextCmd.cpp和搜索
" A) X6 s; R+ l
8 O6 @' b% Q/ L/ ?, k4 ^7 ]( Y9 y代码: BOOL TextCmd_System( CScanner& scanner )
1 X7 h8 `+ D" M8 K在那里,您会发现:
. J& j# C8 y5 r+ @6 {代码: { #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; }
7 M. w: ?; R$ W7 R9 i现在我们引入一个新的变量,我只需调用szName的
# O4 x4 z5 J( `, N# K$ J0 [那么整个事情看起来像这样:
, B- P z* M* K* V. i* s6 j代码: { #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; }
5 t' \# b0 K* }/ A) G8 I2 N: J. L变量我们也等于“[”拯救我们以后的工作XD3 s& H+ {6 \# y: m% g1 B. |
; z/ s" x. i7 g3 Y6 T: `2 `: E
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。
& Y4 U8 |' Q0 K. T8 G7 @; G6 a' D; G
整个事情是这样的:
& @7 Q2 m9 ^& q, \& U7 r7 u$ L代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; }
" ]' f8 c( d' c$ K( b) S/ _并提出了下列:1 \3 v/ A l1 e4 j0 g& V3 I& \
代码: { #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; }
6 j" _7 b3 p& T' R* h现在,通用汽车应该喊这样的:) l+ d# }: }% y# I: c" i! g3 J
代码: [GM Information][NAME] TEXT . y% K: ]9 k5 R3 a
现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:
- x9 X. ~/ Z: c代码: { #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; }
; I4 b/ x! ?. n" ` w7 r5 E9 ^如果你想不仅为管理这一点,你必须始终/ d; A. Z9 B) Y2 n1 `& G, j
代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); 8 }& P$ D( } [$ y9 C+ n
补充。7 |9 V- v- ^! q9 h7 r, H0 e
2 b* d1 n' {( _; O% O# c
/ E0 e) |) y; J `下面是与使用/ SYS解决不同的授权清单:* h; s/ T2 h5 T
代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
- d! Y% H+ s' M$ d& ]3 m3 O希望你喜欢指导,批评是欢迎的。3 c1 E$ O2 v+ W
& R& V6 N6 `; \% \* |+ t& ^3 c制作所Pumbaaa / S* o( i5 a, j. z2 G) u/ K4 `
|