ST

Mudar Nome

Por StyflerDrunou, 08 de abr. de 2012 em Scripts

script
10
2.6k
StyflerDrunouS
08 de abril de 2012 às 21:29

Eu achei vários, mas todos dando erros, não sei se é porque eu uso mysql mais olhem ai o erro.

Aparece quando o cara fala "!mudarnome Ronaldo" que seria o correto e não funfa, quando ele fala "!mudarnome (e ou !mudarnome ADM" tipo oque seria proibido o script nao deixa, mas o correto ele da esse erro.

 

OBS: Eu queria que se podeçem colocar para que os players possam colocar o nome assim "EaE MuLeKe" tendeu?

se tiver como por favor..

 

[08/04/2012 21:27:07] [Error - TalkAction Interface]

[08/04/2012 21:27:07] data/talkactions/scripts/trocarnome.lua:onSay

[08/04/2012 21:27:07] Description:

[08/04/2012 21:27:07] data/talkactions/scripts/trocarnome.lua:23: unfinished capture

[08/04/2012 21:27:07] stack traceback:

[08/04/2012 21:27:07] [C]: in function 'find'

[08/04/2012 21:27:07] data/talkactions/scripts/trocarnome.lua:23: in function <data/talkactions/scripts/trocarnome.lua:4>

 

meu script é esse.

 

local itemId, count, maxTextLenght, delay = 9971, 500, 18, 1 * 1000
local blacklistParam = {"god", "adm", "cm", "gm", "tutor", "tester", "coordenador", "ADM", "GOD", "CM", "GM", "Tutor", "(", ")", "[", "]", "{", "}", "Coordenador" }

function onSay(cid, words, param, channel)
local text, continue = "Você será kickado em 1 segundos.", true
local stringSpaceStart, stringSpaceEnd = string.find(param, "[%s]*")
if(db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(param) .. ";"):getID() ~= -1) then
 text, continue = "Este nome já está em uso.", false
elseif(getPlayerItemCount(cid, itemId) < count) then
 text, continue = "Você não tem barras para mudar seu nome.", false
elseif(not getTilePzInfo(getCreaturePosition(cid))) then
 text, continue = "Você deve estar dentro de uma zona de protecção para usar este comando.", false
elseif(not tostring(param)) then
 text, continue = "Parametro inválido.", false
elseif((stringSpaceEnd - stringSpaceStart) > 1) then
 text, continue = "Nome contém muitos espaços.", false
elseif(string.len(tostring(param)) > maxTextLenght) then
 text, continue = "Voce passou o limite de 18 letras no seu nome." .. maxTextLenght .. " characters.", false
elseif(string.lower(param:lower(), "[^%l%s]") ~= nil) then
 text, continue = "Você não pode usar simbolos ou nome de cargos da equipe.", false
else
for i = 1, #blacklistParam do
  if (string.find(string.lower(param), blacklistParam[i]) ~= nil) then
text, continue = "Invalid name entry.", false
break
  end
 end
end

if(continue == false) then
 doPlayerSendCancel(cid, text)
 return true
end

db.executeQuery("UPDATE `players` SET `name` = " .. db.escapeString(param) .. " WHERE `id` = " .. getPlayerGUID(cid) .. ";")
doPlayerRemoveItem(cid, itemId, count)
doPlayerSendTextMessage(cid, 25, text)
addEvent(function(cid, forceLogout)
 if(isPlayer(cid)) then
  doRemoveCreature(cid, forceLogout)
 end
end, delay, cid, false)
return true
end

 

Ajuda ai os caras do meu ot tão doido comigo.

Editado Abril 8 por ADM157Styfler155Zikz153

Felipefox34F
09 de abril de 2012 às 00:29

tenho um aque mais é por npc

StyflerDrunouS
10 de abril de 2012 às 16:20

Mais como funciona? tem como colocar para quando o cara for mudar gastar 500 Barras de ouro que seria o item 9971 no meu servidor?

 

Posta ele ai vamos ver se vai funfar.

 

Hellow?! Pode postar por favor seu script por npc? Estou precisando!

ZmovirZ
10 de abril de 2012 às 17:23

Recomendo usar este

 

function onSay(cid, words, param)

local maxLen = 25 -- tamanho maximo do nome

local itemid = 11192 ------ Numero do Item que será removido

local quant = 50 ---- quantidade do item que sera removido

local proibido = {"%[", "%]", "%(", "%)", "%{", "%}"} -- simbolos proibidos

 

 

for i = 1, #proibido do

if param:find(proibido) then

doPlayerSendCancel(cid,"Você não pode colocar isso no nome.")

