Yoko

All sides of Injection
It is currently 2025-11-23 01:41:13

All times are UTC+02:00




Post new topic  Reply to topic  [ 2 posts ] 
Author Message
PostPosted: 2010-02-15 21:14:03 
Offline

Joined: 2010-02-15 21:07:43
Posts: 1
Значит так, скрипт полностью рабочий. За все время, которое он у меня работал не было ни одной ошибки. Писал специально для шарда uo-dominaria.ru. Скрипт очень просто написан, так что разобраться в нем не составит труда. Присутствует относительно большое количество проверок, но лучше перебдеть.. =)

Описание: Чар копает в шахте брита, набрал вес - телепорт домой. Убили - пошел воскресился и опять копать. Добор регов присутствует. Короче вечная копка, запускайте скрипт и смело уезжайте в отпуск =)

Инструкция: Все, что от вас требуется, это поменять ID сундуков, и настроить телепорт по рунбуку, чтобы реколился по номерам ваших рун домой и в пещеру. Значит 1ую руну маркните где-то в районе 24 координаты из массива, а вторую в районе 50, это для того, чтобы чар не уперался в стену, т.к. ходилка тут хоть и хорошая, но не идеальная =) И еще, когда чар реколится домой, он делает 5 шагов вверх к сундуку, куда будет класть руду, и 5 шагов от сундука, когда все перемещения и проверки закончит. Советую зарядить рунбук на 100-200 зарядов.


Code:
##############################################
############## ОСНОВНАЯ ЧАСТЬ ################
##############################################

sub main()
Var i, j, l

   
   Dim x[58]
   x[1] = 1278
   x[2] = 1276
   x[3] = 1274
   x[4] = 1271
   x[5] = 1269
   x[6] = 1273
   x[7] = 1275
   x[8] = 1275
   x[9] = 1275
   x[10] = 1274
   x[11] = 1273
   x[12] = 1272
   x[13] = 1271
   x[14] = 1271
   x[15] = 1268
   x[16] = 1266
   x[17] = 1265
   x[18] = 1267
   x[19] = 1265
   x[20] = 1263
   x[21] = 1260
   x[22] = 1260
   x[23] = 1258
   x[24] = 1256
   x[25] = 1255
   x[26] = 1262
   x[27] = 1260
   x[28] = 1257
   x[29] = 1261
   x[30] = 1257
   x[31] = 1260
   x[32] = 1261
   x[33] = 1261
   x[34] = 1261
   x[35] = 1261
   x[36] = 1259
   x[37] = 1255
   x[38] = 1252
   x[39] = 1253
   x[40] = 1250
   x[41] = 1249
   x[42] = 1247
   x[43] = 1245
   x[44] = 1242
   x[45] = 1240
   x[46] = 1238
   x[47] = 1235
   x[48] = 1232
   x[49] = 1232
   x[50] = 1237
   x[51] = 1241
   x[52] = 1235
   x[53] = 1234
   x[54] = 1235
   x[55] = 1232
   x[56] = 1229
   x[57] = 1227
   x[58] = 1230

   
   Dim y[58]
   y[1] = 1217
   y[2] = 1215
   y[3] = 1213
   y[4] = 1214
   y[5] = 1212
   y[6] = 1216
   y[7] = 1218
   y[8] = 1221
   y[9] = 1223
   y[10] = 1225
   y[11] = 1223
   y[12] = 1220
   y[13] = 1224
   y[14] = 1226
   y[15] = 1225
   y[16] = 1223
   y[17] = 1220
   y[18] = 1217
   y[19] = 1215
   y[20] = 1217
   y[21] = 1221
   y[22] = 1226
   y[23] = 1228
   y[24] = 1230 ##################
   y[25] = 1232
   y[26] = 1227
   y[27] = 1230
   y[28] = 1234
   y[29] = 1234
   y[30] = 1238
   y[31] = 1239
   y[32] = 1242
   y[33] = 1244
   y[34] = 1247
   y[35] = 1250
   y[36] = 1246
   y[37] = 1245
   y[38] = 1245
   y[39] = 1242
   y[40] = 1242
   y[41] = 1246
   y[42] = 1245
   y[43] = 1242
   y[44] = 1244
   y[45] = 1246
   y[46] = 1248
   y[47] = 1247
   y[48] = 1248
   y[49] = 1251
   y[50] = 1251
   y[51] = 1254
   y[52] = 1249
   y[53] = 1256
   y[54] = 1259
   y[55] = 1260
   y[56] = 1260
   y[57] = 1257
   y[58] = 1252
   

      for i = 1 to 58
      j = 0
      l = 0
      Walker(x[i],y[i],1)
      if uo.life == 0 then
         if i < 36 then
            ress()
            mine1()
            wait(10000)
         else
            ress1()
            mine2()
            wait(10000)
         end if
      end if
      if uo.weight>500 then
         Home()
         if uo.life == 0 then
            if i < 36 then
               ress()
               mine1()
               wait(10000)
            else
               ress1()
               mine2()
               wait(10000)
            end if
         else
         wait(10000)
         repeat
         j = j + 1
         uo.press(38)
         wait(500)
         until j > 4
         wait(500)
                    pereklad2()
         wait(500)
                    pereklad3()
         wait(500)
                  CheckingItems()
         wait(500)
         repeat
         uo.press(40)
         wait(500)
         l = l + 1
         until l > 4
                 if i < 36 then
               mine1()
               wait(6000)
            else
               mine2()
               wait(6000)
            end if
         hide()
      end if
      end if
      Walker(x[i],y[i],1)
                    minround()
      if i == 58 then
         i = 0
                    mine1()
      end if
   Next
end sub

###############################################
############## ПЕРЕКЛАД РУДЫ ##################
###############################################

sub pereklad2()
VAR b
var Sunduk1 = 0x40034F27
DIM Ore[4]
Ore[0] = '0x19B7' #
Ore[1] = '0x19B8' #
Ore[2] = '0x19BA' #
Ore[3] = '0x19B9' #
uo.useobject(Sunduk1)
for b=0 to 3
  if uo.count(Ore[b]) > 0 then
   uo.findtype(Ore[b], '-1', 'backpack')
   if uo.findcount() > 0 then
    repeat
     uo.moveitem('finditem', '0', Sunduk1)
     wait(1000)
     UO.FindType(Ore[b],'-1','backpack')
    until not UO.FindCount()
   else
    uo.print('Нечего перемещать')
    return
   endif
  endif
next
end sub

#######################################################
################# ПЕРЕКЛАД КАМНЕЙ #####################
#######################################################

sub pereklad3()
   #****???*****#
   # (C) Cooper
   #****v1.0****#
   var tovar = 0x136C
   var istok = 0x40045286
   var priem = 0x40058E8C
   UO.FindType(tovar,'-1','backpack')
   If UO.FindCount() > 0 then
      repeat
         UO.MoveItem('finditem', '0', priem)
         wait(500)
         UO.FindType(tovar,'-1','backpack')
      until not UO.FindCount()
      UO.Print('Все переложил')
   else
      UO.Print('Нечего перекладывать')
   endif
end sub

########################################################
############# ТЕЛЕПОРТ ДОМОЙ ###########################
########################################################

sub Home()
   UO.Recall('0x400482CD','1') ##### 1 номер слота ###
   wait(70000)
end sub

########################################################
############# ТЕЛЕПОРТ В ПЕЩЕРУ  1 ########################
########################################################

sub mine1()
   UO.Recall('0x400482CD','2') ;
end sub

########################################################
############# ТЕЛЕПОРТ В ПЕЩЕРУ 2 ########################
########################################################

sub mine2()
   UO.Recall('0x400482CD','3') ;
end sub

########################################################
############# ТЕЛЕПОРТ В ПЕЩЕРУ 3 ########################
########################################################

sub mine3()
   UO.Recall('0x400482CD','4') ; не трогать =)
end sub

########################################################
############# СЧЕТЧИК ШАГОВ ############################
########################################################

###UO.print("Точка номер "+str(i) +" Осталось еще обойти=  " +str(58-i))###

########################################################
############# ВОСКРЕШАЕМСЯ 1 ###########################
########################################################

sub ress()
    uo.WarMode(0)
   Walker(1263,1226,1)
   Walker(1261,1251,1)
   Walker(1270,1254,1)
   wait(500000)
   uo.usefromground('0x0005')
   wait(10000)
end sub

########################################################
############ ВОСКРЕШАЕМСЯ 2 ############################
########################################################

sub ress1()
    uo.WarMode(0)
   Walker(1239,1247,1)
   Walker(1243,1245,1)
   Walker(1258,1245,1)
   Walker(1269,1255,1)
   wait(500000)
   uo.usefromground('0x0005')
   wait(10000)
end sub

sub main5()
   Walker(1260,1221,1)
end sub

#########################################################
################ КОПАЕМ #################################
#########################################################

sub minround()
   VAR Kirka = '0x0E85'   ;
   VAR TileNum = '1339'   ;
   VAR x, y, t, k, a
   VAR MaxTime = 100   ;
   VAR ms1 = "There is nothing"
   VAR ms2 = "You cannot mine"
   VAR ms3 = "You put the"
   VAR ms4 = "You loosen some rocks"
   VAR ms5 = "reach that."
   VAR ms6 = "Try mining"
   VAR ms7 = "You have no"
   VAR ms8 = "You must wait"
   VAR ms9 = "Iron"
   VAR ms10 = "Copper"
   VAR ms11 = "Silver"
   for y=0 to 2
      for x=-2 to 2
         k = 0
         repeat
                hide()
            UO.DeleteJournal()
            t = UO.Timer()
            k = k + 1
            wait(300)
            UO.WaitTargetTile( 0, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
            UO.UseType( Kirka )
            repeat
               wait(500)
            until UO.InJournal(ms1) OR uo.dead() OR uo.life == 0 OR UO.InJournal(ms2) OR UO.InJournal(ms9) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR UO.InJournal(ms8) OR ((t + MaxTime) < UO.Timer())
         until uo.life == 0 OR uo.dead() OR k > 25 OR UO.InJournal(ms9) OR UO.InJournal(ms10) OR UO.InJournal(ms11) OR ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) AND NOT UO.InJournal(ms9) AND NOT UO.InJournal(ms10))
         next
         next
end sub

#############################################################
##################### ПРЯЧЕМСЯ ##############################
#############################################################

sub hide()
if not uo.hidden() then
uo.WarMode(0)
uo.useskill('Hiding')
wait(4000)
end if
end sub

############################################################
############# ПЕРЕХОДНИК ###################################
############################################################

sub perexod()
UO.Exec('terminate main')
wait(1000)
uo.exec('exec main')
end sub

############################################################
################ ДОБОР РЕГОВ ###############################
############################################################

sub CheckingItems()
VAR b
VAR Sunduk1 = 0x4004D626 ######## ТИП СУНДУКА С РЕГАМИ ####
DIM Reg[3]
Reg[0] = '0x0F7A' #Black Pearl#
Reg[1] = '0x0F7B' #Bood Moss#
Reg[2] = '0x0F86' #Mandrake Root#
uo.useobject(Sunduk1)
for b = 0 to 2
if uo.count(Reg[b]) < 5 then
uo.findtype(Reg[b], '-1', Sunduk1)
if uo.findcount() > 0 then
uo.moveitem('finditem', '10')
wait(1000)
else
uo.print('Нет необходимого количества регов в сундуке')
return
endif
endif
next
end sub

########################################## ХОДИЛКА 3 ##########################
#var Prec=3 # Как близко следует подойти к цели (Precision)
#var MaxTraceDistance=15 # Максимальная длина обхода. Желательно ставить с расчета возможных препятсвий. Если ставить очень #большие числа, кодилка может пойти в обход пол мира чтобы дойти к соседнему дереву.
#var Speed=2 # Длина шага. Сколько шагов делать за раз. Выше 3 ставить смысла нет. Тоесть тупое умножение шагов. Для ламбера #идеально 3, для майнинга - 1.
#var StepTimeOut=400 # Если уперлись в неопознанный обьект, сколько мсек ждать сдвига с места. Если по простому - таймаут #шага. Если поставить сильно маленькие, ходилка начнет трассировать пустые места.
#UO.SetGlobal("Logging","1")  # - показывать отладочные сообщения.
#UO.SetGlobal("BlindWalk","0") # - не использовать проверку тайлов, а использовать ходьбу наощупь. Для майнинга ОБЯЗАТЕЛЬНО #ВКЛЮЧИТЬ.
#В функции IsPass, содержиться список проходимых тайлов.

