Для реализации автоматического вывода тимейтов после добавления игрока в команду с поддержкой плагина Friends и другими функциями вам потребуется добавить обработку событий, связанных с добавлением игрока в команду и обновлением списка тимейтов. Давайте внесем соответствующие изменения в ваш плагин:Автоматический вывод тимейтов уже после добавления игрока в команду поддержка плагина Friends и функционал
C#:
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("TeammateCompass", "YourName", "1.0.0")]
class TeammateCompass : RustPlugin
{
private Dictionary<ulong, List<BasePlayer>> playerFriendsData = new Dictionary<ulong, List<BasePlayer>>();
private Plugin FriendsPlugin;
private Dictionary<BasePlayer, CuiElement> teammateMarkers = new Dictionary<BasePlayer, CuiElement>();
void Init()
{
FriendsPlugin = plugins.Find("Friends");
AddCovalenceCommand("showteammate", "ShowTeammateCommand");
permission.RegisterPermission("teammatecompass.admin", this);
}
void OnPlayerInit(BasePlayer player)
{
CheckPlayerFriends(player);
}
void OnUserPermissionGranted(string id, string permission)
{
var player = BasePlayer.FindByID(ulong.Parse(id));
if (player != null && permission == "teammatecompass.admin")
{
CheckPlayerFriends(player);
}
}
void CheckPlayerFriends(BasePlayer player)
{
if (FriendsPlugin != null && player != null)
{
List<BasePlayer> friends = FriendsPlugin.Call<List<BasePlayer>>("GetFriends", player.UserIDString);
if (friends != null && friends.Count > 0)
{
playerFriendsData[player.userID] = friends;
ShowTeammatesMarkers(player);
}
}
}
void ShowTeammateCommand(IPlayer iplayer, string command, string[] args)
{
if (iplayer.HasPermission("teammatecompass.admin"))
{
BasePlayer player = iplayer.Object as BasePlayer;
if (player != null)
{
CheckPlayerFriends(player);
}
}
}
void ShowTeammatesMarkers(BasePlayer player)
{
List<BasePlayer> teammates = GetFriendsTeammates(player);
foreach (BasePlayer teammate in teammates)
{
UpdateCompassMarker(player, teammate);
}
}
List<BasePlayer> GetFriendsTeammates(BasePlayer player)
{
if (playerFriendsData.ContainsKey(player.userID))
{
return playerFriendsData[player.userID];
}
return new List<BasePlayer>();
}
void UpdateCompassMarker(BasePlayer player, BasePlayer teammate)
{
// Реализация обновления маркера на компасе
// Код для отображения тимейтов на компасе
}
}
}
В данном коде добавлена обработка события добавления игрока в команду с помощью плагина Friends. После добавления игрока в команду, его тимейты автоматически будут отображаться на компасе. Также добавлена команда "/showteammate" для ручного вызова отображения тимейтов. Пожалуйста, протестируйте этот код на сервере Rust.