Postado Outubro 6, 2017 7 anos Em data/talkactions/script Crie um Arquivo com o nome playerchangename.lua Cole isto: Spoiler function doCorrectString(text) if type(text) == "number" then return "" end local str = text:explode(" ") local finish = {} for _, s in ipairs(str) do table.insert(finish, s:sub(1, 1):upper()..s:sub(2, #s):lower()) end return table.concat(finish, (str[2] and " " or "")) end function doKickPlayer(cid) if not isCreature(cid) then return end doRemoveCreature(cid, true) end function onSay(cid, words, param) local maxLen = 20 -- tamanho maximo do nome local itemid = 5958 ------ Numero do Item que será removido local prohibited = {"!","@","*"} -- simbolos proibidos if(param == '') then doPlayerSendCancel(cid, "Você deve informar um nome.") return true end for i = 1, #prohibited do if string.find(param, prohibited[i]) then doPlayerSendCancel(cid, "Não pode usar símbolos em seu nome.") return true end end if string.len(param) > maxLen then doPlayerSendCancel(cid, "Você pode usar no máximo " .. maxLen .. " letras.") return true end if doCorrectString(param) ~= param then doPlayerSendCancel(cid, "Letras maiúsculas apenas no começo.") return true end if playerExists(param) then doPlayerSendCancel(cid, "Já existe um jogador com esse nome.") return true end if not getTilePzInfo(getThingPos(cid)) then doPlayerSendCancel(cid, "So pode ser usado em pz.") return true end if getPlayerItemCount(cid, itemid) >= 1 then doPlayerRemoveItem(cid, itemid, 1) db.Query("UPDATE `players` SET `name` = '"..param.."' WHERE `id` = "..getPlayerGUID(cid)..";") doPlayerSendTextMessage(cid, 25, "Você será kickado em 5 segundos.") addEvent(doKickPlayer, 5*1000, cid) else doPlayerSendCancel(cid, "Você não possui o item " .. getItemNameById(itemid) .. ".") end return true end em Talkaction Coloque isto <talkaction words="!name" filter="quotation" event="script" value="playerchangename.lua"/> No caso será usado assim: (!name"Jon Snow) Creditos @Noninhouh Editado Outubro 6, 2017 7 anos por Cain Jorge (veja o histórico de edições) Sem Título-2.bmp
Postado Outubro 6, 2017 7 anos Tópico Aprovado! Obrigado por contribuir com a comunidade! REP+ Editado Outubro 6, 2017 7 anos por Werner (veja o histórico de edições) Talvez você queira ver: BestBaiak [FAQ]Remere's Map Editor - Dúvidas e soluções de bugs Contato: Discord:
Postado Outubro 6, 2017 7 anos @Cain Jorge Boa noite amigo, pelo que vi, ele não faz uma checagem se já possui esse nome no banco de dados, então creio eu que isso causará um problema caso o player coloque um nome já existente, corrija-me se estiver errado. Idéias são à prova de balas. xS0NYx here "Ser ateu é viver em razão de fatos, não de crenças; É aproveitar essa vida, não desperdiça-la na esperança de viver outra; É fazer o bem de coração, não por devoção. Ser ate, simplesmente, um ser livre."
Postado Outubro 6, 2017 7 anos Spoiler function doCorrectString(text) if type(text) == "number" then return "" end local str = text:explode(" ") local finish = {} for _, s in ipairs(str) do table.insert(finish, s:sub(1, 1):upper()..s:sub(2, #s):lower()) end return table.concat(finish, (str[2] and " " or "")) end function doKickPlayer(cid) if not isCreature(cid) then return end doRemoveCreature(cid, true) end function onSay(cid, words, param) local maxLen = 20 -- tamanho maximo do nome local itemid = 5958 ------ Numero do Item que será removido local prohibited = {"!","@","*"} -- simbolos proibidos if(param == '') then doPlayerSendCancel(cid, "Você deve informar um nome.") return true end for i = 1, #prohibited do if string.find(param, prohibited[i]) then doPlayerSendCancel(cid, "Não pode usar símbolos em seu nome.") return true end end if string.len(param) > maxLen then doPlayerSendCancel(cid, "Você pode usar no máximo " .. maxLen .. " letras.") return true end if doCorrectString(param) ~= param then doPlayerSendCancel(cid, "Letras maiúsculas apenas no começo.") return true end if playerExists(param) then doPlayerSendCancel(cid, "Já existe um jogador com esse nome.") return true end if not getTilePzInfo(getThingPos(cid)) then doPlayerSendCancel(cid, "So pode ser usado em pz.") return true end if getPlayerItemCount(cid, itemid) >= 1 then doPlayerRemoveItem(cid, itemid, 1) db.Query("UPDATE `players` SET `name` = '"..param.."' WHERE `id` = "..getPlayerGUID(cid)..";") doPlayerSendTextMessage(cid, 25, "Você será kickado em 5 segundos.") addEvent(doKickPlayer, 5*1000, cid) else doPlayerSendCancel(cid, "Você não possui o item " .. getItemNameById(itemid) .. ".") end return true end Acho que a função assim está consertada, como o @caiohp disse. Não vou dar certeza que irá funcionar pois não sei se essa função playerExists(name) checa players offline também. Editado Outubro 6, 2017 7 anos por Noninhouh Dúvidas (veja o histórico de edições)
Postado Outubro 6, 2017 7 anos @Noninhouh Nunca usei essa função playerExists, não sei como ela funciona, mas se ela não funcionar é só fazer uma consulta no bd com o nome desejado e checar se retorna a algum ja existente. Idéias são à prova de balas. xS0NYx here "Ser ateu é viver em razão de fatos, não de crenças; É aproveitar essa vida, não desperdiça-la na esperança de viver outra; É fazer o bem de coração, não por devoção. Ser ate, simplesmente, um ser livre."
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.