#Walker(X,Y,Prec) - идем к цели с координатами X,Y. Возвращает 1 в случае успешного достижения цели, и 0 - при невозможном обходе (путь не найден)
#Tracer(StartDir,Direction) - трассировка 1 шага. Возвращает направление по которому получилось сдвинуться с места. StartDir #- направление последнего движения, Direction (-1 или +1) направление обхода. -1 - по часовой стрелке, +1 против часовой #стрелки. Направления скрипт использует личного формата:
#1 - влево вниз
#2 - вниз
#3 - вправо вниз
#4 - вправо
#5 - вправо вверх
#6 - вверх
#7 - влево вверх
#8 - влево
#Tracer(StartDir,Direction) - идеально подходит для рыбалки вдоль берега так как она будет обходить берег бесконечно (1 #запуск функции = 1 шаг обхода).
#####################################################
# WW  W  WW   AA    LL     Kk KK  EE  EE  RRR       #
# WW  W  WW  AA A   LL     Kk K   EEE     R  R      #
# WW  W  WW  AA A   LL     KKK    EEEEE   R R       #
# WW WW  WW  AAAA   LL     KKK    EEE     RRR       #
#  WWW WWW  AA   A   LLLL  KK Kk  EE  EE  R  RR     #
####################################################
var MaxTraceDistance=10
var TraceLoopIncrease=7 #Увеличение MaxTraceDistance при исчерпании количества ходов
var LimitTrace=20 #Сколько шагов в ОБЕ стороны от начальной точки обхода прекращают ходилку (выхода нет).
var Speed=1
var StepTimeOut=500 #Таймаут шага. Устанавливать не в размер пинга, а в размер шага + размер пинга.
# Для ходьбы - 500+Ping
# Для бега/ходьбы на лошади - 300+Ping
# Бег на лошади - 150 + Ping

var CheckCnt=2 #Количество слепых проверок. УВЕЛИЧИВАЕТ В СТОЛЬКО РАЗ ТАЙМАУТ. Использовать только на БЫСТРОМ но НЕСТАБИЛЬНОМ коннекте. При большом пинге будет УЖАС.
var DynamicPause=30 #Минимальные паузы в циклах. Чем меньше число - тем меньше рывков и тем больше нагрузка процессора.

sub ttt()
walker(1165,1661,1)
end sub

Sub Walker(GoX,GoY,Prec)
  UO.SetGlobal("Logging","0")
  UO.SetGlobal("BlindWalk","0")
  var LastDir
  var MoveRes
  var TracerCnt
  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
        return 1
      end if

      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
end sub

Sub FullAroundTrace(StartDir,GoX,GoY,Prec,MaxTrace)
  var LineX=UO.GetX()
  var LineY=UO.GetY()
  var CurDir=StartDir
  var Direction=CountDirection(GoX,GoY,CurDir,Prec)
  var StartX,StartY
  var 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
    end if
    MovesDone=MovesDone+1
    CurDir=AddToDir(CurDir,-Direction,Prec)
  until MovesDone>MaxTrace
  return 0
end sub

Sub CountDirection(GoX,GoY,StartDir,Prec)
  var GoDir=GetDir(GoX,GoY,Prec)
  var MyX=UO.GetX()
  var MyY=UO.GetY()
  if GoDir<StartDir then
    return -1
  end if
  if GoDir>StartDir then
    return 1
  end if
  if Abs(MyX-GoX)>Abs(MyY-GoY) then
    if (GoDir==3 and GoY>MyY) OR (GoDir==7 and GoY<MyY) then
      return -1
    else
      return 1
    end if
  else
    if (GoDir==1 and GoX<MyX) or (GoDir==5 and GoX>MyX) then
      return -1
    else
      return 1
    end if
  end if
end sub

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)
end sub

Sub LinesCrossing(x1,y1,x2,y2,x3,y3,x4,y4,Prec)
  if x1==x3 and y1==y3 then
    return false
  end if
  var z1=(x3-x1)*(y2-y1)-(y3-y1)*(x2-x1)
  var z2=(x4-x1)*(y2-y1)-(y4-y1)*(x2-x1)
  if z1*z2>0 then
    return false
  else
    LogInfo('Vector 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
  end if
end sub

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
  end if
  return false
end sub

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)
    end if
  until LastDir==0 or IsEnd(GoX,GoY,Prec) or not CouldMove
  return LastDir
end sub

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
  end if
end sub

Sub GetDir(GoX,GoY,Prec)
  var MyX=UO.GetX()
  var MyY=UO.GetY()
  var DiffX=Abs(UO.GetX()-GoX)
  var DiffY=Abs(UO.GetY()-GoY)
  var GoDir=0
  if (DiffX/(DiffY+0.1))>=2 then
    if (MyX>GoX) then
      GoDir=7
    else
      GoDir=3
    end if
  else

  if (DiffY/(DiffX+0.1))>=2 then
    if (MyY>GoY) then
      GoDir=5
    else
      GoDir=1
    end if
  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
  end if
  end if
  end if
  end if
  end if
  end if
  return GoDir
end sub

Sub Tracer(StartDir,Direction,Prec)
  var CurDir=StartDir
  var Result
  repeat
    Result=TryDir(CurDir,Prec)
    if not Result then
      CurDir=AddToDir(CurDir,Direction,Prec)
    end if
  until Result
  return Result
end sub

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
end sub

Sub TryDir(Dir,Prec)
  var BegX=UO.GetX() # Ia?aeuiia O
  var BegY=UO.GetY() # Ia?aeuiia Y
  var Counter=0
  var GoX=BegX
  var GoY=BegY
  GoX=XFromDir(Dir)
  GoY=YFromDir(Dir)
  if not IsPass(GoX,GoY) then
    LogInfo(str(GoX)+':'+str(GoY)+' is not passable')
    return false
  end if
  return TurnAndGoDir(Dir,Prec)
end sub

Sub XFromDir(Dir)
  if Dir==2 OR Dir==3 Or Dir==4 then
    return (UO.GetX()+1)
  end if
  if Dir==6 OR Dir==7 Or Dir==8 then
    return (UO.GetX()-1)
  end if
  return (UO.GetX())
end sub

Sub YFromDir(Dir)
  if Dir==8 OR Dir==1 Or Dir==2 then
    return (UO.GetY()+1)
  end if
  if Dir==4 OR Dir==5 Or Dir==6 then
    return (UO.GetY()-1)
  end if
  return (UO.GetY())
end sub

Sub TurnAndGoDir(Dir,Prec)
  var StartDir=GetDirToDir(UO.GetDir(),Prec)
  var StartX=UO.GetX()
  var StartY=UO.GetY()
  var EndDir
  var Counter=0
  var TestCounter=CheckCnt

#Direction Test
  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
  end if
  #End direction Test

  if StartY<>UO.GetY() or StartX<>UO.GetX() then
    return Dir
  end if

  #Start Primary test
  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
  #End primary test

  if Counter>=StepTimeOut/DynamicPause then
    LogInfo('Step timeout reached')
    return 0
  else
    return Dir
  end if
end sub

Sub GetDirToDir(GotDir,Prec)
   var ChangedDir=-GotDir
   ChangedDir=AddToDir(ChangedDir,5,Prec)
   return ChangedDir
end sub

Sub DirToInj(Dir)
   dim Dirs[9]
   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])
end sub

Sub PressDir(Dir)
   dim Dirs[9]
   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)
end sub

Sub GoDir(Dir,Prec)
   dim Dirs[9]
   Dirs[1]=35
   Dirs[2]=40
   Dirs[3]=34
   Dirs[4]=39
   Dirs[5]=33
   Dirs[6]=38
   Dirs[7]=36
   Dirs[8]=37

   var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX")))
   var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY")))
   var GoDistance
   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)
end sub

Sub IsPass(X,Y)
  if UO.GetGlobal("BlindWalk") then
    return true
  endif

   dim Types[60]
   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 var i=1 TO 53 STEP 2
    if UO.PrivateGetTile(X,Y,-1,Types[i],Types[i+1]) then
      return true
    end if
  next
  return false
end sub

Sub LogInfo(Line)
  if not UO.GetGlobal("Logging")=="0" then
    UO.TextOpen()
    UO.TextPrint(str(UO.GetX())+":"+str(UO.GetY())+" - "+Line);
  end if
end sub

Sub Abs(X)
  if X>0 then
    return X
  else
    return (-X)
  end if
end sub
########################################## КОНЕЦ ХОДИЛКИ 3 ##########################


Top
   
PostPosted: 2010-02-16 10:03:15 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
не знаю как на шарде uo-dominaria.ru но на большинстве сферовых шардах с онлайном >1 у тебя скрипт умрет на раз.

1) нет реконектора
2) не переключает вармод перед копкой - тебя атачат и будут спокойно стоять и смотреть как ты будешь пытаться копать в вар моде.
3) зачем в модуле копания строки
VAR ms9 = "Iron"
VAR ms10 = "Copper"
VAR ms11 = "Silver"
4) нет проверки на поломку инструмента
5) собственно добора инструментов тоже нет.
5) помоему ты не Cooper
6) зачем такие скрипты в этой теме постить?

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 2 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


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:  
Powered by phpBB® Forum Software © phpBB Limited