Postado Maio 31, 2016 8 anos Tem como fazer assim: for k, v in ipairs (tables) do if getPlayerItemCount (cid, k) then -- o que vai acontecer caso ele tenha algum ovo. break else -- o que vai acontecer caso ele não tenha nenhum ovo. end end Editado Maio 31, 2016 8 anos por Talesigorvr (veja o histórico de edições) Não dou suporte via PM, crie um tópico caso tenha dúvidas. Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.
Postado Maio 31, 2016 8 anos Autor 2 minutos atrás, Talesigorvr disse: Tem como fazer assim: for k, v in pairs (tables) do if getPlayerItemCount (cid, k) then -- o que vai acontecer caso ele tenha algum ovo. break else -- o que vai acontecer caso ele não tenha nenhum ovo. end end Mais no caso grande parte das funções usa a tabela (tb = table[item.itemid])
Postado Maio 31, 2016 8 anos É ipairs, errei ali. Tenta assim: function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end local talkState = {} local focus = 0 local talk_start = 0 function onCreatureSay(cid, type, msg) local msg = string.lower(msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local tables = { [12127] = {preco = 10, storage = 1212, storagese = 1213, tempo = 24 * 60 * 60, pokemon = "Arcanine"} } local tb = 0 for k, v in ipairs (tables) do if getPlayerItemCount (cid, k) >= 1 then tb = tables[k] break end end local temp = os.time() + tb.tempo if not (getDistanceToCreature(cid) <= 3) then return true end if msgcontains(string.lower(msg), 'hi') then if focus ~= 0 and focus ~= cid then selfSay(getCreatureName(cid) .. ' aguarde...') return true else focus = cid talk_start = os.clock() end end if msgcontains(string.lower(msg), 'hi') then selfSay('Oi! Voce deseja {checar}, {entregar} ou {retirar}?') talkState[talkUser] = 1 elseif msgcontains(string.lower(msg), 'checar') and talkState[talkUser] == 1 then if tb ~= 0 then if getPlayerStorageValue(cid, tb.storage) < temp then selfSay('Seu pokemon ja esta pronto.') else selfSay('Ainda falta [' .. getPlayerStorageValue(cid, tb.storage) < temp ..'], Para seu pokemon esta pronto') talkState[talkUser] = 0 focus = 0 tchau = true end end elseif msgcontains(string.lower(msg), 'entregar') and talkState[talkUser] == 1 then if tb ~= 0 then if getPlayerStorageValue(cid, tb.storagese) > 1 then selfSay('Voce já tem um ovo comigo, espere terminar') return true end if getPlayerItemCount(cid, 2160) < tb.preco then selfSay('Voce nao tem dinheiro necessesario para compeltar essa acao') return true end doPlayerRemoveItem(cid, tb, 1) setPlayerStorageValue(cid, tb.storage, temp) setPlayerStorageValue(cid, tb.storagese, 1) selfSay('Seu ovo estara pronto em breve, toda vez que possivel cheque o ovo para acompanhar o progresso!') talkState[talkUser] = 0 focus = 0 tchau = true else selfSay('Voce nao tem nenhum ovo listado') return true end elseif msgcontains(string.lower(msg), 'retirar') and talkState[talkUser] == 1 then if tb ~= 0 then if getPlayerStorageValue(cid, tb.storage) < temp then setPlayerStorageValue(cid, tb.storagese, -1) addPokeToPlayer(cid, tb.pokemon, 0) selfSay('Uau, seu ovo foi chocado parabens agora voce tem um ' ..tb.pokemon..'.') talkState[talkUser] = 0 focus = 0 tchau = true return true end end if tchau then tchau = false doCreatureSetLookDir(getThis(), lookNpcDir) selfSay('Tchau.') end end end function onThink() if focus ~= 0 then if getDistanceToCreature(focus) > 3 then tchau = true focus = 0 end if (os.clock() - talk_start) > 15 then if focus > 0 then tchau = true focus = 0 end end doNpcSetCreatureFocus(focus) end if tchau then tchau = false selfSay('Tchau.') end end Não dou suporte via PM, crie um tópico caso tenha dúvidas. Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.
Postado Maio 31, 2016 8 anos eu acho melhor que checar o itemID, fazer a tabela iniciar pelo nome do pokemon, por exemplo: local msg = msg:lower() local t = { ["arcanine"] = {price = 10, storages = {1212,1213}, time = 24 * 60 * 60, egg_ID = 12127} } local var = t[msg] if not var then -- escopo end ai o player poderia checar só os pokemon que ele quisesse ver, por exemplo eu quero ver como esta o arcanine e pikachu ai eu falo hi checar pikachu(ou arcanine) e vejo o tempo, sem precisar fazer um loop para isso... sem falar que daria para fazer uma talk, mostrando numa janela quantos % falta para o pokemon "nascer" e o tempo Exemplo: NAME - PERCENT - TIME Pikachu -- 95% -- Left 02:00 hours Arcanine -- 47% -- Left: 04:57 hours Editado Maio 31, 2016 8 anos por Vodkart (veja o histórico de edições) [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Maio 31, 2016 8 anos Autor TalesIgor: [31/05/2016 16:19:41] [Error - Npc interface] [31/05/2016 16:19:41] data/npc/scripts/DayCarre.lua:onCreatureSay [31/05/2016 16:19:41] Description: [31/05/2016 16:19:41] data/npc/scripts/DayCarre.lua:29: attempt to index local 'tb' (a number value) [31/05/2016 16:19:41] stack traceback: [31/05/2016 16:19:41] data/npc/scripts/DayCarre.lua:29: in function <data/npc/scripts/DayCarre.lua:12> Vodkart Refiz o sistema porémcContinua o mesmo erro parece que o script não está conseguindo checar a tabela. [31/05/2016 16:23:12] [Error - Npc interface] [31/05/2016 16:23:13] data/npc/scripts/DayCarre.lua:onCreatureSay [31/05/2016 16:23:13] Description: [31/05/2016 16:23:13] data/npc/scripts/DayCarre.lua:24: attempt to index local 'var' (a nil value) [31/05/2016 16:23:13] stack traceback: [31/05/2016 16:23:13] data/npc/scripts/DayCarre.lua:24: in function <data/npc/scripts/DayCarre.lua:12>
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.