给我写一个兽魂收集的脚本 ,击杀怪物获得兽魂,(注意兽魂不是装备也不是物品),然后在NPC框可以佩戴获得的兽魂获得对应的属性注意只能在NPC框佩戴。可以同时佩戴六个兽魂,但是六个不能重复。
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-04-20 14:18:37 |
👁️ 阅读: 4
根据课程日志记录,要实现兽魂收集系统,需要结合变量存储、属性加成和界面交互功能。由于兽魂不是实体物品,需要使用变量来记录玩家获得的兽魂种类和状态。
以下是一个基础的兽魂收集与佩戴脚本实现方案:
**1. 击杀怪物触发兽魂获取**
在QFunction-0.txt中添加击杀触发:
```
[@KillMon]
#IF
; 假设半兽勇士掉落兽魂ID1
EQUAL <$KILLMONNAME> 半兽勇士
RANDOM 30 ; 30%掉落率
#ACT
; 检查是否已拥有该兽魂
CHECKVAR HUMAN 兽魂收集_1 = 0
#ACT
CALCVAR HUMAN 兽魂收集_1 + 1
SAVEVAR HUMAN 兽魂收集_1 ..\QuestDiary\兽魂系统\兽魂收集.ini
SENDMSG 6 恭喜你获得【半兽之魂】!
BREAK
#IF
EQUAL <$KILLMONNAME> 白野猪
RANDOM 20
#ACT
CHECKVAR HUMAN 兽魂收集_2 = 0
#ACT
CALCVAR HUMAN 兽魂收集_2 + 1
SAVEVAR HUMAN 兽魂收集_2 ..\QuestDiary\兽魂系统\兽魂收集.ini
SENDMSG 6 恭喜你获得【白野猪之魂】!
BREAK
```
**2. NPC兽魂佩戴界面脚本**
在Market_Def目录创建兽魂NPC脚本:
```
[@main]
#IF
#ACT
MOV S$显示内容
MOV N$已佩戴数量 0
; 检查六个佩戴位置
CHECKVAR HUMAN 佩戴位置1 > 0
#ACT
INC N$已佩戴数量 1
CHECKVAR HUMAN 佩戴位置2 > 0
#ACT
INC N$已佩戴数量 1
; ... 继续检查位置3-6
#SAY
<Img|x=161.0|y=113.0|reset=1|loadDelay=1|show=0|esc=1|img=public_win32/1900000610.png|move=0|bg=1>
<Layout|x=780.0|y=101.0|width=80|height=80|link=@exit>
<Button|x=800.0|y=114.0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>
<Text|x=200|y=150|color=255|size=20|text=兽魂佩戴系统>
<Text|x=200|y=180|color=249|size=16|text=已佩戴兽魂:<$STR(N$已佩戴数量)>/6>
; 显示已获得的兽魂
<Text|x=200|y=220|color=254|size=16|text==== 可佩戴兽魂 ===>
#CALL [\兽魂系统\兽魂列表.txt] @显示兽魂列表
[@显示兽魂列表]
#IF
CHECKVAR HUMAN 兽魂收集_1 > 0
CHECKVAR HUMAN 佩戴位置1 <> 1
CHECKVAR HUMAN 佩戴位置2 <> 1
CHECKVAR HUMAN 佩戴位置3 <> 1
CHECKVAR HUMAN 佩戴位置4 <> 1
CHECKVAR HUMAN 佩戴位置5 <> 1
CHECKVAR HUMAN 佩戴位置6 <> 1
#SAY
<Button|x=220|y=260|nimg=public/1900000662|size=18|color=255|text=半兽之魂|link=@佩戴兽魂_1>
[@佩戴兽魂_1]
#IF
; 检查是否已佩戴6个
CHECKVAR HUMAN 佩戴位置1 = 0
#ACT
CALCVAR HUMAN 佩戴位置1 = 1
SAVEVAR HUMAN 佩戴位置1 ..\QuestDiary\兽魂系统\兽魂佩戴.ini
; 增加属性
CHANGEHUMANABILITY 0 + 5 ; 攻击+5
SENDMSG 6 成功佩戴【半兽之魂】,攻击力+5!
GOTO @main
#ELSESAY
#IF
CHECKVAR HUMAN 佩戴位置2 = 0
#ACT
CALCVAR HUMAN 佩戴位置2 = 1
SAVEVAR HUMAN 佩戴位置2 ..\QuestDiary\兽魂系统\兽魂佩戴.ini
CHANGEHUMANABILITY 0 + 5
SENDMSG 6 成功佩戴【半兽之魂】,攻击力+5!
GOTO @main
; ... 继续检查位置3-6
#ELSESAY
已佩戴满6个兽魂或该兽魂已佩戴!
[@取下兽魂]
; 类似逻辑,需要提供取下功能并移除属性加成
```
**3. 登录时加载佩戴的兽魂属性**
在QManage.txt的登录触发中:
```
[@Login]
#IF
#ACT
; 加载佩戴的兽魂属性
CHECKVAR HUMAN 佩戴位置1 = 1
#ACT
CHANGEHUMANABILITY 0 + 5
; 继续检查位置2-6并叠加属性
```
**注意事项:**
1. 需要先在QuestDiary目录创建`兽魂系统`文件夹和对应的`.ini`变量文件
2. 每个兽魂需要定义唯一的ID和对应的属性加成
3. 取下兽魂时需要反向扣除属性
4. 六个佩戴位置需要分别用变量记录,佩戴时检查是否重复
5. 属性加成需要使用`CHANGEHUMANABILITY`命令实现
此方案通过变量系统记录兽魂获取和佩戴状态,在NPC界面进行交互,登录时重新加载属性加成,实现了非物品类兽魂的收集和佩戴系统。
← 返回问答库