problema con strfind -
zuphuroo - 24.09.2010
bueno estoy empezando a usar strfind y me salio un problema
la idea es que la funcion strfind intervenga en la funcion sendclientmessage
lo logre

, pero aqui el problema al ser un SendClientMessage basico
EJ: si el strfind buscara la palabra "hola"
Quote:
SendClientMessage(playerid,ROJO,"hola");
|
lo reconoce perfecto, pero a la hora de usar un string
Quote:
new string[5]:
new mensaje = hola;
format(string,sizeof(string),"%s", mensaje);
SendClientMessage(playerid,ROJO,string);
|
PD: el string[5]: es solo un ejemplo (para evitar confuciones)
no me lo reconoce, he aqui la pregunta
їComo hacer que el strfind tambien funcione cuando hay un string de por medio?
Saludos...
Respuesta: problema con strfind -
TheChaoz - 24.09.2010
tomando en cuenta que tu ejemplo esta mal, dado que le asignas un texto a una variable, cuando deberias asignarselo a un array, y que dices q tu problema esta con strfind y no dices cual fue tu problema xq en el ejemplo no has usado strfind, voy a darte un ejemplo de como usar strfind.
pawn Код:
public OnFilterScriptInit()
{
new string[20], substring[8], pos;//definicion de arrays y una variable
string = "Este es un ejemplo.";//le asignamos al array string el texto
substring = "ejemplo";//le asignamos al array substring el texto
pos = strfind(string, substring, true);//buscamos dentro del string, el substring
if(pos != -1)print("Se encontro \"ejemplo\" dentro del texto");//si se encontro...
else print("No se encontro \"ejemplo\" dentro del texto.");//de lo contrario...
return 1;
}
Respuesta: problema con strfind -
zuphuroo - 24.09.2010
mmm
lo que ise es incorporar strfind en otro sen....
sabes mejor lo pongo
aca un ejemplo
Quote:
stock SendClientMessage2(playerid, color, const message[])
{
if(strfind(message,"_",true) == -1)
{
SendClientMessage(playerid,ROJO,"has usado un _");
return 1;
}
else
{
SendClientMessage(playerid,color,message);
return 1;
}
}
|
esa es la funcion de sendclientmessage2
la cual si strfind encuentra "_" en la cadena message
te manda un mensaje diciendo que has usado "_"
sino te manda el mensaje correctamente
ahora al caso
si esta esto:
Quote:
SendClientMessage2(playerid,ROJO,"aca hay un '_' ");
o
SendClientMessage2(playerid,ROJO,"aca no hay un guion bajo asi que deberia mandarse normalmente");
|
en el primer ejemplo te mandara el mensaje "has usado un _" ya que encontro un _
y en el segundo mandara esto "aca no hay un guion bajo asi que deberia mandarse normalmente", es decir lo mando bien
aca surge el problema
si hago esto (mismos ejemplos)
Quote:
new string[64];
mensaje1 = aca hay un '_';
format(string,64,"Camilo dijo: %s", mensaje1);
SendClientMessage2(playerid,ROJO,string);
o
new string[64];
mensaje2 = aca no hay un guion bajo asi que deberia mandarse normalmente;
format(string,64,"Camilo dijo: %s", mensaje2);
SendClientMessage2(playerid,ROJO,string);
|
lo que daria como resultado esto:
en el primero mandaria "aca hay un '_' " que es el mensaje siendo que strfind tiene la condicion de que si encuentra un _ mande "has usado un _" pero no lo hace
en el segundo es lo mismo porque no tiene _ asi que en realidad ese da lo mismo
el que me preocupa es el primero del segundo ejemplo ya que strfind busca _ en message, donde message tambien esta "creado" por otra varible, en este caso "Mensaje1"
PD: puede que hayan errores en los ejemplos, pero es solo para que entiendan
Saludos...
Respuesta: problema con strfind -
TheChaoz - 24.09.2010
no termine de entenderte muy bien, pero fijate si esto te sirve.
pawn Код:
stock SendClientMessage2(playerid, color, const text[])
{
new string[64];
if(strfind(text, "_", true) == -1){
mensaje1 = aca hay un '_';
format(string,64,"Camilo dijo: %s", mensaje1);
return SendClientMessage2(playerid,ROJO,string);
}
else{
mensaje2 = aca no hay un guion bajo asi que deberia mandarse normalmente;
format(string,64,"Camilo dijo: %s", mensaje2);
return SendClientMessage2(playerid,ROJO,string);
}
}
si eso no te funciona aca otra forma de hacer lo mismo, por asi decirlo mucho mas bruta.
pawn Код:
stock SendClientMessage(playerid, color, const text[]){
new string[64], i;
while(i<strlen(text)){
if(text[i] == '_'){
mensaje1 = aca hay un '_';
format(string,64,"Camilo dijo: %s", mensaje1);
return SendClientMessage2(playerid,ROJO,string);
}
else{
mensaje2 = aca no hay un guion bajo asi que deberia mandarse normalmente;
format(string,64,"Camilo dijo: %s", mensaje2);
return SendClientMessage2(playerid,ROJO,string);
}
i++;
}
}
Respuesta: problema con strfind -
zuphuroo - 25.09.2010
Gracias The_Chaoz pero no te entendi y me fui por otros rumbos hasta que encontre lo que buscaba y no era con strfind
te lo agradesco mucho
Saludos...