SPAM/FLOOD
#1

Hola, alguien sabe como hacer que en la funcion OnPlayerText no se pueda ingresar texto vacio ? texto vacio me refiero a que cuando uno en el chat solo le da a espacio y el chat lo toma como texto, y comumnmente se usa para hacer flood, ejemplo en el chat ( in - game )

Код:
WHEELMANDTS: 
WHEELMANDTS: 
WHEELMANDTS:
WHEELMANDTS: 
WHEELMANDTS:
hay alguna forma de evitar que se si no pone nada en el chat le salga un mensaje que no puede poner un mensaje en blanco ?
Reply
#2

si se puede usa strfind, strmid o strcmp con esto vasta https://sampwiki.blast.hk/wiki/Strfind
Reply
#3

Sino proba como lo que puse en mi AntiCheat :O
No estoy seguro si lo tomara con espacio pero proba asi
pawn Код:
public OnPlayerText(playerid, text[])
{
static LastText[MAX_PLAYERS][128];
if(strfind(LastText[playerid], text, false) != -1) return SendClientMessage(playerid, Amarillo, "No intentes hacer FLOOD !"), 0;
strmid(LastText[playerid], text, 0, strlen(text), sizeof(LastText[]));
Reply
#4

Es simple, aquн lo que debes hacer.
  • creas una variable contenedora de "todos los carбcteres del teclado", un array multidimensional.
  • creas una variable que tenga el nъmero de carбcteres escritos en el chat, "strval".
  • usas el bucle "for" y haces que la variable creada por el bucle no pare hasta que sea mayor que la variable del punto "segundo".
  • nuevamente usas el bucle "for" y haces que la variable creada por el bucle llege a la cantidad de "cadenas" de la variable contenedora de "todos los carбcteres del teclado".
  • usas la estructura de control "if" para ver si la variable "text" contenedora del texto escrito (en el lugar de la variable creada por el bucle "for" nъmero 1) es igual a la variable contenedora de "todos los carбcteres del teclado" (en el lugar de la variable creada por el bucle "for" nъmero 2).
  • colocas si se cumple la funciуn que se envie el mensaje normalmente.
  • esto es opcional, si quieres usas la estructura de control "else" para contradecir la condiciуn del "if", puedes enviar un error.
Bueno, si no entendiste avisas pero soy vastante entendible asн que entenderбs a menos que no conoscas los terminos que usй.
Reply
#5

Con strfind y strlen.
Reply
#6

Quote:

Es simple, aquн lo que debes hacer.

1є creas una variable contenedora de "todos los carбcteres del teclado", un array multidimensional.
2є creas una variable que tenga el nъmero de carбcteres escritos en el chat, "strval".
3є usas el bucle "for" y haces que la variable creada por el bucle no pare hasta que sea mayor que la variable del punto "segundo".
4є nuevamente usas el bucle "for" y haces que la variable creada por el bucle llege a la cantidad de "cadenas" de la variable contenedora de "todos los carбcteres del teclado".
5є usas la estructura de control "if" para ver si la variable "text" contenedora del texto escrito (en el lugar de la variable creada por el bucle "for" nъmero 1) es igual a la variable contenedora de "todos los carбcteres del teclado" (en el lugar de la variable creada por el bucle "for" nъmero 2).
6є colocas si se cumple la funciуn que se envie el mensaje normalmente.
7є esto es opcional, si quieres usas la estructura de control "else" para contradecir la condiciуn del "if", puedes enviar un error.


Bueno, si no entendiste avisas pero soy vastante entendible asн que entenderбs a menos que no conoscas los terminos que usй

Creo que estбs muy agrandado, pero bueno xD

En cuanto al cуdigo que pusieron, estб mal, pues si pongo estos 2 mensajes:

xD
y despuйs:

Hola que tal xD!

me cancelarнa ese mensaje.
Reply
#7

Quote:
Originally Posted by Stell4
Посмотреть сообщение
Creo que estбs muy agrandado, pero bueno xD

En cuanto al cуdigo que pusieron, estб mal, pues si pongo estos 2 mensajes:

xD
y despuйs:

Hola que tal xD!

me cancelarнa ese mensaje.
Claro pero nadie va a poner " "
Reply
#8

Quote:
Originally Posted by Stell4
Посмотреть сообщение
Creo que estбs muy agrandado, pero bueno xD

En cuanto al cуdigo que pusieron, estб mal, pues si pongo estos 2 mensajes:

xD
y despuйs:

Hola que tal xD!

me cancelarнa ese mensaje.
y como seria el correcto ?
Reply
#9

pawn Код:
public OnPlayerText(playerid,text[])
{
if(text[0] == ' ')
{
SendClientMessage(playerid,-1,"No intentes hacer flooD");
return 0;
}
return 1;
}
Eso funcionara si solo escriben un espacio
Reply
#10

Quote:
Originally Posted by WHEELMANDTS
Посмотреть сообщение
y como seria el correcto ?
No probastes con el que yo te di? ¬¬
Al menos deci si te funciona con 'ESPACIO' o no
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)