Yoko

All sides of Injection
It is currently 2024-04-20 01:20:50

All times are UTC+02:00




Post new topic  Reply to topic  [ 51 posts ]  Go to page 1 2 3 Next
Author Message
PostPosted: 2011-05-23 23:11:49 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
1) Первый раз использую инжект, ранее никогда не пользовался, в связи с этим есть много вопросов. А как узнать номер кнопки гампа? Нажимаю на итем, появляеться гамп
Image
нажимаю на нужную кнопку, открываю ,infogump, и там смотрю в
Reply: ___________
[0014] primary reply
Получаеться что номер нужной мне кнопки 14?
Я сделал скрипт через uo.Recall на открытие банка в доме. Он на табличку жмет а вот банк не открывает если ставить номер кнопки 14.

sub BankDom()
uo.Recall (0x111111111,'14')
endsub

2) Как делать пересчет ресурсов в паке? А то пока, после входа в игру, сумку со скролами в паке не откроеш, при нажатии рекола не видит скролы и пишет No item found.

3) Как остановить скрипт. Например я добавил хоткейс
exec ScrTam
он запускает нужный скрипт, чар стоит качается. А какая команда нужна для хоткейса чтобы остановить скрипт?

_________________
CodeSweeper


Last edited by Incorrect User on 2011-05-24 12:42:39, edited 1 time in total.

Top
   
 Post subject: Re: А как ...?
PostPosted: 2011-05-24 12:18:41 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Если нет желания получить ответ в виде:
Quote:
Как то так...

то я бы рекомендовал более информативно называть тему.
1) по поводу гампа - данные снимаются ДО нажатия нужной кнопки.
Открываешь табличку с кнопкой которую нужно нажать скриптом и нажимаешь ,infogump - там и ищешь нужный код кнопки.

для использования команды
uo.recall('0x40004516','1')
надо 1 раз запустить скрипт

Code:
sub test() 
     Uo.exec("set norbcheck 1")
     uo.exec("set norbcalc 1")
end sub


Затем реколки и вызовы банка из меню дома будут нормально работать на шарде автора.

2) предметы можно использовать/считать/перемещать только в открытом (хотя бы 1 раз с момента конекта) контейнере. Следовательно либо нужно хранить свикти в паке который как правило всегда открыт, либо в сумке которую скриптом нужно будет открывать каждый раз (uo.useobject('ID контейнера')) и только после этого персонаж сможет использовать свитки/реги/бутылки/оружие и прочую амуницию.

3),terminate all
вырубит все скрипты

http://yoko.com.ua/help/
описание большинства команд.

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


Top
   
PostPosted: 2011-05-25 09:09:55 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
просто не надо начинать обучение с разработки автоботов и автодобывающих скриптов на nKK строк.
1) изучить основы
2) простой лут, простой кач лоров, простой крафт 1 вещи
3) ПВП/ПВМ/крафт в цикле пока есть рессы или не умер.
4) простой/средний добывающий/ скининг на овцах или птицах.
5) управление ботом дистанционно, бот работает независимо от тебя и срать на смерти отключения света и конектлосты.
6) пожно гнуть пальцы и крафтить скрипты за бабосы.

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


Top
   
PostPosted: 2011-05-25 20:43:30 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Я стою на скрипте в гз, качаю лор, и мне нужно чтобы второй скрипт непрерывно проверял мои ХП и если меньше 150 сразу же гвардил. В пилоте это легко сделать - 1 окно со скриптом на лор, второе со скриптом на проверку ХП. А как в инжекте сделать чтобы 2 скрипта работали паралельно? Просто запустить их два по очереди командой exec?

_________________
CodeSweeper


Top
   
PostPosted: 2011-05-25 22:38:46 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
либо так, либо встроить проверку
Code:
if uo.GetHP()<>uo.GetMaxHP() then
uo.say('Guards!!!')
 wait(1500)
endif


Все же есть в help-e ты ведь даже не смотришь ;)

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


Top
   
PostPosted: 2011-05-27 01:36:52 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А как поставить скрипт\все скрипты на паузу?

_________________
CodeSweeper


Top
   
PostPosted: 2011-05-27 10:19:22 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Во все запущенные скрипты куда нибудь засунуть
Code:
if UO.InJournal('STOP!!!') then
repeat
wait(1000)
until UO.InJournal('START!!!')
endif



Идея маразматическая ;)

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


Top
   
PostPosted: 2011-05-27 19:15:01 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Команда uo.usetipe может использовать по типу вещи только те которые находяться в паке, а если вещь лежит или стоит рядом в пару тайлов на полу ее можно тоже как то использовать по типу? Нужно именно по типу юзать вещь.

_________________
CodeSweeper


Last edited by Incorrect User on 2011-05-28 00:43:13, edited 1 time in total.

Top
   
PostPosted: 2011-05-27 22:58:48 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
Incorrect User wrote:
Команда uo.usetipe может использовать по типу вещи только те которые находяться в паке, а если вещь лежит или стоит рядом в пару тайлов на полу ее можно тоже как то использовать по типу? Нужно именно по типу юзать вещь (кликать на столбы телепорта по городам).


http://yoko.com.ua/help/ -> Работа с объектами -> 3 снизу


Top
   
PostPosted: 2011-05-29 17:47:35 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Меня интересуют правила написания скриптов и описание типа что такое sub, repeat, var и тд. Где это почитать?

_________________
CodeSweeper


Top
   
PostPosted: 2011-05-30 05:38:31 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Вот тут :roll:


Top
   
PostPosted: 2011-05-30 13:50:17 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
ZeroDX wrote:
Кстати да. Лезть в хелп, не зная про строки числа, это не лучшая идея. Там же не написано, что после каждого If нужно ставить then. Ну и прочее по мелочи. Чеклага и других хитростей там тоже нет.


хелп - описание команд
уроки - показывают как ими пользоваться. Там есть ответы на ВСЕ его вопросы, даже те в которых ему долго не помогали. Просто надо внимательно прочитать и переварить.

Quote:
sub, repeat, var

это должны преподавать в школе и в институте. Это не ИНЖЕКТ. Это языки программирования начального уровня.
Quote:
Оператор Sub (Visual Basic)
Объявляет имя, параметры и код, определяющий процедуру Sub.



На форуме есть информация по 90% всех возможных проблем, вопросам, ошибкам и скриптам. Есть огромные архивы скриптов (которые и искать то не надо - просмотри ВАЖНЫЕ темы на форуме). Однако есть не хорошая привычка первым сообщением только что зареганого пользователя задавать очевидные вопросы. Создавая свалку в которой фиг разберешься и очень сложно найти то что действительно сможет помочь.

Тут на фоурме в каждой ветке есть свод правил (закрепленные темы) с которыми РЕКОМЕНДУЕТСЯ ознакомится чтобы получить адекватный ответ на свой вопрос. Если же вопросы уровня 2+2=? 4; а почему? -... мозк становится в тупик :)
Всегда лучше спросить "что у меня не так вот в этом скрипте?" вместо "дайте ченито чтобы я стал крутым"

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

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


Top
   
PostPosted: 2011-05-30 17:13:31 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Скачал полный клиент, поставил, зашел с инжекта YokoInjection 702.11 PaWn родным клиентом 1.26.4b
Загрузил скрипт который является суммой скриптов Дестракшена, моих сообщений и ходилки Beyonder. БЕЗ КАКИХ ЛИБО ДРУГИХ МОДИФИКАЦИЙ КОДА!
запускаю autoLumber. Чар спокойно ходит и рубит. Около 20 стволов. Ошибок не вылазит.

Замечены небольшие глюки - проскакивает фраза при обнаружении нового дерева - чар стоит 2 секунды у каждого видимо прицеливаясь топором; чар периодически пускается в нарезания кругов (специфика скирпта - вопросы к Дестракшену) но затем благополучно находит жертву и рубит ее в капусту.

Вывод => чтойто вы батенька не по инструкции делаете на протяжении уже несколько страниц текста.


Attachments:
ламбер.rar [5 KiB]
Downloaded 318 times

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.
Top
   
PostPosted: 2011-05-31 22:35:48 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Code:
var id_BankStone = '0x40000DCC', id_BankContainer = '0x40015A1D', t_PickAxe = '0x0E85', id_Forge = '0x40034167'
var TileNum = '1339', MaxTraceDistance = 10, TraceLoopIncrease = 5, LimitTrace = 20
var Speed = 1, StepTimeOut = 770, CheckCnt = 2, DynamicPause = 100, UseHiding = 1

sub Start()
  UO.Exec('exec Mining')
  UO.Exec('exec Reconnector')
 ;UO.Exec('exec DeadWatch')
  UO.Exec('exec AntiMacro')
Endsub

Sub AntiMacro()
  var x = -1, y = -1, z = -1, value, msg = 'Сколько будет'
  While true
    If UO.InJournal(msg) then
      Wait(500)
      x = Compare()
      y = Compare()
      z = Compare()
      If x > -1 and y > -1 and z > -1 then
        DelJournal(msg)
        UO.Print(str(x) + ' + ' + str(y) + ' + ' + str(z) +  ' = ' + str(x + y + z))
        UO.Say(str(x + y + z))
       else
        UO.Print('Ошибка в считывании журнала')
        UO.Print(str(x) + ' + ' + str(y) + ' + ' + str(z) +  ' = ' + str(x + y + z))
      Endif
     else
      Wait(100)
    Endif
  Wend
Endsub
         
Sub Compare()
  var a
  Dim Num[10]
    Num[0] = 'Нол'
    Num[1] = 'Оди'
    Num[2] = 'Дв'
    Num[3] = 'Тр'
    Num[4] = 'Четы'
    Num[5] = 'Пят'
    Num[6] = 'Шест'
    Num[7] = 'Сем'
    Num[8] = 'Восе'
    Num[9] = 'Девя'
  For a = 0 to 9
    If UO.InJournal(Num[a]) and UO.JournalSerial(UO.InJournal(Num[a]) - 1) == UO.GetSerial('self') then
      UO.SetJournalLine(UO.InJournal(Num[a]) - 1, '')
      Return a
     else
      Wait(10)
    Endif
  Next
  Return -1
Endsub

Sub Mining()
  var a, Coor = '2559 496 2560 491 2560 487 2564 484 2565 479 2568 476 2573 476 2578 476 2579 481 2578 485 2573 485 2574 481 2569 481 2568 486 2571 489 2570 489 2565 489 2564 493 '
  While true
    For a = 1 to 18
      Walker(val(GetWord(Coor, (a * 2) - 1)), val(GetWord(Coor, a * 2)), 0)
      Wait(100)
      Mining_Around()
    Next
  Wend
Endsub

Sub Mining_Around()
  var msg_t = 'put the|loosen some rocks', msg_e = 'There is no ore|far away|mining|line of sight|t use'
  var y, x, Time, mx, my, Delay = 5, Try = 0
  For y = -2 to 2
    For x = -2 to 2
      Repeat
        DelJournal(msg_t + '|' + msg_e)
        UO.Print('Mining in ' + str(x) + ',' + str(y))
        Time = UO.Timer()
        Hide()
        UO.WaitTargetTile(TileNum, str(UO.GetX() + x), str(UO.GetY() + y), 0)
        UO.UseType(t_PickAxe)
        Try = Try + 1
        Repeat
          Wait(100)
        Until UO.InJournal(msg_t + '|' + msg_e) or Time + (Delay * 10) < UO.Timer()
        If UO.InJournal('put the') then
          Try = 0
        EndIf
        If UO.Weight >= UO.Str * 4 or not UO.ObjAtLayer('Rhand') then
          mx = UO.GetX('self')
          my = UO.GetY('self')
          Smelt()
          Unload()
          Walker(mx, my, 0)
        Endif
      Until UO.InJournal(msg_e) or Try == 10
    Next
  Next
Endsub

Sub Smelt()
  var a
  Dim t_Ore[4]
    t_Ore[0] = '0x19B9'
    t_Ore[1] = '0x19B8'
    t_Ore[2] = '0x19BA'
    t_Ore[3] = '0x19B7'   
  Walker(2572, 475, 0)
  For a = 0 to 3
    While UO.Count(t_Ore[a])
      If UO.SkillVal('Mining', 1) < 1000 then
        UO.FindType(t_Ore[3], -1, 'backpack')
        If UO.FindCount() then
          UO.WaitTargetType(t_Ore[3])
          UO.UseObject(id_Forge)
          Wait(100)
         else
          UO.FindType(t_Ore[a], -1, 'backpack')
          If UO.FindCount() then
            CheckLag()
            UO.MoveItem('finditem', 1, 'backpack', 25, 25, 0)
            Wait(1100)
           else
            Wait(100)
          Endif
        Endif
       else
        UO.WaitTargetType(t_Ore[a])
        UO.UseObject(id_Forge)
        Wait(100)
      Endif
    Wend
  Next
Endsub

