|
嘿COM,' C% Z& F% y8 B; P" E7 K' H
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。8 N7 L! X. o1 y
后,整个看起来像这样:& F _. I8 |* @) J* |
8 @" C) |+ z* @" v3 B
9 p. e: I. y1 K% f可我第一次补习,所以如果有批评,请说,从而提高自我。
$ }) k$ I, `7 H/ p4 p+ I9 v: Q我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。
1 {8 g& ]# J4 x- [* h( V U* M/ i7 }7 N/ R9 L* |
所以,当你第一次打开了FuncTextCmd.cpp和搜索- L4 I0 ?7 Y1 m4 k) h: ?2 M( T
! |0 w8 X, U+ H5 S; M
代码: BOOL TextCmd_System( CScanner& scanner ) - q0 a1 I ^& q ]4 e" @! I2 `: d9 ^
在那里,您会发现:
& A; x5 o* {8 [8 W6 C t代码: { #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; }
0 g! x* L$ h" {5 r# b! X现在我们引入一个新的变量,我只需调用szName的/ u" U7 }* q# l) ?$ I
那么整个事情看起来像这样:5 r T# p6 l+ {5 i* v
代码: { #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; }
/ o4 G3 t. b* J$ h- }8 G7 s变量我们也等于“[”拯救我们以后的工作XD$ @# v: f& h# |& Y# s% d' [' W3 C
$ c4 e0 F6 T6 g: b- U然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。. I2 a/ W' X$ b8 t4 E8 u* h
. _: ?' F0 g @+ m6 [' W. K* Q
整个事情是这样的:* X$ s! Z/ d# M
代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } : U/ U5 }1 N& V2 Q: q6 D
并提出了下列:
8 r2 q1 f% p/ ^5 a代码: { #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; } . E' l# A x0 V* H
现在,通用汽车应该喊这样的:
1 @ a& T# Z! T6 J1 ]8 |7 O p- \代码: [GM Information][NAME] TEXT + o/ w- U9 G2 l6 u
现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:
' `9 N& W+ q6 v: C f代码: { #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; } % ~* h7 Y) g4 M; @% k3 `$ t
如果你想不仅为管理这一点,你必须始终
; ^: {; T5 b' t, y代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); 1 ~+ {# k+ x) K% ^
补充。
% G2 h7 K0 P! [1 j, h. _* H% f0 [$ X8 a0 ^8 _& u+ U5 u' {
& R, G7 C1 U4 t( W9 P4 {8 c: c) r8 V下面是与使用/ SYS解决不同的授权清单:
+ A! w/ d$ v6 |5 [, m代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator % O9 J" {, t+ y9 Y5 W
希望你喜欢指导,批评是欢迎的。
& o; f4 Z" x* u' [" E$ f8 e+ S* m3 M% Z i' u; W; c8 g% \
制作所Pumbaaa
' I/ ^4 ^) |* [ h- _ G5 ? |