Forums
Guild Storage users - Printable Version

+- Forums (https://uaro.kiev.ua/forum)
+-- Forum: uaRO (https://uaro.kiev.ua/forum/forumdisplay.php?fid=1)
+--- Forum: uaOpenKore (https://uaro.kiev.ua/forum/forumdisplay.php?fid=43)
+---- Forum: Macros (https://uaro.kiev.ua/forum/forumdisplay.php?fid=44)
+---- Thread: Guild Storage users (/showthread.php?tid=52)



Guild Storage users - Sergio - 10-05-2024

Carefully! Use all the recommendations from the main thread
Swarm of OpenKore bots (Рой ботов)
Got it! I'll review all the posts to ensure I capture the complete configuration.


On our server, there are commands @storage and @gstorage. These commands allow you to access storages anywhere without using NPCs.

@storage - opens the regular storage for the account.
@gstorage - opens the guild storage - this allows organizing a bot swarm using OpenKore, where they continuously exchange loot.

So, one bot can check for consumables and restock as needed, another can use loot for production, and all others, like ants, gather everything dropped for them.

However, there's a significant problem in this scheme: the Guild Storage is a single-user box. When one bot opens it, others start waiting for the transaction to finish, creating competition. To minimize possible delays, I adjust OpenKore parameters. If you see different values for a parameter in different messages, trust the later one!

I've placed macros for the swarm in our code repository:

https://github.com/uaOpenKore/uOKfiles/tree/main/macros/GSuser

Here's an explanation of some macros:
macros/GSuser/macro-gstorage.txt
Code:
automacro _GStorage {
  timeout 2
  inventory "Meat" < 11, "Butterfly Wing" < 2, "Fly Wing" < 3, "Awakening Potion" < 2, "White Potion" < 3, "Blue Potion" < 3
  call {
    do autostorage
   }
 }
This macro ensures inventory restocking of necessary consumables. Example is redundant; only Meat, White Potions, and Blue Potions are necessary. Adapt others as needed.
Code:
automacro _GS_close {
  timeout 60
  call {
   do storage close
  }
 }
This macro is necessary in case OpenKore fails to close the storage! Lag can occur, causing other bots to hang and unable to continue working.

macros/GSuser/macro-allToTown.txt
Code:
automacro _allToTown {
 hp < 33%
 timeout 60
 call {
   do bus all tele 2
   pause 3
   do bus all tele 2
  }
This macro sends all party members back to town when HP is below 33%, protecting characters from losing experience.

macros/GSuser/macro-idied.txt
Code:
#macro work only with busCommand plugin!
automacro _GSidied {
  timeout 60
  status dead
  call {
    do bus all tele 2
   }
 }
This macro, requiring the busCommand plugin, teleports all party members to town if a character dies.

macros/GSuser/macro-aLoot.txt
Code:
automacro autoLoot {
  console /You are now in the game/
  timeout 600
  delay 4
  call {
    do c @autoloot
   }
 }
This macro turns on @autoloot for the bot.

macros/GSuser/example-oneStep.txt
This is a complex macro that forces the bot to step if its coordinates don't change within a specified time. It serves as protection against unexplained glitches.
Code:
doCommand macro _oneStep {
  notOnAction attack, sitAuto, move, mapRoute, follow
#  notInTown 1
  notWhileSitting 1
  whenFollowing 0
  timeout 60
 }
This code should be placed in config.txt, where the conditions for launching the "stepping" macro are described.

Code:
automacro _var_oldStp {
 var oldStp unset
 timeout 500
 call {
  $oldStp = 0
 }
}
This automacro only triggers when OpenKore starts to set the stepping parameter.

Code:
macro _oneStep {
   if ( $oldPos == $.pos ) {
     if ($oldStp == 0 ) {
       do north
       do north
       $oldStp = 1
      }
   if ($oldStp == 1 ) {
       do west
       do west
       $oldStp = 2
      }
   if ($oldStp == 2 ) {
       do south
       do south
       $oldStp = 3
      }
    if ($oldStp == 3 ) {
       do east
       do east
       $oldStp = 0
      }
    }
   $oldPos = $.pos
}
This macro makes the bot walk in a square pattern. If the path is restricted, the bot should exit in some direction.


RE: Guild Storage users - Sergio - 10-05-2024

Guild Storage users
На нашем сервере доступны команды @storage и @gstorage
Эти команды позволяют открыть хранилища в любом месте, без использования НПЦ.
@storage – открывает обычную кафру для аккаунта
@gstorage – открывает хранилище гильдии – таким образом можно организовать Рой ботов OpenKore, которые будут нон-стоп обмениваться лутом.
Т.е. один бот может проверять наличие расходников и пополнять по необходимости, другой бот может использовать лут в производстве, а все остальные, как в муравейнике – стягивать всё что им дропнуло.
Только в этой схеме есть одна большая проблема: Guild Storage – это однопользовательский ящик. Когда один открыл его, то остальные начинают ожидать окончания транзакции. И в этом случае возникает конкуренция. Что бы минимизировать возможные задержки, я меняю параметры OpenKore, но если в разных сообщениях увидите, что я привожу разные значения какого-либо параметра, то доверяйте более позднему сообщению!
 
Макросы для Роя я разместил в нашем репозитарии кода:
https://github.com/uaOpenKore/uOKfiles/tree/main/macros/GSuser
 
 
macros/GSuser/macro-gstorage.txt
Code:
automacro _GStorage {
  timeout 2
  inventory "Meat" < 11, "Butterfly Wing" < 2, "Fly Wing" < 3, "Awakening Potion" < 2, "White Potion" < 3, "Blue Potion" < 3
  call {
    do autostorage
   }
 }

Этот макрос заставляет пополнить инвентарь необходимым расходником, который быстро заканчивается. Таким образом пример избыточен, в нем необходим только Мясо, Вайт Пот и Блу Пот. Остальное будет перегружать макрос – адоптируйте под себя
 
Code:
automacro _GS_close {
  timeout 60
  call {
   do storage close
  }
 }

Этот макрос необходим на случай, если OpenKore не закрыла хранилище! Бывают лаги, то остальные боты залипают и не могут работать дальше
 
macros/GSuser/macro-allToTown.txt
Code:
automacro _allToTown {
 hp < 33%
 timeout 60
 call {
   do bus all tele 2
   pause 3
   do bus all tele 2
  }
 }

Макрос заставляет всех членов пати вернутся в Таун – используйте для защиты чаров от потери экспы.
 
macros/GSuser/macro-idied.txt
Code:
#macro work only with busCommand plugin!
automacro _GSidied {
  timeout 60
  status dead
  call {
    do bus all tele 2
   }
 }

Этот макрос предназначен для ботов в пати, требуется плагин busCommand. Если чар умер, то марос отдаст команду телепортироваться в таун всем членам пати.
 
macros/GSuser/macro-aLoot.txt
Code:
automacro autoLoot {
  console /You are now in the game/
  timeout 600
  delay 4
  call {
    do c @autoloot
   }
 }

Макрос включает @autoloot у бота
 
macros/GSuser/example-oneStep.txt
Это сложный макрос, который заставляет бота пошагать. В том случае, если его координаты не меняются заданное время. Защита от непонятных заглючиваний.
(Очень бедные возможности макрос-языка у OpenKore, по этому приходится иногода сильно усложнять.)
 
Code:
doCommand macro _oneStep {
  notOnAction attack, sitAuto, move, mapRoute, follow
#  notInTown 1
  notWhileSitting 1
  whenFollowing 0
  timeout 60
 }

Этот код нужно разместить в config.txt – здесь описаны условия запуска «шагающего» макроса.
 
Code:
automacro _var_oldStp {
 var oldStp unset
 timeout 500
 call {
  $oldStp = 0
 }
}

Этот автомакрос срабатывает только при запуске OpenKore, для того, чтобы задать параметр шага.
 
Code:
macro _oneStep {
   if ( $oldPos == $.pos ) {
     if ($oldStp == 0 ) {
       do north
       do north
       $oldStp = 1
      }
   if ($oldStp == 1 ) {
       do west
       do west
       $oldStp = 2
      }
   if ($oldStp == 2 ) {
       do south
       do south
       $oldStp = 3
      }
    if ($oldStp == 3 ) {
       do east
       do east
       $oldStp = 0
      }
    }
   $oldPos = $.pos
}

Сам макрос заставляет бота ходить по квадрату. На случай, если проход ограничен, то бот должен выйти в какуюнибудь сторону.


RE: Guild Storage users - Sergio - 10-05-2024

All members of the swarm should use GStorage Fix: 
https://uaro.kiev.ua/forum/showthread.php?tid=32

For all members of the swarm, the following should be disabled: autosell, autobuy, and the bayAuto functions should be converted to getAuto! 
Refer to the example in GStrader:
https://uaro.kiev.ua/forum/showthread.php?tid=37

Timeouts.txt parameters: 
Code:
ai_storageAuto 0.1 
ai_storageAuto_giveup 0.25 
macro_delay 0.01

Example items_control.txt (remove anything not used by the bot for storage): 
Code:
all 0 1 0 
Awakening Potion 5 1 0 
Butterfly Wing 6 1 0 
Fly Wing 10 1 0
Meat 30 1 0
White Potion 10 1 0

Все члены Роя должны использовать GStorage Fix:
https://uaro.kiev.ua/forum/showthread.php?tid=32
 
У всех членов Роя должны быть выключены: autosell, autobuy, функции bayAuto нужно переделать в getAuto!
Пример смотрите в GStrader: https://uaro.kiev.ua/forum/showthread.php?tid=37

Параметры для timeouts.txt:
Code:
ai_storageAuto 0.1
ai_storageAuto_giveup .25
macro_delay .01

Пример items_control.txt (всё что не использует бот – удалите, что бы складировал):
Code:
all 0 1 0
Awakening Potion 5 1 0
Butterfly Wing 6 1 0
Fly Wing 10 1 0
Meat 30 1 0
White Potion 10 1 0