Возникла проблема в работе с KeyValues.
Code
#include <sourcemod>
new Handle:Reg;
new Handle:Reg2;
new String:File2[PLATFORM_MAX_PATH];
public OnPluginStart()
{
Reg = CreateKeyValues("Player", "", "");
if(!FileToKeyValues(Reg, "cfg/vip/vip_player.cfg") || !KvGotoFirstSubKey(Reg))
{
SetFailState("File for registration client not found!");
CloseHandle(Reg);
return;
}
BuildPath(Path_SM, File2, sizeof(File2), "configs/admins.cfg");
Reg2 = CreateKeyValues("Admins");
if(!FileToKeyValues(Reg2, File2))
{
SetFailState("File2 for registration client not found!");
CloseHandle(Reg2);
return;
}
}
public OnMapStart()
{
KvRewind(Reg);
KvGotoFirstSubKey(Reg);
do
{
if(KvGetNum(Reg, "slot", 0) == 1 || KvGetNum(Reg, "immunitet", 0) == 1)
{
decl String:Steam[32];
KvGetSectionName(Reg, Steam, 32);
KvRewind(Reg2);
if(KvJumpToKey(Reg2, Steam, true))
{
KvSetString(Reg2, "name", "VIP_PLAYER");
KvSetString(Reg2, "auth", "steam");
KvSetString(Reg2, "identity", Steam);
KvSetString(Reg2, "flags", "a");
KvSetString(Reg2, "immunity", "3");
}
}
}
while(KvGotoNextKey(Reg));
KeyValuesToFile(Reg2, File2);
ServerCommand("sm_reloadadmins");
}
Проблема в том, что в файле admins.cfg
Создается в таком виде:
Code
"STEAM_0:0:52442725"
{
"auth" "steam"
"identity" "STEAM_0:0:52442725"
"flags" "a"
"immunity" "3"
}
P.S А должно быть:
Code
"Admins"
{
"STEAM_0:0:145595577"
{
"auth" "steam"
"identity" "STEAM_0:0:145595577"
"flags" "4"
"immunity" "3"
}
"STEAM_0:0:52442754"
{
"auth" "steam"
"identity" "STEAM_0:0:52442754"
"flags" "a"
"immunity" "3"
}
}
Сообственно вопросы: Почему удаляется название группы("Admins")?
И в файл записывается только последний пользователь из KeyValues(Reg)?
Постарался описать как можно лучше... Если что то непонятно - спрашивайте.
Возможно, что ошибка элементарна, но я ее так и не увидел.
P.S Код полностью написан мной. Так что не надо говорить, что проблема в том что его копировал или что то подобное!