«

改名字lua

XunQiu 发布于 阅读:103 代码教程(html语言、python语言等)


改名字lua

🎉 作用

⚙️ 教程

一般的改名字都是在聊天框输入name,后面添上你想要的名字

既然是聊天框输入,就需要监听一个事件,也就是Player.NewInputContent,事件名可以随意设置,例:

ScriptSupportEvent:registerEvent([=[Player.NewInputContent]=], SetName)

之后我们需要定义一个函数,为监听器执行事件

local function SetName(e)
    --body
end

ScriptSupportEvent:registerEvent([=[Player.NewInputContent]=], SetName)

注意,函数名后面的括号内一定要填eevent,否则监听不了玩家输入内容

之后,我们需要判断前四个字符是不是name,我们可以使用string.sub()来截取文本前四个字符,例:

local function SetName(e)
    if(string.sub(e.content,1,4) == "name")
    then
        --body
    end
end

ScriptSupportEvent:registerEvent([=[Player.NewInputContent]=], SetName)

为了美观,我们可以将名字设置成变量,例:

local function SetName(e)
    if(string.sub(e.content,1,4) == "name")
    then
        local name = string.sub(e.content,5,string.len(e.content))
    end
end

ScriptSupportEvent:registerEvent([=[Player.NewInputContent]=], SetName)

随后就是改名字的环节了

local function SetName(e)
    if(string.sub(e.content,1,4) == "name")
    then
        local name = string.sub(e.content,5,string.len(e.content))
        local name_code = Actor:setnickname(e.eventobjid, name)
    end
end

ScriptSupportEvent:registerEvent([=[Player.NewInputContent]=], SetName)

⚙️ 修理bug

细心的人可能会发现,名字输入超过八个字容易闪退

于是,我们需要再加入一个判断,来判断名字是否超过八个字

local function SetName(e)
    if(string.sub(e.content,1,4) == "name")
    then
        local name = string.sub(e.content,5,string.len(e.content))
        if (string.sub(name,9,9) == "")
        then
            local name_code = Actor:setnickname(e.eventobjid, name)
        end
    end
end

ScriptSupportEvent:registerEvent([=[Player.NewInputContent]=], SetName)

如果使用string.len是检测不到中文的,然而用string.sub第九个字符是不是为空值是最佳选择

这样就结束例吗?不,你就会发现,到游戏名字不显示!我们还需要加上显示脚本,例:

local function SetName(e)
    if(string.sub(e.content,1,4) == "name")
    then
        local name = string.sub(e.content,5,string.len(e.content))
        if (string.sub(name,9,9) == "")
        then
            local name_code = Actor:setnickname(e.eventobjid, name)
            Actor:shownickname(e.eventobjid, true)
        end
    end
end

ScriptSupportEvent:registerEvent([=[Player.NewInputContent]=], SetName)

到现在,终于是做好了,上方代码就是完整代码,你可以点击代码上方的复制,复制到游戏中

👀 最后

你可以加入一些功能来美化它,比如Chat:sendSystemMsg来提示成功或失败

本教程由XunQiu独立制作

lua

收藏
收到1条评论
avatar
emer 2024-12-06 23:39
好用
回复