Ir para conteúdo

Featured Replies

Postado

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 por Cain Jorge (veja o histórico de edições)

  • Respostas 5
  • Visualizações 957
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 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.

Postado

@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
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 por Noninhouh
Dúvidas (veja o histórico de edições)

Postado

@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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo