一分钟学会:传奇NPC对话框设置输入框(行会申请同款教程)

来源: 作者: 点击:
一句话核心原理:用 INPUT 命令 + 变量接收 即可实现玩家输入框功能。下面通过行会申请实例手把手教学:

🛠️ 完整NPC脚本示例(含中文注释)

(@MAIN) -- 主对话框
; 显示基础提示

'你想创建行会吗?\n输入名称后点击确认'
重点!触发输入框的关键命令 ↓↓↓

<请输入行会名/@InputGuildName> ; 创建可点击的超链接按钮
(@InputGuildName) -- 输入框触发标签

; 核心INPUT语法 ↓↓↓

INPUT '请输入行会名称:' @ConfirmGuildName ; 设置接收变量
(@ConfirmGuildName) -- 接收输入内容的标签

; 检查输入是否为空

IF CHECKSTRING == ""
'行会名不能为空!\<返回/@MAIN>'

BREAK
; 这里添加敏感词过滤(实际脚本需扩展)

IF CHECKSTRING == "非法名称"
'含有禁用词汇!\<返回/@MAIN>'

BREAK
; 存储玩家输入内容(变量名可用中文)

保存行会名 = CHECKSTRING
'你创建的行会名为:<$OUTPUT(保存行会名)> \n\<确认创建/@CreateGuild> | \<取消/@EXIT>'
(@CreateGuild) -- 创建执行部分

; 调用游戏创建行会函数(根据引擎差异调整)

Guild.Create 保存行会名
'行会 <$OUTPUT(保存行会名)> 已成立!'
CLOSE

🔧 四大核心要点详解
输入框触发技巧

标签跳转法:先设置点击入口 <输入文字/@Input>

INPUT命令格式:

INPUT '提示文字' @接收标签名

变量接收与处理

输入内容自动存入 CHECKSTRING 系统变量

可用赋值语句保存:自定义变量 = CHECKSTRING
输入校验流程

graph TB
A[接收输入] --> B{是否为空?}
--是--> C[提示错误]

--否--> D{含敏感词?}

--是--> C

--否--> E[保存并显示]

引擎差异注意表

引擎类型 INPUT命令差异 特殊说明

HGE引擎(主流) 直接支持 变量名区分大小写
GOM引擎 需插件支持 插件需注册DLL
翎风引擎 用 @InputBox 参数顺序不同

💥 新手避坑指南
输入框不弹出?

检查标签名是否拼写错误(如 @InputName 写成 @Inputname)

引擎不支持时尝试安装 IPInput.dll 插件
输入中文乱码?

在脚本开头添加:MESSAGEENCODE UTF8

将文本文件另存为 ANSI编码
如何限制长度?

IF LEN(CHECKSTRING) > 12
'名称超过12字符!\<返回/@MAIN>'

BREAK

⚠ 进阶安全提醒

必做校验 :

! 1. 敏感词过滤(导入屏蔽词库.txt)
! 2. 特殊符号拦截(<>&等易崩溃字符)
! 3. 重复创建检测(查询GuildList.txt)

法律提示:本教程仅适用于学习交流,搭建商业服需获得游戏官方授权。某私人服务器因未做输入校验导致玩家输入恶意代码,造成数千个账号数据泄露!

掌握INPUT命令后,不仅能做行会申请框,还能实现:
✔ 玩家改名系统
✔ 邮件内容输入
✔ 自定义喊话前缀
✔ 装备刻字功能

试试在对话框里加入彩色效果:
INPUT '{color=red}警告:{/color} 输入后不可修改\\ @ConfirmName'