Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » KeyValues
KeyValues
scorpion2904 Дата: Воскресенье, 21.10.2012, 09:36:25 | Сообщение # 1
Сообщений: 68
Репутация: 5 [ +/- ]
Плиз подскажите почему файл stat.txt обновляется даже если игрок уже есть в статистике

Code
public OnClientPutInServer(i)
{
  GetClientAuthString(i, SteaM[i], 20);
  kv = CreateKeyValues("stat");
  if(KvJumpToKey(kv, SteaM[i]))
  {
   h[i] = KvGetNum(kv, "H");
   reghp[i] = KvGetNum(kv, "reghp");
   s[i] = KvGetFloat(kv, "s");
   sp[i] = KvGetNum(kv, "sp");
   points[i] = KvGetNum(kv, "points");
   inf[i] = KvGetNum(kv, "inf");
   d[i] = KvGetNum(kv, "d");
   regammo[i] = KvGetNum(kv, "regammo");
  }
  else
  {
   kv = CreateKeyValues("stat");
   h[i] = 0;
   s[i] = 1.0;
   points[i] = 1000;
   inf[i] = 10;
   sp[i] = 0;
   d[i] = 0;
   regammo[i] = 0;
   reghp[i] = 0;
   KvJumpToKey(kv, SteaM[i], true);  
   KvSetNum(kv, "h", 0);
   KvSetNum(kv, "d", 0);
   KvSetNum(kv, "regammo", 0);
   KvSetNum(kv, "sp", 0);
   KvSetNum(kv, "inf", 10);
   KvSetNum(kv, "points", 1000);
   KvSetNum(kv, "reghp", 0);
   KvSetFloat(kv, "s", 1.0);
   KvRewind(kv);
  }

  KeyValuesToFile(kv, "stat.txt");  
  CloseHandle(kv);  
}
 
_wS_ Дата: Воскресенье, 21.10.2012, 10:22:00 | Сообщение # 2
Thanks
Потому что пишешь код и не знаешь что он делает.

Quote
kv = CreateKeyValues("stat");

Ты создал пустую группу:

Code
"stat"
{
}

И сразу же делаешь проверку if (KvJumpToKey(kv, SteaM[i])) - это условие всегда будет ложным и код будет выполнен внутри else ниже. Там ты снова второй раз делаешь kv = CreateKeyValues("stat"); - зачем? Ты же уже создал пустую группу - это просто "утечка".

Было бы больше смысла, если бы сделал так:

Code
if (FileToKeyValues(kv, "stat") && KvJumpToKey(kv, SteaM[i]))
{

}

Но все равно KeyValuesToFile(kv, "stat.txt"); внизу может оказаться лишнее, да и делать так, если в группе куча стимов - очень плохо. Обычно группу хранят в глобальной переменной.
 
scorpion2904 Дата: Воскресенье, 21.10.2012, 13:11:56 | Сообщение # 3
Сообщений: 68
Репутация: 5 [ +/- ]
С этим я разобрался, только теперь не пойму почему при выходе игрока статистика не сохраняется
В консоле пишет Native "KvJumpToKey" reported : invalid key value handle 1c701c3 (error 1)

Code
public OnClientDisconnect(i)
{
  GetClientAuthString(i, SteaM[i], 20);
  if (KvJumpToKey(kv, SteaM[i]))
  {
   KvSetNum(kv, "H", h[i]);
   KvSetFloat(kv, "s", s[i]);
   KvSetNum(kv, "d", d[i]);
   KvSetNum(kv, "reghp", reghp[i]);
   KvSetNum(kv, "sp", sp[i]);
   KvSetNum(kv, "regammo", regammo[i]);
   KvSetNum(kv, "inf", inf[i]);
   KvSetNum(kv, "points", points[i]);
   KvRewind(kv);
  }
}
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » KeyValues
  • Страница 1 из 1
  • 1
Поиск: