API方法快速参考
| 方法名 | 功能 | 参数 | 返回值 |
|--------|------|------|--------|
| HasRelationshipInTeam | 检查队伍中是否有关系的玩家 | playerIdString, relationshipType(可选) | bool |
| HasSpecificRelationship | 检查是否有指定关系 | playerIdString, relationshipType | bool |
| GetIntimacyLevel | 获取亲密度 | playerIdString, partnerIdString | int |
| DeductIntimacy | 扣除亲密度 | playerIdString, partnerIdString, amount, reason(可选) | bool |
| AddIntimacyLevel | 增加亲密度 | playerIdString, partnerIdString, amount, reason(可选) | bool |
Hook事件快速参考
| Hook事件 | 触发时机 | 参数 |
|----------|----------|------|
| OnXMRelationshipBound | 玩家绑定关系时 | playerIdString, partnerIdString, playerRelationType, partnerRelationType |
| OnXMRelationshipUpgraded | 玩家升级关系时 | playerIdString, partnerIdString, oldPlayerRelationType, oldPartnerRelationType, newPlayerRelationType, newPartnerRelationType |
| OnXMRelationshipUnbound | 玩家解绑关系时 | playerIdString, partnerIdString, playerRelationType, partnerRelationType, intimacyLevel |
1. 检查玩家队伍中是否有关系的玩家
C#:
bool HasRelationshipInTeam(string playerIdString, string relationshipType = null)
功能:检查玩家当前队伍中是否有关系的玩家
参数:
- playerIdString: 玩家ID字符串
- relationshipType: 关系类型(可选,如"老婆"、"老公"、"大哥"、"老弟"等,不传则检查任意关系)
返回值:true表示队伍中有关系的玩家,false表示没有
使用示例:
C#:
// 检查玩家队伍中是否有任意关系的玩家
bool hasAnyRelationInTeam = XMRelationship?.Call<bool>("HasRelationshipInTeam", player.UserIDString) ?? false;
if (hasAnyRelationInTeam)
{
Puts("玩家队伍中有关系伙伴!");
}
// 检查玩家队伍中是否有老婆
bool hasWifeInTeam = XMRelationship?.Call<bool>("HasRelationshipInTeam", player.UserIDString, "老婆") ?? false;
if (hasWifeInTeam)
{
Puts("玩家队伍中有老婆!");
}
2. 检查玩家是否有指定关系
C#:
bool HasSpecificRelationship(string playerIdString, string relationshipType)
功能:检查玩家是否有指定关系类型(无需检查队伍)
参数:
- playerIdString: 玩家ID字符串
- relationshipType: 关系类型(如"老婆"、"老公"、"大哥"、"老弟"等)
返回值:true表示玩家有指定关系,false表示没有
使用示例:
C#:
// 检查玩家是否有老公关系
bool hasHusband = XMRelationship?.Call<bool>("HasSpecificRelationship", player.UserIDString, "老公") ?? false;
if (hasHusband)
{
Puts("玩家有老公关系!");
}
3. 检查玩家和指定玩家的亲密度
C#:
int GetIntimacyLevel(string playerIdString, string partnerIdString)
功能:获取两个玩家之间的亲密度数值
参数:
- playerIdString: 玩家ID字符串
- partnerIdString: 伙伴ID字符串
返回值:亲密度数值,如果没有关系返回-1
使用示例:
C#:
// 获取两个玩家的亲密度
int intimacy = XMRelationship?.Call<int>("GetIntimacyLevel", player1.UserIDString, player2.UserIDString) ?? -1;
if (intimacy >= 0)
{
Puts($"两个玩家的亲密度为:{intimacy}");
}
else
{
Puts("两个玩家没有关系");
}
4. 扣除玩家和指定玩家亲密度
C#:
bool DeductIntimacy(string playerIdString, string partnerIdString, int amount, string reason = "API调用")
功能:扣除两个玩家之间的亲密度
参数:
- playerIdString: 玩家ID字符串
- partnerIdString: 伙伴ID字符串
- amount: 扣除数量(必须大于0)
- reason: 扣除原因(可选,默认为"API调用")
返回值:true表示扣除成功,false表示失败
使用示例:
C#:
// 扣除亲密度
bool success = XMRelationship?.Call<bool>("DeductIntimacy", player1.UserIDString, player2.UserIDString, 10, "插件惩罚") ?? false;
if (success)
{
Puts("成功扣除10点亲密度");
}
5. 增加玩家和指定玩家亲密度
C#:
bool AddIntimacyLevel(string playerIdString, string partnerIdString, int amount, string reason = "API调用")
功能:增加两个玩家之间的亲密度
参数:
- playerIdString: 玩家ID字符串
- partnerIdString: 伙伴ID字符串
- amount: 增加数量(必须大于0)
- reason: 增加原因(可选,默认为"API调用")
返回值:true表示增加成功,false表示失败
使用示例:
C#:
// 增加亲密度
bool success = XMRelationship?.Call<bool>("AddIntimacyLevel", player1.UserIDString, player2.UserIDString, 20, "插件奖励") ?? false;
if (success)
{
Puts("成功增加20点亲密度");
}
Hook事件
1. 玩家绑定关系时触发
触发时机:当两个玩家成功绑定关系时
参数:
- playerIdString: 玩家ID字符串
- partnerIdString: 伙伴ID字符串
- playerRelationType: 玩家的关系类型
- partnerRelationType: 伙伴的关系类型
使用示例:
C#:
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}");
}
2. 玩家升级关系时触发
C#:
void OnXMRelationshipUpgraded(string playerIdString, string partnerIdString, string oldPlayerRelationType, string oldPartnerRelationType, string newPlayerRelationType, string newPartnerRelationType)
触发时机:当两个玩家成功升级关系时
参数:
- playerIdString: 玩家ID字符串
- partnerIdString: 伙伴ID字符串
- oldPlayerRelationType: 旧的玩家关系类型
- oldPartnerRelationType: 旧的伙伴关系类型
- newPlayerRelationType: 新的玩家关系类型
- newPartnerRelationType: 新的伙伴关系类型
使用示例:
C#:
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}");
}
3. 玩家解绑关系时触发
C#:
void OnXMRelationshipUnbound(string playerIdString, string partnerIdString, string playerRelationType, string partnerRelationType, int intimacyLevel)
触发时机:当两个玩家解绑关系时
参数:
- playerIdString: 玩家ID字符串
- partnerIdString: 伙伴ID字符串
- playerRelationType: 玩家的关系类型
- partnerRelationType: 伙伴的关系类型
- intimacyLevel: 解绑时的亲密度
使用示例:
C#:
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}");
}