Yoko

All sides of Injection
It is currently 2018-09-23 07:24:30

All times are UTC+02:00




Post new topic  Reply to topic  [ 77 posts ]  Go to page 1 2 3 4 Next
Author Message
PostPosted: 2015-11-08 17:42:56 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
Готовый скрипт на лумбер.
Собирает реги, еду из сундука, после летит в лес и ходит по координатам деревьев, рубит до макс. веса и летит домой. После все заново.
Пропишите свои типы, для сундука еды и прочего. Впишите координаты места на котором стоите и готово :)
зы: все ответы на вопросы найдете в теме.

Удачи!


отдельное спасибо Incorrect User'у за то что переписал это и заставил работать.

Code:
;***********************************************************************************
;                                            Lumber
;***********************************************************************************

sub Autostart()
   uo.setglobal("Recall", "Off")
end sub

sub Lumberjacking()
   
   ; Read 0/1 - Вкл/Выкл сбор координат.
   ; Distance - расстояние в тайлах, на которое нужно подойти к дереву.
   ; Weight - макс. вес при котором реколимся домой.
   ; Hatchet - тип топора.
   ; Msg - всевозможные сообщения.
   ; Endmsg - сообщения при которых переходим к другому дереву.
   
   var read = 1
   var lag
   var skip
   var infinity = 1
   var distance = 3
   var weight = 650
   var hatchet = "0x0F47"
   var guardian = "0x0190"
   var msg = "You put the logs|You see|Your skill|You have"
   var endmsg = "You can't reach this", starttime, endtime, flag, number, treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, f
   dim TreeX[5000], TreeY[5000], TreeT[5000]
   dim TreeTile[29]
   TreeTile[0]=3277
   TreeTile[1]=3280
   TreeTile[2]=3283
   TreeTile[3]=3286
   TreeTile[4]=3289
   TreeTile[5]=3291
   TreeTile[6]=3294
   TreeTile[7]=3296
   TreeTile[8]=3299
   TreeTile[9]=3302
   TreeTile[10]=3393
   TreeTile[11]=3394
   TreeTile[12]=3395
   TreeTile[13]=3396
   TreeTile[14]=3415
   TreeTile[15]=3416
   TreeTile[16]=3417
   TreeTile[17]=3418
   TreeTile[18]=3419
   TreeTile[19]=3438
   TreeTile[20]=3439
   TreeTile[21]=3440
   TreeTile[22]=3441
   TreeTile[23]=3442
   TreeTile[24]=3460
   TreeTile[25]=3461
   TreeTile[26]=3462
   TreeTile[27]=3290
   TreeTile[28]=3288
   dim RuneID[3]
   RuneID[0] = "0x41D24385"   ; руна в лес1
   RuneID[1] = "0x41D24387"   ; руна в лес2
   RuneID[2] = "0x41D24389"   ; руна в лес3
   uo.deletejournal()
   if read == 0 then
      uo.print("Collecting coordinates...")
      repeat
         clicks = 0
         flag = 0
         uo.usetype("0x0E21")
         wait(500)
         while uo.targeting()
            wait(100)
         wend
         flag = 0
         for k = 0 to 28
            if uo.lasttile(0) == TreeTile[k] then
               flag = 1
            end if
         next
         if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
            flag = 2
         end if
         if flag == 1 then
            treecount = treecount + 1
            TreeX[treecount] = uo.lasttile(1)
            TreeY[treecount] = uo.lasttile(2)
            TreeT[treecount] = uo.lasttile(0)
            uo.print("tree found"+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
         end if
      until (flag == 2) or (treecount == 5000)
      SaveToFile(treecount, TreeX, TreeY, TreeT)
      uo.print("Coordinates collected!")
      uo.print("Trees found: " + str(treecount))
      return
   end if
   repeat
      for number = 0 to 2
         uo.ignorereset()
         if number == 0 then
            f = file("C:\Users\Desktop\Injection_uo\trees.dat")
         else
            if number == 1 then
               f = file("C:\Users\Desktop\Injection_uo\trees1.dat")
            else
               f = file("C:\Users\Desktop\Injection_uo\trees2.dat")
            end if
         end if
         uo.print("Loading from file...")
         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()
         TakePut()
         RecallToWood(RuneID[number])
         skip = 0
         repeat
            for i = 1 to treecount
               uo.pmove(TreeX[i], TreeY[i], distance)
               lag = 0
               repeat
                  uo.deletejournal(msg)
                  Hide()
                  uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
                  uo.usetype(hatchet)
                  starttime = now()
                  endtime = now() + 60
                  repeat
                     Save()
                     wait(100)
                  until uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
                  if uo.injournal("Ïîäîëáèâ äåðåâî") then
                     lag = lag + 1
                  end if
               until uo.injournal(endmsg) or lag > 4 or uo.weight >= weight or uo.dead()
               if uo.weight >= weight then
                  skip = 1
                  break
               end if
            next
         until i == treecount or skip == 1 or uo.dead()
         if not uo.dead() then
            RecallToHome()
         else
            uo.print("You Dead!")
            uo.exec("Terminate all")
         end if
      next
   until infinity == 0
end sub
sub SaveToFile(treecount, TreeX, TreeY, TreeT)
   var f=file("C:\Users\Desktop\Injection_uo\trees.dat")
   var s = 0, i = 0
   f.open()
   f.create()
   s=safe call f.writeln(treecount)
   for i = 1 to treecount
      s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
   next
   f.close()
end sub

sub RecallToHome()
   var runeid = "0x40116A2C", x = 1781, y = 606, starttime, endtime, msg = "заклинание|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = now() + 2700
         repeat
            Save()
            wait(100)
         until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == x and uo.gety() == y) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub RecallToWood(runeid)
   var starttime, endtime, msg = "заклинание|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = now() + 2700
         repeat
            Save()
            wait(100)
         until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub TakePut()
   var box = "0x4006FCA1", logs = "0x1BDD", i, r, s, info, food, quantity
   dim Reg[4]
   Reg[0] = "0x0F7A 10 Black Pearl"
   Reg[1] = "0x0F7B 10 Blood Moss"
   Reg[2] = "0x0F86 10 Mandrake Roots" 
   Reg[3] = "0x09D0 5 Food"
   uo.opencontainer(box, 500)
   while uo.findtype(logs, -1, "my")
      uo.moveitem("finditem", 0, box)
      wait(2000)
   wend
   for i = 0 to 3
      r = getword(Reg[i], 1)
      s = val(getword(Reg[i], 2))
      if not uo.findtype(r, -1, "my") then
         if not uo.findtype(r, -1, box) then
            info = getword(Reg[i], 3)
            uo.print("not enough" + info)
         else
            Save()
            uo.moveitem("finditem", s, "backpack")
            wait(2000)
         end if
      else
         if uo.getquantity("finditem") < s then
            quantity = s - uo.getquantity("finditem")
            if not uo.findtype(r, -1, box) then
               info = getword(Reg[i], 3)
               uo.print("not enough" + info)
            else
               Save()
               uo.moveitem("finditem", quantity, "backpack")
               wait(2000)
            end if
         end if
      end if
   next
   for food = 1 to 5
      uo.usetype("0x09D0")
      wait(500)
   next
   UO.WarMode(0)
   UO.UseSkill('Meditation')
   wait(20000)
   uo.print("ready to go!")
end sub

sub Save()
   if uo.injournal("World save has been initiated") then
      uo.deletejournal("backpack|World save has been initiated")
      uo.click("backpack")
      while not uo.injournal("backpack")
         wait(100)
      wend
   end if
end sub

sub Hide()
   var msg = "неудалось|is attacking you", waittime
   if not uo.hidden() then
      repeat
         UO.WarMode(0)
         uo.deletejournal(msg)
         UO.UseSkill('Hiding')
         waittime = uo.timer() + 50
         repeat
            wait(100)
         until uo.hidden() or uo.injournal(msg) or uo.timer() > waittime or uo.dead()
      until uo.hidden()
   end if
end sub


Last edited by konstantah on 2015-11-16 21:04:34, edited 2 times in total.

Top
   
PostPosted: 2015-11-09 13:16:21 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Это реколы, переделай под себя
Code:
sub RecallToHome() 
UO.Print("Goind home..")
uo.cast("Recall '0x41E4EF17'")
wait(10000)
end sub

sub RecallToLumber()
UO.Print("Going forest..")
uo.cast("Recall '0x41E4EEE7'")
wait(10000)
end sub

Это добавление рунбука, удали из скрипта
Code:
var TryRecall=0

Code:
if TryRecall==0 then 
uo.print('Choose your Runebook..')
uo.exec('addobject Runebook')
while uo.targeting()
wait(100)
wend
end if

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-10 15:56:32 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
upd. HELP!


Top
   
PostPosted: 2015-11-10 17:58:08 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Юзает кирку но ничего не ждет по сути.
Code:
####################### 
### Click on tyle ###
#######################
uo.useobject('Pickaxe')
waitForTarget()
uo.DeleteJournal()


###############################
### Checking if that's a tree ###
###############################

А должен ждать пока не кликнешь
Code:
####################### 
### Click on tyle ###
#######################
uo.useobject('Pickaxe')
waitForTarget()
while uo.targeting()
  wait(100)
wend
uo.DeleteJournal()
###############################
### Checking if that's a tree ###
###############################

А ходилка при разметке вообще неизвестно зачем нужна, я бы удалил
Code:
for q=1 to Area 
if q==2 then
gotoxy(uo.getx()+20,uo.gety()-10)
end if
if q==3 then
gotoxy(uo.getx(),uo.gety()+20)
end if
if q==4 then
gotoxy(uo.getx()-20,uo.gety())
end if
for r=0 to 3
if r==1 then
gotoxy(uo.getx()+10,uo.gety())
end if
if r==2 then
gotoxy(uo.getx(),uo.gety()+10)
end if
if r==3 then
gotoxy(uo.getx()-10,uo.gety())
end if

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-12 22:06:14 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
UPDATE!

Удалил ненужное, запустил все пошло, собрал координаты трех деревьев - краш. Подождал пока пропадет чар,зашел снова, запустил и краш сразу..
Запустил еще раз, прошелся по деревьям, штук 10 обошел и снова краш. + Он не сохраняет координаты деревьев.
Какая строка отвечает за то сколько деревьев он выберет?


Last edited by konstantah on 2015-11-12 22:12:14, edited 1 time in total.

Top
   
PostPosted: 2015-11-12 22:09:26 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Инжект последний?

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-12 22:16:30 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Строка никакая, когда закончил размечать кидаешь следующий таргет на себя и он сохранит файл.

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-13 00:08:10 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Вот тебе ламбер, работает на встроенной ходилке, она может тупить правда. Добавь себе реколы и хайд. Деревья размечаются бинтами, кинь в пак. Когда все разметил - таргет на себя, он сохранит файл и выключит скрипт. Изменяешь read = 0 на 1 и distance(расстояние на которое подойти к дереву) на нужное, и msg, идешь к первому дереву и запускаешь скрипт. Проверил и настроил, все работает.

Code:
sub Lumberjacking()
   var read = 1, distance = 3, msg = "You hack|no logs|far away|log in your|logs in your", flag, hatchet = "0x0F43", treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, timer, f = file("C:\trees.dat")
   dim TreeX[5000], TreeY[5000], TreeT[5000]
   dim TreeTile[29]
   TreeTile[0]=3277
   TreeTile[1]=3280
   TreeTile[2]=3283
   TreeTile[3]=3286
   TreeTile[4]=3289
   TreeTile[5]=3291
   TreeTile[6]=3294
   TreeTile[7]=3296
   TreeTile[8]=3299
   TreeTile[9]=3302
   TreeTile[10]=3393
   TreeTile[11]=3394
   TreeTile[12]=3395
   TreeTile[13]=3396
   TreeTile[14]=3415
   TreeTile[15]=3416
   TreeTile[16]=3417
   TreeTile[17]=3418
   TreeTile[18]=3419
   TreeTile[19]=3438
   TreeTile[20]=3439
   TreeTile[21]=3440
   TreeTile[22]=3441
   TreeTile[23]=3442
   TreeTile[24]=3460
   TreeTile[25]=3461
   TreeTile[26]=3462
   TreeTile[27]=3290
   TreeTile[28]=3288
   if read == 1 then
      uo.print("Загружаем координаты из файла...")
      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()
   else
      uo.print("Собираем координаты из клиента...")
      repeat
         clicks = 0
         flag = 0
         uo.usetype("0x0E21")
         wait(500)
         while uo.targeting()
            wait(100)
         wend
         flag = 0
         for k = 0 to 28
            if uo.lasttile(0) == TreeTile[k] then
               flag = 1
            end if
         next
         if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
            flag = 2
         end if
         if flag == 1 then
            treecount = treecount + 1
            TreeX[treecount] = uo.lasttile(1)
            TreeY[treecount] = uo.lasttile(2)
            TreeT[treecount] = uo.lasttile(0)
            uo.print("Найдено дерево "+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
         end if
      until (flag == 2) or (treecount == 5000)
      SaveToFile(treecount, TreeX, TreeY, TreeT)
      uo.print("Координаты деревьев сохранены!")
      uo.print("Деревьев найдено: " + str(treecount))
      return
   end if
   repeat
      for i = 1 to treecount
         uo.pmove(TreeX[i], TreeY[i], distance)
         repeat
            uo.deletejournal(msg)
            uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
            uo.usetype(hatchet)
            timer = uo.timer() + 150
            repeat
               wait(100)
            until uo.injournal(msg) or uo.timer() > timer + 150 or uo.dead()
         until uo.injournal("no logs|far away") or uo.dead()
      next
   until i == treecount or uo.dead()
   uo.print("Закончил!")
end sub

sub SaveToFile(treecount, TreeX, TreeY, TreeT)
   var f=file("C:\trees.dat")
   var s = 0, i = 0
   f.open()
   f.create()
   s=safe call f.writeln(treecount)
   for i = 1 to treecount
      s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
   next
   f.close()
end sub

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-13 01:36:10 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
UPDATE

Запустил скрипт на старой версии инжекта, т.к. на новой не находил бинты и не обновлял статус бар (реги и тд все по 0 было).
Промаркал 6 деревьев, сохранил координаты. Запускаю : Line 468: Function not found - UO.PMOVE

Не пойму что и как. Плюс по реколам, можно заихнуть в этот код копи пастом, чтобы я нетуда их не вклеил и потом не задавал глупых вопросов? :)

Зы: Спасибо огромное за помощь!!

Quote:
sub Lumberjacking()
var read = 1, distance = 3, msg = "Подолбив|не осталось|это слишком|log in your|logs in your", flag, hatchet = "0x0F47", treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, timer, f = file("C:\trees.dat")
dim TreeX[5000], TreeY[5000], TreeT[5000]
dim TreeTile[29]
TreeTile[0]=3277
TreeTile[1]=3280
TreeTile[2]=3283
TreeTile[3]=3286
TreeTile[4]=3289
TreeTile[5]=3291
TreeTile[6]=3294
TreeTile[7]=3296
TreeTile[8]=3299
TreeTile[9]=3302
TreeTile[10]=3393
TreeTile[11]=3394
TreeTile[12]=3395
TreeTile[13]=3396
TreeTile[14]=3415
TreeTile[15]=3416
TreeTile[16]=3417
TreeTile[17]=3418
TreeTile[18]=3419
TreeTile[19]=3438
TreeTile[20]=3439
TreeTile[21]=3440
TreeTile[22]=3441
TreeTile[23]=3442
TreeTile[24]=3460
TreeTile[25]=3461
TreeTile[26]=3462
TreeTile[27]=3290
TreeTile[28]=3288
if read == 1 then
uo.print("Loading coordinates from file")
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()
else
uo.print("Gathering info..")
repeat
clicks = 0
flag = 0
uo.usetype("0x0E21")
wait(500)
while uo.targeting()
wait(100)
wend
flag = 0
for k = 0 to 28
if uo.lasttile(0) == TreeTile[k] then
flag = 1
end if
next
if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
flag = 2
end if
if flag == 1 then
treecount = treecount + 1
TreeX[treecount] = uo.lasttile(1)
TreeY[treecount] = uo.lasttile(2)
TreeT[treecount] = uo.lasttile(0)
uo.print("Tree found"+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
end if
until (flag == 2) or (treecount == 5000)
SaveToFile(treecount, TreeX, TreeY, TreeT)
uo.print("Coordinates saved.")
uo.print("Trees found:" + str(treecount))
return
end if
repeat
for i = 1 to treecount
uo.pmove(TreeX[i], TreeY[i], distance)
repeat
uo.deletejournal(msg)
uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
uo.usetype(hatchet)
timer = uo.timer() + 150
repeat
wait(100)
until uo.injournal(msg) or uo.timer() > timer + 150 or uo.dead()
until uo.injournal("no logs|far away") or uo.dead()
next
until i == treecount or uo.dead()
uo.print("Finished!")
end sub

sub SaveToFile(treecount, TreeX, TreeY, TreeT)
var f=file("C:\trees.dat")
var s = 0, i = 0
f.open()
f.create()
s=safe call f.writeln(treecount)
for i = 1 to treecount
s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
next
f.close()
end sub


Top
   
PostPosted: 2015-11-13 08:46:17 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Ставь последнюю версию, в старых нет ходилки. Она рабочая только нужно настроить. На вкладке main проставишь галочки обязательно: Undead, Light, Premit Vars Loopback, Clear memory, Autostart, Track World Items(как раз эта галочка за предметы отвечает, иначе он их не видит, те же реги...).
По реколам, потом добавлю, отпиши после чего они нужны, например перевес и сколько и т.д. со скрола или регов...
Для рекола, чтобы срабатывал точнее, нужны координаты X и Y места куда прилетаешь в лес и куда прилетаешь в дом.

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-13 17:16:10 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
работает всё :) Шикарно. Теперь по реколлам..

Скажем так, что хотелось бы видеть :

Начинает дома напротив сундука, куда прилетел (координаты я поменть в силах :))
В сундуке руна1,руна2,руна3 по лесам
+ реги на рекол
+ инвизки
+ еда
Забрал регов еды инвизку, покушал и улетел по руне1, потом2, потом3.
Нарубил логов до веса скажем 650.
Улетел домой.
Увидев монстра сьел инвизку.

Так можно сделать? :) Или это уж слишком много я прошу?


Top
   
PostPosted: 2015-11-13 17:48:31 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Можно, но все по очереди. Разбирайся с реколами, вот текущий вариант, в начале скрипта указал обозначение некоторых функций, изменишь на нужные.
Code:
sub Autostart()
  uo.setglobal("Recall", "Off")
end sub

sub Lumberjacking()
   ; Read 0/1 - Вкл/Выкл сбор координат в файл. Distance - расстояние в тайлах, на которое нужно подойти к дереву. Weight - максимальный вес, при достижении которого рекол в дом. Hatchet - type топора. Msg - список всех возможных сообщений при рубке дерева. Endmsg - список сообщений при которых переходим к новому дереву.
   var read = 0, distance = 3, weight = 650, hatchet = "0x0F43", msg = "Подолбив|не осталось|это слишком|log in your|logs in your", endmsg = "не осталось|это слишком", starttime, endtime, flag, number, treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, f = file("C:\trees.dat")
   dim TreeX[5000], TreeY[5000], TreeT[5000]
   dim TreeTile[29]
   TreeTile[0]=3277
   TreeTile[1]=3280
   TreeTile[2]=3283
   TreeTile[3]=3286
   TreeTile[4]=3289
   TreeTile[5]=3291
   TreeTile[6]=3294
   TreeTile[7]=3296
   TreeTile[8]=3299
   TreeTile[9]=3302
   TreeTile[10]=3393
   TreeTile[11]=3394
   TreeTile[12]=3395
   TreeTile[13]=3396
   TreeTile[14]=3415
   TreeTile[15]=3416
   TreeTile[16]=3417
   TreeTile[17]=3418
   TreeTile[18]=3419
   TreeTile[19]=3438
   TreeTile[20]=3439
   TreeTile[21]=3440
   TreeTile[22]=3441
   TreeTile[23]=3442
   TreeTile[24]=3460
   TreeTile[25]=3461
   TreeTile[26]=3462
   TreeTile[27]=3290
   TreeTile[28]=3288
   dim RuneID[3]
   RuneID[0] = "ID руны"
   RuneID[1] = "ID руны"
   RuneID[2] = "ID руны"
   uo.deletejournal()
   if read == 1 then
      uo.print("Загружаем координаты из файла...")
      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()
   else
      uo.print("Собираем координаты из клиента...")
      repeat
         clicks = 0
         flag = 0
         uo.usetype("0x0E21")
         wait(500)
         while uo.targeting()
            wait(100)
         wend
         flag = 0
         for k = 0 to 28
            if uo.lasttile(0) == TreeTile[k] then
               flag = 1
            end if
         next
         if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
            flag = 2
         end if
         if flag == 1 then
            treecount = treecount + 1
            TreeX[treecount] = uo.lasttile(1)
            TreeY[treecount] = uo.lasttile(2)
            TreeT[treecount] = uo.lasttile(0)
            uo.print("Найдено дерево "+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
         end if
      until (flag == 2) or (treecount == 5000)
      SaveToFile(treecount, TreeX, TreeY, TreeT)
      uo.print("Координаты деревьев сохранены!")
      uo.print("Деревьев найдено: " + str(treecount))
      return
   end if
   for number = 0 to 2
      RecallToWood(RuneID[number])
      repeat
         for i = 1 to treecount
            uo.pmove(TreeX[i], TreeY[i], distance)
            repeat
               uo.deletejournal(msg)
               uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
               uo.usetype(hatchet)
               starttime = now()
               endtime = now() + 6000
               repeat
                  Save()
                  wait(100)
               until uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
            until uo.injournal(endmsg) or uo.weight >= weight or uo.dead()
            if uo.weight >= weight then
               RecallToHome()
            end if
         next
      until i == treecount or uo.dead()
      if not uo.dead() then
         RecallToHome()
      else
         uo.print("You Dead!")
         uo.exec("Terminate all")
      end if
   next
   uo.print("Облетел все руны!")
end sub

sub SaveToFile(treecount, TreeX, TreeY, TreeT)
   var f=file("C:\trees.dat")
   var s = 0, i = 0
   f.open()
   f.create()
   s=safe call f.writeln(treecount)
   for i = 1 to treecount
      s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
   next
   f.close()
end sub

sub RecallToHome()
   var runeid = "id руны в дом", x = 000, y = 000, starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = now() + 2700
         repeat
            Save()
            wait(100)
         until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == x and uo.gety() == y) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub RecallToWood(runeid)
   var starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = now() + 2700
         repeat
            Save()
            wait(100)
         until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub Save()
   if uo.injournal("World save has been initiated") then
      uo.deletejournal("backpack|World save has been initiated")
      uo.click("backpack")
      while not uo.injournal("backpack")
         wait(100)
      wend
   end if
end sub

_________________
CodeSweeper


Last edited by Incorrect User on 2015-11-13 19:05:16, edited 3 times in total.

Top
   
PostPosted: 2015-11-13 17:53:48 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Галочка Autostart на вкладке Main означает что при запуске UO будет автоматически выполняться функция Autostart(). Поэтому после того как сохранишь скрипт, перед запуском ламбера запусти вручную Autostart() либо просто перезайди в UO(галка Autostart на вкладке Main должна стоять обязательно).

----------------------------------------------
В Lumberjacking(), в части
Code:
   RuneID[0] = "ID 1 руны"
   RuneID[1] = "ID 2 руны"
   RuneID[2] = "ID 3 руны"

Впиши ID трех рун в лес.

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

В RecallToHome()
Code:
sub RecallToHome()
   var runeid = "id руны в дом", x = 000, y = 000,

измени ID руны в дом и замени 000 в X и Y на правильные координаты места куда прилетаешь домой.

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

В RecallToWood(runeid) в обеих строках
Code:
until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournal(endmsg) or uo.dead()

замени 000 на координаты трех твоих рун в лес.

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

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

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

По остальному, нужны type еды, инвизок, регов и сколько чего брать. Есть может с пола/сундука? Так же type гвардов и логов.

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-14 13:02:19 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
Запускается, все сделал по инструкции :)
Прилетает по первой руне, рубит дерево, на физлах рубит заново, но стоит положить логи в пак остонавливается. Никаких ошибок, просто стоит :)

Сундук где лежат логи, реги, РУНЫ в лес, еда и инвизки
ID=0x4006FCA1 Type=0x09A8 LYKRKMD Name=pandora box
Quantity: 0 Colour: 0x0488 Layer: 0 Has: 0
X=1780 Y=604 Z=12 C=0xFFFFFFFF F=0x00

еда
('0x09D0','0x0000')
инвизки
sub dinvis() ; Drink Invisibility
Var Type='0x0F08'
Var Color='0x0060'
UO.FindType(Type, Color, 2)
UO.UseObject('finditem')
end sub
логи
ID=0x41D2059C Type=0x1BDD CXANYOD Name=logs
Quantity: 46 Colour: 0x0000 Layer: 0 Has: 0
X=66 Y=96 Z=0 C=0x401EC99D F=0x00



Quote:
sub Autostart()
uo.setglobal("Recall", "Off")
end sub

sub Lumberjacking()
; Read 0/1 - Âêë/Âûêë ñáîð êîîðäèíàò â ôàéë. Distance - ðàññòîÿíèå â òàéëàõ, íà êîòîðîå íóæíî ïîäîéòè ê äåðåâó. Weight - ìàêñèìàëüíûé âåñ, ïðè äîñòèæåíèè êîòîðîãî ðåêîë â äîì. Hatchet - type òîïîðà. Msg - ñïèñîê âñåõ âîçìîæíûõ ñîîáùåíèé ïðè ðóáêå äåðåâà. Endmsg - ñïèñîê ñîîáùåíèé ïðè êîòîðûõ ïåðåõîäèì ê íîâîìó äåðåâó.
var read = 1, distance = 3, weight = 650, hatchet = "0x0F47", msg = "Ïîäîëáèâ|íå îñòàëîñü|ýòî ñëèøêîì|you put|you put the", endmsg = "íå îñòàëîñü|ýòî ñëèøêîì", starttime, endtime, flag, number, treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, f = file("C:\trees.dat")
dim TreeX[5000], TreeY[5000], TreeT[5000]
dim TreeTile[29]
TreeTile[0]=3277
TreeTile[1]=3280
TreeTile[2]=3283
TreeTile[3]=3286
TreeTile[4]=3289
TreeTile[5]=3291
TreeTile[6]=3294
TreeTile[7]=3296
TreeTile[8]=3299
TreeTile[9]=3302
TreeTile[10]=3393
TreeTile[11]=3394
TreeTile[12]=3395
TreeTile[13]=3396
TreeTile[14]=3415
TreeTile[15]=3416
TreeTile[16]=3417
TreeTile[17]=3418
TreeTile[18]=3419
TreeTile[19]=3438
TreeTile[20]=3439
TreeTile[21]=3440
TreeTile[22]=3441
TreeTile[23]=3442
TreeTile[24]=3460
TreeTile[25]=3461
TreeTile[26]=3462
TreeTile[27]=3290
TreeTile[28]=3288
dim RuneID[3]
RuneID[0] = "0x41D24385"
RuneID[1] = "0x41D24387"
RuneID[2] = "0x41D24389"
uo.deletejournal()
if read == 1 then
uo.print("Loading from file...")
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()
else
uo.print("Choosing coordinates...")
repeat
clicks = 0
flag = 0
uo.usetype("0x0E21")
wait(500)
while uo.targeting()
wait(100)
wend
flag = 0
for k = 0 to 28
if uo.lasttile(0) == TreeTile[k] then
flag = 1
end if
next
if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
flag = 2
end if
if flag == 1 then
treecount = treecount + 1
TreeX[treecount] = uo.lasttile(1)
TreeY[treecount] = uo.lasttile(2)
TreeT[treecount] = uo.lasttile(0)
uo.print("Tree found"+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
end if
until (flag == 2) or (treecount == 5000)
SaveToFile(treecount, TreeX, TreeY, TreeT)
uo.print("Coordinates saved!")
uo.print("Trees found: " + str(treecount))
return
end if
for number = 0 to 2
RecallToWood(RuneID[number])
repeat
for i = 1 to treecount
uo.pmove(TreeX[i], TreeY[i], distance)
repeat
uo.deletejournal(msg)
uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
uo.usetype(hatchet)
starttime = now()
endtime = now() + 6000
repeat
Save()
wait(100)
until uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
until uo.injournal(endmsg) or uo.weight >= weight or uo.dead()
if uo.weight >= weight then
RecallToHome()
end if
next
until i == treecount or uo.dead()
if not uo.dead() then
RecallToHome()
else
uo.print("You Dead!")
uo.exec("Terminate all")
end if
next
uo.print("All runes chopped!")
end sub

sub SaveToFile(treecount, TreeX, TreeY, TreeT)
var f=file("C:\trees.dat")
var s = 0, i = 0
f.open()
f.create()
s=safe call f.writeln(treecount)
for i = 1 to treecount
s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
next
f.close()
end sub

sub RecallToHome()
var runeid = "0x41D24388", x = 1781, y = 606, starttime, endtime, msg = "Çàêëèíàíèå|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
uo.deletejournal()
if uo.getglobal("Recall") == "Off" then
uo.setglobal("Recall", "On")
repeat
uo.deletejournal(msg)
uo.waittargetobject(runeid)
uo.cast("Recall")
starttime = now() + 500
endtime = now() + 2700
repeat
Save()
wait(100)
until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
until (uo.getx() == x and uo.gety() == y) or uo.injournal(endmsg) or uo.dead()
uo.setglobal("Recall", "Off")
end if
end sub

sub RecallToWood(runeid)
var starttime, endtime, msg = "çàêëèíàíèå|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
uo.deletejournal()
if uo.getglobal("Recall") == "Off" then
uo.setglobal("Recall", "On")
repeat
uo.deletejournal(msg)
uo.waittargetobject(runeid)
uo.cast("Recall")
starttime = now() + 500
endtime = now() + 2700
repeat
Save()
wait(100)
until (uo.getx() == 695 and uo.gety() == 775) or (uo.getx() == 2742 and uo.gety() == 715) or (uo.getx() == 1350 and uo.gety() == 2086) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
until (uo.getx() == 695 and uo.gety() == 775) or (uo.getx() == 2742 and uo.gety() == 715) or (uo.getx() == 1350 and uo.gety() == 2086) or uo.injournal(endmsg) or uo.dead()
uo.setglobal("Recall", "Off")
end if
end sub

sub Save()
if uo.injournal("World save has been initiated") then
uo.deletejournal("backpack|World save has been initiated")
uo.click("backpack")
while not uo.injournal("backpack")
wait(100)
wend
end if
end sub


Top
   
PostPosted: 2015-11-14 13:05:00 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
РЕГИ
ID=0x41E2763E Type=0x0F7B YRIWAPD Name=
Quantity: 30 Colour: 0x0000 Layer: 0 Has: 0
X=73 Y=106 Z=0 C=0x401EC99D F=0x00

ID=0x41E2763B Type=0x0F86 BSIWAPD Name=
Quantity: 46 Colour: 0x0000 Layer: 0 Has: 0
X=122 Y=130 Z=0 C=0x401EC99D F=0x00

ID=0x41E2763D Type=0x0F7A VRIWAPD Name=Black Pearls
Quantity: 49 Colour: 0x0000 Layer: 0 Has: 0
X=44 Y=69 Z=0 C=0x401EC99D F=0x00



Кушает с пола, но лучше чтоб перекидывал в пак наверное и из пака ел, более эстетично :D
Достаточно с собой носить одну инвизку, по 5 регов на рекол, 5 еды и рунку в дом.
То есть :
Прилетел домой, выгрузил логи в пак с регами и прочим.
Пополнил запас, поел, улетел.


А еще ткой вопрос, координаты деревьев по рунам рзным, это все в один файл (за раз) надо сохранять, или останавливать каждую локацию и заново кликать деревья?


Top
   
PostPosted: 2015-11-14 14:11:56 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Ах да, руны же три. Вот переделал под 3 раздельных файла. Смотри, сначала по первой руне собираешь координаты и сохраняешь файл, его имя будет trees.dat, убираешь его из папки отдельно чтобы не перезаписался. Летишь по второй руне и собираешь там координаты, новый файл trees.dat переименовываешь в trees1.dat С третьей руной то же самое, только файл назовешь trees2.dat Скидываешь их все назад в папку, куда они записываются, меняешь в скрипте read на 1 и вперед. Укажешь в Lumberjacking, в значение guardian - type гварда.

Останавливается возможно из за сообщений неправильных, поруби деревья скопируй возможные сообщения из журнала _showjournal 50, там важен регистр и правильное написание так что лучше копировать, у меня рубил хорошо.

В целом скрипт будет работать так: запускает выгрузку и добор регов, летит в лес и рубит.

Code:
sub Lumberjacking()
   ; Read 0/1 - Вкл/Выкл сбор координат в файл. Distance - расстояние в тайлах, на которое нужно подойти к дереву. Weight - максимальный вес, при достижении которого рекол в дом. Hatchet - type топора. Msg - список всех возможных сообщений при рубке дерева. Endmsg - список сообщений при которых переходим к новому дереву.
   var read = 1, distance = 3, weight = 650, hatchet = "0x0F43", guardian = "Type гварда", msg = "You hack|no logs|far away|log in your|logs in your", endmsg = "no logs|far away", starttime, endtime, flag, number, treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, f
   dim TreeX[5000], TreeY[5000], TreeT[5000]
   dim TreeTile[29]
   TreeTile[0]=3277
   TreeTile[1]=3280
   TreeTile[2]=3283
   TreeTile[3]=3286
   TreeTile[4]=3289
   TreeTile[5]=3291
   TreeTile[6]=3294
   TreeTile[7]=3296
   TreeTile[8]=3299
   TreeTile[9]=3302
   TreeTile[10]=3393
   TreeTile[11]=3394
   TreeTile[12]=3395
   TreeTile[13]=3396
   TreeTile[14]=3415
   TreeTile[15]=3416
   TreeTile[16]=3417
   TreeTile[17]=3418
   TreeTile[18]=3419
   TreeTile[19]=3438
   TreeTile[20]=3439
   TreeTile[21]=3440
   TreeTile[22]=3441
   TreeTile[23]=3442
   TreeTile[24]=3460
   TreeTile[25]=3461
   TreeTile[26]=3462
   TreeTile[27]=3290
   TreeTile[28]=3288
   dim RuneID[3]
   RuneID[0] = "ID руны"
   RuneID[1] = "ID руны"
   RuneID[2] = "ID руны"
   uo.deletejournal()
   if read == 0 then
      uo.print("Собираем координаты из клиента...")
      repeat
         clicks = 0
         flag = 0
         uo.usetype("0x0E21")
         wait(500)
         while uo.targeting()
            wait(100)
         wend
         flag = 0
         for k = 0 to 28
            if uo.lasttile(0) == TreeTile[k] then
               flag = 1
            end if
         next
         if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
            flag = 2
         end if
         if flag == 1 then
            treecount = treecount + 1
            TreeX[treecount] = uo.lasttile(1)
            TreeY[treecount] = uo.lasttile(2)
            TreeT[treecount] = uo.lasttile(0)
            uo.print("Найдено дерево "+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
         end if
      until (flag == 2) or (treecount == 5000)
      SaveToFile(treecount, TreeX, TreeY, TreeT)
      uo.print("Координаты деревьев сохранены!")
      uo.print("Деревьев найдено: " + str(treecount))
      return
   end if
   for number = 0 to 2
      uo.ignorereset()
      if number == 0 then
         f = file("C:\trees.dat")
      else
         if number == 1 then
            f = file("C:\trees1.dat")
         else
            f = file("C:\trees2.dat")
         end if
      end if
      uo.print("Загружаем координаты из файла...")
      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()
         uo.print("Next")
      next
      f.close()
      TakePut()
      RecallToWood(RuneID[number])
      repeat
         for i = 1 to treecount
            uo.pmove(TreeX[i], TreeY[i], distance)
            repeat
               uo.deletejournal(msg)
               if uo.findtype(guardian, -1, "ground", 18) then
                  uo.usetype("0x0F08")
                  wait("500")
                  uo.ignore("finditem")
               end if
               uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
               uo.usetype(hatchet)
               starttime = now()
               endtime = now() + 6000
               repeat
                  Save()
                  wait(100)
               until uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
            until uo.injournal(endmsg) or uo.weight >= weight or uo.dead()
            if uo.weight >= weight then
               RecallToHome()
            end if
         next
      until i == treecount or uo.dead()
      if not uo.dead() then
         RecallToHome()
      else
         uo.print("You Dead!")
         uo.exec("Terminate all")
      end if
   next
   uo.print("Облетел все руны!")
end sub

sub SaveToFile(treecount, TreeX, TreeY, TreeT)
   var f=file("C:\trees.dat")
   var s = 0, i = 0
   f.open()
   f.create()
   s=safe call f.writeln(treecount)
   for i = 1 to treecount
      s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
   next
   f.close()
end sub

sub RecallToHome()
   var runeid = "id руны в дом", x = 000, y = 000, starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = now() + 2700
         repeat
            Save()
            wait(100)
         until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == x and uo.gety() == y) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub RecallToWood(runeid)
   var starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = now() + 2700
         repeat
            Save()
            wait(100)
         until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub TakePut()
   var box = "0x4006FCA1", logs = "0x1BDD", i, r, s, info, food, quantity
   dim Reg[5]
   Reg[0] = "0x0F7A 10 Black Pearl"
   Reg[1] = "0x0F7B 10 Blood Moss"
   Reg[2] = "0x0F86 10 Mandrake Roots"
   Reg[3] = "0x0F08 1 Invisibility potion"
   Reg[4] = "0x09D0 5 Food"
   uo.opencontainer(box, 500)
   while uo.findtype(logs, -1, "my")
      uo.moveitem("finditem", 0, box)
      wait(2000)
   wend
   for i = 0 to 4
      r = getword(Reg[i], 1)
      s = val(getword(Reg[i], 2))
      if not uo.findtype(r, -1, "my") then
         if not uo.findtype(r, -1, box) then
            info = getword(Reg[i], 3)
            uo.print("Закончились " + info)
         else
            Save()
            uo.moveitem("finditem", s, "backpack")
            wait(2000)
         end if
      else
         if uo.getquantity("finditem") < s then
            quantity = s - uo.getquantity("finditem")
            if not uo.findtype(r, -1, box) then
               info = getword(Reg[i], 3)
               uo.print("Закончились " + info)
            else
               Save()
               uo.moveitem("finditem", quantity, "backpack")
               wait(2000)
            end if
         end if
      end if
   next
   for food = 1 to 5
      uo.usetype("0x09D0")
      wait(500)
   next
   uo.print("Собрал!")
end sub

sub Save()
   if uo.injournal("World save has been initiated") then
      uo.deletejournal("backpack|World save has been initiated")
      uo.click("backpack")
      while not uo.injournal("backpack")
         wait(100)
      wend
   end if
end sub

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-14 15:43:20 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Немного поправил реколы
Code:
sub RecallToHome()
   var runeid = "id руны в дом", x = 000, y = 000, starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = uo.timer() + 27
         repeat
            Save()
            wait(100)
         until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
      until (uo.getx() == x and uo.gety() == y) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub RecallToWood(runeid)
   var starttime, endtime, msg = "spell fizzles|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = uo.timer() + 27
         repeat
            Save()
            wait(100)
         until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
      until (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or (uo.getx() == 000 and uo.gety() == 000) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-14 16:44:02 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
Спасибо.

Что нужно поправить чтобы он не пил инвизку как только прилетает на место а пил её когда видит кого либо, любово.
А при реколе просто уходил в хайд?

Потом при запуске, он выкидывает очень много текста NEXT, как это убрать? :)

В остальном все пока что работает.


Top
   
PostPosted: 2015-11-14 16:51:56 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Инвиз он пьет когда найдет гварда, но ты так и не вписал его type поэтому срабатывает просто так. Удали строку uo.print("Next")
Code:
guardian = "Type гварда"

А если нужно чтобы ставал в хайд, то перед строкой
Code:
 uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())

