分享一些HERO引擎单机传奇服务端的PVP脚本代码示例

来源: 作者: 点击:
以下是一些 HERO 引擎单机传奇服务端的 PVP 脚本代码示例:
1. **基础 PVP 伤害计算脚本**:
```
(@PlayerkillPlayer)
{
# 获取攻击者和被攻击者的信息
$Attacker = $Killer;
$Target = $Dead;

# 定义基础伤害值
$BaseDamage = 10;

# 根据攻击者的属性(如攻击力)增加伤害
$AttackerAttack = $Attacker.GetAttack();
$Damage = $BaseDamage + $AttackerAttack;

# 扣除被攻击者的生命值
$Target.SetHP($Target.GetHP() - $Damage);

# 发送伤害信息给玩家
SendMsgToPlayer($Attacker, "你对 [ $Target.Name ] 造成了 [ $Damage ] 点伤害!");
SendMsgToPlayer($Target, "你被 [ $Attacker.Name ] 攻击,受到了 [ $Damage ] 点伤害!");
}
```
在这个脚本中,当玩家攻击其他玩家时,会获取攻击者和被攻击者的信息,计算出伤害值并扣除被攻击者的生命值,同时向双方玩家发送伤害信息。
2. **PVP 技能脚本**:
```
(@SkillCast_SpecialPVPskill)
{
# 获取技能使用者
$Caster = $SkillCaster;

# 定义技能的特殊效果,比如本次技能使伤害翻倍
$DamageMultiplier = 2;

# 获取目标玩家
$Target = $TargetPlayer;

# 计算技能伤害
$BaseDamage = 20;
$SkillDamage = $BaseDamage * $DamageMultiplier;

# 扣除目标玩家的生命值
$Target.SetHP($Target.GetHP() - $SkillDamage);

# 发送技能使用信息
SendMsgToPlayer($Caster, "你使用了特殊 PVP 技能,对 [ $Target.Name ] 造成了 [ $SkillDamage ] 点伤害!");
SendMsgToPlayer($Target, "你被 [ $Caster.Name ] 的特殊技能攻击,受到了 [ $SkillDamage ] 点伤害!");
}
```
此脚本定义了一个特殊的 PVP 技能,当玩家使用该技能时,会根据设定的伤害倍数计算出技能伤害,并对目标玩家造成伤害,同时发送技能使用信息给双方玩家。
3. **PVP 区域限制脚本**:
```
(@MapEnter_PVPArea)
{
# 设置玩家进入 PVP 区域后的 PVP 状态为可攻击
$Player.SetPVPStatus(1);
}

(@MapLeave_PVPArea)
{
# 设置玩家离开 PVP 区域后的 PVP 状态为不可攻击
$Player.SetPVPStatus(0);
}
```
这组脚本用于限制玩家在特定区域内的 PVP 行为。当玩家进入指定的 PVP 区域时,其 PVP 状态被设置为可攻击;当玩家离开该区域时,PVP 状态被设置为不可攻击。
4. **PVP 胜利奖励脚本**:
```
(@PlayerWinPVP)
{
# 获取胜利的玩家
$Winner = $Killer;

# 增加胜利玩家的经验和金币奖励
$Winner.AddExp(1000);
$Winner.AddGold(5000);

# 发送奖励信息
SendMsgToPlayer($Winner, "你在 PVP 战斗中获胜,获得了 1000 点经验和 5000 金币的奖励!");
}
```
该脚本在玩家赢得 PVP 战斗后,给予玩家一定数量的经验和金币奖励,并发送奖励信息告知玩家。
5. **单挑房间脚本**:
```
(@main)
{
#SAY 这里是竞技pk场所,满足玩家单挑需要
#SAY 每个房间只可容纳两个人,不能喝药、随机、回城
<1号pk房间/@1hao><2号pk房间/@2hao><3号pk房间/@3hao>
<4号pk房间/@4hao><5号pk房间/@5hao><6号pk房间/@6hao>
}

(@1hao)
{
#if
checkrangehumcount pk001 14 14 10 < 2
#act
mapmove pk001
guildnoticemsg 244 215 %s 进入了【1号pk房间】与人对决。
#elseact
messagebox 该房间满员,请到别的房间打去
break
}

(@2hao)
{
#if
checkrangehumcount pk002 14 14 10 < 2
#act
mapmove pk002
guildnoticemsg 244 215 %s 进入了【2号pk房间】与人对决。
#elseact
messagebox 该房间满员,请到别的房间打去
break
}
// 其他房间的脚本类似
```
这是一个单挑房间的脚本示例,玩家可以选择进入不同的房间进行单挑,每个房间有人员数量限制,当房间满员时会提示玩家选择其他房间。