Page 1 of 1

Mining for Forgotten World

Posted: 2006-05-31 19:37:47
by Sanch

Code: Select all

###########################################################################################################################
#_Mining for Forgotten World v1.2_###_Crafted by SaUroN_###################################################################
###########################################################################################################################
# ДЛЯ РАБОТЫ СКРИПТА ВАМ ПОНАДОБИТСЯ:                                                                                     #
# 1. Мин 90% Magery, для убийства элементалей.                                                                            # 
# 2. Дом 1шт.                                                                                                             #
# 3. Сундуки 2шт.                                                                                                         #
# 4. В одном из сундуков много инвизок, реагов, кирок.                                                                    #
#                                                                                                                         #     
# ОСОБЕННОСТИ ШАРДА:                                                                                                      # 
# 1. Невероятно быстрые и сильные елементали.                                                                             #
# 2. Очень быстро ломаются кирки.                                                                                         #
# 3. Очень маленькое расстояние копки от -2 до 2.                                                                         #
# 4. Очень мало руды в одной точке, чар выкапывает все вокруг себя за 5 мин.                                              #
# 5. Мобы видят вас в хиде.                                                                                               # 
#                                                                                                                         #
# ПРИНЦИП РАБОТЫ СКРИПТА:                                                                                                 #
# 1. Чар постоянно добирает необходимое количество регов, бутылок, кирок из сундука в доме, возвращается на прежнее       #
# место копки и продолжает копать в тех координатах в которых остановился                                                 #
# 2. Чар убивает элементалей, как выкопанных до вас так и вами.                                                           #                                  
# 3. Чар телепортируется в следующую шахту от игроков любого цвета.                                                       #
# 4. Когда чар выкапывает все вокруг себя, переходит на следующее место и так ходит по кругу.                             #
# 5. Когда чар проходит полный круг он телепортируется в следующую шахту.                                                 #           
# 6. При наборе максимального веса в 600 телепортируется в дом и все выкопаное складывает в сундук, добирает необходимое. #
# 7. После телепортации в дом, чар входит в дом, при этом дверь в дом будет открыта в течение 0.5 сек.                    # 
#                                                                                                                         #
# РЕКОМЕНДАЦИИ ПО РАБОТЕ СО СКРИПТОМ:                                                                                     #
# 1. Чар ходит и копает по кругу против часовой стрелки.                                                                  #
# 2. Руны в шахты должны бить замарчены в левой центральной части круга по которому будет ходить чар.                     #   
# 3. Т.к. в сам дом телепортация невозможна, чар будет входить в него самостоятельно, при этом руна в                     #
# дом должна быть замарчена паралельно входу, не дальше чем в 5ти шагах (тайтлах).                                        #    
# 4. Для проверки правельности марка руны встаньте вплотную к двери дома со стороны                                       #
# улицы и проидите 5 шагов в пенпендикулярном направлении относительно двери, там замарчте руну в дом.                    #
# 5. !!!ВНИМАНИЕ!!! перед запуском скрипта нажмите Enter и ничего больше не печатайте во время                            #
# работы скрипта, если курсор чата не будет стоять в начале строки, то в скрипте не сработает                             #
# команда uo.press(**), отвечающая за перемещение чара.                                                                   #
# 6. Укажите все используемые обьекты, затем обязательно сложите все                                                      #
# используемые руны в банк, да бы не потерять их при фосмажорных обстоятельствах,                                         #
# в первой сроке скрипте присваемое значение перременной "а" поменяйте на "а = 0", запустите скрипт еще раз.              #
# 7. Используйте скрипт TestPlace для проверки правельности марка рун в шахты.                                            #
# 8. сам же скрипт запускается в доме, запускать нужно Mining.                                                            #                                       
###########################################################################################################################
sub Mining()
VAR a = 0 # 0 <=> используемые объекты указаны # 1 <=> используемые объекты не указаны #
uo.setglobal('recal', '1') #отвечает за телепортацию по шахтам#
uo.setglobal('place', '1') #отвечает за перемещение чара по шахте#
uo.setglobal('circle', '1') #отвечает за телепортацию в следующую шахту при обходе полного круга#
uo.setglobal('back', '0') #отвечает за синхронизацию возвращения на место копки после сгрузки#
if a == 1 then
  uo.print('Укажите сундук с регами, кирками, инвизками, манками')
  uo.exec('addobject Sunduk1')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
  uo.print('Укажите сундук для руды')
  uo.exec('addobject Sunduk2')
  while uo.targeting()
    wait(100) 
  wend
  wait(1000)
  uo.print('Укажите руну к дому')
  uo.exec('addobject Home')
  while uo.targeting()
    wait(100) 
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 1')
  uo.exec('addobject mine1')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 2')
  uo.exec('addobject mine2')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 3')
  uo.exec('addobject mine3')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 4')
  uo.exec('addobject mine4')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 5')
  uo.exec('addobject mine5')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 6')
  uo.exec('addobject mine6')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 7')
  uo.exec('addobject mine7')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 8')
  uo.exec('addobject mine8')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 9')
  uo.exec('addobject mine9')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 10')
  uo.exec('addobject mine10')
  while uo.targeting()
    wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 11')
  uo.exec('addobject mine11')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 12')
  uo.exec('addobject mine12')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 13')
  uo.exec('addobject mine13')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 14')
  uo.exec('addobject mine14')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
  uo.print('Укажите руну в шахту 15')
  uo.exec('addobject mine15')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 16')
  uo.exec('addobject mine16')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 17')
  uo.exec('addobject mine17')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 18')
  uo.exec('addobject mine18')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 19')
  uo.exec('addobject mine19')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 20')
  uo.exec('addobject mine20')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 21')
  uo.exec('addobject mine21')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 22')
  uo.exec('addobject mine22')
  while uo.targeting()
      wait(100)
  wend
  wait(1000)
    uo.print('Укажите руну в шахту 23')
  uo.exec('addobject mine23')
  while uo.targeting()
      wait(100)
  wend
  return
endif
uo.exec('exec CheckingItems')
end sub

sub CheckingItems()
VAR b
uo.findtype('0x0F0E') #тип пустых бутылок#
if uo.findcount() > 0 then
  uo.moveitem('finditem', '-1', 'Sunduk1')
  wait(1000)
  checklag()
endif
DIM Ore[4] 
Ore[0] = '0x19B9' #тип 4ех и более оров#
Ore[1] = '0x19B8' #тип 3ех оров#
Ore[2] = '0x19BA' #тип 2ух оров#
Ore[3] = '0x19B7' #тип 1го ора#
for var a = 0 to 3 
  uo.findtype(Ore[a]) 
  while uo.findcount() > 0 
    uo.moveitem('finditem', '-1', 'Sunduk2') 
    wait(1000) 
    checklag()
    uo.findtype(Ore[a]) 
  wend 
next 
uo.useobject('Sunduk1')
wait(1000)
checklag()
DIM Reg[3] 
Reg[0] = '0x0F7A' #Black Pearl#  
Reg[1] = '0x0F7B' #Bood Moss#   
Reg[2] = '0x0F86' #Mandrake Root#          
for b = 0 to 2 
  if uo.count(Reg[b]) < 50 then 
    uo.findtype(Reg[b], '-1', 'Sunduk1') 
    if uo.findcount() > 0 then 
      uo.moveitem('finditem', '50') 
      wait(1000)
      checklag() 
    else 
      uo.print('Нет необходимого количества регов в сундуке') 
      return
    endif 
  endif 
next
if uo.count('0x0F08') < 5 then #тип инвизок#
  uo.findtype('0x0F08', '-1', 'Sunduk1') 
  if uo.findcount() > 0 then 
    uo.moveitem('finditem', '5') 
    wait(1000) 
    checklag()
  else 
    uo.print('Нет необходимого количества инвизок в сундуке')     
    ;return
  endif 
endif 
uo.findtype('0x0E85') #тип кирок#
while uo.findcount() < 7 
  uo.findtype('0x0E85', '-1', 'Sunduk1')
  if uo.findcount() > 0 then
    uo.moveitem('finditem', '1')
  else 
    uo.print('Нет необходимого количества кирок в сундуке')
    return
  endif
  wait(1000)
  checklag()
  uo.findtype('0x0E85')
wend
if val(uo.getglobal('back')) == 1 then
  wait(50)
else
  uo.exec('exec Teleportation')
endif
end sub

sub Teleportation()
VAR a, b, c
VAR d = uo.getx('self')
repeat
  while uo.mana < 11
    uo.warmode('0')
    uo.useskill('Meditation')
    wait(1000)
  wend
  a = 0
  if uo.injournal('GM') or uo.injournal('Admin') or uo.injournal('Seer') or uo.injournal('Counselor') or uo.injournal('Developer') then
    uo.usetype('0x0F08')
    uo.closeuo()
  else
    wait(50)
  endif
  uo.deletejournal()
  if val(uo.getglobal('recal')) == 1 then
    uo.waittargetobject('mine1')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 2 then
    uo.waittargetobject('mine2')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 3 then
    uo.waittargetobject('mine3')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 4 then
    uo.waittargetobject('mine4')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 5 then
    uo.waittargetobject('mine5')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 6 then
    uo.waittargetobject('mine6')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 7 then
    uo.waittargetobject('mine7')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 8 then
    uo.waittargetobject('mine8')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 9 then
    uo.waittargetobject('mine9')
    uo.cast('Recall')
  else
    wait(50)
  endif
  if val(uo.getglobal('recal')) == 10 then
    uo.waittargetobject('mine10')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 10 then
    uo.waittargetobject('mine10')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 11 then
    uo.waittargetobject('mine11')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 12 then
    uo.waittargetobject('mine12')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 13 then
    uo.waittargetobject('mine13')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 14 then
    uo.waittargetobject('mine14')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 15 then
    uo.waittargetobject('mine15')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 16 then
    uo.waittargetobject('mine16')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 17 then
    uo.waittargetobject('mine17')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 18 then
    uo.waittargetobject('mine18')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 20 then
    uo.waittargetobject('mine20')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 21 then
    uo.waittargetobject('mine21')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 22 then
    uo.waittargetobject('mine22')
    uo.cast('Recall')
  else
    wait(50)
  endif
    if val(uo.getglobal('recal')) == 23 then
    uo.waittargetobject('mine23')
    uo.cast('Recall')
  else
    wait(50)
  endif
  repeat 
    wait(100)
    a = a + 1
  until a > 35 or d <> uo.getx('self') or uo.injournal('The spell fizzles.')
  wait(500)
until not uo.injournal('The spell fizzles.')
b = val(uo.getglobal('recal')) + 1
uo.setglobal('recal', str(b))
if val(uo.getglobal('recal')) > 23 then
  uo.setglobal('recal', '1')
endif
uo.set('finddistance', '7')
uo.findtype('0x000E', '-1', '1') #тип элементаля#
if uo.findcount() > 0 then 
  uo.usetype('0x0F08')
  uo.exec('exec Teleportation')
  return
endif
if val(uo.getglobal('back')) == 0 then
  uo.exec('exec CheckingPlayers')
  uo.setglobal('place', '1')
  uo.setglobal('circle', '1')
  uo.exec('exec Obkopka')  
else
  uo.setglobal('back', '0')
endif
end sub

sub CheckingPlayers()
VAR a, b
uo.ignore('self', 'on')
DIM Chars[2]
Chars[0] = '0x0190' #тип игрока мужского пола# 
Chars[1] = '0x0191' #тип игрока женского пола#
while not uo.dead()
  for a = 0 to 1
    if uo.injournal('GM') or uo.injournal('Admin') or uo.injournal('Seer') or uo.injournal('Counselor') or uo.injournal('Developer') then
      uo.usetype('0x0F08')
      uo.closeuo()
    else
      wait(50)
    endif     
    while val(uo.getglobal('find')) == 1
      wait(50)
    wend 
    uo.set('finddistance', '15')
    uo.findtype(Chars[a], '-1', '1')  
    if uo.findcount() > 0 then
      uo.usetype('0x0F08')
      uo.exec('terminate Teleportation')
      uo.exec('terminate Obkopka')
      uo.exec('terminate ChengePlace')
      uo.exec('exec Teleportation')
      return
    else
      wait(500)
    endif
  next
wend
end sub

sub Obkopka()
VAR mx, my, mz, a, b, c, d, e, f
while not uo.dead()
  if uo.injournal('GM') or uo.injournal('Admin') or uo.injournal('Seer') or uo.injournal('Counselor') or uo.injournal('Developer') then
    uo.usetype('0x0F08')
    uo.closeuo()
  else
    wait(50)
  endif     
  uo.deletejournal()
  mx = uo.getx('self')
  my = uo.gety('self')
  mz = uo.getz('self')
  for a = mx-2 to mx+2 
    for b = my-2 to my+2
      while not uo.Hidden()
        c = 0 
        uo.warmode('0') 
        uo.useskill('Stealth') 
        repeat
          wait(100)
          c = c + 1
        until uo.Hidden() or c > 40 
      wend
      uo.print('!!!КОПАЕМ ТУТ!!!>>> : '+str(mx-a)+' '+str(my-b))
      d = val(uo.getglobal('place')) + 1
      uo.setglobal('place', str(d))
      while not uo.injournal('no ore here') and not uo.injournal('location') and not uo.injournal('far away') and not uo.injournal('in rock') and not uo.injournal('You broke')
        if uo.injournal('GM') or uo.injournal('Admin') or uo.injournal('Seer') or uo.injournal('Counselor') or uo.injournal('Developer') then
          uo.usetype('0x0F08')
          uo.closeuo()
        else
          wait(50)
        endif     
        uo.deletejournal() 
        if uo.waiting() then 
          uo.canceltarget() 
        else
          wait(50)
        endif
        uo.waittargettile('1341', str(a), str(b), str(mz)) 
        uo.usetype('0x0E85') #тип кирки#
        while not uo.injournal('You put') and not uo.injournal('location') and not uo.injournal('no ore') and not uo.injournal('but fail') and not uo.injournal('far away') and not uo.injournal('in rock') and not uo.injournal('You broke')
          wait(500)
        wend
        uo.setglobal('find', '1')
        wait(200)
        uo.set('finddistance', '7')
        uo.findtype('0x000E', '-1', '1') #тип элементаля#
        if uo.findcount() > 0 then 
          uo.setglobal('find', '0')
          uo.usetype('0x0F08')
          uo.exec('exec Teleportation')
          uo.exec('terminate CheckingPlayers')
          return
        else 
          uo.setglobal('find', '0')
        endif      
        if val(uo.getglobal('place')) > 25 then
          uo.setglobal('place', '1')
          uo.exec('exec ChengePlace')          
          return
        else
          wait(50)
        endif
        if uo.weight > 600 then #максимальный вес#
          uo.setglobal('back', '1')
          uo.exec('terminate CheckingPlayers')
          GoHome()
          CheckingItems()
          Teleportation()
          Back()
          uo.exec('exec CheckingPlayers')
        else
          wait(50)
        endif
      wend 
      if uo.injournal('GM') or uo.injournal('Admin') or uo.injournal('Seer') or uo.injournal('Counselor') or uo.injournal('Developer') then
        uo.usetype('0x0F08')
        uo.closeuo()
      else
        wait(50)
      endif     
      uo.deletejournal()
    next
  next
wend
end sub

sub ChengePlace()
VAR a, b, c, d, e, f, g, h, i, j, k
if val(uo.getglobal('circle')) > 3 then
  uo.setglobal('circle', '1')
  uo.exec('terminate CheckingPlayers')
  uo.exec('exec Teleportation')
  return
endif
if val(uo.getglobal('circle')) == 1 then
  if uo.getdir('self') == 3 then
    a = 1
  else
    a = 2
  endif
  for b = 1 to a
    uo.press(40) 
    wait(300)
  next
  for c = 1 to 3 
    uo.press(34) 
    wait(300) 
  next
  for d = 1 to 2 
    uo.press(39) 
    wait(300) 
  next
  endif
endif
if val(uo.getglobal('circle')) == 2 then
  if uo.getdir('self') == 1 then
    a = 1
  else
    a = 2
  endif
  for e = 1 to a
    uo.press(39) 
    wait(300) 
  next
  for f = 1 to 3 
    uo.press(33) 
    wait(300) 
  next
  for g = 1 to 2 
    uo.press(38) 
    wait(300) 
    next
  endif
if val(uo.getglobal('circle')) == 3 then
  if uo.getdir('self') == 7 then
    a = 1
  else
    a = 2
  endif
  for h = 1 to a
    uo.press(38) 
    wait(300) 
  next
  for i = 1 to 3 
    uo.press(36) 
    wait(300) 
  next
  for j = 1 to 2 
    uo.press(37) 
    wait(300) 
  next
endif
k = val(uo.getglobal('circle')) + 1
uo.setglobal('circle', str(k))
uo.exec('exec Obkopka')
end sub

sub checklag()
uo.click('backpack')
while not uo.injournal('backpack')
  wait(100)
wend
uo.deletejournal('backpack')
end sub

sub GoHome()
VAR a, b, c, d, e
uo.warmode('0')
a = uo.getx('self')
repeat
  while uo.mana < 11 
    uo.warmode('0')
    uo.useskill('Meditation')
    wait(1000)
  wend
  if uo.injournal('GM') or uo.injournal('Admin') or uo.injournal('Seer') or uo.injournal('Counselor') or uo.injournal('Developer') then
    uo.usetype('0x0F08')
    uo.closeuo()
  else
    wait(50)
  endif  
  b = 0
  uo.deletejournal()
  uo.waittargetobject('Home')
  uo.cast('Recall')
  repeat
    wait(100)
    b = b + 1
  until b > 35 or a <> uo.getx('self') or uo.injournal('The spell fizzles.')
until not uo.injournal('The spell fizzles.')
for c = 1 to 6
  uo.press(33)
  wait(300)
next
uo.opendoor()
wait(500)
uo.press(33)
wait(300)
uo.opendoor()
for d = 1 to 6
  uo.press(33)
  wait(300)
next
e = val(uo.getglobal('recal')) - 1
uo.setglobal('recal', str(e))
end sub

sub Back()
VAR a, b, c, d, e, f, g, h, i, j
if val(uo.getglobal('circle')) > 1 then
  if uo.getdir('self') == 3 then
    f = 1
  else
    f = 2
  endif
  for a = 1 to f
    uo.press(40) 
    wait(300)
  next
  for b = 1 to 3 
    uo.press(34) 
    wait(300) 
  next
  for c = 1 to 2 
    uo.press(39) 
    wait(300) 
  next
endif
endif
if val(uo.getglobal('circle')) > 2 then
  if uo.getdir('self') == 1 then
    f = 1
  else
    f = 2
  endif
  for d = 1 to f
    uo.press(39) 
    wait(300) 
  next
  for e = 1 to 3 
    uo.press(33) 
    wait(300) 
  next
  for g = 1 to 2 
    uo.press(38) 
    wait(300) 
    next
endif
if val(uo.getglobal('circle')) > 3 then
  if uo.getdir('self') == 7 then
    f = 1
  else
    f = 2
  endif
  for h = 1 to f
    uo.press(38) 
    wait(300) 
  next
  for i = 1 to 3 
    uo.press(36) 
    wait(300) 
  next
  for j = 1 to 2 
    uo.press(37) 
    wait(300) 
  next
endif
end sub

sub TestPlace()
VAR a, b, c, d, e, f, g, h, i
for a = 1 to 2 
  uo.press(40) 
  wait(300) 
next 
for b = 1 to 3 
  uo.press(34) 
  wait(300) 
next
for c = 1 to 3 
  uo.press(39) 
  wait(300) 
next
for d = 1 to 3 
  uo.press(33) 
  wait(300) 
next
for e = 1 to 3 
  uo.press(38) 
  wait(300) 
next
for f = 1 to 3 
  uo.press(36) 
  wait(300) 
next
for g = 1 to 3 
  uo.press(37) 
  wait(300) 
next
for h = 1 to 3 
  uo.press(35) 
  wait(300) 
next
for i = 1 to 2 
  uo.press(40) 
  wait(300) 
next 
end sub

Posted: 2006-05-31 19:42:03
by Nmy
молодец 8)

Posted: 2007-04-30 13:11:22
by Kazoo
а когда чарджи кончаюца, руками ремарчиш?

Posted: 2007-05-04 09:10:12
by Sanch
Да, просто скрипт написан оч давно, тогда еще мне не пришла идея ремарка рун, да и необходимости то особой не было.

Posted: 2007-05-13 07:43:47
by brisk
Огромное спасибо автору за скрипт, я его слегка переделал. В частности, добавил автоматический антимакрос из соседнего топика (ламбер на говношард).

Добавляется просто: надо целиком передрать функцию AntiMacro(), выдрать оттуда цикл while not uo.dead(), паузу, а также использование кирки, и запускать его с каждым ударом. Получается весьма прикольно: гамп только появляется, и тут же исчезает.

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

Posted: 2007-05-15 09:25:56
by Sanch
Я вспомнил, там у меня был гемор с синхронизацией поска чаров и элема, на тот период развития моего скриптописания я решения так и не нашел, теперь знаю, надо бут внедрить, когда время будет.

А вообще скрипт сильно урезан тут, тк проблема убийства элемов зашла в тупик, не всегда он их убивал, поэтому пришлось от этой идеи отказаться.

Posted: 2008-02-23 11:52:22
by some
Эксперты подскажите пожалуйста, почему он из сундука каждый раз добирает регов и кирок, если на чаре они есть в избытке???
Я так подразумеваю, что это кроется сдесь

Code: Select all

sub CheckingItems() 
VAR b 
uo.findtype('0x0F0E') #òèï ïóñòûõ áóòûëîê# 
if uo.findcount() > 0 then 
  uo.moveitem('finditem', '-1', 'Sunduk1') 
  wait(1000) 
  checklag() 
