Ir para conteúdo
  • Cadastre-se

(Resolvido)Script com problema


Ir para solução Resolvido por Wakon,

Posts Recomendados

  • Respostas 44
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Qual versão do TFS você utiliza ? 


Tenta usar este 

 

 

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.Query("INSERT INTO `player_namelocks` (`player_id`, `name`, `new_name`, `date`) VALUES (" .. guid .. ", " .. db.escapeString(oldName) .. ", " .. db.escapeString(t[1]) .. ", " .. os.time() .. ");")
        db.Query("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
Link para o post
Compartilhar em outros sites

Olhe esse tópico tente fazer uma Gambiarra 

 

 

http://www.tibiaking.com/forum/topic/16596-talkaction-comando-name-mudar-nome-de-char/

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

Tenta o meu novamente, eu editei...

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

é o script da outra pagina ne

 

Sim, segundo post.

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

tentei usar o seu script denovo, mas continua com erro.


Este é o erro no distro

post-150155-0-84113300-1428361788_thumb.

 

Estou utilizando este script:

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.query("INSERT INTO `player_namelocks` (`player_id`, `name`, `new_name`, `date`) VALUES (" .. guid .. ", " .. db.escapeString(oldName) .. ", " .. db.escapeString(t[1]) .. ", " .. os.time() .. ");")
db.query("UPDATE `players` SET `name` = " .. db.escapeString(t[1]) .. " WHERE `id` = " .. guid .. " ;")
 
      end
 
end, config.delay * 1000, cid, false)
end
 
return true
 

end

 

E no talkaction.xml  está assim:

     

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

 

meu TFS é 0.4

 

Alguem sabe o que pode ser?

 

agradeço desde já.

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

O meu não funciona sem

event="script"

Tenta tirar o primeiro query...

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

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

Amigo se não conseguir tenta colocar assim até você solucionar o problema. 

 

Este sistema por npc ele cobra por dinheiro ou pedi um item (CONFIGURÁVEL) para trocar.

 

 

http://www.tibiaking.com/forum/topic/38037-npc-que-muda-nome/

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

Testei o npc deste link http://www.tibiaking.com/forum/topic/38037-npc-que-muda-nome/

 

nem sei onde mudar isto que esta no link a cima:     item = {9971, 100}, -- itemid, itemcount

 

botei script assim

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talk = {}
local name = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function onPlayerEndTrade(cid) npcHandler:onPlayerEndTrade(cid) end
function onPlayerCloseChannel(cid) npcHandler:onPlayerCloseChannel(cid) end

function creatureGreetCallback(cid)
talk[cid] = 0
name[cid] = ''
return true
end

local chars = {' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}

RET_VALID = 1
RET_EXISTS = 2
RET_INVALID = 3

local function validName(name)
if getPlayerGUIDByName(name) ~= nil then
return RET_EXISTS
end

for i = 1, name:len() do
if not(isInArray(chars, name:sub(i,i))) then
return RET_INVALID
end
end
return RET_VALID
end

local function getValid(name, opt)
local function tchelper(first, rest)
return first:upper()..rest:lower()
end

return opt and name:gsub("(%a)([%w_]*)", tchelper) or name:gsub("^%l", string.upper)
end

local config = {
type = 'item', -- or 'item'
money = 0, -- = 1cc
everyFirstLetterCapital = false
}

function messageDefaultCallback(cid, type, msg)
if not(npcHandler:isFocused(cid)) then
return false
end

if msgcontains(msg, "nome") and talk[cid] == 0 then
selfSay("Qual deve ser o seu novo nome?", cid)
talk[cid] = 1
elseif talk[cid] == 1 then
local v = getValid(msg:lower(), config.everyFirstLetterCapital)
local ret = validName(v)
if ret == RET_VALID then
selfSay("Então você quer '" .. v .. "' Para ser seu novo nome por " .. (config.type == "money" and (config.money .. " gold") or (config.item[2] .. ' ' .. (config.item[2] > 1 and getItemPluralNameById(config.item[1]) or getItemNameById(config.item[1])))) .. "?", cid)
talk[cid], name[cid] = 2, v
else
if ret == RET_INVALID then
selfSay(msg .. " não é um nome válido. Qual deve ser o seu novo nome?", cid)
elseif ret == RET_EXISTS then
selfSay(msg .. " já existe. Qual deve ser o seu novo nome?", cid)
end
end
elseif talk[cid] == 2 then
if msgcontains(msg, "yes") then
if (config.type == 'money' and doPlayerRemoveMoney(cid, config.money)) or (config.type ~= 'money' and doPlayerRemoveItem(cid, config.item[1], config.item[2])) then
local curName = getPlayerName(cid)
doRemoveCreature(cid)
db.executeQuery("UPDATE players SET name = '"..name[cid].."' WHERE name = '"..curName.."';")
else
selfSay("Você não tem " .. (config.type == "money" and (config.money .. " gold") or (config.item[2] .. ' ' .. (config.item[2] > 1 and getItemPluralNameById(config.item[1]) or getItemNameById(config.item[1])))) .. "!", cid)
talk[cid] = 0
end
else
selfSay("Não estou disponível no momento, talvez mais tarde.", cid)
talk[cid] = 0
end
end


return true
end

npcHandler:setMessage(MESSAGE_FAREWELL, "tchau.")
npcHandler:setMessage(MESSAGE_WALKAWAY, "Vá embora")
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, messageDefaultCallback)
npcHandler:setCallback(CALLBACK_FAREWELL, creatureFarewell)
npcHandler:setCallback(CALLBACK_CREATURE_DISAPPEAR, creatureFarewell)
npcHandler:setCallback(CALLBACK_GREET, creatureGreetCallback)
npcHandler:addModule(FocusModule:new())

 

Não funcionou, deu erro.

 

erro no distro:

post-150155-0-13882700-1428461738_thumb.

 

erro apos falar com npc dentro do jogo:

post-150155-0-60188500-1428461763_thumb.

 

Realmente o erro ainda ta la.

Será que pode ser erro do script renamer?

Por que acontece o erro no jogo apos o npc dizer "qual nome novo?

Apos eu digitar o novo nome ele da o erro na distro.

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

Deu erro denovo, não sei se configurei certo o script do npc, no meu post a cima, citei onde foi o erro. tem como me da uma ajuda com isso por favor?

Link para o post
Compartilhar em outros sites

Sim Tentar ver , eu percebi que la no tópico mesmo ele falo para trocar o item em tal parte que não existe 

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

tem essa parte do script:

local config = {
type = 'item', -- or 'item'
money = 0, -- = 1cc
everyFirstLetterCapital = false
}

 

queria por este item para descontar la:  id:1984

 

Não queria que fosse dinheiro, money.  Prefiro item mesmo.

 

Será que se mudar algo ai neste "item" ou no Zero[0] em money, ou em false para true, será que muda algo?

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

To dando uma olhada em meu test server assim que tiver pronto te mando !

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

blz, to no aguardo.

Amigo o Npc não deu certo , olhei o Script da Caronte e fiz pequenas modificações , aqui esta 100% Funcional, Teste ai acho que ira funcionar desta vez.

 

         

                 Em Data / talkactions / Scripts.    Copie algum arquivo renomeie para changename . 

 
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, true)
end
 
return true
 
end 

 

 

 

                E em Data / talkactions / talkactions.Xml.. na Parte --- Player ---  coloque isto 

 

                           <talkaction words="!changename" event="script" value="changename.lua"/>

 

 

 

Lembrando que o Id do item você muda aqui >    item = { Id = 1984,  

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