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

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

  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » KeyValues
KeyValues
Darkeneez Дата: Вторник, 16.04.2013, 09:48:06 | Сообщение # 1
Сообщений: 221
Репутация: 18 [ +/- ]
Код
public Action:test(client, args)
{
   new String:sFile[PLATFORM_MAX_PATH];
   BuildPath(Path_SM, sFile, sizeof(sFile), "configs/zombiemoney/zombiemoney.cfg");
   new String:client_model[256];
   client_model[client] = GetClientModel(client, client_model, sizeof(client_model));
     
   if (FileExists(sFile))   
   {
    new Handle:kv = CreateKeyValues("Settings");
    FileToKeyValues(kv, sFile);
      
    if (KvJumpToKey(kv, client_model, false))
    {
     new a = KvGetNum(kv, NULL_STRING, 100);
     PrintToChat(client,"Все ок %d", a);
    }
    else
    {
     PrintToChat(client, "Ключа нет ");
    }
    CloseHandle(kv);
   }
}


Такая ситуация, независимо от того смог ли плагин KvJumpToKey или нет, он пишет "Все ок 0". А должен при отстутствии ключа писать "Ключа нет"


Сообщение отредактировал Darkeneez - Вторник, 16.04.2013, 10:43:30
 
Scarface_slv Дата: Вторник, 16.04.2013, 14:11:15 | Сообщение # 2
Сообщений: 737
Репутация: 61 [ +/- ]
попробуй заменить строку
client_model[client] = GetClientModel(client, client_model, sizeof(client_model));
на GetClientModel(client, client_model, sizeof(client_model));
и if (KvJumpToKey(kv, client_model, false))
на if (KvJumpToKey(kv, client_model))


Сообщение отредактировал Scarface_slv - Вторник, 16.04.2013, 14:31:35
 
Darkeneez Дата: Вторник, 16.04.2013, 14:42:11 | Сообщение # 3
Сообщений: 221
Репутация: 18 [ +/- ]
Теперь пишет ключа нет даже если модель и ключ совпадают. Попробую немного помучится.
Файл выглядит так.
"Settings"
{
"models/player/t_guerilla.mdl" "100"
}
 
Scarface_slv Дата: Вторник, 16.04.2013, 16:31:36 | Сообщение # 4
Сообщений: 737
Репутация: 61 [ +/- ]
Делай так
Код

"Settings"
{
             "models/player/t_guerilla.mdl"
             {
                  "num" "100"
             }
}

и вместо
new a = KvGetNum(kv, NULL_STRING, 100);
делаешь так
new a = KvGetNum(kv, "num", -1);

Добавлено (16.04.2013, 16:31:22)
---------------------------------------------
Можно еще так, может сработает.. (не уверен)
Код

....
new String:num[10];
if (KvJumpToKey(kv, "Models"))        
{
              KvGetString(kv, client_model, num, 256, "-1");        
              new a = StringToInt(num);
              if(a != -1) PrintToChatAll("%d", a);
              else PrintToChatAll("модель не найдена");
}
....

и вид файла
Код

"Settings"
{
            "Models"
            {
                  "models/player/t_guerilla.mdl" "100"        
                  "models/player/ct.mdl" "100"        
                  "models/player/spec.mdl" "100"        
            }        
}


Сообщение отредактировал Scarface_slv - Вторник, 16.04.2013, 16:39:17
 
Darkeneez Дата: Суббота, 20.04.2013, 15:12:30 | Сообщение # 5
Сообщений: 221
Репутация: 18 [ +/- ]
Не работает.
И это тоже

Код
new String:num[10];
if (KvJumpToKey(kv, "Models"))         
{  
KvGetString(kv, client_model, num, 256, "-1");         
new a = KvGetNum(kv, num, 300);  
PrintToChatAll("%d", a);  
}
 
Scarface_slv Дата: Суббота, 20.04.2013, 15:25:45 | Сообщение # 6
Сообщений: 737
Репутация: 61 [ +/- ]
Я разве давал такой пример?
 
Darkeneez Дата: Суббота, 20.04.2013, 15:30:45 | Сообщение # 7
Сообщений: 221
Репутация: 18 [ +/- ]
Это уже я попробовал когда проверил на работоспособность код двумя постами выше.
 
devim13 Дата: Суббота, 20.04.2013, 15:46:09 | Сообщение # 8
Сообщений: 8
Репутация: 0 [ +/- ]
Так попробуй
Код
public Action:test(client, args)
{
   new String:sFile[PLATFORM_MAX_PATH];
   BuildPath(Path_SM, sFile, sizeof(sFile), "configs/zombiemoney/zombiemoney.cfg");
   new String:client_model[256];
   GetClientModel(client, client_model, sizeof(client_model));
     
   if (FileExists(sFile))
   {
    new a;
    new Handle:kv = CreateKeyValues("Settings");
    FileToKeyValues(kv, sFile);
    if ((a = KvGetNum(kv, client_model)) != -1)
    {
     PrintToChat(client,"Всё ок %d", a);
    }
    else
    {
     PrintToChat(client, "Ключа нет");
    }
    CloseHandle(kv);
   }
}


Сообщение отредактировал devim13 - Суббота, 20.04.2013, 15:56:57
 
Scarface_slv Дата: Суббота, 20.04.2013, 15:49:53 | Сообщение # 9
Сообщений: 737
Репутация: 61 [ +/- ]
Может быть он не может получить из за символов "/"
 
Darkeneez Дата: Суббота, 20.04.2013, 15:58:02 | Сообщение # 10
Сообщений: 221
Репутация: 18 [ +/- ]
Может, но это тупо =/
 
Scarface_slv Дата: Суббота, 20.04.2013, 16:05:34 | Сообщение # 11
Сообщений: 737
Репутация: 61 [ +/- ]
Можно сделать так, как вариант.
и файл должен выглядеть так
Код

"Settings"
{
         "t_guerilla.mdl" "100"
         "ct_guerilla.mdl" "200"
         "t_guerilla4.mdl" "50"
}

Гости не могут скачивать файлы


Сообщение отредактировал Scarface_slv - Суббота, 20.04.2013, 18:50:35
 
devim13 Дата: Суббота, 20.04.2013, 16:08:53 | Сообщение # 12
Сообщений: 8
Репутация: 0 [ +/- ]
Смысл использовать KvGetString, если там только цифровые значения?
 
Darkeneez Дата: Суббота, 20.04.2013, 16:17:00 | Сообщение # 13
Сообщений: 221
Репутация: 18 [ +/- ]
Scarface_slv, вроде работает. klas
 
Scarface_slv Дата: Суббота, 20.04.2013, 16:17:27 | Сообщение # 14
Сообщений: 737
Репутация: 61 [ +/- ]
Переделал


Сообщение отредактировал Scarface_slv - Суббота, 20.04.2013, 18:53:29
 
Darkeneez Дата: Суббота, 20.04.2013, 16:26:43 | Сообщение # 15
Сообщений: 221
Репутация: 18 [ +/- ]
Все работает всем спасибо.

Добавлено (20.04.2013, 16:26:43)
---------------------------------------------
ReplaceString

Если не трудно можешь расжувать?

 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » KeyValues
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: