Ir para conteúdo

Featured Replies

  • Respostas 21
  • Visualizações 608
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Editei

  • Qualquer coisa tenta colocar a local function dentro da função onSay, na 1 linha dentro da onSay

  • A parte de remover não está funcionando então, tenta assim:   function onSay(cid, words, param) local remover = 0 if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_

Posted Images

Postado
Spoiler

local gid = 6 -- Group id necessario pra usar o comando, veja em xml/groups.xml 
codes = {}

 local function has_value (tab, val)
        local b
    	print(val)
        if next(tab) == nil then return false end
        for index, value in ipairs(tab) do
            b = string.explode(value, ";")
            print(b[1])
            if b[1] == val then
                return true
            end
        end
    return false
    end

function onSay(cid, words, param)  
    if getPlayerGroupId(cid) < gid then return true end
    if(param == '') then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Use o comando, o codigo, id do item e qtd, separare por virgula.")
		return true
    end
    
    local a = string.explode(param, ",")
    if(a[2] == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque a id do item.") end
    if(a[3] == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque a qtd do item.") end    
     print(a[1] .. " " .. a[2] .. " " .. a[3])
    if has_value(codes, a[1]) then 
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Esse codigo ja existe.")
		return true
    else
        table.insert(codes, a[1] .. ";" .. a[2] .. ";" .. a[3])   
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Codigo adicionado.")    
    end   

    return true    
end

 

 

 

Spoiler

function onSay(cid, words, param)  
    if(param == '') then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Use o comando e o codigo que deseja pegar.")
		return true
    end    

    local index
    for i, code in ipairs(codes) do
       local a = string.explode(code, ";")
        if a[1] == param then
           doPlayerAddItem(cid, a[2], a[3])
           doSendAnimatedText(getThingPos(cid), "Codigo aceito!", TEXTCOLOR_RED)
           table.remove(codes, index) 
        end
        index = index + 1
    end
    return true    
end

 

 

Qualquer coisa tenta colocar a local function dentro da função onSay, na 1 linha dentro da onSay

Postado
  • Autor

Boa mano... Funcinou Pefeitamente so deu 1 problema

 

que posso usar em varios personagems queria 1 que so podesse ser usado uma veis depois ele fosse deletado! ou tipo nao podesse ser usado mais 

 

Player 1: !key Tibiaking

 

Serve :Pronto codigo aceito

 

Player 2: !key Tibiaking

 

Serve: Codigo ja utilizado

 

image.thumb.png.1fd2089c986841b32b27b76b37af2ef3.pngCaso eu use !key Tibiaking com mesmo personagem da esse erro na distro 

Postado

A parte de remover não está funcionando então, tenta assim:

 

function onSay(cid, words, param)  
    local remover = 0
    if(param == '') then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Use o comando e o codigo que deseja pegar.")
		return true
    end    

    for i, code in ipairs(codes) do
       local a = string.explode(code, ";")
        if a[1] == param then
           doPlayerAddItem(cid, a[2], a[3])
           doSendAnimatedText(getThingPos(cid), "Codigo aceito!", TEXTCOLOR_RED)
           remover = i
        end
    end
    
     if remover ~= 0 then    	
		table.remove(codes, remover)  
     end
  
    return true    
end

 

Removi o comando de remover do ipairs porque ele realoca o indice então ia remover td, sorte que não tava funcionando mesmo, tenta assim agora. Esse codigo de cima tá mais aprimorado, mas se não funcionar tenta esse

 

Spoiler

function onSay(cid, words, param)  
    local remover = 0
    if(param == '') then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Use o comando e o codigo que deseja pegar.")
		return true
    end    

    for i, code in ipairs(codes) do
       local a = string.explode(code, ";")
        if a[1] == param then
           doPlayerAddItem(cid, a[2], a[3])
           doSendAnimatedText(getThingPos(cid), "Codigo aceito!", TEXTCOLOR_RED)
           remover = 1
        end
    end
    
     if remover == 1 then    	
		for index, value in pairs(codes) do
	        if value == a[1] .. ";" .. a[2] .. ";" .. a[3] then
	            table.remove( tab, index )
	        end
	    end
     end
  
    return true    
end

 

 

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