AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [Help Req] VIP Commands (https://forums.alliedmods.net/showthread.php?t=271212)

DeathOrAlive 09-07-2015 19:05

[Help Req] VIP Commands
 
Hello there, so today I need help for something connected with "VIP players" and "Normal players" in my server. My question is how for example, I can make my "/mute" plugin available only for "VIP Players" and if "Normal player" tries to use it, he gets message that says "You need to be VIP to use this command!". If you can help me guys, I will be really thankful. Thanks again and have a nice day!

wickedd 09-07-2015 19:28

Re: [Help Req] VIP Commands
 
PHP Code:

if( !( get_user_flagsid ) & /*VIP_FLAGS*/ ) )
{
    
client_printindexprint_chat" NO ACCESS" )



DeathOrAlive 09-07-2015 20:03

Re: [Help Req] VIP Commands
 
Can you please tell me where exactly to put this code? I mean should I put it to some part of the other code or alone as a whole different action? (I hope you understood what I wanted to say...)

wickedd 09-07-2015 20:14

Re: [Help Req] VIP Commands
 
PHP Code:

public your_function( )
{
    if( !( 
get_user_flagsid ) & /*VIP_FLAGS*/ ) )
    {
        
client_printidprint_chat" NO ACCESS" )
    }
    else
    {
        
//Your code
    
}


or

PHP Code:

public your_function( )
{
    if( ( 
get_user_flagsid ) & /*VIP_FLAGS*/ ) )
    {
        
//Your code
    
}
    else
    {
        
client_printidprint_chat" NO ACCESS" )
    }


I hope this helps.

DeathOrAlive 09-07-2015 20:57

Re: [Help Req] VIP Commands
 
All fine but there is only one problem left, when I try to compile the plugin, it gives me error. I tried like this:
PHP Code:

public your_function( )
{
    if( !( 
get_user_flagsid ) & "b" ) )
    {
        
client_printidprint_chat" NO ACCESS" )
    }
    else
    {
        
//Your code
    
}


And the error is:
error 033: array must be indexed (variable "-unknown-")

Than I tried like this:
PHP Code:

public your_function( )
{
    if( !( 
get_user_flagsid ) & ) )
    {
        
client_printidprint_chat" NO ACCESS" )
    }
    else
    {
        
//Your code
    
}


And the error is:
error 017: undefined symbol "b"

wickedd 09-07-2015 21:13

Re: [Help Req] VIP Commands
 
Check your vip_flags. How are you defining them?

Edit: Attach the .sma, it will be a lot easier.

Depresie 09-07-2015 23:23

Re: [Help Req] VIP Commands
 
You forgot to put id at the function, post here your mute plugin and the flag vip has if you can't get it done by yourself

PHP Code:

public your_functionid )
{
    if( !( 
get_user_flagsid ) & put here your vip flag ) )
    {
        
client_printidprint_chat" NO ACCESS" )
    }
    else
    {
        
//Mute code
    
}


</span></span>

HamletEagle 09-08-2015 04:12

Re: [Help Req] VIP Commands
 
Don't use "a,b,c,d etc" flags from users.ini, use ADMIN_* constants.

DeathOrAlive 09-08-2015 07:13

Re: [Help Req] VIP Commands
 
This is the mute plugin, fix it if possible and please if you can, underline what you've done so I can learn and do it myself next time. Thanks again guys! :)
PHP Code:

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

#define PLUGIN_NAME "AdvancedMute"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "OciXCrom"

#define sMute "buttons/blip1.wav"
#define sUnmute "buttons/button9.wav"

new const szPrefix[] = "^4[^3FrontLineD2^4]"

new cvar_adminflagcvar_mutemiccvar_reopencvar_sounds
new bool:muted[33][33]

