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

来源: 作者: 点击:
以下是一些HERO引擎单机传奇服务端的PVP脚本示例:
1.**单挑房间脚本**:
```
(@main)
#SAY这里是竞技pk场所,满足玩家单挑需要\\每个房间只可容纳两个人\\不能喝药、随机、回城\\
<1号pk房间/@1hao><2号pk房间/@2hao><3号pk房间/@3hao>\\
<4号pk房间/@4hao><5号pk房间/@5hao><6号pk房间/@6hao>
(@1hao)
#IF
CHECKRANGEHUMCOUNTpk001141410<2
#ACT
MAPMOVEpk001
GUILDNOTICEMSG244215%s进入了【1号pk房间】与人对决。
#ELSEACT
MESSAGEBOX该房间满员,请到别的房间打去
BREAK
(@2hao)
#IF
CHECKRANGEHUMCOUNTpk002141410<2
#ACT
MAPMOVEpk002
GUILDNOTICEMSG244215%s进入了【2号pk房间】与人对决。
#ELSEACT
MESSAGEBOX该房间满员,请到别的房间打去
BREAK
(@3hao)
#IF
CHECKRANGEHUMCOUNTpk003141410<2
#ACT
MAPMOVEpk003
GUILDNOTICEMSG244215%s进入了【3号pk房间】与人对决。
#ELSEACT
MESSAGEBOX该房间满员,请到别的房间打去
BREAK
(@4hao)
#IF
CHECKRANGEHUMCOUNTpk004141410<2
#ACT
MAPMOVEpk004
GUILDNOTICEMSG244215%s进入了【4号pk房间】与人对决。
#ELSEACT
MESSAGEBOX该房间满员,请到别的房间打去
BREAK
(@5hao)
#IF
CHECKRANGEHUMCOUNTpk005141410<2
#ACT
MAPMOVEpk005
GUILDNOTICEMSG244215%s进入了【5号pk房间】与人对决。
#ELSEACT
MESSAGEBOX该房间满员,请到别的房间打去
BREAK
(@6hao)
#IF
CHECKRANGEHUMCOUNTpk006141410<2
#ACT
MAPMOVEpk006
GUILDNOTICEMSG244215%s进入了【6号pk房间】与人对决。
#ELSEACT
MESSAGEBOX该房间满员,请到别的房间打去
BREAK
```
该脚本实现了创建多个单挑房间,每个房间有人员数量限制,玩家选择房间后会被传送到相应房间,并且有系统提示。
2.**PVP胜利奖励脚本**:
```
(@PVPStart)
;记录参与PVP的玩家
SET[PVP_Player1]<$USERNAME>
SET[PVP_Player2]<$TARGETNAME>
;设置PVP开始时间
SET[PVP_StartTime]<$TIME>
;禁用一些在PVP期间不允许的操作,例如喝药等(根据实际需求添加具体代码)
;......
#SAYPVP战斗开始!
(@PVPCheck)
;定时检查PVP状态,比如每1秒检查一次
SETTIMER11000
(@ontimer1)
#IF
CHECKVAR[PVP_Player1]&&CHECKVAR[PVP_Player2]
#ACT
;获取当前时间
CALCVAR$CurrentTime=<$TIME>
;计算PVP持续时间
CALCVAR$Duration=$CurrentTime-[PVP_StartTime]
#IF
$Duration>60;假设PVP持续60秒以上未分出胜负,则判定为平局
#ACT
#SAYPVP战斗平局!
;清除PVP相关变量和定时器
CLEARVAR[PVP_Player1]
CLEARVAR[PVP_Player2]
CLEARVAR[PVP_StartTime]
KILLTIMER1
;给予平局奖励(如果有)
;......
#ELSEACT
#IF
;判断玩家1的生命值是否小于等于0
CHECKVAR[<$HP([PVP_Player1])><=0]
#ACT
#SAY<$USERNAME([PVP_Player2])>在PVP中获胜!
;给予获胜者奖励
GIVEITEM<$USERNAME([PVP_Player2])>高级装备1
;清除PVP相关变量和定时器
CLEARVAR[PVP_Player1]
CLEARVAR[PVP_Player2]
CLEARVAR[PVP_StartTime]
KILLTIMER1
#ELSEIF
;判断玩家2的生命值是否小于等于0
CHECKVAR[<$HP([PVP_Player2])><=0]
#ACT
#SAY<$USERNAME([PVP_Player1])>在PVP中获胜!
;给予获胜者奖励
GIVEITEM<$USERNAME([PVP_Player1])>高级装备1
;清除PVP相关变量和定时器
CLEARVAR[PVP_Player1]
CLEARVAR[PVP_Player2]
CLEARVAR[PVP_StartTime]
KILLTIMER1
#ENDIF
#ENDIF
```
此脚本用于记录PVP的参与者、开始时间,定时检查战斗是否结束,并根据玩家的生命值判断胜负,给予相应的奖励。
3.**PVP区域限制脚本**:
```
(@main)
#SAY欢迎来到PVP区域,请尽情战斗!
;设置PVP区域的坐标范围
SET[PVP_Area_X_Min]100
SET[PVP_Area_X_Max]200
SET[PVP_Area_Y_Min]100
SET[PVP_Area_Y_Max]200
(@PVP_MoveCheck)
;定时检查玩家是否在PVP区域内,比如每0.5秒检查一次
SETTIMER2500
(@ontimer2)
#IF
CHECKVAR[<$X><[<$STR([PVP_Area_X_Min])>]]||[<$X>>[<$STR([PVP_Area_X_Max])>]]||[<$Y><[<$STR([PVP_Area_Y_Min])>]]||[<$Y>>[<$STR([PVP_Area_Y_Max])>]]
#ACT
;将玩家传送到PVP区域的随机位置
CALCVAR$RandomX=RANDOM[<$STR([PVP_Area_X_Min])>][<$STR([PVP_Area_X_Max])>]
CALCVAR$RandomY=RANDOM[<$STR([PVP_Area_Y_Min])>][<$STR([PVP_Area_Y_Max])>]
MOV<$USERNAME>$RandomX$RandomY
#SAY你已离开PVP区域,将被传送回随机位置继续战斗!
#ENDIF
```
该脚本定义了一个PVP区域,玩家进入该区域后,如果离开该区域会被自动传送到区域内的随机位置。
4.**PVP死亡惩罚脚本**:
```
(@PVP_Death)
#IF
;判断玩家是否在PVP场景中死亡
CHECKVAR[<$DEAD>]&&CHECKVAR[PVP_Scene]
#ACT
;扣除玩家一定的经验值
CALCVAR$ExpLoss=<$EXP>*0.1;假设扣除10%的经验
DEC<$USERNAME>$ExpLoss
;增加玩家的PK值
INC<$USERNAME>PKPOINT100
#SAY你在PVP中死亡,扣除了部分经验并增加了PK值!
;将玩家传送到安全区域
MOV<$USERNAME>300300;这里的坐标为安全区域的坐标
#ENDIF
```
此脚本在玩家在PVP场景中死亡时,扣除玩家的经验值、增加PK值,并将玩家传送到安全区域。
[顶部]