魔力宝贝

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

[GA] namechanger.lua--在线改名服务

[复制链接]
发表于 前天 02:17 | 显示全部楼层 |阅读模式
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

回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-12 19:19 , Processed in 0.146083 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表