嘿COM,
4 c `- s# G3 X0 Z/ h, cNEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。* q1 E; Y* B6 H
后,整个看起来像这样:3 X( j1 ]# j) ~2 U* K/ @ T
- [- r6 ~ I8 Z$ h% v
5 x2 _% c* E# O$ R7 T' V
可我第一次补习,所以如果有批评,请说,从而提高自我。
: L) u) u9 \+ u0 \7 n3 k我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。 j( P J: ~$ V
/ B7 A" c( B8 y* d1 z* b! V5 s
所以,当你第一次打开了FuncTextCmd.cpp和搜索; `5 p7 y+ U0 i2 C6 s
9 K/ {& W* N6 r8 w
代码: BOOL TextCmd_System( CScanner& scanner ) # q( b: ^- X9 t' G
在那里,您会发现:
) g* q5 _& P, Y! x1 y3 z代码: { #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; }
( F# o2 R4 Q7 {. v) l现在我们引入一个新的变量,我只需调用szName的: p1 W; W1 v1 S# C8 T5 s* P/ R
那么整个事情看起来像这样:$ J% k# v. k. ~; `- l
代码: { #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; }
7 ^' R: X3 i ?# E/ D) G9 k2 G变量我们也等于“[”拯救我们以后的工作XD
% B5 ]$ T6 C* k+ _
3 W) @% i+ S( Z. B2 i然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。) B/ m6 ?' v q; f0 m7 @
' a) Z) N5 D5 w, O, ?
整个事情是这样的:
; E, g7 q+ H+ w D2 ]4 r代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; }
. L- [- n0 _) I- o, U0 N并提出了下列:
! d# K' l ] m1 u4 O代码: { #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; }
+ r2 ^! ]/ o8 k现在,通用汽车应该喊这样的:
) X# v2 x' U. X2 H& y/ o3 x代码: [GM Information][NAME] TEXT
! Y0 x3 \- `4 O, G现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:0 c8 x/ E* A3 Y2 w5 E2 B8 o
代码: { #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; } 4 o$ i3 u3 J! I
如果你想不仅为管理这一点,你必须始终. \0 Q' u/ s% S$ E
代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); + M/ F m5 x5 n3 o& M; g
补充。; ^, U$ V, l. o9 H) e# b% g
: B: I7 h8 u: \! n' i* |$ C5 V: t! }( K( f- d& n3 O! W* @( \/ k
下面是与使用/ SYS解决不同的授权清单:2 j3 L' ~, ~: A( @% p
代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator + a2 ^! A( s2 B* c
希望你喜欢指导,批评是欢迎的。0 F4 R; E( H: @
; v# g; d# l4 u6 Z2 p0 N/ L) z! R5 M制作所Pumbaaa
8 }' R% S2 u4 r5 S1 b |