MatheusGlad 424 Postado Novembro 15, 2010 Share Postado Novembro 15, 2010 (editado) Function: function doCreateItemInArea(firstpos, area, tab) -- function by MatheusMkalo for i, z in pairs(area) do pos = {x=firstpos.x, y=firstpos.y+i-1, z=firstpos.z} for s, x in pairs(z) do pos.x = firstpos.x+s-1 if tab[x] or type(x) == "table" then for l = 1, type(x) == "table" and #x or 1 do item = doCreateItem(type(x) == "table" and (not tab[x[l]].name and tab[x[l]].itemid or getItemIdByName(tab[x[l]].name)) or (not tab[x].name and tab[x].itemid or getItemIdByName(tab[x[l]].name)), type(x) == "table" and (tab[x[l]].count == nil and 1 or tab[x[l]].count) or tab[x].count == nil and 1 or tab[x].count, pos) doItemSetAttribute(item, "aid", type(x) == "table" and (tab[x[l]].actionid == nil and 0 or tab[x[l]].actionid) or tab[x].actionid == nil and 0 or tab[x].actionid) end end end end return TRUE end Bem oque ela faz eu acho que ja da pra saber né, mas pra quem nao sabe ingles: A funçao cria itens em uma area. Como usar a function: Bem pra usar eh bem simples, basta criar uma area parecida com a de uma magia e botar a posiçao do primeiro "sqm" Uma talkaction que cria itens em volta do player: function doCreateItemInArea(firstpos, area, tab) -- function by MatheusMkalo for i, z in pairs(area) do pos = {x=firstpos.x, y=firstpos.y+i-1, z=firstpos.z} for s, x in pairs(z) do pos.x = firstpos.x+s-1 if tab[x] or type(x) == "table" then for l = 1, type(x) == "table" and #x or 1 do item = doCreateItem(type(x) == "table" and (not tab[x[l]].name and tab[x[l]].itemid or getItemIdByName(tab[x[l]].name)) or (not tab[x].name and tab[x].itemid or getItemIdByName(tab[x[l]].name)), type(x) == "table" and (tab[x[l]].count == nil and 1 or tab[x[l]].count) or tab[x].count == nil and 1 or tab[x].count, pos) doItemSetAttribute(item, "aid", type(x) == "table" and (tab[x[l]].actionid == nil and 0 or tab[x[l]].actionid) or tab[x].actionid == nil and 0 or tab[x].actionid) end end end end return TRUE end function onSay(cid, words) local items = { [1] = {itemid = 2160, count = 1}, [2] = {itemid = 2160, count = 2}, [3] = {itemid = 2160, count = 3}, } local areacreate = { {3,2,1}, {2,0,2}, {1,2,3}, } doCreateItemInArea({x=getCreaturePosition(cid).x-1, y=getCreaturePosition(cid).y-1, z=getCreaturePosition(cid).z}, areacreate, items) return TRUE end Vou explicar mais um pouco as coisas: Oque esta em vermelho eh a pos do primeiro sqm da area que seria o de azul: local areacreate = {{3,2,1}, {2,0,2}, {1,2,3}, } Oque esta em rosa seria a area que no caso eh a areacreate. Oque esta em laranja sao oque os numeros na area vao representar: local items = { [1] = {itemid = 2160, count = 1}, [2] = {itemid = 2160, count = 2}, [3] = {itemid = 2160, count = 3}, } No caso dessa tabela, aonde estiver o numero 1 na area, vai criar 1 item de id 2160 aonde estiver 2, criara 2 items de id 2160, e assim por diante. Voce nao é obrigado a colocar uma quantidade voce pode deixar somente o itemid que nao ira bugar. Algumas propriedades a mais: Se voce quiser criar varios items no mesmo tile voce pode, voce so precisa botar eles entre chaves assim: local areacreate = { {{3,2}, {1,2}, {3,1}}, {{3,1}, 0, {1,2}}, {{2,3}, {3,2}, {3,3}}, } Voce pode trocar o itemid = 2160 por name = "Crystal Coin" que ira ir perfeitamente: local items = { [1] = {name = "Golden Helmet"}, [2] = {name = "Magic Plate Armor"}, [3] = {name = "Crystal Coin", count = 5}, } local areacreate = { {{3,2}, {1,2}, {3,1}}, {{3,1}, 0, {1,2}}, {{2,3}, {3,2}, {3,3}}, } Voce pode botar actionids nos items assim: local items = { [1] = {name = "Golden Helmet"}, [2] = {name = "Magic Plate Armor", actionid = 666}, [3] = {name = "Crystal Coin", count = 5}, } Lembre-se que todos os items 2 que forem criados terao akele actionid. Pronto, use e abuse. Nao gaste seu rep+ comigo, so um elogio ja ta otimo. Algumas areas e ids para brincar: Trapado entre paredes: local items = {[1] = {itemid = 1026}, [2] = {itemid = 1027}, [3] = {itemid = 1025}, } local areacreate = { {2,1,1}, {3,0,3}, {3,1,{3,1}}, } doCreateItemInArea({x=getCreaturePosition(cid).x-1, y=getCreaturePosition(cid).y-1, z=getCreaturePosition(cid).z}, areacreate, items) Casa improvisada: (Nescessario bastante espaço) local items = {[0] = {itemid = 406}, [1] = {itemid = 1026}, [2] = {itemid = 1027}, [3] = {itemid = 1025}, [4] = {itemid = 1212}, [5] = {itemid = 1266}, } local areacreate = { {2,1,1,1,1,1,1,1,1,1,1,1}, {3,0,0,0,0,0,0,0,0,0,0,3}, {5,0,0,0,0,0,0,0,0,0,0,5}, {5,0,0,0,0,0,0,0,0,0,0,5}, {3,0,0,0,0,0,0,0,0,0,0,3}, {3,1,1,1,1,4,1,1,1,1,1,{3,1}}, } doCreateItemInArea({x=getCreaturePosition(cid).x-1, y=getCreaturePosition(cid).y-1, z=getCreaturePosition(cid).z}, areacreate, items) Editado Novembro 15, 2010 por MatheusMkalo Link para o comentário Compartilhar em outros sites More sharing options...
Saymon14 115 Postado Novembro 15, 2010 Share Postado Novembro 15, 2010 Bonzim, dá pra fazer algumas coisas boas Abraços Link para o comentário Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Novembro 15, 2010 Share Postado Novembro 15, 2010 Parabéns, Matheus. Seus scripts estão ficando muito bons, o que demonstra seu avanço no campo da programação LUA. Link para o comentário Compartilhar em outros sites More sharing options...
MatheusGlad 424 Postado Novembro 15, 2010 Autor Share Postado Novembro 15, 2010 Funçao atualizada, agora da pra botar actionids nos items! Link para o comentário Compartilhar em outros sites More sharing options...
Administrador Administrador 1435 Postado Novembro 15, 2010 Administrador Share Postado Novembro 15, 2010 Bem legal matheus =p Estamos pensando em fazer um concurso de idéias e scripts para o mapa da cidade xtibia.com que está sendo feita no CEM ... Convidaremos todos para participar, a criatividade da comunidade é muito legal =p Link para o comentário Compartilhar em outros sites More sharing options...
MatheusGlad 424 Postado Novembro 15, 2010 Autor Share Postado Novembro 15, 2010 Bem legal, to aqui pra ajudar, qlqr coisa eh so chamar POST 666 FUCK YEAAAAAAHHHHHHHHHHH Link para o comentário Compartilhar em outros sites More sharing options...
kpdo 18 Postado Março 22, 2011 Share Postado Março 22, 2011 muito bom cara esse script tenho grandes ideias no que usar ele Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 25, 2018 Share Postado Abril 25, 2018 Esta noticia foi arquivada. Este tópico está fechado e foi movido para Noticia - Arquivo. + Caso tenha atualizações você poderá criar outro tópico. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados