Yoko

All sides of Injection
It is currently 2024-03-28 11:00:38

All times are UTC+02:00




Post new topic  Reply to topic  [ 77 posts ]  Go to page Previous 1 2 3 4
Author Message
PostPosted: 2016-05-18 12:14:49 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Все!!! Работает идеально, по крайней мере рубит четко, до сброса и т.д. еще не доходил.
Еще раз огромнейшее спасибо, от души жму руку!


Top
   
PostPosted: 2016-05-31 17:14:29 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
И снова доброго вечера.
Переделываю этот скрипт на копку по кочкам вроде пока все идет ок, но столкнулся с блоком на разгрузку.
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)

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


Last edited by Hydromarine on 2016-06-09 10:04:04, edited 1 time in total.

Top
   
PostPosted: 2016-05-31 22:07:37 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Вариант раз - старый но тем не менее живучий:
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 строчки путем выборки символов выцепляют и тип и количество и название элемента. Оно конечно не плохо но лучше тренироваться на кошках чем на трепанации черепа.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2016-06-01 08:15:13 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Я делал по листу. В 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()

_________________
CodeSweeper


Top
   
PostPosted: 2016-06-01 08:54:35 
Offline

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


Top
   
PostPosted: 2016-06-01 10:02:01 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Ни в каком. Ходилка встроенная, несложная, поэтому при разметке нужно стараться идти так чтобы не попадать на "сложные" места.

_________________
CodeSweeper


Top
   
PostPosted: 2016-06-01 10:04:53 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Ок. Я уже наформировал несколько файлов с координатами и переписывать их уж совсем не хочется.
Можно в нем вставить код чтобы он писал последнюю координату на экран, чтобы хотябы по журналу можно было определить глючное место и в дальнейшем из файла эту координату удалить или переправить?


Top
   
PostPosted: 2016-06-01 10:11:50 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Что значит последнюю?

_________________
CodeSweeper


Top
   
PostPosted: 2016-06-01 10:16:08 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Incorrect User wrote:
Что значит последнюю?

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


Top
   
PostPosted: 2016-06-01 10:20:50 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Перед 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()

_________________
CodeSweeper


Last edited by Incorrect User on 2016-06-01 11:54:36, edited 1 time in total.

Top
   
PostPosted: 2016-06-01 10:28:55 
Offline

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


Last edited by Hydromarine on 2016-06-01 10:30:43, edited 1 time in total.

Top
   
PostPosted: 2016-06-01 10:30:29 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Я просто местами менял или вообще удалял координату из файла и все, если где-то застревал.

_________________
CodeSweeper


Top
   
PostPosted: 2016-06-01 10:32:01 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Incorrect User wrote:
Я просто местами менял или вообще удалял координату из файла и все, если где-то застревал.

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


Top
   
PostPosted: 2016-06-01 11:27:25 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
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"


Top
   
PostPosted: 2016-06-01 11:54:58 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Поправил, пробуй

_________________
CodeSweeper


Top
   
PostPosted: 2016-06-01 13:58:24 
Offline

Joined: 2009-03-16 11:51:21
Posts: 56
Incorrect User wrote:
Поправил, пробуй

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


Top
   
PostPosted: 2018-08-22 11:54:07 
Offline

Joined: 2016-06-12 20:36:28
Posts: 34
Incorrect User wrote:
Поправил, пробуй

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 77 posts ]  Go to page Previous 1 2 3 4

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 17 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited