Заказать Сервер Заказать Плагин Контакты Поиск

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

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Пример статистики игроков (с сохранением) (Убийства/смерти)
Пример статистики игроков (с сохранением)
_wS_ Дата: Среда, 07.03.2012, 05:14:39 | Сообщение # 1
Пример Keyvalues статистики игроков (кол-во убийств/смертей).


k и d - глобальные массивы, в которых храним данные игроков, чтобы не обращаться к .txt снова и снова (лаги). Это просто пример работы KeyValues, хранить так много данных плохо, лучше использовать MYSQL/SQLite.

Прикрепления: tats.sp(4Kb)
 
М9сНиК Дата: Воскресенье, 05.08.2012, 10:39:58 | Сообщение # 2
Сообщений: 61
Репутация: 0 [ +/- ]
А где пример с мускулом?
 
TEIN Дата: Пятница, 22.02.2013, 09:15:55 | Сообщение # 3
Сообщений: 551
Репутация: 73 [ +/- ]
Вообщем создается файлик xz.cfg
Код
"wS_Group"
{
}

1. Не добавляется имя и стим игрока в файл
2. Группа с именем, в этой группе должен быть стим, я могу получить имя группы, но как получить значение стима ?

Добавлено (22.02.2013, 09:15:55)
---------------------------------------------
Не тут... перенеси в http://world-source.ru/forum/100-2292-1


Прикрепления: key.sp(1Kb)
 
Scarface_slv Дата: Пятница, 22.02.2013, 14:14:27 | Сообщение # 4
Сообщений: 749
Репутация: 61 [ +/- ]
decl String:steamid[35];
KvGetString(KeyValues, "SteamID", steamid, 35);
PrintToServer("========>%s", steamid);


Сообщение отредактировал Scarface_slv - Пятница, 22.02.2013, 14:15:25
 
TEIN Дата: Пятница, 22.02.2013, 14:58:12 | Сообщение # 5
Сообщений: 551
Репутация: 73 [ +/- ]
Это все конечно же круто, но если игроков 10, то какой стим мне выдаст?
 
Scarface_slv Дата: Пятница, 22.02.2013, 15:16:12 | Сообщение # 6
Сообщений: 749
Репутация: 61 [ +/- ]
если игроков 10, находишь имя которое тебе нужно с KvJumpToKey и внутри нее получаешь стим KvGetString


Сообщение отредактировал Scarface_slv - Пятница, 22.02.2013, 15:25:48
 
DantE6828 Дата: Понедельник, 20.01.2014, 12:22:28 | Сообщение # 7
Сообщений: 16
Репутация: 0 [ +/- ]
Вот у меня есть файл со стим-айдишниками. Как сделать так, чтобы плагин подсчитал сколько их и написал в чате: "В базе найдено 10 (например) игроков"??
 
BarD Дата: Четверг, 30.01.2014, 16:10:55 | Сообщение # 8
Сообщений: 944
Репутация: 132 [ +/- ]
В этом плагине ошибка! Вот содержание моего stats.txt (я ничего не менял):
Код
"stats"
{
  "k"  "18"
  "D"  "12"
}

Исправь ее, wS! Я так понял, что плагин не заносит Стимы в файл. И плагин считывает килы и смерти всего сервера. И еще, объясни, пожалуйста, в какой момент плагин пересохраняет статистику игроков.
 
_wS_ Дата: Четверг, 30.01.2014, 18:52:54 | Сообщение # 9
Подправил. Запись в файл после смены карты или если была команда sm plugins unload stats. Но это просто пример, сохранять статистику в keyvalues плохо, т.к. много ключей = лаги. В OnClientPutInServer KvJumpToKey можно использовать 1 раз, если думать об оптимизации.
 
BarD Дата: Пятница, 31.01.2014, 13:36:17 | Сообщение # 10
Сообщений: 944
Репутация: 132 [ +/- ]
Спасибо большое, wS! А чтобы он сохранял после каждого раунда или килла статистику, надо в блок HookEvent("round_start", round_start) (или player_death) добавить строчку MyFunc_SaveStats()? я ведь правильно понял?

Добавлено (31.01.2014, 13:36:17)
---------------------------------------------
У тебя снова ошибка:

Код
public OnClientPutInServer(client)  
{  
      g_iReady[client] = false;  

      k[client] = 0;  
      d[client] = 0;  

      // Если это бот или не удалось получить стим игрока, ничего не делаем  
      if (IsFakeClient(client) || !GetClientAuthString(client, g_SteamID[client], 30))  
          return;  

      // Устанавливаем позицию обратно в верхний узел  
      KvRewind(g_Kv);  

      // Если игрок есть в базе, получаем его статистику  
      if (KvJumpToKey(g_Kv, g_SteamID[client], false))  
      {  
          k[client] = KvGetNum(g_Kv, "k");  
          d[client] = KvGetNum(g_Kv, "d");  

          // Отмечаем что игрок авторизован  
          g_iReady[client] = true;  
      }  

      // Добавляем стим в базу  
      else if (KvJumpToKey(g_Kv, g_SteamID[client], true))  
      {  
          KvSetNum(g_Kv, "k", 0);  
          KvSetNum(g_Kv, "d", 0);  

          // Отмечаем что игрок авторизован  
          g_iReady[client] = true;  
      }  
}  


Код
     k[client] = 0;  
      d[client] = 0;
Явно лишние, потому что игрок обнуляется, заходя на сервер, даже если он есть в базе) Надо это убрать) wS, А ты плагины на заказ вместе с исходником даешь?


Сообщение отредактировал BarD - Пятница, 31.01.2014, 13:33:02
 
_wS_ Дата: Пятница, 31.01.2014, 14:40:32 | Сообщение # 11
Не ошибка это, хватит придираться.

Цитата BarD ()
плагины на заказ вместе с исходником даешь?

Да.
 
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Пример статистики игроков (с сохранением) (Убийства/смерти)
Страница 1 из 11
Поиск: