Yoko

All sides of Injection
It is currently 2024-04-18 09:36:03

All times are UTC+02:00




Post new topic  Reply to topic  [ 94 posts ]  Go to page Previous 1 2 3 4 5 Next
Author Message
PostPosted: 2012-11-28 22:02:12 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Теперь ходилка, в пилоте строка проверки координат для того чтобы знать куда делать шаги выглядела так
Code:
if ((charposx = 378) and (charposy = 1428)) or ((charposx = 358) and (charposy = 1443)) or ((charposx = 358) and (charposy = 1452)) or ((charposx = 4038) and (charposy = 455))

Как это будет выглядеть в инжекте?

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-28 22:16:15 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
На 27 линии wait(100) парсер, проблема я так понимаю в том что неправильно условия в 26 записал, в чем ошибка?

Code:
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

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-28 23:00:53 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Переделал, теперь если вводит антимакрос то не копает, просто стоит и дергается мышка, если остановить и снова запустить когда антимакрос не нужно вводить больше то начинает копать нормально. В чем ошибка?

Code:
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

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-28 23:17:25 
Offline

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

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-28 23:33:31 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Проблема, не копает руду по 2 раза как мне нужно, что не так?
Code:
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:
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

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-28 23:40:53 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Попробовал так, тоже не работает.
Code:
if uo.injournal('put the iron') or uo.injournal('put the Marble')  then

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-29 01:32:06 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Никак не выходит...

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-29 10:12:58 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Code:
 while not uo.injournal('put|fail|far away|loosen|no ore|no line|try mining') 

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


Top
   
PostPosted: 2012-11-29 11:14:44 
Offline
User avatar

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


Top
   
PostPosted: 2012-11-29 17:05:23 
Offline

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

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-29 17:09:11 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Может просто circle + 1?

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-29 17:30:18 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Code:
circle = circle + 1


Top
   
PostPosted: 2012-11-29 17:38:17 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
начинаю понимать логику :roll:


Top
   
PostPosted: 2012-11-29 17:43:26 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Значит я правильно написал про circle, запутываете ребяты :) Вот эта строка правильная?
Code:
if not uo.injournal('far away|loosen|no ore|no line|try mining') or not circle > 1 then

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-29 18:06:01 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
ни чё я не начал понимать :oops:
Вот что сделал.
Code:
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


Top
   
PostPosted: 2012-11-29 18:09:35 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Incorrect User wrote:
Значит я правильно написал про circle, запутываете ребяты :) Вот эта строка правильная?
Code:
if not uo.injournal('far away|loosen|no ore|no line|try mining') or not circle > 1 then


На второй круг пойдёт только если в момент проверки переменная будет иметь значение не больше 1. такое значение она может иметь только 2 раза: в первый прогон, и если выкопается айрон, то и во второй. переменная ставится в ноль только перед началом обкопки


Top
   
PostPosted: 2012-11-29 18:17:57 
Offline

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

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-29 18:23:21 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
]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

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-29 18:30:19 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А так очень хорошо, довольно сжато, хорошо когда знаешь синтаксис :roll:

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

Code:
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

_________________
CodeSweeper


Top
   
PostPosted: 2012-11-29 18:33:02 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Только в пилоте у меня были совмещены два скрипта на трекинг игроков и убивание гвардов, а тут я хочу сделать 2 одинаковых, но один реагирует на появление гвардов а второй на людей, чтобы когда скрипт убивает гварла проверка на людей не прерывалась.

_________________
CodeSweeper


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 20 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