[Rifbot Tutorial] Walker on Label

 In this tutorial you will learn how to:

  • execute action on label
  • use infinite loop while true do
  • use finite loop for i = 1, 10 do

required Rifbot 1.95 release 2021-09-30 15:35 or later

1. This is sample waypoints to add it right click on walker > edit

Rifbot Tutorial

 

2. Now we need to lua function for catching label signals. You can add it using Options > Lua scripts > New Script

Rifbot Tutorial

 

3. First we have label start, let's just close all backpacks and open main backpack.

Rifbot Tutorial

 

 4. When lua finish will continue walker. Label drop, now you learn how to do actions until they truly finish. We will drop items from backpack to ground.

Rifbot Tutorial

5. Last one is label dance where you will learn how to use for loops. Let's dance a little bit.

Rifbot Tutorial

All functions with they arguments are documented in Rifbot Lib.lua inside bot folder. 

That's all, if you have any questions post it below.

p.s. Images was used to prevent copying code :)

92 comments:

  1. Jak korzystac z funkcji "Container.MoveItemToContainer(containerFrom, slotFrom, containerTo, slotTo, itemid, count, delay)" Wiem ze jest to opisane ale chce aby przenosilo mi item o ID 3264 z worka na ziemi do mojego BP. Proboje na rozne strony lecz nie chce mi ta funkcja dzialac. Prosze o pomoc

    ReplyDelete
    Replies
    1. Nie będę ukrywał, nie jest to proste. Musisz najpierw przeszukać wszystkie plecaki inne niż ten docelowy, do którego będziesz podnosił i z nich wybrać id 3264 a potem wrzucić do np pierwszego otwartego plecaka (index: 0).

      Najprościej będzie użyć już gotowego scriptu na Auto Looting tylko config zmienić i będzie działać. Jest tam też pokazana mechanika zbierania przedmiotów więc możesz się podszkolić.

      https://github.com/Ascerr/Lua-Scripts/blob/master/Auto%20Looting.lua

      Delete
  2. Da sie zrobic Lua ktory przechodzi miedzy wyznaczonymi koordynatami? zrobilem najprostrzym sposobem i postac sie ruszy ale skrypt wywala odrazu. To ja czy bot?

    ReplyDelete
    Replies
    1. Nie bardzo wiem o co chodzi z tym przechodzeniem, wytłumacz to pomogę. A jeżeli chodzi i wywalnie scriptu to to jeżeli nie ma błędu na czerwono to brak jest w kodzie Module.New, który zapętla script.

      Delete
  3. Acer,
    is it possible to make a hotkey while killing the monsters pull the bodies down below me?

    ReplyDelete
    Replies
    1. others question, I play a server where there is no exaust in the spells, is there any variable to check utito tempo active?

      Delete
    2. 1. To drag items these script: https://github.com/Ascerr/Lua-Scripts/blob/master/Drag%20Item%20under%20Your%20Character.lua

      2. Walker -> settings -> magicshooter spell delay
      Checking utito tempo depends on server, if you use this spell and under equipment appear some icon like hasted or manashield then go with this lua function: Self.isBuffed()

      Delete
    3. Helo,
      i see this script (https://github.com/Ascerr/Lua-Scripts/blob/master/Drag%20Item%20under%20Your%20Character.lua).

      My real intention is to combine this script with another, I tried but I couldn't.
      (https://github.com/Ascerr/Lua-Scripts/blob/master/Alert%20on%20loot%20message.lua)

      If it were possible, I would like a script that, when dropping the loot listed, would move all the surrounding bodies (1sqm) below the player

      Delete
    4. after moving the bodies below the player, if it could also open it would be great

      Thx Again

      Delete
    5. It's thief script, you need to create it for yourself.

      Delete
    6. Could you at least give me a tip on how to combine 2 functions in the same script?
      I can use the first function to check the loot, but I can't combine it with the second function to pull the bodies
      thx

      Delete
    7. local config = {
      items = {3031, 3492} -- items to drag
      }

      function proxy(messages)
      for i, msg in ipairs(messages) do
      if string.find(string.lower(msg.message), "loot") then
      local pos = Self.Position()
      for x = -1, 1 do
      for y = -1, 1 do
      local map = Map.GetTopMoveItem(pos.x + x, pos.y + y, pos.z)
      if (pos.x ~= 0 or pos.y ~= 0) and table.find(config.items, map.id) then
      Map.MoveItem(pos.x + x, pos.y + y, pos.z, pos.x, pos.y, pos.z, map.id, map.count, 0) -- 0 is delay in ms.
      break
      end
      end
      end
      end
      end
      end
      Proxy.TextNew("proxy")

      Delete
  4. Can you help me with a script to skip a sertain waypoint if player on screen?

    ReplyDelete
    Replies
    1. It's simple:

      node: 33434, 32344, 7
      goto: skip, players(7) >= 1
      node: 33434, 32344, 7
      node: 33434, 32344, 7
      node: 33434, 32344, 7
      skip
      node: 33434, 32344, 7

      Delete
  5. Is there anyway to get the cavebot to just rightclick on some sqms? The only solution I've found is editing sewer waypoints but they are malfunctioning from time to time

    ReplyDelete
  6. you can use one line lua script in walker:

    lua: Map.UseItem(32323, 32211, 7, 0, 0, 0)

    ReplyDelete
    Replies
    1. So I add all the nodes into the script, all the seperate ones?

      Delete
    2. Explain me your problem in game you try to solve.

      Delete
    3. I want my character to press bushes, in this case blueberry bushes

      Delete
    4. This line i post you before will works. If you want only convert bush with moveable berries then use line once per bush other way you need to use it x4 times but with wait 500-1000 before each usage.

      Delete
    5. So I have to add every bush I want the bot to click in the lua script before I execute it or can I just add waypoints in the cavebot by going to advanced and then pressing the lua script from there?

      Delete
  7. Add wpt near bush first then add lua script with coordines of this bush.

    ReplyDelete
  8. Sorry for the question, but how can I turn off a Lua script in "cavebot" when character leaves the cave?

    I've seen this but don't know how to use it or where to put it


    function Rifbot.ExecuteScript(script, onOff)
    if onOff == nil then
    onOff = false
    end
    return executeScript(script, onOff)
    end

    Thx

    ReplyDelete
    Replies
    1. Raw walker code:

      lua: Rifbot.KillScript("script name")

      Delete
  9. Tell me server where you play, i'll check it.

    ReplyDelete
  10. It's simple:

    hunt
    goto: hunt, cap > 100
    wait: 999999

    ReplyDelete
  11. I see you don't understood how bot works, you need spent some time alone with 3 lines of code i posted you.

    ReplyDelete
  12. On server where are depot box, you can type inside deposit/withdraw window ID of depot box.

    ReplyDelete
  13. I don't think so but you can search Github lua scripts database for some example and modify it for your needs:
    https://github.com/Ascerr/Lua-Scripts

    ReplyDelete
  14. Hello,

    Put in depot different ID of backpack than backpack with runes, example blue backpack for depositing and standard brown for runes.

    ReplyDelete
  15. Use standard: Should Attack Me and also lua script to on/off targeting if player but need add check if also monsters are on screen with example 1 or 2 sqm range near you. I don't have currently time to create this one.

    ReplyDelete
  16. Try one of these scripts:
    1. https://github.com/Ascerr/Lua-Scripts/blob/master/Attack%20Monster%20with%20most%20HP.lua
    2. https://github.com/Ascerr/Lua-Scripts/blob/master/Prioritize%20Demonic%20or%20Ranged%20Mobs.lua
    3. https://github.com/Ascerr/Lua-Scripts/blob/master/Attack%20Closest%20Monster.lua

    ReplyDelete
  17. rifbot didnt workes on tibiascape?

    ReplyDelete
    Replies
    1. I don't support this game game client.

      Delete
    2. any idea of when u will support tibia scape?

      Delete
    3. Different architecture of game client.

      Delete
  18. Jak ustawic supply check, ze np jak mniej niz 50 mana potow to idzie na refila do dp

    ReplyDelete
    Replies
    1. Pod jaki serwer z hotkeyami czy bez?

      Delete
    2. Na kasterie, ze wszystkim

      Delete
    3. W sensie na ten moment najważniejsze dla mnie jest ogarnąć jak zrobić ten label "check supply" i jak jest zbyt mało to idzie do labelu "refil" i tam wayponciki na refil są.

      Delete
    4. Tam z tego co kojarze to manasy się stakują więc możesz zrobić taki kod do walkera:

      goto: refil, item(8309) < 50

      Delete
    5. Tak stakują się. Dobra sprobuje, dzieki!

      Delete
  19. Co zrobic zeby po reconnectcie resetowal mainbackpack?
    i drugi skrypt zeby zawsze trzymal mainbp otwarty gdyby sie zamknal przez prszypadek

    ReplyDelete
    Replies
    1. Najlepiej użyć lua scriptu lub w walkerze co jakiś czas ustawić restart bps

      https://github.com/Ascerr/Lua-Scripts/blob/master/Reconnect%20Backpacks.lua

      Delete
    2. potrzebuje skryptu ktory bedzie rzucal 20 rubinow do pozycji x = 33266, y = 31829, z = 10

      Delete
    3. Siema

      W walkerze dodaj sobie taki kod, tylko wpisz dobre itemid dla rubinów. Ważne musza być na jedej kratce w plecaku bo jak masz je np 10 i 10 to wyrzuci tylko 10.

      lua: Self.DropItem(33266, 31829, 10, itemid, 20, 0)

      Delete
    4. A jesli mam dajmy na to 83 na jednym slocie to rzuci 20 tylko ?

      Delete
    5. Wszystko dziala! dziekuje pieknie !

      Delete
  20. Potrzebowałbym skrypt który po reloginie resetuje bp. Za kazdym razem po reloginie jak otwiera mi mooba to wyrzuca wszystkie zlootowane itemy do niego zamiast zbierac do bp, straszne to jest.

    ReplyDelete
    Replies
    1. Użyj tego lua:
      https://github.com/Ascerr/Lua-Scripts/blob/master/Reconnect%20Backpacks.lua

      Delete
  21. Teraz taka kwiestia, idzie postac na refil jak jest dajmy na to 100 manasow albo 50 sd, ale ja nie wiem ile czego jest, co zrobic zeby kupowal te przedmioty do okreslonej ilosci. np manasy do 500 i sd do 400

    ReplyDelete
    Replies
    1. Jeżeli grasz na Kasterii i tam są stakujące się runy i potiony to wtedy możesz użyć tego kodu do kupowania MF i uhów w walkerze:


      buy mf
      goto: end mf, item(8309) >= 1800
      lua: Self.Say("instant buy " .. 1800 - Self.ItemCount(8309) .. " mana fluids")
      wait: 1000
      goto: buy mf, item(8309) <= 1800
      wait: 1000
      end mf
      buy uh
      goto: end uh, item(3160) >= 450
      lua: Self.Say("instant buy " .. 450 - Self.ItemCount(3160) .. " ultimate healing runes")
      wait: 1000
      goto: buy mf, item(3160) <= 450
      end uh

      Delete
    2. dzięki wielkie, teraz najwazniejsze ctrl +p zatrzymuje calego bota, jest taka opcja zeby zatrzymac tylko targeting cavebot i looter ?

      Delete
    3. Jeżeli potrzebujesz tego pod klawisz to ten script zapisz sobie pod nazwą: onoff cavebot

      potem możesz go wywołać za pomocą shortkeya: EXECUTE onoff cavebot

      lua: https://github.com/Ascerr/Lua-Scripts/blob/master/%5Bon%20Shortkey%5D%20On%20Off%20Cavebot.lua

      Delete
  22. Masz jakąś radę na stalkery? Idzie mi na full afk na resp, a jak otocza mnie stalkery to bot sie scina bo ich nie widzi i wyrzuca mi wpt z refila na normalne, pozniej nie moze sie odnalezc i tak stoi

    ReplyDelete
    Replies
    1. Siema

      Zrobiłem script aby postać używa runy obszarowej na sobie gdy dostanie hita od stalkera:
      https://github.com/Ascerr/Lua-Scripts/blob/master/Use%20Area%20Rune%20on%20you%20if%20dmg%20from%20stalker.lua

      Delete
    2. O stary, kozacki ten skrypt, szacuneczek na maxa. Dziekuje

      Delete
  23. Przeszkukalem kawal stron i bota, ale nie moge znalezc przeciagania dzwigni na cavebocie

    ReplyDelete
    Replies
    1. Zwykły action używania mapy w bocie, możesz zrobić oczywiście check czy już otwarta:

      lua: Map.UseItem(x, y, z, itemid, 1, 0)

      Delete
  24. Teraz misja na wyższym levelu. Kasteria. Preye. Czy da sie zrobic cos takiego ze mam preya na jakiegos mooba, i trwa on 2h, chcialbym zeby bot przerollowal go po 1h 59m. Tak zeby nie stracic wczesniejszych wylosowanych preyow. Najlepiej byloby gdyby potrafil przelosowac jeszcze mooba znow na tego ktorego potrzebuje, ale to juz chyba level hard.

    ReplyDelete
    Replies
    1. Totalnie nie mam pojęcia o co chodzi z preyami także nie pomogę.

      Delete
  25. nie dziala mi ten skryp, error

    --[[
    Script Name: Stop cavebot and logout if no mf
    Description: This script will check for green message about using vials. If low amount then will stop cavebot and wait for lost pz to logout.
    Required: Gameclient need to send green message about vials.
    Author: Ascer - example
    ]]

    local config = {
    vialMsg = "Using one of (.+) vials...", -- msg about vials, (.+) -> is place for detecting vials number
    amount = 10 -- when mfs below this amount do action.
    }

    -- DON'T EDIT BELOW THIS LINE
    local currentVials, logout = -1, false

    --> read special messages in game
    function proxyText(messages)
    for i, msg in ipairs(messages) do
    local vials = string.match(msg.message, config.vialMsg)
    if vials ~= nil then
    currentVials = tonumber(vials)
    end
    end
    end
    Proxy.TextNew("proxyText")

    Module.New("Stop cavebot and logout if no mf", function()
    if Self.isConnected() then
    if logout then
    if Walker.isEnabled() then Walker.Enabled(false) end
    if Looter.isEnabled() then Looter.Enabled(false) end
    if not Self.isInFight() then
    Self.Logout()
    else
    print("Waiting for pz lost to logout..")
    end
    end
    if currentVials ~= -1 and currentVials <= config.amount then
    logout = true
    end
    else
    if logout then
    Rifbot.setCheckboxState("runemaker", "relogin after", false) -- disable here relogin from runemaker
    end
    end
    end)

    ReplyDelete
    Replies
    1. Napisz coś więcej, script po wczytaniu nie pokazuje error.

      Delete
  26. teraz jak w tym nawiasie (.+) wpisalem server log to moge uruhomic skrypt, ale wziac gdy schodzi ponizej 10 vials to zero reakcji...

    ReplyDelete
    Replies
    1. Na jakim serwerze grasz? bo np. na WeAreDragons jest inna wiadomość dla viali: "Using one of (.+) vial of mfs..."

      Delete
  27. 10:39 Using one of 20 vials...

    ReplyDelete
  28. Napiszesz co dokladnie i gdzie musze wpisac? Moze robie cos zle..

    ReplyDelete
    Replies
    1. Działa doskonale na Realerze, sprawdzałem teraz. Upewnij się, że inny lua script nie ma aktywnej funkcji proxy bo jest jednowątkowa i może ją jako pierwszy używac.

      Delete
  29. couldnt find thje correct place to write! consider updating for tibiascape?

    ReplyDelete
    Replies
    1. Different game client, not compatible with my bot.

      Delete
  30. potrzebuję skrypt,który na labelu (check) sprawdzi czy mam przy sobie więcej niż (ilość) lub mniej niż (ilość) jeżeli mniej to idzie do labela (hunt) jeżeli więcej idzie do labela (refil). Już próbowałem przerabiać kombinować i nie mogę ogarnąć tego.. ciągle jakieś błędy

    ReplyDelete
    Replies
    1. Hej,

      Najlepiej zrobić to walkerem:

      goto: refil, item(3031) > 1000
      goto: hunt

      Tutaj lua script, jeżeli nie chcesz walkera:

      function label(name)
      if name == "check" then
      if Self.ItemCount(3031) >= 1000 then --> check if more than 1000 gold coins go to refil else back to hunt
      Walker.Goto("refil")
      else
      Walker.Goto("hunt")
      end
      end
      end
      Walker.onLabel("label")

      Delete
  31. https://github.com/Ascerr/Lua-Scripts/blob/master/Wear%20Life%20Ring%20if%20Low%20Mana.lua

    Próbowałem modyfikować na własną rękę, ale nie ogarnąłem. Mianowicie chodzi o zdejmowanie ringa, żeby wrzucał do głównego bp. Bo są sytuacje że jak są otwarte zwłoki potworka to wrzuca do niego ringa przy zdejmowaniu. Prosiłbym o pomoc jeżeli to możliwe 🙏🏻🙏🏻

    ReplyDelete
    Replies
    1. Bot sprawdza od indexu: 0 otwarte plecaki i wrzuca do pierwszego w którym znajdzie miejsce, więc pewnie zapełniają Ci się główne plecaki lub otwierasz najpierw deda a potem plecak. Możesz linijkę 34 podmienić na tą wtedy będzie ładował do pierwszego plecaka i pierwszego slota (jak masz tam bp to przestaw)

      Self.DequipItem(SLOT_RING, 0, 0)

      Delete
  32. siemka, co zrobic zeby przechodzil na walkerze po fieldach ?

    ReplyDelete
    Replies
    1. walker -> settings -> pathable ids -> dodajesz idki ogni z ziemi.

      Delete
    2. Ogarnalem juz to, dzieki.

      Delete
  33. Co zrobic zeby utrzymywal dystans od potworka 2 kratki w targetingu? jak utrzymuje 3 to nie bije z wanda i to jest mega slabe.

    ReplyDelete
    Replies
    1. Mega słaby to jest ten wand i ja bym go zmienił bo utrzymywanie 2sqm nie będzie działać dobrze bo będzie Cię monster i tak atakował. Możesz jednak tym lua scriptem zadziałać:
      https://github.com/Ascerr/Lua-Scripts/blob/master/Keep%202sqm%20from%20Defencer%20monster.lua

      Delete
  34. Mam full afk na elf fortess, u samej gory sáquestowe skrzynki, co bym nie zrobil to jak palladynem zabije elfa po drugiej stronie bot za kazdym razem probuje przejsc przez ta skrzynke ale po tej skrzynce nie mozna chodzi i wtedy sie scina,i lata po wszystkich waypointach, co zrobic zeby omijal te skrzynki ? usunalem je nawet z walker -> settings -> pathable ids -> i tez nie pomoglo

    ReplyDelete
    Replies
    1. Dodaj je do non pathable ID a potem zapisz ustawienia

      Delete
    2. dodalem do non pathable, zobaczymy

      Delete
  35. Ascer, on elderan.online when i open a corpse and inside this body have a "lootbag" my rifbot dont open this bag, i think the reason is because its a edited bag, not the normal "bag", can u fix that please? or make one lua to fix this on elderan, idk, tyy

    ReplyDelete
    Replies
    1. I'll verify this but need to create character on this new server.

      Delete
    2. Works, just tested on Orcs. Maybe you have old bot version.

      Delete
    3. its working on hand mode? here its working only on cavebot afk

      Delete
    4. It's not implemented, will be done with next bot update.

      Delete