добавь строку
Code:
Hide()

И отдельно вставь
Code:
sub Hide()
   var msg = "can't seem to hide", waittime
   if not uo.hidden() then
      repeat
         uo.deletejournal(msg)
         uo.useskill("Stealth")
         waittime = uo.timer() + 30
         repeat
            wait(100)
         until uo.hidden() or uo.injournal(msg) or uo.timer() > waittime or uo.dead()
      until uo.hidden()
   end if
end sub

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-16 04:10:42 
Offline

Joined: 2015-11-08 17:33:08
Posts: 9
Добавить две функции,и это будет очень хороший, готовый скрипт для Оскома на Лумбер.

1. Чтобы когда его находили он в вар режим уходил и потом в хайд, чтобы сбивать атаку.
2. Чтобы цикл не заканчивался, то есть, пролетев три руны, чтобы он летел снова по первой-второй-третьей и обходил координаты. А так он останавливается со словами "chop's done" и все :)



Code:
;************************************************************************************
;                    Lumber
;***********************************************************************************

sub Autostart()
   uo.setglobal("Recall", "Off")
end sub

sub Lumberjacking()
   
   ; Read 0/1 - Вкл/Выкл сбор координат.
   ; Distance - расстояние в тайлах, на которое нужно подойти к дереву.
   ; Weight - макс. вес при котором реколимся домой.
   ; Hatchet - тип топора.
   ; Msg - всевозможные сообщения.
   ; Endmsg - сообщения при которых переходим к другому дереву.
   
   var read = 1
   var distance = 3
   var weight = 650
   var hatchet = "0x0F47"
   var guardian = "0x0190"
   var msg = "Подолбив дерево|Тут не осталось пригодной древесины|Это слишком далеко отсюда|You put the logs|You see|Your skill|You have"
   var endmsg = "Тут не осталось пригодной древесины|Это слишком далеко отсюда|You can't reach this", starttime, endtime, flag, number, treecount = 0, clicks, TopX = 324, TopY = 65, i = 0, j = 0, k = 0, r = 0, q = 0, ii, jj, f
   dim TreeX[5000], TreeY[5000], TreeT[5000]
   dim TreeTile[29]
   TreeTile[0]=3277
   TreeTile[1]=3280
   TreeTile[2]=3283
   TreeTile[3]=3286
   TreeTile[4]=3289
   TreeTile[5]=3291
   TreeTile[6]=3294
   TreeTile[7]=3296
   TreeTile[8]=3299
   TreeTile[9]=3302
   TreeTile[10]=3393
   TreeTile[11]=3394
   TreeTile[12]=3395
   TreeTile[13]=3396
   TreeTile[14]=3415
   TreeTile[15]=3416
   TreeTile[16]=3417
   TreeTile[17]=3418
   TreeTile[18]=3419
   TreeTile[19]=3438
   TreeTile[20]=3439
   TreeTile[21]=3440
   TreeTile[22]=3441
   TreeTile[23]=3442
   TreeTile[24]=3460
   TreeTile[25]=3461
   TreeTile[26]=3462
   TreeTile[27]=3290
   TreeTile[28]=3288
   dim RuneID[3]
   RuneID[0] = "0x41D24385"   ; руна в лес1
   RuneID[1] = "0x41D24387"   ; руна в лес2
   RuneID[2] = "0x41D24389"   ; руна в лес3
   uo.deletejournal()
   if read == 0 then
      uo.print("Collecting coordinates...")
      repeat
         clicks = 0
         flag = 0
         uo.usetype("0x0E21")
         wait(500)
         while uo.targeting()
            wait(100)
         wend
         flag = 0
         for k = 0 to 28
            if uo.lasttile(0) == TreeTile[k] then
               flag = 1
            end if
         next
         if uo.lasttile(1) == uo.getx() and uo.lasttile(2) == uo.gety() then
            flag = 2
         end if
         if flag == 1 then
            treecount = treecount + 1
            TreeX[treecount] = uo.lasttile(1)
            TreeY[treecount] = uo.lasttile(2)
            TreeT[treecount] = uo.lasttile(0)
            uo.print("tree found"+str(treecount)+" : X = "+str(uo.Lasttile(1))+" Y = "+str(uo.LastTile(2))+" "+str(treecount))
         end if
      until (flag == 2) or (treecount == 5000)
      SaveToFile(treecount, TreeX, TreeY, TreeT)
      uo.print("Coordinates collected!")
      uo.print("Trees found: " + str(treecount))
      return
   end if
   for number = 0 to 2
      uo.ignorereset()
      if number == 0 then
         f = file("C:\Users\Edgard\Desktop\Injection_uo\trees.dat")
      else
         if number == 1 then
            f = file("C:\Users\Edgard\Desktop\Injection_uo\trees1.dat")
         else
            f = file("C:\Users\Edgard\Desktop\Injection_uo\trees2.dat")
         end if
      end if
      uo.print("Loading from file...")
      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()
      TakePut()
      RecallToWood(RuneID[number])
      repeat
         for i = 1 to treecount
            uo.pmove(TreeX[i], TreeY[i], distance)
            repeat
               uo.deletejournal(msg)
            end if
            Hide()
            uo.waittargettile(TreeT[i], TreeX[i], TreeY[i], uo.GetZ())
            uo.usetype(hatchet)
            starttime = now()
            endtime = now() + 60
            repeat
               Save()
               wait(100)
            until uo.injournalbetweentimes(msg, starttime, -1) or uo.timer() > endtime or uo.dead()
         until uo.injournal(endmsg) or uo.weight >= weight or uo.dead()
         if uo.weight >= weight then
            RecallToHome()
         end if
      next
   until i == treecount or uo.dead()
   if not uo.dead() then
      RecallToHome()
   else
      uo.print("You Dead!")
      uo.exec("Terminate all")
   end if
next
uo.print("Chop's done!")
end sub

sub SaveToFile(treecount, TreeX, TreeY, TreeT)
   var f=file("C:\Users\Edgard\Desktop\Injection_uo\trees.dat")
   var s = 0, i = 0
   f.open()
   f.create()
   s=safe call f.writeln(treecount)
   for i = 1 to treecount
      s=safe call f.writeln(str(TreeT[i])+" "+str(TreeX[i])+" "+str(TreeY[i]))
   next
   f.close()
end sub

sub RecallToHome()
   var runeid = "0x41D24388", x = 1781, y = 606, starttime, endtime, msg = "заклинание|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = now() + 2700
         repeat
            Save()
            wait(100)
         until (uo.getx() == x and uo.gety() == y) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == x and uo.gety() == y) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub RecallToWood(runeid)
   var starttime, endtime, msg = "заклинание|anti-magic field disturbs|lack reagents", endmsg = "anti-magic field disturbs|lack reagents"
   uo.deletejournal()
   if uo.getglobal("Recall") == "Off" then
      uo.setglobal("Recall", "On")
      repeat
         uo.deletejournal(msg)
         uo.waittargetobject(runeid)
         uo.cast("Recall")
         starttime = now() + 500
         endtime = now() + 2700
         repeat
            Save()
            wait(100)
         until (uo.getx() == 806 and uo.gety() == 856) or (uo.getx() == 2742 and uo.gety() == 715) or (uo.getx() == 1348 and uo.gety() == 2087) or uo.injournalbetweentimes(msg, starttime, endtime) or uo.dead()
      until (uo.getx() == 806 and uo.gety() == 856) or (uo.getx() == 2742 and uo.gety() == 715) or (uo.getx() == 1348 and uo.gety() == 2087) or uo.injournal(endmsg) or uo.dead()
      uo.setglobal("Recall", "Off")
   end if
