11.01.2013, 22:14
Hola a todos tengo una pequeсa duda amigos.Hay algun tutorial bien explicado de como pasar de strtokex o strtok a sscanf? porque la verdad me cuesta mucho vi uno en ingles pero no lo comprendi :S
if(strcmp(cmd, "/descongelar", true) == 0)
{
new Celdas[128], Jugador;
Celdas = strtok(cmdtext,idx);
if(!strlen(Celdas)) return SendClientMessage(playerid, Rojo, "Usa: /descongelar [playerid]");
Jugador = strval(Celdas);
if (IsPlayerConnected(Jugador)) // chequea si el jugador esta conectado, si no lo esta, no va a proceder el comando, no va a hacer la accion.
{
TogglePlayerControllable(Jugador,1); // la funcion que harнa el comando, que lo descongelara (es un ejemplo)
}
return 1; // retornamos el comando..
}
CMD:descongelar(playerid, params[]) // aqui puedes reemplazarlo, como tu quieras, ahi muchas formas. ej: COMMAND:blabla(playerid.......
{
new Jugador;
if(!strlen(Celdas)) return SendClientMessage(playerid, Rojo, "Usa: /descongelar [playerid]");
if (IsPlayerConnected(Jugador))
{
TogglePlayerControllable(Jugador,1);
}
return 1;
}
CMD:descongelar(playerid, params[]) // aqui puedes reemplazarlo, como tu quieras, ahi muchas formas. ej: COMMAND:blabla(playerid.......
{
new Jugador;
if(sscanf(params, "u", Jugador)) return SendClientMessage(playerid, Rojo, "Usa: /descongelar [playerid]");
if (IsPlayerConnected(Jugador)) // cheque si el jugador esta conectado o no, si no lo esta no procede el comando, no hara la accion.
{
TogglePlayerControllable(Jugador,1); // la funcion que hara el comando, que lo descongelara. (es un ejemplo)
}
return 1;
}
CMD:descongelar(playerid, params[]) // aqui puedes reemplazarlo, como tu quieras, ahi muchas formas. ej: COMMAND:blabla(playerid.......
{
if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, Rojo, "Usa: /descongelar [playerid]");
if (IsPlayerConnected(params[0])) // cheque si el jugador esta conectado o no, si no lo esta no procede el comando, no hara la accion.
{
TogglePlayerControllable(params[0],1); // la funcion que hara el comando, que lo descongelara. (es un ejemplo)
}
return 1;
}
CMD:anuncio(playerid,params[])
{
new stringg[128];
if(sscanf(params,"s[128]",stringg)) return SendClientMessage(playerid,Rojo,"Uso: /anuncio [texto]");
GameTextForAll(stringg,4000,3);
return 1;
}
Pasate por aquн.. https://sampforum.blast.hk/showthread.php?tid=406616
Aunque te dejo un ejemplo: Aqui tenemos un comando usando strtok. pawn Код:
primero que todo. reemplazamos el comando por zcmd o y_cmd, porque strcmp no usa parametros (params) y quitamos Celdas = strtok(cmdtext,idx); - Celdas[128] y Jugador = strval(Celdas); nos quedarнa asi. pawn Код:
pawn Код:
Tu diras, que significa esto? if(sscanf(params, "u", Jugador)) Bien, te explicarй. sscanf significa que estamos utilizando sscanf (obvio) params significa parametros, que estas utilizando parametros en el comando "u" significa que estamos utilizando un especificador para usar el comando,es decir, "u" sirve para buscar ids de jugadores o nombres de jugadores. No entendistes lo ultimo? pues ve al post original de sscanf y busca los especificador que se utilizan: https://sampforum.blast.hk/showthread.php?tid=120356 en la parte de especificadores Si no quieres utilizar variables, te tenemos otra salida, puedes usar parametros en vez de variables, es decir: pawn Код:
Recuerda si quieres utilizar string, es decir, caracteres, letras, numeros. lo que sea, tienes que poner su longitud (la longitud del comando), es decir, la cantidad de celdas que se utilizarб. ejemplo: pawn Код:
Espero que te haya servido.. |