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

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Лидеры в игре
Лидеры в игре
Valeriks Дата: Суббота, 26.07.2014, 21:24:39 | Сообщение # 1
Сообщений: 100
Репутация: 3 [ +/- ]
Всем привет!
Помогите решить задачку pipec мне нужно чтобы выводило 3 лучших игрока в конце раунда по общему количеству фрагов..

мой код (если это можно назвать кодом)
Код
#pragma semicolon 1
#include <sourcemod>

new i_UserFrags[MAXPLAYERS+1];

public OnPluginStart()
{
  HookEvent("player_death", player_death);
  HookEvent("round_end", round_end);
}

public player_death(Handle:event, const String:name[], bool:dontBroadcast)
{
  new client = GetClientOfUserId(GetEventInt(event, "userid"));
  i_UserFrags[client] = GetClientFrags(client);
}

public round_end(Handle:event, const String:name[], bool:dontBroadcast)
{
  for (new i = 1; i <= MaxClients; i++)
  {
   if(i_UserFrags[i] > i_UserFrags[i] && i_UserFrags[i] != 0)
   {
    PrintToChatAll("Лидируют игроки: %N", i_UserFrags[i]);
   }
  }
}

короче полный отстой.. я не знаю как вывести лучших игроков а остальных отбросить... plach
Надеюсь на вашу поддержку.
 
BarD Дата: Воскресенье, 27.07.2014, 12:33:23 | Сообщение # 2
Сообщений: 943
Репутация: 137 [ +/- ]
Так, это задачка из школьного курса. Нужно найти 3 наибольших числа из кучи разных чисел.
Нахождение первого по фрагам игрока труда не составит:

Код
new Frags[MAXPLAYERS +2]; // Глобальная переменная

public round_end(Handle:event, const String:name[], bool:dontBroadcast)    
{    
new First = 1;//Создаем переменную для хранения игрока на первом месте
new Second = 1;// Для второго
new Third = 1;//И для третьего

for (new i = 1; i<=MaxClients;i++)     
{
      if (IsClientInGame(i) && i)
     {
       Frags[i] = GetClientFrags(i); //Получаем в массиве фраги всех игроков
     }
     if (Frags[i] > Frags[First])  First = i;
    if (Frags[i] < Frags[First] && Frags[i] > Frags[Third]) Second = i;
    if (Frags[i] < Frags[First] < Frags[Second]) Third = i;
}
PrintToChatAll("Первый: %N", First);
PrintToChatAll("Второй: %N", Second);
PrintToChatAll("Третий: %N", Third);
}


Не уверен, но попробуй так. Может, сработает. Если нет, напиши здесь


Сообщение отредактировал BarD - Воскресенье, 27.07.2014, 12:55:15
 
Valeriks Дата: Вторник, 29.07.2014, 17:50:35 | Сообщение # 3
Сообщений: 100
Репутация: 3 [ +/- ]
Спасибо BarD.
Такой вариант в принципе рабочий, но я решил пойти другим путем)) я отказался от этой затеи и полностью переделал свой плагин где этот метод не нужен. Но всё равно благодарю за помощь.
 
BarD Дата: Вторник, 29.07.2014, 18:34:27 | Сообщение # 4
Сообщений: 943
Репутация: 137 [ +/- ]
Не за что! Здесь всегда помогут)
 
horr0r Дата: Среда, 30.07.2014, 01:06:28 | Сообщение # 5
Сообщений: 149
Репутация: 40 [ +/- ]
Есть еще такая полезная функция, SortArray. Ей можно сортировать более большие массивы
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Лидеры в игре
  • Страница 1 из 1
  • 1
Поиск: