duda sobre zcmd
#1

bueno estoy cambiando todo mi GM de strcmp a zcmd y solo kiero saber en ke cambia, se ke cambia el COMMAND: y esa parte, pero ke mas cambia?
Reply
#2

Nada mas, podrнas usar sscanf.
Cambia params.
No te olvides que zCMD no va dentro del callback OnPlayerCommandText, va fuera de ese callback, como el DCMD.
Reply
#3

Podrнan dejar una breve explicaciуn de sscanf? Cуmo se usa, para quй, quй beneficios da. Es que yo me quedй en el mнtico strcmp y no encontrй ninguna guнa ( buena ) en espaсol como para entenderlo. Y si es posible, unos ejemplo de comando con 1 parбmetro y 2 parбmetros.

Cual combinaciуn ( sscanf + quй ) serнa la mejor opciуn en cuanto a rendimiento? ( includio guardado/cargado de datos xD )

Gracias!
Reply
#4

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Podrнan dejar una breve explicaciуn de sscanf? Cуmo se usa, para quй, quй beneficios da. Es que yo me quedй en el mнtico strcmp y no encontrй ninguna guнa ( buena ) en espaсol como para entenderlo. Y si es posible, unos ejemplo de comando con 1 parбmetro y 2 parбmetros.

Cual combinaciуn ( sscanf + quй ) serнa la mejor opciуn en cuanto a rendimiento? ( includio guardado/cargado de datos xD )

Gracias!
Piensa en la funciуn "format", se usa para insertar cosas dinamicamente en una cadena de texto. Para ello se utilizan los placeholders: %i, %s, %c, etc. Bueno, si tienes la idea ahora piensa en sscanf como TODO LO CONTRARIO. En vez de insertar por medio de los placeholders, SACAS de la cadena de texto con los placeholders.

Tu especificas que tipo de datos quieres sacar y provees las variables donde quieres colocar estos datos. Tambien se puede utilizar para separar pedazos de texto usando un delimitador, como strtok usa el espacio pero en sscanf TU LO PUEDES ESPECIFICAR.

En mi opiniуn, es mejor usar zcmd o y_cmd para los comandos mбs una combinaciуn de estos con sscanf. Ojo: sscanf tienes muchos mбs usos que comandos...

sscanf creo que puede retornar dos valores: 0 si los datos que colocaste efectivamente eran lo que estaban en la cadena de texto y 1 cuando hubo alguna diferencia. En el caso de los comandos, 0 cuando los parametros que puso el jugador eran los correctos y 1 cuando faltу un parametro o puso uno del tipo equivocado.

Ejemplo:
pawn Код:
format(string, "%i %s %c", 5, "Pene", 'H'); // Pone en string un cinco, la palabra "Pene" y el carбcter H.
unformat(string, "is[5]c", variable_para_el_cinco, string_para_pene, variable_para_H);
// Saca un entero (i), una cadena de texto de 4 carбcteres (s[5] 4 + el carбcter nulo) y un carбcter ©,
// ocupando los variables variable_para_el_cinco, string_para_pene, variable_para_H si la cadena estaba en ese // orden (lo estaba, la hicimos asн usando format) y retornando 0. Sino, no pone nada en las variables y retorna 1.
NOTA: unformat es lo mismo que sscanf, los dos son vбlidos.

En el caso de los comandos, lo que escribe el jugador despues del comando serнa cmdtext o params, con sscanf podemos comprobar si lo que estб en esas cadenas (cmdtext, ...) es lo correcto, si lo es lo podemos colocar en unas variables.

Por ejemplo, un comando que requiere dos enteros y un decimal:
pawn Код:
CMD:nombredelcomando(playerid, params[])
{
    new entero1, entero2, Float:decimal;
    if(sscanf(params, "iif", entero1, entero2, decimal) == 0) // Si retorna 0.
    {
        // Si retorna cero significa que escribiу los parametros correctamente.
        // Las variables para este punto ya tendrбn los parametros adentro ya que no hubo ningъn error.
    }
    else
    {
        // Sino significa que falto un parametro o escribiу un paramtro de otro tipo que no querнamos.
    }
    return 1;
}
Reply
#5

Muchas gracias, Miguel.. Me quedу clarisimo. +rep.


EDIT: No me deja darte reputaciуn =/
Reply
#6

ola, pues bueno despues de un rato de pasar el GM a zcmd me topo con estos errores, ojala me ayuden
no entiendo porque me sale simbolo indefinido, tengo el include, el <zcmd>, lo probe en los 2 diferentes callbacks de zcmd, en OnPlayerCommandReceived, y OnPlayerCommandPerformed, y me sigue saliendo esto, no entiendo ujala me ayuden

pawn Код:
C:\Users\usuario\Documents\GTA San Andreas User Files\SAMP\gamemodes\IL-RP Conversion a zcmd.pwn(18724) : error 029: invalid expression, assumed zero
C:\Users\usuario\Documents\GTA San Andreas User Files\SAMP\gamemodes\IL-RP Conversion a zcmd.pwn(18724) : error 017: undefined symbol "cmd_spec"
C:\Users\usuario\Documents\GTA San Andreas User Files\SAMP\gamemodes\IL-RP Conversion a zcmd.pwn(18724) : error 029: invalid expression, assumed zero
C:\Users\usuario\Documents\GTA San Andreas User Files\SAMP\gamemodes\IL-RP Conversion a zcmd.pwn(18724) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.
se supone ke estas son las lineas de error, pero siempre sale con el primer comando sea, cual sea

pawn Код:
cmd(spec, playerid, params[])
ya intente con todas las formas de pones el comando" COMMAND:" "CMD:" "cmd(" "command(" y me sigue saliendo lo mismo de simbolo indefinido D:
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)