Here you can change website language:

Autor Wątek: PORADNIK JAK POSTAWIC BOTA  (Przeczytany 12737 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

Howdy

PORADNIK JAK POSTAWIC BOTA
« dnia: 15 Lipiec 2022, 21:33:40 »
Siema. Dzisiaj przedstawię wam jak ustawić bota Avebot.






Jedna z ważniejszych funkcji od której zaczniemy jest ,,ALARMS"


Player Attack = Jezeli jakis gracz nasz zaatakuje
Player Detected = Gdy wykryje Gracza na ekranie
Creature Detected = Gdy wykryje Moba
Health/Mana <40%//50% (SUWAKIEM ZMIENIACIE WARTOŚC) = Alarm włącza się gdy mamy poniżej 40/50 hp/mp%
Private Message = Wiadomosc Prywatna





Jak już ustawiliśmy alarm to odpalamy zakładke ,,CAVE"


Najważniejsze rzeczy :
Move up/Down - Przesuwanie WPT w gore/dol
Edit/remove - Edytwanie/usuwanie zaznaczonego WPT
Use/Use WIth - Uzywa rzeczy na ziemi lub Item z Plecaka
Say/Npc Say - Pisze na Default/Npc

Osobiście polecam używanie ,,AUTO RECORDING" ponieważ latacie po expie (schody,drzwi) i wam to z automatu nagrywa. Po zrobieniu kółka wokół respa macie gotowe wpt bez żadnego klikania tylko klikacie ON i macie gotowe.




Jak już mamy ,,ALARM" oraz ,,CAVE" to teraz przechodzimy do zakładki ,,TARGET" oraz ,,ATTACKBOT"


Priority = Który target bijemy jako 1.
Danger = Który target jest najbardziej niebezpieczny.
Max Distance = Od jakiego distance zaznacza dany Target.
Keep Distance = Czy ma uciekać od targetu.
Classic Lure = Zwykłe lure
Dynamic Lure = Biega po WPT lurujac Min ilosc mobow, kiedy będzie miał wybrana ilość mobow zatrzyma się.
Dynamic Lure delay = prędkość poruszania się podczas lurowania
Chase = Bieganie za potworkiem




Wybieracie sqm range - Od jakiej odległości ma używać spella
Monster name - Nazwę potwora
spell name - nazwa czaru
oraz dolnych  ustawieniach w ,,CD" zmienić wartość na 50
W SETTINGS musicie odznaczyć :
- Check for RL Tibia Conditions
- Check Spell Cooldowns





Już prawie mamy postawionego bota lecz jeszcze został nam ,,HEALBOT"


Górna zakładka - Czary
Dolna zakładka - Runy, Potiony
When - Kiedy ma uzywac czaru Runy, ( Najlepiej ustawic Mana Percent/HP Percent)
Is -  Below=Ponizej X%
Cast - Jakiego czaru używa
Use - Jakiej Runy
W Settings zostawiamy wszystko odznaczone.





Zostało jeszcze parę dupereli takich jak ,,CONDITION MANAGER"


Lewa strona jest na Lecznie Zywiolow - exana all
Prawa strone = Auto Haste/Utana vid/Utamo vita





Zakładka ,,TOOLS" i opcja Ingame script editor


Tutaj możemy dodawać wszelakie skrypty jakie tylko znajdziecie. Niżej przedstawiam wam takie bardzo przydatne.


LEPSZE LECZENIE
local hpPercent = 99
macro(50, "faster healing",  function()
  if (hppercent() <= hpPercent) then
  say(storage.HealText)
end
end)
addTextEdit("HealText", storage.HealText or "NAZWASPELLA", function(widget, text)
storage.HealText = text
end)

LEPSZE MANASOWANIE
local manaId = 3184
local manaPercent = 80
macro(200, "faster mana potting",  function()
  if (manapercent() <= manaPercent) then
    usewith(manaId, player)
  end
end)


Odnowa FWB (UWAGA KOSZTUJE 5DC)
macro(10000, "FWB",  function()     say("!fwb")   end)
Skrypt na spam UE/SPELLA
macro(1000, "Spam UE",  function()      say(storage.spamue)    end) addTextEdit("Spam Ue", storage.spamue or "Nazwa spella", function (widget, text) storage.spamue = text end)
« Ostatnia zmiana: 15 Lipiec 2022, 21:49:13 wysłana przez Howdy »
 
Osoby które lubią ten post: Mrozu, Vallention, kakmak, Alkoholik, GxC

Alkoholik

  • Zasłużony
  • Mistrz Pióra
  • *
  • Wiadomości: 1873
  • Polubień: 701
  • Reputacja: -158
    • Zobacz profil
Odp: PORADNIK JAK POSTAWIC BOTA
« Odpowiedź #1 dnia: 15 Lipiec 2022, 22:30:09 »
Jak ja w szoku ze @Howdy zaczal coś robić

Jestem pełen podziwu Howdy przepraszam za wszystkie uprzykrzania już nie będę


 
Osoby które lubią ten post: Nyga Ricz, Napierdalacz

kakmak

Odp: PORADNIK JAK POSTAWIC BOTA
« Odpowiedź #2 dnia: 15 Lipiec 2022, 23:08:10 »
Dobra robota Szefie i oczywiście poradnik  8)
 
Osoby które lubią ten post: Howdy

GxC

Odp: PORADNIK JAK POSTAWIC BOTA
« Odpowiedź #3 dnia: 16 Lipiec 2022, 08:48:40 »
No i super, dodałbym jeszcze opis Friend listy bo ma przydatne opcje jak dodawanie do black listy osoby co nas ubije, + współgra z combobotem (o ile dziala) , oraz z friend healing. W attackbocie po kliknięciu w settings jest wbudowany antyrs, plus parę innych ciekawych opcji. Oraz żeby nie wpisywać nazwy każdego mobka wystarczy wpisać *. Pozdrawiam super robota.
 
Osoby które lubią ten post: Howdy

Howdy

Odp: PORADNIK JAK POSTAWIC BOTA
« Odpowiedź #4 dnia: 01 Grudzień 2022, 18:50:05 »
Siema dodaje pare fajnych skryptów

-WIDZIMY NIEWIDOCZNE WARLOCKI
-- config
local pvpSafe = true


-- do not change below
local lastUse
local m = macro(5000, "stone shower on warlock", function() end)
onCreatureDisappear(function(creature)
    if m.isOff() then return end
    if creature:getName() ~= "Warlock" then return end
    if creature:getHealthPercent() == 0 then return end
    local pos = creature:getPosition()
    if pos.z ~= posz() then return end

    local tile = g_map.getTile(pos)
    local tilePos = tile:getPosition()
    local pPos = player:getPosition()

    if not tile then return end
    if math.abs(pPos.x-tilePos.x) >= 8 or math.abs(pPos.y-tilePos.y) >= 6 then return end

    if (not pvpSafe or isSafe(8)) and tile:canShoot() and (not lastUse or now - lastUse > 500) then
        for i=0,2 do
            schedule(i*200, function()
                useWith(3175, tile:getTopThing())
                lastUse = now
            end)
        end
    end
end)

onAddThing(function(tile, thing)
    if m.isOff() then return end
    if thing:getId() ~= 13 then return end
    if tile:hasCreature() then return end

    if (not pvpSafe or isSafe(8)) and tile:canShoot() and (not lastUse or now - lastUse > 500) then
        for i=0,2 do
            schedule(i*200, function()
                useWith(3175, tile:getTopThing())
                lastUse = now
            end)
        end
    end
end)

-Pokazuje % HP
local showhp = macro(20000, "Monster HP %", function() end)
onCreatureHealthPercentChange(function(creature, healthPercent)
    if showhp:isOff() then  return end
    if creature:isMonster() or creature:isPlayer() and creature:getPosition() and pos() then
        if getDistanceBetween(pos(), creature:getPosition()) <= 5 then
            creature:setText(healthPercent .. "%")
        else
            creature:clearText()
        end
    end
end)

-POKAZUJE POZYCJE PO UZYCIU CTRL+PPM > LOOK
onTextMessage(function(mode, text)
    if mode == 20 and text:find("You see") then
        if not modules.game_interface.gameMapPanel.mousePos then return end
        local tile = modules.game_interface.gameMapPanel:getTile(modules.game_interface.gameMapPanel.mousePos)
        if tile then
            local loc = tile:getPosition()
            error("Position: " .. loc.x.. ", "..loc.y..", "..loc.z) -- remove this if you don't want it showing on bot
            if not modules.game_textmessage then return end
            modules.game_textmessage.displayMessage(16, "position: " .. loc.x.. ", "..loc.y..", "..loc.z)
        end
    end
end)

-SPRAWDZANIE PINGU (MAX WARTOSCI W RAZIE DDOSOW)
-- Edit these values
minPing = 100        -- logs pings over this amount
clearPingList = 500  -- clears list after 500 entries set to 0 to disable
 -- Edit these values

pingLst = {}
local pingPanel = nil
local pingLabel = nil
local uia = modules.game_stats.ui
pingPanel = uia:getChildById("pingPanel")
pingPanel = pingPanel or setupUI([[
Panel
  id: pingPanel
  height: 17
  anchor-bottom: parent.bottom
  anchor-left: parent.left
  anchor-right: parent.right
  Label
    id: pingLabel
    color: green
    background-color: #494949
    font: verdana-11px-rounded
    id: pingLabel
    text-auto-resize: true
    text: Ping Max: 0 ms (#0)
]], uia)

pingLabel = pingPanel.pingLabel
if pingLabel then
    local ping =  g_game.getPing()
    macro(500, 'Ping Monitor', function()
      if clearPingList > 0 and #pingLst > clearPingList then
        pingLst = {}
      end
      ping = g_game.getPing()
      if g_proxy and g_proxy.getPing() > 0 then
          ping = g_proxy.getPing()
      end
      if ping > minPing then
        table.insert(pingLst, {time = os.time(), ping = ping})
        table.sort(pingLst, function(a, b) return a.ping < b.ping end)
      end
      local color
      if ping >= 500 then
          color = 'red'
      elseif ping >= 250 or ping < 0 then
          color = 'yellow'
      else
          color = 'green'
      end
      pingLabel:setText("Ping Max: "..pingLst[#pingLst].ping.." ms (#"..(#pingLst)..')')
      pingLabel:setColor(color)
    end, leftPanel)
  table.insert(pingLst, {time = os.time(), ping = ping})
end

UI.Button("Export Pings", function()
  for i, ping in ipairs(pingLst) do
    print( os.date('%d-%m-%Y %H:%M:%S',ping.time) .. ' - '.. ping.ping)
  end
end)

-Skills Hud (STAMINA,FISHING,LVL W LEWYM DOLNYM ROGU)
local panelName = "tcSkills"
local tcSkillPanel = setupUI([[
OutlineLabel < Label
  height: 12
  background-color: #00000044
  opacity: 0.89
  text-auto-resize: true
  font: verdana-11px-rounded
  anchors.left: parent.left
  $first:
    anchors.top: parent.top
  $!first:
    anchors.top: prev.bottom

Panel
  id: skillPanel
  height: 50
  width: 50
  anchors.left: parent.left
  anchors.bottom: parent.bottom
  margin-bottom: 5
  margin-left: 5
]], modules.game_interface.getMapPanel())

local skills = {
  { name = "Fist", data = {}, id = 0, enabled = true, highlight = 'white' },
  { name = "Club", data = {}, id = 1, enabled = true },
  { name = "Sword", data = {}, id = 2, enabled = false },
  { name = "Axe", data = {}, id = 3, enabled = false },
  { name = "Distance", data = {}, id = 4, enabled = true },
  { name = "Shielding", data = {}, id = 5, enabled = true },
  { name = "Fishing", data = {}, id = 6, enabled = true },
  { name = "Crit Chance", data = {}, id = 7, enabled = false },
  { name = "Crit Damage", data = {}, id = 8, enabled = false },
  { name = "Life Leech Chance", data = {}, id = 9, enabled = false },
  { name = "Life Leech Amount", data = {}, id = 10, enabled = false },
  { name = "Mana Leech Chance", data = {}, id = 11, enabled = false },
  { name = "Mana Leech Amount", enabled = true , data = {}, id = 12, enabled = false },
  { name = "Level",  data = {}, id = 13, enabled = true, color = '#aba71e', highlight = 'orange' },
  { name = "Magic Level", data = {}, id = 14, enabled = true , color = '#4fc3f7', highlight = 'green'},
  { name = "Stamina", data = {}, id = 15, enabled = true },
}

local firstSkill, lastSkill = 1, 13
local levelSkill = 14
local magicSkill = 15
local stamSkill = 16

function calcStamina()
  local stam = stamina()
  local hours = math.floor(stam / 60)
  local minutes = stam % 60
  if minutes < 10 then
    minutes = '0' .. minutes
  end
  local percent = math.floor(100 * stam / (42 * 60))
  return hours.. ':'.. minutes, ' ('..percent..'%)'
end

function checkStamina()
  local skill = skills[stamSkill]
  if skill and skill.enabled then
    local label = tcSkillPanel[stamSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(stamSkill)
    local sta, per = calcStamina()
    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      sta,(skill.highlight or 'green'),
      per, (skill.color or 'white'),
    })
  end
end

function checkMagicLevel()
  local skill = skills[magicSkill]
  if skill.enabled then
    local label = tcSkillPanel[magicSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(magicSkill)

    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      player:getMagicLevel(),(skill.highlight or 'green'),
      ' ('..player:getMagicLevelPercent().. '%)', (skill.color or 'white'),
    })
  end
end

function checkSkill(num)
  local skill = skills[num]
  if skill and skill.enabled and skill.id then
    local label = tcSkillPanel[skill.id] or UI.createWidget("OutlineLabel", tcSkillPanel)
      label:setId(skill.id)

    local t = {
      '~ '..skill.name..': ', (skill.color or 'white'),
      player:getSkillLevel(skill.id), (skill.highlight or 'green'),
      ' ('..player:getSkillLevelPercent(skill.id).. '%)', (skill.color or 'white'),
    }
    label:setColoredText(t)
  end
end


function checkLevel()
  local skill = skills[levelSkill]
  if skill.enabled then
    local label = tcSkillPanel[levelSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(levelSkill)

    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      level(), (skill.highlight or 'green'),
      ' ('.. player:getLevelPercent().. '%)', (skill.color or 'white'),
    })
  end
end

function checkAll()
  checkLevel()
  checkMagicLevel()
  for i = firstSkill, lastSkill do
    checkSkill(i, true)
  end
  checkStamina()
  tcSkillPanel:setHeight((tcSkillPanel:getChildCount()*13))
end

local checkSkills = macro(2000, 'Check Skills', function()
  checkAll()
end)

checkAll()

-RAINBOW OUTFIT
local rainbowOutfitTime = 1

rainbowOutfit = macro(rainbowOutfitTime, "Rainbow Outfit", function ()
  rainbowOutfit()
end)

function rainbowOutfit()
    local randomColor = math.random(1,132)
    local pOutfit = player:getOutfit()
    local rainbowOutfit = { type = pOutfit.type, head = math.random(1,132), body = math.random(1,132), legs = math.random(1,132), feet = math.random(1,132), addons = pOutfit.addons}
    setOutfit(rainbowOutfit)
  return true
end
 

Napierdalacz

Odp: PORADNIK JAK POSTAWIC BOTA
« Odpowiedź #5 dnia: 15 Czerwiec 2023, 17:39:13 »
Jak te skrypty wklejać w telefonie żeby działały?
 

dont mind me

Odp: PORADNIK JAK POSTAWIC BOTA
« Odpowiedź #6 dnia: 19 Czerwiec 2023, 19:45:54 »
Cytuj

-Skills Hud (STAMINA,FISHING,LVL W LEWYM DOLNYM ROGU)
local panelName = "tcSkills"
local tcSkillPanel = setupUI([[
OutlineLabel < Label
  height: 12
  background-color: #00000044
  opacity: 0.89
  text-auto-resize: true
  font: verdana-11px-rounded
  anchors.left: parent.left
  $first:
    anchors.top: parent.top
  $!first:
    anchors.top: prev.bottom

Panel
  id: skillPanel
  height: 50
  width: 50
  anchors.left: parent.left
  anchors.bottom: parent.bottom
  margin-bottom: 5
  margin-left: 5
]], modules.game_interface.getMapPanel())

local skills = {
  { name = "Fist", data = {}, id = 0, enabled = true, highlight = 'white' },
  { name = "Club", data = {}, id = 1, enabled = true },
  { name = "Sword", data = {}, id = 2, enabled = false },
  { name = "Axe", data = {}, id = 3, enabled = false },
  { name = "Distance", data = {}, id = 4, enabled = true },
  { name = "Shielding", data = {}, id = 5, enabled = true },
  { name = "Fishing", data = {}, id = 6, enabled = true },
  { name = "Crit Chance", data = {}, id = 7, enabled = false },
  { name = "Crit Damage", data = {}, id = 8, enabled = false },
  { name = "Life Leech Chance", data = {}, id = 9, enabled = false },
  { name = "Life Leech Amount", data = {}, id = 10, enabled = false },
  { name = "Mana Leech Chance", data = {}, id = 11, enabled = false },
  { name = "Mana Leech Amount", enabled = true , data = {}, id = 12, enabled = false },
  { name = "Level",  data = {}, id = 13, enabled = true, color = '#aba71e', highlight = 'orange' },
  { name = "Magic Level", data = {}, id = 14, enabled = true , color = '#4fc3f7', highlight = 'green'},
  { name = "Stamina", data = {}, id = 15, enabled = true },
}

local firstSkill, lastSkill = 1, 13
local levelSkill = 14
local magicSkill = 15
local stamSkill = 16

function calcStamina()
  local stam = stamina()
  local hours = math.floor(stam / 60)
  local minutes = stam % 60
  if minutes < 10 then
    minutes = '0' .. minutes
  end
  local percent = math.floor(100 * stam / (42 * 60))
  return hours.. ':'.. minutes, ' ('..percent..'%)'
end

function checkStamina()
  local skill = skills[stamSkill]
  if skill and skill.enabled then
    local label = tcSkillPanel[stamSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(stamSkill)
    local sta, per = calcStamina()
    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      sta,(skill.highlight or 'green'),
      per, (skill.color or 'white'),
    })
  end
end

function checkMagicLevel()
  local skill = skills[magicSkill]
  if skill.enabled then
    local label = tcSkillPanel[magicSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(magicSkill)

    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      player:getMagicLevel(),(skill.highlight or 'green'),
      ' ('..player:getMagicLevelPercent().. '%)', (skill.color or 'white'),
    })
  end
end

function checkSkill(num)
  local skill = skills[num]
  if skill and skill.enabled and skill.id then
    local label = tcSkillPanel[skill.id] or UI.createWidget("OutlineLabel", tcSkillPanel)
      label:setId(skill.id)

    local t = {
      '~ '..skill.name..': ', (skill.color or 'white'),
      player:getSkillLevel(skill.id), (skill.highlight or 'green'),
      ' ('..player:getSkillLevelPercent(skill.id).. '%)', (skill.color or 'white'),
    }
    label:setColoredText(t)
  end
end


function checkLevel()
  local skill = skills[levelSkill]
  if skill.enabled then
    local label = tcSkillPanel[levelSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(levelSkill)

    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      level(), (skill.highlight or 'green'),
      ' ('.. player:getLevelPercent().. '%)', (skill.color or 'white'),
    })
  end
end

function checkAll()
  checkLevel()
  checkMagicLevel()
  for i = firstSkill, lastSkill do
    checkSkill(i, true)
  end
  checkStamina()
  tcSkillPanel:setHeight((tcSkillPanel:getChildCount()*13))
end

local checkSkills = macro(2000, 'Check Skills', function()
  checkAll()
end)

checkAll()



na wlasne potrzeby zmienilem zeby pokazywalo tylko stamine i lvl bo reszta niepotrzebna wiec wklejam juz gotowy, moze ktos zaoszczedzi pare minut

local panelName = "tcSkills"
local tcSkillPanel = setupUI([[
OutlineLabel < Label
  height: 12
  background-color: #00000044
  opacity: 0.89
  text-auto-resize: true
  font: verdana-11px-rounded
  anchors.left: parent.left
  $first:
    anchors.top: parent.top
  $!first:
    anchors.top: prev.bottom

Panel
  id: skillPanel
  height: 50
  width: 50
  anchors.left: parent.left
  anchors.bottom: parent.bottom
  margin-bottom: 5
  margin-left: 5
]], modules.game_interface.getMapPanel())

local skills = {
  { name = "Stamina", data = {}, id = 15, enabled = true },
  { name = "Level", data = {}, id = 13, enabled = true, color = '#aba71e', highlight = 'orange' },
}

local stamSkill = 15
local levelSkill = 13

function calcStamina()
  local stam = stamina()
  local hours = math.floor(stam / 60)
  local minutes = stam % 60
  if minutes < 10 then
    minutes = '0' .. minutes
  end
  local percent = math.floor(100 * stam / (42 * 60))
  return hours .. ':' .. minutes, ' (' .. percent .. '%)'
end

function checkStamina()
  local skill = skills[1]
  if skill.enabled then
    local label = tcSkillPanel[stamSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(stamSkill)
    label:setColoredText({
      '~ ' .. skill.name .. ': ', (skill.color or 'white'),
      calcStamina(),
    })
  end
end

function checkLevel()
  local skill = skills[2]
  if skill.enabled then
    local label = tcSkillPanel[levelSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(levelSkill)

    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      level(), (skill.highlight or 'green'),
      ' ('.. player:getLevelPercent().. '%)', (skill.color or 'white'),
    })
  end
end

function checkAll()
  checkStamina()
  checkLevel()
end

local checkSkills = macro(2000, 'Check Skills', function()
  checkAll()
end)

checkAll()









 

8441575

  • Przybysz
  • *
  • Wiadomości: 4
  • Reputacja: 0
    • Zobacz profil
Odp: PORADNIK JAK POSTAWIC BOTA
« Odpowiedź #7 dnia: 28 Wrzesień 2023, 22:18:51 »
Cytuj

-Skills Hud (STAMINA,FISHING,LVL W LEWYM DOLNYM ROGU)
local panelName = "tcSkills"
local tcSkillPanel = setupUI([[
OutlineLabel < Label
  height: 12
  background-color: #00000044
  opacity: 0.89
  text-auto-resize: true
  font: verdana-11px-rounded
  anchors.left: parent.left
  $first:
    anchors.top: parent.top
  $!first:
    anchors.top: prev.bottom

Panel
  id: skillPanel
  height: 50
  width: 50
  anchors.left: parent.left
  anchors.bottom: parent.bottom
  margin-bottom: 5
  margin-left: 5
]], modules.game_interface.getMapPanel())

local skills = {
  { name = "Fist", data = {}, id = 0, enabled = true, highlight = 'white' },
  { name = "Club", data = {}, id = 1, enabled = true },
  { name = "Sword", data = {}, id = 2, enabled = false },
  { name = "Axe", data = {}, id = 3, enabled = false },
  { name = "Distance", data = {}, id = 4, enabled = true },
  { name = "Shielding", data = {}, id = 5, enabled = true },
  { name = "Fishing", data = {}, id = 6, enabled = true },
  { name = "Crit Chance", data = {}, id = 7, enabled = false },
  { name = "Crit Damage", data = {}, id = 8, enabled = false },
  { name = "Life Leech Chance", data = {}, id = 9, enabled = false },
  { name = "Life Leech Amount", data = {}, id = 10, enabled = false },
  { name = "Mana Leech Chance", data = {}, id = 11, enabled = false },
  { name = "Mana Leech Amount", enabled = true , data = {}, id = 12, enabled = false },
  { name = "Level",  data = {}, id = 13, enabled = true, color = '#aba71e', highlight = 'orange' },
  { name = "Magic Level", data = {}, id = 14, enabled = true , color = '#4fc3f7', highlight = 'green'},
  { name = "Stamina", data = {}, id = 15, enabled = true },
}

local firstSkill, lastSkill = 1, 13
local levelSkill = 14
local magicSkill = 15
local stamSkill = 16

function calcStamina()
  local stam = stamina()
  local hours = math.floor(stam / 60)
  local minutes = stam % 60
  if minutes < 10 then
    minutes = '0' .. minutes
  end
  local percent = math.floor(100 * stam / (42 * 60))
  return hours.. ':'.. minutes, ' ('..percent..'%)'
end

