Mensajes: 2,105
Temas: 196
Registro en: Mar 2014
Reputación:
13
Mensajes: 860
Temas: 16
Registro en: Oct 2013
Reputación:
8
(01/10/2014, 08:12 PM)K.- escribió: Proba :
Código PHP: /* Plugin generated by AMXX-Studio */
#include <amxmodx>
#define PLUGIN "Plugin" #define VERSION "1.0" #define AUTHOR "Kira.-'"
new const RESTRINGED_CHARS[] = "%"
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) // Add your code here... }
public client_putinserver(id) { static i, name[32] get_user_name(id, name, charsmax(name)) for (i = 0; i < sizeof(RESTRINGED_CHARS); i++) { if (contain(name, RESTRINGED_CHARS[i]) != -1) { server_cmd("kick #%d ^"Nombre invalido, no se permite el simbolo %s ^"", get_user_userid(id), RESTRINGED_CHARS[i]) break } } }
Obviamente adaptalo pero solo sirve si entras con el nick y cuando estoy adentro me lo cambio? te saco. Igual la solucion es saca el xredirect , no voy a explicar como se hace el bug porque ya veo 8 millones de personas publicando.
Mensajes: 2,105
Temas: 196
Registro en: Mar 2014
Reputación:
13
Mensajes: 2,497
Temas: 20
Registro en: Oct 2014
Reputación:
26
(01/10/2014, 10:02 PM)K.- escribió: entonces connect en ves des putinserver..
No entiendo bien para q funciona el loop en el code.
Aca esta un code que hice para bloquear el caracter "*" para un miembro del foro en ingles: no serviria tambien?
Código PHP: /* Plugin generated by AMXX-Studio */
#include <amxmodx>
#define PLUGIN "AutoBan" #define VERSION "1.0" #define AUTHOR "Autor"
public plugin_init() register_plugin(PLUGIN, VERSION, AUTHOR)
public client_connect(id) set_task(0.1, "Ban", id)
public Ban(id) { new name[31] get_user_info(id, "name", name, 30) client_print(id, print_chat, "name: %s", name) if(contain(name, "*") != -1) { new ip[50] get_user_ip(id, ip, 49) log_amx("Banned IP: %s", ip) server_cmd("amx_addban ^"%s^" ^"0^"", ip) } return PLUGIN_HANDLED }
Mensajes: 860
Temas: 16
Registro en: Oct 2013
Reputación:
8
Tenes que checkear el cambio de nombre . Como dije si entro me pongo * no me hace nada.
Se estan llendo del tema igual.
Mensajes: 141
Temas: 18
Registro en: Aug 2014
Reputación:
2
Creo que el tema en lo que iba se fue un poquito al carajo, ya buscare la forma de que el flaco no pueda expulsar mas a los jugadores.
Por ahora ya tengo fixeado lo que es %s en say y nick(en duda, pero lo testee y no los expulsa)
Seguire googleando tratando de encontrar los bugs que haya, así no pueden causar mas eso en mis servers o en los de otros.
/Cierren (?
Mensajes: 1,182
Temas: 160
Registro en: Oct 2013
Reputación:
5
02/10/2014, 06:27 AM
(Última modificación: 02/10/2014, 06:29 AM por xPecie.)
Fix: say_team @ %s%s%s%s
Este:
Código PHP: #include <amxmodx> #include <amxmisc>
new g_msgChannel
#define MAX_CLR 10
new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"} new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}} new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}
new amx_show_activity; new g_AdminChatFlag = ADMIN_CHAT;
public plugin_init() { new admin_chat_id register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team") register_dictionary("adminchat.txt") register_dictionary("common.txt") register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message") register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins") register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players") admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins") register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message") register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players") register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players") amx_show_activity = get_cvar_pointer("amx_show_activity"); if (amx_show_activity == 0) { amx_show_activity = register_cvar("amx_show_activity", "2"); } new str[1] get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1) }
public cmdSayChat(id) { if (!access(id, g_AdminChatFlag)) { return PLUGIN_CONTINUE } new said[6], i = 0 read_argv(1, said, 5) while (said[i] == '@') { i++ } if (!i || i > 3) { return PLUGIN_CONTINUE } new message[192], a = 0 read_args(message, 191) remove_quotes(message) switch (said[i]) { case 'r': a = 1 case 'g': a = 2 case 'b': a = 3 case 'y': a = 4 case 'm': a = 5 case 'c': a = 6 case 'o': a = 7 } new n, s = i if (a) { n++ s++ } while (said[s] && isspace(said[s])) { n++ s++ } new name[32], authid[32], userid get_user_authid(id, authid, 31) get_user_name(id, name, 31) userid = get_user_userid(id) log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n]) log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a]) if (++g_msgChannel > 6 || g_msgChannel < 3) { g_msgChannel = 3 } new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0 set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15 ) switch ( get_pcvar_num(amx_show_activity) ) { case 3, 4: { new maxpl = get_maxplayers(); for (new pl = 1; pl <= maxpl; pl++) { if (is_user_connected(pl) && !is_user_bot(pl)) { if (is_user_admin(pl)) { show_hudmessage(pl, "%s : %s", name, message[i + n]) client_print(pl, print_notify, "%s : %s", name, message[i + n]) } else { show_hudmessage(pl, "%s", message[i + n]) client_print(pl, print_notify, "%s", message[i + n]) } } } } case 2: { show_hudmessage(0, "%s : %s", name, message[i + n]) client_print(0, print_notify, "%s : %s", name, message[i + n]) } default: { show_hudmessage(0, "%s", message[i + n]) client_print(0, print_notify, "%s", message[i + n]) } }
return PLUGIN_HANDLED }
public cmdSayAdmin(id) { new said[2] read_argv(1, said, 1)
if (said[0] != '@') return PLUGIN_CONTINUE new message[192], name[32], authid[32], userid new players[32], inum read_args(message, 191) remove_quotes(message) // bug fix replace_all(message,191,"%","") get_user_authid(id, authid, 31) get_user_name(id, name, 31) userid = get_user_userid(id) log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1]) log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1]) if (is_user_admin(id)) format(message, 191, "(%L) %s : %s", id, "ADMIN", name, message[1]) else format(message, 191, "(%L) %s : %s", id, "PLAYER", name, message[1]) get_players(players, inum) for (new i = 0; i < inum; ++i) { // dont print the message to the client that used the cmd if he has ADMIN_CHAT to avoid double printing if (players[i] != id && get_user_flags(players[i]) & g_AdminChatFlag) client_print(players[i], print_chat, "%s", message) } client_print(id, print_chat, "%s", message) return PLUGIN_HANDLED }
public cmdChat(id, level, cid) { if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED new message[192], name[32], players[32], inum, authid[32], userid read_args(message, 191) remove_quotes(message) get_user_authid(id, authid, 31) get_user_name(id, name, 31) userid = get_user_userid(id) get_players(players, inum) log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message) log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message) format(message, 191, "(ADMINS) %s : %s", name, message) console_print(id, "%s", message) for (new i = 0; i < inum; ++i) { if (access(players[i], g_AdminChatFlag)) client_print(players[i], print_chat, "%s", message) } return PLUGIN_HANDLED }
public cmdSay(id, level, cid) { if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED new message[192], name[32], authid[32], userid read_args(message, 191) remove_quotes(message) get_user_authid(id, authid, 31) get_user_name(id, name, 31) userid = get_user_userid(id) client_print(0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message) console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message) log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message) log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message) return PLUGIN_HANDLED }
public cmdPsay(id, level, cid) { if (!cmd_access(id, level, cid, 3)) return PLUGIN_HANDLED new name[32] read_argv(1, name, 31) new priv = cmd_target(id, name, 0) if (!priv) return PLUGIN_HANDLED new length = strlen(name) + 1 get_user_name(priv, name, 31); new message[192], name2[32], authid[32], authid2[32], userid, userid2 get_user_authid(id, authid, 31) get_user_name(id, name2, 31) userid = get_user_userid(id) read_args(message, 191) if (message[0] == '"' && message[length] == '"') // HLSW fix { message[0] = ' ' message[length] = ' ' length += 2 } remove_quotes(message[length]) get_user_name(priv, name, 31) if (id && id != priv) client_print(id, print_chat, "(%s) %s : %s", name, name2, message[length]) client_print(priv, print_chat, "(%s) %s : %s", name, name2, message[length]) console_print(id, "(%s) %s : %s", name, name2, message[length]) get_user_authid(priv, authid2, 31) userid2 = get_user_userid(priv) log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length]) log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length]) return PLUGIN_HANDLED }
public cmdTsay(id, level, cid) { if (!cmd_access(id, level, cid, 3)) return PLUGIN_HANDLED new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0 read_argv(0, cmd, 15) new bool:tsay = (tolower(cmd[4]) == 't') read_args(message, 191) remove_quotes(message) parse(message, color, 15) new found = 0, a = 0 new lang[3], langnum = get_langsnum() for (new i = 0; i < MAX_CLR; ++i) { for (new j = 0; j < langnum; j++) { get_lang(j, lang) format(color2, 15, "%L", lang, g_Colors[i]) if (equali(color, color2)) { a = i found = 1 break } } if (found == 1) break } new length = found ? (strlen(color) + 1) : 0 if (++g_msgChannel > 6 || g_msgChannel < 3) g_msgChannel = 3 new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0 get_user_authid(id, authid, 31) get_user_name(id, name, 31) userid = get_user_userid(id) set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15 ) switch ( get_pcvar_num(amx_show_activity) ) { case 3, 4: { new maxpl = get_maxplayers(); for (new pl = 1; pl <= maxpl; pl++) { if (is_user_connected(pl) && !is_user_bot(pl)) { if (is_user_admin(pl)) { show_hudmessage(pl, "%s : %s", name, message[length]) client_print(pl, print_notify, "%s : %s", name, message[length]) } else { show_hudmessage(pl, "%s", message[length]) client_print(pl, print_notify, "%s", message[length]) } } } console_print(id, "%s : %s", name, message[length]) } case 2: { show_hudmessage(0, "%s : %s", name, message[length]) client_print(0, print_notify, "%s : %s", name, message[length]) console_print(id, "%s : %s", name, message[length]) } default: { show_hudmessage(0, "%s", message[length]) client_print(0, print_notify, "%s", message[length]) console_print(id, "%s", message[length]) } } log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length]) log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)
return PLUGIN_HANDLED }
Lo puse en entre y Código PHP: get_user_authid(id, authid, 31)
Eso fixea que no tiren a los admins, ahora bien, si tienes un chat color puedes hacer esto también.
En el encontramos esto Código PHP: read_args(message, 191) remove_quotes(message)
pues debajo ponemos: Código PHP: replace_all(message,191,"%"," ")
// Esto es lo que fixea el %s%s%s%s que salen palabras chinas...y ya...si tu problema es el FLOOD, pues puede ser un fullupdate y para bloquearlo utiliza esto: https://forums.alliedmods.net/showthread.php?t=4407
También el lag puede ser producido por el fake players, pero eso se supone que en la nueva versión ya no sirve para nada, descartado.
Bueno cuentanos como te va!
Saludos!
Mensajes: 860
Temas: 16
Registro en: Oct 2013
Reputación:
8
Bueno la cosa es asi existe una forma de pasar el bloqueo de nick y tambien el fix del % que ya viene apenas instalas el amx. Obiamente bugeandolo con muchas peticiones que alfinal se termina cambiando el nombre , pero eso solo hace cambiar el name , xredirect cuando una persona es redireccionada printea en el chat el nombre de la persona mas un texto largo por lo tanto si el nombre de la persona tiene %..... ya saben lo que pasa. Saca el xredirect , si tenes conocimientos modificalo.
Pd: te conteste por aca asi si otra persona tiene el mismo problema , puede.solucionarlo
Mensajes: 63
Temas: 1
Registro en: Sep 2014
Reputación:
1
02/10/2014, 01:10 PM
(Última modificación: 02/10/2014, 01:12 PM por TheAssasin.)
#offtopic
Estais cambaindo de tema...
Borrar mensaje
Mensajes: 246
Temas: 61
Registro en: Jun 2014
Reputación:
0
podrian poner los .sma ya fixeado para los que no entendemos nada ? :S
hasta donde llegamos hoy?
Mensajes: 141
Temas: 18
Registro en: Aug 2014
Reputación:
2
Ya lo pasaron arriba 11naracus.
Encontre un bug, que sobrepasa los fixs del chat.
¿Que quiero decir con eso?
Si, que fixeado, se puede usar cualquier tipo de simbolo o demas ya bloqueado.
Voy a tratar de fixearlo y despues lo paso, para evitar que este muy publicamente, quizas mucho lo saben, pero no la mayoria y los daños que podrían causar.
Mensajes: 342
Temas: 11
Registro en: Apr 2014
Que quilombo esto... en fin, leyendo el thread, no puedo entender cómo hacen para tagear "%" ...
|