public 
plugin_init()
{
    
register_plugin("AdvancedMute""1.0""OciXCrom")
    
register_cvar("AdvancedMute"PLUGIN_VERSIONFCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    
    
register_clcmd("amx_mute""cmd_mute", -1"<nick|#userid>")
    
register_clcmd("amx_chatmute""cmd_mute", -1"<nick|#userid>")
    
register_clcmd("amx_mutemenu""menu_mute")
    
register_clcmd("amx_chatmutemenu""menu_mute")
    
register_clcmd("say /mute""menu_mute")
    
register_clcmd("say /mutemenu""menu_mute")
    
register_clcmd("say /chatmute""menu_mute")
    
register_clcmd("say /chatmutemenu""menu_mute")
    
    
cvar_adminflag register_cvar("advmute_adminflag""b")
    
cvar_mutemic register_cvar("advmute_mutemic""1")
    
cvar_reopen register_cvar("advmute_reopen""1")
    
cvar_sounds register_cvar("advmute_sounds""1")
    
    
register_message(get_user_msgid("SayText"), "player_message")
    
register_forward(FM_Voice_SetClientListening"player_talk")
}

public 
player_message(iMsgidiDestreceiver)
{
    static 
sender
    sender 
get_msg_arg_int(1)
    
    return 
get_mute(receiversender) ? PLUGIN_HANDLED PLUGIN_CONTINUE
}

public 
player_talk(receiversenderlisten
{
    if(
get_pcvar_num(cvar_mutemic) == || receiver == sender)
        return 
FMRES_IGNORED
        
    
if(get_mute(receiversender))
    {
        
engfunc(EngFunc_SetClientListeningreceiversender0)
        return 
FMRES_SUPERCEDE
    
}
    
    return 
FMRES_IGNORED
}

public 
cmd_mute(id)
{
    new 
arg[32]
    
read_argv(1argcharsmax(arg))
    
    new 
player cmd_target(idarg0)
    if(!
player)
    {
        
client_print(idprint_console"%s Command Usage: amx_(chat)mute <nick|#userid>"szPrefix)
        return 
PLUGIN_HANDLED
    
}
    
    if(
user_has_flag(playercvar_adminflag))
    {
        
immune(id)
        return 
PLUGIN_HANDLED
    
}
    
    
switch_mute(idplayer)
    
mute_msg(idplayer)
    
    return 
PLUGIN_HANDLED
}

public 
menu_mute(id)
{
    if( !( 
get_user_flagsid ) & /*VIP_FLAGS*/ ) )
    {

        new 
title[200]
        
formatex(titlecharsmax(title), "Choose the player or players you want to mute:")
        
        new 
mutemenu menu_create(title"mutemenu_handler")
    
        new 
text[64], players[32], pnumtempid
        
new name[32], userid[32]
    
        
menu_additem(mutemenu"Mute all players"""0)
        
menu_additem(mutemenu"Unmute all players"""0)    
        
get_players(playerspnum)
    
        for(new 
ii<pnumi++)
        {
            
tempid players[i]
        
            new 
bool:admin false
            
new bool:mute false
        
            
if(user_has_flag(tempidcvar_adminflag)) admin true
            
if(get_mute(idtempid)) mute true
        
            get_user_name
(tempidnamecharsmax(name))
            
formatex(useridcharsmax(userid), "%d"get_user_userid(tempid))
            
formatex(textcharsmax(text), "%s%s"admin "[ADMIN/VIP]" mute "r" ""name)            
            
menu_additem(mutemenutextuserid0)
        }
    
        
menu_setprop(mutemenuMPROP_BACKNAME"Next page")
        
menu_setprop(mutemenuMPROP_NEXTNAME"Previous page")
        
menu_setprop(mutemenuMPROP_EXITNAME"Close the Mute Menu")
    
        
menu_display(idmutemenu0)
    }
    else
    {
        
ClientPrintColor(id"%s^1You should have ^4[^3VIP^4/^3ADMIN^4] ^1privileges to use ^4[^3/mute^4]^1."szPrefix)     
    }
    return 
PLUGIN_HANDLED
}

public 
mutemenu_handler(idmutemenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(mutemenu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
data[6], name[64]
    new 
item_accessitem_callback
    
    menu_item_getinfo
(mutemenuitemitem_accessdatacharsmax(data), namecharsmax(name), item_callback)
    new 
userid str_to_num(data)
    
    new 
players[32], pnumtempid
    get_players
(playerspnum)
    
    new 
name2[32]
    
get_user_name(idname231)
    
    if(
item == || item == 1)
    {
        new 
bool:mute false
        
if(item == 0mute true
        
        
for(new ii<pnumi++)
        {
            
tempid players[i]
            
            if(!
user_has_flag(tempidcvar_adminflag))
                
set_mute(idtempidmute true false)
        }
        
        
ClientPrintColor(id"%s^1You have ^4[^3%smuted^4] ^1all players!"szPrefixmute "" "un"
        if(
get_pcvar_num(cvar_sounds) == 1user_spksound(idmute sMute sUnmute)
    }
    else
    {
        new 
player find_player("k"userid)
        
        if(
player)
        {
            if(!
user_has_flag(playercvar_adminflag))
            {
                
switch_mute(idplayer)
                
mute_msg(idplayer)
            }
            else 
immune(id)
        }
    }
    
    
menu_destroy(mutemenu)
    if(
get_pcvar_num(cvar_reopen) == 1menu_mute(id)
    return 
PLUGIN_HANDLED
}

public 
immune(id)
{
    
ClientPrintColor(id"%s^1You can't ^4mute ^1player who has ^4[^3VIP^4/^3ADMIN^4] ^1privileges."szPrefix
    
user_spksound(idsUnmute)
}

public 
mute_msg(idplayer)
{
    new 
name[32], name2[32]
    
get_user_name(idnamecharsmax(name))
    
get_user_name(playername2charsmax(name2))
    
    new 
mute get_mute(idplayer)
    
    
ClientPrintColor(id"%s^1You have ^4[^3%smuted^4] ^1player ^3%s^1."szPrefixmute "" "un"name2
    
log_amx("Player %s %smuted %s"namemute "" "un"name2)
    
    if(
get_pcvar_num(cvar_sounds) == 1)
        
user_spksound(idmute sMute sUnmute)
}

stock set_mute(idplayerbool:mute)
    
muted[id][player] = mute true false

stock get_mute
(idplayer)
    return 
muted[id][player] ? true false

stock switch_mute
(idplayer)
    
set_mute(idplayerget_mute(idplayer) ? false true)
    
stock user_has_flag(idcvar)
{
    new 
flags[32]
    
get_flags(get_user_flags(id), flagscharsmax(flags))
    
    new 
vip_flag[2]
    
get_pcvar_string(cvarvip_flagcharsmax(vip_flag))
    
    return (
contain(flagsvip_flag) != -1) ? true false
}

stock user_spksound(idsound[])
    
client_cmd(id"spk %s"sound)

public 
plugin_precache()
{
    
precache_sound(sMute)
    
precache_sound(sUnmute)
}

ClientPrintColoridString[ ], any:... ){ 
    new 
szMsg190 ]; 
    
vformatszMsgcharsmaxszMsg ), String); 
     
    
replace_allszMsgcharsmaxszMsg ), "!n""^1" ); 
    
replace_allszMsgcharsmaxszMsg ), "!t""^3" ); 
    
replace_allszMsgcharsmaxszMsg ), "!g""^4" ); 
     
    static 
msgSayText 0
    static 
fake_user
     
    if( !
msgSayText 
    { 
        
msgSayText get_user_msgid"SayText" ); 
        
fake_user get_maxplayers( ) + 1
    } 
     
    
message_beginid MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText_id ); 
    
write_byteid id fake_user ); 
    
write_stringszMsg ); 
    
message_end( ); 



wickedd 09-08-2015 18:21

Re: [Help Req] VIP Commands
 
PHP Code:

#define VIP_FLAGS ADMIN_KICK 

Add that to the top of the plugin.

PHP Code:

if( !( get_user_flagsid ) & /*VIP_FLAGS*/ ) ) 

:arrow:

PHP Code:

if( ( get_user_flagsid ) & VIP_FLAGS ) ) 

Then that's it.

P.S. You can change the vip flags to any flags you want.

You can find Admin Constant here.


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

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