[Off] їEl mejor procesador de comandos?
#1

Bueno, hago este tema porque estoy comenzando a crear un gamemode desde cero y de a poco irй solventando desconocimientos y uno que se me presentу por curiosidad ahora es el siguiente:
Como dice el titulo їcual es el procesador de comandos mбs rбpido? Vi muchos, pero muchos (y no se imaginan la cantidad xd) de post en varios sitios relacionado a este tema y no logro tener una vista certera al tema en concreto este, porque unos dicen X, otros Y y otros B y todos dando varios fundamentos con credibilidad, lуgica y demбs. Entonces se me ocurriу preguntarlo de forma actual (porque la mayor parte de post son antiguos) y con los actuales conocedores del tema.
Como todos ya sabemos strcmp no es un procesador literal de comandos, pero se lo usa como tal pero es el que mбs entiendo (tampoco es que me tomй mucho tiempo para aprender sobre zcmd por ejemplo) pero como dije no es un proc. de comandos porque lo que hace es comparar dos strings, entonces al detectar X string ejecuta si se cumple la condiciуn de strcmp entonces vi muchos lugares que decнan que strcmp es mбs lento respecto a por ejemplo zcmd, que zcmd es mбs rбpido por X razуn.
Tengo entendido que strcmp funciona a raнz de que compara todos los comandos hasta llegar al tipeado, sin embargo un procesador de comandos de verdad, se dirige directo y esto afecta la velocidad dependiendo de los comandos existentes (ya que no serнa la misma velocidad de strcmp con 5 comandos que con 50).
Pero en conclusiуn quiero que me digan con sus fundamentos cual procesador es el "mejor" o si estб bien strcmp.
Por ahн vi que a_cmd es mбs rбpido que zcmd e y_commands, no se si serб cierto o quй .

Bueno esto serнa mas o menos a lo que me refiero, cualquier comentario con lуgica y fundamentos serб bien recibido c: , sн escribн algъn dato mal con gusto haganmelo saber para aprender un poco mбs.
Reply
#2

їEstбs empezando un proyecto desde cero? Grandioso. Entonces empieza bien y con el pie derecho para evitar tener que volver a escribir sistemas primitivos (guardado, comandos...) en un futuro cuando te des cuenta que no puedes seguir utilizando Dini en vez de Y_INI o MySQL/SQLite ni puedes usar strcmp o dcmd en vez de ZCMD o y_commands. Por lo tanto, no es recomendado usar strcmp para crear comandos en scripts complejos.

Es indiscutible que uno de los mejores y mбs populares metodos para procesar comandos es zcmd junto a sscanf si quieres procesar parametros o comandos mбs complejos. Simplemente es sumamente fбcil de usar, es ligero, es veloz y funciona bien. Es cierto que strcmp en si no es un procesador de comandos si no una funciуn usada para procesar comandos (comparando la cadena del texto introducido con la cadena del comando). Esto es simple y viable, pero utilizar strok para procesar parametros puede llegar a ser tedioso y lento, y teniendo muchos comandos (en mi script hay 791!), es decir, tener que usar strcmp 791 veces cada vez que se introduce un comando junto a una gran cantidad de jugadores, se puede gastar recursos innecesariamente.

Sin embargo, si buscas crear comandos que son mбs intuitivos y amigables para el jugador, y mбs "complejos" no dudes en usar y_commands que tiene ciertas caracteristicas que personalmente me han gustado mucho, juntado con la misma velocidad de zcmd. Un sistema integrado de permisos, comandos con nombrado automбtico (un comando de /ayuda en espaсol, mientras que para jugadores ingleses serнa /help), informaciуn accesible sobre los comandos en tu servidor (lista de comandos, por ejemplo), sistema integrado de ayuda, y globalizaciуn de los comandos a travйs de cualquier script.

Uno mбs complejo que el otro; elige el que quieras, pero elige bien y no te dejes llevar por la mediocridad.
Reply
#3

Quote:
Originally Posted by admantis
Посмотреть сообщение
їEstбs empezando un proyecto desde cero? Grandioso. Entonces empieza bien y con el pie derecho para evitar tener que volver a escribir sistemas primitivos (guardado, comandos...) en un futuro cuando te des cuenta que no puedes seguir utilizando Dini en vez de Y_INI o MySQL/SQLite ni puedes usar strcmp o dcmd en vez de ZCMD o y_commands. Por lo tanto, no es recomendado usar strcmp para crear comandos en scripts complejos.

Es indiscutible que uno de los mejores y mбs populares metodos para procesar comandos es zcmd junto a sscanf si quieres procesar parametros o comandos mбs complejos. Simplemente es sumamente fбcil de usar, es ligero, es veloz y funciona bien. Es cierto que strcmp en si no es un procesador de comandos si no una funciуn usada para procesar comandos (comparando la cadena del texto introducido con la cadena del comando). Esto es simple y viable, pero utilizar strok para procesar parametros puede llegar a ser tedioso y lento, y teniendo muchos comandos (en mi script hay 791!), es decir, tener que usar strcmp 791 veces cada vez que se introduce un comando junto a una gran cantidad de jugadores, se puede gastar recursos innecesariamente.

Sin embargo, si buscas crear comandos que son mбs intuitivos y amigables para el jugador, y mбs "complejos" no dudes en usar y_commands que tiene ciertas caracteristicas que personalmente me han gustado mucho, juntado con la misma velocidad de zcmd. Un sistema integrado de permisos, comandos con nombrado automбtico (un comando de /ayuda en espaсol, mientras que para jugadores ingleses serнa /help), informaciуn accesible sobre los comandos en tu servidor (lista de comandos, por ejemplo), sistema integrado de ayuda, y globalizaciуn de los comandos a travйs de cualquier script.

Uno mбs complejo que el otro; elige el que quieras, pero elige bien y no te dejes llevar por la mediocridad.
La verdad que tienes razуn en lo primero que dices respecto al momento de intercalar de strcmp a otro procesador, y es verdad que no lo habнa pensado. Estuve viendo y pensando sobre tus comentarios de y_commands y me parece mi opciуn mбs viable, eh visto su simpleza y otras cosas (lo del help me gusto e impresiono bastante).
La verdad que valoro tu comentario y el tiempo que te tomaste para escribirlo. Cualquier otro comentario tambiйn es bienvenido
Reply
#4

En mi opiniуn es zcmd, y todos te dirбn lo mismo.

PD:Cambia de una vez esa fuente con la que escribes, no puedo leer.
Reply
#5

En mi opinios es y_commands el mejor.

Te puede ayudar: https://sampforum.blast.hk/showthread.php?tid=465146
Reply
#6

No se quй tanto se preocupan por la velocidad si todos йsos procesan en 0 mms, independiente de lo que contengan adentro.

Para mн ZCMD basta y sobra.
Reply
#7

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
No se quй tanto se preocupan por la velocidad si todos йsos procesan en 0 mms, independiente de lo que contengan adentro.

Para mн ZCMD basta y sobra.
ci

..........
Reply
#8

Si sos bueno no te va a hacer falta usar zcmd para optimizar, asi de fбcil... y йso de que strcmp no sirve y bla bla bla, TOTALMENTE mentira. Si asн fuera, їpara quй van a dar de ejemplo el uso de strcmp los creadores si no sirve en servidores con 1000 players? Son zcmd fanboys...

PD: No hay mejor procesador de comandos que el que a vos mбs sencillo y eficaz te paresca.
Reply
#9

Quote:
Originally Posted by LiMPiTo
Посмотреть сообщение
Si sos bueno no te va a hacer falta usar zcmd para optimizar, asi de fбcil... y йso de que strcmp no sirve y bla bla bla, TOTALMENTE mentira. Si asн fuera, їpara quй van a dar de ejemplo el uso de strcmp los creadores si no sirve en servidores con 1000 players? Son zcmd fanboys...

PD: No hay mejor procesador de comandos que el que a vos mбs sencillo y eficaz te paresca.
Si sirve, pero es mas lento que llamar la funcion directamente. Los comandos de strcmp se alenta porque debe verificar si lo que escribistes es lo mismo que uno de tus comandos, si tengo 1,000 comandos y yo quiero ejecutar el comando numero 1,000, el servidor tendra que verificar todos esos si-entonces hasta que se encuentra el comando o no.

Procesadores de comandos como zcmd y y_commands llaman al comando directamento, ya que es el metodo mas rapido conocido actualmente. Es como hacer lo siguiente:

pawn Код:
public OnPlayerConnect(playerid) return comando_hola(playerid, "");

stock comando_hola(playerid, params[]) return 1;
Conclusion:
Busca un procesador que utiliza 'CallLocalFunction(...);'.
Reply
#10

ZCMD rule ^.^
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)