以下是一些在传奇TOP引擎中编写有趣脚本的案例:
### 一、玩家变身脚本
**功能描述**:
玩家可以使用特定物品,将自己变成各种怪物或NPC的外形,持续一段时间,增加游戏的趣味性和娱乐性。
```topscript
[@UseTranormItem]
#ACT
; 检查玩家是否拥有变身物品
CheckItemCount 变身卷轴 1
IF CHECK THEN
; 扣除变身卷轴
TakeItem 变身卷轴 1
; 随机生成要变成的对象(怪物或NPC)
Random 1 10 TranormID
; 开始变身
PlayerTranorm TranormID 300 ; 300 表示变身持续时间为 300 秒
SendMsg 5 你已成功变身,持续时间为 300 秒,尽情玩耍吧!
ELSE
SendMsg 5 你没有变身卷轴,无法变身哦!
```
**解释**:
- `CheckItemCount 变身卷轴 1`:检查玩家是否拥有至少一个“变身卷轴”物品。
- `TakeItem 变身卷轴 1`:如果玩家拥有,扣除一个“变身卷轴”。
- `Random 1 10 TranormID`:生成一个 1 到 10 之间的随机数作为要变成的对象的 ID。
- `PlayerTranorm TranormID 300`:将玩家变成相应的对象,持续 300 秒。
- `SendMsg 5 你已成功变身,持续时间为 300 秒,尽情玩耍吧!`:向玩家发送变身成功的消息。
### 二、神秘宝箱脚本
**功能描述**:
玩家打开神秘宝箱时,会随机获得各种物品,包括稀有物品,但也可能什么都得不到,增加玩家的惊喜感和期待感。
```topscript
[@OpenMysteryBox]
#ACT
; 检查玩家是否拥有神秘宝箱
CheckItemCount 神秘宝箱 1
IF CHECK THEN
; 扣除神秘宝箱
TakeItem 神秘宝箱 1
; 生成随机数来决定奖励
Random 1 100 RewardType
IF RewardType <= 5 THEN
; 5% 的概率获得稀有物品
AddItem 稀有武器 1
SendMsg 5 哇塞,你获得了一件稀有武器,运气爆棚哦!
ELSE IF RewardType <= 30 THEN
; 25% 的概率获得高级物品
AddItem 高级装备 1
SendMsg 5 恭喜你获得了一件高级装备,继续加油!
ELSE IF RewardType <= 70 THEN
; 40% 的概率获得普通物品
AddItem 普通装备 1
SendMsg 5 你获得了一件普通装备,也不错哦!
ELSE
; 30% 的概率什么都得不到
SendMsg 5 这次运气不太好,继续努力,下次一定会有好运的!
END IF
ELSE
SendMsg 5 你没有神秘宝箱,无法打开哦!
```
**解释**:
- `CheckItemCount 神秘宝箱 1`:检查玩家是否拥有“神秘宝箱”。
- `TakeItem 神秘宝箱 1`:若拥有则扣除一个“神秘宝箱”。
- `Random 1 100 RewardType`:生成一个 1 到 100 的随机数,根据该随机数决定奖励类型。
- 不同的范围对应不同的奖励概率和物品,分别是 5% 稀有物品、25% 高级物品、40% 普通物品和 30% 无奖励。
### 三、定时活动脚本
**功能描述**:
每天定时开启一个活动,如“双倍经验活动”或“双倍爆率活动”,吸引玩家在特定时间上线参与。
```topscript
; 在服务器启动时调用此脚本
[@OnServerStart]
#ACT
; 设置定时活动,例如每天 20:00 - 22:00 开启双倍经验活动
SetTimer 双倍经验活动 72000 20:00:00 22:00:00
SendMsg 5 每天 20:00 - 22:00 开启双倍经验活动,不要错过哦!
[@双倍经验活动]
#ACT
; 开启双倍经验
SetExpRate 2.0
SendMsg 5 双倍经验活动已开启,抓紧时间升级吧!
; 在活动结束时调用此脚本
[@双倍经验活动结束]
#ACT
; 恢复正常经验倍率
SetExpRate 1.0
SendMsg 5 双倍经验活动已结束,期待下次活动吧!
```
**解释**:
- `SetTimer 双倍经验活动 72000 20:00:00 22:00:00`:在服务器启动时设置一个名为“双倍经验活动”的定时器,每天 20:00 开始,22:00 结束,持续 72000 秒(2 小时)。
- `[@双倍经验活动]`:当活动开始时,调用此脚本,将经验倍率设置为 2.0,并发送消息通知玩家。
- `[@双倍经验活动结束]`:活动结束时,调用此脚本,将经验倍率恢复为 1.0 并通知玩家。
### 四、结婚系统脚本
**功能描述**:
玩家可以在游戏中向心仪的对象求婚,完成结婚仪式,并获得一些结婚专属福利,如属性加成或夫妻技能。
```topscript
[@Propose]
#ACT
; 获取求婚者和被求婚者的信息
GetString 1 求婚者
GetString 2 被求婚者
; 检查被求婚者是否在线
CheckPlayerOnline 被求婚者
IF CHECK THEN
; 检查求婚者是否拥有求婚戒指
CheckItemCount 求婚戒指 1
IF CHECK THEN
; 扣除求婚戒指
TakeItem 求婚戒指 1
; 发送求婚请求给被求婚者
SendMsgToPlayer 被求婚者 <求婚者> 向你求婚啦,是否愿意嫁(娶)给他(她)呢?输入 @AcceptProposal 或 @RejectProposal 来回应。
; 存储求婚信息,以便后续处理
SetGlobalString 求婚者 求婚者
SetGlobalString 被求婚者 被求婚者
ELSE
SendMsg 5 你没有求婚戒指,无法求婚哦!
END IF
ELSE
SendMsg 5 你心仪的对象不在线,请等待对方上线再求婚。
END IF
[@AcceptProposal]
#ACT
; 获取求婚者和被求婚者信息
GetGlobalString 求婚者 Proposer
GetGlobalString 被求婚者 Proposed
; 确认被求婚者接受求婚
SendMsgToPlayer Proposer <Proposed> 接受了你的求婚,祝你们幸福美满!
SendMsg 5 你已接受 <Proposer> 的求婚,准备举行婚礼吧!
; 举行结婚仪式,给予属性加成或夫妻技能
; 例如,给双方增加 10% 的属性加成
GetPlayerAttr Proposer Strength ProposerStrength
GetPlayerAttr Proposed Strength ProposedStrength
Mul ProposerStrength 1.1 NewProposerStrength
Mul ProposedStrength 1.1 NewProposedStrength
SetPlayerAttr Proposer Strength NewProposerStrength
SetPlayerAttr Proposed Strength NewProposedStrength
SendMsgToPlayer Proposer 你获得了 10% 的力量属性加成,祝你们幸福美满!
SendMsgToPlayer Proposed 你也获得了 10% 的力量属性加成,祝你们幸福美满!
; 清除求婚信息
ClearGlobalString 求婚者
ClearGlobalString 被求婚者
[@RejectProposal]
#ACT
; 获取求婚者和被求婚者信息
GetGlobalString 求婚者 Proposer
GetGlobalString 被求婚者 Proposed
; 通知求婚者被拒绝
SendMsgToPlayer Proposer <Proposed> 拒绝了你的求婚,不要灰心哦!
SendMsg 5 你拒绝了 <Proposer> 的求婚,继续寻找真爱吧!
; 清除求婚信息
ClearGlobalString 求婚者
ClearGlobalString 被求婚者
```
**解释**:
- `[@Propose]`:求婚脚本,检查求婚条件,如求婚戒指和被求婚者是否在线,发送求婚请求并存储求婚信息。
- `[@AcceptProposal]`:接受求婚脚本,完成结婚仪式,给予属性加成,通知双方玩家并清除求婚信息。
- `[@RejectProposal]`:拒绝求婚脚本,通知双方玩家并清除求婚信息。
### 五、组队挑战副本脚本
**功能描述**:
玩家可以组队进入副本,挑战强大的BOSS,成功后获得丰厚奖励,培养玩家的团队协作能力。
```topscript
[@EnterDungeon]
#ACT
; 检查玩家是否在队伍中
CheckPlayerInTeam
IF CHECK THEN
; 检查队伍人数是否满足要求(例如至少 3 人)
GetTeamMemberCount TeamSize
IF TeamSize >= 3 THEN
; 传送整个队伍进入副本
TeamTeleport 副本地图坐标X 副本地图坐标Y 副本地图坐标Z
SendMsg 5 祝你们在副本中好运,挑战强大的BOSS,赢取丰厚奖励吧!
ELSE
SendMsg 5 队伍人数不足,至少需要 3 人才能进入副本哦!
END IF
ELSE
SendMsg 5 你不在队伍中,先组好队再进入副本吧!
END IF
[@KillDungeonBoss]
#ACT
; 假设玩家成功杀死副本BOSS
; 给予队伍成员奖励
GetTeamMembers TeamMembers
ForEach TeamMembers Member
AddItem 副本奖励物品 1
SendMsgToPlayer Member 恭喜你成功击败副本BOSS,获得副本奖励物品!
END ForEach
```
**解释**:
- `[@EnterDungeon]`:进入副本脚本,检查玩家是否在队伍中及队伍人数是否足够,满足条件则传送队伍进入副本。
- `[@KillDungeonBoss]`:杀死副本BOSS后,给队伍成员每人一个“副本奖励物品”作为奖励。
这些有趣的脚本可以为传奇TOP引擎的游戏增添更多乐趣和挑战,你可以根据自己的创意和玩家的需求编写更多独特的脚本,让玩家体验更加丰富多彩的传奇世界。在编写脚本时,要注意测试和调整,确保脚本的稳定性和平衡性。

