|
嘿COM,* q7 u2 g1 l( j9 U- z S& n+ R( u0 d8 F
NEN有点无聊和我开始思考,我写的关于如何得到从GM -喊名字一点时间NEN啧。# X1 t# G, f- N Z
后,整个看起来像这样:5 t+ \2 z5 J% x0 ~1 o! |
, J- ]% f% s. j9 R L
* E1 h% y5 R F- ?9 u
可我第一次补习,所以如果有批评,请说,从而提高自我。
6 m# W z O N- z我不知道我的代码是最优的,肯定有一个更好的解决办法,我还是C ++初学者。9 C5 z9 R& k) z9 Q
1 {- |$ X ~3 d4 y% q& p( v0 X. v所以,当你第一次打开了FuncTextCmd.cpp和搜索% E1 r" G9 e7 }$ s, ]
?* _* r' t3 n. b N1 ]$ U/ }
代码: BOOL TextCmd_System( CScanner& scanner ) 4 o j9 S5 I9 f8 b2 A
在那里,您会发现:
! R" k- E+ {: X6 e代码: { #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; }
, s+ x. ?! E0 ?* O" P现在我们引入一个新的变量,我只需调用szName的
" z. X( f& M1 A那么整个事情看起来像这样:4 T3 S4 c v7 M2 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; } / I3 a( I7 G8 p
变量我们也等于“[”拯救我们以后的工作XD) L3 d6 i: f, n0 z) \4 ^ q
" ~' @8 |3 w( U( @然后,我们明确了scanner.GetLastFull测试()源;在g_DPCoreClient.SendSystem(szString)。
, l: S# I9 p* g9 b+ D
$ S U: P& K, }, l; `0 P/ }) D整个事情是这样的:
4 I& s1 ?/ y+ Y8 m* T5 D1 V" C代码: { #ifdef __WORLDSERVER CHAR szString[512] = ""; CHAR szName[512] = "["; CUser* pUser =(CUser*)scanner.dwValue; #endif // __WORLDSERVER return TRUE; } 8 H" j4 o" p6 c4 [5 M# X
并提出了下列:+ l8 l' j9 n1 f
代码: { #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; } 6 ?+ l' f0 \9 G* s9 ?
现在,通用汽车应该喊这样的:2 p1 K! x$ i$ P6 N; Y' w; H
代码: [GM Information][NAME] TEXT 2 l6 L$ u; r1 j3 h& e4 Q5 m
现在,如果你仍然希望出现这种情况,例如有管理员将需要插入她的下列内容:9 o+ J& Y2 q6 }: `# T4 Z& @
代码: { #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; } 2 {9 O9 P; _# {" o( K5 d e0 ~
如果你想不仅为管理这一点,你必须始终
- `+ k5 T& C- X代码: else if(pUser->m_dwAuthorization == AUTHORIZATION) strcat( szName, "Admin][" ); . G& Z5 ]. ?7 _
补充。
' }- f% u1 {# {- R4 Q, b
/ Y, z) Y, M J7 I0 W( b' ~: i. D
, ~1 H% W+ A$ U下面是与使用/ SYS解决不同的授权清单:) @0 x: G# d) i8 C
代码: AUTH_GAMEMASTER1 //Gamemaster lvl 1 AUTH_GAMEMASTER2 //Gamemaster lvl 2 AUTH_GAMEMASTER3 //Gamemaster lvl 3 AUTH_ADMINISTRATOR //Administrator 8 K% @7 Z$ ]8 L5 Z- x& h
希望你喜欢指导,批评是欢迎的。% G, Y8 z9 u( y. n! A: G5 B' C' B
) w. M$ j' Z/ e. h4 ?+ b7 i制作所Pumbaaa
5 {: K: ~) a; |. ~( T" j. I |