Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Estou tentando fazer o seguinte, queria fazer um script assim, se tiver tais itens em tais lugares e todos os players estiverem em tais lugares e um deles puxar a alavanca, vai teleportar todo mundo para tal lugar e os itens sumirá, tipo uma anihi, mas com itens para ser colocado em tais lugares, bom minha duvida é a seguinte, para nao encher de IF, eu decidi usar o for, mas nao sei usar ele ainda e queria saber se existe um jeito de fazer o "print ("1")entrar apenas se todos os itens estiverem nos lugares, mas o jeito que estou fazendo ele esta entrando e saindo.

Spoiler

for _, item_pos in ipairs(pos) do
        if getTileItemById({x=item_pos.pos[1],y=item_pos.pos[2],z=item_pos.pos[3]}, item).uid >= 1 then
            print("1")

Exemplo: queria que ele entrasse apenas uma vez, mas em vez disso... ele esta entrando 3 vezes.

Eu adaptei meu codigo ja que nao consegui... mas chegou em uma parte que nao tem jeito, eu preciso disso, preciso conferir se todos itens estao em seus lugares e todos os players tbm e se for TRUE, eles sao teleportados.

script completo: 

Spoiler

function onUse(cid, item, fromPosition, itemEx, toPosition)
local pos = {
    [1] = {pos = {1170,965,7}, item = {"1"}},
    [2] = {pos = {1171,968,7}, item = {"2"}},
    [3] = {pos = {1171,969,7}, item = {"3"}}
}
local players_pos = {
    {x = 1164, y =964, z = 7, stackpos = 253}
    {x = 1165, y =964, z = 7, stackpos = 253},
    {x = 1169, y =964, z = 7, stackpos = 253},
    {x = 1171, y =966, z = 7, stackpos = 253},
    {x = 1170, y =967, z = 7, stackpos = 253},
    {x = 1169, y =968, z = 7, stackpos = 253},
    {x = 1169, y =969, z = 7, stackpos = 253},
    {x = 1167, y =968, z = 7, stackpos = 253}
}
local item = 2385
    for _, item_pos in ipairs(pos) do
        if getTileItemById({x=item_pos.pos[1],y=item_pos.pos[2],z=item_pos.pos[3]}, item).uid >= 1 then
            doPlayerSendTextMessage(cid,22,'Confirmado item: '..item_pos.item[1])
        end
    end
    for i = 1, #players_pos do 
local player = getThingfromPos(players_pos)
        for v = 1, #pos do
            if isPlayer(player.uid) == TRUE and getThingFromPos(pos[v].uid) == TRUE and item.uid > 0 then
            print('1')
        end
        end
        end
        end

 

Editado por Pepeco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
function doRemoveItensInPos(items, pos) -- function by vodka
local items = type(items) == "table" and items or {items}  
      for i = 1, table.maxn(items) do 
    doRemoveItem(getThingFromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=1}).uid)
  end
  return nil
end
function getItemsInPos(items, pos)
         for i = 1,#items do
            local stack = getTileItemById(pos, items[1])
                  if stack.uid > 0 and math.max(1, stack.type) >= items[2] and i == #items then
                    return true
                 end
         end
return false
end

 

ai pode usar assim a tabela por exemplo:

 

local t = {
{items = {{2385,1}} , pos = {x=1170, y=965, z=7}},
{items = {{2173,1},{2493,1}} , pos = {x=1171, y=968, z=7}}
}

 

podendo colocar 1 ou mais itens dentro da tabela e a quantidade necessaria de cada um.

 

ai pra checar você usaria assim:

 

for _, w in ipairs(t) do
if not getItemsInPos(w.items, w.pos) then
doPlayerSendCancel(cid, 'Está faltando items.') 
return true
end
end

 

e pra remover os items

 

for _, v in ipairs(t) do
doRemoveItensInPos(v.items, v.pos)
end

 

Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
2 horas atrás, Pepeco disse:

Estou tentando fazer o seguinte, queria fazer um script assim, se tiver tais itens em tais lugares e todos os players estiverem em tais lugares e um deles puxar a alavanca, vai teleportar todo mundo para tal lugar e os itens sumirá, tipo uma anihi, mas com itens para ser colocado em tais lugares, bom minha duvida é a seguinte, para nao encher de IF, eu decidi usar o for, mas nao sei usar ele ainda e queria saber se existe um jeito de fazer o "print ("1")entrar apenas se todos os itens estiverem nos lugares, mas o jeito que estou fazendo ele esta entrando e saindo.

  Ocultar conteúdo

for _, item_pos in ipairs(pos) do
        if getTileItemById({x=item_pos.pos[1],y=item_pos.pos[2],z=item_pos.pos[3]}, item).uid >= 1 then
            print("1")

Exemplo: queria que ele entrasse apenas uma vez, mas em vez disso... ele esta entrando 3 vezes.

Eu adaptei meu codigo ja que nao consegui... mas chegou em uma parte que nao tem jeito, eu preciso disso, preciso conferir se todos itens estao em seus lugares e todos os players tbm e se for TRUE, eles sao teleportados.

script completo: 

  Mostrar conteúdo oculto

function onUse(cid, item, fromPosition, itemEx, toPosition)
local pos = {
    [1] = {pos = {1170,965,7}, item = {"1"}},
    [2] = {pos = {1171,968,7}, item = {"2"}},
    [3] = {pos = {1171,969,7}, item = {"3"}}
}
local players_pos = {
    {x = 1164, y =964, z = 7, stackpos = 253}
    {x = 1165, y =964, z = 7, stackpos = 253},
    {x = 1169, y =964, z = 7, stackpos = 253},
    {x = 1171, y =966, z = 7, stackpos = 253},
    {x = 1170, y =967, z = 7, stackpos = 253},
    {x = 1169, y =968, z = 7, stackpos = 253},
    {x = 1169, y =969, z = 7, stackpos = 253},
    {x = 1167, y =968, z = 7, stackpos = 253}
}
local item = 2385
    for _, item_pos in ipairs(pos) do
        if getTileItemById({x=item_pos.pos[1],y=item_pos.pos[2],z=item_pos.pos[3]}, item).uid >= 1 then
            doPlayerSendTextMessage(cid,22,'Confirmado item: '..item_pos.item[1])
        end
    end
    for i = 1, #players_pos do 
local player = getThingfromPos(players_pos)
        for v = 1, #pos do
            if isPlayer(player.uid) == TRUE and getThingFromPos(pos[v].uid) == TRUE and item.uid > 0 then
            print('1')
        end
        end
        end
        end

 

 

 

vê se entende:

 

local position = {
    [1] = {pos = {x=1170,y=965,z=7}, item = "1"},
    [2] = {pos = {x=1171,y=968,z=7}, item = "2"},
    [3] = {pos = {x=1171,y=969,z=7}, item = "3"}
}

local check = 0

for i = 1, #position do
	if getTileItemById(position[i].pos, item).uid then
		check = check + 1
		doPlayerSendTextMessage(cid, 22, "Confirmado item "..position[i].item..".")
	end
end

if check == #position then
	todos os items estão no lugar, então fazer...
else
	algum item não está no lugar, então fazer...
end

bom, vi agr que o vod respondeu :S

Editado por Ed.Specter (veja o histórico de edições)

download.jpg

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo