嘿COM,# d% v2 }# D5 P# d* _
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。
, O( _7 H0 W9 f* o4 p, |后,整个看起来像这样:, u" A5 `8 h' h& z8 j9 l, Q* u
8 d) V2 a4 L5 V0 u1 \9 @
! O+ t1 p+ Z p0 V0 E h可我第一次补习,所以如果有批评,请说,从而提高自我。
0 k! R4 L* E/ S我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。
0 d9 {4 i% g' i4 u( c: q
( {: q5 v( \( L# \; I ~. w( G所以,当你第一次打开了FuncTextCmd.cpp和搜索
; F, e" _9 }: x4 e! W
9 p2 b( l& D1 A4 ?, {代码: BOOL TextCmd_System( CScanner& scanner )
* n9 P n* A1 y; Z在那里,您会发现:
5 d' P( R2 d7 a" e代码: { #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; } : X) @$ u/ G3 R" _ ]* I' Y
现在我们引入一个新的变量,我只需调用szName的
" ]4 u5 h8 r4 C- a8 `8 v- I. m) V那么整个事情看起来像这样:
6 b6 @) N( ^ h/ 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; } * E3 \! S( E- g9 x/ {8 E
变量我们也等于“[”拯救我们以后的工作XD
5 f4 e% J- A7 i. l7 z; ?% S/ m8 {
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。+ t0 E* n1 r' D
- ?, g7 R; `9 H
整个事情是这样的:
$ @* c0 I3 \' w6 c# k/ _代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } . x4 J: V! Q( @9 I
并提出了下列:
5 Y; e3 F( a- W. \9 p代码: { #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; } * t; L% E) K8 V6 J9 V$ O
现在,通用汽车应该喊这样的:3 Q$ r1 B* O! I0 q+ ^0 ]2 w
代码: [GM Information][NAME] TEXT 1 p: a$ ^4 [& r8 X9 U7 e, C
现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:
9 M7 N) |# C1 z4 V代码: { #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; } 3 L: ^& k+ q: r/ Y! t" c# b& v
如果你想不仅为管理这一点,你必须始终
" M! }; R9 R* ?2 z代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); 1 z/ ?) u- \' z$ Q7 b! ]2 D/ x
补充。
# r' _) K6 v- d
; f! g7 e! o* t3 ^5 `
, C% M8 V: _- p2 W2 n下面是与使用/ SYS解决不同的授权清单:4 W, [$ I$ `( B) N# |) Y
代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
O. B0 M+ l$ \. D6 E希望你喜欢指导,批评是欢迎的。
. a! \. [) V! Z9 E' E0 s4 E# w& @- W3 e& I; R7 r+ ~5 h; W1 \
制作所Pumbaaa
' l" R. {2 Q5 l9 M4 ?1 i- J G. U& ? |