Jump to content
  • ¡Hola, Invitado! Únete a nuestra comunidad y construyamos juntos algo increíble.

    ¡Bienvenido a nuestra comunidad! Al unirte, formarás parte de una comunidad apasionada por MAPPING. Para participar activamente, simplemente haz clic en el botón ‘Conectarse’ o ‘Registrarse’. Una vez registrado, podrás publicar mensajes, compartir tus experiencias y explorar los diversos foros disponibles. ¡Esperamos verte pronto y compartir momentos increíbles juntos!

[Tutorial]CVARS

Valorar este tema


Publicaciones recomendadas

Publicado (editado)

CVARS

 

Esta mini guia explica que son las cvars y como se deben utilizar dentro de nuestro code.

 

Tambien podes contar con esta gran lista de cvars (existentes): http://scripting.elxdraco.net/cvarlist/

 

Que son las cvars?

 

Podemos pensar que son algo asi como variables globales. Podemos tomar el valor de estas, asignarles nuevos valores, incluso crear nuestras propias cvars. La diferencia que tienen con las variables globales es que podemos cambiar los valores mediante la consola del juego.

 

Uso de estas cvars

 

Podemos guardar varios tipos de cosas dentro de las cvars. Generalmente son usadas para controlar plugins, activarlos/desactivarlos, guardar ciertos datos, etc. Tambien se pueden usar diferentes flags (atributos) que se mostraran mas adelante para poder modificar el comportamiento de la cvar creada.

 

Para tomar ciertos valores de una cvar, debemos usar estas funciones:

 

get_pcvar_flags

get_pcvar_float

get_pcvar_num

get_pcvar_string

 

Y estas funciones son las que no se deben usar:

 

get_cvar_flags

get_cvar_float

get_cvar_num

get_cvar_string

 

Si bien son similares, no hay que confundirlas. Se usan solo las que contengan "pcvar" ya que son mas rapidas y el uso es practicamente igual. Por eso debemos aprovechar que el uso es igual y al mismo tiempo ganamos "optimizacion" del plugin.

 

La estructura de la funcion register_cvar es la siguiente:

 

register_cvar ( const name[],const string[],flags = 0,Float:fvalue = 0.0 )  

Las distintas flags que se pueden usar son las siguientes:

 

FCVAR_ARCHIVE set to cause it to be saved to vars.rc

FCVAR_USERINFO changes the client's info string

FCVAR_SERVER notifies players when changed

FCVAR_EXTDLL defined by external DLL

FCVAR_CLIENTDLL defined by the client dll

FCVAR_PROTECTED It's a server cvar, but we don't send the data since it's a password, etc. Sends 1 if it's not bland/zero, 0 otherwise as value

FCVAR_SPONLY This cvar cannot be changed by clients connected to a multiplayer server.

FCVAR_PRINTABLEONLY This cvar's string cannot contain unprintable characters ( e.g., used for player name etc ).

FCVAR_UNLOGGED If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log

Ahora vamos a ver 2 ejemplos de como podemos registrar una cvar.

 

Ejemplo #1 Antiguo Metodo: Cvar

 

#include

public plugin_init()
{
   register_plugin("Registrar Cvar", "1.0", "Alucard")
   register_cvar("plugin_enable", "1")
}

public MiFuncion()
{
   if(get_cvar_num("plugin_enable") )
       // Codigo aca...
}  

Ejemplo #2 Nuevo Metodo (mas rapido): Pcvar

 

#include 

new p_Enabler

public plugin_init()
{
   register_plugin("Registrar Pcvar", "1.0", "Alucard")
   p_Enabler = register_cvar("plugin_enable", "1")
}

public MiFuncion()
{
   if(get_pcvar_num(p_Enabler) )
       // Codigo aca...
}  

Se debe usar pcvars ya que como se explico antes, son mas rapidas. Solo se dio un ejemplo del metodo antiguo para mostrar el uso y para dar informacion, pero no se deben usar de esa forma.

 

Como funcionan?

 

 

Orden de los eventos:
1.El server esta offline            hlds.exe no esta corriendo
2.El server esta online
3.plugin_init()                         Las cvars son creadas
4.plugin_cfg()
5.amxx.cfg                           Los valores de las cvars son asignadas por el amxx.cfg
6.server.cfg                         Los valores de las cvars son asignadas por el server.cfg
7.El server restartea                    El comando mapchange o "restart"
8.plugin_init()                         Las cvars no son recreadas o sobreescritas. Si existen, solo los punteros son reunidos
9.plugin_cfg()
10.amxx.cfg                                 Los valores de las cvars son asignadas por el amxx.cfg (server.cfg no es llamado otra vez)

Las funciones plugin_init() y plugin_cfg() son llamadas en cada cambio de mapa, restarteo, y comienzo del server (El comienzo del server es cuando se pone on luego de haber estado off). El amxx.cfg es leido en cada cambio de mapa, restarteo y comienzo del server. El server.cfg es leido solo en el comienzo del server.

 

Cuando hacemos register_cvar("nombre del cvar", "valor del cvar"), estamos registrando una nueva cvar y asignandole un valor default. Si esta cvar que intentamos registrar ya existe, esta funcion no sobreescribe el valor original. Solo devuelve un puntero de la cvar existente que luego podemos acceder usando: get_pcvar_flags, get_pcvar_float, get_pcvar_num, or get_pcvar_string.

 

Para obtener el puntero de una cvar existente se usa: get_cvar_pointer("nombre del cvar").

 

Aca un ejemplo hecho por SnoW para no tener que crear muchas variables por cada cvar.

 

#define cvars 4
new cvar_names[cvars][] =
{
  "name1",
  "name2",
  "name3",
  "name4"
  //...
};
new cvar_values[cvars] =
{
  0,
  5,
  7,
  8
  //...
};

new g_Cvars[ cvars ];

// ...

public plugin_init( )
{
  for(new i = 0; i < cvars; i++)
        g_Cvars[i] = register_cvar(cvar_names[i], num_to_str(cvar_values));

// ...

new Cvars[cvars];
for(new i = 0; i < cvars; i++)
  Cvars[i]= get_pcvar_num( g_Cvars[i] );

// ...  

 

Thread original: http://forums.alliedmods.net/showthread.php?t=85316

Traducido por: Alucard^

Editado por S34Qu4K3

sopaquake-1.png

Pasa que swato caja tiene una coneccion clandestina con el verdulero de la esquina viste, y se bajo el OPERA!! EL O P E R A!!! !! EL O P E R A!! QUE NO SABE OPERAR las .PNG!!.

 

 

 

 

Es un foro, no un licuado de bananas, o una ensalada de frutas, como está, está bien.

 

la reputamadre que lo contrapario

 

[Hoy 16:09] Santi: y recibis mas info que mandando cumbia al 2020

[Hoy 16:08] Santi: te paso el cel del poola y el faqqu

[Hoy 16:08] Ezeh: se saben alguna pagina'

[Hoy 16:08] Ezeh: como saber de lo ultimo en cumbia de temas?

barwz.png

By S34Paint :D

 

 

Crear una cuenta o conéctate para comentar

Tienes que ser miembro para dejar un comentario

Crear una cuenta

Regístrese para obtener una cuenta nueva en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectar

¿Ya tienes una cuenta? Conéctate aquí.

Conectar ahora
×
×
  • Crear nuevo...

Información importante

Al utilizar nuestra web, aceptas nuestras Política de privacidad estás de acuerdo con las condiciones establecidas.