|
嘿COM,
5 V% t5 L. p" k- a+ y; B `4 r7 `1 sNEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。
% i1 t+ t0 j1 d7 m/ H后,整个看起来像这样:
# x0 k1 ?$ [& l+ R# i2 G 9 q# ]) ] H: S
- F, w% f% {9 u# B
可我第一次补习,所以如果有批评,请说,从而提高自我。
9 \, ^6 H4 x% i& ] j我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。
3 T5 c. }& q) Z' k! Y4 U( x2 f' q$ D* f2 k/ ^' L7 a( C
所以,当你第一次打开了FuncTextCmd.cpp和搜索
4 F6 F, o& N* F* n
0 i' J" M3 u( ~" g; ^) [代码: BOOL TextCmd_System( CScanner& scanner ) $ P h2 M0 o8 S
在那里,您会发现:6 K: w& X. w, L
代码: { #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; } * v8 M* D( a8 j
现在我们引入一个新的变量,我只需调用szName的
/ \' E$ H9 j' U5 R4 W! l那么整个事情看起来像这样:
* D' P' M/ y/ t6 b1 I代码: { #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; }
' T- q5 L% `$ b* s/ B& w变量我们也等于“[”拯救我们以后的工作XD5 }1 z8 e# \9 M3 f8 E
7 E0 K2 i' v) i# p: b g# d. @ Z
然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。
* G6 [7 R n! E A; Z# `6 t: O; p3 E2 X! S3 }0 A1 s r$ } g
整个事情是这样的:3 T' j$ q- j# {2 S! G! G
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; }
# m7 a$ ?8 F# d- m/ {并提出了下列:
~4 G4 Q; u _& [代码: { #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; }
Y5 Q1 H8 ?" P' x8 \0 T现在,通用汽车应该喊这样的:$ ^! g4 H S$ w2 l) q9 ^$ y- m
代码: [GM Information][NAME] TEXT . e5 T2 F ^9 o2 ]* r5 t
现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:
7 P/ R. X3 ~$ T3 m代码: { #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; }
8 n* y3 A2 s' g" z& Q如果你想不仅为管理这一点,你必须始终8 g3 l# `1 }6 n& m, K
代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); % N& h' O" o9 h
补充。3 u/ J3 d& V) L. E% H3 a$ `- I
, _+ C/ O2 r) @/ I. r
5 D' i" `4 g2 J4 _下面是与使用/ SYS解决不同的授权清单:
$ p) c6 h; G; Z! E' J代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator
+ g- B: ~8 e4 f' D4 q! O$ s* {希望你喜欢指导,批评是欢迎的。8 i& f; c: I! I5 {
/ E' k7 T% {/ t0 y. M! ]$ \制作所Pumbaaa 1 U% x x" W" G! q S. k7 O
|