Yoko
http://forum.yoko.com.ua/

Скрипт на Lumberjacking
http://forum.yoko.com.ua/viewtopic.php?f=17&t=17663
Page 4 of 4

Author:  Hydromarine [ 2016-05-18 12:14:49 ]
Post subject:  Re: Скрипт на Lumberjacking

Все!!! Работает идеально, по крайней мере рубит четко, до сброса и т.д. еще не доходил.
Еще раз огромнейшее спасибо, от души жму руку!

Author:  Hydromarine [ 2016-05-31 17:14:29 ]
Post subject:  Re: Скрипт на Lumberjacking

И снова доброго вечера.
Переделываю этот скрипт на копку по кочкам вроде пока все идет ок, но столкнулся с блоком на разгрузку.
Code:
sub TakePut()
   var box = "0x561955FA", iron = "0x1BDD", i, r, s, info, food, quantity
   dim Reg[4]
   Reg[0] = "0x0F7A 10 Black Pearl"
   Reg[1] = "0x0F7B 10 Blood Moss"
   Reg[2] = "0x0F86 10 Mandrake Roots" 
   Reg[3] = "0x103B 5 Food"
   uo.opencontainer(box, 500)
   while uo.findtype(iron, -1, "my")
      uo.moveitem("finditem", 0, box)
      wait(2000)
   wend
   for i = 0 to 3
      r = getword(Reg[i], 1)
      s = val(getword(Reg[i], 2))
      if not uo.findtype(r, -1, "my") then
         if not uo.findtype(r, -1, box) then
            info = getword(Reg[i], 3)
            uo.print("not enough" + info)
         else
            Save()
            uo.moveitem("finditem", s, "backpack")
            wait(2000)
         end if
      else
         if uo.getquantity("finditem") < s then
            quantity = s - uo.getquantity("finditem")
            if not uo.findtype(r, -1, box) then
               info = getword(Reg[i], 3)
               uo.print("not enough" + info)
            else
               Save()
               uo.moveitem("finditem", quantity, "backpack")
               wait(2000)
            end if
         end if
      end if
   next
   for food = 1 to 5
      uo.usetype("0x09D0")
      wait(500)
   next
end sub


Как тут сделать либо массив либо что-то еще куда можно забить типы руды которую скидывать в сундук?
Можно конечно налепить переменных и напилить кусков кода для каждой из них типа того:

Code:
var box = "0x561955FA", iron = "0x1BDD", magma = "0x19B8", i, r, s, info, food, quantity
   dim Reg[4]
   Reg[0] = "0x0F7A 10 Black Pearl"
   Reg[1] = "0x0F7B 10 Blood Moss"
   Reg[2] = "0x0F86 10 Mandrake Roots" 
   Reg[3] = "0x103B 5 Food"
   uo.opencontainer(box, 500)
   while uo.findtype(iron, -1, "my")
      uo.moveitem("finditem", 0, box)
      wait(2000)
   while uo.findtype(magma, -1, "my")
      uo.moveitem("finditem", 0, box)
      wait(2000)

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

Author:  Mirage [ 2016-05-31 22:07:37 ]
Post subject:  Re: Скрипт на Lumberjacking

Вариант раз - старый но тем не менее живучий:
Code:
var bag = '0x4018A728'  ; сундук куда скидывать руду и откуда брать инструменты
var ore1 = '0x19B7'
var ore2 = '0x19BA'
var ore3 = '0x19B8'
var ore4 = '0x19B9'

sub main()
repeat
walker(1874, 267, 0) ; подошли к сундуку
UO.UseObject(bag) ; открыли сундук
wait(1000)
putore()    ; скидываем руду

; и пошли копать пока не набрали вес что бы повторить цикл

until UO.Dead() ; пока не умерли
end sub

Sub putore() ; скидывалка четырех видов руды (они имеют разный тип, пофигу на цвет)
   put(ore1,bag)
   put(ore2,bag)
   put(ore3,bag)
   put(ore4,bag)
end sub
Sub PUT(item, cont)  ; универсальная скидывалка чего то куда то.
   while UO.Count( item ) > 0
      UO.FindType( item, -1, -1 ) ; первая единичка как раз и отвечает за пофигкакойцвет
      UO.MoveItem( 'finditem', 0, cont )
      checklag()
   wend
end sub


Вариант два - чуть более новый:

Code:
sub start() 
   DIM ore[4]   
   ##########################
   ore[1] = '0x19B7'
   ore[2] = '0x19B8'
   ore[3] = '0x19B9'
   ore[4] = '0x19BA'
   ##########################
   uo.useobject(Ore_Bag)
   wait(1000)
   for i = 1 to 4
      put(ore[i],Ore_Bag)
   next

бла бла бла

Sub PUT(item, cont1, cont2)
   UO.FindType( item, -1, cont1 )
   while UO.FindCount()
      UO.MoveItem( 'finditem', 0, cont2)
      wait(500)
      UO.FindType( item, -1, cont1 )
   wend
end sub


Есть еще пару вариантов но так как руды всего 4 вида и как правило не важно какого цвета то морочиться с динамическими паузами и файндлистами не стоит.


PS у тебя все как то наоборот. Вместо того что бы почитать уроки где очень нормально прописал вариант работы с массивами ты начал читать сложные скрипты где из 1 строчки путем выборки символов выцепляют и тип и количество и название элемента. Оно конечно не плохо но лучше тренироваться на кошках чем на трепанации черепа.

Author:  Incorrect User [ 2016-06-01 08:15:13 ]
Post subject:  Re: Скрипт на Lumberjacking

Я делал по листу. В Autostart
Code:
uo.addfindlist("Ore", "Type руды 1")
uo.addfindlist("Ore", "Type руды 2")
uo.addfindlist("Ore", "Type руды 3")


И сама разгрузка, что-то типа
Code:
repeat
  if uo.findlist("Ore", "backpack") then
    uo.moveitem("finditem", 0, "ID контейнера куда перемещать")
    wait(500)
  end if
until not uo.findcount() or uo.dead()

Author:  Hydromarine [ 2016-06-01 08:54:35 ]
Post subject:  Re: Скрипт на Lumberjacking

Сделал по первому варианту который показал Мираж. Спасибо!
А случайно не было с этим скриптом проблем в плане ходилки?
У меня иногда тупо упирается в дерево или какое-то другое препятствие и стоит пытаясь проломиться напрямую через него. Приходится чара повернуть в любую сторону на 45 градусов и он начинает идти дальше. Хотя пробовал менять дистанцию по на которую должен подойти к тайлу, но проблемы это не решило. В каком куске тут править ходилку?

Author:  Incorrect User [ 2016-06-01 10:02:01 ]
Post subject:  Re: Скрипт на Lumberjacking

Ни в каком. Ходилка встроенная, несложная, поэтому при разметке нужно стараться идти так чтобы не попадать на "сложные" места.

Author:  Hydromarine [ 2016-06-01 10:04:53 ]
Post subject:  Re: Скрипт на Lumberjacking

Ок. Я уже наформировал несколько файлов с координатами и переписывать их уж совсем не хочется.
Можно в нем вставить код чтобы он писал последнюю координату на экран, чтобы хотябы по журналу можно было определить глючное место и в дальнейшем из файла эту координату удалить или переправить?

Author:  Incorrect User [ 2016-06-01 10:11:50 ]
Post subject:  Re: Скрипт на Lumberjacking

Что значит последнюю?

Author:  Hydromarine [ 2016-06-01 10:16:08 ]
Post subject:  Re: Скрипт на Lumberjacking

Incorrect User wrote:
Что значит последнюю?

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

Author:  Incorrect User [ 2016-06-01 10:20:50 ]
Post subject:  Re: Скрипт на Lumberjacking

Перед uo.pmove(TreeX[i], TreeY[i], distance) добавь строку
Если хочешь просто на экран
Code:
uo.print("Иду на " + str(TreeX[i]) + " " + str(TreeY[i]))

Или вывод в текстовое окно
Code:
uo.textprint("Иду на " + str(TreeX[i]) + " " + str(TreeY[i]))
uo.textopen()

Author:  Hydromarine [ 2016-06-01 10:28:55 ]
Post subject:  Re: Скрипт на Lumberjacking

Спасибо!
Я конечно понимаю что я уже достал но зачем же так
Quote:
uo.print("Иду на " + TreeX ....
:mrgreen: :mrgreen: :mrgreen: :mrgreen:
А вообще скрипт у вас получился очень крутой, универсальный очень.

Author:  Incorrect User [ 2016-06-01 10:30:29 ]
Post subject:  Re: Скрипт на Lumberjacking

Я просто местами менял или вообще удалял координату из файла и все, если где-то застревал.

Author:  Hydromarine [ 2016-06-01 10:32:01 ]
Post subject:  Re: Скрипт на Lumberjacking

Incorrect User wrote:
Я просто местами менял или вообще удалял координату из файла и все, если где-то застревал.

Вот и я так же хотел, но когда их в файле порядка 200сот сидеть и считать не представляется возможным. А вывод в журнал упростит задачу многократно.

Author:  Hydromarine [ 2016-06-01 11:27:25 ]
Post subject:  Re: Скрипт на Lumberjacking

Incorrect User wrote:
Перед uo.pmove(TreeX[i], TreeY[i], distance) добавь строку
Если хочешь просто на экран
Code:
uo.print("Иду на " + TreeX[i] + " " + TreeY[i])

Или вывод в текстовое окно
Code:
uo.textprint("Иду на " + TreeX[i] + " " + TreeY[i])
uo.textopen()


Попробовал и так и сяк, теперь подходит к тайлу где копать и вылетает ошибка инжекта
Code:
"Invalid operation for this type"

Author:  Incorrect User [ 2016-06-01 11:54:58 ]
Post subject:  Re: Скрипт на Lumberjacking

Поправил, пробуй

Author:  Hydromarine [ 2016-06-01 13:58:24 ]
Post subject:  Re: Скрипт на Lumberjacking

Incorrect User wrote:
Поправил, пробуй

Все ок, работает! Спасибо!

Author:  NiggaSuperBulka [ 2018-08-22 11:54:07 ]
Post subject:  Re: Скрипт на Lumberjacking

Incorrect User wrote:
Поправил, пробуй

Скрипт рабочий. Но бывает втыкается в какое то препятствие идя к необходимой координате и стоит уперевшись. Помогает буквально клик влево или вправо, чтобы чар продолжил свой путь. Как это реализовать в данном скрипте? К примеру по какому нибудь тайм ауту, допустим начинает идти в заданную координату и журнал не обновляется более чем 20-30 секунд, то делал бы шаг влево или вправо?

Page 4 of 4 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/