廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 8308 個閱讀者
 
<<   1   2  下頁 >>(共 2 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
Show!
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x1 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 版主評分 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x1
[插件] 團隊語音控制插件
應大家的需求,特發布此插件:

插件名稱:團隊語音控制插件
插件作者:Rulzy
Web URL :http://bbs.co....cn/

命令說明:
amx_mute <name or #userid>靜音某玩家麥克風
amx_unmute <name or #userid>取消靜音某玩家麥克風

參數說明:
amx_teamtalk 0|1 (默認:1)是否開啟此插件的語音控制功能
amx_talkhint 0|1|2 (默認:1)提示類型:0-關閉, 1-HUD, 2-聊天區
amx_talktime數據值(默認:0)語音控制的一個時間參數,詳細說明見後。

參數amx_talktime說明:
當amx_talktime為0時,隊友間總是可以互相聽到講話(當然,要求參數amx_teamtalk不為零,下同)
當amx_talktime為正數時,玩家死亡後的amx_talktime秒內,活著的隊友可以聽到其講話,超過這個時間則活著的隊友聽不到其講話了
主要用於:當玩家剛死亡時,可以給活著的隊友報點,又可以避免一直講話而影響活著的隊友發揮
當amx_talktime為負數時,玩家死亡後的|amx_talktime|秒內,活著的隊友聽不到其講話,超過這個時間則活著的隊友可以聽到其講話
主要用於:當玩家剛死亡時,避免玩家報點,但時間過後可以通話,可用於戰術指揮,訓練時感覺比較有用

注意,參數sv_alltalk必須為0,否則此插件功能不會生效。

/*
插件名称:团队语音控制插件
插件作者:Rulzy
Web URL :http://bbs.co....cn/


命令说明:
     amx_mute <name or #userid>      静音某玩家麦克风
     amx_unmute <name or #userid>      取消静音某玩家麦克风
参数说明:
     amx_teamtalk 0|1      (默认:1)是否开启此插件的语音控制功能
     amx_talkhint 0|1|2      (默认:1)提示类型:0-关闭, 1-HUD, 2-聊天区
     amx_talktime 整数值      (默认:0)语音控制的一个时间参数,详细说明见后。

     参数 amx_talktime 说明:
           当 amx_talktime 为 0 时,队友间总是可以互相听到讲话(当然,要求参数amx_teamtalk不为零,下同)
           当 amx_talktime 为正数时,玩家死亡后的amx_talktime秒内,
                       活着的队友可以听到其讲话,超过这个时间则活着的队友听不到其讲话了
                       主要用于:当玩家刚死亡时,可以给活着的队友报点,又可以避免一直讲话而影响活着的队友发挥
           当 amx_talktime 为负数时,玩家死亡后的 |amx_talktime| 秒内,
                       活着的队友听不到其讲话,超过这个时间则活着的队友可以听到其讲话
                       主要用于:当玩家刚死亡时,避免玩家报点,但时间过后可以通话,可用于战术指挥,训练时感觉比较有用
                             
     注意,参数 sv_alltalk 必须为0,否则此插件功能不会生效。


--------------------------------------------------------------------------------------------------------------


*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>

new g_player_muted[33]
new Float: g_player_deathtime[33]
new p_teamtalk, p_talktime, p_talkhint

public plugin_init()
{
     register_plugin("Team Talk", "1.2", "Rulzy");
     register_forward(FM_Voice_SetClientListening, "fm_voice_forward")
     register_clcmd("amx_mute", "cmdMute", ADMIN_KICK, "<name or #userid> - Mute player's Microphone");
     register_clcmd("amx_unmute", "cmdUnMute", ADMIN_KICK, "<name or #userid> - UnMute player's Microphone");
     
     p_teamtalk = register_cvar("amx_teamtalk", "1");
     p_talktime = register_cvar("amx_talktime", "0");
     p_talkhint = register_cvar("amx_talkhint", "1");
     
     register_event("DeathMsg", "eDeathMsg", "a");
     
}

public eDeathMsg()
{
     new victim = read_data(2);
     if(!is_user_connected(victim)) return PLUGIN_CONTINUE;
     g_player_deathtime[victim] = get_gametime();
     if(get_cvar_num("sv_alltalk")) return PLUGIN_CONTINUE;
     if(!get_pcvar_num(p_teamtalk)) return PLUGIN_CONTINUE;
     if(g_player_muted[victim] && get_user_flags(victim)&ADMIN_IMMUNITY==0) //如果此人被禁止讲话
           return PLUGIN_CONTINUE;
     if(!get_pcvar_num(p_talkhint))
           return PLUGIN_CONTINUE;
     new talktime = get_pcvar_num(p_talktime);
     talktime = talktime>0?talktime:-talktime;
     new param[3]
     param[0] = victim;
     param[1] = talktime;
     ShowHint(param);
     return PLUGIN_CONTINUE;
}

public ShowHint(param[])
{
     if(get_cvar_num("sv_alltalk")) return PLUGIN_CONTINUE;
     if(!get_pcvar_num(p_teamtalk)) return PLUGIN_CONTINUE;
     new id = param[0];
     new talktime = get_pcvar_num(p_talktime);
     new timeleft = param[1];
     new HintMsg[256];
     new talkhint = get_pcvar_num(p_talkhint);
     if(talkhint==1)
     {
           if(is_user_alive(id))
           {
                 format(HintMsg, 255, "你已经出生, 现在你可以与你的队友正常语音通话");
                 timeleft = 0;
           }else if(talktime==0){
                 format(HintMsg, 255, "你挂了, 但你仍然可以与你的队友语音通话");
           }else if(talktime>0){
                 if(timeleft==0)
                       format(HintMsg, 255, "时间到, 你现在不能跟活着的队友通话了", timeleft);
                 else
                       format(HintMsg, 255, "你挂了, 但 %d 秒内你仍然可以与活着的队友通话", timeleft);
           }else{
                 if(timeleft==0)
                       format(HintMsg, 255, "你现在可以跟活着的队友通话了", timeleft);
                 else
                       format(HintMsg, 255, "你挂了, %d 秒后你可与活着的队友通话", timeleft);
           }
           set_hudmessage(255, 196, 196, -1.0, 0.73, 0, 0.0, 3.0, 0.0, 0.0, 1)
           show_hudmessage(id, HintMsg)
     }else if (talkhint==2){
           if(is_user_alive(id))
           {
                 format(HintMsg, 255, "^x04【语音控制】^x01你已经出生, 现在你可以与你的队友正常语音通话。");
                 timeleft = 0;
           }else if(talktime==0){
                 format(HintMsg, 255, "^x04【语音控制】^x01你挂了, 但你仍然可以与你的队友语音通话。");
           }else if(talktime>0){
                 if(timeleft==0)
                       format(HintMsg, 255, "^x04【语音控制】^x01时间到, 你现在不能跟活着的队友通话了。", timeleft);
                 else
                       format(HintMsg, 255, "^x04【语音控制】^x01你挂了, 但 %d 秒内你仍然可以与活着的队友通话。", timeleft);
           }else{
                 if(timeleft==0)
                       format(HintMsg, 255, "^x04【语音控制】^x01你现在可以跟活着的队友通话了。", timeleft);
                 else
                       format(HintMsg, 255, "^x04【语音控制】^x01你挂了, %d 秒后你可与活着的队友通话。", timeleft);
           }
           client_color(id, id, HintMsg);
     }
     if(timeleft>0)
     {
           param[1]=timeleft-1;
           set_task(1.0, "ShowHint", 0, param, 2);
     }
     return PLUGIN_CONTINUE;
}

public fm_voice_forward(receiver, sender, listen)
{
     if(receiver==sender) return FMRES_IGNORED;
     new alltalk = get_cvar_num("sv_alltalk");
     if(alltalk) return FMRES_IGNORED;
     if(!get_pcvar_num(p_teamtalk)) return FMRES_IGNORED;
     if(!is_user_connected(receiver) || !is_user_connected(sender))
           return FMRES_IGNORED;
     if(g_player_muted[sender] && get_user_flags(sender)&ADMIN_IMMUNITY==0) //如果此人被禁止讲话
     {
           engfunc(EngFunc_SetClientListening, receiver, sender, 0);
           return FMRES_SUPERCEDE;
     }
     new CsTeams:rt=cs_get_user_team(receiver);
     new CsTeams:st=cs_get_user_team(sender);
     if(rt==CS_TEAM_UNASSIGNED || rt==CS_TEAM_SPECTATOR)      //观察员可以听到所有人讲话
     {
           engfunc(EngFunc_SetClientListening, receiver, sender, 1);
           return FMRES_SUPERCEDE;
     }
     if(rt==st){ //如果是队友间讲话
           if(is_user_alive(sender)) //活着的队友讲话,队友都可以听到
           {
                 engfunc(EngFunc_SetClientListening, receiver, sender, 1);
                 return FMRES_SUPERCEDE;
           }
           //死亡的队友讲话,分两种情况
           if(!is_user_alive(receiver)) //一:死亡的队友可以听到死亡的队友讲话(包括两者都是观察员的情况)
           {
                 engfunc(EngFunc_SetClientListening, receiver, sender, 1);
                 return FMRES_SUPERCEDE;
           }
           //二:如果讲话者是死的,听话者是活的,则根据参数和死亡时间来区分
           new talktime = get_pcvar_num(p_talktime);
           if(talktime == 0)
           {
                 engfunc(EngFunc_SetClientListening, receiver, sender, 1); //总可以听到队友讲话
                 return FMRES_SUPERCEDE;
           }
           new Float:gametime = get_gametime();
           if(talktime>0){ //队友死亡后多少秒内活着的队友可以听到,可用于报点,但可防止时间过后影响活着的队友发挥
                 if(gametime-g_player_deathtime[sender]>talktime)//如果当前时间-最后死亡时间>指定的时间,则活的队友听不到讲话
                 {
                       engfunc(EngFunc_SetClientListening, receiver, sender, 0);
                 }else{                                          //否则(当前时间-最后死亡时间<=指定的时间),活的队友可听到讲话
                       engfunc(EngFunc_SetClientListening, receiver, sender, 1);
                 }
           }else{ //队友死亡后多少秒内活着的队友听不到,可防止报点,但这个时间过后可以进行战术指挥
                 talktime = - talktime; //取绝对值
                 if(gametime-g_player_deathtime[sender]>talktime)//如果当前时间-最后死亡时间>指定的时间,则活的队友可听到讲话
                 {
                       engfunc(EngFunc_SetClientListening, receiver, sender, 1);
                 }else{                                          //否则(当前时间-最后死亡时间<=指定的时间),活的队友听不到讲话
                       engfunc(EngFunc_SetClientListening, receiver, sender, 0);
                 }
           }
     }else{ //否则听不到讲话(不是队友,也不是观察员)
           engfunc(EngFunc_SetClientListening, receiver, sender, 0);
     }
     
     return FMRES_SUPERCEDE;
}

public client_connect(id)
{
     g_player_muted[id] = 0;
     g_player_deathtime[id] = get_gametime();
}

public cmdMute(id, level, cid)
{
     if(!cmd_access(id, level, cid, 2))
           return PLUGIN_HANDLED;
     new name[32];
     read_argv(1, name, 31);
     new target = cmd_target(id, name, 1);
     if(!target) return PLUGIN_HANDLED;
     g_player_muted[target] = 1
     return PLUGIN_HANDLED;
}

public cmdUnMute(id, level, cid)
{
     if(!cmd_access(id, level, cid, 2))
           return PLUGIN_HANDLED;
     new name[32];
     read_argv(1, name, 31);
     new target = cmd_target(id, name, 0);
     if(!target) return PLUGIN_HANDLED;
     g_player_muted[target] = 0
     return PLUGIN_HANDLED;
}

stock client_color(playerid,colorid,msg[])
{
     message_begin(playerid?MSG_ONE:MSG_ALL, get_user_msgid("SayText"), {0,0,0}, playerid)
     write_byte(colorid)
     write_string(msg)
     message_end()
}

/* UTF-8 func by DT-Club.net... */


本帖包含附件
zip teamtalk.rar   (2022-06-09 14:07 / 13 KB)  
說明:
下載次數:181


[ 此文章被Show!在2009-02-02 18:43重新編輯 ]

此文章被評分,最近評分記錄
財富:10 (by amore12) | 理由: 感謝提供!!



獻花 x1 回到頂端 [樓 主] From:陜西 | Posted:2008-09-08 11:46 |
a034759441
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x38 鮮花 x61
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感覺好像沒甚麼用耶 表情

在考慮一下好了 表情


獻花 x0 回到頂端 [1 樓] From:臺灣臺北市 | Posted:2008-09-09 16:33 |
lixiangideal
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

这个不错,但是我提个建议,有没有高手可以根据我的建议改一下

建议就是活着的隊友听不到死了的队友的说话;如果不是隊友,就不能通話;觀察員可以聽到所有人說話


獻花 x0 回到頂端 [2 樓] From:天津 | Posted:2008-10-15 13:58 |
Show!
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x1 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

更新了


獻花 x0 回到頂端 [3 樓] From:陜西 | Posted:2009-02-02 18:44 |
A8153906 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x7 鮮花 x74
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

摁....

就怕有小白濫用麥克風><"


獻花 x0 回到頂端 [4 樓] From:APNIC | Posted:2009-03-01 18:36 |
修乂雯 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x6 鮮花 x320
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

不知道好不好用..

下次再來研究吧XD"

給你推推


M.M^Gaming [A] WrAiTh<pk
獻花 x0 回到頂端 [5 樓] From:臺灣 | Posted:2009-05-26 00:48 |
qaz885566
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

試用看看 先


獻花 x0 回到頂端 [6 樓] From:台灣中華電信 | Posted:2010-03-14 17:46 |
aids6828 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x22 鮮花 x78
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

先來試用看看反正這東西是免錢的 謝謝大大分享


獻花 x0 回到頂端 [7 樓] From:歐洲 | Posted:2010-07-06 20:34 |
chanpikmay20
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x16 鮮花 x31
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

支持支持
不知道是什麼
我下載來試試吧


Vlan名` 楓羊羊__  


獻花 x0 回到頂端 [8 樓] From:香港城市電訊 | Posted:2010-09-17 21:57 |
a220873963
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x2 鮮花 x7
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

看不懂耶..


YOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO YO
獻花 x0 回到頂端 [9 樓] From:台灣中華電信 | Posted:2010-12-19 12:47 |

<<   1   2  下頁 >>(共 2 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.021240 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言