服务端全部启动正常,注册账号的时候弹出账号含有非法字符或空格,先确认输入的账号内容,不要手动敲入空格,部分输入法自带隐形空白符号,复制粘贴的账号也容易夹带看不见的控制字符,先用纯数字、英文字母组合测试,只输入小写字母加数字,不使用中文、特殊符号、横线、点号,测试能否正常注册。简单账号可以注册成功,说明是注册过滤规则限制了字符类型,不是程序故障。
打开M2引擎主程序,找到选项里面的账号注册过滤设置,不同引擎的菜单位置略有区别,GOM在参数设置的账号安全栏目,GEE在游戏参数注册选项里。里面有账号允许字符的勾选框,还有禁止字符列表,列表里默认写了空格、中文、各类符号,勾选开启非法字符过滤之后,只要账号包含列表内任意字符,注册直接拦截。把过滤规则里不需要的限制项调整,想要允许下划线、短横就从禁止列表移除,不需要严格限制可以临时关闭账号非法字符检测,保存设置之后重启M2引擎,再去注册测试。
检查登录器自带的注册校验,很多登录器配置面板里面自带前端字符过滤,登录器层面会先做一轮校验,还没有把注册请求发送到服务端就直接拦截。打开登录器配置工具,找到注册相关设置,查看账号过滤规则,登录器和M2两边的过滤规则要同步,一边放开一边限制,依旧会报错。修改登录器配置之后重新生成登录器,替换客户端里面旧的登录器,旧登录器缓存配置不会自动更新。
查看账号注册脚本,部分版本单独写了注册检测脚本,脚本里面写了字符判断命令,会单独拦截空格和指定字符。打开脚本文件夹,找到注册相关脚本文件,查找判断非法字符的代码段,脚本内写了过滤正则或者字符数组,匹配到空格、特殊字符就返回报错提示。如果不需要这个检测逻辑,可以注释掉这段检测代码,保存脚本,重启整套引擎。修改脚本之后记得查看M2控制台有没有脚本报错,语法写错会引发别的异常。
数据库字段限制也会触发这个提示,账号数据表的字段类型、长度设置,部分数据库表设置了字符集,不支持中文或者特殊字符写入,提交注册的时候数据库拒绝写入,引擎返回非法字符提示。打开数据库工具,查看账号表的账号字段,核对字段允许的字符范围,练习使用只保留英文数字的账号字段,想要开放更多字符,调整字段字符集,调整完成保存数据库,重启数据库服务和引擎。
输入法的全角空格是很容易忽略的点,半角空格会被过滤,全角空格看起来和普通空格一样,同样会被识别为非法字符,切换英文输入法再输入账号,不要在中文输入法下输入账号。有些复制过来的账号带零宽空白字符,肉眼看不到,但是程序读取的时候识别为空白,直接触发拦截,手动输入账号,不要复制粘贴。
还有账号长度限制附带的联动校验,设置最小和最大字符长度的时候,部分引擎的校验逻辑会连带检测空白,账号前后不小心带上空格,哪怕中间没有,也会判定非法。开启账号自动去空格功能,引擎参数里面有自动剔除账号首尾空格的选项,开启之后,用户输入时不小心前后加空格,程序会自动清除,不会拦截注册。
插件拦截也是一个方向,很多安全插件、防注册机插件自带账号过滤,插件优先级高于M2自带参数,就算M2里面关闭过滤,插件依旧拦截。打开插件配置面板,找到注册防护、账号过滤模块,关闭插件层面的字符检测,或者修改插件的禁止字符列表,修改完成保存,重启引擎和插件。
测试顺序可以由浅入深,先用纯英文数字账号测试,判断是否是输入内容问题。简单账号可以注册,就去调整登录器前端过滤、M2注册过滤、注册脚本、防护插件这几项。简单账号也提示非法字符,优先检查数据库表结构和插件是否强制拦截。每改动一处配置,都要完整关闭引擎再重新启动,只热加载参数,部分注册模块不会生效,修改完登录器配置,必须重新生成登录器放到客户端,再打开登录器测试注册。
如果只是单机自己练习,最简单的处理方式就是直接在引擎后台账号管理器手动新建账号,绕开游戏内注册面板,后台工具一般没有前端字符过滤,直接填写账号密码保存,不需要走游戏注册流程,适合暂时不想改动过滤规则的情况。
打开M2引擎主程序,找到选项里面的账号注册过滤设置,不同引擎的菜单位置略有区别,GOM在参数设置的账号安全栏目,GEE在游戏参数注册选项里。里面有账号允许字符的勾选框,还有禁止字符列表,列表里默认写了空格、中文、各类符号,勾选开启非法字符过滤之后,只要账号包含列表内任意字符,注册直接拦截。把过滤规则里不需要的限制项调整,想要允许下划线、短横就从禁止列表移除,不需要严格限制可以临时关闭账号非法字符检测,保存设置之后重启M2引擎,再去注册测试。
检查登录器自带的注册校验,很多登录器配置面板里面自带前端字符过滤,登录器层面会先做一轮校验,还没有把注册请求发送到服务端就直接拦截。打开登录器配置工具,找到注册相关设置,查看账号过滤规则,登录器和M2两边的过滤规则要同步,一边放开一边限制,依旧会报错。修改登录器配置之后重新生成登录器,替换客户端里面旧的登录器,旧登录器缓存配置不会自动更新。
查看账号注册脚本,部分版本单独写了注册检测脚本,脚本里面写了字符判断命令,会单独拦截空格和指定字符。打开脚本文件夹,找到注册相关脚本文件,查找判断非法字符的代码段,脚本内写了过滤正则或者字符数组,匹配到空格、特殊字符就返回报错提示。如果不需要这个检测逻辑,可以注释掉这段检测代码,保存脚本,重启整套引擎。修改脚本之后记得查看M2控制台有没有脚本报错,语法写错会引发别的异常。
数据库字段限制也会触发这个提示,账号数据表的字段类型、长度设置,部分数据库表设置了字符集,不支持中文或者特殊字符写入,提交注册的时候数据库拒绝写入,引擎返回非法字符提示。打开数据库工具,查看账号表的账号字段,核对字段允许的字符范围,练习使用只保留英文数字的账号字段,想要开放更多字符,调整字段字符集,调整完成保存数据库,重启数据库服务和引擎。
输入法的全角空格是很容易忽略的点,半角空格会被过滤,全角空格看起来和普通空格一样,同样会被识别为非法字符,切换英文输入法再输入账号,不要在中文输入法下输入账号。有些复制过来的账号带零宽空白字符,肉眼看不到,但是程序读取的时候识别为空白,直接触发拦截,手动输入账号,不要复制粘贴。
还有账号长度限制附带的联动校验,设置最小和最大字符长度的时候,部分引擎的校验逻辑会连带检测空白,账号前后不小心带上空格,哪怕中间没有,也会判定非法。开启账号自动去空格功能,引擎参数里面有自动剔除账号首尾空格的选项,开启之后,用户输入时不小心前后加空格,程序会自动清除,不会拦截注册。
插件拦截也是一个方向,很多安全插件、防注册机插件自带账号过滤,插件优先级高于M2自带参数,就算M2里面关闭过滤,插件依旧拦截。打开插件配置面板,找到注册防护、账号过滤模块,关闭插件层面的字符检测,或者修改插件的禁止字符列表,修改完成保存,重启引擎和插件。
测试顺序可以由浅入深,先用纯英文数字账号测试,判断是否是输入内容问题。简单账号可以注册,就去调整登录器前端过滤、M2注册过滤、注册脚本、防护插件这几项。简单账号也提示非法字符,优先检查数据库表结构和插件是否强制拦截。每改动一处配置,都要完整关闭引擎再重新启动,只热加载参数,部分注册模块不会生效,修改完登录器配置,必须重新生成登录器放到客户端,再打开登录器测试注册。
如果只是单机自己练习,最简单的处理方式就是直接在引擎后台账号管理器手动新建账号,绕开游戏内注册面板,后台工具一般没有前端字符过滤,直接填写账号密码保存,不需要走游戏注册流程,适合暂时不想改动过滤规则的情况。