end sub

sub TakePut()
   var box = "0x4006FCA1", logs = "0x1BDD", i, r, s, info, food, quantity
   dim Reg[4]
   Reg[0] = "0x0F7A 10 Black Pearl"
   Reg[1] = "0x0F7B 10 Blood Moss"
   Reg[2] = "0x0F86 10 Mandrake Roots" 
   Reg[3] = "0x09D0 5 Food"
   uo.opencontainer(box, 500)
   while uo.findtype(logs, -1, "my")
      uo.moveitem("finditem", 0, box)
      wait(2000)
   wend
   for i = 0 to 3
      r = getword(Reg[i], 1)
      s = val(getword(Reg[i], 2))
      if not uo.findtype(r, -1, "my") then
         if not uo.findtype(r, -1, box) then
            info = getword(Reg[i], 3)
            uo.print("not enough" + info)
         else
            Save()
            uo.moveitem("finditem", s, "backpack")
            wait(2000)
         end if
      else
         if uo.getquantity("finditem") < s then
            quantity = s - uo.getquantity("finditem")
            if not uo.findtype(r, -1, box) then
               info = getword(Reg[i], 3)
               uo.print("not enough" + info)
            else
               Save()
               uo.moveitem("finditem", quantity, "backpack")
               wait(2000)
            end if
         end if
      end if
   next
   for food = 1 to 5
      uo.usetype("0x09D0")
      wait(500)
   next
   uo.print("ready to go!")
end sub

sub Save()
   if uo.injournal("World save has been initiated") then
      uo.deletejournal("backpack|World save has been initiated")
      uo.click("backpack")
      while not uo.injournal("backpack")
         wait(100)
      wend
   end if
end sub

sub Hide()
   var msg = "вам не удалось", waittime
   if not uo.hidden() then
      repeat
         uo.deletejournal(msg)
         uo.useskill("Stealth")
         waittime = uo.timer() + 30
         repeat
            wait(100)
         until uo.hidden() or uo.injournal(msg) or uo.timer() > waittime or uo.dead()
      until uo.hidden()
   end if
end sub


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

All times are UTC+02:00


Who is online

Users browsing this forum: Google [Bot] 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited