AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Plugins (https://forums.alliedmods.net/forumdisplay.php?f=108)
-   -   [css] Advanced Voice Communications (Dead All Talk) (https://forums.alliedmods.net/showthread.php?t=148069)

databomb 01-17-2011 17:00

[css] Advanced Voice Communications (Dead All Talk)
 
3 Attachment(s)
Advanced Voice Communications Plugin
by: databomb
Original Compile Date: 01.17.2011


Requirements:
This plugin absolutely requires an sdktools extension from after March 8, 2011. If you fail to follow this instruction then this plugin will fail given enough time. (http://bugs.alliedmods.net/show_bug.cgi?id=4804)

SourceMod 1.3.7 includes the required fixes to the sdktools extension.

Description:
This plugin is a supplement to the standard basecomm.sp written by AlliedModdders LLC. This version adds several voice options for dead talk. The voice options from sm_deadtalk are: Dead all talk (dead players can talk across teams but alive players will not hear them) and mute on death. It also allows for a configurable team to be muted at the beginning of a round for so many seconds in addition to many more options to find the right fit for your server.

In addition, timed and permanent punishments have been added to supplement the basecomm commands (mute, gag, silence) all without needing to replace the vanilla basecomm plugin (hint: SourceBans, look at this.) The timed punishments use the ClientPrefs database and the times can range between 1 - 65,535 minutes or be of indefinite length. The times will only expire or countdown when a player is in the game so use more conservative numbers when handing out timed punishments.

Features:
Allows Dead All Talk mode (sm_deadtalk -2)
Allows timed or permanent punishments with basecomm commands (mute, gag, silence)
Allows players to be muted on death (sm_deadtalk -1)
Integrates with SourceMod and ensures your mutes are enforced properly
Admin over-rides for deadtalk options (requires ADMFLAG_CHAT)
Option to enable all talk between each round
Option to mute spectators if they're not admins (admins can talk to everyone from spectator)
Option to mute a team for a certain time starting from the beginning of each round

Command Usage:

sm_listmutes
Lists all players who are administratively muted (note this doesn't include effective mute status as enforced by plugins, only those registered with sm_mute will be counted)

sm_mute <target> <optional:time>
sm_gag <target> <optional:time>
sm_silence <target> <optional:time>
Allows you to specify an optional time value (in minutes) the player must spend in the server before being unpunished. A time of 0 indicates a permanent punishment.

sm_unmute <target> [optional:'force']
sm_ungag <target> [optional:'force']
sm_unsilence <target> [optional:'force']
Allows you to specify an optional 'force' text value specifying that all timed or permanent punishments will be forcibly removed. If you don't specify this then the player will have an effective un-muted status but remain punished when they re-connect. This is so admins can target large groups such as @alive or @!me and not worry about erasing all punishment data.

Settings:
Values in () indicate defaults

sm_deadtalk [-2,-1,(0),1,2]

sm_deadtalk -2: Dead all talk
sm_deadtalk -1: Mutes players after their death
sm_deadtalk 0: normal operation (follows sv_alltalk)
sm_deadtalk 1: equivalent of sm_deadtalk 1 (dead players ignore teams)
sm_deadtalk 2: equivalent of sm_deadtalk 2 (teammates can always talk)

sm_voicecomm_RoundEndAlltalk [0,(1)]: If enabled, all talk is enabled between rounds.
sm_voicecomm_Announce [0,(1)]: If enabled, sends messages to the server and clients about their current voice status.
sm_voicecomm_TeamTalk [(0),1]: If enabled, players talk to only their teammates when alive.
sm_voicecomm_SpectatorMute [0,(1)]: If enabled, spectators are muted unless they're an admin.
sm_voicecomm_MutedTeam [1,(2),3]: Determines which team will start muted, defaults to 2 which is the Terrorists on CS:S.
sm_voicecomm_StartMuted [(0),1]: If enabled, the team you specify will be muted for the time you specify at the beginning of every round.
sm_voicecomm_MuteTime <time> (29.0 seconds): Controls the length (in seconds) of the mute for the team specified.
sm_voicecomm_DeadHearAlive [0,(1)]: If enabled, the dead will still hear alive players.
sm_voicecomm_BlockUnmuteOnReconnect [0,(1)]: If enabled, muted players who reconnect will not be unmuted until the map changes or manually unmuted by an admin.

Edit the config file in <modroot>/cfg/sourcemod/Adv-VoiceComm.cfg

Sample Configurations:
Casual Pub (Team-only while alive but dead all talk)
sv_alltalk 0
sm_deadtalk -2
sm_voicecomm_teamtalk 1
sm_voicecomm_startmuted 0

Gun-Game (Cross-team and dead all talk)
sv_alltalk 0
sm_deadtalk -2
sm_voicecomm_teamtalk 0
sm_voicecomm_startmuted 0

Small-Medium Jailbreak (Cross-team and dead all talk with 15 second mute for Terrorists)
sv_alltalk 0
sm_deadtalk -2
sm_voicecomm_teamtalk 0
sm_voicecomm_mutedteam 2
sm_voicecomm_startmuted 1
sm_voicecomm_mutetime 15.0

Large Jailbreak (Cross-team and mute on death with 15 second mute for Terrorists)
sv_alltalk 1
sm_deadtalk -1
sm_voicecomm_mutedteam 2
sm_voicecomm_startmuted 1
sm_voicecomm_mutetime 15.0

Future considerations:
- Use SM Translation system
- Add additional options

Special Thanks:
FLOOR_MASTER who wrote the original ClientPrefs PeramMute plugin
Fyren, psychonic, and the SM team who helped me get the bug fix through that makes this plugin possible

Changes:
2.2.0 Added admin override settings, Fixed race conditions
2.1.0 Added Translations, Fixed re-hooking bug, Accounted for late spawning in deadtalk -2 mode
2.0.0 Major update: Added stateful muting, No longer requires basecomm replacement, Added many new cvars, code improvements
1.24 Added cvar to change method of alive voice chat using sm_voicecomm 2 (dead all talk), fixed hooking code
1.20 Complete overhaul and re-name to VoiceComm, incorporated original basecomm deadtalk settings into sm_voicecomm
1.12 Implemented death admin over-ride, announcement variable, and merged with gag.sp to allow compiling from the forums
1.05 Bug fixes
1.02 Initial public release

databomb 01-18-2011 19:08

Re: [ANY] Dead All Talk
 
As I've tested this there is another side effect of using overrides this way.. mute is broken while dead all talk is enabled. Since the whole point of using a modified basecomm was to keep mute working I'll be looking into this and posting back soon.

databomb 01-18-2011 23:03

Re: [ANY] Dead All Talk
 
Fixed.. this is the code I had to change in the gag.sp file within the scripting/basecomm/ directory:

PHP Code:

PerformMute(clienttarget)
{
        
g_Muted[target] = true;
        if (
GetConVarInt(g_Cvar_Deadtalk) == 1)
        {
                
// set overrides so the client cannot talk to anyone
                
for (new Pidx 1Pidx <= MaxClientsPidx++)
                {
                        if ((
Pidx != target) && IsClientInGame(Pidx))
                        {
                                
SetListenOverride(PidxtargetListen_No);
                                
//g_ChangedListener[Pidx][target] = Bool:true;
                        
}
                }
        }
        else
        {
                
SetClientListeningFlags(clientVOICE_MUTED);
        }
        
LogAction(clienttarget"\"%L\" muted \"%L\""clienttarget);
}

PerformUnMute(clienttarget)
{
        
g_Muted[target] = false;
        if (
GetConVarInt(g_Cvar_Deadtalk) == && IsPlayerAlive(target))
        {
                
//SetClientListeningFlags(target, VOICE_LISTENALL);
                
SetClientListeningFlags(targetVOICE_NORMAL);
                new 
clientTeam GetClientTeam(target);
                for (new 
idx 1idx <= MaxClientsidx++)
                {
                        if ((
idx != target) && IsClientInGame(idx) &&
(
GetClientTeam(idx) != clientTeam))
                        {
                                
SetListenOverride(idxtargetListen_Yes);
                                
//g_ChangedListener[idx][client] = Bool:true;
                        
}
                }
        }
        
// if they're dead then wait till next round to unmute them
        
else if (GetConVarInt(g_Cvar_Deadtalk) == && !IsPlayerAlive(target))
        {
                
SetClientListeningFlags(targetVOICE_TEAM);
        }
        else
        {
                
SetClientListeningFlags(targetVOICE_NORMAL);
        }

        
LogAction(clienttarget"\"%L\" unmuted \"%L\""clienttarget);



SpazShot 01-18-2011 23:13

Re: [ANY] Dead All Talk
 
Good job on this plugin, seems to meet my demands nearly. :) I'll use this for my jailbreak server when you can implement admin immunity and late joiners issue but I just wanted to notify you that I like the work you put forth, don't give up. :wink:

niar82k 01-22-2011 12:12

Re: [ANY] Dead All Talk
 
cant download the plugin :(

Plugin failed to compile! Please try contacting the author.

databomb 01-22-2011 13:58

Re: [ANY] Dead All Talk
 
niar82k, you'll need the gag file or else it won't compile. I'll include everything in the new deadalltalk file and re-post. Although I've been getting some strange behavior ever since merging the basecomm and gag all into deadalltalk, so I'll need to do some more troubleshooting. It was working reliably for days and then the phantom issue of reverting to sv_alltalk 0 behavior occurs. Give me some time to troubleshoot this issue.

databomb 01-23-2011 02:35

Re: [ANY] Dead All Talk
 
Version 1.12 is posted. This has some basic admin over-rides added along with a convar for announcing to players their voice status. I've been testing it out and it's worked correctly for several rounds now.

During the initial first round there will be some over-rides that aren't processed since not everyone is in the game yet. This is a known problem right now; just wait until the second round to make sure there are no problems.

databomb 02-06-2011 23:56

Re: [ANY] Advanced Voice Communications (Dead All Talk)
 
Version 1.20 posted, most of the features on the to-do list have now been incorporated in the new version including more configurable options and admin overrides.

Additional testing of the plugin is needed to identify any gameplay issues.

Whist 02-06-2011 23:59

Re: [ANY] Advanced Voice Communications (Dead All Talk)
 
I posted something right after you updated. Your updated included what I needed lol.

Whist 02-07-2011 01:36

Re: [ANY] Advanced Voice Communications (Dead All Talk)
 
After discovering your update I installed the plugin and was eager to test out your dead talk feature. I must be getting something wrong though. What I am looking to do is have alive players talking to their team only and dead players talking in all talk. I assume that the command sm_voicecomm 2 is the setting that I need? Also, to apply it, do I just need to type it into console?

The messages that appear telling you talking has been restored, etc, are doubling up and posting to the chat box twice.


All times are GMT -4. The time now is 16:17.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.