|
嘿COM,
" U, E' R# @ T! g p$ BNEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。5 Z# t. U" r* s. d) D* p
后,整个看起来像这样:
( l$ z( @% J6 r/ {" I
! b$ n1 s1 h2 p/ I
3 [# C. ]! z+ C6 H' R可我第一次补习,所以如果有批评,请说,从而提高自我。# a- R I0 F4 U: r
我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。; l2 A2 [- U2 p2 X, s- H; C. e4 S
1 _* t' g S- R7 z所以,当你第一次打开了FuncTextCmd.cpp和搜索
5 O7 d! e* Y, @: \( g$ R
) X1 K+ ~/ c# I: S9 A0 k: n- A7 s代码: BOOL TextCmd_System( CScanner& scanner ) ' b$ B/ k' D6 Q$ J* r# W
在那里,您会发现:* T' n9 [+ B U, P# _9 H
代码: { #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; } . I: r$ ?4 ~% C% W9 ]! B
现在我们引入一个新的变量,我只需调用szName的- v9 }9 p- o& X8 R9 t& m3 m
那么整个事情看起来像这样:
6 x6 ^# ~" ?; v$ A代码: { #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; }
/ |- G: a7 f3 ^; q, w变量我们也等于“[”拯救我们以后的工作XD$ f! ^. Y }( z/ Y+ `# a
9 ]7 ]" C5 |$ V1 E1 T然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。
4 C6 p! O- @7 A: u
$ p: d1 O( m% q: T) I: C整个事情是这样的:
, z; r) Q2 g- `4 _/ o' h" O6 t代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } % q, @+ e! C9 Q: `- {
并提出了下列:
, M; P- L6 m& B代码: { #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; } * Z! i, |" K3 r: p$ r" y
现在,通用汽车应该喊这样的:2 Y# b7 y" o1 A2 _
代码: [GM Information][NAME] TEXT
/ b; G# ]0 [& V# p现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:
$ j6 R; Z$ t. a) 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; }
1 P, \8 o9 P* l5 o如果你想不仅为管理这一点,你必须始终& K+ v" X2 r2 ?+ h- v
代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); . |+ I. j, P( D$ d6 [9 |6 s- T1 o
补充。- ?; i. X8 e1 ? ]1 R9 [( v; ]
- d% s# @7 D' D* B1 {; Q# b
# V% x2 B; K! K5 D$ Q, o7 z
下面是与使用/ SYS解决不同的授权清单:
# q# V+ L- w: U& |) e代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
' x( y, s6 `: t7 A# V: ]. J/ _1 j* X希望你喜欢指导,批评是欢迎的。
& G% e/ J. B, y3 f# k Y4 ~/ u3 [, t5 K
制作所Pumbaaa
, U a# @, x/ ?8 M1 [5 f |