Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Por: BananaFight > DragonElement

 

Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês :D

Nome: Map Icon
Descrição: Adiciona um icone no minimap
Autor: Eduardo Vicente (Banana Fight)

Versão 1.0

Features: Criar Icones no minimap

imagedac.png

Instalação

dentro de modules/game_minimap/minimap.lua

 

embaixo de :

 

function toggle()
if minimapButton:isOn() then
    minimapWindow:close()
    minimapButton:setOn(false)
else
    minimapWindow:open()
    minimapButton:setOn(true)
end
end

Você adiciona a função :

function setMonsterCave(posx, posy, posz, icon, description)

local pos = {}
pos.x = posx
pos.y = posy
pos.z = posz

minimapWidget:addFlag(pos, icon, description)
end


function removeMonsterCave(posx, posy, posz, icon, description)

local pos = {}
pos.x = posx
pos.y = posy
pos.z = posz

minimapWidget:removeFlag(pos, icon, description)
end

Como usar

setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer")

Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem.

Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira :

 

setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave")

 

 

Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png.

 

 

Obs 2: Sua imagem tem que ter o fundo transparente

 

Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo.

 

Exemplo de uso :

 

arquivo : minimap.lua

function init()
minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle)
minimapButton:setOn(true)

minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel())
minimapWindow:setContentMinimumHeight(64)

minimapWidget = minimapWindow:recursiveGetChildById('minimap')

local gameRootPanel = modules.game_interface.getRootPanel()
g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel)
g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel)
g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel)
g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel)
g_keyboard.bindKeyDown('Ctrl+M', toggle)
g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap)

minimapWindow:setup()

connect(g_game, {
    onGameStart = online,
    onGameEnd = offline,
})

connect(LocalPlayer, {
    onPositionChange = updateCameraPosition
})

if g_game.isOnline() then
    online()
setMonsterCave(32239, 32240, 7, "dragon", "hihi")
removeMonsterCave(32239, 32240, 7, "dragon", "hihi")
end
end

hFswhf8.png

 

  • Respostas 9
  • Visualizações 6.2k
  • Created
  • Última resposta

Top Posters In This Topic

Postado

Muito bom, isso irá ajudar muitas pessoas com seus otservs :3

Bruno Carvalho / Ex-Administrador TibiaKing

b.camara@live.com

 

  Em 26/12/2016 em 05:47, Spraypaint disse:

A força da alienação vem dessa fragilidade dos indivíduos, quando apenas conseguem identificar o que os separa e não o que os une.

-miltinho

 

wMwSJFE.png?1

 

  • 1 month later...
Postado

Que legal! Valeu pelo tuto! Só uma dúvida: ao invés de usar .png, posso usar um .gif animado?

 

Editado:

Acabei de testar com .png e não funcionou pra mim.

 

Em OTClient/data/images/game/minimap adicionei um png 11x11 chamado flagteste.
 

Assim está o meu minimap.lua:

minimapWidget = nil
minimapButton = nil
minimapWindow = nil
otmm = true
preloaded = false
fullmapView = false
oldZoom = nil
oldPos = nil

function init()
  minimapButton = modules.client_topmenu.addCustomRightButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/ui/pxg/topMenu_icons/minimap_icon', toggle, false)
  minimapButton:setOn(true)
  minimapButton:setVisible(false)

  minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel())
  minimapWindow:setContentMinimumHeight(64) 

  minimapWidget = minimapWindow:recursiveGetChildById('minimap')

  local gameRootPanel = modules.game_interface.getRootPanel()
  g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel)
  g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel)
  g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel)
  g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel)
  g_keyboard.bindKeyDown('Ctrl+M', toggle)
  g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap)

  minimapWindow:setup()

  connect(g_game, {
    onGameStart = online,
    onGameEnd = offline,
  })

  connect(LocalPlayer, {
    onPositionChange = updateCameraPosition
  })

  if g_game.isOnline() then
    online()
  setMonsterCave(1523, 2102, 7, "teste", "hihi")
  removeMonsterCave(1523, 2102, 7, "teste", "hihi")
  end
end