endif 
DIM Ore[4] 
Ore[0] = '0x19B9' #òèï 4åõ è áîëåå îðîâ# 
Ore[1] = '0x19B8' #òèï 3åõ îðîâ# 
Ore[2] = '0x19BA' #òèï 2óõ îðîâ# 
Ore[3] = '0x19B7' #òèï 1ãî îðà# 
for var a = 0 to 3 
  uo.findtype(Ore[a]) 
  while uo.findcount() > 0 
    uo.moveitem('finditem', '-1', 'Sunduk2') 
    wait(1000) 
    checklag() 
    uo.findtype(Ore[a]) 
  wend 
next 
uo.useobject('Sunduk1') 
wait(1000) 
checklag() 
DIM Reg[3] 
Reg[0] = '0x0F7A' #Black Pearl#  
Reg[1] = '0x0F7B' #Bood Moss#    
Reg[2] = '0x0F86' #Mandrake Root#          
for b = 0 to 2 
  if uo.count(Reg[b]) < 50 then 
    uo.findtype(Reg[b], '-1', 'Sunduk1') 
    if uo.findcount() > 0 then 
      uo.moveitem('finditem', '50') 
      wait(1000) 
      checklag() 
    else 
      uo.print('Íåò íåîáõîäèìîãî êîëè÷åñòâà ðåãîâ â ñóíäóêå') 
      return 
    endif 
  endif 
next 
if uo.count('0x0F08') < 5 then #òèï èíâèçîê# 
  uo.findtype('0x0F08', '-1', 'Sunduk1') 
  if uo.findcount() > 0 then 
    uo.moveitem('finditem', '5') 
    wait(1000) 
    checklag() 
  else 
    uo.print('Íåò íåîáõîäèìîãî êîëè÷åñòâà èíâèçîê â ñóíäóêå')      
    ;return 
  endif 
endif 
uo.findtype('0x0E85') #òèï êèðîê# 
while uo.findcount() < 7 
  uo.findtype('0x0E85', '-1', 'Sunduk1') 
  if uo.findcount() > 0 then 
    uo.moveitem('finditem', '1') 
  else 
    uo.print('Íåò íåîáõîäèìîãî êîëè÷åñòâà êèðîê â ñóíäóêå') 
    return 
  endif 
  wait(1000) 
  checklag() 
  uo.findtype('0x0E85') 
wend 
if val(uo.getglobal('back')) == 1 then 
  wait(50) 
else 
  uo.exec('exec Teleportation') 
endif 
end sub 
Как ни старался сделать - неполучаеться.
Вышеуказанный код - автора, без моих изменений.
Помогите пожалуйста!

Posted: 2008-03-17 16:19:51
by fritz321
еще подскажите плиз как именно бриск вставил антимакрос и таймер,
а то я чё то не врублюсь...

Posted: 2008-03-18 17:02:07
by fritz321
up pliz

Posted: 2008-03-19 18:31:31
by fritz321
ну люди подскажите....
вот так я изменил скрипт антимакроса но он не сразабатывает если его запускать после каждого удара киркой

Code: Select all

sub OneClick() 

   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 

sub AntiMacro() 

  
      if not uo.LastGump('replyed') then 
         if uo.LastGump('text', 0) == 'Antimacros System' then 
            OneClick() 
         end if 
      endif 
goto start
    
end sub

Code: Select all

goto start
это что бы возвращялось на начало копания... но не срабатывает..
антимакрос система не убирается

Posted: 2008-03-28 10:16:46
by some
В этой теме никто не помогал... знаешь как я копал с этим скриптом ?
Забиндил

Code: Select all

ub OneClick() 

   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
на кнопочку потом в пилоте прост овызывал эту функцию и ниче=)
копалось нормально

Posted: 2008-04-05 10:11:53
by Vitle
Скприт будет сбиваться при ворлд сейве, мне кажется. Нет?
Может в ходилку чеклаг добавить? перед каждым шагом. И можно заменить уо.пресс на аддстеп.

Я прост собираюсь так сделать. Если я не прав - поправьте сразу плс. Что бы я не напортачил )

Posted: 2008-04-05 10:29:30
by Purgen
Vitle wrote:И можно заменить уо.пресс на аддстеп.
Варварский метод )
Окажешься где-то посреди окиана через пару часов скрипта )

Re: Mining for Forgotten World

Posted: 2010-12-08 23:31:48
by kappagi
старый скриптик, но работает стабильно, мож у кого есть килялка на него, а то он реколится как елема увидет))) трус)))) спс)