|
发表于 2007-9-25 15:08:42
|
显示全部楼层
来自 中国–广东–广州–白云区
回复: 不同权限,不同说话颜色(修改版)(源码问题修正)
/*************************************************完
有色管理員聊天-(三) 2 007年由e xolent
所作exolent http://forums.alliedmods.net/showthread.php?t=60009
而構思來自: http://forums.alliedmods.net/showthread.php?t=57993
描述:
這個插件允許管理員與管理員指定水平有彩色文本
正如所有文字,他們messagemode和messagemode2聊天訊息。也。
" /指揮"的訊息, " @ " ,並"@@", "@@@"訊息不會被列,但
他們仍然會工作。
cvars :
amx_cac_enabled < 0 | 1 > (默認: 1 )
amx_adminlisten_voice < 0 | 1 > (默認: 1 )
amx_adminlisten_voice < 0 | 1 > (默認: 1 )
*注:這只是在測試政務1.6 。使用其他mods的在自己的風險。
此插件的來源和彙編文件可以發現@ :
http://forums.alliedmods.net/showthread.php?t=60009
************************************************** *************************************
日誌:
1.0版
-首次發布
1.1版
-補充當局一級綠色聊天
-合併4格式( )功能集於一體
2.0版
-簡碼清理
-兼併與a dminlistenf akemeta而不是引擎
--- adminlisten鏈接: http://forums.alliedmods.net/showthread.php?p=107768
3.0版
-彩色成倍p ossibilites
-重新訊息
-固定的幾個錯誤
-改名插件
3.1版
-清理代碼
-固定c var聊天問題
3.2版本
-只有1檢查@ | @ @ | @ @ @命令說:
-作出聲音跟隨s v_alltalk時不使用語音聽力
-補充c var開啟/關閉插件
-取消綠色名稱與綠色聊天
-優化h as_color_chat( )和g et_color_chat( ) ,當使用g et_user_flags( )
-拆除s peak_muted為其無用
4.0版
-改寫代碼
-固定的幾個錯誤
************************************************** ************************************/
/ /彩色聊天水平
/ / ------------------------------------------------ --------------------------------------
#界定admin_normal admin_level_a / /水平正常聊天綠色有名無實
#界定admin_red admin_level_b / /一級紅色聊天
#界定admin_blue admin_level_c / /水平藍聊天
#界定admin_silver admin_level_d / /水平銀聊天
/ / ------------------------------------------------ --------------------------------------
/ /聽管理員水平
/ / ------------------------------------------------ --------------------------------------
#界定listen_chat admin_kick / /一級看到所有聊天( adminlisten風格)
#界定listen_voice admin_immunity / /一級聽到所有聲音( adminlisten風格)
/ / ------------------------------------------------ --------------------------------------
/ /不編輯超越這條線,除非你知道自己在做什麼
/ / ------------------------------------------------ --------------------------------------
#包括<amxmodx>
#包括<fakemeta>
# speak_normal界定( 1 < < 0 )
/ / # speak_muted界定( 1 < < 1 )
# speak_all界定( 1 < < 2 )
# speak_listenall界定( 1 < < 3 )
新pcvar_enabled ;
新pcvar_voice ;
新pcvar_chat ;
新pcvar_alltalk ;
新gimaxplayers ;
新gimsgsaytext ;
新gimsgteaminfo ;
新gispeakflags [ 33 ] ;
新的施工gicolorlevels [ ] =
(
admin_all ,
admin_normal ,
admin_red ,
admin_blue ,
admin_silver
) ;
新的施工gszcolorcode [ ] [ ] =
(
" " ,
" ^掃描" ,
" ^ x03 "
" ^ x03 "
" ^ x03 "
) ;
新的施工gszcolorteams [ ] [ ] =
(
" " ,
" " ,
"恐怖" ,
"斷層"
"旁觀者"
) ;
新的施工gszteamnames [ ] [ ] =
(
"旁觀者" ,
"恐怖" ,
"反恐怖主義"
"旁觀者"
) ;
公共plugin_init ( )
(
register_plugin ( "有色管理員聊天" , " 4.0 " , " exolent " ) ;
register_clcmd ( "說" , " handle_say " ) ;
register_clcmd ( " say_team " , " handle_teamsay " ) ;
register_forward ( fm_voice_setclientlistening " fm_setvoice " ) ;
pcvar_enabled register_cvar = ( " amx_cac_enabled " , " 1 " ) ;
pcvar_voice register_cvar = ( " amx_adminlisten_voice " , " 1 " ) ;
pcvar_chat register_cvar = ( " amx_adminlisten_chat " , " 1 " ) ;
pcvar_alltalk get_cvar_pointer = ( " sv_alltalk " ) ;
gimaxplayers get_maxplayers = ( ) ;
gimsgsaytext get_user_msgid = ( " saytext " ) ;
gimsgteaminfo get_user_msgid = ( " teaminfo " ) ;
)
公共handle_say (身份證)
(
如果( ! get_pcvar_num ( pcvar_enabled ) )
plugin_continue回報;
靜態szmessage [ 192 〕 ;
read_args ( szmessage , 191 ) ;
remove_quotes ( szmessage ) ;
如果( ! is_valid_message ( szmessage ) )
plugin_continue回報;
靜態bool :巴德明;
巴德明has_color_chat = (身份證) ;
靜態ichatcolor , ialive ,我;
ichatcolor get_chat_color = (身份證) ;
ialive is_user_alive = (身份證) ;
新的造血;
造血= ichatcolor -2 ;
靜態szname [ 32 ] , szteam [ 32 ] , szteam2 [ 32 ] ;
get_user_name (身份證, szname , 31 ) ;
get_user_team (身份證, szteam , 31 ) ;
格式( szmessage , 191 , " % % ■ ■ ■ % % ^掃描: % ■ % ■ " , \
ialive ? " " : " ^掃描* *陣亡" , \
巴德明? (造血? " ^ x03 (綠星網吧) " : " ^ x03 (管理員) " ) : " ^斷層" , \
巴德明? " ^面紗" : " ^斷層" , \
szname , \
巴德明? gszcolorcode [ ichatcolor ] : " " , \
szmessage ) ;
(我= 1 ;我< = gimaxplayers ;我+ )
(
如果( ! is_user_connected (一) )
繼續;
如果( ialive == is_user_alive (一)
| | ( get_pcvar_num ( pcvar_chat ) ) & & ( get_user_flags ( i )及listen_chat ) )
(
get_user_team (一, szteam2 , 31 ) ;
handle_message (一, szteam , szteam2 , ichatcolor , szmessage ) ;
)
)
plugin_handled回報;
)
公共handle_teamsay (身份證)
(
如果( ! get_pcvar_num ( pcvar_enabled ) )
plugin_continue回報;
靜態szmessage [ 192 〕 ;
read_args ( szmessage , 191 ) ;
remove_quotes ( szmessage ) ;
如果( ! is_valid_message ( szmessage ) )
plugin_continue回報;
靜態bool :巴德明;
巴德明has_color_chat = (身份證) ;
靜態ichatcolor , ialive ,紊亂,我;
ichatcolor get_chat_color = (身份證) ;
ialive is_user_alive = (身份證) ;
紊亂= get_user_team (身份證) ;
新dami2 ;
dami2 = ichatcolor -2 ;
靜態szname [ 32 ] , szteam [ 32 ] , szteam2 [ 32 ] ;
get_user_name (身份證, szname , 31 ) ;
get_user_team (身份證, szteam , 31 ) ;
格式( szmessage , 191 , " ^斷層% ■ ( % ) % ■ % ■ % ^掃描: % ■ % ■ " , \
ialive ? " " : " * *死" , \
gszteamnames [紊亂] , \
巴德明? ( dami2 ? " ^ x03 (綠星網吧) " : " ^ x03 (管理員) " ) : " ^斷層" , \
巴德明? " ^面紗" : " ^ x03 " , \
szname , \
巴德明? gszcolorcode [ ichatcolor ] : " " , \
szmessage ) ;
(我= 1 ;我< = gimaxplayers ;我+ )
(
如果( ! is_user_connected (一) )
繼續;
get_user_team (一, szteam2 , 31 ) ;
如果( ! equali ( szteam , szteam2 ) & & ( get_pcvar_num ( pcvar_chat ) ! = 1 ) )
繼續;
如果( ialive == is_user_alive (一)
| | get_user_flags ( i )及listen_chat )
(
handle_message (身份證, szteam , szteam2 , ichatcolor , szmessage ) ;
)
)
plugin_handled回報;
)
公共fm_setvoice ( ireceiver , isender , bool : blisten )
(
reset_speak ( ireceiver ) ;
reset_speak ( isender ) ;
如果( ( gispeakflags [ isender ] & speak_all ) ! = 0 )
(
set_speak ( ireceiver , isender ,真實) ;
fmres_supercede回報;
)
如果( ( gispeakflags [ ireceiver ] & speak_listenall ) ! = 0 )
(
set_speak ( ireceiver , isender ,真實) ;
fmres_supercede回報;
)
forward_return ( fmv_cell , blisten ) ;
fmres_ignored回報;
)
bool : is_valid_message (施工szmessage [ ] )
(
如果( szmessage [ 0 ] == ' / '
| | szmessage [ 0 ] == ' @ '
| | ! strlen ( szmessage ) )
(
返回假;
)
回到真實;
)
bool : has_color_chat (施工編號)
(
iflags靜,我;
iflags get_user_flags = (身份證) ;
(我= 1 ;我< sizeof gicolorlevels ;我+ )
(
如果( iflags & gicolorlevels [我] )
回到真實;
)
返回假;
)
get_chat_color (施工編號)
(
iflags靜,我;
iflags get_user_flags = (身份證) ;
(我= 1 ;我< sizeof gicolorlevels ;我+ )
(
如果( iflags & gicolorlevels [我] )
我的回報;
)
返回0 ;
)
handle_message (施工編號,施工szteam [ ] ,施工szteam2 [ ] , ichatcolor施工,施工szmessage [ ] )
(
如果( equali ( gszcolorcode [ ichatcolor ] , " ^ x03 " ) & & ! equali ( gszcolorteams [ ichatcolor ] , szteam2 ) )
(
show_teaminfo_msg (身份證, gszcolorteams [ ichatcolor ] ) ;
show_saytext_msg (身份證, szmessage ) ;
show_teaminfo_msg (身份證, szteam2 ) ;
)
其他如( ! equali ( szteam , szteam2 ) & & ! ichatcolor )
(
show_teaminfo_msg (身份證, szteam ) ;
show_saytext_msg (身份證, szmessage ) ;
show_teaminfo_msg (身份證, szteam2 ) ;
)
其他
(
show_saytext_msg (身份證, szmessage ) ;
)
1回報;
)
show_teaminfo_msg (施工編號,施工szteam [ ] )
(
message_begin ( msg_one , gimsgteaminfo , _ ,身份證) ;
write_byte (身份證) ;
write_string ( szteam ) ;
message_end ( ) ;
)
show_saytext_msg (施工編號,施工szmessage [ ] )
(
message_begin ( msg_one , gimsgsaytext , _ ,身份證) ;
write_byte (身份證) ;
write_string ( szmessage ) ;
message_end ( ) ;
)
reset_speak (施工編號)
(
如果( get_pcvar_num ( pcvar_alltalk ) == 1 )
(
gispeakflags [編號] = speak_all ;
)
其他如( ( get_pcvar_num ( pcvar_voice ) == 1 ) & & ( get_user_flags (身份證) & listen_voice ) )
(
gispeakflags [編號] = speak_listenall ;
)
其他
(
gispeakflags [編號] = speak_normal ;
)
)
set_speak ( ireceiver施工,施工isender ,施工bool : blisten )
(
engfunc ( engfunc_setclientlistening , ireceiver , isender , blisten )
forward_return ( fmv_cell , blisten ) ;
) |
|