搜索
LUA

LUA

本版块未设置版块简介!请后台版块编辑添加。
  •  帖子: 115
  •  讨论: 115
  •  关注: 0

namechanger.lua--在线改名服务

GA 发表于 2025-5-10 02:17:50 | 显示全部楼层 |阅读模式
126 0
function trim (s)
   return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end

function getIntPart(x)
if x <= 0 then
   return math.ceil(x);
end

if math.ceil(x) == x then
   x = math.ceil(x);
else
   x = math.ceil(x) - 1;
end
return x;
end


Delegate.RegInit("NameChanger_Init");

function NameChanger_Init()
        initchanger();
        initchangerSelect();
end

local selectnametime = 0;


function NameChangerandselectNpc_Init(index)
        return 1;
end


function initchanger()
     if(nameChangerNPC == nil)then
                nameChangerNPC = NL.CreateNpc("lua/Module/namechanger.lua", "NameChangerandselectNpc_Init");
                Char.SetData(nameChangerNPC,%对象_形象%,106652);
                Char.SetData(nameChangerNPC,%对象_原形%,106652);
                Char.SetData(nameChangerNPC,%对象_X%,31);
                Char.SetData(nameChangerNPC,%对象_Y%,15);
                Char.SetData(nameChangerNPC,%对象_地图%,7010);
                Char.SetData(nameChangerNPC,%对象_方向%,0);
                Char.SetData(nameChangerNPC,%对象_原名%,"在线改名服务");
                NLG.UpChar(nameChangerNPC);
                Char.SetWindowTalkedEvent("lua/Module/namechanger.lua","nameChangerWTalked",nameChangerNPC);
                Char.SetTalkedEvent("lua/Module/namechanger.lua","nameChangerTalked", nameChangerNPC);
        end
end

--================================================================================================


function initchangerSelect()
     if(nameChangerSelectNPC == nil)then
                nameChangerSelectNPC = NL.CreateNpc("lua/Module/namechanger.lua", "NameChangerandselectNpc_Init");
                Char.SetData(nameChangerSelectNPC,%对象_形象%,231011);
                Char.SetData(nameChangerSelectNPC,%对象_原形%,231011);
                Char.SetData(nameChangerSelectNPC,%对象_X%,20);
                Char.SetData(nameChangerSelectNPC,%对象_Y%,20);
                Char.SetData(nameChangerSelectNPC,%对象_地图%,777);
                Char.SetData(nameChangerSelectNPC,%对象_方向%,4);
                Char.SetData(nameChangerSelectNPC,%对象_原名%,"改名记录查询服务");
                NLG.UpChar(nameChangerSelectNPC);
                Char.SetWindowTalkedEvent("lua/Module/namechanger.lua","nameChangerSelectWTalked",nameChangerSelectNPC);
                Char.SetTalkedEvent("lua/Module/namechanger.lua","nameChangerSelectTalked", nameChangerSelectNPC);
        end
end




function nameChangerTalked(_me,_tome)
        if(NLG.CanTalk(_me,_tome)==false)then
                return;
        end
       
        --local freeNameChanged = fieldget(_tome,"NAMECHANGED");
    local freeNameChanged = 0;


    local jinbinum = tonumber(Char.ItemNum(_tome,88882));

        if(jinbinum < 20)then
                NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_关闭%,0,"\\n\\n您好,"..(Char.GetData(_tome,%对象_原名%)).." 这里是改名服务NPC。\\n\\n我可以帮您改名,每次改名费用是20金币。\\n\\n似乎您的金币数量不足呢!\\n谢谢您对放肆魔力的支持!\\n");
                return;
        else
                NLG.ShowWindowTalked(_tome,_me,%窗口_输入框%,%按钮_确定%,1,"\\n\\n您好,"..(Char.GetData(_tome,%对象_原名%)).." 这里是改名服务NPC。\\n\\n我可以帮您改名,每次改名费用是20金币。\\n\\n您可以直接在下面输入您想要改的名字,然后按下确定按钮。\\n\\n谢谢您对放肆魔力的支持!\\n");
                return;
        end
end

function nameChangerWTalked(_me,_tome,_seqno,_select,_data)
        if(NLG.CanTalk(_me,_tome)==false)then
                return;
        end
        if(tonumber(_seqno)==1 and tonumber(_select)==%按钮_确定% and _data~="")then
                --print(_data);
                local toname = trim(_data);
                local length = string.len(toname);
                --local jinbinum = fieldget(_tome,"#DianJuan");
                 local jinbinum = tonumber(Char.ItemNum(_tome,88882));

               
                --local freeNameChanged = fieldget(_tome,"NAMECHANGED");
                local freeNameChanged=0;
                local level = Char.GetData(_tome,%对象_等级%);
               
                if(_data == Char.GetData(_tome,%对象_原名%))then
                        NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_关闭%,0,"\\n\\n那个...似乎你要改的名字和现在的名字没有什么变化呢...\\n\\n您在确定下您的新名字吧!\\n\\n谢谢您对放肆魔力的支持!\\n");
                        return;
                end

                if(jinbinum<20)then
                        NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_关闭%,0,"\\n\\n您好,"..(Char.GetData(_tome,%对象_原名%)).." 这里是改名服务。\\n\\n我可以帮您改名,每次改名费用是20金币。\\n\\n似乎您的金币数量不足呢!\\n谢谢您对放肆魔力的支持!\\n");
                        return;
                end

                if(length==0)then
                        NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_关闭%,0,"\\n\\n提交的名字长度太短了哦!不要全是空格哦!\n\\n\\n\\n谢谢您对放肆魔力的支持!\\n");
                        return;
                end
                --string.find(_data,"%")~=nil or
                --string.find(_data,"\'")~=nil or string.find(_data,"\`")~=nil or
                if(string.find(_data,"%%")~=nil or string.find(_data,"%'")~=nil or string.find(_data,"%`")~=nil or string.find(_data,"%\"")~=nil or string.find(_data,"%;")~=nil or string.find(_data,"%\\/")~=nil or string.find(_data,"%\\")~=nil or string.find(_data,"%[")~=nil or string.find(_data,"%]")~=nil)then
                        NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_关闭%,0,"\\n\\n提交的名字包含了禁止的字符哦!请修改!\\n谢谢您对放肆魔力的支持!\\n");
                        return;
                end
               
                local query = "select `Name` from tbl_character Where Name='".._data.."'";
                local ret = SQL.Run(query);
                if(type(ret)=="table" and ret["0_0"]~=nil)then
                        NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_关闭%,0,"\\n\\n提交的名字已经有人在用了哦!请修改下!\\n谢谢您对放肆魔力的支持!\\n");
                        return;
                end
                local newstr, count = string.gsub(_data, "[&#]+[0-9]+[;]", "**");
                local totalLength = string.len(newstr);
               
                --print("######################"..totalLength);

                if(totalLength>16)then
                        NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_关闭%,0,"\\n\\n提交的名字太长了哦!请修改!\\n\\n最大长度是16个半角字符或8个全角字符\\n也就是16个字母或8个中文哦!\\n谢谢您对放肆魔力的支持!\\n");
                        return;
                end
                --fieldadd(_tome,"#DianJuan",-20);
            Char.DelItem(_tome,88882,20);
                NLG.SystemMessage(_tome,"一共失去了20个金币,感谢您对放肆魔力的支持。.");
                local query = "Update tbl_character set `Name` = '".._data.."' Where Cdkey = '"..(Char.GetData(_tome,%对象_账号%)).."' and Name='"..(Char.GetData(_tome,%对象_原名%)).."'";
                local ret = SQL.Run(query);
               
                --local query2="INSERT INTO tbl_changenamelog (before_name,after_name) VALUES ('"..(Char.GetData(_tome,%对象_原名%)).."','".._data.."')";
                --local ret = SQL.Run(query2);
               
                Char.SetData(_tome,%对象_原名%,_data);
                NLG.UpChar(_tome);
               
                NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_关闭%,3,"\\n\\n恭喜您,您的名字已经成功的改为了".._data.."哦!\\n\\n");
                return;
        end

        return;
