example
example

已解决√ 教程 注册界面删除判断字符使得能中文注册(只是删除没有改写)

  • 主题发起人 主题发起人 jdhd
  • 开始时间 开始时间

jdhd

活跃的用户
论坛元老
高级用户
认证用户
本 月 名 人 榜 最 佳
黄金
883.23 黄金
字符串可以参考这个
服务端找到这段注释掉
1736003906348.png
客户端找到这段
代码:
    local firstName = xPlayer.get('firstName')
    local lastName = xPlayer.get('lastName')

    if not string.match(firstName, "^%a+$") or not string.match(lastName, "^%a+$") then
        print("玩家的名字或姓氏包含非字母字符,无法删除身份信息")
        return
    end
将这段注释掉
这只是很多插件中的1个演示只要把服务端和客户端的判断字符代码找出来删除就行了
实在懒得弄可以替换这个插件
 

附件

你直接注释相关函数是肯定会报错的
 
这个其实很好改:
通过对于原始代码的观察,我们不难注意到最核心的判断逻辑在于这个函数:
Lua:
local function checkNameFormat(name)
    if not checkAlphanumeric(name) and not checkForNumbers(name) then
        local stringLength = string.len(name)
        return stringLength > 0 and stringLength < Config.MaxNameLength
    end
    return false
end
而通过观察,我们又注意到只要

Lua:
local function checkAlphanumeric(str)
    return (string.match(str, "%W"))
end


Lua:
local function checkForNumbers(str)
    return (string.match(str, "%d"))
end
这两个函数都返回一个非真的值,即满足预设的通过字符串核验的逻辑。因此易知,进行如下更改即可去除原始代码中对于字符的核验:
方案一:

Lua:
local function checkAlphanumeric(str)
    return nil
end

local function checkForNumbers(str)
    return nil
end

local function checkNameFormat(name)
    if not checkAlphanumeric(name) and not checkForNumbers(name) then
        local stringLength = string.len(name)
        return stringLength > 0 and stringLength < Config.MaxNameLength
    end

    return false
end
方案二:

Lua:
local function checkAlphanumeric(str)
    return (string.match(str, "%W"))
end

local function checkForNumbers(str)
    return (string.match(str, "%d"))
end

local function checkNameFormat(name)
    local stringLength = string.len(name)
    return stringLength > 0 and stringLength < Config.MaxNameLength
end

但我们也可以选择额外加入一份中文字符的处理逻辑,使得其保留原有功能并能够输入中文:

Lua:
local function checkAlphanumeric(str)
    return (string.match(str, "%W"))
end
local function checkChineseChars(str)
    return string.match(str, "[^%u4e00-%u9fa5]")
end
local function checkForNumbers(str)
    return (string.match(str, "%d"))
end
local function checkNameFormat(name)
    if checkChineseChars(name) or not checkAlphanumeric(name) then
        if not checkForNumbers(name) then
            local stringLength = string.len(name)
            return stringLength > 0 and stringLength < Config.MaxNameLength
        end
    end
    return false
end

如果有说错的地方还望指正
 
最后编辑:
后退
顶部