Page 1 of 1

наверное самый маленьки ламбер [149 строк]

Posted: 2006-12-04 02:25:02
by omi4

Code: Select all

sub main()
; + EDIT ++++++++++++++++++
   var zona = 6;
; +++++++++++++++++++++++++
   var m, i, a, tr = 1
   var tX = UO.GetX('self')
   var tY = UO.GetY('self')
   for i=1 to zona
      if tr then
         m = - 5
      else
         m = 5
      endif
      for a=1 to zona
         tY = tY + m
         GotoXY(tX,tY)
         if Lamber() then
            return 0
         endif
      next
      tX = tX - 5
      if tr then
         tr = 0
      else
         tr = 1
      endif
   next
endsub

Sub Lamber()
   var X, Y, MaxRange = 3
   for Y = -MaxRange to MaxRange
      for X = -MaxRange to MaxRange
         if Tree(UO.GetX()+X, UO.GetY()+Y) then
            repeat
               UO.Warmode(0)
               while not UO.Hidden()
                  UO.UseSkill('Hiding')
                  repeat
                     wait(100)
                  until UO.InJournal("can't seem to hide|to perform|stop trying")
                  UO.DeleteJournal()
               wend
               wait(100)
               UO.WaitTargetTile(Tree(UO.GetX()+X, UO.GetY()+Y), UO.GetX()+X, UO.GetY()+Y, UO.GetZ())
               UO.UseObject("_0x0F43"); <-- Axe
               repeat
                  wait(100)
               until UO.InJournal("You put the|useable wood|You can|That is too far away|here to chop|is attacking you") || UO.Dead()
               if UO.InJournal("is attacking you") || UO.Weight >= 40 + UO.STR * 3.5 || UO.Dead() then
                  UO.Sound(61)
                  return 1
               endif
            until UO.InJournal("here to chop|You can|That is too far away") UO.Dead()
         endif
      next
   next
   return 0
end sub

Sub Tree(X,Y)
   var i
   if UO.PrivateGetTile(X, Y, -1, 3274, 3302) then
      for i=3274 to 3302
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            if i==3278 || i==3279 || i==3281 || i==3282 || i==3284 || i==3285 || i==3287 || i==3289 then
               return 0
            endif
            if i==3291 || i==3292 || i==3294 || i==3295 || i==3297 || i==3298 || i==3300 || i==3301 then
               return 0
            endif
            return i
         end if
      next
   end if
   return 0
end sub

Sub GotoXY(x,y)
   var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
   for i=1 to 60
      myX=UO.GetX();
      myY=UO.GetY();
      if LastX==myX and LastY==myY then
         halt=halt+1
      else
         halt=0
      end if
      if halt>=10 then
         if UO.GetDir()==1 then
            for z=0 to 8
               UO.Press(40)
            next
         end if
         if UO.GetDir()==3 then
            for z=0 to 8
               UO.Press(37)
            next
         end if
         if UO.GetDir()==5 then
            for z=0 to 8
               UO.Press(38)
            next
         end if
         if UO.GetDir()==7 then
            for z=0 to 8
               UO.Press(39)
            next
         end if
         halt=15
      end if
      if Numb(x-myX)<=1 and Numb(y-myY)<=2 then
         return 1
      end if
      if x<=myX then
         if y<=myY then
            for z=0 to 3
               UO.Press(38)
            next
         else
            for z=0 to 3
               UO.Press(37)
            next
         end if
      else
         if y<=myY then
            for z=0 to 3
               UO.Press(39)
            next
         else
            for z=0 to 3
               UO.Press(40)
            next
         end if
      end if
      lastX=myX
      lastY=myY
      wait(200)
   next
   return 0
end sub

Sub Numb(num)
   if num>=0 then
      return num
   else
      return num*(-1)
   end if
end sub

Posted: 2006-12-04 02:39:30
by DerMeister =)
В топку! У меня на пинжекте 105... Это при том, что там кое что закомментировано. Рабочий код там где то 90 строк.

Posted: 2006-12-04 02:46:03
by Edred
В топку! У меня на стелсе, конечно, 421 строка - но там куча комментов, функций, авторес чара, разгрузка, восстановление стамины, добор топоров и прочее. Если же только саму рубку и перемещение взять - около 80 строк.

Posted: 2006-12-04 03:17:48
by DerMeister =)
У меня сама рубка всего 8 строк - остальное марк деревьев и ходилка (всего 5 строк).

Posted: 2006-12-04 08:11:38
by GimFlex
вот мой 142 строки :wink:

Code: Select all

sub lumber()
var f=file("C:\trees3.dat"),TreeCount=0,i
dim TreeX[500],TreeY[500],TreeT[500]
uo.exec('addobject axe')
while uo.targeting()
 wait(100)
wend
f.open()
TreeCount=safe call f.readNumber()
for i=1 to TreeCount
 TreeT[i]=safe call f.ReadNumber()
 TreeX[i]=safe call f.ReadNumber()
 TreeY[i]=safe call f.ReadNumber()
next
f.close()
while not uo.dead()
 for i=1 to TreeCount 
  GotoXY(treex[i],treey[i])
  ToHide() 
  GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz())) 
 next
 DropLogs()
wend
endsub

Sub ToHide()
while not UO.Hidden()
 uo.deletejournal()
 UO.UseSkill("Stealth")
 wait(4100)
wend
end sub

Sub GetTree(type,x,y,z)
var ms1="logs in your pack"
var ms2="logs here to chop"
var ms3="log in your pack"
var ms4="You hack at the tree for a while"
var ms5="That is too far away"
var ms6="You can't reach this"
wait(200)
repeat
 uo.deletejournal()
 uo.waittargettile(type,x,y,z)
 uo.useobject('axe')
 repeat
  wait(100)
 until uo.injournal(ms1) or uo.injournal(ms2) or uo.injournal(ms3) or uo.injournal(ms4) or uo.injournal(ms5) or uo.injournal(ms6)
until uo.injournal(ms2) or uo.injournal(ms5) or uo.injournal(ms6)
end sub

sub DropLogs()
var a,Exit,Chest='0x4035FD15',Logs='0x1BDD'
GotoXY(1560,2361)
ToHide()
uo.findtype(Logs,'-1','backpack')
while uo.findcount()>0
 uo.moveitem('finditem','all',Chest)
 wait(700)
 uo.findtype(Logs,'-1','backpack')
wend
end sub

Sub GotoXY(x,y)
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
for i=1 to 60
myX=uo.getX();
myY=uo.getY();
if LastX==myX and LastY==myY then
halt=halt+1
else
halt=0
end if
if halt>=10 then
if uo.GetDir()==1 then
for z=0 to 8
uo.Press(40)
next
end if
if uo.GetDir()==3 then
for z=0 to 8
uo.Press(37)
next
end if
if uo.GetDir()==5 then
for z=0 to 8
uo.Press(38)
next
end if
if uo.GetDir()==7 then
for z=0 to 8
uo.Press(39)
next
end if
halt=15
end if
if Numb(x-myX)<=1 and Numb(y-myY)<=2 then
return 1
end if
if x<=myX then
if y<=myY then
for z=0 to 3
uo.Press(38)
next
else
for z=0 to 3
uo.Press(37)
next
end if
else
if y<=myY then
for z=0 to 3
uo.Press(39)
next
else
for z=0 to 3
uo.Press(40)
next
end if
end if
lastX=myX
lastY=myY
wait(200)
next
return 0
end sub

Sub Numb(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub

Sub CheckLag()
    UO.DeleteJournal()
    UO.Click('backpack')
    repeat
       wait(50)
    until UO.InJournal('backpack')
end sub

Posted: 2006-12-04 10:57:47
by omi4
Какая маркировка, она ему не нужна.
Главная задача была в полном отсутствии настроек.

Добавив еще 50-60 строк его можно научить летать (например в 200 точек), брать и сбрасывать, ресатся.

только нюбу это зачем?

Posted: 2006-12-04 18:24:07
by GimFlex
omi4 wrote:Какая маркировка, она ему не нужна.
Главная задача была в полном отсутствии настроек.

Добавив еще 50-60 строк его можно научить летать (например в 200 точек), брать и сбрасывать, ресатся.

только нюбу это зачем?


а у меня тока файл марка и все зато ходит всегда там где ты захотел :)

Posted: 2006-12-04 23:09:11
by Edred
omi4 wrote:Добавив еще 50-60 строк его можно научить летать (например в 200 точек), брать и сбрасывать, ресатся.


...и радостно ловить анхандлед еррор ин парсер каждые 2-3 часа...

Posted: 2006-12-04 23:32:56
by omi4
Edred wrote:
omi4 wrote:Добавив еще 50-60 строк его можно научить летать (например в 200 точек), брать и сбрасывать, ресатся.


...и радостно ловить анхандлед еррор ин парсер каждые 2-3 часа...


Это про скрипт или про инжект?

В 50-60 не уложился, вышло ровно +70 строк.

Рес(пустая, незнаю под кого написать)+
Добор(включая топоры..) +
разгрузка+
Медитация+
Стелса+
Рекол+
Восстановление стамины+
Работа с банком или с сундуком(автомат)+
Кол-во рун любое, ничего прописывать не нужно.

Настроек нет. Комментариев нет, нечего коментировать.
Кол-во строк 219

Posted: 2006-12-08 17:41:17
by Dimage
Ну что померились?

У кого самая длинная пиписка? :)

Вам самим то не стыдно?:)

Posted: 2006-12-08 17:42:18
by GimFlex
Dimage wrote:Ну что померились?

У кого самая длинная пиписка? :)

Вам самим то не стыдно?:)


у меня пиписка в норме :arrow:

Posted: 2006-12-08 18:43:53
by Edred
Dimage wrote:Вам самим то не стыдно?:)


А чего должно быть стыдно? :shock: Это же просто юмор такой, ты этого понять не можешь. Слишком мало тут на форуме времени пока провел. Ты посмотри кто между собой "пиписками" мерялся - сплошь одни "эксперты".

Кстати, не понимаю, почему у Омыча нет такой приписки...

Posted: 2007-01-11 00:30:13
by Destruction
Касательно маленьких скриптов на ламбер..

Вот тут, наваял - ходи тока по деревиям тыкай )

Code: Select all

sub smart_lumber()
   uo.addObject("hatchet")
   while uo.targeting()
      wait(100)
   wend
   repeat
      uo.addObject( "tree" )
      while uo.targeting()
         wait(100)
      wend
      repeat
         uo.exec( "waittargettile " + uo.lasttile() )
         uo.useobject( "hatchet" )
         deljournal( "no logs|hack at the tree|pack" )
         repeat
            wait(100)
         until uo.injournal( "no logs|hack at the tree|pack" )
      until uo.injournal( "no logs" )
   until false
endsub


На самом деле очень удобно, когда нужно нарубить пару десятков логов, а вставать или настраивать огроменные скрипты - лениво.