function terminate()
  if g_game.isOnline() then
    saveMap()
  end

  disconnect(g_game, {
    onGameStart = online,
    onGameEnd = offline,
  })

  disconnect(LocalPlayer, {
    onPositionChange = updateCameraPosition
  })

  local gameRootPanel = modules.game_interface.getRootPanel()
  g_keyboard.unbindKeyPress('Alt+Left', gameRootPanel)
  g_keyboard.unbindKeyPress('Alt+Right', gameRootPanel)
  g_keyboard.unbindKeyPress('Alt+Up', gameRootPanel)
  g_keyboard.unbindKeyPress('Alt+Down', gameRootPanel)
  g_keyboard.unbindKeyDown('Ctrl+M')
  g_keyboard.unbindKeyDown('Ctrl+Shift+M')

  minimapWindow:destroy()
  minimapButton:destroy()
end

function toggle()
  if minimapButton:isOn() then
    minimapWindow:close()
    minimapButton:setOn(false)
    minimapButton:setIcon('/images/ui/pxg/topMenu_icons/minimap_icon_apagado')
  else
    minimapWindow:open()
    minimapButton:setOn(true)
    minimapButton:setIcon('/images/ui/pxg/topMenu_icons/minimap_icon')
  end
end

function setMonsterCave(posx, posy, posz, icon, description)

  local pos = {}
  pos.x = posx
  pos.y = posy
  pos.z = posz

  minimapWidget:addFlag(pos, icon, description)
end


function removeMonsterCave(posx, posy, posz, icon, description)

  local pos = {}
  pos.x = posx
  pos.y = posy
  pos.z = posz

  minimapWidget:removeFlag(pos, icon, description)
end

function onMiniWindowClose()
  minimapButton:setOn(false)
end

function preload()
  loadMap(false)
  preloaded = true
end

function online()
  loadMap(not preloaded)
  updateCameraPosition()
  minimapButton:setVisible(true)
end

function offline()
  saveMap()
  minimapButton:setVisible(false)
end

function loadMap(clean)
  local protocolVersion = g_game.getProtocolVersion()

  if clean then
    g_minimap.clean()
  end

  if otmm then
    local minimapFile = '/minimap.otmm'
    if g_resources.fileExists(minimapFile) then
      g_minimap.loadOtmm(minimapFile)
    end
  else
    local minimapFile = '/minimap_' .. protocolVersion .. '.otcm'
    if g_resources.fileExists(minimapFile) then
      g_map.loadOtcm(minimapFile)
    end
  end
  minimapWidget:load()
end

function saveMap()
  local protocolVersion = g_game.getProtocolVersion()
  if otmm then
    local minimapFile = '/minimap.otmm'
    g_minimap.saveOtmm(minimapFile)
  else
    local minimapFile = '/minimap_' .. protocolVersion .. '.otcm'
    g_map.saveOtcm(minimapFile)
  end
  minimapWidget:save()
end

function updateCameraPosition()
  local player = g_game.getLocalPlayer()
  if not player then return end
  local pos = player:getPosition()
  if not pos then return end
  if not minimapWidget:isDragging() then
    if not fullmapView then
      minimapWidget:setCameraPosition(player:getPosition())
    end
    minimapWidget:setCrossPosition(player:getPosition())
  end
end

function toggleFullMap()
  if not fullmapView then
    fullmapView = true
    minimapWindow:hide()
    minimapWidget:setParent(modules.game_interface.getRootPanel())
    minimapWidget:fill('parent')
    minimapWidget:setAlternativeWidgetsVisible(true)
  else
    fullmapView = false
    minimapWidget:setParent(minimapWindow:getChildById('contentsPanel'))
    minimapWidget:fill('parent')
    minimapWindow:show()
    minimapWidget:setAlternativeWidgetsVisible(false)
  end

  local zoom = oldZoom or 0
  local pos = oldPos or minimapWidget:getCameraPosition()
  oldZoom = minimapWidget:getZoom()
  oldPos = minimapWidget:getCameraPosition()
  minimapWidget:setZoom(zoom)
  minimapWidget:setCameraPosition(pos)
end

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

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo