]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_cmds.c
add cvar sbar_miniscoreboard_size to control the size of the mini DM overlay in items...
[xonotic/darkplaces.git] / prvm_cmds.c
index 9b3dfb7c6fa2c44209bddfcf3a0c8361778fbac0..34ca11ad2cabdbc6a6b518a94eee7de57ee2fa66 100644 (file)
@@ -446,28 +446,27 @@ float cvar (string)
 */
 void VM_cvar (void)
 {
-       VM_SAFEPARMCOUNT(1,VM_cvar);
-
-       PRVM_G_FLOAT(OFS_RETURN) = Cvar_VariableValue(PRVM_G_STRING(OFS_PARM0));
+       char string[VM_STRINGTEMP_LENGTH];
+       VM_SAFEPARMCOUNTRANGE(1,8,VM_cvar);
+       VM_VarString(0, string, sizeof(string));
+       VM_CheckEmptyString(string);
+       PRVM_G_FLOAT(OFS_RETURN) = Cvar_VariableValue(string);
 }
 
 /*
 =================
 VM_cvar_string
 
-const string   VM_cvar_string (string)
+const string   VM_cvar_string (string, ...)
 =================
 */
 void VM_cvar_string(void)
 {
-       const char *name;
-       VM_SAFEPARMCOUNT(1,VM_cvar_string);
-
-       name = PRVM_G_STRING(OFS_PARM0);
-
-       VM_CheckEmptyString(name);
-
-       PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(Cvar_VariableString(name));
+       char string[VM_STRINGTEMP_LENGTH];
+       VM_SAFEPARMCOUNTRANGE(1,8,VM_cvar_string);
+       VM_VarString(0, string, sizeof(string));
+       VM_CheckEmptyString(string);
+       PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(Cvar_VariableString(string));
 }
 
 
@@ -475,32 +474,33 @@ void VM_cvar_string(void)
 ========================
 VM_cvar_defstring
 
-const string   VM_cvar_defstring (string)
+const string   VM_cvar_defstring (string, ...)
 ========================
 */
 void VM_cvar_defstring (void)
 {
-       const char *name;
-       VM_SAFEPARMCOUNT(1,VM_cvar_string);
-
-       name = PRVM_G_STRING(OFS_PARM0);
-
-       VM_CheckEmptyString(name);
-
-       PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(Cvar_VariableDefString(name));
+       char string[VM_STRINGTEMP_LENGTH];
+       VM_SAFEPARMCOUNTRANGE(1,8,VM_cvar_defstring);
+       VM_VarString(0, string, sizeof(string));
+       VM_CheckEmptyString(string);
+       PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(Cvar_VariableDefString(string));
 }
 /*
 =================
 VM_cvar_set
 
-void cvar_set (string,string)
+void cvar_set (string,string, ...)
 =================
 */
 void VM_cvar_set (void)
 {
-       VM_SAFEPARMCOUNT(2,VM_cvar_set);
-
-       Cvar_Set(PRVM_G_STRING(OFS_PARM0), PRVM_G_STRING(OFS_PARM1));
+       const char *name;
+       char string[VM_STRINGTEMP_LENGTH];
+       VM_SAFEPARMCOUNTRANGE(2,8,VM_cvar_set);
+       VM_VarString(1, string, sizeof(string));
+       name = PRVM_G_STRING(OFS_PARM0);
+       VM_CheckEmptyString(name);
+       Cvar_Set(name, string);
 }
 
 /*
@@ -1980,7 +1980,7 @@ void VM_tokenize (void)
        p = PRVM_G_STRING(OFS_PARM0);
 
        num_tokens = 0;
-       while(COM_ParseToken(&p, false))
+       while(COM_ParseToken_VM_Tokenize(&p, false))
        {
                if (num_tokens >= (int)(sizeof(tokens)/sizeof(tokens[0])))
                        break;
@@ -2011,6 +2011,7 @@ void VM_tokenizebyseparator (void)
        int separatorlen[7];
        const char *separators[7];
        const char *p;
+       const char *token;
        char tokentext[MAX_INPUTLINE];
 
        VM_SAFEPARMCOUNTRANGE(2, 8,VM_tokenizebyseparator);
@@ -2021,16 +2022,20 @@ void VM_tokenizebyseparator (void)
        for (j = 1;j < prog->argc;j++)
        {
                // skip any blank separator strings
-               if (!PRVM_G_STRING(OFS_PARM0 + j)[0])
+               const char *s = PRVM_G_STRING(OFS_PARM0+j*3);
+               if (!s[0])
                        continue;
-               separators[numseparators] = PRVM_G_STRING(OFS_PARM0 + j);
-               separatorlen[numseparators] = strlen(separators[numseparators]);
+               separators[numseparators] = s;
+               separatorlen[numseparators] = strlen(s);
                numseparators++;
        }
 
        num_tokens = 0;
-       for (num_tokens = 0;num_tokens < (int)(sizeof(tokens)/sizeof(tokens[0]));num_tokens++)
+       j = 0;
+
+       while (num_tokens < (int)(sizeof(tokens)/sizeof(tokens[0])))
        {
+               token = tokentext + j;
                while (*p)
                {
                        for (k = 0;k < numseparators;k++)
@@ -2043,12 +2048,14 @@ void VM_tokenizebyseparator (void)
                        }
                        if (k < numseparators)
                                break;
-                       if (j < (int)sizeof(tokentext[MAX_INPUTLINE]-1))
+                       if (j < (int)sizeof(tokentext)-1)
                                tokentext[j++] = *p;
                        p++;
                }
-               tokentext[j] = 0;
-               tokens[num_tokens] = PRVM_SetTempString(tokentext);
+               if (j >= (int)sizeof(tokentext))
+                       break;
+               tokentext[j++] = 0;
+               tokens[num_tokens++] = PRVM_SetTempString(token);
                if (!*p)
                        break;
        }
@@ -2199,15 +2206,15 @@ void VM_parseentitydata(void)
 
        VM_SAFEPARMCOUNT(2, VM_parseentitydata);
 
-    // get edict and test it
+       // get edict and test it
        ent = PRVM_G_EDICT(OFS_PARM0);
        if (ent->priv.required->free)
                PRVM_ERROR ("VM_parseentitydata: %s: Can only set already spawned entities (entity %i is free)!", PRVM_NAME, PRVM_NUM_FOR_EDICT(ent));
 
        data = PRVM_G_STRING(OFS_PARM1);
 
-    // parse the opening brace
-       if (!COM_ParseTokenConsole(&data) || com_token[0] != '{' )
+       // parse the opening brace
+       if (!COM_ParseToken_Simple(&data, false) || com_token[0] != '{' )
                PRVM_ERROR ("VM_parseentitydata: %s: Couldn't parse entity data:\n%s", PRVM_NAME, data );
 
        PRVM_ED_ParseEdict (data, ent);
@@ -3792,7 +3799,7 @@ void VM_chr2str (void)
 void VM_strncmp (void)
 {
        const char *s1, *s2;
-       VM_SAFEPARMCOUNT(1, VM_strncmp);
+       VM_SAFEPARMCOUNT(3, VM_strncmp);
        s1 = PRVM_G_STRING(OFS_PARM0);
        s2 = PRVM_G_STRING(OFS_PARM1);
        PRVM_G_FLOAT(OFS_RETURN) = strncmp(s1, s2, (size_t)PRVM_G_FLOAT(OFS_PARM2));