- ---------------------------------------------------------------------------------------------------------
- --
- -- 创建角色
- --
- function CreateRole_BnClickCreateRole()
- local szName = CreateRole_Name:GetText();
- --PushDebugMessage("szName:"..szName)
- local pdchina = IsAllChinese(szName)
- --PushDebugMessage("检查:"..pdchina)
- if pdchina == false then
- PushDebugMessage("*************************************************************")
- PushDebugMessage("警告:角色名仅仅支持简体中文,禁止英文或数字、特殊符号、繁体中文!")
- PushDebugMessage("警告:角色名仅仅支持简体中文,禁止英文或数字、特殊符号、繁体中文!")
- PushDebugMessage("*************************************************************")
- GameProduceLogin:GameLoginShowSystemInfo( "警告:角色名仅仅支持中文,禁止英文或数字、特殊符号、繁体中文!")
- return
- end
-
- GameProduceLogin:CreateRole(szName, iCurSelSex);
- end
- -- 判断GB2312汉字
- function IsAllChinese(str)
- local nStrCount = string.len(str)
- if math.mod(nStrCount, 2) ~= 0 then
- return false
- end
-
- for i = 1, nStrCount-1, 2 do
- local nCurByte = string.byte(str, i)
- local nNextByte = string.byte(str, i+1)
- if not IsChineseCharacter(nCurByte, nNextByte) then
- return false
- end
- end
-
- return true
- end
-
- -- 雪舞判断角色名字函数 2022-05-25
- -- GB2312中汉字的编码范围为:
- -- 第一个字节0xB0-0xF7(对应十进制为176-247)
- -- 第二个字节0xA1-0xFE(对应十进制为161-254)
- -- GBK是GB2312的扩展,且包含繁体字的扩展
- -- 第一个字节的范围是0x81-0xFE(即129-254)
- -- 第二个字节的范围是0x40-0xFE(即64-254)
- -- 判断字符是否是中文
- function IsChineseCharacter(nCurByte, nNextByte)
- local nNum1Min = 176
- local nNum1Max = 247
- local nNum2Min = 161
- local nNum2Max = 254
- if not (nCurByte >= nNum1Min and nCurByte <= nNum1Max) then
- return false
- end
-
- if not (nNextByte >= nNum2Min and nNextByte <= nNum2Max) then
- return false
- end
-
- return true
- end
复制代码创建角色UI:\Interface\CreateRole\CReateRole.lua 创建帮会UI:\Data\Interface\CreateConfraternity\CreateConfraternity.lua 对这个是一点不熟悉,今天研究了大几个小时。 其实并不难,只是没接触过。真的应该学学编程了。 ~~
遇到的阻碍一:开始寻找了UTF-8编码的中文判断代码,三个字节的,但是实际测试中文是GBK二个字节的。我以为是结尾还有/000结尾。 遇到的阻碍二:不了解LUA4,使用了新特性导致很多报错: 1.一个是取余%是不支持的,可以用 a % b == a - math.floor(a/b)*b 进行代替操作 2.在LUA4.0中#操作是无效的,可以用string.len()代替就行了。 3.没有math.fmod ,需要用math.mod 函数
编写途中查询百度获得的重要资料网站:
|