以下为你提供不同引擎下实现双倍经验物品脚本的编写示例:
### Mir2 引擎脚本示例
#### 实现思路
创建一个物品使用脚本,当玩家使用双倍经验物品时,扣除物品并设置双倍经验状态,同时设置一个定时任务,在指定时间后取消双倍经验。
#### 脚本代码
```plaintext
; 物品使用脚本,物品 ID 对应的脚本入口,这里假设物品 ID 触发 @UseDoubleExpItem
[@UseDoubleExpItem]
#IF
CHECKITEM 双倍经验丹 1 ; 检查玩家背包是否有 1 个双倍经验丹
#ACT
TAKE 双倍经验丹 1 ; 扣除 1 个双倍经验丹
DELAYEXEC 1800 @CancelDoubleExp ; 1800 秒(30 分钟)后执行取消双倍经验的脚本
ADDEXP 2 ; 设置经验倍数为 2 倍
SAVEUSERDB ; 保存玩家数据库,确保下线后状态保存
MESSAGEBOX 你已使用双倍经验丹,经验将在 30 分钟内双倍!
; 取消双倍经验的脚本
[@CancelDoubleExp]
#IF
#ACT
ADDEXP 1 ; 恢复经验倍数为 1 倍
MESSAGEBOX 双倍经验时间已到,经验恢复正常!
```
#### 放置位置
通常将上述代码添加到 `Envir\Market_Def\QFunction-0.txt` 或 `QFunction-1.txt` 文件中。
### DBC 引擎脚本示例
#### 实现思路
与 Mir2 引擎类似,检查物品、扣除物品、设置双倍经验和定时取消。
#### 脚本代码
```plaintext
; 物品使用脚本
[UseItem_DoubleExp]
IF
CheckItemCount 双倍经验药水 1 ; 检查玩家背包是否有 1 个双倍经验药水
THEN
TakeItem 双倍经验药水 1 ; 扣除 1 个双倍经验药水
SetTimer 1800 @EndDoubleExp ; 设置 1800 秒(30 分钟)后执行取消双倍经验的脚本
SetExpRate 2 ; 设置经验倍数为 2 倍
SaveUserInfo ; 保存玩家信息,确保下线后状态保存
SendMsg 0 你已使用双倍经验药水,接下来 30 分钟内经验双倍!
; 取消双倍经验的脚本
[@EndDoubleExp]
IF
THEN
SetExpRate 1 ; 恢复经验倍数为 1 倍
SendMsg 0 双倍经验时间结束,经验恢复正常!
```
#### 放置位置
将上述代码保存为一个新的文本文件,如 `DoubleExpItem.txt`,放置在 `Envir\QuestDiary` 目录下。
### Hero 引擎脚本示例
#### 实现思路
同样是先检查物品,然后处理物品使用、设置双倍经验和定时取消。
#### 脚本代码
```plaintext
; 物品使用脚本
[@UseDoubleExpGoods]
#IF
CHECKITEM 双倍经验卷轴 1 ; 检查玩家背包是否有 1 个双倍经验卷轴
#ACT
TAKEITEM 双倍经验卷轴 1 ; 扣除 1 个双倍经验卷轴
DELAYEXEC 1800 @StopDoubleExp ; 1800 秒(30 分钟)后执行取消双倍经验的脚本
SETEXPRATE 2 ; 设置经验倍数为 2 倍
SAVEUSERDATA ; 保存玩家数据,确保下线后状态保存
MESSAGE 0 你使用了双倍经验卷轴,接下来 30 分钟内经验双倍!
; 取消双倍经验的脚本
[@StopDoubleExp]
#IF
#ACT
SETEXPRATE 1 ; 恢复经验倍数为 1 倍
MESSAGE 0 双倍经验时间已过,经验恢复正常!
```
#### 放置位置
将脚本保存为一个 `.txt` 文件,如 `DoubleExpScript.txt`,放置在 `Envir\QuestDiary` 目录下,同时需要在 `Envir\Config\QuestDiaryList.txt` 文件中添加该脚本文件的加载配置,例如:
```plaintext
DoubleExpScript.txt
```
以上脚本示例可根据实际需求进行调整,不同引擎的指令可能存在细微差异,在使用前最好参考对应引擎的文档说明。

