热血传奇NPC脚本开发:@@InPutString和@@InPutInteger引擎对比教程

来源: 作者: 点击:
NPC脚本中实现玩家输入功能,核心指令是`@@InPutString`和`@@InPutInteger`。前者弹出文本输入框,内容存入S变量;后者弹出数字输入框,内容存入N变量。X为0-99的变量编号,用于区分不同输入槽位。

**一、输入指令基础用法**

`@@InPutIntegerX`限制玩家只能输入纯数字,适合处理数量、等级、ID等场景。`@@InPutStringX`允许输入中英文和数字,适合角色名、留言、行会名称等文本场景。变量编号X需选用未被占用的槽位,建议从10开始预留,避免与系统变量冲突。

NPC对话中调用格式:`<功能描述/@@InPutIntegerX>`或`<功能描述/@@InPutStringX>`。玩家点击后客户端弹出对应输入框,提交后内容自动存入变量。

**二、Hero引擎回调标签格式**

Hero引擎的回调标签必须加上`Call`前缀,对应关系如下:

`<输入数字/@@InPutInteger10>` → 回调标签为`[@CallInPutInteger10]`
`<输入文字/@@InPutString15>` → 回调标签为`[@CallInPutString15]`

金币捐赠场景示例:

```
[@Main]
欢迎使用行会捐赠功能\
当前行会资金:<$GUILDBANKMONEY>金币\
<捐赠金币/@@InPutInteger10>\

[@CallInPutInteger10]
#IF
CHECKGAMEGOLD < $STR(N10)
#ACT
GAMEGOLD - $STR(N10)
GUILDBANKMONEY + $STR(N10)
MESSAGEBOX 成功捐赠<$STR(N10)>金币!
#ELSEACT
MESSAGEBOX 金币不足,请重新输入!
```

数字输入后通过`$STR(N10)`调用变量值。Hero引擎支持非法字符自动过滤,检测到敏感词时跳转至`@IsInFilterList`标签。

**三、3K引擎回调标签格式**

3K引擎省去`Call`前缀,直接使用输入指令名作为回调标签:

`<输入数字/@@InPutInteger1>` → 回调标签为`[@InPutInteger1]`
`<输入文字/@@InPutString2>` → 回调标签为`[@InPutString2]`

同一功能在3K引擎的写法:

```
[@Main]
<捐赠金币/@@InPutInteger1>\

[@InPutInteger1]
#IF
CHECKGAMEGOLD < $STR(N1)
#ACT
GAMEGOLD - $STR(N1)
GUILDBANKMONEY + $STR(N1)
MESSAGEBOX 成功捐赠<$STR(N1)>金币!
#ELSEACT
MESSAGEBOX 金币不足,请重新输入!
```

3K引擎的非法字符过滤跳转至`@MsgFilter`标签。

**四、引擎差异对照表**

| 功能项 | Hero引擎 | 3K引擎 |
|--------|----------|---------|
| 数字输入指令 | @@InPutIntegerX | @@InPutIntegerX |
| 文本输入指令 | @@InPutStringX | @@InPutStringX |
| 回调标签格式 | [@CallInPutIntegerX] / [@CallInPutStringX] | [@InPutIntegerX] / [@InPutStringX] |
| 非法字符触发 | @IsInFilterList | @MsgFilter |
| 变量调用 | <$STR(NX)> / <$STR(SX)> | <$STR(NX)> / <$STR(SX)> |

**五、行会申请完整实操**

Hero引擎行会创建场景:

```
(@Main)
#SAY
欢迎申请创建行会,请输入行会名称:\
<输入行会名称/@CallInPutString85>\

[@CallInPutString85]
#ACT
@@InPutString85 请输入行会名称(最多8个字符)
#SAY
你输入的行会名称为:<$STR(S85)>\
<确认创建/@BuildGuild>\
<重新输入/@CallInPutString85>\

[@BuildGuild]
#IF
CHECKSTRS85 "" ;检测是否为空
#ACT
MESSAGEBOX 行会名称不能为空,请重新输入!
BREAK
#IF
CHECKLENS85 2 8 ;限制名称长度2-8个字符
#ACT
BuildGuild <$USERNAME> <$STR(S85)>
#SAY
行会创建成功!
```

3K引擎对应写法:

```
(@@InPutInteger @@InPutString)
#SAY
欢迎申请创建行会,请输入行会名称:\
<输入名称/@InPutString1>\

[@InPutString1]
#ACT
@@InPutString1 请输入2-8个字符的行会名称
#SAY
确认创建行会:<$STR(S1)>?\
<确认/@ConfirmBuild>\
<重新输入/@InPutString1>\

[@ConfirmBuild]
#IF
HAVEGUILD ;检测是否已加入行会
#ACT
MESSAGEBOX 你已加入其他行会,无法创建新行会!
BREAK
#IF
CHECKLENS1 2 8
#ACT
BuildGuild <$USERNAME> <$STR(S1)>
#SAY
行会创建成功!
```

**六、常见故障排查**

输入框无法弹出时检查命令格式是否正确,Hero引擎需加`Call`前缀,3K引擎不需要。同时确认变量编号未被其他功能占用。

变量内容无法正常显示时确认调用语法为`<$STR(NX)>`或`<$STR(SX)>`,Hero引擎使用`MESSAGEBOX`弹窗反馈,3K引擎需用`#SAY`展示结果。

输入内容保存失败时检查非法字符过滤列表是否正确配置。Hero引擎在“查看-列表信息-其他设置”中添加敏感词,3K引擎配置路径可能不同。文本文件写入时注意编码格式需为ANSI,否则可能出现乱码。