public OnPlayerCommandText(playerid, cmdtext[])
//Aver playerid supongo que obtiene el id del jugador q ejecuta el comando
//cmdtext[] supongo que es una matriz de los comandos....
{
new cmd[128], idx;//se crea un array їtipo cmd? con longitud 128 y un idx їpara q sirve idx que valor toma?
cmd = strtok(cmdtext, idx);
//sacando del wiki y usandon el traductor ****** jejeje y arreglando un poco el strtok sirve para:
//(strtok) se utiliza para buscar una cadena y encontrar una variable despuйs de un " " (espacio), luego
//devolverlo como una cadena.
//osea si se tipeara "/kick 2" el strok seria 2 de tipo string por que esta despues de un espacio???
//que hace ahi el idx??
if(strcmp(cmd, "/kick", true) == 0)
//bueno si lo q pienso esta bien entoncs cmd = 2, tambien en wiki dice q strcmp sirve para comprara strings
//pero ahi algo q no entiendo, traduciendolo con traduc. ****** lo que devuelve la funcion:
//-1 si cadena1 viene antes de cadena2
//1 si cadena1 viene despues de cadena2
// cadena 1 їANTES o DESPUES? de cadena 2? no deberia devolver solo si son iguales o no las cadenas??
//pero bueno dejando eso de un lado esa linea: "if(strcmp(cmd, "/kick", true) == 0)" no estaria mal?
//si no toy mal compara "cmd" con "/kick" pero cmd valdria 2 no?? entoncs "2" no es = a "/kick", ayudaЎ
{
new tmp[128];
tmp = strtok(cmdtext, idx);
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /kick [playerid]");
Kick(strval(tmp));
return 1;
}
return 0;
//que significa return 0 y return 1?
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/me", true, 3)) // 3 is the length of /me
{
if(!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]");
new str[128];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "* %s %s", str, cmdtext[4]);
SendClientMessageToAll(0xFFFF00AA, str);
return 1;
}
return 0;
}
This (strtok) is used to search a string and find a variable typed after a " " (space), then return it as a string. Traducido ¬¬': Este script (Strtok) Es usado para buscar un string (Letra, consultalo) y una variable escrita despues de " ", y despuйs devolverlo (return) como un string. |
public OnPlayerCommandText(playerid, cmdtext[])
//Playerid: ID del jugador que escribiу el comando
//cmdtext[]: el comando escrito (guardado en un string)
{
new cmd[128], idx;//Se crea un array de nombre cmd con longitud 128 y una variable idx (sin valor actualmente)
cmd = strtok(cmdtext, idx); //Guarda en la cadena cmd la variable que encuentre la funciуn tras el espacio encontrado en cmdtext
//idx sirve para saber la posiciуn de la cadena en la que se encuentra el espacio, no debe importarte
if(strcmp(cmd, "/kick", true) == 0)
//strcmp: si devuelve 1, la cadena 1 es mayor que la 2. Si devuelve 0 son iguales (como en este caso). SI devuelve -1 la cadena 1 es menor a la 2
{
new tmp[128];//Nueva cadena
tmp = strtok(cmdtext, idx);//Repetimos el proceso como al principio
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /kick [playerid]");//Si la longitud de tmp es 0 (significa que no se ha encontrado nada despuйs del espacio) muestra el mensaje
Kick(strval(tmp));//Kickea al jugador deseado (strval convierte una cadena en un entero)
return 1;//El return
}
return 0;
//Return 0 significa que el cуdigo se ha ejecutado sin problemas, return 1 indica que se ha encontrado un problema
//Esto es literalmente, el uso que tiene es el siguiente: el primer return, (return 1) es para que el servidor no continue ejecutando el callback "OnPlayerCommandText", ya que este ha realizado lo que querнamos
//El return 0 "cierra" el callback y le dice al programa que continue leyendo el script
}
·strtok: Es una funcion que retorna el string contenido entre 2 index, uno indicado, y el otro se identifica con un caracter, el que por defecto es un " ".
·strcmp: Funcion que se usa para la comparacion de dos strings.
cmd = strtok(cmdtext, idx); //Guarda en la cadena cmd la variable que encuentre la funciуn tras el
//espacio encontrado en cmdtext
//idx sirve para saber la posiciуn de la cadena en la que se encuentra el espacio, no debe importarte
///Entoncs si pongo "/kick 2", "cmd" seria = "2", ya q el 2 se encuentra tras el espacio їno?
if(strcmp(cmd, "/kick", true) == 0)
//strcmp: si devuelve 1, la cadena 1 es mayor que la 2. Si devuelve 0 son iguales (como en este caso).
// SI devuelve -1 la cadena 1 es menor a la 2
///Aca 2 dudas, "cmd" valdria "2" y "2" no es = que "/kick", ni aca ni en la china jejeje
///Entoncs nunca daria q son = esa comparacion
///La otra duda, Cadena 1 Mayor o menor q la cadena 2, їte refieres a la longitud?, si la longitud de la cadena
/// 1 es mayor que de la cadena 2?, La otra duda
/// No entiendo bien del "Return" Pense que "return 0" acaba la funcion?
·strcmp: Funcion que se usa para la comparacion de dos strings. |
їStrcmp Es el proceso de comandos?, no es para comparar cadenas?
|
return SendClientMessage(playerid, COLOR, "Comando errуneo, utiliza /ayuda"); |