广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 8318 个阅读者
 
<<   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.056262 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言