Postado Outubro 20, 2017 7 anos 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 Outubro 20, 2017 7 anos 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 Caso eu use !key Tibiaking com mesmo personagem da esse erro na distro
Postado Outubro 20, 2017 7 anos 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
Postado Outubro 20, 2017 7 anos Autor Pronto o de cima funcionou Vlwww mesmo.... Teria como colocar so uma msg tipo assim esse código já foi utilizado ?
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.