Скрипт на ламбер

Talk everything you want (no ads and spam)

Moderators: Murderator+, Murderator

Post Reply
Gannibal

Скрипт на ламбер

Post by Gannibal »

зарание спасибо
Guest

Post by Guest »

Savage
Ethernal newbie


Joined: 16 Aug 2003
Posts: 236

Posted: Tue Sep 09, 2003 9:58 pm Post subject:

--------------------------------------------------------------------------------

Code:

Code: Select all

;======================================================== 
sub lj()
   UO.Exec('terminate alarm')
   UO.Exec('exec alarm')
   while NOT UO.Dead()
      lj1()
      lj2()
      lj3()
   wend
end sub

sub eat()
   UO.UseType("fish") ; any registered type of food
end sub

sub unload()
   VAR TempRune=0x4008A39E ; serial of temporary rune
markrune:
   UO.DeleteJournal()
   UO.WaitTargetObject(TempRune)
   UO.Cast('Mark')
   wait(4000)
   If UO.InJournal("spell fizzles") then
      goto markrune
   endif   
   mrecal(0x4008A399) ; home serial of rune to store container
   logunload()
   mrecal(TempRune)
end sub


sub chopit(ChopX,ChopY)
   VAR Count, Last=0
   VAR MaxCount=200 ; delay of max time to chop one tree
   VAR MaxWeight=820 ; weight nearly to overload

   if UO.Weight>MaxWeight then
      unload()
   endif
   
   repeat
      UO.DeleteJournal()
      If Last then
         UO.WaitTargetTile('lasttile')
         UO.UseObject("hatchet") ; Registered object
      Else
         UO.UseObject("hatchet")
         wait(400)
         UO.LClick(ChopX,ChopY)
         Last=1
      endif
       
      Count=0
      while NOT UO.InJournal("You put") AND NOT UO.InJournal("You hack") AND NOT UO.InJournal("There are no") AND NOT UO.InJournal("That is too") AND NOT UO.InJournal("It appears") AND NOT UO.InJournal("You can") AND NOT Count>MaxCount
         wait(50)
         Count=Count+1
      wend
      if UO.InJournal("You hack") OR UO.InJournal("You put")then
         UO.DeleteJournal()
      endif
       
   until UO.InJournal("There are no") OR UO.InJournal("That is too") OR UO.InJournal("It appears") OR UO.InJournal("You can") OR Count>MaxCount
end sub

;------------------ Walking, first X then Y --------------------------------

sub walk(dx,dy)
   VAR i, walkwait=400
   If dx<>0 then
      If dx>0 then
         If UO.GetDir()<>2 then
            UO.Press(34)
            wait(walkwait)
         Endif
         For i=1 to dx
            UO.Press(34)
            wait(walkwait)
         next
      Else
         If UO.GetDir()<>6 then
            UO.Press(36)
            wait(walkwait)
         Endif
         For i=1 to dx*-1
            UO.Press(36)
            wait(walkwait)
         next
      Endif

   endif
   
   If dy<>0 then
      If dy>0 then
         If UO.GetDir()<>4 then
            UO.Press(35)
            wait(walkwait)
         Endif
         For i=1 to dy
            UO.Press(35)
            wait(walkwait)
         next
      Else
         If UO.GetDir()<>0 then
            UO.Press(33)
            wait(walkwait)
         Endif
         For i=1 to dy*-1
            UO.Press(33)
            wait(walkwait)
         next
      Endif
   endif
   wait(1000)
end sub

;------------------------- When You less HP then alarm -----------------
sub alarm()
   while NOT UO.Dead()
      wait(1000)
      if UO.Life<UO.GetMaxHP() then
         gong(1)
      endif       
   wend
end sub

sub lj1()
   VAR ct=1
   DIM dbX[6],deX[6],dbY[6],deY[6],Dir[6]
   VAR i

;----- InitTrack-----
   dbX[1]=2078 ; Start track X coord.
   deX[1]=2078 ; End track X coord.
   dbY[1]=2082 ; Start track Y coord.
   deY[1]=2139 ; End Track Y coord.
   Dir[1]=1 ; Direction of walking 1 - N->S, -1 S->N

   dbX[2]=2086
   deX[2]=2086
   dbY[2]=2130
   deY[2]=2087
   Dir[2]=-1
   
   dbX[3]=2094
   deX[3]=2094
   dbY[3]=2073
   deY[3]=2133
   Dir[3]=1
   
   dbX[4]=2102
   deX[4]=2102
   dbY[4]=2130
   deY[4]=2096
   Dir[4]=-1

   dbX[5]=2102
   dbY[5]=2096

   mrecal(0x4009A638) ; start position

   for ct=1 to 4
      repeat
         tohide()
         chopit(278,171)
         chopit(362,253)
         walk(0,3*Dir[ct])
      until UO.GetY()==deY[ct]
      eat()
      walk(dbX[ct+1]-deX[ct],dbY[ct+1]-deY[ct])
   next
   mrecal(0x4008A399) ; home  serial of rune to store container
   logunload()

;   gong(2)
end sub

sub lj2()
   VAR ct=1
   DIM dbX[6],deX[6],dbY[6],deY[6],Dir[6]
   VAR i

