ClanService - markvaaz/ScarletCore GitHub Wiki
ClanService provides functionality for managing clan operations in V Rising, including member management, role assignment, and clan information retrieval.
Overview
using ScarletCore.Services;
using ProjectM;
// Get all members of a clan
var members = ClanService.GetMembers("ClanName");
// Add a player to a clan
ClanService.TryAddMember(playerData, "ClanName");
Features
- Clan member management (add/remove)
- Clan role assignment and modification
- Clan information retrieval
- Clan leader identification
- Clan listing and enumeration
- Clan renaming functionality
- Built-in error handling and validation
Methods
GetMembers
Retrieves all members of a specified clan.
var members = ClanService.GetMembers("MyClan");
foreach (var member in members) {
Log.Info($"Member: {member.Name}");
}
Parameters:
clanName
- The name of the clan to get members from (case-insensitive)
Returns: A list of PlayerData objects representing all clan members
TryAddMember
Attempts to add a player to a specified clan.
if (PlayerService.TryGetByName("PlayerName", out PlayerData player)) {
bool success = ClanService.TryAddMember(player, "TargetClan");
if (success) {
Log.Info("Player added to clan successfully");
}
}
Parameters:
playerData
- The player data of the player to addclanName
- The name of the clan to add the player to
Returns: True if the player was successfully added, false otherwise
Behavior:
- Checks if player is already in a clan
- Verifies target clan exists
- Sets new member role to Member
- Currently has a bug and returns false even on success
TryRemoveFromClan
Attempts to remove a player from their current clan.
if (PlayerService.TryGetByName("PlayerName", out PlayerData player)) {
bool removed = ClanService.TryRemoveFromClan(player);
if (removed) {
Log.Info("Player removed from clan");
}
}
Parameters:
playerData
- The player data of the player to remove
Returns: True if the player was successfully removed, false otherwise
Behavior:
- Only clan leaders can remove members
- Clan leaders cannot be removed
- Creates kick request through game's event system
TryGetClanLeader
Attempts to find and return the leader of a specified clan.
if (ClanService.TryGetClanLeader("ClanName", out PlayerData leader)) {
Log.Info($"Clan leader: {leader.Name}");
}
Parameters:
clanName
- The name of the clan to find the leader for (case-insensitive)clanLeader
- Output parameter containing the clan leader's PlayerData if found
Returns: True if a clan leader was found, false otherwise
ListClans
Retrieves a dictionary of all clans with their members.
var allClans = ClanService.ListClans();
foreach (var clan in allClans) {
Log.Info($"Clan: {clan.Key}, Members: {clan.Value.Count}");
}
Returns: A dictionary where keys are clan names and values are lists of PlayerData for each clan
TryChangeClanRole
Attempts to change a player's role within their clan.
if (PlayerService.TryGetByName("PlayerName", out PlayerData player)) {
bool changed = ClanService.TryChangeClanRole(player, ClanRoleEnum.Officer);
if (changed) {
Log.Info("Player role changed to Officer");
}
}
Parameters:
playerData
- The player whose role should be changednewRole
- The new clan role to assign
Returns: True if the role was successfully changed, false if the player is not in a clan
RenameClan
Renames an existing clan and updates all member references.
ClanService.RenameClan("OldClanName", "NewClanName");
Parameters:
oldClanName
- The current name of the clannewClanName
- The new name for the clan
Behavior:
- Updates clan name in ClanTeam component
- Updates smart clan name for all members
- Logs error if clan doesn't exist
TryGetClanEntity
Attempts to find a clan entity by name.
if (ClanService.TryGetClanEntity("ClanName", out Entity clanEntity)) {
// Work with clan entity directly
}
Parameters:
clanName
- The name of the clan to find (case-insensitive)clanEntity
- Output parameter containing the clan entity if found
Returns: True if the clan was found, false otherwise
Warning: This method has a bug in the comparison logic
GetClanEntities
Creates a native array of all clan entities in the game.
var clanEntities = ClanService.GetClanEntities();
// Use clan entities...
clanEntities.Dispose(); // Important: dispose to prevent memory leaks
Returns: A NativeArray containing all clan entities with ClanTeam component
Important: The caller must dispose the returned array to prevent memory leaks
GetClanTeams
Retrieves a list of all clan team components from active clans.
var clanTeams = ClanService.GetClanTeams();
foreach (var team in clanTeams) {
Log.Info($"Clan: {team.Name}");
}
Returns: A list of ClanTeam components containing clan information
GetClanName
Gets the clan name for a specific player.
if (PlayerService.TryGetByName("PlayerName", out PlayerData player)) {
string clanName = ClanService.GetClanName(player);
if (!string.IsNullOrEmpty(clanName)) {
Log.Info($"Player is in clan: {clanName}");
}
}
Parameters:
playerData
- The player data to get clan name for
Returns: The clan name as string, or empty string if player is not in a clan
Usage Examples
Basic Clan Management
using ScarletCore.Services;
using ProjectM;
// Get clan members
var members = ClanService.GetMembers("MyGuild");
Log.Info($"Clan has {members.Count} members");
// Add a player to clan
if (PlayerService.TryGetByName("NewMember", out PlayerData player)) {
if (ClanService.TryAddMember(player, "MyGuild")) {
Log.Info("Player added to clan");
}
}
// Remove a player from their clan
if (ClanService.TryRemoveFromClan(player)) {
Log.Info("Player removed from clan");
}
Clan Information Retrieval
// Get clan leader
if (ClanService.TryGetClanLeader("MyGuild", out PlayerData leader)) {
Log.Info($"Clan leader: {leader.Name}");
}
// List all clans
var allClans = ClanService.ListClans();
foreach (var clan in allClans) {
Log.Info($"Clan: {clan.Key} ({clan.Value.Count} members)");
}
Role Management
// Change player role
if (ClanService.TryChangeClanRole(player, ClanRoleEnum.Officer)) {
Log.Info("Player promoted to Officer");
}
// Rename a clan
ClanService.RenameClan("OldName", "NewName");
Log.Info("Clan renamed successfully");
Clan Roles
The available clan roles are defined in ClanRoleEnum
:
Leader
- Clan leader with full permissionsOfficer
- Officer with elevated permissionsMember
- Regular clan member
Important Notes
- Memory management - Always dispose NativeArray returned by
GetClanEntities()
- Case sensitivity - Clan name comparisons are case-insensitive
- Leader restrictions - Clan leaders cannot be removed from clans