Thread: [Solved] KeyValues not working
View Single Post
SpirT
Senior Member
Join Date: Sep 2018
Location: Portugal
Old 02-24-2021 , 07:40   Re: KeyValues not working
Reply With Quote #10

Quote:
Originally Posted by DJ Tsunami View Post
I don't know, works fine for me:
PHP Code:
char filePath[PLATFORM_MAX_PATH 1];
char scoreTag[MAXPLAYERS 1][64];
char chatColor[MAXPLAYERS 1][64];
char nameColor[MAXPLAYERS 1][64];

public 
void OnPluginStart()
{
    
BuildPath(Path_SMfilePathsizeof(filePath), "configs/viptags.cfg");

    
CheckForKeyValues(1"STEAM_0:1:2");
}

void CheckForKeyValues(int clientchar[] steamID)
{
    
KeyValues kv = new KeyValues("VIPTags");
    
kv.ImportFromFile(filePath);
    
kv.JumpToKey(steamIDtrue);

    
kv.GetString("scoretag"scoreTag[client], sizeof(scoreTag[]));
    
kv.GetString("chatcolor"chatColor[client], sizeof(chatColor[]));
    
kv.GetString("namecolor"nameColor[client], sizeof(nameColor[]));

    if (
StrEqual(scoreTag[client], "") && StrEqual(chatColor[client], "") && StrEqual(nameColor[client], ""))
    {
        
kv.SetString("scoretag""-change-");
        
kv.SetString("chatcolor""-change-");
        
kv.SetString("namecolor""-change-");
        
kv.Rewind();
        
kv.ExportToFile(filePath);
    }

    
delete kv;

Output:
Code:
"VIPTags"
{
	"STEAM_0:1:2"
	{
		"scoretag"		"-change-"
		"chatcolor"		"-change-"
		"namecolor"		"-change-"
	}
}
Thanks for the reply. Also tried your code and worked as well. I have modified my code and it worked.

The current source is:
PHP Code:
void CheckForKeyValues(int clientchar[] steamID)
{
    
KeyValues kv = new KeyValues("VIPTags");
    
kv.ImportFromFile(filePath);
    
    
kv.JumpToKey(steamIDtrue);
    
KvGetString(kv"scoretag"scoreTag[client], sizeof(scoreTag[]));
    
KvGetString(kv"chatcolor"chatColor[client], sizeof(chatColor[]));
    
KvGetString(kv"namecolor"nameColor[client], sizeof(nameColor[]));
        
    if(
StrEqual(scoreTag[client], "") && StrEqual(chatColor[client], "") && StrEqual(nameColor[client], ""))
    {
           
KvSetString(kv"scoretag""-change-");
        
KvSetString(kv"chatcolor""-change-");
           
KvSetString(kv"namecolor""-change-");
        
kv.Rewind();
        
kv.ExportToFile(filePath);
        
delete kv;
        return;
    }
           
    
delete kv;
    return;

I don't think it was the if statement because it was returning true. What I think that was the issue was the KVGoToFirstSubKey(kv);. I think I shouldn't use that if I'm on the main tree.

Thanks for your help!
__________________
SpirT is offline