Ir para conteúdo

[Talkaction] Changename


Krono

Posts Recomendados

É um script que eu realmente achei excelente, e ajuda muito a servidores onde esse serviço não é vendido.

 

Segue o script

 

Em data/talkactions/scripts adicione um arquivo com o nome de changename.lua com o seguinte script:

    local config = {

    item = {

    Id = 1111,

    count = 0,

    },

    maxTextLenght = 15,

    blacklistParam = {"account manager", "god", "cm", "gm", "tutor", "tester"},

    minWordLenght = 3,

    delay = 2

    }



    function onSay(cid, words, param, channel)

    local textCancel, t = config.text, string.explode(param, ",")

    if(param == '') then

    return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")

    elseif((getPlayerGUIDByName(t[1]) ~= nil) and (not getBooleanFromString(t[2]))) then

    textCancel = "That name is already in use."

    elseif(getPlayerItemCount(cid, config.item.Id) < config.item.count) then

    textCancel = "You do not fulfill the requirements."

    elseif(not getTilePzInfo(getCreaturePosition(cid))) then

    textCancel = "You must be inside a protection zone to use this command."

    elseif(string.len(tostring(t[1])) >= config.maxTextLenght) then

    textCancel = "You can only use a maximum of " .. config.maxTextLenght .. " characters."

    elseif(string.find(t[1]:lower(), "[^%l%s]") ~= nil) then

    textCancel = "You cannot use symbols."

    else

    for blacklist = 1, table.maxn(config.blacklistParam) do

    if(string.find(t[1]:lower(), config.blacklistParam[blacklist]) ~= nil) then

    textCancel = "Invalid name entry."

    break

    end

    end

    end



    if(config.text ~= textCancel) then

    doPlayerSendCancel(cid, textCancel)

    return true

    end



    local paramTemp, space, oldName = '', '', getCreatureName(cid)

    for word in string.gmatch(t[1], "%a+") do

    if(string.len(word) < config.minWordLenght) then

    doPlayerSendCancel(cid, "Each word must have a minimum of " .. config.minWordLenght .. " characters.")

    return true

    end



    paramTemp = "" .. paramTemp .. "" .. space .. "" .. word .. ""

    if(space == '') then

    space = " "

    end

    end



    local guid = getPlayerGUID(cid)

    t[1] = paramTemp

    doPlayerRemoveItem(cid, config.item.Id, config.item.count)

    if(pcall(doPlayerChangeName, guid, oldName, t[1]) == false) then

    db.executeQuery("INSERT INTO `player_namelocks` (`player_id`, `name`, `new_name`, `date`) VALUES (" .. guid .. ", " .. db.escapeString(oldName) .. ", " .. db.escapeString(t[1]) .. ", " .. os.time() .. ");")

    db.executeQuery("UPDATE `players` SET `name` = " .. db.escapeString(t[1]) .. " WHERE `id` = " .. guid .. " LIMIT 1;")

    end



    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your name has been changed successfully. You will be kicked in " .. config.delay .. " seconds.")

    addEvent(function(cid, forceLogout)

    if(isPlayer(cid)) then

    doRemoveCreature(cid, forceLogout)

    end

    end, config.delay * 1000, cid, false)



    return true

    end

Em talkactions.xml adicione a tag:

    <talkaction words="!changename;/changename;!namechange;/namechange" script="changename.lua" />

Funcional em tfs 0.3.7 / 0.4.0

 

Credito: Ratser

 

Espero que aproveitem esse super script

Editado por Krono
Link para o comentário
Compartilhar em outros sites

Uma dica pra quem quiser isso apenas com quem é premium:

 

Basta adicionar uma checagem de dias premium:

--variaveis /\

function onSay(cid, words, param, channel)

  if getPlayerPremiumDays(cid) > 0 then

--contianuacao do script

end

return true
end

E uma dica, krono: não esqueça de identar (organizar os espaços entre uma linha e outra e o espaçamento no inicio de cada linha) os scripts pra facilitar a visualização dos membros. ^^

Editado por CyberBot
Link para o comentário
Compartilhar em outros sites

Uma dica pra quem quiser isso apenas com quem é premium:

 

Basta adicionar uma checagem de dias premium:

--variaveis /\

function onSay(cid, words, param, channel)

  if getPlayerPremiumDays(cid) > 0 then

--contianuacao do script

end

return true
end

E uma dica, krono: não esqueça de identar (organizar os espaços entre uma linha e outra e o espaçamento no inicio de cada linha) os scripts pra facilitar a visualização dos membros. ^^

pode usar isPremium(cid) tbm

sobre o espaçamento, creio q seja um bug do fórum (aconteceu aqui uma vez)

Link para o comentário
Compartilhar em outros sites

Para a mensagem de item nescessario insuficiente seria esta linha,

textCancel = "You do not fulfill the requirements."

dentro das "aspas" você pode modificar a escrita a vontade, por exemplo para:

textCancel = "Você não tem dinheiro suficiente."

 

Já a mensagem de sucesso seria está:

  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your name has been changed successfully. You will be kicked in " .. config.delay .. " seconds.")

Podendo ser trocado tudo que está dentro das aspas, mais poderá não mostrar o kick automatico.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...