Raised This Month: $ Target: $400
 0% 

Boolean delay (wait 2 seconds before false in case it gets true again)


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
fatal_nl
Member
Join Date: Apr 2017
Old 08-07-2018 , 00:21   Boolean delay (wait 2 seconds before false in case it gets true again)
Reply With Quote #1

The code below is to block voice from dead players. Admins can use the bind +adminvoice which is handled by another plugin (amx_super-serious.axx). Dead players are getting a HUD message and when admins using +adminvoice to talk to other admins they shouldn't get that message. Everything works fine theoretically, but when a admin repeatedly press the key bind to +adminvoice, they eventually get the HUD message.

Is there a way to code something that set a delay for g_bAdminVoice? Like: if it get true with +adminvoice, wait 2 seconds before it get false with -adminvoice only in case it get's true again.

Edit: I can probably fixing this issue with set_task. Some help or other suggestions are still appreciated.

The code:

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <reapi>

#define PLUGIN "No Dead Mic ReAPI"
#define AUTHOR "fatal"
#define VERSION "0.2"

#define MAX_PLAYERS    32

new bool:g_bAdmin[MAX_PLAYERS+1]
new 
bool:g_bEnforcer[MAX_PLAYERS+1]
new 
bool:g_bAdminVoice[MAX_PLAYERS+1]

public 
plugin_init()
{
    
register_plugin(PLUGIN,VERSION,AUTHOR)
    
    
register_forward(FM_Voice_SetClientListening,"VoiceSetListening")
    
register_clcmd("+adminvoice","AdminVoiceOn")
    
register_clcmd("-adminvoice","AdminVoiceOff")
    
    
set_cvar_num("sv_alltalk",1)
}

public 
client_authorized(id)
{
    
g_bAdmin[id] = bool:(get_user_flags(id) & ADMIN_LEVEL_G)
    
g_bEnforcer[id] = bool:(get_user_flags(id) & ADMIN_IMMUNITY)
}

public 
client_putinserver(id)
{
    
g_bAdminVoice[id] = false
}

public 
AdminVoiceOn(id)
{
    if( !
g_bAdmin[id] )
    {
        return 
PLUGIN_CONTINUE
    
}

    
g_bAdminVoice[id] = true
    client_print
(0print_chat"ON"// debug
    
    
return PLUGIN_CONTINUE
}

public 
AdminVoiceOff(id)
{
    if(!
g_bAdminVoice[id])
        return 
PLUGIN_CONTINUE

    g_bAdminVoice
[id] = false
    client_print
(0print_chat"OFF"// debug
    
    
return PLUGIN_CONTINUE
}

public 
VoiceSetListening(iReceiver,iSender)
{
    if(
is_user_alive(iSender) || g_bEnforcer[iSender]) return 1

    engfunc
(EngFunc_SetClientListening,iReceiver,iSender0)

    return 
4;
}

public 
VTC_OnClientStartSpeak(const index)
{
    if(!
is_user_alive(index) && !g_bAdminVoice[index] && !g_bEnforcer[index])
    {
        
set_hudmessage(0,255,0,-1.0,0.35,1,6.0,4.0,0.5,0.15,-1)
        
show_hudmessage(index,"Dead people can't talk on mic.")
        
client_cmd(index,"spk fvox/blip.wav"
    }


Last edited by fatal_nl; 08-07-2018 at 00:42.
fatal_nl is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:44.


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