26.11.2010, 23:47
(
Последний раз редактировалось Rodro; 27.11.2010 в 00:58.
)
"
Hola, hoy les enseсarй como usar la funciуn Strtok, esencial para distintas funciones, como hacer comandos de administrador.
No se biйn como explicar para que sirve, pero lo intentarй. Strtok sirve para buscar una string y encontrar una variable despuйs de un " " (espacio), y luego devolverlo como una string.
Nota: se que strtok es una funciуn vieja y desoptimizada, de hecho ahora uso sscanf con zcmd. Pero como habнa hecho este tutorial hace mucho tiempo, lo posteo por si alguien le sirve.
Primero que nada, necesitamos poner el cуdigo de strtok.
Veamos por ejemplo, este comando de administrador:
Todo esta explicado en el code, ahora os enseсarй a hacer un comando usando Strtok.
Primero tenemos que definir lo siguiente, al principio de la callback OnPlayerCommandText
Segundo, empezamos con el comando. En este caso haremos un comando para banear a un usuario
Tercero, tenemos que crear la string en la que se guardarб la id del jugador a banear.
Cuarto, vamos a definir lo que pasarнa si no se ingresa la id a banear:
Quinto, ponemos lo que pasarнa si se ingresa la id, en este caso, la funciуn de banear, y terminamos el comando:
El comando quedarнa asн:
Listo, eso es todo. Espero que les sirva.
Saludos, Rodro,
"Uso de Strtok"
Hola, hoy les enseсarй como usar la funciуn Strtok, esencial para distintas funciones, como hacer comandos de administrador.
No se biйn como explicar para que sirve, pero lo intentarй. Strtok sirve para buscar una string y encontrar una variable despuйs de un " " (espacio), y luego devolverlo como una string.
Nota: se que strtok es una funciуn vieja y desoptimizada, de hecho ahora uso sscanf con zcmd. Pero como habнa hecho este tutorial hace mucho tiempo, lo posteo por si alguien le sirve.
Primero que nada, necesitamos poner el cуdigo de strtok.
pawn Код:
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
pawn Код:
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/kick", true) == 0)
{
new tmp[256]; //Define la string utilizada para el Strtok. En este caso serнa la ID del jugador
tmp = strtok(cmdtext, idx); //Asocia la string al Strtok
if(!strlen(tmp)) /Si no se encuentra la id del jugador, pasa lo codeado abajo
{
SendClientMessage(playerid, 0xFFFFFFFF, "Uso Correcto: /Kick [ID del Jugador]");
}
else //Si no se cumple lo establecido por el if (en este caso, que no haya escrito la ID del jugador) kikea al jugador
{
Kick(strval(tmp)); //Kikea la id
return 1;
}
return 1;
}
Primero tenemos que definir lo siguiente, al principio de la callback OnPlayerCommandText
pawn Код:
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
pawn Код:
if(strcmp(cmd, "/ban", true) == 0)
{
pawn Код:
new tmp[256];
tmp = strtok(cmdtext, idx);
pawn Код:
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Uso Correcto: /Ban [ID del Jugador]");
}
pawn Код:
else
{
Ban(strval(tmp));
return 1;
}
return 1;
}
pawn Код:
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/ban", true) == 0)
{
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Uso Correcto: /Ban [ID del Jugador]");
}
else
{
Ban(strval(tmp));
return 1;
}
return 1;
}
Saludos, Rodro,