Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSProblem with this gag plugin


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
I use this plugin to mute and gag players. The problem is that when an admin gags a player and said player disconnects, when a new player joins that slot, he gets automatically gagged. Is there a way to avoid or fix this?

Thanks!

PHP Code:

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

#pragma semicolon 1
#define SZPREFIX "!g[CS 1.6]"

const OFFSET_CSMENUCODE 205;
const 
OFFSET_MENU_OFFSET 5;

enum _:MUTE_STRUCT
{
    
MICROPHONE,
    
CHAT,
    
GAGGED
};

enum _:GAG_STRUCT
{
    
PLAYER,
    
TARGET,
    
TIME
};

new const 
TITTLE_MENUES[][] = { "MICROPHONE""CHAT""ALL \d[GAG]" };

new 
g_mute[33][MUTE_STRUCT][33];
new 
g_gag[33][GAG_STRUCT];
new 
g_page[33];
new 
g_maxplayers[1 char];
new 
g_msgsaytext;

public 
plugin_init()
{
    
register_plugin("Mute Menú""1.0""Cristian'");
    
    
register_clcmd("say""clcmd_say");
    
register_clcmd("say_team""clcmd_say");
    
register_clcmd("say /mute""clcmd_mute");
    
register_clcmd("say_team /mute""clcmd_mute");
    
register_clcmd("AMORDAZAR_TIEMPO""clcmd_gag");
    
    
register_forward(FM_Voice_SetClientListening"fw_Voice_SetClientListening");
    
    
g_msgsaytext get_user_msgid("SayText");
    
register_message(g_msgsaytext"message_saytext");
    
    
g_maxplayers{0} = get_maxplayers();
    
    
set_task(120.0"print_message"0__"b");
}

public 
print_message()
    
chat_color(0"%s !yMUTE !g/MUTE"SZPREFIX);
    
public 
clcmd_say(id)
{
    if (
g_gag[id][PLAYER])
    {
        
chat_color(id"%s !yYou are muted. Can't speak or use the chat"SZPREFIX);
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}
    
public 
clcmd_mute(id)
{
    static 
menu;
    
menu menu_create("\r[Vtl] \yMute Menu ""handled_clcmd_mute");
    
    
menu_additem(menu"Silence microphone""1"0);
    
menu_additem(menu"Silence chat""2"0);
    
    if (
get_user_flags(id) & ADMIN_RCON)
        
menu_additem(menu"Gag a player""3"0);
    
    
menu_display(idmenu);
    return 
PLUGIN_HANDLED;
}

public 
handled_clcmd_mute(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return;
    }
    
    
g_page[id] = item;
    
show_menu_players(id);
    
    
menu_destroy(menu);
}

public 
show_menu_players(id)
{
    static 
menuisztext[128], num[7], name[32];
    
format(sztextcharsmax(sztext), "\yMUTE %s"TITTLE_MENUES[g_page[id]]);
    
menu menu_create(sztext"handled_show_players");
    
    switch(
g_page[id])
    {
        case 
MICROPHONE:
        {
            for (
1<= g_maxplayers{0}; i++)
            {
                if (!
is_user_connected(i))
                    continue;
                
                if (
== id)
                    continue;
                
                if (
get_user_flags(i) & ADMIN_RCON)
                    continue;
                
                
num_to_str(inumcharsmax(num));
                
get_user_name(inamecharsmax(name));
                
format(sztextcharsmax(sztext), "%s%s %s", (g_mute[id][MICROPHONE][i]) ? "\d" "\w"name, (g_mute[id][MICROPHONE][i]) ? "\y[MUTED]" "");
                
menu_additem(menusztextnum);
            }
        }
        case 
CHAT:
        {
            for (
1<= g_maxplayers{0}; i++)
            {
                if (!
is_user_connected(i))
                    continue;
                
                if (
== id)
                    continue;
                
                if (
get_user_flags(i) & ADMIN_RCON)
                    continue;
                
                
num_to_str(inumcharsmax(num));
                
get_user_name(inamecharsmax(name));
                
format(sztextcharsmax(sztext), "%s%s %s", (g_mute[id][CHAT][i]) ? "\d" "\w"name, (g_mute[id][CHAT][i]) ? "\y[MUTED]" "");
                
menu_additem(menusztextnum);
            }
        }
        case 
GAGGED:
        {
            if (!(
get_user_flags(id) & ADMIN_RCON))
            {
                
menu_destroy(menu);
                return;
            }
            
            for (
1<= g_maxplayers{0}; i++)
            {
                if (!
is_user_connected(i))
                    continue;
                
                if (
== id)
                    continue;
                
                if (
get_user_flags(i) & ADMIN_RCON)
                    continue;
                
                
num_to_str(inumcharsmax(num));
                
get_user_name(inamecharsmax(name));
                
format(sztextcharsmax(sztext), "%s%s %s", (g_gag[i][PLAYER]) ? "\d" "\w"name, (g_gag[i][PLAYER]) ? "[GAGGED]" "");
                
menu_additem(menusztextnum);
            }
        }
    }
    
    
menu_setprop(menuMPROP_BACKNAME"BACK");
    
menu_setprop(menuMPROP_NEXTNAME"NEXT");
    
menu_setprop(menuMPROP_EXITNAME"RETURN");
    
    
set_pdata_int(idOFFSET_CSMENUCODEfalseOFFSET_MENU_OFFSET);
    
    
menu_display(idmenu);
}

public 
handled_show_players(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
clcmd_mute(id);
        return;
    }
    
    static 
targetnum[7], callbackdataname[32];
    
menu_item_getinfo(menuitemdatanumcharsmax(num), __callback);
    
    
target str_to_num(num);
    
    if (
is_user_connected(target))
    {
        switch(
g_page[id])
        {
            case 
MICROPHONE:
            {
                
g_mute[id][MICROPHONE][target] = !(g_mute[id][MICROPHONE][target]);
                
                
get_user_name(targetnamecharsmax(name));
                
chat_color(id"%s !yYou %s the micropgone for !g%s!y."SZPREFIX, (g_mute[id][MICROPHONE][target]) ? "turned off" "turned on"name);
            }
            case 
CHAT:
            {
                
g_mute[id][CHAT][target] = !(g_mute[id][CHAT][target]);
                
                
get_user_name(targetnamecharsmax(name));
                
chat_color(id"%s !yYou %s chat for !g%s!y."SZPREFIX, (g_mute[id][CHAT][target]) ? "turned off" "turned on"name);
            }
            case 
GAGGED
            {
                if (!(
get_user_flags(id) & ADMIN_RCON))
                {
                    
menu_destroy(menu);
                    return;
                }
                
                if (
g_gag[target][PLAYER])
                {
                    static 
name[32], name2[32];
                    
get_user_name(idnamecharsmax(name));
                    
get_user_name(targetname2charsmax(name2));
                    
                    
chat_color(0"%s !g%s!y ungagged  !g%s!y."SZPREFIXnamename2);
                    
g_gag[target][PLAYER] = false;
                    return;
                }
                
                
g_gag[id][TARGET] = target;
                
client_cmd(id"messagemode ^"AMORDAZAR_TIEMPO^"");
            }
        }
    }
    else
        
chat_color(id"%s !yPlayer disconnected from the server"SZPREFIX);
    
    
menu_destroy(menu);
    
show_menu_players(id);
}

public 
clcmd_gag(id)
{
    if (!
g_gag[id][TARGET])
        return;
    
    static 
text[12], name[32], name2[32];
    
read_args(textcharsmax(text));
    
remove_quotes(text);
    
trim(text);
    
    if (!
isdigit(text[0]))
    {
        
chat_color(id"%s !yNumbers only."SZPREFIX);
        return;
    }
    
    if (!
strlen(text) || strlen(text) < 1)
    {
        
chat_color(id"%s !yValue higher than 0."SZPREFIX);
        return;
    }
    
    
get_user_name(idnamecharsmax(name));
    
get_user_name(g_gag[id][TARGET], name2charsmax(name2));
    
    
g_gag[id][TIME] = str_to_num(text);
    
g_gag[g_gag[id][TARGET]][PLAYER] = true;
    
    
chat_color(0"%s !g%s!y  %s!g%s!y for !g%d %s!y."SZPREFIXname2,
    
g_gag[id][TIME], (g_gag[id][TIME] > 1) ? "minutes" "minute");
    
    
set_task(float(g_gag[id][TIME]) * 60.0"task_player_gag"g_gag[id][TARGET]);
}

public 
task_player_gag(id)
{
    static 
name[32];
    
get_user_name(idnamecharsmax(name));
    
    
g_gag[id][PLAYER] = false;
    
chat_color(0"%s !yPlayer !g%s!y can write and speak again"SZPREFIXname);
}

public 
fw_Voice_SetClientListening(receiversenderlisten)
{
    if (
receiver == sender)
        return 
FMRES_IGNORED;
    
    if (
g_mute[receiver][MICROPHONE][sender] || g_gag[sender][PLAYER])
    {
        
engfunc(EngFunc_SetClientListeningreceiversenderfalse);
        return 
FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
message_saytext(msgiddestid)
{
    if (
g_mute[id][CHAT][get_msg_arg_int(1)])
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}

stock chat_color(id, const input[], any:...)
{
    static 
message[191];
    
vformat(message190input3);
    
    
replace_all(message190"!g""^4");
    
replace_all(message190"!t""^3");
    
replace_all(message190"!y""^1");
    
    
message_begin((id) ? MSG_ONE_UNRELIABLE MSG_BROADCASTget_user_msgid("SayText"), .player id);
    
write_byte((id) ? id 33);
    
write_string(message);
    
message_end();


Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...