duda -
Ruiz_Daniel - 02.06.2013
hola gente queria saber soy nuevo en esto de script y queria saber como cambiar un procezador de comandos.
uso strmp algo asi xD , y lo quiero cambiar a zcmd como lo cambio? alguien me puede decir se lo agradesco de ante mano ya que no entiendo en eso espero respuesta
Respuesta: duda -
OTACON - 02.06.2013
[INC] zcmd 0.3.1 | Fast & Simple Command Processor
[Plugin] sscanf 2.8.1
[Tutorial] STRCMP and ZCMD
Re: duda -
Ruiz_Daniel - 02.06.2013
amigo esperaba tutoriales en espaсol gracias de toda forma pero tengo una pregunta se puede cambiar el strcmp por zcmd osea solo remplazar el strcmp a zcmd y andaria? osea sol
#include <zcmd>
Luego los comandos que dicen strcmp le cambio el strcmp por zcmd nose si me explico
Respuesta: duda -
TheChaoz - 03.06.2013
Brebe introducciуn a ZCMD:
pawn Код:
CMD:nombre_del_comando(playerid, params[])
{
return 1;
}
El ej anterior es la estructura minima que todo comando ZCMD debe tener. Para evitar marearte
digamos lo basico:
- nombre_del_comando: representa como bien dice, el nombre de nuestro comando (la '\' no forma parte del nombre)
- playerid representa el id del jugador que ejecuto el comando (puedes ponerle player, jugador o como tu quieras, pero en general se le llama playerid)
- params[] representa los parametros que el jugador ingresa con el comando. ej: (/texto hola; params seria "texto")
Algo basico sin parametros:
pawn Код:
//strcmp:
if(!strcmp(cmdtext, "/micomando", true))
{
SetPlayerHealth(playerid, 100.0);
SendClientMessage(playerid, -1, "Has sido curado");
return 1;
}
//zcmd:
CMD:micomando(playerid, params[])
{
SetPlayerHealth(playerid, 100.0);
SendClientMessage(playeridn -1, "Has sido curado");
return 1;
}
Algun comando con parametros:
pawn Код:
//strcmp
if(!strcmp(cmd, "/micomando", true))
{
//No abalo el uso de 256 cells en casos innecesarios, solo me baso en los estandares utilizados comunmente por los scripters que utilizan strtok
//---------Esta es la seccion de codigo que cambiaremos al utilizar ZCMD o casi cualquier otro procesador decomandos
new player, dinero, str[128], tmp[256], tmp2[256];
tmp = strtok(cmdtext, idx);
tmp2 = strtok(cmdtext, idx);
if(strlen(tmp) == 0 || strlen(tmp2) == 0 || !IsNumeric(tmp) || !IsNumeric(tmp2))
SendClientMessage(playerid, -1, "USO: /micomando <playerid> <dinero>");
player = strval(tmp);
dinero = strval(tmp2);
//---------
if(!IsPlayerConnected(player))
return SendClientMessage(playerid, -1, "Error: Jugador no conectado");
if(dinero < 0)
return SendClientMessage(playerid, -1, "No puedes sacarle dinero a un jugador");
GivePlayerMoney(player, dinero);
format(str, 128, "El jugador %d te dio %d dinero.", playerid, dinero);
SendClientMessage(player, -1, str);
format(str, 128, "Le enviaste %d pesos al jugador %d", dinero, player);
SendClientMessage(playerid, -1, str);
return 1;
}
//zcmd
CMD:micomando(playerid, params[])
{
new player, dinero, str[128];
/*la funcion sscanf retorna 0 si el formato del string y el indicados fueron correctos o 1 si no lo es/hubo algun error
El formato "dd" indica que se espera algo asi "[numero] [numero]" (sin los []".
Existen muchos demas caracteres para indicar formatos mucho mas complejos, pero eso te lo dejo a ti.*/
if(sscanf(params, "dd", player, dinero))
return SendClientMessage(playerid, -1, "USO: /micomando <playerid> <dinero>");
//A partir de este punto, el codigo es completamente identico
if(!IsPlayerConnected(player))
return SendClientMessage(playerid, -1, "Error: Jugador no conectado");
if(dinero < 0)
return SendClientMessage(playerid, -1, "No puedes sacarle dinero a un jugador");
GivePlayerMoney(player, dinero);
format(str, 128, "El jugador %d te dio %d dinero.", playerid, dinero);
SendClientMessage(player, -1, str);
format(str, 128, "Le enviaste %d pesos al jugador %d", dinero, player);
SendClientMessage(playerid, -1, str);
return 1;
}
Como puedes ver sscanf hace la mayor parte del trabajo. Un tutorial sobre este tema podria a llegar a ser muy extenso, pero con estos 2 ejemplos intente resumirlo a lo mas basico para que tu luego puedas ir aprendiendo lo demas si es que lo necesitas, ya que sscanf no tiene como unico uso escanear un string de un comando.
Nota: strcmp no es un procesador de comandos, solo es una funcion que compara 2 cadenas de texto (tambien llamadas strings del ingles)
Respuesta: duda -
BecksLennon - 03.06.2013
Como te dijo Chaoz, solo tienes que hacer eso pero si usas un GM ya creado no te sera fбcil cambiar todo.