Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
Como puedo cambiar el mute a un mute global para admin es que lo quiero poner solo para admin pero quiero que el mute sea global que todos dejemos de escuchar al jugador no solo el jugador que lanza el mute
Código PHP: #include <amxmodx> #include <amxmisc> #include <reapi>
#define PLUGIN "[ReAPI] Mute Menu" #define VERSION "1.0" #define AUTHOR "GabsHp"
//Creditos // g0ze: correción del userid
#define GetPlayerBit(%1,%2) (%1 & (1 << (%2 & 31))) #define SetPlayerBit(%1,%2) %1 |= (1 << (%2 & 31)) #define ClearPlayerBit(%1,%2) %1 &= ~(1 << (%2 & 31))
new g_maxPlayers, g_iConnected;
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); g_maxPlayers = get_maxplayers();
register_clcmd("say /mute", "muteMenu"); }
public client_putinserver(id) { SetPlayerBit(g_iConnected, id); }
public client_disconnected(id) { ClearPlayerBit(g_iConnected, id); }
public muteMenu(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED;
static iMenu, szTitle[32], szText[64], szIndex[ 16 ], bool:i_CanHear; formatex(szTitle, charsmax(szTitle), "\r[ReAPI] \wMute Menu");
iMenu = menu_create(szTitle, "muteMenu_Handler"); for(new i = 1; i <= g_maxPlayers; i++) { if(!GetPlayerBit(g_iConnected, i)) continue; if(i == id) continue; static szName[33]; get_user_name(i, szName, charsmax(szName)); i_CanHear = rg_get_can_hear_player(id, i); formatex(szText, charsmax(szText), "\y[\w%s\y] \r[\w%s\r]", szName, i_CanHear ? "ON" : "OFF"); formatex(szIndex, charsmax(szIndex), "%d#%d", i, get_user_userid(i));
menu_additem(iMenu, szText, szIndex); } menu_setprop(iMenu, MPROP_BACKNAME, "Atrás"); menu_setprop(iMenu, MPROP_NEXTNAME, "Siguiente"); menu_setprop(iMenu, MPROP_EXITNAME, "Salir"); menu_display(id, iMenu); return PLUGIN_HANDLED; }
public muteMenu_Handler(id, iMenu, iItem) { if((iItem == MENU_EXIT) || !GetPlayerBit(g_iConnected, id)) { menu_destroy( iMenu ); return PLUGIN_HANDLED; } new szInfo[16], szTarget[4], szUserId[8]; new iNum, iTarget, iUserId; menu_item_getinfo(iMenu, iItem, iNum, szInfo, charsmax(szInfo), _, _, iNum); menu_destroy( iMenu ); strtok(szInfo, szTarget, charsmax(szTarget), szUserId, charsmax(szUserId), '#'); iTarget = str_to_num(szTarget); iUserId = str_to_num(szUserId);
if (!GetPlayerBit(g_iConnected, iTarget) || (get_user_userid(iTarget) != iUserId)) { client_print_color(id, print_team_default, "^4[ReAPI]^1 El jugador al que seleccionaste ya no está conectado!"); muteMenu(id); return PLUGIN_HANDLED; } static szName[32], bool:i_CanHear; i_CanHear = rg_get_can_hear_player(id, iTarget); get_user_name(iTarget, szName, charsmax(szName)); switch(i_CanHear) { case true: { rg_set_can_hear_player(id, iTarget, false); client_print_color(id, print_team_default, "^4[ReAPI]^1 Has ^4muteado^1 al jugador ^4%s^1!", szName); } case false: { rg_set_can_hear_player(id, iTarget, true); client_print_color(id, print_team_default, "^4[ReAPI]^1 Has ^4desmuteado^1 al jugador ^4%s^1!", szName); } } muteMenu(id); return PLUGIN_HANDLED; }
Pawn Básico no critiquen xD
Mensajes: 165
Temas: 23
Registro en: Oct 2018
Reputación:
0
12/06/2021, 01:01 AM
(Última modificación: 12/06/2021, 01:01 AM por CARNAGE.)
(12/06/2021, 12:35 AM)Meliodas escribió: Como puedo cambiar el mute a un mute global para admin es que lo quiero poner solo para admin pero quiero que el mute sea global que todos dejemos de escuchar al jugador no solo el jugador que lanza el mute
Código PHP: #include <amxmodx> #include <amxmisc> #include <reapi>
#define PLUGIN "[ReAPI] Mute Menu" #define VERSION "1.0" #define AUTHOR "GabsHp"
//Creditos // g0ze: correción del userid
#define GetPlayerBit(%1,%2) (%1 & (1 << (%2 & 31))) #define SetPlayerBit(%1,%2) %1 |= (1 << (%2 & 31)) #define ClearPlayerBit(%1,%2) %1 &= ~(1 << (%2 & 31))
new g_maxPlayers, g_iConnected;
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); g_maxPlayers = get_maxplayers();
register_clcmd("say /mute", "muteMenu"); }
public client_putinserver(id) { SetPlayerBit(g_iConnected, id); }
public client_disconnected(id) { ClearPlayerBit(g_iConnected, id); }
public muteMenu(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED;
static iMenu, szTitle[32], szText[64], szIndex[ 16 ], bool:i_CanHear; formatex(szTitle, charsmax(szTitle), "\r[ReAPI] \wMute Menu");
iMenu = menu_create(szTitle, "muteMenu_Handler"); for(new i = 1; i <= g_maxPlayers; i++) { if(!GetPlayerBit(g_iConnected, i)) continue; if(i == id) continue; static szName[33]; get_user_name(i, szName, charsmax(szName)); i_CanHear = rg_get_can_hear_player(id, i); formatex(szText, charsmax(szText), "\y[\w%s\y] \r[\w%s\r]", szName, i_CanHear ? "ON" : "OFF"); formatex(szIndex, charsmax(szIndex), "%d#%d", i, get_user_userid(i));
menu_additem(iMenu, szText, szIndex); } menu_setprop(iMenu, MPROP_BACKNAME, "Atrás"); menu_setprop(iMenu, MPROP_NEXTNAME, "Siguiente"); menu_setprop(iMenu, MPROP_EXITNAME, "Salir"); menu_display(id, iMenu); return PLUGIN_HANDLED; }
public muteMenu_Handler(id, iMenu, iItem) { if((iItem == MENU_EXIT) || !GetPlayerBit(g_iConnected, id)) { menu_destroy( iMenu ); return PLUGIN_HANDLED; } new szInfo[16], szTarget[4], szUserId[8]; new iNum, iTarget, iUserId; menu_item_getinfo(iMenu, iItem, iNum, szInfo, charsmax(szInfo), _, _, iNum); menu_destroy( iMenu ); strtok(szInfo, szTarget, charsmax(szTarget), szUserId, charsmax(szUserId), '#'); iTarget = str_to_num(szTarget); iUserId = str_to_num(szUserId);
if (!GetPlayerBit(g_iConnected, iTarget) || (get_user_userid(iTarget) != iUserId)) { client_print_color(id, print_team_default, "^4[ReAPI]^1 El jugador al que seleccionaste ya no está conectado!"); muteMenu(id); return PLUGIN_HANDLED; } static szName[32], bool:i_CanHear; i_CanHear = rg_get_can_hear_player(id, iTarget); get_user_name(iTarget, szName, charsmax(szName)); switch(i_CanHear) { case true: { rg_set_can_hear_player(id, iTarget, false); client_print_color(id, print_team_default, "^4[ReAPI]^1 Has ^4muteado^1 al jugador ^4%s^1!", szName); } case false: { rg_set_can_hear_player(id, iTarget, true); client_print_color(id, print_team_default, "^4[ReAPI]^1 Has ^4desmuteado^1 al jugador ^4%s^1!", szName); } } muteMenu(id); return PLUGIN_HANDLED; }
Código PHP: rg_set_can_hear_player(id, iTarget, false);
-------------------------------------->
Código PHP: rg_set_can_hear_player(0, iTarget, false); -> id = jugador, 0 = todos
Para el menu
Código PHP: public muteMenu(id) { if(!is_user_connected(id) && !is_user_admin(id)) return PLUGIN_HANDLED;
static iMenu, szTitle[32], szText[64], szIndex[ 16 ], bool:i_CanHear; formatex(szTitle, charsmax(szTitle), "\r[ReAPI] \wMute Menu");
iMenu = menu_create(szTitle, "muteMenu_Handler"); for(new i = 1; i <= g_maxPlayers; i++) { if(!GetPlayerBit(g_iConnected, i)) continue; if(i == id) continue; static szName[33]; get_user_name(i, szName, charsmax(szName)); i_CanHear = rg_get_can_hear_player(id, i); formatex(szText, charsmax(szText), "\y[\w%s\y] \r[\w%s\r]", szName, i_CanHear ? "ON" : "OFF"); formatex(szIndex, charsmax(szIndex), "%d#%d", i, get_user_userid(i));
menu_additem(iMenu, szText, szIndex); } menu_setprop(iMenu, MPROP_BACKNAME, "Atrás"); menu_setprop(iMenu, MPROP_NEXTNAME, "Siguiente"); menu_setprop(iMenu, MPROP_EXITNAME, "Salir"); menu_display(id, iMenu); return PLUGIN_HANDLED; }
Desde el cel
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
(12/06/2021, 01:01 AM)CARNAGE escribió: Código PHP: rg_set_can_hear_player(id, iTarget, false);
-------------------------------------->
Código PHP: rg_set_can_hear_player(0, iTarget, false); -> id = jugador, 0 = todos
Para el menu
Código PHP: public muteMenu(id) { if(!is_user_connected(id) && !is_user_admin(id)) return PLUGIN_HANDLED;
static iMenu, szTitle[32], szText[64], szIndex[ 16 ], bool:i_CanHear; formatex(szTitle, charsmax(szTitle), "\r[ReAPI] \wMute Menu");
iMenu = menu_create(szTitle, "muteMenu_Handler"); for(new i = 1; i <= g_maxPlayers; i++) { if(!GetPlayerBit(g_iConnected, i)) continue; if(i == id) continue; static szName[33]; get_user_name(i, szName, charsmax(szName)); i_CanHear = rg_get_can_hear_player(id, i); formatex(szText, charsmax(szText), "\y[\w%s\y] \r[\w%s\r]", szName, i_CanHear ? "ON" : "OFF"); formatex(szIndex, charsmax(szIndex), "%d#%d", i, get_user_userid(i));
menu_additem(iMenu, szText, szIndex); } menu_setprop(iMenu, MPROP_BACKNAME, "Atrás"); menu_setprop(iMenu, MPROP_NEXTNAME, "Siguiente"); menu_setprop(iMenu, MPROP_EXITNAME, "Salir"); menu_display(id, iMenu); return PLUGIN_HANDLED; }
Desde el cel me sale esto en consola
Código PHP: L 06/12/2021 - 01:17:28: [ReAPI] rg_set_can_hear_player: invalid player index 0 [arg_listener]
L 06/12/2021 - 01:17:28: [AMXX] Displaying debug trace (plugin "Pre-Mute.amxx", version "1.0")
L 06/12/2021 - 01:17:28: [AMXX] Run time error 10: native error (native "rg_set_can_hear_player")
L 06/12/2021 - 01:17:28: [AMXX] [0] Pre-Mute.sma::muteMenu_Handler (line 103)
Pawn Básico no critiquen xD
Mensajes: 148
Temas: 8
Registro en: May 2020
Reputación:
1
(12/06/2021, 12:35 AM)Meliodas escribió: Como puedo cambiar el mute a un mute global para admin es que lo quiero poner solo para admin pero quiero que el mute sea global que todos dejemos de escuchar al jugador no solo el jugador que lanza el mute
(06/07/2016, 12:24 AM)Cristian escribió: Bueno, ya que ando muy retirado de la programación (AMXX) voy a publicar este plugin que hice hace tiempo, que consiste en un mute que mutear CHAT y MICRÓFONO, aparte de tener incorporado la opción de amordazar / desamordazar mediante menú (SOLO ADMIN). Espero que les sea útil.
Código PHP: #include <amxmodx> #include <amxmisc> #include <fakemeta>
#pragma semicolon 1 #define SZPREFIX "!g[MUTE]"
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[][] = { "MICRÓFONO", "CHAT", "TODO \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 !yEscribí !g/mute!y para silenciar a un jugador molesto.", SZPREFIX); public clcmd_say(id) { if (g_gag[id][PLAYER]) { chat_color(id, "%s !yEstás amordazado. No podés hablar ni escribir.", SZPREFIX); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public clcmd_mute(id) { static menu; menu = menu_create("\r[MUTE] \yMUTE MENÚ", "handled_clcmd_mute"); menu_additem(menu, "SILENCIAR MICRÓFONO", "1", 0); menu_additem(menu, "SILENCIAR CHAT", "2", 0); if (is_user_admin(id)) menu_additem(menu, "AMORDAZAR JUGADOR", "3", 0); menu_display(id, menu); return PLUGIN_HANDLED; }
public handled_clcmd_mute(id, menu, item) { 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 menu, i, sztext[128], num[7], name[32]; format(sztext, charsmax(sztext), "\ySILENCIAR %s", TITTLE_MENUES[g_page[id]]); menu = menu_create(sztext, "handled_show_players"); switch(g_page[id]) { case MICROPHONE: { for (i = 1; i <= g_maxplayers{0}; i++) { if (!is_user_connected(i)) continue; if (i == id) continue; if (get_user_flags(i) & ADMIN_IMMUNITY) continue; num_to_str(i, num, charsmax(num)); get_user_name(i, name, charsmax(name)); format(sztext, charsmax(sztext), "%s%s %s", (g_mute[id][MICROPHONE][i]) ? "\d" : "\w", name, (g_mute[id][MICROPHONE][i]) ? "\y[SILENCIADO]" : ""); menu_additem(menu, sztext, num); } } case CHAT: { for (i = 1; i <= g_maxplayers{0}; i++) { if (!is_user_connected(i)) continue; if (i == id) continue; if (get_user_flags(i) & ADMIN_IMMUNITY) continue; num_to_str(i, num, charsmax(num)); get_user_name(i, name, charsmax(name)); format(sztext, charsmax(sztext), "%s%s %s", (g_mute[id][CHAT][i]) ? "\d" : "\w", name, (g_mute[id][CHAT][i]) ? "\y[SILENCIADO]" : ""); menu_additem(menu, sztext, num); } } case GAGGED: { if (!is_user_admin(id)) { menu_destroy(menu); return; } for (i = 1; i <= g_maxplayers{0}; i++) { if (!is_user_connected(i)) continue; if (i == id) continue; if (get_user_flags(i) & ADMIN_IMMUNITY) continue; num_to_str(i, num, charsmax(num)); get_user_name(i, name, charsmax(name)); format(sztext, charsmax(sztext), "%s%s %s", (g_gag[i][PLAYER]) ? "\d" : "\w", name, (g_gag[i][PLAYER]) ? "[AMORDAZADO]" : ""); menu_additem(menu, sztext, num); } } } menu_setprop(menu, MPROP_BACKNAME, "ATRÁS"); menu_setprop(menu, MPROP_NEXTNAME, "SIGUIENTE"); menu_setprop(menu, MPROP_EXITNAME, "VOLVER"); set_pdata_int(id, OFFSET_CSMENUCODE, false, OFFSET_MENU_OFFSET); menu_display(id, menu); }
public handled_show_players(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu); clcmd_mute(id); return; } static target, num[7], callback, data, name[32]; menu_item_getinfo(menu, item, data, num, charsmax(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(target, name, charsmax(name)); chat_color(id, "%s !yLe %s el micrófono a !g%s!y.", SZPREFIX, (g_mute[id][MICROPHONE][target]) ? "deshabilitaste" : "habilitaste", name); } case CHAT: { g_mute[id][CHAT][target] = !(g_mute[id][CHAT][target]); get_user_name(target, name, charsmax(name)); chat_color(id, "%s !yLe %s el chat a !g%s!y.", SZPREFIX, (g_mute[id][CHAT][target]) ? "deshabilitaste" : "habilitaste", name); } case GAGGED: { if (!is_user_admin(id)) { menu_destroy(menu); return; } if (g_gag[target][PLAYER]) { static name[32], name2[32]; get_user_name(id, name, charsmax(name)); get_user_name(target, name2, charsmax(name2)); chat_color(0, "%s !g%s!y desamordazó a !g%s!y.", SZPREFIX, name, name2); g_gag[target][PLAYER] = false; return; } g_gag[id][TARGET] = target; client_cmd(id, "messagemode ^"AMORDAZAR_TIEMPO^""); } } } else chat_color(id, "%s !yEl jugador que seleccionaste se desconectó del servidor.", 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(text, charsmax(text)); remove_quotes(text); trim(text); if (!isdigit(text[0])) { chat_color(id, "%s !ySólo números.", SZPREFIX); return; } if (!strlen(text) || strlen(text) < 1) { chat_color(id, "%s !yTenés que poner un valor mayor a 0.", SZPREFIX); return; } get_user_name(id, name, charsmax(name)); get_user_name(g_gag[id][TARGET], name2, charsmax(name2)); g_gag[id][TIME] = str_to_num(text); g_gag[g_gag[id][TARGET]][PLAYER] = true; chat_color(0, "%s !g!g%s!y fue amordazado para que no pueda hablar/escribir durante !g%d %s!y.", SZPREFIX, name2, g_gag[id][TIME], (g_gag[id][TIME] > 1) ? "minutos" : "minuto"); 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(id, name, charsmax(name)); g_gag[id][PLAYER] = false; chat_color(0, "%s !yEl jugador !g%s!y ya puede volver a hablar / escribir.", SZPREFIX, name); }
public fw_Voice_SetClientListening(receiver, sender, listen) { if (receiver == sender) return FMRES_IGNORED; if (g_mute[receiver][MICROPHONE][sender] || g_gag[sender][PLAYER]) { engfunc(EngFunc_SetClientListening, receiver, sender, false); return FMRES_SUPERCEDE; } return FMRES_IGNORED; }
public message_saytext(msgid, dest, id) { 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(message, 190, input, 3); replace_all(message, 190, "!g", "^4"); replace_all(message, 190, "!t", "^3"); replace_all(message, 190, "!y", "^1"); message_begin((id) ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, get_user_msgid("SayText"), .player = id); write_byte((id) ? id : 33); write_string(message); message_end(); }
www.GameHost.com.ar
Discord: Luzbe#6650
(05/06/2021, 01:07 AM)Hinami escribió: SON LIBRES DE PODER USAR EL PANEL, PERO EVITEN SER RATAS Y PONER QUE LO HICIERON USTEDES (DIRIGIDO A VENEZOLANOS EN GENERAL).
(09/02/2020, 06:08 PM)Skylar escribió: Capo, tu vida no nos interesa para que nos estemos informando, asi que cerra la cola
Mensajes: 200
Temas: 56
Registro en: Oct 2020
Reputación:
1
me gustaria usar el q publique pero con el mute global
Pawn Básico no critiquen xD
|