return true

end

end

 

if tostring(param) == "" then -- checkar se não é nome vazio

doPlayerSendCancel(cid, "Você deve informar um nome.")

return true

end

 

if string.len(tostring(param)) > maxLen then

doPlayerSendCancel(cid, "Você pode usar no máximo " .. maxLen .. " letras.")

return TRUE

end

 

if not getTilePzInfo(getCreaturePosition(cid)) then

doPlayerSendCancel(cid,"Só pode ser usado em PZ.")

return TRUE

end

 

local result = db.getResult("SELECT `id` FROM `players` WHERE `name` = '".. db.escapeString(param) .."'")

if result:getID() == 1 or getCreatureByNameWildcard(param) then

return doPlayerSendCancel(cid, "Já existe alguém com esse nome")

end

 

if getPlayerItemCount(cid, itemid) >= quant then

doPlayerRemoveItem(cid, itemid, quant)

db.executeQuery("UPDATE `players` SET `name` = '"..param.."' WHERE `id` = "..getPlayerGUID(cid)..";")

doPlayerSendTextMessage(cid,25,"Você será deslogado em 3 segundos.")

addEvent(doRemoveCreature, 3*1000, cid, true)

else

doPlayerSendCancel(cid,"Você não possui "..quant.." " .. getItemNameById(itemid) .. ".")

end

return TRUE

end

StyflerDrunouS
11 de abril de 2012 às 11:12

Affs só fica dando esse erro vey '-'

HELPPPPPP

 

 

[10/04/2012 18:00:15] [Error - TalkAction Interface]

[10/04/2012 18:00:15] data/talkactions/scripts/trocarnome.lua:onSay

[10/04/2012 18:00:15] Description:

[10/04/2012 18:00:15] data/talkactions/scripts/trocarnome.lua:9: unfinished capture

[10/04/2012 18:00:16] stack traceback:

[10/04/2012 18:00:16] [C]: in function 'find'

[10/04/2012 18:00:16] data/talkactions/scripts/trocarnome.lua:9: in function <data/talkactions/scripts/trocarnome.lua:1>

 

Cara, voce se comprometeu de postar o seu por npc e até agora nada.

ajuda kraio por favor.

VodkartV
11 de abril de 2012 às 13:08

acho que seu server não tem a função string.find()

SubwatS
11 de abril de 2012 às 13:09

qual distro vc usa

StyflerDrunouS
13 de abril de 2012 às 12:39

Esse do marcelo mlkalo -> http://www.xtibia.com/forum/topic/162138-anti-divulgacao-de-otservers/page__gopid__1122714#entry1122714 é de anti anuncio muito bom.. vem ca tem como adicionar isso ai não?

 

MANO ME DA UMA AJUDA CARALHO '-'

 

Help?

Felipefox34F
15 de abril de 2012 às 11:56

-- Creditos a Won Helder, apocarai, MatheusMkalo

function onSay(cid, words, param)

local maxLen = 20 -- tamanho maximo do nome

local itemid = 2361 ------ Numero do Item que será removido

local proibido = {"!","@","*"} -- simbolos proibidos

 

 

for i = 1, #proibido do

if string.find(tostring(param), proibido) then

doPlayerSendCancel(cid,"Não pode usar símbolos em seu nome.")

return TRUE

end

end

 

if tostring(param) == "" then -- checkar se não é nome vazio

doPlayerSendCancel(cid, "Você deve informar um nome.")

return TRUE

end

 

if string.len(tostring(param)) > maxLen then

doPlayerSendCancel(cid, "Você pode usar no máximo " .. maxLen .. " letras.")

return TRUE

end

 

if not getTilePzInfo(getCreaturePosition(cid)) then

doPlayerSendCancel(cid,"So pode ser usado em pz.")

return TRUE

end

 

if getPlayerItemCount(cid, itemid) >= 1 then

doPlayerRemoveItem(cid, itemid, 1)

db.executeQuery("UPDATE `players` SET `name` = '"..param.."' WHERE `id` = "..getPlayerGUID(cid)..";")

doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos.")

addEvent(doRemoveCreature, 5*1000, cid, true)

else

doPlayerSendCancel(cid,"Você não possui o item " .. getItemNameById(itemid) .. ".")

end

return TRUE

end

 

 

vai en talkactions/scripts cria uma pasta change name depois volte en talkactions <talkaction words="/changename" script="namechange.lua"/>

 

Nao é do jeito que você pediu é por iten mais espero ter ajudado.

StyflerDrunouS
15 de abril de 2012 às 18:58

Eu j testei com esse e tambem não foi '-' ta foda viu '-'