Jump to content

Recommended Posts

Olá, achei esse codigo em outro forum, ele foi desenvolvido para abrir o mapa do old cliente, mas ele foi feito para 1.2+, gostaria de saber se alguem poderia passar ele para 0.4.

Spoiler

<talkaction words="/minimap" separator=" " script="minimap_scan.lua" />




local distanceBetweenPositionsX = 8
local distanceBetweenPositionsY = 8
local addEventDelay = 100
local teleportsPerEvent = 3
local maxEventExecutionTime = 1000

local function teleportToClosestPosition(player, x, y, z)
   -- direct to position
   local tile = Tile(x, y, z)

   if not tile or not tile:getGround() or tile:hasFlag(TILESTATE_TELEPORT) or not player:teleportTo(tile:getPosition()) then
      for distance = 1, 3 do
         -- try to find some close tile
         for changeX = -distance, distance, distance do
            for changeY = -distance, distance, distance do
               tile = Tile(x + changeX, y + changeY, z)
               if tile and tile:getGround() and not tile:hasFlag(TILESTATE_TELEPORT) and player:teleportTo(tile:getPosition()) then
                  return true
               end
            end
         end
      end

      return false
   end

   return true
end

local function sendScanProgress(player, minX, maxX, minY, maxY, x, y, z, lastProgress)
   local progress = math.floor(((y - minY + (((x - minX) / (maxX - minX)) * distanceBetweenPositionsY)) / (maxY - minY)) * 100)
   if progress ~= lastProgress then
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Scan progress: ~' .. progress .. '%')
   end

   return progress
end

local function minimapScan(cid, minX, maxX, minY, maxY, x, y, z, lastProgress)
   local player = Player(cid)

   if not player then
      --print('Minimap scan stopped - player logged out', cid, minX, maxX, minY, maxY, x, y, z)
      return
   end

   local scanStartTime = os.mtime()
   local teleportsDone = 0
   while true do
      if scanStartTime + maxEventExecutionTime < os.mtime() then
         lastProgress = sendScanProgress(player, minX, maxX, minY, maxY, x, y, z, lastProgress)
         addEvent(minimapScan, addEventDelay, cid, minX, maxX, minY, maxY, x, y, z, lastProgress)
         break
      end

      x = x + distanceBetweenPositionsX
      if x > maxX then
         x = minX
         y = y + distanceBetweenPositionsY
         if y > maxY then
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Scan finished: ' .. os.time())
            --print('Minimap scan complete', player:getName(), minX, maxX, minY, maxY, x, y, z)
            break
         end
      end

      if teleportToClosestPosition(player, x, y, z) then
         teleportsDone = teleportsDone + 1
         lastProgress = sendScanProgress(player, minX, maxX, minY, maxY, x, y, z, lastProgress)

         --print('Minimap scan teleport', player:getName(), minX, maxX, minY, maxY, x, y, z, progress, teleportsDone)
         if teleportsDone == teleportsPerEvent then
            addEvent(minimapScan, addEventDelay, cid, minX, maxX, minY, maxY, x, y, z, progress)
            break
         end
      end
   end
end

local function minimapStart(player, minX, maxX, minY, maxY, x, y, z)
   player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Scan started: ' .. os.time())
   --print('Minimap scan start', player:getName(), minX, maxX, minY, maxY, x, y, z)
   minimapScan(player:getId(), minX, maxX, minY, maxY, minX - 5, minY, z)
end

function onSay(player, words, param)
   if player:getGroup():getId() <= 4 then
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Only GOD can scan map. Too low Player group.')
      return false
   end

   if player:getAccountType() < ACCOUNT_TYPE_GAMEMASTER then
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Only GOD can scan map.Too low Account type.')
      return false
   end

   local positions = param:split(',')
   if #positions ~= 5 then
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Command requires 5 parameters: /minimap minX, maxX, minY, maxY, z')
      return false
   end

   for key, position in pairs(positions) do
      local value = tonumber(position)

      if not value then
         player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Invalid parameter ' .. key .. ': ' .. position)
         return false
      end

      positions[key] = value
   end

   minimapStart(player, positions[1], positions[2], positions[3], positions[4], positions[1] - distanceBetweenPositionsX, positions[3], positions[5])
   return false
end

 


crédito Gesior.pl

       112674.gif

 

 

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Jeff Delay
      Comecei a usar TFS 1.3 recentemente porem não entendo quase nada praticamente, quero por nessa magia a posição do efeito e o tempo que ela vai sair no target
       
      local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, 0) combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) -- combat:setParameter(COMBAT_PARAM_USECHARGES, true) function onGetFormulaValues(player, skill, attack, factor)     local min = (player:getLevel() / 5) + (skill * attack * 0.02) + 4     local max = (player:getLevel() / 5) + (skill * attack * 0.04) + 9     return -min, -max end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(creature, variant) local parameters = {creature = creature, variant = variant} local target = Variant.getNumber(variant) addEvent(effect, 200, target, {1,0}, 45)     return combat:execute(creature, variant) end onde em 
      200 = tempo para sair o efeito
      {1,0} = posição do efeito
      45 = efeito
      nela gostaria também de tempo para sair o danos.
    • By pedrobta
      .Qual servidor ou website você utiliza como base? 
      TFS 1.4
       
      Qual o motivo deste tópico? 
      Gostaria de solicitar a ajuda de vocês em relação a uma dúvida. Gostaria de realçar algumas cores dentro da GAMESTORE, no caso desse exemplo é o laranja.
      Estou enviando uma imagem para dúvidas.
       
      Imagem como eu gostaria de fazer.
       
      Você tem o código disponível? Segue meu GAMESTORE.LUA
       
    • By miguelprojac
      .Qual servidor ou website você utiliza como base? 
      https://github.com/opentibiabr/OTServBR-Global
       
      Bom a situação é a seguinte: quando o player está equipado com uma arma de dano físico que foi imbuida com um dano elemental, a magia de cura que o mesmo usa é diminuida conforme a porcentagem do imbue elemental.
       
      Ex: Arma imbuida nível 2 dano de fogo (25% do dano é convertido para fire)  >> Magia  cura 25% menos;
           Arma imbuida nível 3 dano de gelo (50% do dano é convertido para ice)  >> Magia  cura 50% menos;
       
      Alguem já viu algum problema parecido?  Utilizo o otservbr 12.6 TFS 1.3
          
       
    • By thloko2
      Bom dia/tarde/noite galera !
       
      Bom, gostaria de saber se consigo criar um novo npc que use os diamonds do server para comercializar os itens ao invés do dinheiro normal.
      Mas que ele abra o trade normalmente para visualizar os itens. (O module Shop)
       
      Abraço e agradeço desde já !
       
       
       
       
    • By miguelprojac
      Estou tentando adaptar o script de subir texto animados do chão pra versa TSF 1.3 - revscript.
      mas estou tendo um problema em oque colocar nessa parte do script:
      local positions = { { x = 32365, y = 32236, z = 7 }, } local textoEvent = GlobalEvent("textoEvent") function textoEvent.onThink(interval) for i = 1, #positions do Position(positions[i]):doSendAnimatedText ...????? --------- ESSA LINHA ******* end return true end textoEvent:interval(50) textoEvent:register()    
      Não sei se estou no caminho certo, então se alguem que manja ai puder me dar um help, agradeço!
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo