Esempio n. 1
0
void Cvar_Set_ex_f (void)
{
	cvar_t	*var;
	char	*var_name;
	char	*st = NULL;
	char	text_exp[1024];

	if (Cmd_Argc() != 3) {
		Com_Printf ("usage: set_ex <cvar> <value>\n");
		return;
	}

	var_name = Cmd_Argv (1);
	var = Cvar_Find (var_name);


	if ( !var ) {
		if (Cmd_Exists(var_name)) {
			Com_Printf ("\"%s\" is a command\n", var_name);
			return;
		}
		var = Cvar_Create(var_name, "", 0);
	}

	Cmd_ExpandString( Cmd_Argv(2), text_exp);
	st = TP_ParseMacroString( text_exp );
	st = TP_ParseFunChars(st, false);

	Cvar_Set (var, st );
}
Esempio n. 2
0
void Cvar_Set_tp_f (void)
{
	cvar_t *var;
	char *var_name;

	if (Cmd_Argc() != 3) {
		Com_Printf ("Usage: %s <cvar> <value>\n", Cmd_Argv(0));
		return;
	}

	var_name = Cmd_Argv (1);
	var = Cvar_Find (var_name);

	if (var) {
        if (!var->teamplay) {
            Com_Printf("\"%s\" is not a teamplay variable\n", var->name);
            return;
        } else {
		    Cvar_Set (var, Cmd_Argv(2));
        }
	} else {
		if (Cmd_Exists(var_name)) {
			Com_Printf ("\"%s\" is a command\n", var_name);
			return;
		}
		var = Cvar_Create (var_name, Cmd_Argv(2), 0);
        var->teamplay = true;
	}
}
Esempio n. 3
0
File: cvar.cpp Progetto: luaman/zq
/*
============
Cvar_Value
============
*/
float Cvar_Value (const char *name)
{
	cvar_t	*var = Cvar_Find (name);
	if (!var)
		return 0;
	return Q_atof (var->string);
}
Esempio n. 4
0
/*
============
Cmd_AddCommand
============
*/
void Cmd_AddCommand (const char *cmd_name, xcommand_t function)
{
	cmd_function_t	*cmd;
	int	key;

	if (host_initialized)	// because hunk allocation would get stomped
		Sys_Error ("Cmd_AddCommand after host_initialized");

	// fail if the command is a variable name
	if (Cvar_Find(cmd_name))
	{
		Con_Printf ("Cmd_AddCommand: %s already defined as a var\n", cmd_name);
		return;
	}

	key = Com_HashKey (cmd_name);

	// fail if the command already exists
	for (cmd=cmd_hash_array[key] ; cmd ; cmd=cmd->hash_next)
	{
		if (!strcasecmp (cmd_name, cmd->name))
		{
			Con_Printf ("Cmd_AddCommand: %s already defined\n", cmd_name);
			return;
		}
	}

	cmd = (cmd_function_t *) Hunk_Alloc (sizeof(cmd_function_t));
	cmd->name = cmd_name;
	cmd->function = function;
	cmd->next = cmd_functions;
	cmd_functions = cmd;
	cmd->hash_next = cmd_hash_array[key];
	cmd_hash_array[key] = cmd;
}
Esempio n. 5
0
/*
* Cvar_String
* Returns an empty string if not defined
*/
const char *Cvar_String( const char *var_name )
{
	const cvar_t *const var = Cvar_Find( var_name );
	return var
		? var->string
		: "";
}
Esempio n. 6
0
cvar_t *Cvar_Create (char *name, char *string, int cvarflags)
{
	cvar_t *v;
	int key;

	if ((v = Cvar_Find(name))) {
		v->flags &= ~CVAR_TEMP;
		v->flags |= cvarflags;
		return v;
	}
	v = (cvar_t *) Q_malloc(sizeof(cvar_t));
	memset(v, 0, sizeof(cvar_t));
	// Cvar doesn't exist, so we create it
	v->next = cvar_vars;
	cvar_vars = v;

	key = Com_HashKey (name) % VAR_HASHPOOL_SIZE;
	v->hash_next = cvar_hash[key];
	cvar_hash[key] = v;

	v->name = Q_strdup(name);
	v->string = Q_strdup(string);
	v->defaultvalue = Q_strdup(string);
	v->flags = cvarflags | CVAR_USER_CREATED;
	v->value = Q_atof (v->string);
	v->integer = Q_atoi (v->string);
	StringToRGB_W(v->string, v->color);
	v->modified = true;
#ifdef WITH_TCL
	TCL_RegisterVariable (v);
#endif

	return v;
}
Esempio n. 7
0
/*
* Cvar_Integer
* Returns 0 if not defined or non numeric
*/
int Cvar_Integer( const char *var_name )
{
	const cvar_t *const var = Cvar_Find( var_name );
	return var
		? var->integer
		: 0;
}
Esempio n. 8
0
File: cvar.cpp Progetto: luaman/zq
/*
============
Cvar_String
============
*/
const char *Cvar_String (const char *name)
{
	cvar_t *var = Cvar_Find (name);
	if (!var)
		return "";
	return var->string;
}
Esempio n. 9
0
File: cvar.cpp Progetto: luaman/zq
void Cvar_Inc_f (void)
{
	int		c;
	cvar_t	*var;
	float	delta;

	c = Cmd_Argc();
	if (c != 2 && c != 3) {
		Com_Printf ("inc <cvar> [value]\n");
		return;
	}

	var = Cvar_Find (Cmd_Argv(1));
	if (!var) {
		Com_Printf ("Unknown variable \"%s\"\n", Cmd_Argv(1));
		return;
	}

	if (c == 3)
		delta = atof (Cmd_Argv(2));
	else
		delta = 1;

	Cvar_SetValue (var, var->value + delta);
}
Esempio n. 10
0
File: cvar.cpp Progetto: luaman/zq
void Cvar_Set_f (void)
{
	cvar_t *var;
	const char *name;

	if (Cmd_Argc() != 3)
	{
		Com_Printf ("usage: set <cvar> <value>\n");
		return;
	}

	name = Cmd_Argv (1);
	var = Cvar_Find (name);

	if (var)
	{
		Cvar_Set (var, Cmd_Argv(2));
	}
	else
	{
		if (Cmd_Exists(name))
		{
			Com_Printf ("\"%s\" is a command\n", name);
			return;
		}

		var = Cvar_Get (name, Cmd_Argv(2), 0);
	}

	if (cvar_seta)
		var->flags |= CVAR_USER_ARCHIVE;
}
Esempio n. 11
0
File: cvar.cpp Progetto: luaman/zq
/*
===========
Cvar_Get
===========
*/
cvar_t *Cvar_Get (const char *name, const char *string, int cvarflags)
{
	cvar_t		*var;
	int			key;

	var = Cvar_Find(name);
	if (var) {
		var->flags &= ~CVAR_TEMP;
		var->flags |= cvarflags;
		return var;
	}

	// allocate a new cvar
	var = (cvar_t *) Q_malloc (sizeof(cvar_t));

	// link it in
	var->next = cvar_vars;
	cvar_vars = var;
	key = Com_HashKey (name);
	var->hash_next = cvar_hash[key];
	cvar_hash[key] = var;

	// Q_malloc returns unitialized memory, so make sure all fields
	// are initialized here
	var->name = Q_strdup (name);
	var->string = Q_strdup (string);
	var->flags = cvarflags | CVAR_DYNAMIC;
	var->value = Q_atof (var->string);
	var->OnChange = NULL;

	// FIXME, check userinfo/serverinfo

	return var;
}
Esempio n. 12
0
/*
* Cvar_Value
* Returns 0 if not defined or non numeric
*/
float Cvar_Value( const char *var_name )
{
	const cvar_t *const var = Cvar_Find( var_name );
	return var
		? atof( var->string )
		: 0;
}
Esempio n. 13
0
File: cvar.cpp Progetto: luaman/zq
/*
============
Cvar_Register

Adds a freestanding variable to the variable list.

If the variable already exists, the value will not be set
The flags will be or'ed in if the variable exists.
============
*/
EXTERNC void Cvar_Register (cvar_t *var)
{
	char	string[512];
	int		key;
	cvar_t	*old;

	// first check to see if it has already been defined
	old = Cvar_Find (var->name);

	if (old && !(old->flags & CVAR_DYNAMIC)) {
		if (old == var)
			return;
		Com_Printf ("Can't register variable %s, already defined\n", var->name);
		return;
	}

#if 0
	// check for overlap with a command
	if (Cmd_Exists (var->name)) {
		Com_Printf ("Cvar_Register: %s is a command\n", var->name);
		return;
	}
#endif

	if (old)
	{
		var->flags |= old->flags & ~(CVAR_DYNAMIC|CVAR_TEMP);
		strlcpy (string, old->string, sizeof(string));
		Cvar_Delete (old->name);
		if (!(var->flags & CVAR_ROM))
			var->string = Q_strdup (string);
		else
			var->string = Q_strdup (var->string);
	}
	else
	{
		// allocate the string on heap because future sets will Q_free it
		var->string = Q_strdup (var->string);
	}
	
	var->value = Q_atof (var->string);

	// link the variable in
	key = Com_HashKey (var->name);
	var->hash_next = cvar_hash[key];
	cvar_hash[key] = var;
	var->next = cvar_vars;
	cvar_vars = var;

#ifndef CLIENTONLY
	if (var->flags & CVAR_SERVERINFO)
		SV_ServerinfoChanged (var->name, var->string);
#endif

#ifndef SERVERONLY
	if (var->flags & CVAR_USERINFO)
		CL_UserinfoChanged (var->name, var->string);
#endif
}
Esempio n. 14
0
char *Cvar_String (char *var_name)
{
	cvar_t *var = Cvar_Find (var_name);

	if (!var)
		return "";
	return var->string;
}
Esempio n. 15
0
void MP3_WINAMP_Init(void)
{
	if (host_initialized && Cvar_Find(mp3_dir.name))
		return;

	Cvar_SetCurrentGroup(CVAR_GROUP_MP3);
	Cvar_Register(&mp3_dir);
	Cvar_ResetCurrentGroup();
}
Esempio n. 16
0
//Examine or change the serverinfo string
void SV_Serverinfo_f (void) {
	cvar_t *var;
	char *key, *value;

	if (Cmd_Argc() == 1) {
		Com_Printf ("Server info settings:\n");
		Info_Print (svs.info);
		Com_Printf ("[%i/%i]\n", strlen(svs.info), MAX_SERVERINFO_STRING);
		return;
	}

	if (Cmd_Argc() != 3) {
		Com_Printf ("Usage: serverinfo [ <key> <value> ]\n");
		return;
	}

	key = Cmd_Argv(1);
	value = Cmd_Argv(2);

	if (key[0] == '*') {
		Com_Printf ("Star variables cannot be changed.\n");
		return;
	}

	if (!strcmp(key, "maxpitch") || !strcmp(Cmd_Argv(1), "minpitch")) {
		Cvar_Set (Cvar_Find(va("sv_%s", Cmd_Argv(1))), Cmd_Argv(2));
		return; // cvar callbacks will take care of updating serverinfo
	}

	Info_SetValueForKey (svs.info, key, value, MAX_SERVERINFO_STRING);

	// if this is a cvar, change it too	
	var = Cvar_Find (key);
	if (var && (var->flags & CVAR_SERVERINFO)) {
		// a hack - strip the serverinfo flag so that the Cvar_Set
		// doesn't trigger SV_ServerinfoChanged
		var->flags &= ~CVAR_SERVERINFO;
		Cvar_Set (var, Cmd_Argv(2));
		var->flags |= CVAR_SERVERINFO;		// put it back
	}

	// FIXME, don't send if the key hasn't changed
	SV_SendServerInfoChange (key, value);
}
Esempio n. 17
0
void Cvar_SetByName (char *var_name, char *value)
{
	cvar_t	*var;

	var = Cvar_Find (var_name);
	if (!var)
	{	// there is an error in C code if this happens
		Com_DPrintf ("Cvar_Set: variable %s not found\n", var_name);
		return;
	}

	Cvar_Set (var, value);
}
Esempio n. 18
0
qbool Cvar_Command (void)
{
	cvar_t *v;

	// check variables
	if (!(v = Cvar_Find (Cmd_Argv(0))))
		return false;

	if (Cmd_Argc() == 1) {
		if (cvar_viewhelp.value)
			Help_DescribeCvar (v);

		if (cvar_viewdefault.value) {
			char *spaces = CreateSpaces(strlen(v->name) + 2);

			Com_Printf ("%s : default value is \"%s\"\n", v->name, v->defaultvalue);

			Com_Printf ("%s current value is \"%s\"\n", spaces, v->string);

			if ((v->flags & CVAR_AUTO) && v->autoString) {
				Com_Printf ("%s auto    value is \"%s\"\n", spaces, v->autoString);
			}

			if (cvar_viewlatched.integer && v->latchedString) {
				Com_Printf ("%s latched value is \"%s\"\n", spaces, v->latchedString);
			}

		} else {
			Com_Printf ("\"%s\" is \"%s\"\n", v->name, v->string);

			if ((v->flags & CVAR_AUTO) && v->autoString) {
				Com_Printf ("auto: \"%s\"\n", v->autoString);
			}

			if (cvar_viewlatched.integer && v->latchedString) {
				Com_Printf ("latched: \"%s\"\n", v->latchedString);
			}
		}
	} else {
		// RestrictTriggers means that advanced (possibly cheaty) scripts are not allowed
		// So we will force the usage of user-created variables to go through the set command
		if ((v->flags & CVAR_USER_CREATED) && Rulesets_RestrictTriggers()) {
			Com_Printf ("Current ruleset requires \"set\" with user created variables\n");
			return true;
		}

		Cvar_Set (v, Cmd_MakeArgs(1));
	}

	return true;
}
Esempio n. 19
0
void MS_Console_Add_Content_Slider(void)
{
	cvar_t	*c = NULL;
	
	c = Cvar_Find(Cmd_Argv(4));

	if (!c)
		return;
	if (strlen(Cmd_Argv(2)))
		MS_Add_Content_Slider(Cmd_Argv(1),Cmd_Argv(2),Cmd_Argv(3),1,1,NULL,c,-100,100);
	else
		MS_Add_Content_Slider(Cmd_Argv(1),NULL,Cmd_Argv(3),1,1,NULL,c,-100,100);


}
Esempio n. 20
0
void Cvar_Set_Bind_Str_f (void)
{
	cvar_t		*var;
	int			keynum;
	char		*var_name;
	char		*key_name;
	//char		str[1024];
	//char		*v,*s;

	if (Cmd_Argc() != 3) {
		Com_Printf ("usage: set_bind_str <cvar> <key>\n");
		return;
	}

	var_name = Cmd_Argv (1);
	key_name = Cmd_Argv (2);
	var = Cvar_Find (var_name);
	keynum = Key_StringToKeynum( key_name );

	if ( !var) {
		if (Cmd_Exists(var_name)) {
			Com_Printf ("\"%s\" is a command\n", var_name);
			return;
		}
		var = Cvar_Create(var_name, "", 0);
	}

	if (!var) {
		Com_Printf ("Unknown variable \"%s\"\n", var_name);
		return;
	} else if (keynum == -1) {
		Com_Printf ("Unknown key \"%s\"\n", key_name);
		return;
	} else {
		if (keybindings[keynum]) {
			/*		s = str; v = keybindings[keynum];
						while (*v) {
							if (*v == '\"') // " should be escaped
								*s++ = '\\';
							*s++ = *v++;
						}
						*s = '\0';
						Cvar_Set (var, str);*/
			Cvar_Set (var, keybindings[keynum]);
		} else
			Cvar_Set (var, "");
	}
}
Esempio n. 21
0
// disconnect -->
void Cvar_UnSet (qbool use_regex)
{
	cvar_t	*var, *next;
	char	*name;
	int		i;
	qbool	re_search = false;


	if (Cmd_Argc() < 2) {
		Com_Printf ("unset <cvar> [<cvar2>..]: erase user-created variable\n");
		return;
	}

	for (i=1; i<Cmd_Argc(); i++) {
		name = Cmd_Argv(i);

		if (use_regex && (re_search = IsRegexp(name)))
			if(!ReSearchInit(name))
				continue;

		if (use_regex && re_search) {
			for (var = cvar_vars ; var ; var = next) {
				next = var->next;

				if (ReSearchMatch(var->name)) {
					if (var->flags & CVAR_USER_CREATED) {
						Cvar_Delete(var->name);
					} else {
						Com_Printf("Can't delete not user created cvars (\"%s\")\n", var->name);
					}
				}
			}
		} else {
			if (!(var = Cvar_Find(name))) {
				Com_Printf("Can't delete \"%s\": no such cvar\n", name);
				continue;
			}

			if (var->flags & CVAR_USER_CREATED) {
				Cvar_Delete(name);
			} else {
				Com_Printf("Can't delete not user created cvars (\"%s\")\n", name);
			}
		}
		if (use_regex && re_search)
			ReSearchDone();
	}
}
Esempio n. 22
0
static void Cvar_Reset_f( void )
{
	cvar_t *v;

	if( Cmd_Argc() != 2 )
	{
		Com_Printf( "usage: reset <variable>\n" );
		return;
	}

	v = Cvar_Find( Cmd_Argv( 1 ) );
	if( !v )
		return;

	Cvar_Set( v->name, v->dvalue );
}
Esempio n. 23
0
void Cvar_Set_Eval_f(void)
{
	if (Cmd_Argc() < 3) {
		Com_Printf("Usage:\n"
			"set_eval <variable> <expression>\n"
			"set_eval is similar to set_calc but supports richer expressions\n");
		return;
	}
	else {
		const char *expression;
		char *var_name;
		cvar_t *var;
		int errn;
		expr_val result;

		var_name = Cmd_Argv (1);
		var = Cvar_Find (var_name);

		if (!var)
			var = Cvar_Create (var_name, Cmd_Argv (1), 0);

		expression = Cmd_MakeArgs(2);

		result = Expr_Eval(expression, NULL, &errn);

		if (errn == EXPR_EVAL_SUCCESS) {
			switch (result.type) {
				case ET_INT:
					Cvar_SetValue(var, result.i_val);
					break;
				case ET_DBL:
					Cvar_SetValue(var, result.d_val);
					break;
				case ET_BOOL:
					Cvar_SetValue(var, result.b_val ? 1 : 0);
					break;
				case ET_STR:
					Cvar_Set(var, result.s_val);
					free(result.s_val);
					break;
			}
		}
		else {
			Com_Printf("Error in expression: %s\n", Parser_Error_Description(errn));
		}
	}
}
Esempio n. 24
0
File: cvar.cpp Progetto: luaman/zq
/*
============
Cvar_Command

Handles variable inspection and changing from the console
============
*/
qbool Cvar_Command (void)
{
	cvar_t		*var;

// check variables
	var = Cvar_Find (Cmd_Argv(0));
	if (!var)
		return false;

// perform a variable print or set
	if (Cmd_Argc() == 1)
	{
		Com_Printf ("\"%s\" is \"%s\"\n", var->name, var->string);
		return true;
	}

	Cvar_Set (var, Cmd_MakeArgs(1));
	return true;
}
Esempio n. 25
0
File: cvar.cpp Progetto: luaman/zq
/*
=============
Cvar_Toggle_f
=============
*/
void Cvar_Toggle_f (void)
{
	cvar_t *var;

	if (Cmd_Argc() != 2)
	{
		Com_Printf ("toggle <cvar> : toggle a cvar on/off\n");
		return;
	}

	var = Cvar_Find (Cmd_Argv(1));
	if (!var)
	{
		Com_Printf ("Unknown variable \"%s\"\n", Cmd_Argv(1));
		return;
	}

	Cvar_Set (var, var->value ? "0" : "1");
}
Esempio n. 26
0
void Cvar_Set_Alias_Str_f (void)
{
	cvar_t		*var;
	char		*var_name;
	char		*alias_name;
	//char		str[1024];
	char		*v /*,*s*/;
	if (Cmd_Argc() != 3) {
		Com_Printf ("usage: set_alias_str <cvar> <alias>\n");
		return;
	}

	var_name = Cmd_Argv (1);
	alias_name = Cmd_Argv (2);
	var = Cvar_Find (var_name);
	v = Cmd_AliasString( alias_name );

	if ( !var) {
		if (Cmd_Exists(var_name)) {
			Com_Printf ("\"%s\" is a command\n", var_name);
			return;
		}
		var = Cvar_Create(var_name, "", 0);
	}

	if (!var) {
		Com_Printf ("Unknown variable \"%s\"\n", var_name);
		return;
	} else if (!v) {
		Com_Printf ("Unknown alias \"%s\"\n", alias_name);
		return;
	} else {
		/*		s = str;
				while (*v) {
					if (*v == '\"') // " should be escaped
						*s++ = '\\';
					*s++ = *v++;
				}
				*s = '\0';
				Cvar_Set (var, str);*/
		Cvar_Set (var, v);
	}
}
Esempio n. 27
0
int				CvarContainer_RegisterVar(const char *containerClass, const char *varName)
{
	cvarContainerClass_t *con;
	cvar_t *var;
	unsigned int n;

	con = CvarContainer_FindClass(containerClass);

	if (!con)
	{
		Console_DPrintf("CvarContainer_RegisterVar: class %s does not exist\n", containerClass);
		return 0;
	}

	if (con->num_vars >= CVAR_CONTAINER_CLASS_MAX_VARS)
	{
		Console_DPrintf("CvarContainer_RegisterVar: number of vars in %s exceeds CVAR_CONTAINER_CLASS_MAX_VARS\n", containerClass);
		return 0;
	}
	
	var = Cvar_Find(varName);

	if (!var)
	{
		Console_DPrintf("CvarContainer_RegisterVar: variable %s does not exist\n", varName);
		return 0;
	}

	for (n=0; n<con->num_vars; n++)
	{
		if (con->vars[n] == var)
		{
			Console_DPrintf("CvarContainer_RegisterVar: variable %s was already registered with the container class %s\n", varName, containerClass);
			return 0;
		}
	}

	con->vars[con->num_vars] = var;
	con->num_vars++;

	return con->num_vars;
}
Esempio n. 28
0
static void Cvar_Toggle_f_base (qbool use_regex)
{
	qbool re_search = false;
	cvar_t *var;
	char *name;
	int i;


	if (Cmd_Argc() < 2) {
		Com_Printf("%s <cvar> [<cvar>..]: toggle a cvar on/off\n", Cmd_Argv(0));
		return;
	}

	for (i=1; i<Cmd_Argc(); i++) {
		name = Cmd_Argv(i);

		if (use_regex && (re_search = IsRegexp(name)))
			if(!ReSearchInit(name))
				continue;

		if (use_regex && re_search) {
			for (var = cvar_vars ; var ; var=var->next) {
				if (ReSearchMatch(var->name)) {
					Cvar_Set (var, var->value ? "0" : "1");
				}
			}
		} else {
			var = Cvar_Find (name);

			if (!(var)) {
				Com_Printf ("Unknown variable \"%s\"\n", Cmd_Argv(1));
				continue;
			}
			Cvar_Set (var, var->value ? "0" : "1");
		}
		if (use_regex && re_search)
			ReSearchDone();
	}
}
Esempio n. 29
0
/*
* Cvar_Toggle_f
*/
static void Cvar_Toggle_f( void )
{
	int i;
	cvar_t *var;

	if( Cmd_Argc() < 2 )
	{
		Com_Printf( "Usage: toggle <list of variables>\n" );
		return;
	}

	for( i = 1; i < Cmd_Argc(); i++ )
	{
		var = Cvar_Find( Cmd_Argv( i ) );
		if( !var )
		{
			Com_Printf( "No such variable: \"%s\"\n", Cmd_Argv( i ) );
			return;
		}
		Cvar_Set( var->name, var->integer ? "0" : "1" );
	}
}
Esempio n. 30
0
void Cvar_Reset (qbool use_regex)
{
	qbool re_search = false;
	cvar_t *var;
	char *name;
	int i;


	if (Cmd_Argc() < 2) {
		Com_Printf("%s <cvar> [<cvar2>..]: reset variable to it default value\n", Cmd_Argv(0));
		return;
	}

	for (i=1; i<Cmd_Argc(); i++) {
		name = Cmd_Argv(i);

		if (use_regex && (re_search = IsRegexp(name)))
			if(!ReSearchInit(name))
				continue;

		if (use_regex && re_search) {
			for (var = cvar_vars ; var ; var=var->next) {
				if (ReSearchMatch(var->name)) {
					Cvar_ResetVar(var);
				}
			}
		} else {
			if ((var = Cvar_Find(name)))
				Cvar_ResetVar(var);
			else
				Com_Printf("%s : No variable with name %s\n", Cmd_Argv(0), name);
		}
		if (use_regex && re_search)
			ReSearchDone();
	}
}