end



function nameChangerSelectTalked(_me,_tome)
        if(NLG.CanTalk(_me,_tome)==false)then
                return;
        end

        if(os.time() - selectnametime < 60)then
                NLG.SystemMessage(_tome,"一分钟内只允许查询一次,请稍等。");
                return;
        end
       
    local showtext="\\n\\n  改名记录查询(只显示一周内):\\n\\n  请单击确定开始查询。";
        selectnametime = os.time();
        NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_确定%,0,showtext);


end

function nameChangerSelectWTalked(_me,_tome,_seqno,_select,_data)
        if(NLG.CanTalk(_me,_tome)==false)then
                return;
        end
       
        --点击取消,则返回
    if (tonumber(_select)==2)then
        return;
    end
       

    --点击上一步
    if (tonumber(_select)==16)then
      if(tonumber(_seqno)~=0)then
       _seqno=_seqno-1;
      end
    end

    --点击下一步
    if (tonumber(_select)==32)then
        _seqno=_seqno+1;  
    end

    local page=_seqno+1;

    local showtext="====================第"..page.."页====================";
    local query = "select `before_name`,`after_name` from tbl_changenamelog ";
        local ret = SQL.Run(query);

    local row=_seqno*7;
    for i=row,row+7,1 do   

                if(type(ret)=="table" and ret[i.."_0"]~=nil)then
                  showtext=showtext.."\\n     原用名:"..ret[i.."_0"].."  →  现用名:"..ret[i.."_1"];
        end
    end
        NLG.ShowWindowTalked(_tome,_me,%窗口_信息框%,%按钮_上下取消%,_seqno,showtext);
        return;
       

end

function runsql(n,query)
  n =coro.transfer(coro.main,SQL.Run(query));

end

回复

使用道具 举报

全部评论

暂无评论,期待您打破宁静

TA的帖子
相关帖子
  • admin 2025-5-10

    #先到阿斯提亞鎮 打完UD找到NPC卡蓮 拿到給LBLS 的信 然後去打LBLS 再打完 LBLS以後 ...

  • admin 2025-5-10

    用本目录下文件"内容"覆盖服务器data目录下同名文件相应"内容" 请勿直接覆盖文件本身 ...

  • admin 2025-5-11

    ############## 城城的武器强化系统 ############## #剑1 block StrCmpChat == 700 W ...

  • admin 2025-5-11

    魔力宝贝手动架设中遇到的问题及解决方法魔力宝贝手动架设教程—魔力私服,魔力宝贝私 ...

  • admin 2025-5-12

    起始地点法兰城的竞技场的贝贝(34.36)头目战╳ 必要条件---必要等级Lv1 职业限定---建 ...

  • admin 2025-5-12

    1.与里谢里雅堡的H1N1防疫宣传员(28,77)说话,取得"防疫小口罩"。 图例物品名称等级种 ...

  • admin 2025-5-12

    魅惑的哈密瓜无取得宠物「哈密瓜公主」╳╳○ 起始地点魔法大学头目战╳ 必要条件--- ...

  • admin 2025-5-12

    起始地点法兰城的里谢里雅堡头目战○ 必要条件---必要等级--- 职业限定---建议等级--- ...

  • admin 2025-5-12

    起始地点法兰城的里谢里雅堡头目战○ 必要条件---必要等级--- 职业限定---建议等级--- ...

  • admin 2025-5-12

    起始地点法兰城的冒险者旅馆头目战○ 必要条件---必要等级--- 职业限定---建议等级LV8 ...

发布 联系QQ