C#:
using System.Collections.Generic;
using System;
using System.Linq;
namespace Oxide.Plugins
{
[Info("WFriends", "WOLF#4002", "0.0.1")]
[Description("API списка друзей для плагинов")]
class WFriends : RustPlugin
{
#region Main
private ulong GetPlayerTeamID(ulong steamid)
{
ulong teamid = 0;
var m = BasePlayer.FindByID(steamid);
if (m != null) { teamid = m.currentTeam; }
else
{
foreach (var team in RelationshipManager._instance.playerTeams)
if (team.Value.members.Contains(steamid)) teamid = team.Value.teamID;
}
return teamid;
}
#endregion
#region Api
private bool HasFriend(ulong pl1, ulong pl2)
{
bool fr = false;
ulong pl1t = GetPlayerTeamID(pl1);
ulong pl2t = GetPlayerTeamID(pl2);
if (pl1t !=0 && pl2t !=0 && (pl1t == pl2t)) fr = true;
return fr;
}
private string[] GetFriendList(ulong userid)
{
var players = new List<string>();
ulong plt = GetPlayerTeamID(userid);
if (plt != 0)
{
foreach (var member in RelationshipManager._instance.playerTeams[plt].members)
{
var m = BasePlayer.FindByID(member);
if (m != null && m.userID != userid) { players.Add(m.displayName); }
else { if (member != userid) players.Add(member.ToString()); }
}
}
return players.ToArray();
}
private bool AreFriendsS(string playerS, string friendS)
{
if (string.IsNullOrEmpty(playerS) || string.IsNullOrEmpty(friendS)) return false;
var playerId = Convert.ToUInt64(playerS);
var friendId = Convert.ToUInt64(friendS);
return HasFriend(playerId, friendId);
}
private bool AreFriends(ulong playerId, ulong friendId) => HasFriend(playerId, friendId);
private string[] IsFriendOfS(string playerS)
{
var playerId = Convert.ToUInt64(playerS);
var friends = IsFriendOf(playerId);
return friends.ToList().ConvertAll(f => f.ToString()).ToArray();
}
private ulong[] IsFriendOf(ulong playerId)
{
HashSet<ulong> friends = new HashSet<ulong>();
ulong plt = GetPlayerTeamID(playerId);
if (plt != 0)
{
foreach (var member in RelationshipManager._instance.playerTeams[plt].members)
{
if (member != playerId) friends.Add(member);
}
}
if (friends.Count == 0) friends.Add(0);
return friends.ToArray();
}
private bool HadFriendS(string playerS, string friendS)
{
if (string.IsNullOrEmpty(playerS) || string.IsNullOrEmpty(friendS)) return false;
var playerId = Convert.ToUInt64(playerS);
var friendId = Convert.ToUInt64(friendS);
return HasFriend(playerId, friendId);
}
private bool HasFriendS(string playerS, string friendS)
{
if (string.IsNullOrEmpty(playerS) || string.IsNullOrEmpty(friendS)) return false;
var playerId = Convert.ToUInt64(playerS);
var friendId = Convert.ToUInt64(friendS);
return HasFriend(playerId, friendId);
}
private bool HadFriend(ulong playerId, ulong friendId) => HasFriend(playerId, friendId);
private bool WereFriends(ulong playerId, ulong friendId) => HasFriend(playerId, friendId);
private bool WereFriendsS(string playerS, string friendS)
{
if (string.IsNullOrEmpty(playerS) || string.IsNullOrEmpty(friendS)) return false;
var playerId = Convert.ToUInt64(playerS);
var friendId = Convert.ToUInt64(friendS);
return HasFriend(playerId, friendId);
}
private bool IsFriend(ulong playerId, ulong friendId) => HasFriend(playerId, friendId);
private bool IsFriendS(string playerS, string friendS)
{
if (string.IsNullOrEmpty(playerS) || string.IsNullOrEmpty(friendS)) return false;
var playerId = Convert.ToUInt64(playerS);
var friendId = Convert.ToUInt64(friendS);
return HasFriend(playerId, friendId);
}
private bool WasFriend(ulong playerId, ulong friendId) => HasFriend(playerId, friendId);
private bool WasFriendS(string playerS, string friendS)
{
if (string.IsNullOrEmpty(playerS) || string.IsNullOrEmpty(friendS)) return false;
var playerId = Convert.ToUInt64(playerS);
var friendId = Convert.ToUInt64(friendS);
return HasFriend(playerId, friendId);
}
private ulong[] GetFriends(ulong playerId) => IsFriendOf(playerId);
private string[] GetFriendsS(string playerS)
{
var playerId = Convert.ToUInt64(playerS);
return GetFriendList(Convert.ToUInt64(playerS));
}
private string[] GetFriendListS(string playerS) => GetFriendList(Convert.ToUInt64(playerS));
#endregion
}
}