嘿COM,7 U6 C1 A* Q) W! D
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。
& |! {, H: k: l; k后,整个看起来像这样:
" M/ G1 ~9 B$ t4 x* o C+ ?8 H8 I8 D% y* X* y
& K- f, O5 m [3 e
可我第一次补习,所以如果有批评,请说,从而提高自我。0 U) h$ d6 h/ M! J x* _
我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。/ f$ x# W1 B. h- T. \! ?
% p/ J9 u/ I) |( Q
所以,当你第一次打开了FuncTextCmd.cpp和搜索- j |0 b. `5 S9 j, {( g
: Q- ~& o3 b* C
代码: BOOL TextCmd_System( CScanner& scanner )
& d6 h' f$ Q. M! z. S0 p在那里,您会发现:
( ]. ~; p9 J2 Q- @代码: { #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; }
+ t6 I: m3 H- a3 O$ x& k现在我们引入一个新的变量,我只需调用szName的% }! D/ U4 H/ P4 _: @; G4 q
那么整个事情看起来像这样:$ K, e U4 B2 O; `' A3 R$ B: y
代码: { #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; }
( g9 M# ^% y' ]/ r2 S. E$ _变量我们也等于“[”拯救我们以后的工作XD2 v) v& q3 O. ]
) p; W) A3 a$ _( H" C; ]9 R
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。
& H- { u) F( _/ k+ q6 I* h0 \; d
整个事情是这样的:" E9 f" a2 Q( U0 k `' V
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } % C+ E9 ?! T) x. o! _& e* V
并提出了下列:
9 p. n8 @- X/ v代码: { #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; } 1 q1 U9 d% I' H8 F# F
现在,通用汽车应该喊这样的:
y, g* M# v% a* z: h$ w代码: [GM Information][NAME] TEXT
7 i. i! @* P& Y2 B现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:) g' y0 K( h) D$ w* R. [
代码: { #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; }
5 P$ P; ~! k* O如果你想不仅为管理这一点,你必须始终
% |) ~& e! _' E! u) E" A% A代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" );
7 _6 x& \2 S+ M; F6 `- P7 |补充。
) O# e" |8 M! W* K
) Q1 }+ U' i( L6 p2 K2 l ]. h# c, |' P( U. F& F
下面是与使用/ SYS解决不同的授权清单:" K7 u: {/ [; e& E
代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
) @4 q% U* @0 D: Z5 H V希望你喜欢指导,批评是欢迎的。: R" L% t& K, j# _
5 s1 e+ K, P5 H/ j" K& e制作所Pumbaaa 1 I9 C# A, ^9 J2 R$ W' r4 k
|