Sub Unload()
  var a
  Dim t_Ingots[3]
    t_Ingots[0] = '0x1BEF'
    t_Ingots[1] = '0x1BE9'
    t_Ingots[2] = '0x1BF5'
  Walker(2568, 475, 0)
  UO.UseObject(id_BankStone)
  For a = 0 to 2
    While UO.Count(t_Ingots[a])
      CheckLag()
      UO.FindType(t_Ingots[a], -1, 'backpack')
      If UO.FindCount() then
        UO.MoveItem('finditem', -1, id_BankContainer)
        Wait(1000)
       else
        UO.Print('Непонятки')
        Return
      Endif
    Wend
  Next
  If not UO.Count(t_PickAxe) then
    UO.FindType(t_PickAxe, -1, id_BankContainer)
    If UO.FindCount() then
      CheckLag()
      UO.MoveItem('finditem', -1, 'backpack')
      Wait(1100)
      UO.Equip('Rhand', 'finditem')
     else
      UO.Print('В банке нет Pickaxe')
      UO.Print('Скрипт выключается')
      UO.Exec('terminate all')
    Endif
  Endif
Endsub

Sub Hide()
  var msg = 'seem to hide|have hidden', Time, Delay = 3
  While not UO.Hidden() and UseHiding == 1
    If UO.Warmode() then
      UO.WarMode(0)
    Endif
    DelJournal(msg)
    Time = UO.Timer()
    UO.UseSkill('Hiding')
    Repeat
      Wait(100)
    Until UO.InJournal(msg) or Time + (Delay * 10) < UO.Timer() or UO.Hidden()
  Wend
Endsub

Sub DelJournal(msg)
  While UO.InJournal(msg)
    UO.SetJournalLine(UO.InJournal(msg) - 1, '')
  Wend
Endsub

Sub CheckLag()
  DelJournal('ackpack')
  UO.Click('backpack')
  Repeat
    Wait(50)
  Until UO.InJournal('ackpack')
Endsub

Sub GetWord(st, nom)
  var tmpst, i, dlin, kol = 0, start = 0
  dlin = len(st)
  For i = 0 to dlin - 1
    If mid(st, i, 1) == ' ' or i == dlin - 1 then
      kol = kol + 1
      If kol == nom then
        tmpst = mid(st, start, i - start)
        Return tmpst
       else
        While mid(st, i, 1) == ' '
          i = i + 1
        Wend
        If kol == nom - 1 then
          start = i
        Endif
      Endif
    Endif
  Next
  tmpst = ''
  Return tmpst
Endsub

Sub Abs(X)
  If X > 0 then
    Return X
   else
    Return (-X)
  Endif
Endsub

Sub Walker(GoX, GoY, Prec)
  var LastDir, MoveRes, TracerCnt
  UO.SetGlobal('Logging', '0')
  UO.SetGlobal('BlindWalk', '0')
  UO.SetGlobal('GlobalGoX', str(GoX))
  UO.SetGlobal('GlobalGoY', str(GoY))
  While not IsEnd(GoX, GoY, Prec)
    TracerCnt = MaxTraceDistance
    Repeat
      LogInfo('Just walking')
      LastDir = GoUntilHit(GoX, GoY, Prec)
      If IsEnd(GoX, GoY, Prec) then
        Eeturn 1
      Endif
      LogInfo('Tracing')
      MoveRes = FullAroundTrace(LastDir, GoX, GoY, Prec, TracerCnt)
      If TracerCnt > LimitTrace then
        Return 0
      Endif
      TracerCnt = TracerCnt + TraceLoopIncrease
    Until MoveRes == 1
  Wend
  Return 1
Endsub

Sub FullAroundTrace(StartDir, GoX, GoY, Prec, MaxTrace)
  var LineX = UO.GetX(), LineY = UO.GetY(), CurDir = StartDir
  var Direction = CountDirection(GoX, GoY, CurDir, Prec)
  var StartX, StartY, MovesDone = 0
  Repeat
    StartX = UO.GetX()
    StartY = UO.GetY()
    CurDir = Tracer(CurDir, Direction, Prec)
    If (CurDir == GetDir(GoX, GoY, Prec)) then
      Return 1
    Endif
    If MovesDone > 0 and PrevMoveCross(GetDirToDir(UO.GetDir(), Prec), LineX, LineY, GoX, GoY, StartX, StartY, Prec) then
      Return 1
    Endif
    MovesDone = MovesDone + 1
    CurDir = AddToDir(CurDir, -Direction, Prec)
  Until MovesDone > MaxTrace
  Return 0
Endsub

Sub CountDirection(GoX, GoY, StartDir, Prec)
  var GoDir = GetDir(GoX, GoY, Prec), MyX = UO.GetX(), MyY = UO.GetY()
  If GoDir < StartDir then
    Return -1
  Endif
  If GoDir > StartDir then
    Return 1
  Endif
  If Abs(MyX - GoX) > Abs(MyY - GoY) then
    If (GoDir == 3) or ( GoDir == 7) then
      Return -1
     else
      Return 1
    Endif
   else
    If (GoDir == 1) or (GoDir == 5) then
      Return -1
     else
      Return 1
    Endif
  Endif
Endsub

Sub PrevMoveCross(Dir, x1, y1, x2, y2, StartX, StartY, Prec)
  var x3, y3, x4, y4
  x3 = StartX
  y3 = StartY
  x4 = StartX + (XFromDir(Dir) - StartX) * Speed
  y4 = StartY + (YFromDir(Dir) - StartY) * Speed
  Return LinesCrossing(x1, y1, x2, y2, x3, y3, x4, y4, Prec)
Endsub

Sub LinesCrossing(x1, y1, x2, y2, x3, y3, x4, y4, Prec)
  If x1 == x3 and y1 == y3 then
    Return false
  Endif
  LogInfo('Start cross check')
  var ua1 = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)
  var ub1 = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)
  var ua2 = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)
  var ub2 = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)
  If (ub1 == 0) or (ub2 == 0) then
    Return false
  Endif
  var u1 = ua1 / ub1
  var u2 = ua2 / ub2
  If IsDiap(u1, 0, 1, 0.01) and IsDiap(u2, 0, 1, 0.01) then
    LogInfo('Vectors crossing info:')
    LogInfo('x1= '+str(x1))
    LogInfo('y1= '+str(y1))
    LogInfo('x2= '+str(x2))
    LogInfo('y2= '+str(y2))
    LogInfo('x3= '+str(x3))
    LogInfo('y3= '+str(y3))
    LogInfo('x4= '+str(x4))
    LogInfo('y4= '+str(y4))
    Return true
   else
    LogInfo('End cross check')
    Return false
  Endif
Endsub

Sub IsDiap(X, X0, X1, Prec)
  If X <= X0 + Prec and X >= X1 - Prec OR X >= X0 - Prec and X <= X1 + Prec then
    Return true
  Endif
  Return false
Endsub

Sub GoUntilHit(GoX, GoY, Prec)
  var LastDir
  LastDir = GetDir(GoX, GoY, Prec)
  var CouldMove
  Repeat
    LastDir = GetDir(GoX, GoY, Prec)
    If LastDir <> 0 and not IsEnd(GoX, GoY, Prec) then
      CouldMove = TryDir(LastDir, Prec)
    Endif
  Until LastDir == 0 or IsEnd(GoX, GoY, Prec) or not CouldMove
  Return LastDir
Endsub

Sub IsEnd(GoX, GoY, Prec)
  If Abs(UO.GetX() - GoX) <= Prec and Abs(UO.GetY() - GoY) <= Prec then
    LogInfo('END FOUND')
    Return true
   else
    Return false
  Endif
Endsub

Sub GetDir(GoX, GoY, Prec)
  var MyX = UO.GetX(), MyY = UO.GetY(), DiffX = Abs(UO.GetX() - GoX), DiffY = Abs(UO.GetY() - GoY), GoDir = 0
  If (DiffX / (DiffY + 0.1)) >= 2 then
    If MyX > GoX then
      GoDir = 7
     else
      GoDir = 3
    Endif
   else
    If (DiffY / (DiffX + 0.1)) >= 2 then
      If MyY > GoY then
        GoDir = 5
       else
        GoDir = 1
      Endif
     else
      If (MyX > GoX) and (MyY > GoY) then
        GoDir = 6
       else
        If (MyX > GoX) and (MyY < GoY) then
          GoDir = 8
         else
          If (MyX < GoX) and (MyY > GoY) then
            GoDir = 4
           else
            If (MyX < GoX) and (MyY < GoY) then
              GoDir = 2
            Endif
          Endif
        Endif
      Endif
    Endif
  Endif
  Return GoDir
Endsub

Sub Tracer(StartDir, Direction, Prec)
  var CurDir = StartDir, Result
  Repeat
    Result = TryDir(CurDir, Prec)
    If not Result then
      CurDir = AddToDir(CurDir, Direction, Prec)
    Endif
  Until Result
  Return Result
Endsub

Sub AddToDir(Dir, Cnt, Prec)
  var NewDir = Dir
  NewDir = NewDir + Cnt
  While NewDir > 8
    NewDir = NewDir - 8
  Wend
  While NewDir < 1
    NewDir = NewDir + 8
  Wend
  Return NewDir
Endsub

Sub TryDir(Dir, Prec)
  var BegX = UO.GetX(), BegY = UO.GetY(), Counter = 0, GoX = BegX, GoY = BegY
  Hide()
  GoX = XFromDir(Dir)
  GoY = YFromDir(Dir)
  If not IsPass(GoX, GoY) then
    LogInfo(str(GoX) + ':' + str(GoY) + ' is not passable')
    Return false
  Endif
  Return TurnAndGoDir(Dir, Prec)
Endsub

Sub XFromDir(Dir)
  If Dir == 2 or Dir == 3 or Dir == 4 then
    Return (UO.GetX() + 1)
  Endif
  If Dir == 6 or Dir == 7 or Dir == 8 then
    Return (UO.GetX() - 1)
  Endif
  Return (UO.GetX())
Endsub

Sub YFromDir(Dir)
  If Dir == 8 or Dir == 1 or Dir == 2 then
    Return (UO.GetY() + 1)
  Endif
  If Dir == 4 or Dir == 5 or Dir == 6 then
    Return (UO.GetY() - 1)
  Endif
  Return (UO.GetY())
Endsub

Sub TurnAndGoDir(Dir, Prec)
  var StartDir = GetDirToDir(UO.GetDir(), Prec), StartX = UO.GetX(), StartY = UO.GetY()
  var EndDir, Counter = 0, TestCounter = CheckCnt
  Repeat
    Counter = 0
    LogInfo('Dir: ' + str(StartDir) + ' Counter: ' + str(Counter))
    PressDir(Dir)
    Repeat
      EndDir = GetDirToDir(UO.GetDir(), Prec)
      Wait(DynamicPause)
      Counter = Counter + 1
    Until StartDir <> EndDir or StartY <> UO.GetY() or StartX <> UO.GetX() or Counter >= StepTimeOut / DynamicPause
    TestCounter = TestCounter - 1
    LogInfo('Dir: ' + str(EndDir) + ' Counter: ' + str(Counter))
  Until TestCounter <= 0 or Counter < StepTimeOut/DynamicPause
  If Counter >= StepTimeOut / DynamicPause  then
     LogInfo('Direction timeout reached')
     Return 0
  Endif
  If StartY <> UO.GetY() or StartX <> UO.GetX() then
    Return Dir
  Endif
  TestCounter = CheckCnt
  Repeat
    GoDir(Dir, Prec)
    Counter = 0
    Repeat
      Wait(DynamicPause)
      Counter = Counter + 1
    Until StartY <> UO.GetY() or StartX <> UO.GetX() or Counter >= StepTimeOut / DynamicPause
    TestCounter = TestCounter - 1
  Until TestCounter <= 0 or Counter < StepTimeOut / DynamicPause
  If Counter >= StepTimeOut / DynamicPause then
    LogInfo('Step timeout reached')
    Return 0
   else
    Return Dir
  Endif
Endsub

Sub GetDirToDir(GotDir, Prec)
   var ChangedDir = -GotDir
   ChangedDir = AddToDir(ChangedDir, 5, Prec)
   Return ChangedDir
Endsub

Sub DirToInj(Dir)
  Dim Dirs[8]
   Dirs[1] = 1
   Dirs[2] = 2
   Dirs[3] = 3
   Dirs[4] = 6
   Dirs[5] = 9
   Dirs[6] = 8
   Dirs[7] = 7
   Dirs[8] = 4
  Return (Dirs[Dir])
Endsub

Sub PressDir(Dir)
  Dim Dirs[8]
   Dirs[1] = 35
   Dirs[2] = 40
   Dirs[3] = 34
   Dirs[4] = 39
   Dirs[5] = 33
   Dirs[6] = 38
   Dirs[7] = 36
   Dirs[8] = 37
  UO.Press(Dirs[Dir], 1)
Endsub

Sub GoDir(Dir,Prec)
  var DistanceX = Abs(UO.GetX() - val(UO.GetGlobal('GlobalGoX'))), DistanceY = Abs(UO.GetY() - val(UO.GetGlobal('GlobalGoY'))), GoDistance
  Dim Dirs[8]
   Dirs[1] = 35
   Dirs[2] = 40
   Dirs[3] = 34
   Dirs[4] = 39
   Dirs[5] = 33
   Dirs[6] = 38
   Dirs[7] = 36
   Dirs[8] = 37
  If (DistanceX - Prec) < Speed then
    GoDistance = DistanceX - Prec
   else
    If (DistanceY - Prec) < Speed then
      GoDistance = DistanceY - Prec
     else
      GoDistance = Speed
    Endif
  Endif
  UO.Press(Dirs[Dir], GoDistance)
Endsub

Sub IsPass(X, Y)
  var i
  If UO.GetGlobal('BlindWalk') then
    Return true
  Endif
  Dim Types[54]
   Types[1] = 3
   Types[2] = 25
   Types[3] = 51
   Types[4] = 63
   Types[5] = 113
   Types[6] = 140
   Types[7] = 172
   Types[8] = 219
   Types[9] = 232
   Types[10] = 235
   Types[11] = 239
   Types[12] = 243
   Types[13] = 248
   Types[14] = 251
   Types[15] = 264
   Types[16] = 267
   Types[17] = 282
   Types[18] = 289
   Types[19] = 321
   Types[20] = 379
   Types[21] = 420
   Types[22] = 440
   Types[23] = 476
   Types[24] = 499
   Types[25] = 513
   Types[26] = 542
   Types[27] = 578
   Types[28] = 586
   Types[29] = 622
   Types[30] = 700
   Types[31] = 804
   Types[32] = 1740
   Types[33] = 1758
   Types[34] = 1770
   Types[35] = 1779
   Types[36] = 1779
   Types[37] = 1881
   Types[38] = 1886
   Types[39] = 1801
   Types[40] = 1805
   Types[41] = 1813
   Types[42] = 1820
   Types[43] = 1831
   Types[44] = 1833
   Types[45] = 1843
   Types[46] = 1850
   Types[47] = 1873
   Types[48] = 1876
   Types[49] = 1885
   Types[50] = 1888
   Types[51] = 1946
   Types[52] = 1969
   Types[53] = 2500
   Types[54] = 2539
  For i = 1 to 53 step 2
    If UO.PrivateGetTile(X, Y, -1, Types[i], Types[i + 1]) then
      Return true
    Endif
  Next
  Return false
Endsub

Sub LogInfo(Line)
  If not UO.GetGlobal('Logging') == '0' then
    UO.TextOpen()
    UO.TextPrint(str(UO.GetX()) + ':' + str(UO.GetY()) + ' - ' + Line)
  Endif
Endsub

Sub Reconnector()
  var ReconnectTime, RFlag
  ReconnectTime = '0'
  RFlag = 1
  Repeat
    While UO.ObjAtLayer('Bpack') == ''
      If RFlag then
        ReconnectTime = MakeTime()
        RFlag = 0
      Endif
      Wait(20000)
      UO.Say('')
      Wait(3000)
      UO.Say('')
      Wait(3000)
      UO.Say('')
      Wait(3000)
      UO.LDblClick(357, 164)
      UO.LClick(616, 459)
      Wait(3000)
    Wend
    Wait(3000)
    If (RFlag == 0) and (ReconnectTime <> '0') then
     ;UO.Exec('terminate all')
     ;UO.Exec('exec autoload')
      UO.TextOpen()
      UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
      RFlag = 1
      ReconnectTime = '0'
    Endif
  Until false
Endsub

Sub MakeTime()
  var Ret, Date, Time, a
  Ret = str(UO.Time())
  Time = ''
  For a = 0 to len(Ret)
    Time = Ret[len(Ret) - a] + Time
    If (a == 2) or (a == 4) then
      Time = ':' + Time
    Endif
  Next
  Ret = str(UO.Date())
  Date = ''
  For a = 0 to len(Ret)
    Date = Ret[len(Ret) - a] + Date
    If (a == 2) or (a == 4) then
      Date = '.' + Date
    Endif
  Next
  Ret = Time + ' @ ' + Date
  Return Ret
Endsub


Top
   
PostPosted: 2011-06-01 10:13:23 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А зачем их сразу все запускать?

sub Start()
UO.Exec('exec Mining')
UO.Exec('exec Reconnector')
;UO.Exec('exec DeadWatch')
UO.Exec('exec AntiMacro')
Endsub

_________________
CodeSweeper


Top
   
PostPosted: 2011-06-01 10:37:06 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Ну... Они не мешают друг другу. Реконектор так и работает, Антимакро тоже в "фоновом режиме", а вот DeadWatch, должен был убивать Mining, идти ресаться, добирать кирки и запускать мининг опять. Но на том шарде шахта в миноке внутри ГЗ, так что я просто не дописал.


Top
   
PostPosted: 2011-06-01 12:43:28 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Incorrect User wrote:
А он кирки из пака не берет? А то у меня когда кирка сломалась сразу в банк поломился, хотя в паке были еще 3.


Попробуй так

Code:
Sub Mining_Around()
  var msg_t = 'put the|loosen some rocks', msg_e = 'There is no ore|far away|mining|line of sight|t use'
  var y, x, Time, mx, my, Delay = 5, Try = 0
  For y = -2 to 2
    For x = -2 to 2
      Repeat
        DelJournal(msg_t + '|' + msg_e)
        UO.Print('Mining in ' + str(x) + ',' + str(y))
        Time = UO.Timer()
        Hide()
        UO.WaitTargetTile(TileNum, str(UO.GetX() + x), str(UO.GetY() + y), 0)
        UO.UseType(t_PickAxe)
        Try = Try + 1
        Repeat
          Wait(100)
        Until UO.InJournal(msg_t + '|' + msg_e) or Time + (Delay * 10) < UO.Timer()
        If UO.InJournal('put the') then
          Try = 0
        EndIf
        If UO.Weight >= UO.Str * 4 or UO.Count(t_Pickaxe) == 0 then
          mx = UO.GetX('self')
          my = UO.GetY('self')
          Smelt()
          Unload()
          Walker(mx, my, 0)
        Endif
      Until UO.InJournal(msg_e) or Try == 10
    Next
  Next
Endsub

Sub Unload()
  var a
  Dim t_Ingots[3]
    t_Ingots[0] = '0x1BEF'
    t_Ingots[1] = '0x1BE9'
    t_Ingots[2] = '0x1BF5'
  Walker(2568, 475, 0)
  UO.UseObject(id_BankStone)
  For a = 0 to 2
    While UO.Count(t_Ingots[a])
      CheckLag()
      UO.FindType(t_Ingots[a], -1, 'backpack')
      If UO.FindCount() then
        UO.MoveItem('finditem', -1, id_BankContainer)
        Wait(1000)
       else
        UO.Print('Непонятки')
        Return
      Endif
    Wend
  Next
  While UO.Count(t_PickAxe) < 3
    UO.FindType(t_PickAxe, -1, id_BankContainer)
    If UO.FindCount() then
      CheckLag()
      UO.MoveItem('finditem', -1, 'backpack')
      Wait(1100)
      UO.Equip('Rhand', 'finditem')
     else
      UO.Print('В банке нет Pickaxe')
      UO.Print('Скрипт выключается')
      UO.Exec('terminate all')
    Endif
  Endif
Endsub


Top
   
PostPosted: 2011-06-01 15:26:37 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Теперь нормально. Вопрос, что это такое
Code:
   DelJournal(msg_t + '|' + msg_e)
   UO.Print('Mining in ' + str(x) + ',' + str(y))

Именно интересует как работают сами знаки разделения, почему в одном месте | а в другом , и для чего +

_________________
CodeSweeper


Top
   
PostPosted: 2011-06-01 16:26:21 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Булевские операторы: AND или &&, OR или ||, NOT, <, >, <=, >=, <>
|| = | как частный случай.
Запятая во второй строке есть обычная грамматически форма
Quote:
Копаем в точке с координатами 2451, 2349


Хотел выгнать в поиск но сам не нашел :roll:
Пришлось вспоминать.

А нет вру, нашел. ПОИСК решает!!!

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


Top
   
PostPosted: 2011-06-01 19:29:35 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Quote:
А + зачем? Там нету.


Так складываются строки)

2 + 2 = 4
2 + val("2") = 4
"2" + "2" = "22"
"2" + str(2) = "22"


Очень грубый пример


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

All times are UTC+02:00


Who is online

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