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

来源: 作者: 点击:
以下是一些HERO引擎单机传奇服务端的活动脚本示例:
1.**双倍经验活动脚本**:
```
(@main)
#IF
;可以设置一个活动开启的时间范围
CHECKTIME18:0020:00
#ACT
SET[双倍经验_活动状态]1
SENDMSG7双倍经验活动已开启,活动时间为18:00至20:00,请大家抓紧时间升级!
ADDEXPRATE200;将经验倍率增加2倍(原经验率基础上乘以2)
#ELSEACT
SET[双倍经验_活动状态]0
ADDEXPRATE100;恢复正常经验倍率
```
在定时器脚本中,可以定时检查活动是否结束,如果结束则恢复正常经验倍率:
```
(@ontimer1)
#IF
CHECKVAR[双倍经验_活动状态]1
#ACT
CALCVAR$T=<$TIME>-[双倍经验_活动开始时间]
#IF
$T>7200;7200秒即2小时,活动持续2小时
SET[双倍经验_活动状态]0
ADDEXPRATE100
SENDMSG7双倍经验活动已结束。
```
2.**怪物攻城活动脚本**:
```
(@main)
#IF
;可以设置一个固定的时间点开启活动
CHECKTIME20:30
#ACT
SET[怪物攻城_活动状态]1
;定义怪物刷新的坐标范围
SET[怪物刷新_X坐标范围]300350
SET[怪物刷新_Y坐标范围]300350
SET[怪物刷新数量]100
SET[已刷新怪物数量]0
;定时刷新怪物
SETTIMER15000;每5秒刷新一批怪物
#SAY
怪物攻城活动即将开始,请各位勇士做好准备!
#ELSEACT
SET[怪物攻城_活动状态]0
KILLTIMER1;关闭定时器
```
在定时器脚本中刷新怪物:
```
(@ontimer1)
#IF
CHECKVAR[怪物攻城_活动状态]1
#ACT
CALCVAR$X=RANDOM[<$STR([怪物刷新_X坐标范围])>]
CALCVAR$Y=RANDOM[<$STR([怪物刷新_Y坐标范围])>]
;这里假设怪物的名称为"攻城怪物"
SPAWNMONSTER攻城怪物1$X$Y
INC[已刷新怪物数量]1
#IF
CHECKVAR[已刷新怪物数量]>=[<$STR([怪物刷新数量])>]
#ACT
KILLTIMER1
SENDMSG7怪物攻城活动的怪物已全部刷新完毕!
```
3.**寻宝活动脚本**:
```
(@main)
#IF
;可以设置一个活动开启的条件,比如玩家拥有特定道具或完成特定任务
CHECKITEM寻宝地图入场券1
#ACT
TAKEITEM寻宝地图入场券1
MOVRANDOM5050100100;将玩家随机传送到寻宝地图的某个位置
SET[寻宝活动_剩余时间]300;寻宝活动持续5分钟(300秒)
SETTIMER21000;每秒检查一次剩余时间
#SAY
欢迎来到寻宝地图,你有5分钟的时间寻找宝藏!
#ELSEACT
#SAY
你没有寻宝地图入场券,无法参加寻宝活动。
```
在另一个定时器脚本中检查活动剩余时间:
```
(@ontimer2)
#IF
CHECKVAR[寻宝活动_剩余时间]>0
#ACT
DEC[寻宝活动_剩余时间]1
#SAY
寻宝活动剩余时间:<$STR([寻宝活动_剩余时间])>秒。
#IF
CHECKVAR[寻宝活动_剩余时间]<=0
#ACT
MOVRANDOM330330340340;将玩家传送到主城的某个位置
SENDMSG7寻宝活动已结束,你已被传送回主城。
KILLTIMER2;关闭定时器
```
4.**竞技比赛活动脚本**:
```
(@main)
#IF
;可以设置一个报名时间段
CHECKTIME14:0014:30
#ACT
#SAY
竞技比赛活动报名开启,报名时间为14:00至14:30,请输入“@报名”进行报名。
#ELSEACT
#SAY
报名时间已过,无法报名。
```
当玩家输入“@报名”时:
```
(@报名)
#IF
CHECKTIME14:0014:30
#ACT
ADDTOSET[竞技比赛_报名玩家列表]<$USERNAME>
SENDMSG7你已成功报名竞技比赛。
#ELSEACT
#SAY
报名时间已过,无法报名。
```
比赛开始时:
```
(@比赛开始)
#IF
;检查报名玩家数量是否达到一定要求
CHECKSETCOUNT[竞技比赛_报名玩家列表]>10
#ACT
;将报名玩家传送到比赛场地
FORREADVARLIST[竞技比赛_报名玩家列表]S$PLAYER
MOV$PLAYER200200
;开始比赛逻辑,比如设置比赛时间、计分等
SET[比赛时间]300;比赛持续5分钟
SETTIMER31000
#SAY
竞技比赛正式开始!
#ELSEACT
#SAY
报名玩家数量不足,比赛无法开始。
```
在比赛定时器脚本中:
```
(@ontimer3)
#IF
CHECKVAR[比赛时间]>0
#ACT
DEC[比赛时间]1
#SAY
比赛剩余时间:<$STR([比赛时间])>秒。
#IF
CHECKVAR[比赛时间]<=0
#ACT
;比赛结束,进行排名和奖励发放
;这里假设根据玩家的击杀数进行排名
SORTVARLIST[竞技比赛_报名玩家列表][竞技比赛_玩家击杀数]1
#SAY
竞技比赛结束,排名如下:
COUNTVARLIST[竞技比赛_报名玩家列表]$COUNT
#FOR1$COUNT
READVARLIST[竞技比赛_报名玩家列表]$PLAYER
#ACT
GETVARVALUE[竞技比赛_玩家击杀数]$KILL_COUNT$PLAYER
SENDMSG7排名第<$STR($I)>的玩家是:<$USERNAME($PLAYER)>,击杀数:<$STR($KILL_COUNT)>。
;根据排名发放奖励
#IF
$I=1
#ACT
GIVE$PLAYER高级装备1
#ELSEIF
$I=2
#ACT
GIVE$PLAYER中级装备1
#ELSEIF
$I=3
#ACT
GIVE$PLAYER低级装备1
#ENDIF
#NEXT
;清空比赛相关数据,以便下次比赛
CLEARVARLIST[竞技比赛_报名玩家列表]
CLEARVARLIST[竞技比赛_玩家击杀数]
KILLTIMER3;关闭定时器
```
[顶部]