Ir para conteúdo
  • Cadastre-se

(Resolvido)Script com problema


Ir para solução Resolvido por Wakon,

Posts Recomendados

local config = {

 
item = {
 
Id = 1984,
 
count = 1,
 
},
 
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

 
Pessoal tenho este script, ele é um script de troca de nome, fiz o comando assim !changename Nomenovo. Ele tira o item do player e não muda o nome, alguem pode me da uma ajuda para corrigir este erro por favor?
 
Agradeço desde já.
Editado por acesso123 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Respostas 44
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Claro, ele tenta alterar os dados do player com ele on...


Tenta isso:

local config = {
 
item = { Id = 1984,
         count = 1,
       },
 
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
   
 
if(pcall(doPlayerChangeName, guid, oldName, t[1]) == false) then

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 
	   doPlayerRemoveItem(cid, config.item.Id, config.item.count)
       doRemoveCreature(cid, forceLogout)

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 .. " ;")

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

Editado por Caronte (veja o histórico de edições)

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

tem hora que da erro em loading na distro do sql3 para carregar database, isso tem alguma ligação?

 

Não é sempre que da erra

Link para o post
Compartilhar em outros sites

Ta 100% aqui...

o único problema é não poder voltar para o nome original...


Só depois de dar shutdown no ot, que volta...

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites
local config = {
    item = {
        Id = 1984,
        count = 1,
    },
    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
        doRemoveCreature(cid, true)
        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.")
    return true
end
Editado por fireelement (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Bom dia, testei os dois e nada mudou, nome ainda continua o mesmo. Reloga, tira o item e não muda nome. Alguem tem mais alguma ideia por favor?

Link para o post
Compartilhar em outros sites

Testa:

local config = {
    item = {
        Id = 1984,
        count = 1,
    },
    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
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your name has been changed successfully. You will be kicked in " .. config.delay .. " seconds.")
    db.executeQuery("UPDATE `players` SET `name` = " .. db.escapeString(t[1]) .. " WHERE `id` = "..getPlayerGUID(cid)..";")
    db.executeQuery("INSERT INTO `player_namelocks` (`player_id`, `name`, `new_name`, `date`) VALUES (" .. guid .. ", " .. db.escapeString(oldName) .. ", " .. db.escapeString(t[1]) .. ", " .. os.time() .. ");")
    addEvent(doRemoveCreature, config.delay * 1000, cid, true)
    end

    return true
end
Editado por Wakon (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Cara, você deve ter configurado algo errado, aqui deu perfeitamente, já testei mais de 1 vez, já mudei o nome mais de 5 vezes, tentei mudar sem o livro, não vai, e quando ta com o livro, no meu, ele remove...

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Acabei de testar essa Script do Caronte e Funcionou Perfeitamente!

"Ainda que eu ande pelo vale da sombra da morte, não temerei mal algum, pois tu estás comigo. Salmos 23:4"

 

Link para o post
Compartilhar em outros sites

É realmente, não tinha testado o do caronte e até cobri por cima com a mesma função, está funcionando perfeitamente aqui.

Link para o post
Compartilhar em outros sites

olha so, eu to colocando assim, peguei o script da caronte e coloquei dentro de  data/talkaction/acript, dai criei um arquivo chamado changename e coloquei dentro e salvei.

 

Utilizo o comando  !changename Nomenovo

 

e Acontece o que descrevi antes.

desloga o char, e não muda nome. eu do shutdown no server e nada muda.

Será que to fazendo algo errado?

Ta dando este erro apos usar o comandopost-150155-0-71074500-1428284565_thumb.

Editado por acesso123 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Não apresenta nenhum erro na distro ?  se sim poste ele se não Tentei fazer novamente exclua tudo que foi feito e refaça com mais atenção. 

 

 

Aqui funciona perfeitamente Também 

Link para o post
Compartilhar em outros sites

Tente fazer novamente. e me fale se continua o mesmo erro use o da Caronte o 1 é o que eu estou usando .

 

 

Me mande como Voce coloco em data/talkactions/talkactions.xml

Link para o post
Compartilhar em outros sites

meu talkaction:

 

<!-- Players -->
      <talkaction words="!spell" script="spells.lua" />
      <talkaction words="!bless" event="script" value="bless.lua"/>
      <talkaction words="!aol" event="script" value="aol.lua"/>
      <talkaction words="!changename" script="changename.lua" />
<talkaction words="!notice" script="notice.lua"/>
 
post-150155-0-73284300-1428285221_thumb.
Editado por acesso123 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Mude db.executeQuery para db.query

Te ajudei?
Se você achar que eu mereço, me dê uma "rep+" e selecione meu post como "melhor resposta"

 

Skype: JoadsonAion

Link para o post
Compartilhar em outros sites
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 .. " ;")   
 
Linha 75 ...
 
 
data/talkactions/script/changename
 
 
 
Se Funcionou Não esqueça de dar o +REP para o  joadson
Editado por igorcbc (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.




×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo