Миниг и рекол.

Anything and all.

Moderators: Murderator+, Murderator

Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Теперь ходилка, в пилоте строка проверки координат для того чтобы знать куда делать шаги выглядела так

Code: Select all

if ((charposx = 378) and (charposy = 1428)) or ((charposx = 358) and (charposy = 1443)) or ((charposx = 358) and (charposy = 1452)) or ((charposx = 4038) and (charposy = 455))

Как это будет выглядеть в инжекте?
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

На 27 линии wait(100) парсер, проблема я так понимаю в том что неправильно условия в 26 записал, в чем ошибка?

Code: Select all

var pause
pause = 0

sub Mining()
var coordx, coordy, coordz, tilex, tiley, circle
circle = 0
coordx = uo.getx('self')
coordy = uo.gety('self')
coordz = uo.getz('self')
 for tilex = coordx - 2 to coordx + 2
    for tiley = coordy - 2 to coordy + 2
mine:
      uo.deletejournal()
      uo.waittargettile('1339', str(tilex), str(tiley), str(coordz))
      uo.usetype(0x0E85, 0x0000)
      wait(500)
      if not uo.LastGump('replyed') then
      if uo.LastGump('text', 0) == 'Antimacros System' then
      while not uo.injournal('success')
         AntiMacros()
         wait(1000)
         wend
      endif
      goto mine
      endif
while not uo.injournal('put'|'fail'|'far away'|'loosen'|'no ore'|'no line'|'try mining')
wait(100)
wend
if uo.injournal(put) and uo.injournal('iron'|'marble') then
circle = circle + 1
else
if uo.injournal('put')then
circle = 2
endif
endif
if not uo.injournal('no ore'|'far away'|'no line'|'try mining') or circle > 1
goto mine
endif
next
next
uo.msg('Закончил!')
end sub
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Переделал, теперь если вводит антимакрос то не копает, просто стоит и дергается мышка, если остановить и снова запустить когда антимакрос не нужно вводить больше то начинает копать нормально. В чем ошибка?

Code: Select all

var pause
pause = 0
sub Mining()
  var coordx, coordy, coordz, tilex, tiley, circle
  circle = 0
  coordx = uo.getx('self')
  coordy = uo.gety('self')
  coordz = uo.getz('self')
  for tilex = coordx - 2 to coordx + 2
    for tiley = coordy - 2 to coordy + 2
      mine:
      uo.deletejournal()
      uo.waittargettile('1339', str(tilex), str(tiley), str(coordz))
      uo.usetype(0x0E85, 0x0000)
      wait(500)
      if not uo.LastGump('replyed') then
        if uo.LastGump('text', 0) == 'Antimacros System' then
          while not uo.injournal('success')
            AntiMacros()
            wait(500)
          wend
        endif
      endif
      while not uo.injournal('put') and not uo.injournal('fail') and not uo.injournal('far away') and not uo.injournal('loosen') and not uo.injournal('no ore') and not uo.injournal('no line') and not uo.injournal('try mining')
        wait(100)
      wend
      if uo.injournal('put') and (uo.injournal('iron') or uo.injournal('marble')) then
        circle = circle + 1
      else
        if uo.injournal('put') then
          circle = 2
        endif
      endif
      if not uo.injournal('far away') and not uo.injournal('loosen') and not uo.injournal('no ore') and not uo.injournal('no line') and not uo.injournal('try mining') and not circle > 1 then
        goto mine
      endif
    next
  next
  uo.msg('Çàêîí÷èë!')
end sub
sub AntiMacros()
  dim reindex[8]
  reindex[0] = 11
  reindex[1] = 12
  reindex[2] = 13
  reindex[3] = 10
  reindex[4] = 16
  reindex[5] = 14
  reindex[6] = 17
  reindex[7] = 15
  var GumpID = 0
  var ButtonID = 0
  var ButtonText
  var i = 18
  if uo.LastGump('text', 4) <> "0" then
    i = 19
  end if
  GumpID = val(Mid(uo.LastGump('command', i), 16, 4))
  ButtonID = reindex[GumpID-2225]
  ButtonText = uo.LastGump('command', ButtonID)
  uo.LClick(Val(Mid(ButtonText, 7, 3)), Val(Mid(ButtonText, 11, 3)))
  while not uo.LastGump('replyed')
    wait(100)
  wend
end sub
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Заработало. Забыл что сообщения чувствительны к регистру.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Проблема, не копает руду по 2 раза как мне нужно, что не так?

Code: Select all

var pause
pause = 0
sub Mining()
  var coordx, coordy, coordz, tilex, tiley, circle
  circle = 0
  coordx = uo.getx('self')
  coordy = uo.gety('self')
  coordz = uo.getz('self')
  for tilex = coordx - 2 to coordx + 2
    for tiley = coordy - 2 to coordy + 2
      mine:
      uo.deletejournal()
      uo.waittargettile('1339', str(tilex), str(tiley), str(coordz))
      uo.usetype(0x0E85, 0x0000)
      wait(500)
      if not uo.LastGump('replyed') then
        if uo.LastGump('text', 0) == 'Antimacros System' then
          while not uo.injournal('Success')
            AntiMacros()
            wait(500)
          wend
          goto mine
        endif
      endif
      while not uo.injournal('put') and not uo.injournal('fail') and not uo.injournal('far away') and not uo.injournal('loosen') and not uo.injournal('no ore') and not uo.injournal('no line') and not uo.injournal('mining in rock')
        wait(100)
      wend
      if uo.injournal('put') and ((uo.injournal('iron')) or (uo.injournal('Marble'))) then
        circle = circle + 1
      else
        if uo.injournal('put') then
          circle = 2
        endif
      endif
      if not uo.injournal('far away') and not uo.injournal('loosen') and not uo.injournal('no ore') and not uo.injournal('no line') and not uo.injournal('mining in rock') and not circle > 1 then
        goto mine
      endif
    next
  next
end sub


Если выкопали айрон или марбл то ставим circle 1 и скрипт дожлен копать в том же тайле еще раз, но этого не происходит. Кусок который за это отвечает

Code: Select all

if uo.injournal('put') and ((uo.injournal('iron')) or (uo.injournal('Marble'))) then
        circle = circle + 1
      else
        if uo.injournal('put') then
          circle = 2
        endif
      endif
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Попробовал так, тоже не работает.

Code: Select all

if uo.injournal('put the iron') or uo.injournal('put the Marble')  then
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Никак не выходит...
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Миниг и рекол.

Post by Juicy Fruit »

Code: Select all

 while not uo.injournal('put|fail|far away|loosen|no ore|no line|try mining') 

В одном из твоих вариантов.
Только мессаги побольше сделай, ато так может быть больше совпадений, чем нужно.
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Миниг и рекол.

Post by ZeroDX »

Code: Select all

circle = 1
а не

Code: Select all

circle += 1
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Мне нужно делать не circle = 1 а circle = его текущее значение + 1 В уо пилоте так и пишется circle = circle(текущее его значение) + 1, как это написать?
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Может просто circle + 1?
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Миниг и рекол.

Post by Juicy Fruit »

Code: Select all

circle = circle + 1
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Миниг и рекол.

Post by ZeroDX »

начинаю понимать логику :roll:
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Значит я правильно написал про circle, запутываете ребяты :) Вот эта строка правильная?

Code: Select all

if not uo.injournal('far away|loosen|no ore|no line|try mining') or not circle > 1 then
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Миниг и рекол.

Post by ZeroDX »

ни чё я не начал понимать :oops:
Вот что сделал.

Code: Select all

Sub MiningAround()
    var x, y, more, timer, msg = "in rock|far away|no line|no ore|try mining|put|fail|loosen"
    for x = -2 to 2
        for y = -2 to 2
            repeat
                more = 0
                timer = uo.timer()
                deljournal(msg + "|iron ore|Marble")
                uo.waittargettile(1339, uo.getx() + x, uo.gety + y, uo.getx())
                uo.usetype("0x0E85")
                repeat
                    wait(100)
                    if not uo.lastgump("replyed") and uo.lastgump("text", 0) == "Antimacros System" then
                        antimacros()
                        uo.usetype("0xE85")
                    end if
                until uo.injournal(msg) ot timer + 50 <= uo.timer()
                if uo.injournal("iron ore|Marble|loosen") then
                    more = 1
                end if
            until not more
        next
    next
end sub

Sub deljournal(msg)
    while uo.injournal(msg)
        uo.setjournalline(uo.injournal(msg) - 1, "")
    wend
end sub
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Миниг и рекол.

Post by ZeroDX »

Incorrect User wrote:Значит я правильно написал про circle, запутываете ребяты :) Вот эта строка правильная?

Code: Select all

if not uo.injournal('far away|loosen|no ore|no line|try mining') or not circle > 1 then


На второй круг пойдёт только если в момент проверки переменная будет иметь значение не больше 1. такое значение она может иметь только 2 раза: в первый прогон, и если выкопается айрон, то и во второй. переменная ставится в ноль только перед началом обкопки
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Так это и нужно, в начале каждого тайла ставится значение 0, и если 1 раз выкопал то ставится значение 0 + 1, и если выкопал еще раз то значение 1 + 1, а это > 1 как нам и нужно и скрипт будет переходить на новый круг.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

]Sub MiningAround()
var x, y, more, timer, msg = "in rock|far away|no line|no ore|try mining|put|fail|loosen"
for x = -2 to 2
for y = -2 to 2
repeat
more = 0
timer = uo.timer()
deljournal(msg + "|iron ore|Marble")
uo.waittargettile(1339, uo.getx() + x, uo.gety + y, uo.getx())
uo.usetype("0x0E85")
repeat
wait(100)
if not uo.lastgump("replyed") and uo.lastgump("text", 0) == "Antimacros System" then
antimacros()
uo.usetype("0xE85") Антимакрос вводится за 1 раз одно число из двух, после ввода числа гамп исчезает и появляется заново чтобы ввести второе число, юз кирки собьет ввод и просто вызовет новый антимакрос.
end if
until uo.injournal(msg) ot timer + 50 <= uo.timer()
if uo.injournal("iron ore|Marble|loosen") then
more = 1
end if
until not more
next
next
end sub

Sub deljournal(msg)
while uo.injournal(msg)
uo.setjournalline(uo.injournal(msg) - 1, "")
wend
end sub
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

А так очень хорошо, довольно сжато, хорошо когда знаешь синтаксис :roll:

Доделаю его. А вот со скриптом на проверку, я думал сделать про теку итемов как и все, но это не очень гуманно если конечно инжект не находит их в хайде :) Я хочу сделать просто по проверке сообщений, когда появляеться сообщение you see то сравнивать его с теми что указаны заранее в условии и если нет совпадения то рекол. Зачем так делать, во первых не будет крашей, во вторый иногда бывает что когда из далека бежит игрок то сначала видно имя а уже потом он появляется на экране, да и срабатывать должно резвее, во всяком случае такая схема на пилоте еще не подводила, чтобы было понятнее что я имею ввиду я покажу скрипт рекола с пилота

Code: Select all

set $se You see:
set $st Stalagmites
set $or Ore Guardian
set $sp Spider
set $ha Harpy
set $fl Floor
set $mo Vortex
set $mo2 Frost Dragon

:tracking
while_not $msg <= $se
set $msg lastmsg
end_while
stop_script 2
goto check

:check
if_not ($msg <= $fl) or ($msg <= $or) or ($msg <= $sp) or ($msg <= $ha) or ($msg <= $st) or ($msg <= $mo) or ($msg <= $mo2)
stop_script 0
goto recall
end_if
if $msg <= $or
pause_script 0
goto targetid
else
set $msg 0
goto tracking
end_if
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

Re: Миниг и рекол.

Post by Incorrect User »

Только в пилоте у меня были совмещены два скрипта на трекинг игроков и убивание гвардов, а тут я хочу сделать 2 одинаковых, но один реагирует на появление гвардов а второй на людей, чтобы когда скрипт убивает гварла проверка на людей не прерывалась.
Post Reply