Ir para conteúdo

MaXwEllDeN

Barão
  • Total de itens

    246
  • Registro em

  • Última visita

  • Dias Ganhos

    2

Tudo que MaXwEllDeN postou

  1. Não vale Love e Socket, safadex.... LuaCURL?
  2. Por favor alguém coloca meu tutorial na área de scripting novamente, creio que aqui ele não tem muita utilidade, visto que o tutorial visa mais scriptwriting em Lua, algumas coisas podem ser aproveitadas para outras linguagens, mas, ele foi feito especificamente para Lua, movam por favor.
  3. Pior, ele colocou dentro do while a tabela. Nesse caso ai não estaria em um loop infinito? E o player só loga quando o onLogin retorna true, não? '-' SmiX, dá uma lida: http://www.xtibia.com/forum/topic/184542-boas-praticas-para-programar/
  4. Posta aqui o script data/creaturescripts/scripts/Skull.lua
  5. tasktabble = { ["troll"] = {monster_race={"troll","frost troll","furious troll","island troll","swamp troll","troll champion","troll legionnaire"}, storage_start = 200201, storage = 91001,count = 150,exp = 200,money = 250, spell = "Mana Shield"}, NPC:
  6. Eu tentei colocar fora do onSay, mas ai deu problema nas funções por causa do pid = getPlayerGUID(cid). But, anyway, deve ter sido bobeira minha. Vou arrumar. É porque tipo, fora do onSay não existe cid, ai a função getPlayerGUID não conseguia encontrar a criatura, xD. Aí o cara deixa dentro do corpo principal só as variáveis que dependem do corpo principal {: @Luck Agora que eu me liguei, as funções que você criou dependem do pid, olha aqui uma modificação certa, a que te passei não vai funcionar. XUBzXnbe[/pastebin]
  7. local needGroup = 5 local doors = { -- [iDABERTA] = IDFECHADA, [2170] = 2171, [2175] = 2172, } local function getIndex(t, val) for i, v in pairs(t) do if v == val then return i end end return nil end function onUse(cid, item) if getPlayerGroupId(cid) < needGroup then return doPlayerSendTextMessage(cid, 27, "You can't open this door.") end return doTransformItem(item.uid, doors[item.itemid] or getIndex(doors, item.itemid)) end Você tem que colocar o id das portas ai, abertas e fechadas, só é você usar uma actionid só em todas as portas. É praticamente impossível fazer sem saber o id das portas abertas ou fechadas, sem ter um padrão.
  8. local coin = 11192 local lever = { [6001] = {15,12606}, [6002] = {15,12603}, } function onUse(cid,item,fromPosition,itemEx,toPosition) if not doPlayerRemoveItem(cid, coin, lever[item.actionid][1]) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..lever[item.actionid][1] .." ".. getItemNameById(coin)) end doItemSetAttribute(doPlayerAddItem(cid, lever[item.actionid][2]), "description", "Comprado por ".. getCreatureName(cid) ..".") doPlayerSendTextMessage(cid, 22, "Você comprou um " .. getItemNameById(lever[item.actionid][2])) doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) return doTransformItem(item.uid, item.itemid == 1748 and 1748 or 1748) end
  9. Não curto muito esse bang de reset, mas tá bacana ^^ Luck, toda vez que o player executar a talkaction a função vai ser criada novamente, wut, poe tudo fora do onSay pow. JX7NRPEt[/pastebin]
  10. Pô Garou(Acho estranho chamar de Oneshot ), obrigado, nunca que eu ia pensar em fazer desse modo xD. @Off Que bacana você fez curso de eletrônica xD. Tô cursando Eletrotécnica integrado com o ensino médio, mas ainda tô no primeiro ano '-'.
  11. Verdade, orientação a objetos deixa tudo mais clean. Alguém teria mais alguma sugestão para métodos que eu posso implementar na `classe` Position?
  12. Bem como o Demonbholder disse, dá pra simplificar MUITO usando loadstring, sintaxe do loadstring: loadstring("print 'oi'")() Exemplo de uso: function repeatFunction(func, qnt, cond, vars) for a = 1, qnt do if loadstring(vars .. " return ".. cond)() then loadstring("local cid = _G['cid'] ".. func)() end end return true end repeatFunction("print('oi')", 5, "a > 0", "a = 2")
  13. function getPlayersByLevel(level) local z = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerLevel(pid) > tonumber(level) then table.insert(z, pid) end end return z end Nesse caso se um amigo meu for level 50 e eu quiser pegar os que tenham no mínimo level 50, meu amigo não vai estar na lista Nesse sim: function getPlayersByLevel(level) local z = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerLevel(pid) >= tonumber(level) then table.insert(z, pid) end end return z end Não entendi a necessidade de colocar o tonumber alí '-', NUNCA(NUNCA mesmo) ví alguém fazer algo do tipo: local num = "50" print( tonumber(num) + 2) Até porque não há necessidade .-.
  14. Bem prático xD, eu já tinha visto uma função que convertia de decimal pra hexadecimal só que era uma "gambiarra" comparando a tua que usa pattern . Obrigado por postar ela xD amplia meu conhecimento de patters que é muito pouco. Olha a que eu tinha aqui: function DEC_HEX(IN) local B,K,OUT,I,D=16,"0123456789ABCDEF","",0 while IN>0 do I=I+1 IN,D=math.floor(IN/B),math.mod(IN,B)+1 OUT=string.sub(K,D,D)..OUT end return OUT end A algum tempo eu fiz umas pra manipular binários, você pode me ajudar a simplificar elas e deixar menos pogadas? math.bin = function(dec) local bin = "" while (true) do bin = bin .. dec % 2 if (dec == 1) then bin = bin:reverse() break end dec = math.floor(dec / 2) end return bin end math.bdec = function (bin) local bin, decimal = bin:reverse(), 0 for a = 0, #bin-1 do decimal = ((tonumber(bin:sub(a+1, a+1)) * 2^a)) + decimal end return decimal end
  15. Fiz umas modificações para funcionar em versões superiores, faz o download novamente pelo tópico.
  16. @gabreilk Qual o servidor que você usa e qual a versão do cliente que é usado para conectar-se a ele?
  17. Introdução O script postado aqui é uma parte de uma Biblioteca que eu estou desenvolvendo para Open Tibia, a EagleLib. Esta biblioteca terá várias funções que são muito úteis e funcionais, funções que tornará mais prático o desenvolvimento de scripts. A `classe` Position Como muitos sabem, Lua não tem uma Orientação a Objetos nativa, mas possui uma poderosa ferramenta que nos permite simular a Orientação a Objetos, a ferramenta a qual me refiro são as metatabelas. Para tornar mais prático o desenvolvimento de scripts que necessitam manipular posições, foi criada uma `classe` nomeada Position. Como declarar um objeto Position Para declarar um objeto Position você deve chamar o método Position:new e atribuir como parâmetro uma tabela contendo as coordenadas da posição. local pos = Position:new({x = 160, y = 54, z = 7}) Comparação entre posições Creio que em algum momento você já precisou, ou pensou em fazer algo como mostra o exemplo abaixo, não? local pos = {x = 160, y = 54, z = 7} local player_pos = getCreaturePosition(cid) if pos == player_pos then return doPlayerSendCancel(cid, "Você não pode fazer isso nessa posição!") end Isso não funcionaria do modo desejado, pois quando a verificação fosse feita não seria verificado se os conteúdos da tabela são iguais, mas se uma tabela é a outra(tem uma enorme diferença entre ser como ela e ser ela). Mas se você tentasse fazer desse modo, em vez do mostrado anteriormente, resultado seria satisfatório. local pos = Position:new({x = 160, y = 54, z = 7}) local player_pos = Position:new(getCreaturePosition(cid)) if pos == player_pos then return doPlayerSendCancel(cid, "Você não pode fazer isso nessa posição!") end Desse modo, se o player estivesse na posição especificada, quando o script fosse executado ele receberia a mensagem do doPlayerSendCancel. Métodos existentes atualmente Position:getItemsThere(items[, start_stack]) Position:isCreatureThere(uid) Position:doTeleportThing(uid) Position:doCreateItem(itemid, amount) Position:doRemoveCreatureThere() Position:doRemoveItemById(itemid[, amount]) Position:doSendMagicEffect(id) Position:isItemThere(itemid) Download A biblioteca está anexada ao tópico. EagleLib.tar.gz
  18. Sim, são os ids dos depots.96475 é uma actionid.
  19. Tem o link do seu servidor de algum fórum? Poderia me passá-lo?
  20. Quando exatamente o "debug" acontece? Você poderia descrever a situação?
  21. OMG, Skyen fazendo códigos pra OT novamente? O que tú fez iuniX? rairiaria. @thread Parabéns aos dois, muito bem bolado isso ai, xD. Curti . Grande Raposa iuniX, você adicionou isso na source né? function onCreatureMove(cid, oldPos, newPos)
  22. Slicer, nem precisava criar a função doClone() .__. E tipo, não declara dentro do bloco principal variáveis que vão permanecer constantes.... local time = 10 --10 segundos function onCastSpell(cid, var) local target = getCreatureTarget(cid) if not isCreature(target) then return doPlayerSendTextMessage(cid, 27, "You need a target to use this!") end return doSetCreatureOutfit(cid, getCreatureOutfit(target), time * 1000) end
  23. O nome do arquivo do seu npc tem que ser <npc name="Zio" script="zio.lua" walkinterval="2000" floorchange="0"> zio.lua
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...