Jump to content
×
×
  • Create New...
  • 0

tfs 0.3.6 Alguma função


Question

Bom dia eu estava afastado de Tibia, e resolvi voltar e fazer um script, porém eu não me recordo da função que pega os itens que tem no tile, então eu queria saber se alguém ai se lembra da função que pegaria um item que esta no tile(eu não sei o id do item, pq é aleatorio, só queria pegar aquele item lá)

	local positions = {		{x = 1052, y = 1056, z = 7},		{x = 1052, y = 1057, z = 7},		{x = 1052, y = 1058, z = 7},		{x = 1052, y = 1059, z = 7},		{x = 1052, y = 1060, z = 7},		{x = 1052, y = 1051, z = 7}	}		local rep = math.random(1, 20)	local count = 1	local cc = 1	local lastPos = nil		for i = 1, rep do		addEvent(doSendMagicEffect, count * 150, positions[cc], 6)		count = count + 1		cc = cc + 1		if cc > #positions then			cc = 1		end		lastPos = positions[cc]	end		local getItem = aqui iria a função que vai pegar o item da lastPos

 

Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 1

/\ algu assim?

local function getItemInPos(pos)   local info = getTileInfo(pos)   local p = {x=pos.x, y=pos.y, z=pos.z}      for i = info.things, 1, -1 do      p.stackpos = i      local item = getTileThingByPos(p)      if item.itemid > 0 and not isCreature(item.uid) then         return item      end   end   return {itemid = 0, uid = 0}endlocal positions = {  {x = 1052, y = 1056, z = 7},  {x = 1052, y = 1057, z = 7},  {x = 1052, y = 1058, z = 7},  {x = 1052, y = 1059, z = 7},  {x = 1052, y = 1060, z = 7},  {x = 1052, y = 1051, z = 7}}local lastPos = nilfor i = 0, math.random(0, 19) do   lastPos = positions[(i%#positions)+1]     addEvent(doSendMagicEffect, i*150, lastPos, 6)   endlocal item = getItemInPos(lastPos)--agora podes usar item.itemid e item.uid

 

Edited by nogenem45
Link to post
Share on other sites
  • 0
local info = getTileInfo(pos)info.things -- todos os things( items + creatures )info.items -- todos os itemsinfo.creatures -- creatures no tileinfo.topItems info.downItems

Sem o id e sem o stackpos o melhor que da pra fazer é puxar a lista de todos no tile

 

 

Caso voce saiba o stack pos, tu pode usar esse aqui:

getThingFromPosition(pos)

Edited by dalvorsn
Link to post
Share on other sites
  • 0
2 horas atrás, dalvorsn disse:
local info = getTileInfo(pos)info.things -- todos os things( items + creatures )info.items -- todos os itemsinfo.creatures -- creatures no tileinfo.topItems info.downItems

Sem o id e sem o stackpos o melhor que da pra fazer é puxar a lista de todos no tile

 

 

Caso voce saiba o stack pos, tu pode usar esse aqui:

getThingFromPosition(pos)

 

setField(L, "things", tile->getThingCount());setField(L, "creatures", tile->getCreatureCount());setField(L, "items", tile->getItemCount());setField(L, "topItems", tile->getTopItemCount());setField(L, "downItems", tile->getDownItemCount());

 

acho que soh retorna a qntdade heim... o.O

Link to post
Share on other sites
  • 0
1 minute ago, nogenem45 said:

 

setField(L, "things", tile->getThingCount());setField(L, "creatures", tile->getCreatureCount());setField(L, "items", tile->getItemCount());setField(L, "topItems", tile->getTopItemCount());setField(L, "downItems", tile->getDownItemCount());

 

acho que soh retorna a qntdade heim... o.O

Sim, mas a ordem dele é baseada na quantidade, o stack é diretamente o numero de things.

Aqueles 255 253 são apenas padrões pra função lua buscar, o item não está de fato no stack 255, ele ta la no inicio

se tu fizer um loop com stack variando ate a quantidade do things, tu pega todos os things do tile

só nao me recordo se ele começa de 0 ou de 1

Link to post
Share on other sites
  • 0
15 minutes ago, nogenem45 said:

/\ algu assim?

local function getItemInPos(pos)   local info = getTileInfo(pos)   local p = {x=pos.x, y=pos.y, z=pos.z}      for i = info.things, 1, -1 do      p.stackpos = i      local item = getTileThingByPos(p)      if item.itemid > 0 and not isCreature(item.uid) then         return item      end   end   return {itemid = 0, uid = 0}endlocal positions = {  {x = 1052, y = 1056, z = 7},  {x = 1052, y = 1057, z = 7},  {x = 1052, y = 1058, z = 7},  {x = 1052, y = 1059, z = 7},  {x = 1052, y = 1060, z = 7},  {x = 1052, y = 1051, z = 7}}local lastPos = nilfor i = 0, math.random(0, 19) do   lastPos = positions[(i%#positions)+1]     addEvent(doSendMagicEffect, i*150, lastPos, 6)   endlocal item = getItemInPos(lastPos)--agora podes usar item.itemid e item.uid

 

Yep, mas podem haver mais items, nesse caso tem que ver o que ele precisa, como ele vai identificar qual item certo. O que tu fez retornaria sempre apenas um item, o primeiro mais acima.

@Skymagnum Qual o metodo de identificação do item correto? Ou basta ser o topitem?

Edited by dalvorsn
Link to post
Share on other sites
  • 0

Desculpem a demora, só vai haver um item no tile, é tipo uma "roleta" vai sair soltando os effects e parar em uma posição e dar o item que tiver nela para o jogador.

 

-- essa do @nogenem45 vai me servir, muito obrigado aos 2

Edited by Skymagnum
Link to post
Share on other sites
  • 0

posso dar uma opinião? se vc vai usar roleta então provavelmente os itens são muito bem definidos, vc pode usar getTileItemById (pos, itemid) q nem o @Poccnn bem colocou.
Pra mim é a função mais "confiável" de se usar, as outras vc vai ter que ficar checando possiveis bugs e falhas no sistema o tempo todo e isso acaba sendo mais pesado pro número de execuções do que a própria definição da função via source. Qualquer dúvida tamo aí

Link to post
Share on other sites
  • 0
8 horas atrás, Night Wolf disse:

posso dar uma opinião? se vc vai usar roleta então provavelmente os itens são muito bem definidos, vc pode usar getTileItemById (pos, itemid) q nem o @Poccnn bem colocou.

Pra mim é a função mais "confiável" de se usar, as outras vc vai ter que ficar checando possiveis bugs e falhas no sistema o tempo todo e isso acaba sendo mais pesado pro número de execuções do que a própria definição da função via source. Qualquer dúvida tamo aí

Sim pensei em colocar todos os itens em um array e checar se eles estão lá, vou ver qual fica melhor.

Edited by Skymagnum
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


    Administrador |  Diretor |  Coordenador |  Moderador |  Suporter |  Estagiário |  Herói
  • Similar Content

    • By StrikersBR12
      Versão do Servidor: TFS - 0.3.5 Tipo de Script: actions Código: A versao é TFS 0.3.6 base pokeroxy alguem saberia como remover o icon system da base? pq por exemplo se n tiver o codigo abaixo em some functions n cria ball
       
          if icons[pokemon] then
            id = icons[pokemon].on
         else
            id = pokeballs[btype].on
         end 
       
       
    • By StrikersBR12
      Galera alguém sabe como editar as vocation que fica no account manager de uma base narutibia?
      Estava estudando aqui o script e vou dar um breve tutorial pra quem quer saber como fazer isso
       
      primeiro passo - vocations.xml
       
      segundo passo - selecione a vocation que vc deseja que n apareça no account manager / irei selecionar a da kaguya por exemplo
       
      nessa parte fromvoc=""> geralmente tem um numero entre as "" por exemplo o id é 174 a continuação poderia ser 175 porem isso não interfere na transformação então não se preocupe
      se vc não quer a vocação no account manager basta remover o numero que fica entre as "" pronto simples não?
    • By milos otzero
      meu tfs nao possui guild war.
      então como so tem como criar guild.
      pensei em colocar um script.
      que quando o player cria guild.
      ele ganha o escudo de guild.
      +REP
       
      TFS 0.3.6
    • By SmashPlayer55
      Versão do Servidor: TFS - 0.3.5 Tipo de Script: monster Código: Ola a todos! Esse e o meu primeiro poste, e gostaria se alguem podesse me ajudar adaptar Level System no meu poketibia base otpokemon (TFS 0.3.6)
       
      Se alguem pudesse me ajudar colocar ficaria grato!
       
      monsters.h
       
       
       
      monsters.cpp
       
      monster.cpp
       
      monster.h
       
      map.cpp
       
      configmanager.h
       
      configmanager.cpp
       
      Estava seguindo esse tutorial mais toda vez que Eu ia compiliar a source dava erro.
       
    • By Xtibianoo01
      ERRO NO NPC QUANDO VAI VENDER ITENS ÚNICO , O NPC SÓ COMPRA ITENS STACKADOS !
      TFS 0.3.6
       
       
      [08/04/2019 19:27:39] data/npc/lib/npcsystem/modules.lua:1229: bad argument #2 to 'error' (number expected, got string)
      [08/04/2019 19:27:39] stack traceback:
      [08/04/2019 19:27:39]     [C]: in function 'error'
      [08/04/2019 19:27:39]     data/npc/lib/npcsystem/modules.lua:1229: in function 'callbackOnSell'
      [08/04/2019 19:27:39]     data/npc/lib/npcsystem/npchandler.lua:265: in function 'processModuleCallback'
      [08/04/2019 19:27:39]     data/npc/lib/npcsystem/npchandler.lua:450: in function 'onSell'
      [08/04/2019 19:27:39]     data/npc/lib/npcsystem/modules.lua:1296: in function <data/npc/lib/npcsystem/modules.lua:1295>