[Tutorial] Uso de Strtok
#1

"
"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;
}
Veamos por ejemplo, este comando de administrador:
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;  
     }
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
pawn Код:
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
Segundo, empezamos con el comando. En este caso haremos un comando para banear a un usuario
pawn Код:
if(strcmp(cmd, "/ban", true) == 0)
{
Tercero, tenemos que crear la string en la que se guardarб la id del jugador a banear.
pawn Код:
new tmp[256];
tmp = strtok(cmdtext, idx);
Cuarto, vamos a definir lo que pasarнa si no se ingresa la id a banear:
pawn Код:
if(!strlen(tmp))
                {
                  SendClientMessage(playerid, 0xFFFFFFFF, "Uso Correcto: /Ban [ID del Jugador]");
                }
Quinto, ponemos lo que pasarнa si se ingresa la id, en este caso, la funciуn de banear, y terminamos el comando:
pawn Код:
else
 {
   Ban(strval(tmp));
   return 1;
 }
 return 1;
 }
El comando quedarнa asн:
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;  
     }
Listo, eso es todo. Espero que les sirva.
Saludos, Rodro,
Reply


Messages In This Thread
[Tutorial] Uso de Strtok - by Rodro - 26.11.2010, 23:47
Respuesta: [Tutorial] Uso de Strtok - by TheChaoz - 27.11.2010, 00:19
Respuesta: [Tutorial] Uso de Strtok - by Rodro - 27.11.2010, 00:51
Respuesta: [Tutorial] Uso de Strtok - by TheChaoz - 27.11.2010, 01:02

Forum Jump:


Users browsing this thread: 2 Guest(s)