bool HasRelationshipInTeam(string playerIdString, string relationshipType = null)
// 检查玩家队伍中是否有任意关系的玩家
bool hasAnyRelationInTeam = XMRelationship?.Call<bool>("HasRelationshipInTeam", player.UserIDString) ?? false;
if (hasAnyRelationInTeam)
{
Puts("玩家队伍中有关系伙伴!");
}
// 检查玩家队伍中是否有老婆
bool hasWifeInTeam = XMRelationship?.Call<bool>("HasRelationshipInTeam", player.UserIDString, "老婆") ?? false;
if (hasWifeInTeam)
{
Puts("玩家队伍中有老婆!");
}
bool HasSpecificRelationship(string playerIdString, string relationshipType)
// 检查玩家是否有老公关系
bool hasHusband = XMRelationship?.Call<bool>("HasSpecificRelationship", player.UserIDString, "老公") ?? false;
if (hasHusband)
{
Puts("玩家有老公关系!");
}
int GetIntimacyLevel(string playerIdString, string partnerIdString)
// 获取两个玩家的亲密度
int intimacy = XMRelationship?.Call<int>("GetIntimacyLevel", player1.UserIDString, player2.UserIDString) ?? -1;
if (intimacy >= 0)
{
Puts($"两个玩家的亲密度为:{intimacy}");
}
else
{
Puts("两个玩家没有关系");
}
bool DeductIntimacy(string playerIdString, string partnerIdString, int amount, string reason = "API调用")
// 扣除亲密度
bool success = XMRelationship?.Call<bool>("DeductIntimacy", player1.UserIDString, player2.UserIDString, 10, "插件惩罚") ?? false;
if (success)
{
Puts("成功扣除10点亲密度");
}
bool AddIntimacyLevel(string playerIdString, string partnerIdString, int amount, string reason = "API调用")
// 增加亲密度
bool success = XMRelationship?.Call<bool>("AddIntimacyLevel", player1.UserIDString, player2.UserIDString, 20, "插件奖励") ?? false;
if (success)
{
Puts("成功增加20点亲密度");
}
// 获取玩家的所有师傅
string masters = XMRelationship?.Call<string>("GetRelationshipPartnerNames", player.UserIDString, "师傅") ?? null;
if (!string.IsNullOrEmpty(masters))
{
Puts($"玩家的师傅有:{masters}");
}
else
{
Puts("玩家没有师傅");
}
// 获取玩家的所有老婆
string wives = XMRelationship?.Call<string>("GetRelationshipPartnerNames", player.UserIDString, "老婆") ?? null;
if (!string.IsNullOrEmpty(wives))
{
Puts($"玩家的老婆有:{wives}");
}
string GetRelationshipBetweenPlayers(string playerIdString, string targetIdString)
// 获取两个玩家之间的关系
string relationship = XMRelationship?.Call<string>("GetRelationshipBetweenPlayers", player1.UserIDString, player2.UserIDString) ?? null;
if (!string.IsNullOrEmpty(relationship))
{
string[] parts = relationship.Split('|');
if (parts.Length >= 2)
{
string player1Role = parts[0]; // 玩家1的关系类型
string player2Role = parts[1]; // 玩家2的关系类型
Puts($"{player1.displayName}是{player1Role},{player2.displayName}是{player2Role}");
// 在UI中显示玩家2的关系类型
string displayText = $"{player2.displayName} ({player2Role})";
}
}
else
{
Puts("两个玩家之间没有关系");
}
// 实际应用:在队伍系统中显示队员关系
private string GetMemberDisplayName(BasePlayer viewer, BasePlayer member)
{
string relationship = XMRelationship?.Call<string>("GetRelationshipBetweenPlayers",
viewer.UserIDString, member.UserIDString) ?? null;
if (!string.IsNullOrEmpty(relationship))
{
string[] parts = relationship.Split('|');
if (parts.Length >= 2)
{
// 显示成员在查看者眼中的身份
return $"{member.displayName} ({parts[1]})";
}
}
return member.displayName;
}
string GetPlayerGuildInfo(string playerIdString)
// 获取玩家的帮派信息
string guildInfo = XMRelationship?.Call<string>("GetPlayerGuildInfo", player.UserIDString) ?? null;
if (!string.IsNullOrEmpty(guildInfo))
{
Puts($"玩家所在帮派:{guildInfo}");
}
else
{
Puts("玩家没有加入帮派");
}
// 在UI中显示帮派信息
private void ShowGuildInfo(BasePlayer player)
{
string guildInfo = XMRelationship?.Call<string>("GetPlayerGuildInfo", player.UserIDString);
string displayText = !string.IsNullOrEmpty(guildInfo) ? guildInfo : "暂无";
// 在UI中显示
AddInfo("宗门", displayText);
}
// 检查玩家是否有帮派
private bool HasGuild(BasePlayer player)
{
string guildInfo = XMRelationship?.Call<string>("GetPlayerGuildInfo", player.UserIDString);
return !string.IsNullOrEmpty(guildInfo);
}
void OnXMRelationshipBound(string playerIdString, string partnerIdString, string playerRelationType, string partnerRelationType)
{
var player = BasePlayer.Find(playerIdString);
var partner = BasePlayer.Find(partnerIdString);
Puts($"{player?.displayName} 和 {partner?.displayName} 绑定了关系:{playerRelationType} - {partnerRelationType}");
}
void OnXMRelationshipUpgraded(string playerIdString, string partnerIdString, string oldPlayerRelationType, string oldPartnerRelationType, string newPlayerRelationType, string newPartnerRelationType)
void OnXMRelationshipUpgraded(string playerIdString, string partnerIdString, string oldPlayerRelationType, string oldPartnerRelationType, string newPlayerRelationType, string newPartnerRelationType)
{
var player = BasePlayer.Find(playerIdString);
var partner = BasePlayer.Find(partnerIdString);
Puts($"{player?.displayName} 和 {partner?.displayName} 关系升级:{oldPlayerRelationType}-{oldPartnerRelationType} → {newPlayerRelationType}-{newPartnerRelationType}");
}
void OnXMRelationshipUnbound(string playerIdString, string partnerIdString, string playerRelationType, string partnerRelationType, int intimacyLevel)
void OnXMRelationshipUnbound(string playerIdString, string partnerIdString, string playerRelationType, string partnerRelationType, int intimacyLevel)
{
var player = BasePlayer.Find(playerIdString);
var partner = BasePlayer.Find(partnerIdString);
Puts($"{player?.displayName} 和 {partner?.displayName} 解绑了关系:{playerRelationType}-{partnerRelationType},亲密度:{intimacyLevel}");
}