Ir para conteúdo

[Arquivado]Funçao Docreateiteminarea(Firstpos, Area, Tab)


MatheusGlad

Posts Recomendados

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 por MatheusMkalo
Link para o comentário
Compartilhar em outros sites

  • Administrador

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

  • 4 months later...
  • 7 years later...
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

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