function checkStamina()
  local skill = skills[stamSkill]
  if skill and skill.enabled then
    local label = tcSkillPanel[stamSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(stamSkill)
    local sta, per = calcStamina()
    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      sta,(skill.highlight or 'green'),
      per, (skill.color or 'white'),
    })
  end
end

function checkMagicLevel()
  local skill = skills[magicSkill]
  if skill.enabled then
    local label = tcSkillPanel[magicSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(magicSkill)

    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      player:getMagicLevel(),(skill.highlight or 'green'),
      ' ('..player:getMagicLevelPercent().. '%)', (skill.color or 'white'),
    })
  end
end

function checkSkill(num)
  local skill = skills[num]
  if skill and skill.enabled and skill.id then
    local label = tcSkillPanel[skill.id] or UI.createWidget("OutlineLabel", tcSkillPanel)
      label:setId(skill.id)

    local t = {
      '~ '..skill.name..': ', (skill.color or 'white'),
      player:getSkillLevel(skill.id), (skill.highlight or 'green'),
      ' ('..player:getSkillLevelPercent(skill.id).. '%)', (skill.color or 'white'),
    }
    label:setColoredText(t)
  end
end


function checkLevel()
  local skill = skills[levelSkill]
  if skill.enabled then
    local label = tcSkillPanel[levelSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(levelSkill)

    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      level(), (skill.highlight or 'green'),
      ' ('.. player:getLevelPercent().. '%)', (skill.color or 'white'),
    })
  end
end

function checkAll()
  checkLevel()
  checkMagicLevel()
  for i = firstSkill, lastSkill do
    checkSkill(i, true)
  end
  checkStamina()
  tcSkillPanel:setHeight((tcSkillPanel:getChildCount()*13))
end

local checkSkills = macro(2000, 'Check Skills', function()
  checkAll()
end)

checkAll()



na wlasne potrzeby zmienilem zeby pokazywalo tylko stamine i lvl bo reszta niepotrzebna wiec wklejam juz gotowy, moze ktos zaoszczedzi pare minut

local panelName = "tcSkills"
local tcSkillPanel = setupUI([[
OutlineLabel < Label
  height: 12
  background-color: #00000044
  opacity: 0.89
  text-auto-resize: true
  font: verdana-11px-rounded
  anchors.left: parent.left
  $first:
    anchors.top: parent.top
  $!first:
    anchors.top: prev.bottom

Panel
  id: skillPanel
  height: 50
  width: 50
  anchors.left: parent.left
  anchors.bottom: parent.bottom
  margin-bottom: 5
  margin-left: 5
]], modules.game_interface.getMapPanel())

local skills = {
  { name = "Stamina", data = {}, id = 15, enabled = true },
  { name = "Level", data = {}, id = 13, enabled = true, color = '#aba71e', highlight = 'orange' },
}

local stamSkill = 15
local levelSkill = 13

function calcStamina()
  local stam = stamina()
  local hours = math.floor(stam / 60)
  local minutes = stam % 60
  if minutes < 10 then
    minutes = '0' .. minutes
  end
  local percent = math.floor(100 * stam / (42 * 60))
  return hours .. ':' .. minutes, ' (' .. percent .. '%)'
end

function checkStamina()
  local skill = skills[1]
  if skill.enabled then
    local label = tcSkillPanel[stamSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(stamSkill)
    label:setColoredText({
      '~ ' .. skill.name .. ': ', (skill.color or 'white'),
      calcStamina(),
    })
  end
end

function checkLevel()
  local skill = skills[2]
  if skill.enabled then
    local label = tcSkillPanel[levelSkill] or UI.createWidget("OutlineLabel", tcSkillPanel)
    label:setId(levelSkill)

    label:setColoredText({
      '~ '..skill.name..': ', (skill.color or 'white'),
      level(), (skill.highlight or 'green'),
      ' ('.. player:getLevelPercent().. '%)', (skill.color or 'white'),
    })
  end
end

function checkAll()
  checkStamina()
  checkLevel()
end

local checkSkills = macro(2000, 'Check Skills', function()
  checkAll()
end)

checkAll()

Czy jest możliwe by to moglo byc gdzie indziej? Np prawy gorny rog? Lub na górze po środku? Mam clienta na android i z lewej strony mam ikony funkcyjne(look,attack,follow,use)