;----- InitTrack-----
   dbX[1]=3382
   deX[1]=3382
   dbY[1]=426
   deY[1]=474
   Dir[1]=1

   dbX[2]=3374
   deX[2]=3374
   dbY[2]=474
   deY[2]=502
   Dir[2]=1
   
   dbX[3]=3366
   deX[3]=3366
   dbY[3]=516
   deY[3]=484
   Dir[3]=-1
   
   dbX[4]=3358
   deX[4]=3358
   dbY[4]=510
   deY[4]=432
   Dir[4]=-1

   dbX[5]=3358
   dbY[5]=432

   mrecal(0x400C018F) ; start position

   for ct=1 to 4
      repeat
         tohide()
         chopit(278,171)
         chopit(362,253)
         walk(0,3*Dir[ct])
      until UO.GetY()==deY[ct]
      eat()
      walk(dbX[ct+1]-deX[ct],dbY[ct+1]-deY[ct])
   next
   mrecal(0x4008A399) ; home  serial of rune to store container
   logunload()
end sub


sub lj3()
   VAR ct=1
   DIM dbX[6],deX[6],dbY[6],deY[6],Dir[6]
   VAR i

;----- InitTrack-----
   dbX[1]=3266
   deX[1]=3266
   dbY[1]=261
   deY[1]=326
   Dir[1]=1

   dbX[2]=3258
   deX[2]=3258
   dbY[2]=378
   deY[2]=250
   Dir[2]=-1
   
   dbX[3]=3246
   deX[3]=3246
   dbY[3]=219
   deY[3]=310
   Dir[3]=1
   
   dbX[4]=3238
   deX[4]=3238
   dbY[4]=315
   deY[4]=348
   Dir[4]=1

   dbX[5]=3238
   dbY[5]=348

   mrecal(0x400822B6) ; start position

   for ct=1 to 4
      repeat
         tohide()
         chopit(278,171)
         chopit(362,253)
         walk(0,3*Dir[ct])
      until UO.GetY()==deY[ct]
      eat()
      walk(dbX[ct+1]-deX[ct],dbY[ct+1]-deY[ct])
   next
   mrecal(0x4008A399) ; home serial of rune to store container
   logunload()
end sub

;----------------Recal and Mark faded rune -------------
sub mrecal(rune)
   repeat
      UO.DeleteJournal()
      UO.WaitTargetObject(rune)
      UO.Cast('Recal')
      wait(4000)
   until NOT UO.InJournal("spell fizzles") ; mesage of fizzle spell

markrune:
   If UO.InJournal("fades completely")   then ; message of faded rune
      UO.DeleteJournal()
      UO.WaitTargetObject(rune)
      UO.Cast('Mark')
   endif
   wait(4000)
   If UO.InJournal("spell fizzles") then ; mesage of fizzle spell
      goto markrune
   endif
end sub

;------------------------- UnLoad ----------------------------
sub logunload()
   UO.SetCatchBag('0x40082EBA') ; serial of store log container
   wait(500)
begin:
   UO.FindType("log") ; log - registered type
   if UO.GetQuantity('finditem')>0 then
      UO.Grab('0','finditem')
      wait(800) ; time to wait for fastloot-detector
      goto begin
   endif
   UO.UnSetCatchBag()
end sub

;------------------------ Hiding -------------------------------
sub tohide()
   while NOT UO.Hidden()
      UO.UseSkill('Hiding')
      wait(3000)
   wend
end sub

;--------------- Play *.wav file -----------------------------
sub gong(times)
   VAR i
   for i=1 to times
      UO.Exec("playwav c:\game\uo\cow") ; ani *.wav file
      wait(1200) ; time to play sample at once
   next
end sub




Last edited by Savage on Mon Oct 13, 2003 4:31 pm; edited 1 time in total


Savage
Ethernal newbie


Joined: 16 Aug 2003
Posts: 236

Posted: Tue Sep 09, 2003 9:58 pm Post subject: LumberJack script

--------------------------------------------------------------------------------

Писано для DRW так что не обижайтесь если что не так.
1. Необходимо поставвить патч вердаты на пеньки:
http://drguild.nm.ru/verdata.htm
2. Вырубаются деревья справа и слева от чара при хождении по координате X то есть напрваление N->S или S->N
3. Находим место которое подходит нам как начало дорожки и марчим там руну, координаты места забиваем в массив. Чар должен стоять по середине между двумя деревьями:
http://www.jetta.ru/lj.jpg
Проходим по дорожке до препядствия или до точки перед препядствием, но на три шага дальше последнего вырубленного дерева и забиваем координаты в массив. Далее переходим к следующей дорожке и забиваем координаты в следующий массив.
4. Правим сериалы рун на свои, так же сериал контэйнера для разгрузки. И пробуем запускать модуль lj1 если чар правильно ходит и в конце вырубки разгрузился, настраиваем так же следующий модуль. Если логи ресаются быстро, то хватит и одного. У нас надо три полных пака нарубить прежде чем они реснутся.

Скрипт не проверяет сэйвы, поэтому может сбиться, сделать лишний шаг.
Post Reply